@zephyr3d/scene 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/animationset.js +135 -133
- package/dist/animation/animationset.js.map +1 -1
- package/dist/animation/cloth/gpu_cloth_system.js +9 -1
- package/dist/animation/cloth/gpu_cloth_system.js.map +1 -1
- package/dist/animation/fixed_geometry_cache_track.js +5 -1
- package/dist/animation/fixed_geometry_cache_track.js.map +1 -1
- package/dist/animation/geometry_cache_utils.js +20 -4
- package/dist/animation/geometry_cache_utils.js.map +1 -1
- package/dist/animation/ik/ik_angle_constraint.js +2 -6
- package/dist/animation/ik/ik_angle_constraint.js.map +1 -1
- package/dist/animation/ik/two_bone_ik_solver.js +2 -6
- package/dist/animation/ik/two_bone_ik_solver.js.map +1 -1
- package/dist/animation/joint_dynamics/collision.js +60 -12
- package/dist/animation/joint_dynamics/collision.js.map +1 -1
- package/dist/animation/joint_dynamics/constraints.js +20 -4
- package/dist/animation/joint_dynamics/constraints.js.map +1 -1
- package/dist/animation/joint_dynamics/controller.js +151 -103
- package/dist/animation/joint_dynamics/controller.js.map +1 -1
- package/dist/animation/joint_dynamics/solver.js +21 -11
- package/dist/animation/joint_dynamics/solver.js.map +1 -1
- package/dist/animation/joint_dynamics/types.js +15 -3
- package/dist/animation/joint_dynamics/types.js.map +1 -1
- package/dist/animation/pca_geometry_cache_track.js +5 -1
- package/dist/animation/pca_geometry_cache_track.js.map +1 -1
- package/dist/animation/skeleton.js +2 -2
- package/dist/animation/skeleton.js.map +1 -1
- package/dist/animation/skeleton_modifier.js +2 -6
- package/dist/animation/skeleton_modifier.js.map +1 -1
- package/dist/animation/spring/spring_system.js +87 -114
- package/dist/animation/spring/spring_system.js.map +1 -1
- package/dist/app/app.js.map +1 -1
- package/dist/app/engine.js +1 -1
- package/dist/app/engine.js.map +1 -1
- package/dist/app/screen.js +4 -4
- package/dist/app/screen.js.map +1 -1
- package/dist/app/scriptingsystem.js +24 -1
- package/dist/app/scriptingsystem.js.map +1 -1
- package/dist/app/scriptregistry.js +165 -144
- package/dist/app/scriptregistry.js.map +1 -1
- package/dist/asset/assetmanager.js +2 -2
- package/dist/asset/assetmanager.js.map +1 -1
- package/dist/asset/model.js +3 -3
- package/dist/asset/model.js.map +1 -1
- package/dist/camera/camera.js +185 -185
- package/dist/camera/camera.js.map +1 -1
- package/dist/camera/orbit.js.map +1 -1
- package/dist/index.d.ts +794 -261
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/material/material.js +290 -288
- package/dist/material/material.js.map +1 -1
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +13 -26
- package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
- package/dist/material/pbrmr.js +1 -11
- package/dist/material/pbrmr.js.map +1 -1
- package/dist/material/sprite.js +6 -6
- package/dist/material/sprite.js.map +1 -1
- package/dist/material/terrain-cm.js +2 -2
- package/dist/material/terrain-cm.js.map +1 -1
- package/dist/posteffect/taa.js +31 -39
- package/dist/posteffect/taa.js.map +1 -1
- package/dist/render/drawable.js +5 -1
- package/dist/render/drawable.js.map +1 -1
- package/dist/render/rendergraph/device_pool_allocator.js +29 -3
- package/dist/render/rendergraph/device_pool_allocator.js.map +1 -1
- package/dist/render/rendergraph/executor.js +283 -33
- package/dist/render/rendergraph/executor.js.map +1 -1
- package/dist/render/rendergraph/forward_plus_builder.js +338 -108
- package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
- package/dist/render/rendergraph/history_resource_manager.js +236 -156
- package/dist/render/rendergraph/history_resource_manager.js.map +1 -1
- package/dist/render/rendergraph/history_resources.js +10 -0
- package/dist/render/rendergraph/history_resources.js.map +1 -0
- package/dist/render/rendergraph/rendergraph.js +162 -35
- package/dist/render/rendergraph/rendergraph.js.map +1 -1
- package/dist/render/rendergraph/types.js +36 -16
- package/dist/render/rendergraph/types.js.map +1 -1
- package/dist/render/rendertarget.js +5 -1
- package/dist/render/rendertarget.js.map +1 -1
- package/dist/render/screenrendertarget.js +5 -1
- package/dist/render/screenrendertarget.js.map +1 -1
- package/dist/render/sky.js +4 -4
- package/dist/render/sky.js.map +1 -1
- package/dist/scene/basesprite.js +2 -2
- package/dist/scene/basesprite.js.map +1 -1
- package/dist/scene/graph_node.js +1 -1
- package/dist/scene/graph_node.js.map +1 -1
- package/dist/scene/mesh.js +4 -20
- package/dist/scene/mesh.js.map +1 -1
- package/dist/scene/particlesys.js +1 -1
- package/dist/scene/particlesys.js.map +1 -1
- package/dist/scene/scene_node.js +2 -2
- package/dist/scene/scene_node.js.map +1 -1
- package/dist/scene/script_attachment.js +15 -3
- package/dist/scene/script_attachment.js.map +1 -1
- package/dist/scene/terrain-cm/terrain-cm.js +3 -3
- package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
- package/dist/shadow/shadowmapper.js.map +1 -1
- package/dist/shapes/box.js +1 -1
- package/dist/shapes/box.js.map +1 -1
- package/dist/shapes/capsule.js +0 -3
- package/dist/shapes/capsule.js.map +1 -1
- package/dist/shapes/cylinder.js +0 -3
- package/dist/shapes/cylinder.js.map +1 -1
- package/dist/shapes/plane.js +0 -3
- package/dist/shapes/plane.js.map +1 -1
- package/dist/shapes/tetrahedron.js +3 -9
- package/dist/shapes/tetrahedron.js.map +1 -1
- package/dist/shapes/torus.js +4 -7
- package/dist/shapes/torus.js.map +1 -1
- package/dist/utility/blueprint/material/inputs.js +3 -3
- package/dist/utility/blueprint/material/inputs.js.map +1 -1
- package/dist/utility/blueprint/material/ir.js +493 -493
- package/dist/utility/blueprint/material/ir.js.map +1 -1
- package/dist/utility/serialization/manager.js +34 -3
- package/dist/utility/serialization/manager.js.map +1 -1
- package/dist/utility/serialization/scene/animation.js +45 -0
- package/dist/utility/serialization/scene/animation.js.map +1 -1
- package/dist/utility/serialization/scene/camera.js +53 -0
- package/dist/utility/serialization/scene/camera.js.map +1 -1
- package/dist/utility/serialization/scene/common.js +10 -0
- package/dist/utility/serialization/scene/common.js.map +1 -1
- package/dist/utility/serialization/scene/light.js +30 -0
- package/dist/utility/serialization/scene/light.js.map +1 -1
- package/dist/utility/serialization/scene/material.js +63 -0
- package/dist/utility/serialization/scene/material.js.map +1 -1
- package/dist/utility/serialization/scene/mesh.js +11 -0
- package/dist/utility/serialization/scene/mesh.js.map +1 -1
- package/dist/utility/serialization/scene/misc.js +2 -0
- package/dist/utility/serialization/scene/misc.js.map +1 -1
- package/dist/utility/serialization/scene/node.js +19 -0
- package/dist/utility/serialization/scene/node.js.map +1 -1
- package/dist/utility/serialization/scene/particle.js +22 -0
- package/dist/utility/serialization/scene/particle.js.map +1 -1
- package/dist/utility/serialization/scene/primitive.js +33 -0
- package/dist/utility/serialization/scene/primitive.js.map +1 -1
- package/dist/utility/serialization/scene/scene.js +39 -0
- package/dist/utility/serialization/scene/scene.js.map +1 -1
- package/dist/utility/serialization/scene/script.js +2 -0
- package/dist/utility/serialization/scene/script.js.map +1 -1
- package/dist/utility/serialization/scene/sprite.js +6 -0
- package/dist/utility/serialization/scene/sprite.js.map +1 -1
- package/dist/utility/serialization/scene/terrain.js +9 -0
- package/dist/utility/serialization/scene/terrain.js.map +1 -1
- package/dist/utility/serialization/scene/water.js +21 -0
- package/dist/utility/serialization/scene/water.js.map +1 -1
- package/dist/utility/serialization/types.js +5 -1
- package/dist/utility/serialization/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inputs.js","sources":["../../../../src/utility/blueprint/material/inputs.ts"],"sourcesContent":["import { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * Vertex color input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex color data from the mesh.\r\n * Vertex colors are stored as RGBA values (vec4) and can be used for:\r\n * - Hand-painted color variations\r\n * - Ambient occlusion baking\r\n * - Blend weights for texture mixing\r\n * - Custom data encoded in color channels\r\n *\r\n * Outputs:\r\n * - Output 1: Full RGBA color (vec4)\r\n * - Output 2: Red channel (float)\r\n * - Output 3: Green channel (float)\r\n * - Output 4: Blue channel (float)\r\n * - Output 5: Alpha channel (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const vertexColor = new VertexColorNode();\r\n *\r\n * // Use full color\r\n * baseColorNode.connectInput(1, vertexColor, 1);\r\n *\r\n * // Use individual channels\r\n * roughnessNode.connectInput(1, vertexColor, 2); // Red as roughness\r\n * metallicNode.connectInput(1, vertexColor, 3); // Green as metallic\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexColorNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex color node\r\n *\r\n * @remarks\r\n * Initializes with 5 output slots: full RGBA and individual R, G, B, A channels.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'r', swizzle: 'x' },\r\n { id: 3, name: 'g', swizzle: 'y' },\r\n { id: 4, name: 'b', swizzle: 'z' },\r\n { id: 5, name: 'a', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexColorNode,\r\n name: 'VertexColorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex color'\r\n */\r\n toString() {\r\n return 'vertex color';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex color nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual channel outputs (id \\> 1), 'vec4' for full color\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec4';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex UV coordinate input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex texture coordinates (UV coordinates) from the mesh.\r\n * UV coordinates map 3D mesh vertices to 2D texture space, typically in the range [0, 1].\r\n *\r\n * Used for:\r\n * - Texture sampling (most common use)\r\n * - Procedural pattern generation\r\n * - Gradient effects based on position in UV space\r\n * - Decal placement\r\n *\r\n * Outputs:\r\n * - Output 1: Full UV coordinates (vec2)\r\n * - Output 2: U coordinate (horizontal, float)\r\n * - Output 3: V coordinate (vertical, float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const uv = new VertexUVNode();\r\n *\r\n * // Sample texture using UV coordinates\r\n * textureSample.connectInput(1, uv, 1);\r\n *\r\n * // Use U coordinate for horizontal gradient\r\n * mixNode.connectInput(3, uv, 2);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexUVNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex UV node\r\n *\r\n * @remarks\r\n * Initializes with 3 output slots: full UV and individual U, V components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexUVNode,\r\n name: 'VertexUVNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex UV'\r\n */\r\n toString() {\r\n return 'vertex UV';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex UV nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec2' for full UV\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex world position input node\r\n *\r\n * @remarks\r\n * Provides access to the vertex position in world space coordinates.\r\n * World position is the absolute 3D location of the vertex in the scene,\r\n * after applying all model transformations but before view/projection.\r\n *\r\n * Used for:\r\n * - Distance-based effects (fog, fade)\r\n * - World-space texturing (triplanar mapping)\r\n * - Position-based color gradients\r\n * - Vertex animation based on world location\r\n * - Custom lighting calculations\r\n *\r\n * Outputs:\r\n * - Output 1: Full position (vec3)\r\n * - Output 2: X coordinate (float)\r\n * - Output 3: Y coordinate (float)\r\n * - Output 4: Z coordinate (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Calculate distance from origin\r\n * const origin = new ConstantVec3Node();\r\n * const distance = new DistanceNode();\r\n * distance.connectInput(1, worldPos, 1);\r\n * distance.connectInput(2, origin, 1);\r\n *\r\n * // Height-based color gradient\r\n * colorMix.connectInput(3, worldPos, 3); // Use Y (height)\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex position node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full position and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'world position'\r\n */\r\n toString() {\r\n return 'world position';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexPositionNode,\r\n name: 'VertexPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex position nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full position\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Pixel world position input node\r\n *\r\n * @remarks\r\n * Provides access to current pixel world-space position.\r\n *\r\n * Outputs:\r\n * - Output 1: Full position (vec3)\r\n * - Output 2: X coordinate (float)\r\n * - Output 3: Y coordinate (float)\r\n * - Output 4: Z coordinate (float)\r\n *\r\n * @public\r\n */\r\nexport class PixelWorldPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new pixel world position node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'pixel world position'\r\n */\r\n toString() {\r\n return 'pixel world position';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: PixelWorldPositionNode,\r\n name: 'PixelWorldPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id > 1), 'vec3' for full position\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex normal input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex normal vectors in world space.\r\n * Normals are unit vectors perpendicular to the surface, used extensively\r\n * in lighting calculations and surface orientation effects.\r\n *\r\n * Used for:\r\n * - Custom lighting calculations\r\n * - Fresnel effects (view-dependent shading)\r\n * - Rim lighting\r\n * - Normal-based masking\r\n * - Environment mapping\r\n *\r\n * Outputs:\r\n * - Output 1: Full normal vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const normal = new VertexNormalNode();\r\n * const viewDir = new ViewDirectionNode();\r\n *\r\n * // Calculate Fresnel effect\r\n * const dot = new DotProductNode();\r\n * dot.connectInput(1, normal, 1);\r\n * dot.connectInput(2, viewDir, 1);\r\n *\r\n * // Rim lighting using Y component\r\n * rimMask.connectInput(1, normal, 3);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexNormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex normal node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full normal and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex normal'\r\n */\r\n toString() {\r\n return 'vertex normal';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexNormalNode,\r\n name: 'VertexNormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex normal nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full normal\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Pixel normal input node\r\n *\r\n * @remarks\r\n * Provides access to the world-space surface normal used in fragment shading.\r\n *\r\n * Outputs:\r\n * - Output 1: Full normal vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @public\r\n */\r\nexport class PixelNormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new pixel normal node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full normal and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'pixel normal'\r\n */\r\n toString() {\r\n return 'pixel normal';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: PixelNormalNode,\r\n name: 'PixelNormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id > 1), 'vec3' for full normal\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex tangent input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex tangent vectors in world space.\r\n * Tangents are unit vectors parallel to the surface, aligned with the U texture coordinate direction.\r\n * Together with normals and binormals, they form the tangent-space basis (TBN matrix).\r\n *\r\n * Used for:\r\n * - Normal mapping (constructing TBN matrix)\r\n * - Anisotropic reflections (hair, brushed metal)\r\n * - Tangent-space calculations\r\n * - Flow map effects\r\n *\r\n * Outputs:\r\n * - Output 1: Full tangent vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const tangent = new VertexTangentNode();\r\n * const normal = new VertexNormalNode();\r\n * const binormal = new VertexBinormalNode();\r\n *\r\n * // Construct TBN matrix for normal mapping\r\n * const tbnMatrix = new MakeMatrixNode();\r\n * tbnMatrix.connectInput(1, tangent, 1);\r\n * tbnMatrix.connectInput(2, binormal, 1);\r\n * tbnMatrix.connectInput(3, normal, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexTangentNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex tangent node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full tangent and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex tangent'\r\n */\r\n toString() {\r\n return 'vertex tangent';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexTangentNode,\r\n name: 'VertexTangentNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex tangent nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full tangent\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex binormal (bitangent) input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex binormal (also called bitangent) vectors in world space.\r\n * Binormals are unit vectors perpendicular to both the normal and tangent,\r\n * aligned with the V texture coordinate direction.\r\n * Together with normals and tangents, they form the tangent-space basis (TBN matrix).\r\n *\r\n * The binormal is typically computed as: binormal = cross(normal, tangent) * handedness\r\n *\r\n * Used for:\r\n * - Normal mapping (constructing TBN matrix)\r\n * - Tangent-space calculations\r\n * - Surface flow effects\r\n * - Oriented texture mapping\r\n *\r\n * Outputs:\r\n * - Output 1: Full binormal vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const tangent = new VertexTangentNode();\r\n * const normal = new VertexNormalNode();\r\n * const binormal = new VertexBinormalNode();\r\n *\r\n * // Use for normal mapping transformation\r\n * const normalMap = new TextureSampleNode();\r\n * const tbnTransform = new TransformNode();\r\n * tbnTransform.connectInput(1, normalMap, 1);\r\n * tbnTransform.connectInput(2, tbnMatrixNode, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexBinormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex binormal node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full binormal and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex binormal'\r\n */\r\n toString() {\r\n return 'vertex binormal';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexBinormalNode,\r\n name: 'VertexBinormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex binormal nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full binormal\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the camera's projection matrix (view space to clip space transformation).\r\n * This matrix transforms coordinates from camera/view space to normalized device coordinates (NDC).\r\n *\r\n * For perspective projection: converts frustum to cube, applies perspective divide\r\n * For orthographic projection: applies parallel projection scaling\r\n *\r\n * Used for:\r\n * - Custom vertex transformations\r\n * - Screen-space effects\r\n * - Depth calculations\r\n * - Custom projection modifications\r\n *\r\n * Output:\r\n * - Output 1: 4x4 projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const projMatrix = new ProjectionMatrixNode();\r\n * const viewSpacePos = new ViewSpacePositionNode();\r\n *\r\n * // Transform to clip space\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, viewSpacePos, 1);\r\n * transform.connectInput(2, projMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ProjectionMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'ViewToClipMatrix'\r\n */\r\n toString() {\r\n return 'ViewToClipMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ProjectionMatrixNode,\r\n name: 'ProjectionMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * View matrix input node\r\n *\r\n * @remarks\r\n * Provides the camera's view matrix (world space to view space transformation).\r\n * This matrix transforms coordinates from world space to camera/view space,\r\n * where the camera is at the origin looking down the negative Z axis.\r\n *\r\n * The view matrix is the inverse of the camera's world transformation matrix.\r\n *\r\n * Used for:\r\n * - Custom lighting in view space\r\n * - View-space normal calculations\r\n * - Billboard effects\r\n * - Custom camera-relative transformations\r\n *\r\n * Output:\r\n * - Output 1: 4x4 view matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const viewMatrix = new ViewMatrixNode();\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Transform to view space\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, worldPos, 1);\r\n * transform.connectInput(2, viewMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ViewMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new view matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'WorldToViewMatrix'\r\n */\r\n toString() {\r\n return 'WorldToViewMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ViewMatrixNode,\r\n name: 'ViewMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * View-projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the combined view-projection matrix (world space to clip space transformation).\r\n * This is the product of the view matrix and projection matrix, commonly used for\r\n * transforming vertices from world space directly to clip space in one step.\r\n *\r\n * Equivalent to: projectionMatrix * viewMatrix\r\n *\r\n * Used for:\r\n * - Vertex position transformation (most common use)\r\n * - Custom vertex shaders\r\n * - Screen-space position calculations\r\n * - Shadow mapping\r\n *\r\n * Output:\r\n * - Output 1: 4x4 view-projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const viewProjMatrix = new ViewProjMatrixNode();\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Transform directly to clip space\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, worldPos, 1);\r\n * transform.connectInput(2, viewProjMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ViewProjMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new view-projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'WorldToClipMatrix'\r\n */\r\n toString() {\r\n return 'WorldToClipMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ViewProjMatrixNode,\r\n name: 'ViewProjMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * Inverse projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the inverse of the projection matrix (clip space to view space transformation).\r\n * This matrix transforms coordinates from normalized device coordinates (NDC) back to camera/view space.\r\n *\r\n * Used for:\r\n * - Screen-space to view-space reconstruction\r\n * - Depth buffer unprojection\r\n * - Deferred rendering position reconstruction\r\n * - Ray marching from screen space\r\n *\r\n * Output:\r\n * - Output 1: 4x4 inverse projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const invProjMatrix = new InvProjMatrixNode();\r\n * const clipPos = new ClipSpacePositionNode();\r\n *\r\n * // Reconstruct view space position\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, clipPos, 1);\r\n * transform.connectInput(2, invProjMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class InvProjMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new inverse projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'ClipToViewMatrix'\r\n */\r\n toString() {\r\n return 'ClipToViewMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: InvProjMatrixNode,\r\n name: 'InvProjMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * Inverse view-projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the inverse of the view-projection matrix (clip space to world space transformation).\r\n * This matrix transforms coordinates from normalized device coordinates (NDC) back to world space.\r\n *\r\n * Equivalent to: inverse(projectionMatrix * viewMatrix)\r\n *\r\n * Used for:\r\n * - Screen-space to world-space reconstruction\r\n * - Deferred rendering world position reconstruction\r\n * - Picking and ray casting from screen coordinates\r\n * - Screen-space effects needing world position\r\n *\r\n * Output:\r\n * - Output 1: 4x4 inverse view-projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const invViewProjMatrix = new InvViewProjMatrixNode();\r\n * const screenPos = new ScreenPositionNode();\r\n *\r\n * // Reconstruct world position from screen coordinates\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, screenPos, 1);\r\n * transform.connectInput(2, invViewProjMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class InvViewProjMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new inverse view-projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'ClipToWorldMatrix'\r\n */\r\n toString() {\r\n return 'ClipToWorldMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: InvViewProjMatrixNode,\r\n name: 'InvViewProjMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * Billboard matrix input node\r\n *\r\n * @public\r\n */\r\nexport class BillboardMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new billboard matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat3 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'BillboardMatrix'\r\n */\r\n toString() {\r\n return 'BillboardMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: BillboardMatrixNode,\r\n name: 'BillboardMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat3';\r\n }\r\n}\r\n\r\n/**\r\n * Elapsed time input node\r\n *\r\n * @remarks\r\n * Provides the total elapsed time since the application started, in seconds.\r\n * This value continuously increases and is useful for creating time-based animations\r\n * and effects directly in the material shader.\r\n *\r\n * Used for:\r\n * - Animated textures (scrolling, rotating)\r\n * - Pulsating effects\r\n * - Wave animations\r\n * - Oscillating values (using sin/cos)\r\n * - Time-based procedural patterns\r\n *\r\n * Output:\r\n * - Output 1: Elapsed time in seconds (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const time = new ElapsedTimeNode();\r\n * const speed = new ConstantScalarNode();\r\n * speed.x = 0.5;\r\n *\r\n * // Animate UV scrolling\r\n * const mul = new CompMulNode();\r\n * mul.connectInput(1, time, 1);\r\n * mul.connectInput(2, speed, 1);\r\n *\r\n * const add = new CompAddNode();\r\n * add.connectInput(1, uvNode, 1);\r\n * add.connectInput(2, mul, 1);\r\n *\r\n * // Pulsating effect with sine wave\r\n * const sin = new SinNode();\r\n * sin.connectInput(1, time, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ElapsedTimeNode extends BaseGraphNode {\r\n /**\r\n * Creates a new elapsed time node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the time value.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Elapsed time'\r\n */\r\n toString() {\r\n return 'Elapsed time';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ElapsedTimeNode,\r\n name: 'ElapsedTimeNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Time nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'float'\r\n */\r\n protected getType() {\r\n return 'float';\r\n }\r\n}\r\n\r\n/**\r\n * Camera position input node\r\n *\r\n * @remarks\r\n * Provides the world-space position of the camera/viewer.\r\n * This is the location of the camera in the 3D scene coordinate system.\r\n *\r\n * Used for:\r\n * - View direction calculations\r\n * - Distance-based effects (distance fog, LOD)\r\n * - Reflections and refractions\r\n * - Fresnel effects\r\n * - Environment mapping\r\n * - Specular highlights\r\n *\r\n * Outputs:\r\n * - Output 1: Full camera position (vec3)\r\n * - Output 2: X coordinate (float)\r\n * - Output 3: Y coordinate (float)\r\n * - Output 4: Z coordinate (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const cameraPos = new CameraPositionNode();\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Calculate view direction\r\n * const viewDir = new CompSubNode();\r\n * viewDir.connectInput(1, cameraPos, 1);\r\n * viewDir.connectInput(2, worldPos, 1);\r\n *\r\n * const normalizedViewDir = new NormalizeNode();\r\n * normalizedViewDir.connectInput(1, viewDir, 1);\r\n *\r\n * // Calculate distance to camera\r\n * const distance = new DistanceNode();\r\n * distance.connectInput(1, cameraPos, 1);\r\n * distance.connectInput(2, worldPos, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class CameraPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new camera position node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full position and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'camera position'\r\n */\r\n toString() {\r\n return 'camera position';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CameraPositionNode,\r\n name: 'CameraPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Camera position nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full position\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Camera vector input node\r\n *\r\n * @remarks\r\n * Provides the world-space direction from current surface point to camera.\r\n *\r\n * Outputs:\r\n * - Output 1: Full vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @public\r\n */\r\nexport class CameraVectorNode extends BaseGraphNode {\r\n /**\r\n * Creates a new camera vector node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full vector and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'camera vector'\r\n */\r\n toString() {\r\n return 'camera vector';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CameraVectorNode,\r\n name: 'CameraVectorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id > 1), 'vec3' for full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Sky environment texture input node\r\n *\r\n * @remarks\r\n * Provides access to the scene's sky/environment cubemap texture.\r\n * This is typically used for skybox rendering, environment reflections,\r\n * and image-based lighting (IBL).\r\n *\r\n * The texture is a cubemap (texCube) that can be sampled using a 3D direction vector.\r\n *\r\n * Used for:\r\n * - Skybox rendering\r\n * - Environment reflections on metallic surfaces\r\n * - Image-based lighting (IBL)\r\n * - Ambient lighting from environment\r\n * - Reflections and refractions\r\n *\r\n * Output:\r\n * - Output 1: Cubemap texture sampler (texCube)\r\n *\r\n * @example\r\n * ```typescript\r\n * const skyTexture = new SkyEnvTextureNode();\r\n * const reflectionDir = new ReflectNode();\r\n *\r\n * // Sample environment for reflection\r\n * const envSample = new TextureSampleCubeNode();\r\n * envSample.connectInput(1, skyTexture, 1);\r\n * envSample.connectInput(2, reflectionDir, 1);\r\n *\r\n * // Use for metallic reflections\r\n * metalColor.connectInput(1, envSample, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class SkyEnvTextureNode extends BaseGraphNode {\r\n /**\r\n * Creates a new sky environment texture node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the cubemap sampler.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'SkyEnvTexture'\r\n */\r\n toString() {\r\n return 'SkyEnvTexture';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: SkyEnvTextureNode,\r\n name: 'SkyEnvTextureNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Sky environment texture nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'texCube' (cubemap texture sampler)\r\n */\r\n protected getType() {\r\n return 'texCube';\r\n }\r\n}\r\n\r\n/**\r\n * Camera near/far plane input node\r\n *\r\n * @remarks\r\n * Provides the camera's near and far clipping plane distances.\r\n * These values define the camera's visible depth range:\r\n * - Near plane: The closest distance at which objects are rendered\r\n * - Far plane: The farthest distance at which objects are rendered\r\n *\r\n * Used for:\r\n * - Depth linearization (converting from NDC depth to linear depth)\r\n * - Fog calculations based on depth\r\n * - Custom depth-of-field effects\r\n * - Z-buffer precision calculations\r\n * - Distance-based effects\r\n *\r\n * Outputs:\r\n * - Output 1: Both values as vec2 (x = near, y = far)\r\n * - Output 2: Near plane distance (float)\r\n * - Output 3: Far plane distance (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const nearFar = new CameraNearFarNode();\r\n * const depth = new DepthNode();\r\n *\r\n * // Linearize depth buffer value\r\n * // linearDepth = (2.0 * near) / (far + near - depth * (far - near))\r\n * const farMinusNear = new CompSubNode();\r\n * farMinusNear.connectInput(1, nearFar, 3); // far\r\n * farMinusNear.connectInput(2, nearFar, 2); // near\r\n *\r\n * // Use for distance fog\r\n * const fogFactor = new SaturateNode();\r\n * fogFactor.connectInput(1, linearDepthCalc, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class CameraNearFarNode extends BaseGraphNode {\r\n /**\r\n * Creates a new camera near/far node\r\n *\r\n * @remarks\r\n * Initializes with 3 output slots: combined vec2 and individual near/far values.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'near', swizzle: 'x' },\r\n { id: 3, name: 'far', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'camera near far'\r\n */\r\n toString() {\r\n return 'camera near far';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CameraNearFarNode,\r\n name: 'CameraNearFarNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Camera near/far nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec2' for combined output\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex position resolver node\r\n *\r\n * @remarks\r\n * Provides the resolved vertex position in object space (After applying skinning and morphing)\r\n *\r\n * @public\r\n */\r\nexport class ResolveVertexPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex position resolver node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex position resolved'\r\n */\r\n toString() {\r\n return 'vertex position resolved';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ResolveVertexPositionNode,\r\n name: 'ResolveVertexPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex position resolver nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @returns vec3\r\n */\r\n protected getType() {\r\n return 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex normal resolver node\r\n *\r\n * @remarks\r\n * Provides the resolved vertex normal in object space (After applying skinning and morphing)\r\n *\r\n * @public\r\n */\r\nexport class ResolveVertexNormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex normal resolver node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex normal resolved'\r\n */\r\n toString() {\r\n return 'vertex normal resolved';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ResolveVertexNormalNode,\r\n name: 'ResolveVertexNormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex normal resolve node are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @returns vec3\r\n */\r\n protected getType() {\r\n return 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex tangent resolver node\r\n *\r\n * @remarks\r\n * Provides the resolved vertex tangent in object space (After applying skinning and morphing)\r\n *\r\n * @public\r\n */\r\nexport class ResolveVertexTangentNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex tangent resolver node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex tangent resolved'\r\n */\r\n toString() {\r\n return 'vertex tangent resolved';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ResolveVertexTangentNode,\r\n name: 'ResolveVertexTangentNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex tangent resolve node are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @returns vec4\r\n */\r\n protected getType() {\r\n return 'vec4';\r\n }\r\n}\r\n"],"names":["VertexColorNode","BaseGraphNode","_outputs","id","name","swizzle","getSerializationCls","ctor","getProps","toString","getType","VertexUVNode","VertexPositionNode","PixelWorldPositionNode","VertexNormalNode","PixelNormalNode","VertexTangentNode","VertexBinormalNode","ProjectionMatrixNode","ViewMatrixNode","ViewProjMatrixNode","InvProjMatrixNode","InvViewProjMatrixNode","BillboardMatrixNode","ElapsedTimeNode","CameraPositionNode","CameraVectorNode","SkyEnvTextureNode","CameraNearFarNode","ResolveVertexPositionNode","ResolveVertexNormalNode","ResolveVertexTangentNode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"inputs.js","sources":["../../../../src/utility/blueprint/material/inputs.ts"],"sourcesContent":["import { BaseGraphNode } from '../node';\r\n\r\n/**\r\n * Vertex color input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex color data from the mesh.\r\n * Vertex colors are stored as RGBA values (vec4) and can be used for:\r\n * - Hand-painted color variations\r\n * - Ambient occlusion baking\r\n * - Blend weights for texture mixing\r\n * - Custom data encoded in color channels\r\n *\r\n * Outputs:\r\n * - Output 1: Full RGBA color (vec4)\r\n * - Output 2: Red channel (float)\r\n * - Output 3: Green channel (float)\r\n * - Output 4: Blue channel (float)\r\n * - Output 5: Alpha channel (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const vertexColor = new VertexColorNode();\r\n *\r\n * // Use full color\r\n * baseColorNode.connectInput(1, vertexColor, 1);\r\n *\r\n * // Use individual channels\r\n * roughnessNode.connectInput(1, vertexColor, 2); // Red as roughness\r\n * metallicNode.connectInput(1, vertexColor, 3); // Green as metallic\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexColorNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex color node\r\n *\r\n * @remarks\r\n * Initializes with 5 output slots: full RGBA and individual R, G, B, A channels.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'r', swizzle: 'x' },\r\n { id: 3, name: 'g', swizzle: 'y' },\r\n { id: 4, name: 'b', swizzle: 'z' },\r\n { id: 5, name: 'a', swizzle: 'w' }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexColorNode,\r\n name: 'VertexColorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex color'\r\n */\r\n toString() {\r\n return 'vertex color';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex color nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual channel outputs (id \\> 1), 'vec4' for full color\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec4';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex UV coordinate input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex texture coordinates (UV coordinates) from the mesh.\r\n * UV coordinates map 3D mesh vertices to 2D texture space, typically in the range [0, 1].\r\n *\r\n * Used for:\r\n * - Texture sampling (most common use)\r\n * - Procedural pattern generation\r\n * - Gradient effects based on position in UV space\r\n * - Decal placement\r\n *\r\n * Outputs:\r\n * - Output 1: Full UV coordinates (vec2)\r\n * - Output 2: U coordinate (horizontal, float)\r\n * - Output 3: V coordinate (vertical, float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const uv = new VertexUVNode();\r\n *\r\n * // Sample texture using UV coordinates\r\n * textureSample.connectInput(1, uv, 1);\r\n *\r\n * // Use U coordinate for horizontal gradient\r\n * mixNode.connectInput(3, uv, 2);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexUVNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex UV node\r\n *\r\n * @remarks\r\n * Initializes with 3 output slots: full UV and individual U, V components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexUVNode,\r\n name: 'VertexUVNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex UV'\r\n */\r\n toString() {\r\n return 'vertex UV';\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex UV nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec2' for full UV\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex world position input node\r\n *\r\n * @remarks\r\n * Provides access to the vertex position in world space coordinates.\r\n * World position is the absolute 3D location of the vertex in the scene,\r\n * after applying all model transformations but before view/projection.\r\n *\r\n * Used for:\r\n * - Distance-based effects (fog, fade)\r\n * - World-space texturing (triplanar mapping)\r\n * - Position-based color gradients\r\n * - Vertex animation based on world location\r\n * - Custom lighting calculations\r\n *\r\n * Outputs:\r\n * - Output 1: Full position (vec3)\r\n * - Output 2: X coordinate (float)\r\n * - Output 3: Y coordinate (float)\r\n * - Output 4: Z coordinate (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Calculate distance from origin\r\n * const origin = new ConstantVec3Node();\r\n * const distance = new DistanceNode();\r\n * distance.connectInput(1, worldPos, 1);\r\n * distance.connectInput(2, origin, 1);\r\n *\r\n * // Height-based color gradient\r\n * colorMix.connectInput(3, worldPos, 3); // Use Y (height)\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex position node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full position and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'world position'\r\n */\r\n toString() {\r\n return 'world position';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexPositionNode,\r\n name: 'VertexPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex position nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full position\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Pixel world position input node\r\n *\r\n * @remarks\r\n * Provides access to current pixel world-space position.\r\n *\r\n * Outputs:\r\n * - Output 1: Full position (vec3)\r\n * - Output 2: X coordinate (float)\r\n * - Output 3: Y coordinate (float)\r\n * - Output 4: Z coordinate (float)\r\n *\r\n * @public\r\n */\r\nexport class PixelWorldPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new pixel world position node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'pixel world position'\r\n */\r\n toString() {\r\n return 'pixel world position';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: PixelWorldPositionNode,\r\n name: 'PixelWorldPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full position\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex normal input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex normal vectors in world space.\r\n * Normals are unit vectors perpendicular to the surface, used extensively\r\n * in lighting calculations and surface orientation effects.\r\n *\r\n * Used for:\r\n * - Custom lighting calculations\r\n * - Fresnel effects (view-dependent shading)\r\n * - Rim lighting\r\n * - Normal-based masking\r\n * - Environment mapping\r\n *\r\n * Outputs:\r\n * - Output 1: Full normal vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const normal = new VertexNormalNode();\r\n * const viewDir = new ViewDirectionNode();\r\n *\r\n * // Calculate Fresnel effect\r\n * const dot = new DotProductNode();\r\n * dot.connectInput(1, normal, 1);\r\n * dot.connectInput(2, viewDir, 1);\r\n *\r\n * // Rim lighting using Y component\r\n * rimMask.connectInput(1, normal, 3);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexNormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex normal node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full normal and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex normal'\r\n */\r\n toString() {\r\n return 'vertex normal';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexNormalNode,\r\n name: 'VertexNormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex normal nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full normal\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Pixel normal input node\r\n *\r\n * @remarks\r\n * Provides access to the world-space surface normal used in fragment shading.\r\n *\r\n * Outputs:\r\n * - Output 1: Full normal vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @public\r\n */\r\nexport class PixelNormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new pixel normal node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full normal and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'pixel normal'\r\n */\r\n toString() {\r\n return 'pixel normal';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: PixelNormalNode,\r\n name: 'PixelNormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full normal\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex tangent input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex tangent vectors in world space.\r\n * Tangents are unit vectors parallel to the surface, aligned with the U texture coordinate direction.\r\n * Together with normals and binormals, they form the tangent-space basis (TBN matrix).\r\n *\r\n * Used for:\r\n * - Normal mapping (constructing TBN matrix)\r\n * - Anisotropic reflections (hair, brushed metal)\r\n * - Tangent-space calculations\r\n * - Flow map effects\r\n *\r\n * Outputs:\r\n * - Output 1: Full tangent vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const tangent = new VertexTangentNode();\r\n * const normal = new VertexNormalNode();\r\n * const binormal = new VertexBinormalNode();\r\n *\r\n * // Construct TBN matrix for normal mapping\r\n * const tbnMatrix = new MakeMatrixNode();\r\n * tbnMatrix.connectInput(1, tangent, 1);\r\n * tbnMatrix.connectInput(2, binormal, 1);\r\n * tbnMatrix.connectInput(3, normal, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexTangentNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex tangent node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full tangent and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex tangent'\r\n */\r\n toString() {\r\n return 'vertex tangent';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexTangentNode,\r\n name: 'VertexTangentNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex tangent nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full tangent\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex binormal (bitangent) input node\r\n *\r\n * @remarks\r\n * Provides access to per-vertex binormal (also called bitangent) vectors in world space.\r\n * Binormals are unit vectors perpendicular to both the normal and tangent,\r\n * aligned with the V texture coordinate direction.\r\n * Together with normals and tangents, they form the tangent-space basis (TBN matrix).\r\n *\r\n * The binormal is typically computed as: binormal = cross(normal, tangent) * handedness\r\n *\r\n * Used for:\r\n * - Normal mapping (constructing TBN matrix)\r\n * - Tangent-space calculations\r\n * - Surface flow effects\r\n * - Oriented texture mapping\r\n *\r\n * Outputs:\r\n * - Output 1: Full binormal vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const tangent = new VertexTangentNode();\r\n * const normal = new VertexNormalNode();\r\n * const binormal = new VertexBinormalNode();\r\n *\r\n * // Use for normal mapping transformation\r\n * const normalMap = new TextureSampleNode();\r\n * const tbnTransform = new TransformNode();\r\n * tbnTransform.connectInput(1, normalMap, 1);\r\n * tbnTransform.connectInput(2, tbnMatrixNode, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class VertexBinormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex binormal node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full binormal and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex binormal'\r\n */\r\n toString() {\r\n return 'vertex binormal';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: VertexBinormalNode,\r\n name: 'VertexBinormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex binormal nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full binormal\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the camera's projection matrix (view space to clip space transformation).\r\n * This matrix transforms coordinates from camera/view space to normalized device coordinates (NDC).\r\n *\r\n * For perspective projection: converts frustum to cube, applies perspective divide\r\n * For orthographic projection: applies parallel projection scaling\r\n *\r\n * Used for:\r\n * - Custom vertex transformations\r\n * - Screen-space effects\r\n * - Depth calculations\r\n * - Custom projection modifications\r\n *\r\n * Output:\r\n * - Output 1: 4x4 projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const projMatrix = new ProjectionMatrixNode();\r\n * const viewSpacePos = new ViewSpacePositionNode();\r\n *\r\n * // Transform to clip space\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, viewSpacePos, 1);\r\n * transform.connectInput(2, projMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ProjectionMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'ViewToClipMatrix'\r\n */\r\n toString() {\r\n return 'ViewToClipMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ProjectionMatrixNode,\r\n name: 'ProjectionMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * View matrix input node\r\n *\r\n * @remarks\r\n * Provides the camera's view matrix (world space to view space transformation).\r\n * This matrix transforms coordinates from world space to camera/view space,\r\n * where the camera is at the origin looking down the negative Z axis.\r\n *\r\n * The view matrix is the inverse of the camera's world transformation matrix.\r\n *\r\n * Used for:\r\n * - Custom lighting in view space\r\n * - View-space normal calculations\r\n * - Billboard effects\r\n * - Custom camera-relative transformations\r\n *\r\n * Output:\r\n * - Output 1: 4x4 view matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const viewMatrix = new ViewMatrixNode();\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Transform to view space\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, worldPos, 1);\r\n * transform.connectInput(2, viewMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ViewMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new view matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'WorldToViewMatrix'\r\n */\r\n toString() {\r\n return 'WorldToViewMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ViewMatrixNode,\r\n name: 'ViewMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * View-projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the combined view-projection matrix (world space to clip space transformation).\r\n * This is the product of the view matrix and projection matrix, commonly used for\r\n * transforming vertices from world space directly to clip space in one step.\r\n *\r\n * Equivalent to: projectionMatrix * viewMatrix\r\n *\r\n * Used for:\r\n * - Vertex position transformation (most common use)\r\n * - Custom vertex shaders\r\n * - Screen-space position calculations\r\n * - Shadow mapping\r\n *\r\n * Output:\r\n * - Output 1: 4x4 view-projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const viewProjMatrix = new ViewProjMatrixNode();\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Transform directly to clip space\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, worldPos, 1);\r\n * transform.connectInput(2, viewProjMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ViewProjMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new view-projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'WorldToClipMatrix'\r\n */\r\n toString() {\r\n return 'WorldToClipMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ViewProjMatrixNode,\r\n name: 'ViewProjMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * Inverse projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the inverse of the projection matrix (clip space to view space transformation).\r\n * This matrix transforms coordinates from normalized device coordinates (NDC) back to camera/view space.\r\n *\r\n * Used for:\r\n * - Screen-space to view-space reconstruction\r\n * - Depth buffer unprojection\r\n * - Deferred rendering position reconstruction\r\n * - Ray marching from screen space\r\n *\r\n * Output:\r\n * - Output 1: 4x4 inverse projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const invProjMatrix = new InvProjMatrixNode();\r\n * const clipPos = new ClipSpacePositionNode();\r\n *\r\n * // Reconstruct view space position\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, clipPos, 1);\r\n * transform.connectInput(2, invProjMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class InvProjMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new inverse projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'ClipToViewMatrix'\r\n */\r\n toString() {\r\n return 'ClipToViewMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: InvProjMatrixNode,\r\n name: 'InvProjMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * Inverse view-projection matrix input node\r\n *\r\n * @remarks\r\n * Provides the inverse of the view-projection matrix (clip space to world space transformation).\r\n * This matrix transforms coordinates from normalized device coordinates (NDC) back to world space.\r\n *\r\n * Equivalent to: inverse(projectionMatrix * viewMatrix)\r\n *\r\n * Used for:\r\n * - Screen-space to world-space reconstruction\r\n * - Deferred rendering world position reconstruction\r\n * - Picking and ray casting from screen coordinates\r\n * - Screen-space effects needing world position\r\n *\r\n * Output:\r\n * - Output 1: 4x4 inverse view-projection matrix (mat4)\r\n *\r\n * @example\r\n * ```typescript\r\n * const invViewProjMatrix = new InvViewProjMatrixNode();\r\n * const screenPos = new ScreenPositionNode();\r\n *\r\n * // Reconstruct world position from screen coordinates\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, screenPos, 1);\r\n * transform.connectInput(2, invViewProjMatrix, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class InvViewProjMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new inverse view-projection matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat4 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'ClipToWorldMatrix'\r\n */\r\n toString() {\r\n return 'ClipToWorldMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: InvViewProjMatrixNode,\r\n name: 'InvViewProjMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat4';\r\n }\r\n}\r\n\r\n/**\r\n * Billboard matrix input node\r\n *\r\n * @public\r\n */\r\nexport class BillboardMatrixNode extends BaseGraphNode {\r\n /**\r\n * Creates a new billboard matrix node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the mat3 matrix.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'BillboardMatrix'\r\n */\r\n toString() {\r\n return 'BillboardMatrix';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: BillboardMatrixNode,\r\n name: 'BillboardMatrixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Matrix nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'mat4'\r\n */\r\n protected getType() {\r\n return 'mat3';\r\n }\r\n}\r\n\r\n/**\r\n * Elapsed time input node\r\n *\r\n * @remarks\r\n * Provides the total elapsed time since the application started, in seconds.\r\n * This value continuously increases and is useful for creating time-based animations\r\n * and effects directly in the material shader.\r\n *\r\n * Used for:\r\n * - Animated textures (scrolling, rotating)\r\n * - Pulsating effects\r\n * - Wave animations\r\n * - Oscillating values (using sin/cos)\r\n * - Time-based procedural patterns\r\n *\r\n * Output:\r\n * - Output 1: Elapsed time in seconds (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const time = new ElapsedTimeNode();\r\n * const speed = new ConstantScalarNode();\r\n * speed.x = 0.5;\r\n *\r\n * // Animate UV scrolling\r\n * const mul = new CompMulNode();\r\n * mul.connectInput(1, time, 1);\r\n * mul.connectInput(2, speed, 1);\r\n *\r\n * const add = new CompAddNode();\r\n * add.connectInput(1, uvNode, 1);\r\n * add.connectInput(2, mul, 1);\r\n *\r\n * // Pulsating effect with sine wave\r\n * const sin = new SinNode();\r\n * sin.connectInput(1, time, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class ElapsedTimeNode extends BaseGraphNode {\r\n /**\r\n * Creates a new elapsed time node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the time value.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Elapsed time'\r\n */\r\n toString() {\r\n return 'Elapsed time';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ElapsedTimeNode,\r\n name: 'ElapsedTimeNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Time nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'float'\r\n */\r\n protected getType() {\r\n return 'float';\r\n }\r\n}\r\n\r\n/**\r\n * Camera position input node\r\n *\r\n * @remarks\r\n * Provides the world-space position of the camera/viewer.\r\n * This is the location of the camera in the 3D scene coordinate system.\r\n *\r\n * Used for:\r\n * - View direction calculations\r\n * - Distance-based effects (distance fog, LOD)\r\n * - Reflections and refractions\r\n * - Fresnel effects\r\n * - Environment mapping\r\n * - Specular highlights\r\n *\r\n * Outputs:\r\n * - Output 1: Full camera position (vec3)\r\n * - Output 2: X coordinate (float)\r\n * - Output 3: Y coordinate (float)\r\n * - Output 4: Z coordinate (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const cameraPos = new CameraPositionNode();\r\n * const worldPos = new VertexPositionNode();\r\n *\r\n * // Calculate view direction\r\n * const viewDir = new CompSubNode();\r\n * viewDir.connectInput(1, cameraPos, 1);\r\n * viewDir.connectInput(2, worldPos, 1);\r\n *\r\n * const normalizedViewDir = new NormalizeNode();\r\n * normalizedViewDir.connectInput(1, viewDir, 1);\r\n *\r\n * // Calculate distance to camera\r\n * const distance = new DistanceNode();\r\n * distance.connectInput(1, cameraPos, 1);\r\n * distance.connectInput(2, worldPos, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class CameraPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new camera position node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full position and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'camera position'\r\n */\r\n toString() {\r\n return 'camera position';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CameraPositionNode,\r\n name: 'CameraPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Camera position nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full position\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Camera vector input node\r\n *\r\n * @remarks\r\n * Provides the world-space direction from current surface point to camera.\r\n *\r\n * Outputs:\r\n * - Output 1: Full vector (vec3, normalized)\r\n * - Output 2: X component (float)\r\n * - Output 3: Y component (float)\r\n * - Output 4: Z component (float)\r\n *\r\n * @public\r\n */\r\nexport class CameraVectorNode extends BaseGraphNode {\r\n /**\r\n * Creates a new camera vector node\r\n *\r\n * @remarks\r\n * Initializes with 4 output slots: full vector and individual X, Y, Z components.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'x', swizzle: 'x' },\r\n { id: 3, name: 'y', swizzle: 'y' },\r\n { id: 4, name: 'z', swizzle: 'z' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'camera vector'\r\n */\r\n toString() {\r\n return 'camera vector';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CameraVectorNode,\r\n name: 'CameraVectorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec3' for full vector\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Sky environment texture input node\r\n *\r\n * @remarks\r\n * Provides access to the scene's sky/environment cubemap texture.\r\n * This is typically used for skybox rendering, environment reflections,\r\n * and image-based lighting (IBL).\r\n *\r\n * The texture is a cubemap (texCube) that can be sampled using a 3D direction vector.\r\n *\r\n * Used for:\r\n * - Skybox rendering\r\n * - Environment reflections on metallic surfaces\r\n * - Image-based lighting (IBL)\r\n * - Ambient lighting from environment\r\n * - Reflections and refractions\r\n *\r\n * Output:\r\n * - Output 1: Cubemap texture sampler (texCube)\r\n *\r\n * @example\r\n * ```typescript\r\n * const skyTexture = new SkyEnvTextureNode();\r\n * const reflectionDir = new ReflectNode();\r\n *\r\n * // Sample environment for reflection\r\n * const envSample = new TextureSampleCubeNode();\r\n * envSample.connectInput(1, skyTexture, 1);\r\n * envSample.connectInput(2, reflectionDir, 1);\r\n *\r\n * // Use for metallic reflections\r\n * metalColor.connectInput(1, envSample, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class SkyEnvTextureNode extends BaseGraphNode {\r\n /**\r\n * Creates a new sky environment texture node\r\n *\r\n * @remarks\r\n * Initializes with one output slot for the cubemap sampler.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'SkyEnvTexture'\r\n */\r\n toString() {\r\n return 'SkyEnvTexture';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: SkyEnvTextureNode,\r\n name: 'SkyEnvTextureNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Sky environment texture nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type\r\n *\r\n * @returns 'texCube' (cubemap texture sampler)\r\n */\r\n protected getType() {\r\n return 'texCube';\r\n }\r\n}\r\n\r\n/**\r\n * Camera near/far plane input node\r\n *\r\n * @remarks\r\n * Provides the camera's near and far clipping plane distances.\r\n * These values define the camera's visible depth range:\r\n * - Near plane: The closest distance at which objects are rendered\r\n * - Far plane: The farthest distance at which objects are rendered\r\n *\r\n * Used for:\r\n * - Depth linearization (converting from NDC depth to linear depth)\r\n * - Fog calculations based on depth\r\n * - Custom depth-of-field effects\r\n * - Z-buffer precision calculations\r\n * - Distance-based effects\r\n *\r\n * Outputs:\r\n * - Output 1: Both values as vec2 (x = near, y = far)\r\n * - Output 2: Near plane distance (float)\r\n * - Output 3: Far plane distance (float)\r\n *\r\n * @example\r\n * ```typescript\r\n * const nearFar = new CameraNearFarNode();\r\n * const depth = new DepthNode();\r\n *\r\n * // Linearize depth buffer value\r\n * // linearDepth = (2.0 * near) / (far + near - depth * (far - near))\r\n * const farMinusNear = new CompSubNode();\r\n * farMinusNear.connectInput(1, nearFar, 3); // far\r\n * farMinusNear.connectInput(2, nearFar, 2); // near\r\n *\r\n * // Use for distance fog\r\n * const fogFactor = new SaturateNode();\r\n * fogFactor.connectInput(1, linearDepthCalc, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class CameraNearFarNode extends BaseGraphNode {\r\n /**\r\n * Creates a new camera near/far node\r\n *\r\n * @remarks\r\n * Initializes with 3 output slots: combined vec2 and individual near/far values.\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [\r\n { id: 1, name: '' },\r\n { id: 2, name: 'near', swizzle: 'x' },\r\n { id: 3, name: 'far', swizzle: 'y' }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'camera near far'\r\n */\r\n toString() {\r\n return 'camera near far';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CameraNearFarNode,\r\n name: 'CameraNearFarNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Camera near/far nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @param id - The output slot ID\r\n * @returns 'float' for individual component outputs (id \\> 1), 'vec2' for combined output\r\n */\r\n protected getType(id: number) {\r\n return id > 1 ? 'float' : 'vec2';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex position resolver node\r\n *\r\n * @remarks\r\n * Provides the resolved vertex position in object space (After applying skinning and morphing)\r\n *\r\n * @public\r\n */\r\nexport class ResolveVertexPositionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex position resolver node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex position resolved'\r\n */\r\n toString() {\r\n return 'vertex position resolved';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ResolveVertexPositionNode,\r\n name: 'ResolveVertexPositionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex position resolver nodes are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @returns vec3\r\n */\r\n protected getType() {\r\n return 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex normal resolver node\r\n *\r\n * @remarks\r\n * Provides the resolved vertex normal in object space (After applying skinning and morphing)\r\n *\r\n * @public\r\n */\r\nexport class ResolveVertexNormalNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex normal resolver node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex normal resolved'\r\n */\r\n toString() {\r\n return 'vertex normal resolved';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ResolveVertexNormalNode,\r\n name: 'ResolveVertexNormalNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex normal resolve node are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @returns vec3\r\n */\r\n protected getType() {\r\n return 'vec3';\r\n }\r\n}\r\n\r\n/**\r\n * Vertex tangent resolver node\r\n *\r\n * @remarks\r\n * Provides the resolved vertex tangent in object space (After applying skinning and morphing)\r\n *\r\n * @public\r\n */\r\nexport class ResolveVertexTangentNode extends BaseGraphNode {\r\n /**\r\n * Creates a new vertex tangent resolver node\r\n */\r\n constructor() {\r\n super();\r\n this._outputs = [{ id: 1, name: '' }];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'vertex tangent resolved'\r\n */\r\n toString() {\r\n return 'vertex tangent resolved';\r\n }\r\n /**\r\n * Gets the serialization descriptor for this node type\r\n *\r\n * @returns Serialization class descriptor\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: ResolveVertexTangentNode,\r\n name: 'ResolveVertexTangentNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state\r\n *\r\n * @returns Empty string (always valid)\r\n *\r\n * @remarks\r\n * Vertex tangent resolve node are always valid as they have no inputs.\r\n */\r\n protected validate() {\r\n return '';\r\n }\r\n /**\r\n * Gets the output type for a specific output slot\r\n *\r\n * @returns vec4\r\n */\r\n protected getType() {\r\n return 'vec4';\r\n }\r\n}\r\n"],"names":["VertexColorNode","BaseGraphNode","_outputs","id","name","swizzle","getSerializationCls","ctor","getProps","toString","getType","VertexUVNode","VertexPositionNode","PixelWorldPositionNode","VertexNormalNode","PixelNormalNode","VertexTangentNode","VertexBinormalNode","ProjectionMatrixNode","ViewMatrixNode","ViewProjMatrixNode","InvProjMatrixNode","InvViewProjMatrixNode","BillboardMatrixNode","ElapsedTimeNode","CameraPositionNode","CameraVectorNode","SkyEnvTextureNode","CameraNearFarNode","ResolveVertexPositionNode","ResolveVertexNormalNode","ResolveVertexTangentNode"],"mappings":"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"}
|