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">

63 lines (50 loc) 1.8 kB
'use strict'; "use strict"; const vertTemplate = ` in vec2 aPosition; uniform float uStrength; out vec2 vBlurTexCoords[%size%]; uniform vec4 uInputSize; uniform vec4 uOutputFrame; uniform vec4 uOutputTexture; vec4 filterVertexPosition( void ) { vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy; position.x = position.x * (2.0 / uOutputTexture.x) - 1.0; position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z; return vec4(position, 0.0, 1.0); } vec2 filterTextureCoord( void ) { return aPosition * (uOutputFrame.zw * uInputSize.zw); } void main(void) { gl_Position = filterVertexPosition(); float pixelStrength = uInputSize.%dimension% * uStrength; vec2 textureCoord = filterTextureCoord(); %blur% }`; function generateBlurVertSource(kernelSize, x) { const halfLength = Math.ceil(kernelSize / 2); let vertSource = vertTemplate; let blurLoop = ""; let template; if (x) { template = "vBlurTexCoords[%index%] = textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);"; } else { template = "vBlurTexCoords[%index%] = textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);"; } for (let i = 0; i < kernelSize; i++) { let blur = template.replace("%index%", i.toString()); blur = blur.replace("%sampleIndex%", `${i - (halfLength - 1)}.0`); blurLoop += blur; blurLoop += "\n"; } vertSource = vertSource.replace("%blur%", blurLoop); vertSource = vertSource.replace("%size%", kernelSize.toString()); vertSource = vertSource.replace("%dimension%", x ? "z" : "w"); return vertSource; } exports.generateBlurVertSource = generateBlurVertSource; //# sourceMappingURL=generateBlurVertSource.js.map