UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

43 lines (39 loc) 1.72 kB
'use strict'; var GpuProgram = require('../../../../rendering/renderers/gpu/shader/GpuProgram.js'); var _const = require('../const.js'); var blurTemplate = require('./blur-template.wgsl.js'); "use strict"; function generateBlurProgram(horizontal, kernelSize) { const kernel = _const.GAUSSIAN_VALUES[kernelSize]; const halfLength = kernel.length; const blurStructSource = []; const blurOutSource = []; const blurSamplingSource = []; for (let i = 0; i < kernelSize; i++) { blurStructSource[i] = `@location(${i}) offset${i}: vec2<f32>,`; if (horizontal) { blurOutSource[i] = `filteredCord + vec2(${i - halfLength + 1} * pixelStrength, 0.0),`; } else { blurOutSource[i] = `filteredCord + vec2(0.0, ${i - halfLength + 1} * pixelStrength),`; } const kernelIndex = i < halfLength ? i : kernelSize - i - 1; const kernelValue = kernel[kernelIndex].toString(); blurSamplingSource[i] = `finalColor += textureSample(uTexture, uSampler, offset${i}) * ${kernelValue};`; } const blurStruct = blurStructSource.join("\n"); const blurOut = blurOutSource.join("\n"); const blurSampling = blurSamplingSource.join("\n"); const finalSource = blurTemplate.default.replace("%blur-struct%", blurStruct).replace("%blur-vertex-out%", blurOut).replace("%blur-fragment-in%", blurStruct).replace("%blur-sampling%", blurSampling).replace("%dimension%", horizontal ? "z" : "w"); return GpuProgram.GpuProgram.from({ vertex: { source: finalSource, entryPoint: "mainVertex" }, fragment: { source: finalSource, entryPoint: "mainFragment" } }); } exports.generateBlurProgram = generateBlurProgram; //# sourceMappingURL=generateBlurProgram.js.map