Initial project import
This commit is contained in:
70
node_modules/three-stdlib/postprocessing/MaskPass.js
generated
vendored
Normal file
70
node_modules/three-stdlib/postprocessing/MaskPass.js
generated
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
var __defProp = Object.defineProperty;
|
||||
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
||||
var __publicField = (obj, key, value) => {
|
||||
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
||||
return value;
|
||||
};
|
||||
import { Pass } from "./Pass.js";
|
||||
class MaskPass extends Pass {
|
||||
constructor(scene, camera) {
|
||||
super();
|
||||
__publicField(this, "scene");
|
||||
__publicField(this, "camera");
|
||||
__publicField(this, "inverse");
|
||||
this.scene = scene;
|
||||
this.camera = camera;
|
||||
this.clear = true;
|
||||
this.needsSwap = false;
|
||||
this.inverse = false;
|
||||
}
|
||||
render(renderer, writeBuffer, readBuffer) {
|
||||
const context = renderer.getContext();
|
||||
const state = renderer.state;
|
||||
state.buffers.color.setMask(false);
|
||||
state.buffers.depth.setMask(false);
|
||||
state.buffers.color.setLocked(true);
|
||||
state.buffers.depth.setLocked(true);
|
||||
let writeValue, clearValue;
|
||||
if (this.inverse) {
|
||||
writeValue = 0;
|
||||
clearValue = 1;
|
||||
} else {
|
||||
writeValue = 1;
|
||||
clearValue = 0;
|
||||
}
|
||||
state.buffers.stencil.setTest(true);
|
||||
state.buffers.stencil.setOp(context.REPLACE, context.REPLACE, context.REPLACE);
|
||||
state.buffers.stencil.setFunc(context.ALWAYS, writeValue, 4294967295);
|
||||
state.buffers.stencil.setClear(clearValue);
|
||||
state.buffers.stencil.setLocked(true);
|
||||
renderer.setRenderTarget(readBuffer);
|
||||
if (this.clear)
|
||||
renderer.clear();
|
||||
renderer.render(this.scene, this.camera);
|
||||
renderer.setRenderTarget(writeBuffer);
|
||||
if (this.clear)
|
||||
renderer.clear();
|
||||
renderer.render(this.scene, this.camera);
|
||||
state.buffers.color.setLocked(false);
|
||||
state.buffers.depth.setLocked(false);
|
||||
state.buffers.stencil.setLocked(false);
|
||||
state.buffers.stencil.setFunc(context.EQUAL, 1, 4294967295);
|
||||
state.buffers.stencil.setOp(context.KEEP, context.KEEP, context.KEEP);
|
||||
state.buffers.stencil.setLocked(true);
|
||||
}
|
||||
}
|
||||
class ClearMaskPass extends Pass {
|
||||
constructor() {
|
||||
super();
|
||||
this.needsSwap = false;
|
||||
}
|
||||
render(renderer) {
|
||||
renderer.state.buffers.stencil.setLocked(false);
|
||||
renderer.state.buffers.stencil.setTest(false);
|
||||
}
|
||||
}
|
||||
export {
|
||||
ClearMaskPass,
|
||||
MaskPass
|
||||
};
|
||||
//# sourceMappingURL=MaskPass.js.map
|
||||
Reference in New Issue
Block a user