UNPKG

@polygonjs/polygonjs

Version:

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

34 lines (33 loc) 1.3 kB
"use strict"; import { FunctionGLDefinition } from "./utils/GLDefinition"; import { TypedGlNode } from "./_Base"; import { ThreeToGl } from "../../../../src/core/ThreeToGl"; import { NodeParamsConfig, ParamConfig } from "../utils/params/ParamsConfig"; import SDFMethodsCommon from "./gl/raymarching/sdfCommon.glsl"; import SDFMethods from "./gl/raymarching/sdf.glsl"; const VARS = { position: "p" }; class BaseSDFGlParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); this.position = ParamConfig.VECTOR3([0, 0, 0]); } } export class BaseSDFGlNode extends TypedGlNode { position() { const inputPosition = this.io.inputs.named_input(this.p.position.name()); const position = inputPosition ? ThreeToGl.vector3(this.variableForInputParam(this.p.position)) : this._defaultPosition(); return position; } _defaultPosition() { return VARS.position; } _addSDFMethods(shadersCollectionController) { BaseSDFGlNode.addSDFMethods(shadersCollectionController, this); } static addSDFMethods(shadersCollectionController, node) { shadersCollectionController.addDefinitions(node, [new FunctionGLDefinition(node, SDFMethodsCommon)]); shadersCollectionController.addDefinitions(node, [new FunctionGLDefinition(node, SDFMethods)]); } }