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

49 lines (45 loc) 1.61 kB
'use strict'; var Extensions = require('../../../extensions/Extensions.js'); var _const = require('../shared/state/const.js'); "use strict"; class GpuStencilSystem { constructor(renderer) { this._renderTargetStencilState = /* @__PURE__ */ Object.create(null); this._renderer = renderer; renderer.renderTarget.onRenderTargetChange.add(this); } onRenderTargetChange(renderTarget) { let stencilState = this._renderTargetStencilState[renderTarget.uid]; if (!stencilState) { stencilState = this._renderTargetStencilState[renderTarget.uid] = { stencilMode: _const.STENCIL_MODES.DISABLED, stencilReference: 0 }; } this._activeRenderTarget = renderTarget; this.setStencilMode(stencilState.stencilMode, stencilState.stencilReference); } setStencilMode(stencilMode, stencilReference) { const stencilState = this._renderTargetStencilState[this._activeRenderTarget.uid]; stencilState.stencilMode = stencilMode; stencilState.stencilReference = stencilReference; const renderer = this._renderer; renderer.pipeline.setStencilMode(stencilMode); renderer.encoder.renderPassEncoder.setStencilReference(stencilReference); } destroy() { this._renderer.renderTarget.onRenderTargetChange.remove(this); this._renderer = null; this._activeRenderTarget = null; this._renderTargetStencilState = null; } } /** @ignore */ GpuStencilSystem.extension = { type: [ Extensions.ExtensionType.WebGPUSystem ], name: "stencil" }; exports.GpuStencilSystem = GpuStencilSystem; //# sourceMappingURL=GpuStencilSystem.js.map