UNPKG

@polygonjs/polygonjs

Version:

node-based WebGL 3D engine https://polygonjs.com

108 lines (103 loc) 3.36 kB
import {CopyPass} from 'postprocessing'; import {WebGLRenderer, WebGLRenderTarget} from 'three'; import {isBooleanTrue} from '../../../../../core/Type'; // import FRAGMENT from '../../gl/passThrough.glsl'; import {UpdateScenePostNode} from '../../UpdateScene'; interface UpdateSceneEffectOptions { // scene: PolyScene; reset: boolean; node: UpdateScenePostNode; nodeToReset?: UpdateScenePostNode; // objectsMask: string; // invertMask: boolean; // setMatteMaterial: boolean; // setVisible: boolean; // visible: boolean; } export class UpdateScenePass extends CopyPass { // public override needsSwap = false; // public updatesRender = false; // private _scene: PolyScene; public reset: boolean; public node: UpdateScenePostNode; public nodeToReset?: UpdateScenePostNode; // public objectsMask: string; // public invertMask: boolean; // public setMatteMaterial: boolean; // public setVisible: boolean; // public visible: boolean; constructor(options: UpdateSceneEffectOptions) { // const applyChanges = () => options.node.applyChanges(); // const resetChanges = () => { // if (options.nodeToReset) { // options.nodeToReset.applyChanges(); // } else { // console.warn('reset is true, but no passToReset is given', options.node); // } // }; // const f = isBooleanTrue(options.reset) ? resetChanges : applyChanges; super(); // this._scene = options.scene; this.reset = options.reset; this.node = options.node; this.nodeToReset = options.nodeToReset; // this.objectsMask = options.objectsMask; // this.invertMask = options.invertMask; // this.setMatteMaterial = options.setMatteMaterial; // this.setVisible = options.setVisible; // this.visible = options.visible; } // private _onRenderBound = this._onRender.bind(this) // private _onRender(){ // } override render( renderer: WebGLRenderer, inputBuffer: WebGLRenderTarget, outputBuffer: WebGLRenderTarget, deltaTime?: number, stencilTest?: boolean ) { if (isBooleanTrue(this.reset)) { if (this.nodeToReset) { this.nodeToReset.resetChanges(); } else { console.warn('reset is true, but no passToReset is given'); } } else { this.node.applyChanges(); } // console.warn(deltaTime, this); super.render(renderer, inputBuffer, outputBuffer, deltaTime, stencilTest); } // override update(renderer: WebGLRenderer, inputBuffer: WebGLRenderTarget, deltaTime: number) { // if (isBooleanTrue(this.reset)) { // if (this.nodeToReset) { // this.nodeToReset.resetChanges(); // } else { // console.warn('reset is true, but no passToReset is given'); // } // } else { // this.node.applyChanges(); // } // // console.warn(deltaTime, this); // super.update(renderer, inputBuffer, deltaTime); // } // private _updateObjectBound = this._updateObject.bind(this); // private _updateObject(obj: Object3D) { // this._objectsList.push(obj); // if (isBooleanTrue(this.setMatteMaterial)) { // const mesh = obj as Mesh; // if (mesh.material) { // this._materialByMesh.set(mesh, mesh.material); // mesh.material = MATTE_MATERIAL; // } // } // if (isBooleanTrue(this.setVisible)) { // if (obj.visible != this.visible) { // this._visibleByObject.set(obj, obj.visible); // obj.visible = this.visible; // console.log(obj, obj.visible); // } // } // } }