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

1 lines 5.13 kB
{"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 clipToViewport: false,\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,MAAA,CAChC;AAAA,EAII,YAAY,OAAA,EACZ;AACI,IAAA,MAAM,EAAE,MAAA,EAAQ,GAAG,IAAA,EAAK,GAAI,OAAA;AAE5B,IAAA,MAAM,aAAA,GAAgB,IAAI,aAAA,CAAc,MAAA,CAAO,OAAO,CAAA;AAEtD,IAAA,MAAM,cAAA,GAAiB,IAAI,YAAA,CAAa;AAAA,MACpC,eAAe,EAAE,KAAA,EAAO,IAAI,MAAA,EAAO,EAAG,MAAM,aAAA,EAAc;AAAA,MAC1D,YAAY,EAAE,KAAA,EAAO,aAAA,CAAc,WAAA,EAAa,MAAM,WAAA,EAAY;AAAA,MAClE,MAAA,EAAQ,EAAE,KAAA,EAAO,CAAA,EAAG,MAAM,KAAA,EAAM;AAAA,MAChC,QAAA,EAAU,EAAE,KAAA,EAAO,OAAA,CAAQ,UAAU,CAAA,GAAI,CAAA,EAAG,MAAM,KAAA;AAAM,KAC3D,CAAA;AAED,IAAA,MAAM,UAAA,GAAa,WAAW,IAAA,CAAK;AAAA,MAC/B,MAAA,EAAQ;AAAA,QACJ,MAAA;AAAA,QACA,UAAA,EAAY;AAAA,OAChB;AAAA,MACA,QAAA,EAAU;AAAA,QACN,MAAA;AAAA,QACA,UAAA,EAAY;AAAA;AAChB,KACH,CAAA;AAED,IAAA,MAAM,SAAA,GAAY,UAAU,IAAA,CAAK;AAAA,MAC7B,MAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA,EAAM;AAAA,KACT,CAAA;AAED,IAAA,KAAA,CAAM;AAAA,MACF,GAAG,IAAA;AAAA,MACH,UAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA,EAAgB,KAAA;AAAA,MAChB,SAAA,EAAW;AAAA,QACP,cAAA;AAAA,QACA,YAAA,EAAc,OAAO,OAAA,CAAQ;AAAA;AACjC,KACH,CAAA;AAED,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAA,CAAK,cAAA,GAAiB,aAAA;AAAA,EAC1B;AAAA,EAEA,IAAI,QAAQ,KAAA,EACZ;AACI,IAAA,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,QAAA,CAAS,QAAA,GAAW,QAAQ,CAAA,GAAI,CAAA;AAAA,EAClE;AAAA,EAEA,IAAI,OAAA,GACJ;AACI,IAAA,OAAO,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,QAAA,CAAS,QAAA,KAAa,CAAA;AAAA,EAC/D;AAAA,EAEO,KAAA,CACH,aAAA,EACA,KAAA,EACA,MAAA,EACA,SAAA,EAEJ;AAEI,IAAA,IAAA,CAAK,cAAA,CAAe,OAAA,GAAU,IAAA,CAAK,MAAA,CAAO,OAAA;AAE1C,IAAA,aAAA,CAAc,qBAAA;AAAA,MACV,IAAA,CAAK,SAAA,CAAU,cAAA,CAAe,QAAA,CAAS,aAAA;AAAA,MACvC,IAAA,CAAK;AAAA,KACT,CAAE,OAAA,CAAQ,IAAA,CAAK,cAAA,CAAe,QAAQ,CAAA;AAEtC,IAAA,IAAA,CAAK,SAAA,CAAU,YAAA,GAAe,IAAA,CAAK,MAAA,CAAO,OAAA,CAAQ,MAAA;AAElD,IAAA,aAAA,CAAc,WAAA,CAAY,IAAA,EAAM,KAAA,EAAO,MAAA,EAAQ,SAAS,CAAA;AAAA,EAC5D;AACJ;;;;"}