Files
nothoughts/node_modules/pixi.js/lib/rendering/renderers/gpu/GpuStencilSystem.mjs.map
2025-08-04 18:57:35 +02:00

1 line
3.8 KiB
Plaintext

{"version":3,"file":"GpuStencilSystem.mjs","sources":["../../../../src/rendering/renderers/gpu/GpuStencilSystem.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\nimport { STENCIL_MODES } from '../shared/state/const';\n\nimport type { RenderTarget } from '../shared/renderTarget/RenderTarget';\nimport type { System } from '../shared/system/System';\nimport type { WebGPURenderer } from './WebGPURenderer';\n\n/**\n * This manages the stencil buffer. Used primarily for masking\n * @memberof rendering\n */\nexport class GpuStencilSystem implements System\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'stencil',\n } as const;\n\n private readonly _renderer: WebGPURenderer;\n\n private _renderTargetStencilState: Record<number, {\n stencilMode: STENCIL_MODES;\n stencilReference: number;\n }> = Object.create(null);\n\n private _activeRenderTarget: RenderTarget;\n\n constructor(renderer: WebGPURenderer)\n {\n this._renderer = renderer;\n\n renderer.renderTarget.onRenderTargetChange.add(this);\n }\n\n protected onRenderTargetChange(renderTarget: RenderTarget)\n {\n let stencilState = this._renderTargetStencilState[renderTarget.uid];\n\n if (!stencilState)\n {\n stencilState = this._renderTargetStencilState[renderTarget.uid] = {\n stencilMode: STENCIL_MODES.DISABLED,\n stencilReference: 0,\n };\n }\n\n this._activeRenderTarget = renderTarget;\n\n this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference);\n }\n\n public setStencilMode(stencilMode: STENCIL_MODES, stencilReference: number)\n {\n const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid];\n\n stencilState.stencilMode = stencilMode;\n stencilState.stencilReference = stencilReference;\n\n const renderer = this._renderer;\n\n renderer.pipeline.setStencilMode(stencilMode);\n renderer.encoder.renderPassEncoder.setStencilReference(stencilReference);\n }\n\n public destroy()\n {\n this._renderer.renderTarget.onRenderTargetChange.remove(this);\n\n (this._renderer as null) = null;\n\n this._activeRenderTarget = null;\n this._renderTargetStencilState = null;\n }\n}\n"],"names":[],"mappings":";;;;AAWO,MAAM,gBACb,CAAA;AAAA,EAkBI,YAAY,QACZ,EAAA;AARA,IAAQ,IAAA,CAAA,yBAAA,mBAGI,MAAA,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAMnB,IAAA,IAAA,CAAK,SAAY,GAAA,QAAA,CAAA;AAEjB,IAAS,QAAA,CAAA,YAAA,CAAa,oBAAqB,CAAA,GAAA,CAAI,IAAI,CAAA,CAAA;AAAA,GACvD;AAAA,EAEU,qBAAqB,YAC/B,EAAA;AACI,IAAA,IAAI,YAAe,GAAA,IAAA,CAAK,yBAA0B,CAAA,YAAA,CAAa,GAAG,CAAA,CAAA;AAElE,IAAA,IAAI,CAAC,YACL,EAAA;AACI,MAAA,YAAA,GAAe,IAAK,CAAA,yBAAA,CAA0B,YAAa,CAAA,GAAG,CAAI,GAAA;AAAA,QAC9D,aAAa,aAAc,CAAA,QAAA;AAAA,QAC3B,gBAAkB,EAAA,CAAA;AAAA,OACtB,CAAA;AAAA,KACJ;AAEA,IAAA,IAAA,CAAK,mBAAsB,GAAA,YAAA,CAAA;AAE3B,IAAA,IAAA,CAAK,cAAe,CAAA,YAAA,CAAa,WAAa,EAAA,YAAA,CAAa,gBAAgB,CAAA,CAAA;AAAA,GAC/E;AAAA,EAEO,cAAA,CAAe,aAA4B,gBAClD,EAAA;AACI,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,yBAA0B,CAAA,IAAA,CAAK,oBAAoB,GAAG,CAAA,CAAA;AAEhF,IAAA,YAAA,CAAa,WAAc,GAAA,WAAA,CAAA;AAC3B,IAAA,YAAA,CAAa,gBAAmB,GAAA,gBAAA,CAAA;AAEhC,IAAA,MAAM,WAAW,IAAK,CAAA,SAAA,CAAA;AAEtB,IAAS,QAAA,CAAA,QAAA,CAAS,eAAe,WAAW,CAAA,CAAA;AAC5C,IAAS,QAAA,CAAA,OAAA,CAAQ,iBAAkB,CAAA,mBAAA,CAAoB,gBAAgB,CAAA,CAAA;AAAA,GAC3E;AAAA,EAEO,OACP,GAAA;AACI,IAAA,IAAA,CAAK,SAAU,CAAA,YAAA,CAAa,oBAAqB,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAE5D,IAAC,KAAK,SAAqB,GAAA,IAAA,CAAA;AAE3B,IAAA,IAAA,CAAK,mBAAsB,GAAA,IAAA,CAAA;AAC3B,IAAA,IAAA,CAAK,yBAA4B,GAAA,IAAA,CAAA;AAAA,GACrC;AACJ,CAAA;AAAA;AAjEa,gBAAA,CAGK,SAAY,GAAA;AAAA,EACtB,IAAM,EAAA;AAAA,IACF,aAAc,CAAA,YAAA;AAAA,GAClB;AAAA,EACA,IAAM,EAAA,SAAA;AACV,CAAA;;;;"}