UNPKG

@pixi/core

Version:
50 lines (47 loc) 1.63 kB
import { Matrix } from '@pixi/math'; import { TextureMatrix } from '../../textures/TextureMatrix.mjs'; import { Filter } from '../Filter.mjs'; import fragment from './spriteMaskFilter2.mjs'; import vertex from './spriteMaskFilter3.mjs'; class SpriteMaskFilter extends Filter { constructor(vertexSrc, fragmentSrc, uniforms) { let sprite = null; if (typeof vertexSrc !== "string" && fragmentSrc === void 0 && uniforms === void 0) { sprite = vertexSrc; vertexSrc = void 0; fragmentSrc = void 0; uniforms = void 0; } super(vertexSrc || vertex, fragmentSrc || fragment, uniforms); this.maskSprite = sprite; this.maskMatrix = new Matrix(); } get maskSprite() { return this._maskSprite; } set maskSprite(value) { this._maskSprite = value; if (this._maskSprite) { this._maskSprite.renderable = false; } } apply(filterManager, input, output, clearMode) { const maskSprite = this._maskSprite; const tex = maskSprite._texture; if (!tex.valid) { return; } if (!tex.uvMatrix) { tex.uvMatrix = new TextureMatrix(tex, 0); } tex.uvMatrix.update(); this.uniforms.npmAlpha = tex.baseTexture.alphaMode ? 0 : 1; this.uniforms.mask = tex; this.uniforms.otherMatrix = filterManager.calculateSpriteMatrix(this.maskMatrix, maskSprite).prepend(tex.uvMatrix.mapCoord); this.uniforms.alpha = maskSprite.worldAlpha; this.uniforms.maskClamp = tex.uvMatrix.uClampFrame; filterManager.applyFilter(this, input, output, clearMode); } } export { SpriteMaskFilter }; //# sourceMappingURL=SpriteMaskFilter.mjs.map