UNPKG

polygonjs-engine

Version:

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

56 lines (55 loc) 1.52 kB
import {WebGLRenderer as WebGLRenderer2} from "three/src/renderers/WebGLRenderer"; import {LinearToneMapping} from "three/src/constants"; import {TypedCopNode} from "../_Base"; import {NodeParamsConfig, ParamConfig} from "../../utils/params/ParamsConfig"; import {Poly as Poly2} from "../../../Poly"; class BaseCopRendererCopParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); this.useCameraRenderer = ParamConfig.BOOLEAN(0); } } const ParamsConfig2 = new BaseCopRendererCopParamsConfig(); export class BaseCopRendererCopNode extends TypedCopNode { constructor() { super(...arguments); this.params_config = ParamsConfig2; } } export class CopRendererController { constructor(node) { this.node = node; } async renderer() { if (this.node.pv.useCameraRenderer) { return await this.camera_renderer(); } else { return this._renderer = this._renderer || this._create_renderer(); } } reset() { this._renderer?.dispose(); this._renderer = void 0; } async camera_renderer() { let renderer = Poly2.renderersController.firstRenderer(); if (renderer) { return renderer; } else { return await Poly2.renderersController.waitForRenderer(); } } save_state() { this.make_linear(); } make_linear() { } restore_state() { } _create_renderer() { const renderer = new WebGLRenderer2(); renderer.toneMapping = LinearToneMapping; renderer.setPixelRatio(1); return renderer; } }