UNPKG

@polygonjs/polygonjs

Version:

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

53 lines (52 loc) 2.08 kB
"use strict"; import { TypedGlNode } from "./_Base"; import { NodeParamsConfig, ParamConfig } from "../../nodes/utils/params/ParamsConfig"; import { GlConnectionPoint, GlConnectionPointType } from "../../nodes/utils/io/connections/Gl"; import { ThreeToGl } from "../../../core/ThreeToGl"; const OUTPUT = { SSS_MODEL: "SSSModel" }; class VATDataGlParamsConfig extends NodeParamsConfig { constructor() { super(...arguments); this.color = ParamConfig.COLOR([1, 1, 1]); this.thickness = ParamConfig.FLOAT(0.1); this.power = ParamConfig.FLOAT(2); this.scale = ParamConfig.FLOAT(16); this.distortion = ParamConfig.FLOAT(0.1); this.ambient = ParamConfig.FLOAT(0.4); this.attenuation = ParamConfig.FLOAT(0.8); } } const ParamsConfig = new VATDataGlParamsConfig(); export class SSSModelGlNode extends TypedGlNode { constructor() { super(...arguments); this.paramsConfig = ParamsConfig; } static type() { return "SSSModel"; } initializeNode() { this.io.outputs.setNamedOutputConnectionPoints([ new GlConnectionPoint(OUTPUT.SSS_MODEL, GlConnectionPointType.SSS_MODEL) ]); } setLines(shaders_collection_controller) { const body_lines = []; const outSSModel = this.glVarName(OUTPUT.SSS_MODEL); body_lines.push(`SSSModel ${outSSModel}`); body_lines.push(`${outSSModel}.isActive = true;`); body_lines.push(this._paramLineFloat(outSSModel, this.p.color)); body_lines.push(this._paramLineFloat(outSSModel, this.p.thickness)); body_lines.push(this._paramLineFloat(outSSModel, this.p.power)); body_lines.push(this._paramLineFloat(outSSModel, this.p.scale)); body_lines.push(this._paramLineFloat(outSSModel, this.p.distortion)); body_lines.push(this._paramLineFloat(outSSModel, this.p.ambient)); body_lines.push(this._paramLineFloat(outSSModel, this.p.attenuation)); shaders_collection_controller.addBodyLines(this, body_lines); } _paramLineFloat(varName, param) { return `${varName}.${param.name()} = ${ThreeToGl.vector3(this.variableForInputParam(param))};`; } }