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.19 kB
{"version":3,"file":"ColorMaskPipe.mjs","sources":["../../../../src/rendering/mask/color/ColorMaskPipe.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\n\nimport type { Container } from '../../../scene/container/Container';\nimport type { Effect } from '../../../scene/container/Effect';\nimport type { WebGLRenderer } from '../../renderers/gl/WebGLRenderer';\nimport type { WebGPURenderer } from '../../renderers/gpu/WebGPURenderer';\nimport type { InstructionSet } from '../../renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../../renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../renderers/types';\nimport type { ColorMask } from './ColorMask';\nimport type { ColorMaskInstruction } from './ColorMaskTypes';\n\n/** @internal */\nexport class ColorMaskPipe implements InstructionPipe<ColorMaskInstruction>\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ],\n name: 'colorMask',\n } as const;\n\n private readonly _renderer: Renderer;\n private _colorStack: number[] = [];\n private _colorStackIndex = 0;\n private _currentColor = 0;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public buildStart()\n {\n this._colorStack[0] = 0xF;\n this._colorStackIndex = 1;\n this._currentColor = 0xF;\n }\n\n public push(mask: Effect, _container: Container, instructionSet: InstructionSet): void\n {\n const renderer = this._renderer;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n const colorStack = this._colorStack;\n\n colorStack[this._colorStackIndex] = colorStack[this._colorStackIndex - 1] & (mask as ColorMask).mask;\n\n const currentColor = this._colorStack[this._colorStackIndex];\n\n if (currentColor !== this._currentColor)\n {\n this._currentColor = currentColor;\n instructionSet.add({\n renderPipeId: 'colorMask',\n colorMask: currentColor,\n canBundle: false,\n } as ColorMaskInstruction);\n }\n\n this._colorStackIndex++;\n }\n\n public pop(_mask: Effect, _container: Container, instructionSet: InstructionSet): void\n {\n const renderer = this._renderer;\n\n renderer.renderPipes.batch.break(instructionSet);\n\n const colorStack = this._colorStack;\n\n this._colorStackIndex--;\n\n const currentColor = colorStack[this._colorStackIndex - 1];\n\n if (currentColor !== this._currentColor)\n {\n this._currentColor = currentColor;\n\n instructionSet.add({\n renderPipeId: 'colorMask',\n colorMask: currentColor,\n canBundle: false,\n } as ColorMaskInstruction);\n }\n }\n\n public execute(instruction: ColorMaskInstruction)\n {\n const renderer = this._renderer;\n\n (renderer as WebGLRenderer | WebGPURenderer).colorMask.setMask(instruction.colorMask);\n }\n\n public destroy()\n {\n (this._renderer as null) = null;\n this._colorStack = null;\n }\n}\n"],"names":[],"mappings":";;;AAaO,MAAM,aAAA,CACb;AAAA,EAeI,YAAY,QAAA,EACZ;AALA,IAAA,IAAA,CAAQ,cAAwB,EAAC;AACjC,IAAA,IAAA,CAAQ,gBAAA,GAAmB,CAAA;AAC3B,IAAA,IAAA,CAAQ,aAAA,GAAgB,CAAA;AAIpB,IAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AAAA,EACrB;AAAA,EAEO,UAAA,GACP;AACI,IAAA,IAAA,CAAK,WAAA,CAAY,CAAC,CAAA,GAAI,EAAA;AACtB,IAAA,IAAA,CAAK,gBAAA,GAAmB,CAAA;AACxB,IAAA,IAAA,CAAK,aAAA,GAAgB,EAAA;AAAA,EACzB;AAAA,EAEO,IAAA,CAAK,IAAA,EAAc,UAAA,EAAuB,cAAA,EACjD;AACI,IAAA,MAAM,WAAW,IAAA,CAAK,SAAA;AAEtB,IAAA,QAAA,CAAS,WAAA,CAAY,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAE/C,IAAA,MAAM,aAAa,IAAA,CAAK,WAAA;AAExB,IAAA,UAAA,CAAW,IAAA,CAAK,gBAAgB,CAAA,GAAI,UAAA,CAAW,KAAK,gBAAA,GAAmB,CAAC,IAAK,IAAA,CAAmB,IAAA;AAEhG,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,WAAA,CAAY,IAAA,CAAK,gBAAgB,CAAA;AAE3D,IAAA,IAAI,YAAA,KAAiB,KAAK,aAAA,EAC1B;AACI,MAAA,IAAA,CAAK,aAAA,GAAgB,YAAA;AACrB,MAAA,cAAA,CAAe,GAAA,CAAI;AAAA,QACf,YAAA,EAAc,WAAA;AAAA,QACd,SAAA,EAAW,YAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACU,CAAA;AAAA,IAC7B;AAEA,IAAA,IAAA,CAAK,gBAAA,EAAA;AAAA,EACT;AAAA,EAEO,GAAA,CAAI,KAAA,EAAe,UAAA,EAAuB,cAAA,EACjD;AACI,IAAA,MAAM,WAAW,IAAA,CAAK,SAAA;AAEtB,IAAA,QAAA,CAAS,WAAA,CAAY,KAAA,CAAM,KAAA,CAAM,cAAc,CAAA;AAE/C,IAAA,MAAM,aAAa,IAAA,CAAK,WAAA;AAExB,IAAA,IAAA,CAAK,gBAAA,EAAA;AAEL,IAAA,MAAM,YAAA,GAAe,UAAA,CAAW,IAAA,CAAK,gBAAA,GAAmB,CAAC,CAAA;AAEzD,IAAA,IAAI,YAAA,KAAiB,KAAK,aAAA,EAC1B;AACI,MAAA,IAAA,CAAK,aAAA,GAAgB,YAAA;AAErB,MAAA,cAAA,CAAe,GAAA,CAAI;AAAA,QACf,YAAA,EAAc,WAAA;AAAA,QACd,SAAA,EAAW,YAAA;AAAA,QACX,SAAA,EAAW;AAAA,OACU,CAAA;AAAA,IAC7B;AAAA,EACJ;AAAA,EAEO,QAAQ,WAAA,EACf;AACI,IAAA,MAAM,WAAW,IAAA,CAAK,SAAA;AAEtB,IAAC,QAAA,CAA4C,SAAA,CAAU,OAAA,CAAQ,WAAA,CAAY,SAAS,CAAA;AAAA,EACxF;AAAA,EAEO,OAAA,GACP;AACI,IAAC,KAAK,SAAA,GAAqB,IAAA;AAC3B,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACvB;AACJ;AAAA;AAzFa,aAAA,CAGK,SAAA,GAAY;AAAA,EACtB,IAAA,EAAM;AAAA,IACF,aAAA,CAAc,UAAA;AAAA,IACd,aAAA,CAAc;AAAA,GAClB;AAAA,EACA,IAAA,EAAM;AACV,CAAA;;;;"}