UNPKG

@polygonjs/polygonjs

Version:

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

59 lines (51 loc) 1.99 kB
// /** // * Allows to compose two different renders. // * // * // */ // import {TypedPostNode, TypedPostNodeContext} from './_Base'; // import {LayerPass, LAYER_MODES} from '../../../modules/core/post_process/LayerPass'; // import {NodeParamsConfig, ParamConfig} from '../utils/params/ParamsConfig'; // class LayerPostParamsConfig extends NodeParamsConfig { // /** @param layer mode */ // mode = ParamConfig.INTEGER(0, { // menu: { // entries: LAYER_MODES.map((name, value) => ({name, value})), // }, // }); // } // const ParamsConfig = new LayerPostParamsConfig(); // export class LayerPostNode extends TypedPostNode<LayerPass, LayerPostParamsConfig> { // override paramsConfig = ParamsConfig; // static override type() { // return 'layer'; // } // override initializeNode() { // super.initializeNode(); // this.io.inputs.setCount(2); // } // override setupComposer(context: TypedPostNodeContext): void { // const renderer = context.composer.renderer; // const renderTarget1 = this._createRenderTarget(renderer); // const renderTarget2 = this._createRenderTarget(renderer); // const composer1 = this._createEffectComposer(renderer, renderTarget1); // const composer2 = this._createEffectComposer(renderer, renderTarget2); // // renderToScreen = false to ensure the last pass of each composer is still // // written to the render_target // composer1.renderToScreen = false; // composer2.renderToScreen = false; // const cloned_context1 = {...context}; // const cloned_context2 = {...context}; // cloned_context1.composer = composer1; // cloned_context2.composer = composer2; // this._addPassFromInput(0, cloned_context1); // this._addPassFromInput(1, cloned_context2); // const pass = new LayerPass(composer1, composer2); // // pass.needsSwap = true; // this.updatePass(pass); // context.composer.addPass(pass); // } // override updatePass(pass: LayerPass) { // pass.mode = LAYER_MODES[this.pv.mode]; // } // }