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 • 5.17 kB
Source Map (JSON)
{"version":3,"file":"MaskFilter.mjs","sources":["../../../src/filters/mask/MaskFilter.ts"],"sourcesContent":["import { Matrix } from '../../maths/matrix/Matrix';\nimport { GlProgram } from '../../rendering/renderers/gl/shader/GlProgram';\nimport { GpuProgram } from '../../rendering/renderers/gpu/shader/GpuProgram';\nimport { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup';\nimport { TextureMatrix } from '../../rendering/renderers/shared/texture/TextureMatrix';\nimport { Filter } from '../Filter';\nimport fragment from './mask.frag';\nimport vertex from './mask.vert';\nimport source from './mask.wgsl';\n\nimport type { Texture } from '../../rendering/renderers/shared/texture/Texture';\nimport type { Sprite } from '../../scene/sprite/Sprite';\nimport type { FilterOptions } from '../Filter';\nimport type { FilterSystem } from '../FilterSystem';\n\n/** @internal */\nexport interface MaskFilterOptions extends FilterOptions\n{\n sprite: Sprite,\n inverse?: boolean;\n scale?: number | { x: number, y: number },\n}\n\n/** @internal */\nexport class MaskFilter extends Filter\n{\n public sprite: Sprite;\n private readonly _textureMatrix: TextureMatrix;\n\n constructor(options: MaskFilterOptions)\n {\n const { sprite, ...rest } = options;\n\n const textureMatrix = new TextureMatrix(sprite.texture);\n\n const filterUniforms = new UniformGroup({\n uFilterMatrix: { value: new Matrix(), type: 'mat3x3<f32>' },\n uMaskClamp: { value: textureMatrix.uClampFrame, type: 'vec4<f32>' },\n uAlpha: { value: 1, type: 'f32' },\n uInverse: { value: options.inverse ? 1 : 0, type: 'f32' },\n });\n\n const gpuProgram = GpuProgram.from({\n vertex: {\n source,\n entryPoint: 'mainVertex',\n },\n fragment: {\n source,\n entryPoint: 'mainFragment',\n },\n });\n\n const glProgram = GlProgram.from({\n vertex,\n fragment,\n name: 'mask-filter',\n });\n\n super({\n ...rest,\n gpuProgram,\n glProgram,\n resources: {\n filterUniforms,\n uMaskTexture: sprite.texture.source,\n },\n });\n\n this.sprite = sprite;\n\n this._textureMatrix = textureMatrix;\n }\n\n set inverse(value: boolean)\n {\n this.resources.filterUniforms.uniforms.uInverse = value ? 1 : 0;\n }\n\n get inverse(): boolean\n {\n return this.resources.filterUniforms.uniforms.uInverse === 1;\n }\n\n public apply(\n filterManager: FilterSystem,\n input: Texture,\n output: Texture,\n clearMode: boolean\n ): void\n {\n // will trigger an update if the texture changed..\n this._textureMatrix.texture = this.sprite.texture;\n\n filterManager.calculateSpriteMatrix(\n this.resources.filterUniforms.uniforms.uFilterMatrix as Matrix,\n this.sprite\n ).prepend(this._textureMatrix.mapCoord);\n\n this.resources.uMaskTexture = this.sprite.texture.source;\n\n filterManager.applyFilter(this, input, output, clearMode);\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAwBO,MAAM,mBAAmB,MAChC,CAAA;AAAA,EAII,YAAY,OACZ,EAAA;AACI,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAS,GAAA,OAAA,CAAA;AAE5B,IAAA,MAAM,aAAgB,GAAA,IAAI,aAAc,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAEtD,IAAM,MAAA,cAAA,GAAiB,IAAI,YAAa,CAAA;AAAA,MACpC,eAAe,EAAE,KAAA,EAAO,IAAI,MAAO,EAAA,EAAG,MAAM,aAAc,EAAA;AAAA,MAC1D,YAAY,EAAE,KAAA,EAAO,aAAc,CAAA,WAAA,EAAa,MAAM,WAAY,EAAA;AAAA,MAClE,MAAQ,EAAA,EAAE,KAAO,EAAA,CAAA,EAAG,MAAM,KAAM,EAAA;AAAA,MAChC,QAAA,EAAU,EAAE,KAAO,EAAA,OAAA,CAAQ,UAAU,CAAI,GAAA,CAAA,EAAG,MAAM,KAAM,EAAA;AAAA,KAC3D,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,WAAW,IAAK,CAAA;AAAA,MAC/B,MAAQ,EAAA;AAAA,QACJ,MAAA;AAAA,QACA,UAAY,EAAA,YAAA;AAAA,OAChB;AAAA,MACA,QAAU,EAAA;AAAA,QACN,MAAA;AAAA,QACA,UAAY,EAAA,cAAA;AAAA,OAChB;AAAA,KACH,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,GAAY,UAAU,IAAK,CAAA;AAAA,MAC7B,MAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAM,EAAA,aAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,KAAA,CAAA;AAAA,MACF,GAAG,IAAA;AAAA,MACH,UAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP,cAAA;AAAA,QACA,YAAA,EAAc,OAAO,OAAQ,CAAA,MAAA;AAAA,OACjC;AAAA,KACH,CAAA,CAAA;AAED,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA,CAAA;AAEd,IAAA,IAAA,CAAK,cAAiB,GAAA,aAAA,CAAA;AAAA,GAC1B;AAAA,EAEA,IAAI,QAAQ,KACZ,EAAA;AACI,IAAA,IAAA,CAAK,SAAU,CAAA,cAAA,CAAe,QAAS,CAAA,QAAA,GAAW,QAAQ,CAAI,GAAA,CAAA,CAAA;AAAA,GAClE;AAAA,EAEA,IAAI,OACJ,GAAA;AACI,IAAA,OAAO,IAAK,CAAA,SAAA,CAAU,cAAe,CAAA,QAAA,CAAS,QAAa,KAAA,CAAA,CAAA;AAAA,GAC/D;AAAA,EAEO,KACH,CAAA,aAAA,EACA,KACA,EAAA,MAAA,EACA,SAEJ,EAAA;AAEI,IAAK,IAAA,CAAA,cAAA,CAAe,OAAU,GAAA,IAAA,CAAK,MAAO,CAAA,OAAA,CAAA;AAE1C,IAAc,aAAA,CAAA,qBAAA;AAAA,MACV,IAAA,CAAK,SAAU,CAAA,cAAA,CAAe,QAAS,CAAA,aAAA;AAAA,MACvC,IAAK,CAAA,MAAA;AAAA,KACP,CAAA,OAAA,CAAQ,IAAK,CAAA,cAAA,CAAe,QAAQ,CAAA,CAAA;AAEtC,IAAA,IAAA,CAAK,SAAU,CAAA,YAAA,GAAe,IAAK,CAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,CAAA;AAElD,IAAA,aAAA,CAAc,WAAY,CAAA,IAAA,EAAM,KAAO,EAAA,MAAA,EAAQ,SAAS,CAAA,CAAA;AAAA,GAC5D;AACJ;;;;"}