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
JavaScript
;
var Extensions = require('../../../extensions/Extensions.js');
var _const = require('../shared/state/const.js');
;
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