{"version":3,"file":"generateBlurVertSource.mjs","sources":["../../../../../src/filters/defaults/blur/gl/generateBlurVertSource.ts"],"sourcesContent":["const vertTemplate = `\n    in vec2 aPosition;\n\n    uniform float uStrength;\n\n    out vec2 vBlurTexCoords[%size%];\n\n    uniform vec4 uInputSize;\n    uniform vec4 uOutputFrame;\n    uniform vec4 uOutputTexture;\n\n    vec4 filterVertexPosition( void )\n{\n    vec2 position = aPosition * uOutputFrame.zw + uOutputFrame.xy;\n\n    position.x = position.x * (2.0 / uOutputTexture.x) - 1.0;\n    position.y = position.y * (2.0*uOutputTexture.z / uOutputTexture.y) - uOutputTexture.z;\n\n    return vec4(position, 0.0, 1.0);\n}\n\n    vec2 filterTextureCoord( void )\n    {\n        return aPosition * (uOutputFrame.zw * uInputSize.zw);\n    }\n\n    void main(void)\n    {\n        gl_Position = filterVertexPosition();\n\n        float pixelStrength = uInputSize.%dimension% * uStrength;\n\n        vec2 textureCoord = filterTextureCoord();\n        %blur%\n    }`;\n\n/**\n * @internal\n * @param kernelSize - The size of the kernel.\n * @param x - Whether to generate a horizontal or vertical blur program.\n */\nexport function generateBlurVertSource(kernelSize: number, x: boolean): string\n{\n    const halfLength = Math.ceil(kernelSize / 2);\n\n    let vertSource = vertTemplate;\n\n    let blurLoop = '';\n    let template;\n\n    if (x)\n    {\n        template = 'vBlurTexCoords[%index%] =  textureCoord + vec2(%sampleIndex% * pixelStrength, 0.0);';\n    }\n    else\n    {\n        template = 'vBlurTexCoords[%index%] =  textureCoord + vec2(0.0, %sampleIndex% * pixelStrength);';\n    }\n\n    for (let i = 0; i < kernelSize; i++)\n    {\n        let blur = template.replace('%index%', i.toString());\n\n        blur = blur.replace('%sampleIndex%', `${i - (halfLength - 1)}.0`);\n\n        blurLoop += blur;\n        blurLoop += '\\n';\n    }\n\n    vertSource = vertSource.replace('%blur%', blurLoop);\n    vertSource = vertSource.replace('%size%', kernelSize.toString());\n    vertSource = vertSource.replace('%dimension%', x ? 'z' : 'w');\n\n    return vertSource;\n}\n"],"names":[],"mappings":";AAAA,MAAM,YAAA,GAAe;AAAA;;AAAA;;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA;AAAA,KAAA,CAAA;AAyCd,SAAS,sBAAA,CAAuB,YAAoB,CAAA,EAC3D;AACI,EAAA,MAAM,UAAA,GAAa,IAAA,CAAK,IAAA,CAAK,UAAA,GAAa,CAAC,CAAA;AAE3C,EAAA,IAAI,UAAA,GAAa,YAAA;AAEjB,EAAA,IAAI,QAAA,GAAW,EAAA;AACf,EAAA,IAAI,QAAA;AAEJ,EAAA,IAAI,CAAA,EACJ;AACI,IAAA,QAAA,GAAW,qFAAA;AAAA,EACf,CAAA,MAEA;AACI,IAAA,QAAA,GAAW,qFAAA;AAAA,EACf;AAEA,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAChC;AACI,IAAA,IAAI,OAAO,QAAA,CAAS,OAAA,CAAQ,SAAA,EAAW,CAAA,CAAE,UAAU,CAAA;AAEnD,IAAA,IAAA,GAAO,KAAK,OAAA,CAAQ,eAAA,EAAiB,GAAG,CAAA,IAAK,UAAA,GAAa,EAAE,CAAA,EAAA,CAAI,CAAA;AAEhE,IAAA,QAAA,IAAY,IAAA;AACZ,IAAA,QAAA,IAAY,IAAA;AAAA,EAChB;AAEA,EAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU,QAAQ,CAAA;AAClD,EAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,QAAA,EAAU,UAAA,CAAW,UAAU,CAAA;AAC/D,EAAA,UAAA,GAAa,UAAA,CAAW,OAAA,CAAQ,aAAA,EAAe,CAAA,GAAI,MAAM,GAAG,CAAA;AAE5D,EAAA,OAAO,UAAA;AACX;;;;"}