UNPKG

@polygonjs/polygonjs

Version:

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

111 lines (98 loc) 3.47 kB
import {TypedGlNode} from './_Base'; import {ThreeToGl} from '../../../core/ThreeToGl'; import {GlConnectionPointType, GlConnectionPoint} from '../utils/io/connections/Gl'; import {NodeParamsConfig, ParamConfig} from '../utils/params/ParamsConfig'; import {ShadersCollectionController} from './code/utils/ShadersCollectionController'; // // // FLOAT TO VEC2 // // class FloatToVec2GlParamsConfig extends NodeParamsConfig { x = ParamConfig.FLOAT(0); y = ParamConfig.FLOAT(0); } const ParamsConfig2 = new FloatToVec2GlParamsConfig(); export class FloatToVec2GlNode extends TypedGlNode<FloatToVec2GlParamsConfig> { override paramsConfig = ParamsConfig2; static override type() { return 'floatToVec2'; } static readonly OUTPUT_NAME = 'vec2'; override initializeNode() { this.io.outputs.setNamedOutputConnectionPoints([ new GlConnectionPoint(FloatToVec2GlNode.OUTPUT_NAME, GlConnectionPointType.VEC2), ]); } override setLines(shaders_collection_controller: ShadersCollectionController) { const x = this.variableForInputParam(this.p.x); const y = this.variableForInputParam(this.p.y); const vec = this.glVarName(FloatToVec2GlNode.OUTPUT_NAME); const body_line = `vec2 ${vec} = ${ThreeToGl.float2(x, y)}`; shaders_collection_controller.addBodyLines(this, [body_line]); } } // // // FLOAT TO VEC3 // // class FloatToVec3GlParamsConfig extends NodeParamsConfig { x = ParamConfig.FLOAT(0); y = ParamConfig.FLOAT(0); z = ParamConfig.FLOAT(0); } const ParamsConfig3 = new FloatToVec3GlParamsConfig(); export class FloatToVec3GlNode extends TypedGlNode<FloatToVec3GlParamsConfig> { override paramsConfig = ParamsConfig3; static override type() { return 'floatToVec3'; } static readonly OUTPUT_NAME = 'vec3'; override initializeNode() { this.io.outputs.setNamedOutputConnectionPoints([ new GlConnectionPoint(FloatToVec3GlNode.OUTPUT_NAME, GlConnectionPointType.VEC3), ]); } override setLines(shaders_collection_controller: ShadersCollectionController) { const x = this.variableForInputParam(this.p.x); const y = this.variableForInputParam(this.p.y); const z = this.variableForInputParam(this.p.z); const vec = this.glVarName(FloatToVec3GlNode.OUTPUT_NAME); const body_line = `vec3 ${vec} = ${ThreeToGl.float3(x, y, z)}`; shaders_collection_controller.addBodyLines(this, [body_line]); } } // // // FLOAT TO VEC4 // // class FloatToVec4GlParamsConfig extends NodeParamsConfig { x = ParamConfig.FLOAT(0); y = ParamConfig.FLOAT(0); z = ParamConfig.FLOAT(0); w = ParamConfig.FLOAT(0); } const ParamsConfig4 = new FloatToVec4GlParamsConfig(); export class FloatToVec4GlNode extends TypedGlNode<FloatToVec4GlParamsConfig> { override paramsConfig = ParamsConfig4; static override type() { return 'floatToVec4'; } static readonly OUTPUT_NAME = 'vec4'; override initializeNode() { this.io.outputs.setNamedOutputConnectionPoints([ new GlConnectionPoint(FloatToVec4GlNode.OUTPUT_NAME, GlConnectionPointType.VEC4), ]); } override setLines(shaders_collection_controller: ShadersCollectionController) { const x = this.variableForInputParam(this.p.x); const y = this.variableForInputParam(this.p.y); const z = this.variableForInputParam(this.p.z); const w = this.variableForInputParam(this.p.w); const vec = this.glVarName(FloatToVec4GlNode.OUTPUT_NAME); const body_line = `vec4 ${vec} = ${ThreeToGl.float4(x, y, z, w)}`; shaders_collection_controller.addBodyLines(this, [body_line]); } }