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.7 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":";;;;;AASgB,SAAA,mBAAA,CAAoB,YAAqB,UACzD,EAAA;AACI,EAAM,MAAA,MAAA,GAAS,gBAAgB,UAAU,CAAA,CAAA;AACzC,EAAA,MAAM,aAAa,MAAO,CAAA,MAAA,CAAA;AAE1B,EAAA,MAAM,mBAA6B,EAAC,CAAA;AACpC,EAAA,MAAM,gBAA0B,EAAC,CAAA;AACjC,EAAA,MAAM,qBAA+B,EAAC,CAAA;AAEtC,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,UAAA,EAAY,CAChC,EAAA,EAAA;AACI,IAAA,gBAAA,CAAiB,CAAC,CAAA,GAAI,CAAa,UAAA,EAAA,CAAC,WAAW,CAAC,CAAA,YAAA,CAAA,CAAA;AAEhD,IAAA,IAAI,UACJ,EAAA;AACI,MAAA,aAAA,CAAc,CAAC,CAAA,GAAI,CAAuB,oBAAA,EAAA,CAAA,GAAI,aAAa,CAAC,CAAA,uBAAA,CAAA,CAAA;AAAA,KAGhE,MAAA;AACI,MAAA,aAAA,CAAc,CAAC,CAAA,GAAI,CAA4B,yBAAA,EAAA,CAAA,GAAI,aAAa,CAAC,CAAA,kBAAA,CAAA,CAAA;AAAA,KACrE;AAEA,IAAA,MAAM,WAAc,GAAA,CAAA,GAAI,UAAa,GAAA,CAAA,GAAK,aAAa,CAAI,GAAA,CAAA,CAAA;AAC3D,IAAA,MAAM,WAAc,GAAA,MAAA,CAAO,WAAW,CAAA,CAAE,QAAS,EAAA,CAAA;AAEjD,IAAA,kBAAA,CAAmB,CAAC,CAAA,GAAI,CAAyD,sDAAA,EAAA,CAAC,OAAO,WAAW,CAAA,CAAA,CAAA,CAAA;AAAA,GACxG;AAEA,EAAM,MAAA,UAAA,GAAa,gBAAiB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAC7C,EAAM,MAAA,OAAA,GAAU,aAAc,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AACvC,EAAM,MAAA,YAAA,GAAe,kBAAmB,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAEjD,EAAM,MAAA,WAAA,GAAc,OACf,OAAQ,CAAA,eAAA,EAAiB,UAAU,CACnC,CAAA,OAAA,CAAQ,mBAAqB,EAAA,OAAO,CACpC,CAAA,OAAA,CAAQ,sBAAsB,UAAU,CAAA,CACxC,QAAQ,iBAAmB,EAAA,YAAY,EACvC,OAAQ,CAAA,aAAA,EAAe,UAAa,GAAA,GAAA,GAAM,GAAG,CAAA,CAAA;AAElD,EAAA,OAAO,WAAW,IAAK,CAAA;AAAA,IACnB,MAAQ,EAAA;AAAA,MACJ,MAAQ,EAAA,WAAA;AAAA,MACR,UAAY,EAAA,YAAA;AAAA,KAChB;AAAA,IACA,QAAU,EAAA;AAAA,MACN,MAAQ,EAAA,WAAA;AAAA,MACR,UAAY,EAAA,cAAA;AAAA,KAChB;AAAA,GACH,CAAA,CAAA;AACL;;;;"}