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">
1 lines • 3.61 kB
Source Map (JSON)
{"version":3,"file":"generateBlurProgram.mjs","sources":["../../../../../src/filters/defaults/blur/gpu/generateBlurProgram.ts"],"sourcesContent":["import { GpuProgram } from '../../../../rendering/renderers/gpu/shader/GpuProgram';\nimport { GAUSSIAN_VALUES } from '../const';\nimport source from './blur-template.wgsl';\n\n/**\n * @internal\n * @param horizontal - Whether to generate a horizontal or vertical blur program.\n * @param kernelSize - The size of the kernel.\n */\nexport function generateBlurProgram(horizontal: boolean, kernelSize: number)\n{\n const kernel = GAUSSIAN_VALUES[kernelSize];\n const halfLength = kernel.length;\n\n const blurStructSource: string[] = [];\n const blurOutSource: string[] = [];\n const blurSamplingSource: string[] = [];\n\n for (let i = 0; i < kernelSize; i++)\n {\n blurStructSource[i] = `@location(${i}) offset${i}: vec2<f32>,`;\n\n if (horizontal)\n {\n blurOutSource[i] = `filteredCord + vec2(${i - halfLength + 1} * pixelStrength, 0.0),`;\n }\n else\n {\n blurOutSource[i] = `filteredCord + vec2(0.0, ${i - halfLength + 1} * pixelStrength),`;\n }\n\n const kernelIndex = i < halfLength ? i : (kernelSize - i - 1);\n const kernelValue = kernel[kernelIndex].toString();\n\n blurSamplingSource[i] = `finalColor += textureSample(uTexture, uSampler, offset${i}) * ${kernelValue};`;\n }\n\n const blurStruct = blurStructSource.join('\\n');\n const blurOut = blurOutSource.join('\\n');\n const blurSampling = blurSamplingSource.join('\\n');\n\n const finalSource = source\n .replace('%blur-struct%', blurStruct)\n .replace('%blur-vertex-out%', blurOut)\n .replace('%blur-fragment-in%', blurStruct)\n .replace('%blur-sampling%', blurSampling)\n .replace('%dimension%', horizontal ? 'z' : 'w');\n\n return GpuProgram.from({\n vertex: {\n source: finalSource,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source: finalSource,\n entryPoint: 'mainFragment',\n },\n });\n}\n\n"],"names":[],"mappings":";;;;;AASO,SAAS,mBAAA,CAAoB,YAAqB,UAAA,EACzD;AACI,EAAA,MAAM,MAAA,GAAS,gBAAgB,UAAU,CAAA;AACzC,EAAA,MAAM,aAAa,MAAA,CAAO,MAAA;AAE1B,EAAA,MAAM,mBAA6B,EAAC;AACpC,EAAA,MAAM,gBAA0B,EAAC;AACjC,EAAA,MAAM,qBAA+B,EAAC;AAEtC,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,UAAA,EAAY,CAAA,EAAA,EAChC;AACI,IAAA,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAA,UAAA,EAAa,CAAC,WAAW,CAAC,CAAA,YAAA,CAAA;AAEhD,IAAA,IAAI,UAAA,EACJ;AACI,MAAA,aAAA,CAAc,CAAC,CAAA,GAAI,CAAA,oBAAA,EAAuB,CAAA,GAAI,aAAa,CAAC,CAAA,uBAAA,CAAA;AAAA,IAChE,CAAA,MAEA;AACI,MAAA,aAAA,CAAc,CAAC,CAAA,GAAI,CAAA,yBAAA,EAA4B,CAAA,GAAI,aAAa,CAAC,CAAA,kBAAA,CAAA;AAAA,IACrE;AAEA,IAAA,MAAM,WAAA,GAAc,CAAA,GAAI,UAAA,GAAa,CAAA,GAAK,aAAa,CAAA,GAAI,CAAA;AAC3D,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,WAAW,CAAA,CAAE,QAAA,EAAS;AAEjD,IAAA,kBAAA,CAAmB,CAAC,CAAA,GAAI,CAAA,sDAAA,EAAyD,CAAC,OAAO,WAAW,CAAA,CAAA,CAAA;AAAA,EACxG;AAEA,EAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,IAAA,CAAK,IAAI,CAAA;AAC7C,EAAA,MAAM,OAAA,GAAU,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AACvC,EAAA,MAAM,YAAA,GAAe,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAA;AAEjD,EAAA,MAAM,WAAA,GAAc,OACf,OAAA,CAAQ,eAAA,EAAiB,UAAU,CAAA,CACnC,OAAA,CAAQ,mBAAA,EAAqB,OAAO,CAAA,CACpC,OAAA,CAAQ,sBAAsB,UAAU,CAAA,CACxC,QAAQ,iBAAA,EAAmB,YAAY,EACvC,OAAA,CAAQ,aAAA,EAAe,UAAA,GAAa,GAAA,GAAM,GAAG,CAAA;AAElD,EAAA,OAAO,WAAW,IAAA,CAAK;AAAA,IACnB,MAAA,EAAQ;AAAA,MACJ,MAAA,EAAQ,WAAA;AAAA,MACR,UAAA,EAAY;AAAA,KAChB;AAAA,IACA,QAAA,EAAU;AAAA,MACN,MAAA,EAAQ,WAAA;AAAA,MACR,UAAA,EAAY;AAAA;AAChB,GACH,CAAA;AACL;;;;"}