UNPKG

polygonjs-engine

Version:

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

81 lines (80 loc) 2.29 kB
import {TypedNode} from "../_Base"; import {NodeContext as NodeContext2} from "../../poly/NodeContext"; import {FlagsControllerDB} from "../utils/FlagsController"; const INPUT_PASS_NAME = "input pass"; const DEFAULT_INPUT_NAMES = [INPUT_PASS_NAME]; function PostParamCallback(node, param) { TypedPostProcessNode.PARAM_CALLBACK_update_passes(node); } export const PostParamOptions = { cook: false, callback: PostParamCallback, computeOnDirty: true }; export class TypedPostProcessNode extends TypedNode { constructor() { super(...arguments); this.flags = new FlagsControllerDB(this); this._passes_by_requester_id = new Map(); this._update_pass_bound = this.update_pass.bind(this); } static nodeContext() { return NodeContext2.POST; } static displayedInputNames() { return DEFAULT_INPUT_NAMES; } initializeNode() { this.flags.display.set(false); this.flags.display.add_hook(() => { if (this.flags.display.active()) { const parent = this.parent(); if (parent && parent.display_node_controller) { parent.display_node_controller.set_display_node(this); } } }); this.io.inputs.setCount(0, 1); this.io.outputs.set_has_one_output(); } set_render_pass(render_pass) { this.setContainer(render_pass); } cook() { this.cookController.end_cook(); } setup_composer(context) { this._add_pass_from_input(0, context); if (!this.flags.bypass.active()) { let pass = this._passes_by_requester_id.get(context.requester.graphNodeId()); if (!pass) { pass = this._create_pass(context); if (pass) { this._passes_by_requester_id.set(context.requester.graphNodeId(), pass); } } if (pass) { context.composer.addPass(pass); } } } _add_pass_from_input(index, context) { const input = this.io.inputs.input(index); if (input) { input.setup_composer(context); } } _create_pass(context) { return void 0; } static PARAM_CALLBACK_update_passes(node) { node.update_passes(); } update_passes() { this._passes_by_requester_id.forEach(this._update_pass_bound); } update_pass(pass) { } } export class BasePostProcessNodeClass extends TypedPostProcessNode { }