@zephyr3d/scene 0.8.2 → 0.9.0

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.
Files changed (241) hide show
  1. package/dist/animation/animationset.js +473 -60
  2. package/dist/animation/animationset.js.map +1 -1
  3. package/dist/animation/cloth/gpu_cloth_system.js +2516 -0
  4. package/dist/animation/cloth/gpu_cloth_system.js.map +1 -0
  5. package/dist/animation/fixed_geometry_cache_track.js +138 -0
  6. package/dist/animation/fixed_geometry_cache_track.js.map +1 -0
  7. package/dist/animation/geometry_cache_utils.js +120 -0
  8. package/dist/animation/geometry_cache_utils.js.map +1 -0
  9. package/dist/animation/ik_modifier.js +9 -1
  10. package/dist/animation/ik_modifier.js.map +1 -1
  11. package/dist/animation/joint_dynamics/collision.js +469 -0
  12. package/dist/animation/joint_dynamics/collision.js.map +1 -0
  13. package/dist/animation/joint_dynamics/constraints.js +329 -0
  14. package/dist/animation/joint_dynamics/constraints.js.map +1 -0
  15. package/dist/animation/joint_dynamics/controller.js +699 -0
  16. package/dist/animation/joint_dynamics/controller.js.map +1 -0
  17. package/dist/animation/joint_dynamics/joint_dynamics_system.js +393 -0
  18. package/dist/animation/joint_dynamics/joint_dynamics_system.js.map +1 -0
  19. package/dist/animation/joint_dynamics/solver.js +794 -0
  20. package/dist/animation/joint_dynamics/solver.js.map +1 -0
  21. package/dist/animation/joint_dynamics/types.js +19 -0
  22. package/dist/animation/joint_dynamics/types.js.map +1 -0
  23. package/dist/animation/joint_dynamics/vrm_spring_bone.js +46 -0
  24. package/dist/animation/joint_dynamics/vrm_spring_bone.js.map +1 -0
  25. package/dist/animation/joint_dynamics_modifier.js +51 -0
  26. package/dist/animation/joint_dynamics_modifier.js.map +1 -0
  27. package/dist/animation/pca_geometry_cache_track.js +222 -0
  28. package/dist/animation/pca_geometry_cache_track.js.map +1 -0
  29. package/dist/animation/skeleton.js +2011 -139
  30. package/dist/animation/skeleton.js.map +1 -1
  31. package/dist/animation/skeleton_modifier.js +3 -5
  32. package/dist/animation/skeleton_modifier.js.map +1 -1
  33. package/dist/animation/spring/multi_chain_spring_system.js +2 -0
  34. package/dist/animation/spring/multi_chain_spring_system.js.map +1 -1
  35. package/dist/animation/spring/spring_chain.js +3 -2
  36. package/dist/animation/spring/spring_chain.js.map +1 -1
  37. package/dist/animation/spring/spring_collider.js +35 -5
  38. package/dist/animation/spring/spring_collider.js.map +1 -1
  39. package/dist/animation/spring/spring_particle.js +1 -0
  40. package/dist/animation/spring/spring_particle.js.map +1 -1
  41. package/dist/animation/spring/spring_system.js +325 -28
  42. package/dist/animation/spring/spring_system.js.map +1 -1
  43. package/dist/animation/spring2/collision.js +469 -0
  44. package/dist/animation/spring2/collision.js.map +1 -0
  45. package/dist/animation/spring2/constraints.js +329 -0
  46. package/dist/animation/spring2/constraints.js.map +1 -0
  47. package/dist/animation/spring2/controller.js +434 -0
  48. package/dist/animation/spring2/controller.js.map +1 -0
  49. package/dist/animation/spring2/math.js +16 -0
  50. package/dist/animation/spring2/math.js.map +1 -0
  51. package/dist/animation/spring2/solver.js +624 -0
  52. package/dist/animation/spring2/solver.js.map +1 -0
  53. package/dist/animation/spring2/spring_system.js +118 -0
  54. package/dist/animation/spring2/spring_system.js.map +1 -0
  55. package/dist/animation/spring2/types.js +19 -0
  56. package/dist/animation/spring2/types.js.map +1 -0
  57. package/dist/animation/spring_modifier.js +17 -1
  58. package/dist/animation/spring_modifier.js.map +1 -1
  59. package/dist/app/engine.js +42 -15
  60. package/dist/app/engine.js.map +1 -1
  61. package/dist/app/runtimescript.js +132 -1
  62. package/dist/app/runtimescript.js.map +1 -1
  63. package/dist/app/screen.js +3 -3
  64. package/dist/app/screen.js.map +1 -1
  65. package/dist/app/scriptingsystem.js +69 -37
  66. package/dist/app/scriptingsystem.js.map +1 -1
  67. package/dist/app/scriptregistry.js +157 -146
  68. package/dist/app/scriptregistry.js.map +1 -1
  69. package/dist/asset/assetmanager.js +2 -1
  70. package/dist/asset/assetmanager.js.map +1 -1
  71. package/dist/asset/loaders/zabc/zabc_loader.js +570 -0
  72. package/dist/asset/loaders/zabc/zabc_loader.js.map +1 -0
  73. package/dist/asset/model.js +192 -0
  74. package/dist/asset/model.js.map +1 -1
  75. package/dist/camera/base.js +26 -7
  76. package/dist/camera/base.js.map +1 -1
  77. package/dist/camera/camera.js +146 -24
  78. package/dist/camera/camera.js.map +1 -1
  79. package/dist/camera/fps.js +2 -2
  80. package/dist/camera/fps.js.map +1 -1
  81. package/dist/camera/orbit.js +2 -2
  82. package/dist/camera/orbit.js.map +1 -1
  83. package/dist/index.d.ts +11728 -8535
  84. package/dist/index.js +29 -8
  85. package/dist/index.js.map +1 -1
  86. package/dist/material/lambert.js +1 -1
  87. package/dist/material/lambert.js.map +1 -1
  88. package/dist/material/material.js +9 -3
  89. package/dist/material/material.js.map +1 -1
  90. package/dist/material/meshmaterial.js +54 -7
  91. package/dist/material/meshmaterial.js.map +1 -1
  92. package/dist/material/mixins/lightmodel/blinnphong.js +17 -7
  93. package/dist/material/mixins/lightmodel/blinnphong.js.map +1 -1
  94. package/dist/material/mixins/lightmodel/lambert.js +7 -2
  95. package/dist/material/mixins/lightmodel/lambert.js.map +1 -1
  96. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js +108 -16
  97. package/dist/material/mixins/lightmodel/pbrblueprintmixin.js.map +1 -1
  98. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js +222 -14
  99. package/dist/material/mixins/lightmodel/pbrmetallicroughness.js.map +1 -1
  100. package/dist/material/mixins/lightmodel/pbrspecularglossness.js +24 -12
  101. package/dist/material/mixins/lightmodel/pbrspecularglossness.js.map +1 -1
  102. package/dist/material/mixins/lit.js +11 -8
  103. package/dist/material/mixins/lit.js.map +1 -1
  104. package/dist/material/mixins/pbr/common.js +72 -5
  105. package/dist/material/mixins/pbr/common.js.map +1 -1
  106. package/dist/material/pbrblueprint.js +148 -1
  107. package/dist/material/pbrblueprint.js.map +1 -1
  108. package/dist/material/pbrmr.js +125 -2
  109. package/dist/material/pbrmr.js.map +1 -1
  110. package/dist/material/shader/helper.js +10 -4
  111. package/dist/material/shader/helper.js.map +1 -1
  112. package/dist/material/water.js +2 -2
  113. package/dist/material/water.js.map +1 -1
  114. package/dist/posteffect/coloradjust.js +145 -0
  115. package/dist/posteffect/coloradjust.js.map +1 -0
  116. package/dist/posteffect/taa.js +68 -32
  117. package/dist/posteffect/taa.js.map +1 -1
  118. package/dist/render/cluster_light.js +17 -12
  119. package/dist/render/cluster_light.js.map +1 -1
  120. package/dist/render/deferredlightpass.js +510 -0
  121. package/dist/render/deferredlightpass.js.map +1 -0
  122. package/dist/render/deferredshadowlightpass.js +428 -0
  123. package/dist/render/deferredshadowlightpass.js.map +1 -0
  124. package/dist/render/drawable.js.map +1 -1
  125. package/dist/render/drawable_mixin.js +21 -12
  126. package/dist/render/drawable_mixin.js.map +1 -1
  127. package/dist/render/envlight.js +20 -22
  128. package/dist/render/envlight.js.map +1 -1
  129. package/dist/render/gbufferpass.js +50 -0
  130. package/dist/render/gbufferpass.js.map +1 -0
  131. package/dist/render/lightpass.js +1 -2
  132. package/dist/render/lightpass.js.map +1 -1
  133. package/dist/render/primitive.js +1 -1
  134. package/dist/render/primitive.js.map +1 -1
  135. package/dist/render/render_queue.js +3 -2
  136. package/dist/render/render_queue.js.map +1 -1
  137. package/dist/render/renderer.js +5 -358
  138. package/dist/render/renderer.js.map +1 -1
  139. package/dist/render/rendergraph/executor.js +15 -12
  140. package/dist/render/rendergraph/executor.js.map +1 -1
  141. package/dist/render/rendergraph/forward_plus_builder.js +144 -88
  142. package/dist/render/rendergraph/forward_plus_builder.js.map +1 -1
  143. package/dist/render/rendergraph/history_resource_manager.js +178 -0
  144. package/dist/render/rendergraph/history_resource_manager.js.map +1 -0
  145. package/dist/render/rendergraph/rendergraph.js +12 -1
  146. package/dist/render/rendergraph/rendergraph.js.map +1 -1
  147. package/dist/render/rendergraph/types.js +2 -2
  148. package/dist/render/rendergraph/types.js.map +1 -1
  149. package/dist/render/sky.js +26 -9
  150. package/dist/render/sky.js.map +1 -1
  151. package/dist/scene/basesprite.js +4 -3
  152. package/dist/scene/basesprite.js.map +1 -1
  153. package/dist/scene/batchgroup.js +4 -4
  154. package/dist/scene/environment.js +7 -4
  155. package/dist/scene/environment.js.map +1 -1
  156. package/dist/scene/light.js +184 -18
  157. package/dist/scene/light.js.map +1 -1
  158. package/dist/scene/mesh.js +30 -0
  159. package/dist/scene/mesh.js.map +1 -1
  160. package/dist/scene/particlesys.js +3 -2
  161. package/dist/scene/particlesys.js.map +1 -1
  162. package/dist/scene/raycast_visitor.js +29 -3
  163. package/dist/scene/raycast_visitor.js.map +1 -1
  164. package/dist/scene/scene.js +86 -19
  165. package/dist/scene/scene.js.map +1 -1
  166. package/dist/scene/scene_node.js +87 -31
  167. package/dist/scene/scene_node.js.map +1 -1
  168. package/dist/scene/script_attachment.js +59 -0
  169. package/dist/scene/script_attachment.js.map +1 -0
  170. package/dist/scene/terrain-cm/grass.js +3 -2
  171. package/dist/scene/terrain-cm/grass.js.map +1 -1
  172. package/dist/scene/terrain-cm/terrain-cm.js +4 -3
  173. package/dist/scene/terrain-cm/terrain-cm.js.map +1 -1
  174. package/dist/scene/water.js +3 -2
  175. package/dist/scene/water.js.map +1 -1
  176. package/dist/shaders/shadow.js +2 -2
  177. package/dist/shaders/shadow.js.map +1 -1
  178. package/dist/shadow/shadowmapper.js +74 -4
  179. package/dist/shadow/shadowmapper.js.map +1 -1
  180. package/dist/shapes/box.js +163 -0
  181. package/dist/shapes/box.js.map +1 -1
  182. package/dist/shapes/capsule.js +216 -0
  183. package/dist/shapes/capsule.js.map +1 -0
  184. package/dist/shapes/cylinder.js +91 -0
  185. package/dist/shapes/cylinder.js.map +1 -1
  186. package/dist/shapes/plane.js +32 -0
  187. package/dist/shapes/plane.js.map +1 -1
  188. package/dist/shapes/tetrahedron.js +211 -0
  189. package/dist/shapes/tetrahedron.js.map +1 -1
  190. package/dist/shapes/torus.js +173 -0
  191. package/dist/shapes/torus.js.map +1 -1
  192. package/dist/utility/blueprint/common/math.js +111 -1
  193. package/dist/utility/blueprint/common/math.js.map +1 -1
  194. package/dist/utility/blueprint/material/inputs.js +235 -1
  195. package/dist/utility/blueprint/material/inputs.js.map +1 -1
  196. package/dist/utility/blueprint/material/ir.js +154 -10
  197. package/dist/utility/blueprint/material/ir.js.map +1 -1
  198. package/dist/utility/blueprint/material/texture.js +273 -19
  199. package/dist/utility/blueprint/material/texture.js.map +1 -1
  200. package/dist/utility/serialization/json.js +12 -2
  201. package/dist/utility/serialization/json.js.map +1 -1
  202. package/dist/utility/serialization/manager.js +30 -11
  203. package/dist/utility/serialization/manager.js.map +1 -1
  204. package/dist/utility/serialization/scene/animation.js +250 -7
  205. package/dist/utility/serialization/scene/animation.js.map +1 -1
  206. package/dist/utility/serialization/scene/batch.js +4 -2
  207. package/dist/utility/serialization/scene/batch.js.map +1 -1
  208. package/dist/utility/serialization/scene/camera.js +154 -2
  209. package/dist/utility/serialization/scene/camera.js.map +1 -1
  210. package/dist/utility/serialization/scene/cloth_script.js +834 -0
  211. package/dist/utility/serialization/scene/cloth_script.js.map +1 -0
  212. package/dist/utility/serialization/scene/common.js +7 -0
  213. package/dist/utility/serialization/scene/common.js.map +1 -1
  214. package/dist/utility/serialization/scene/light.js +120 -4
  215. package/dist/utility/serialization/scene/light.js.map +1 -1
  216. package/dist/utility/serialization/scene/material.js +453 -1
  217. package/dist/utility/serialization/scene/material.js.map +1 -1
  218. package/dist/utility/serialization/scene/mesh.js +4 -2
  219. package/dist/utility/serialization/scene/mesh.js.map +1 -1
  220. package/dist/utility/serialization/scene/node.js +298 -10
  221. package/dist/utility/serialization/scene/node.js.map +1 -1
  222. package/dist/utility/serialization/scene/particle.js +4 -2
  223. package/dist/utility/serialization/scene/particle.js.map +1 -1
  224. package/dist/utility/serialization/scene/primitive.js +100 -3
  225. package/dist/utility/serialization/scene/primitive.js.map +1 -1
  226. package/dist/utility/serialization/scene/scene.js +130 -3
  227. package/dist/utility/serialization/scene/scene.js.map +1 -1
  228. package/dist/utility/serialization/scene/script.js +66 -0
  229. package/dist/utility/serialization/scene/script.js.map +1 -0
  230. package/dist/utility/serialization/scene/spring_script.js +596 -0
  231. package/dist/utility/serialization/scene/spring_script.js.map +1 -0
  232. package/dist/utility/serialization/scene/sprite.js +5 -3
  233. package/dist/utility/serialization/scene/sprite.js.map +1 -1
  234. package/dist/utility/serialization/scene/terrain.js +4 -2
  235. package/dist/utility/serialization/scene/terrain.js.map +1 -1
  236. package/dist/utility/serialization/scene/water.js +4 -2
  237. package/dist/utility/serialization/scene/water.js.map +1 -1
  238. package/dist/utility/serialization/types.js.map +1 -1
  239. package/dist/values.js +5 -1
  240. package/dist/values.js.map +1 -1
  241. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"math.js","sources":["../../../../src/utility/blueprint/common/math.ts"],"sourcesContent":["import type { Nullable } from '@zephyr3d/base';\r\nimport { BaseGraphNode, getNodeTypeComponents } from '../node';\r\nimport { defineProps } from '../../serialization/types';\r\n\r\n/**\r\n * Vector constructor node\r\n *\r\n * @remarks\r\n * Constructs a vector (vec2, vec3, or vec4) from individual components or smaller vectors.\r\n * Accepts 1-4 inputs which can be scalars (float) or vectors (vec2, vec3).\r\n * The output vector size is determined by the total number of components from all inputs.\r\n *\r\n * Valid combinations:\r\n * - vec2: float + float, or vec2\r\n * - vec3: float + float + float, vec2 + float, float + vec2, or vec3\r\n * - vec4: float + float + float + float, vec2 + vec2, vec3 + float, etc.\r\n *\r\n * @example\r\n * ```typescript\r\n * // Create vec3 from three floats\r\n * const makeVec3 = new MakeVectorNode();\r\n * makeVec3.connectInput(1, xNode, 1);\r\n * makeVec3.connectInput(2, yNode, 1);\r\n * makeVec3.connectInput(3, zNode, 1);\r\n *\r\n * // Create vec4 from vec3 and float\r\n * const makeVec4 = new MakeVectorNode();\r\n * makeVec4.connectInput(1, rgbNode, 1);\r\n * makeVec4.connectInput(2, alphaNode, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class MakeVectorNode extends BaseGraphNode {\r\n /**\r\n * Creates a new make vector node\r\n *\r\n * @remarks\r\n * Initializes with 4 optional input slots (a, b, c, d).\r\n * At least one input must be connected. Unused trailing inputs can be left disconnected.\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'a',\r\n type: ['float', 'vec2', 'vec3'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: 'b',\r\n type: ['float', 'vec2', 'vec3']\r\n },\r\n {\r\n id: 3,\r\n name: 'c',\r\n type: ['float', 'vec2', 'vec3']\r\n },\r\n {\r\n id: 4,\r\n name: 'd',\r\n type: ['float', 'vec2', 'vec3']\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'MakeVector'\r\n */\r\n toString() {\r\n return 'MakeVector';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: MakeVectorNode,\r\n name: 'MakeVectorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Validation checks:\r\n * - At least one input must be connected\r\n * - All inputs up to the last connected one must be present\r\n * - Total component count must be between 2 and 4\r\n * - All input types must be valid (float, vec2, or vec3)\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n let index = this._inputs.length - 1;\r\n while (index >= 0 && !this._inputs[index].inputNode) {\r\n index--;\r\n }\r\n if (index < 0) {\r\n return 'Missing arguments';\r\n }\r\n let n = 0;\r\n const types: string[] = [];\r\n for (let i = 0; i <= index; i++) {\r\n const name = this._inputs[i].name;\r\n if (!this._inputs[i].inputNode) {\r\n return `Missing argument \\`${name}\\``;\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[i].type.includes(type)) {\r\n return `Invalid input type ${type}`;\r\n }\r\n types.push(type);\r\n n += type === 'float' ? 1 : type === 'vec2' ? 2 : type === 'vec3' ? 3 : 0;\r\n }\r\n if (n < 2 || n > 4) {\r\n return `Invalid type combination ${types.join(',')}`;\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'vec2', 'vec3', 'vec4', or empty string if invalid\r\n *\r\n * @remarks\r\n * Counts total components from all connected inputs:\r\n * - float = 1 component\r\n * - vec2 = 2 components\r\n * - vec3 = 3 components\r\n * Returns vecN where N is the total component count (2-4).\r\n */\r\n protected getType() {\r\n let index = this._inputs.length - 1;\r\n while (index >= 0 && !this._inputs[index].inputNode) {\r\n index--;\r\n }\r\n if (index < 0) {\r\n return '';\r\n }\r\n let n = 0;\r\n for (let i = 0; i <= index; i++) {\r\n if (!this._inputs[i].inputNode) {\r\n return '';\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return '';\r\n }\r\n n += type === 'float' ? 1 : type === 'vec2' ? 2 : type === 'vec3' ? 3 : 0;\r\n }\r\n if (n < 2 || n > 4) {\r\n return '';\r\n }\r\n return `vec${n}`;\r\n }\r\n}\r\n\r\n/**\r\n * Vector swizzle node\r\n *\r\n * @public\r\n */\r\nexport class SwizzleNode extends BaseGraphNode {\r\n private _swizzle: string;\r\n /**\r\n * Creates a new swizzle node\r\n */\r\n constructor() {\r\n super();\r\n this._swizzle = '';\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /** Swizzle */\r\n get swizzle() {\r\n return this._swizzle;\r\n }\r\n set swizzle(val: string) {\r\n this._swizzle = val;\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Swizzle'\r\n */\r\n toString() {\r\n return 'Swizzle';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: SwizzleNode,\r\n name: 'SwizzleNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Swizzle',\r\n type: 'string',\r\n get(this: SwizzleNode, value) {\r\n value.str[0] = this.swizzle;\r\n },\r\n set(this: SwizzleNode, value) {\r\n this.swizzle = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Validation checks:\r\n * - At least one input must be connected\r\n * - All inputs up to the last connected one must be present\r\n * - Total component count must be between 2 and 4\r\n * - All input types must be valid (float, vec2, or vec3)\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const type = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n if (!type) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[0].type.includes(type)) {\r\n return `Invalid input type ${type}`;\r\n }\r\n let n: number;\r\n if (type === 'float') {\r\n n = 1;\r\n } else if (type === 'vec2') {\r\n n = 2;\r\n } else if (type === 'vec3') {\r\n n = 3;\r\n } else {\r\n n = 4;\r\n }\r\n if (\r\n this._swizzle.length === 0 ||\r\n this._swizzle.length > 4 ||\r\n ([...this._swizzle].some((val) => 'xyzw'.slice(0, n).indexOf(val) < 0) &&\r\n [...this._swizzle].some((val) => 'rgba'.slice(0, n).indexOf(val) < 0))\r\n ) {\r\n return `Invalid swizzle pattern: ${this._swizzle}`;\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'float', 'vec2', 'vec3', 'vec4', or empty string if invalid\r\n *\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n if (!this._inputs[0].inputNode) {\r\n return '';\r\n }\r\n const type = this._inputs[0].inputNode.getOutputType(this._inputs[0].inputId!);\r\n if (!type) {\r\n return '';\r\n }\r\n if (!this._inputs[0].type.includes(type)) {\r\n return '';\r\n }\r\n let n: number;\r\n if (type === 'float') {\r\n n = 1;\r\n } else if (type === 'vec2') {\r\n n = 2;\r\n } else if (type === 'vec3') {\r\n n = 3;\r\n } else {\r\n n = 4;\r\n }\r\n if (\r\n this._swizzle.length === 0 ||\r\n this._swizzle.length > 4 ||\r\n ([...this._swizzle].some((val) => 'xyzw'.slice(0, n).indexOf(val) < 0) &&\r\n [...this._swizzle].some((val) => 'rgba'.slice(0, n).indexOf(val) < 0))\r\n ) {\r\n return '';\r\n }\r\n return this._swizzle.length === 1 ? 'float' : `vec${this._swizzle.length}`;\r\n }\r\n}\r\n\r\n/**\r\n * Comparison mode\r\n * @public\r\n **/\r\nexport type ComparisonMode = 'eq' | 'ne' | 'lt' | 'le' | 'gt' | 'ge';\r\n\r\n/**\r\n * Vector comparison node\r\n *\r\n * @public\r\n */\r\nexport class CompComparisonNode extends BaseGraphNode {\r\n private _mode: ComparisonMode;\r\n /**\r\n * Creates a new swizzle node\r\n */\r\n constructor() {\r\n super();\r\n this._mode = 'eq';\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['vec2', 'vec3', 'vec4'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: '',\r\n type: ['vec2', 'vec3', 'vec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /** Swizzle */\r\n get mode() {\r\n return this._mode;\r\n }\r\n set mode(val: ComparisonMode) {\r\n this._mode = val;\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Swizzle'\r\n */\r\n toString() {\r\n return 'Comparison';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompComparisonNode,\r\n name: 'CompComparisonNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'mode',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Equal', 'NotEqual', 'LessThan', 'LessThanEqual', 'GreaterThan', 'GreaterThanEqual'],\r\n values: ['eq', 'ne', 'lt', 'le', 'gt', 'ge']\r\n }\r\n },\r\n get(this: CompComparisonNode, value) {\r\n value.str[0] = this.mode;\r\n },\r\n set(this: CompComparisonNode, value) {\r\n this.mode = value.str[0] as ComparisonMode;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const type0 = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n const type1 = this._inputs[1].inputNode!.getOutputType(this._inputs[1].inputId!);\r\n if (type0 !== type1) {\r\n return 'Input arguments must be the same type';\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bvec2', 'bvec3', 'bvec4', or empty string if invalid\r\n *\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n const type = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n return `bvec${getNodeTypeComponents(type)}`;\r\n }\r\n}\r\n\r\n/**\r\n * Any condition node\r\n *\r\n * @public\r\n */\r\nexport class AnyConditionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new any-condition node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['bool', 'bvec2', 'bvec3', 'bvec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Any'\r\n */\r\n toString() {\r\n return 'Any';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: AnyConditionNode,\r\n name: 'AnyConditionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bool'\r\n *\r\n */\r\n protected getType() {\r\n return this.validate() ? '' : 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * All condition node\r\n *\r\n * @public\r\n */\r\nexport class AllConditionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new all-condition node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['bool', 'bvec2', 'bvec3', 'bvec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'All'\r\n */\r\n toString() {\r\n return 'All';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: AllConditionNode,\r\n name: 'AllConditionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bool'\r\n *\r\n */\r\n protected getType() {\r\n return this.validate() ? '' : 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * Selection node\r\n *\r\n * @public\r\n */\r\nexport class SelectionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new selection node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'a',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: 'b',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n required: true\r\n },\r\n {\r\n id: 3,\r\n name: 'condition',\r\n type: ['bool', 'bvec2', 'bvec3', 'bvec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Selection'\r\n */\r\n toString() {\r\n return 'Selection';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: SelectionNode,\r\n name: 'SelectionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const type0 = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n const type1 = this._inputs[1].inputNode!.getOutputType(this._inputs[1].inputId!);\r\n if (type0 !== type1) {\r\n return 'Input arguments 0-1 must be the same type';\r\n }\r\n const type2 = this._inputs[2].inputNode!.getOutputType(this._inputs[2].inputId!);\r\n const n = getNodeTypeComponents(type2);\r\n if (n > 1 && n !== getNodeTypeComponents(type0)) {\r\n return 'Invalid type of argument 2';\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bool'\r\n *\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n return this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n }\r\n}\r\n\r\n/**\r\n * Matrix-vector transformation node\r\n *\r\n * @remarks\r\n * Performs matrix-vector or matrix-matrix multiplication using the shader's mul() function.\r\n * Supports transformations for 2D, 3D, and 4D spaces:\r\n * - mat2 * vec2 or vec2 * mat2\r\n * - mat3 * vec3 or vec3 * mat3\r\n * - mat4 * vec4 or vec4 * mat4\r\n * - mat2 * mat2, mat3 * mat3, mat4 * mat4\r\n *\r\n * Common uses:\r\n * - Transform positions by model/view/projection matrices\r\n * - Transform normals by inverse transpose matrices\r\n * - Chain matrix transformations\r\n *\r\n * @example\r\n * ```typescript\r\n * // Transform position by view-projection matrix\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, positionNode, 1); // vec4 position\r\n * transform.connectInput(2, viewProjMatrixNode, 1); // mat4 matrix\r\n *\r\n * // Transform normal by normal matrix\r\n * const normalTransform = new TransformNode();\r\n * normalTransform.connectInput(1, normalNode, 1); // vec3 normal\r\n * normalTransform.connectInput(2, normalMatrixNode, 1); // mat3 matrix\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class TransformNode extends BaseGraphNode {\r\n /**\r\n * Creates a new transform node\r\n *\r\n * @remarks\r\n * Initializes with two required inputs: the value to transform (a) and the transformation matrix (b).\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'a',\r\n type: ['vec2', 'vec3', 'vec4', 'mat2', 'mat3', 'mat4'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: 'b',\r\n type: ['vec2', 'vec3', 'vec4', 'mat2', 'mat3', 'mat4']\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Transform'\r\n */\r\n toString() {\r\n return 'Transform';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: TransformNode,\r\n name: 'TransformNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input type compatibility\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Validates that the input types are compatible for multiplication:\r\n * - vec2 with mat2\r\n * - vec3 with mat3\r\n * - vec4 with mat4\r\n * - Compatible matrix-matrix multiplications\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const types: string[] = [];\r\n for (let i = 0; i < 2; i++) {\r\n const name = this._inputs[i].name;\r\n if (!this._inputs[i].inputNode) {\r\n return `Missing argument \\`${name}\\``;\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[i].type.includes(type)) {\r\n return `Invalid input type ${type}`;\r\n }\r\n types.push(type);\r\n }\r\n if (types[0] === 'vec2' && types[1] === 'mat2') {\r\n return '';\r\n }\r\n if (types[0] === 'vec3' && types[1] === 'mat3') {\r\n return '';\r\n }\r\n if (types[0] === 'vec4' && types[1] === 'mat4') {\r\n return '';\r\n }\r\n if (types[0] === 'mat2' && (types[1] === 'mat2' || types[1] === 'vec2')) {\r\n return '';\r\n }\r\n if (types[0] === 'mat3' && (types[1] === 'mat3' || types[1] === 'vec3')) {\r\n return '';\r\n }\r\n if (types[0] === 'mat4' && (types[1] === 'mat4' || types[1] === 'vec4')) {\r\n return '';\r\n }\r\n return 'Invalid argument types of transformation';\r\n }\r\n /**\r\n * Gets the output type based on input types\r\n *\r\n * @returns The result type of the transformation, or empty string if invalid\r\n *\r\n * @remarks\r\n * Result type rules:\r\n * - vec * mat = vec (same dimension)\r\n * - mat * vec = vec (same dimension)\r\n * - mat * mat = mat (same dimension)\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n const types: string[] = [];\r\n for (let i = 0; i < 2; i++) {\r\n if (!this._inputs[i].inputNode) {\r\n return '';\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return '';\r\n }\r\n if (!this._inputs[i].type.includes(type)) {\r\n return '';\r\n }\r\n types.push(type);\r\n }\r\n if (types[0] === 'vec2' && types[1] === 'mat2') {\r\n return 'vec2';\r\n }\r\n if (types[0] === 'vec3' && types[1] === 'mat3') {\r\n return 'vec3';\r\n }\r\n if (types[0] === 'vec4' && types[1] === 'mat4') {\r\n return 'vec4';\r\n }\r\n if (types[0] === 'mat2' && (types[1] === 'mat2' || types[1] === 'vec2')) {\r\n return types[1] === 'mat2' ? 'mat2' : 'vec2';\r\n }\r\n if (types[0] === 'mat3' && (types[1] === 'mat3' || types[1] === 'vec3')) {\r\n return types[1] === 'mat3' ? 'mat3' : 'vec3';\r\n }\r\n if (types[0] === 'mat4' && (types[1] === 'mat4' || types[1] === 'vec4')) {\r\n return types[1] === 'mat4' ? 'mat4' : 'vec4';\r\n }\r\n return '';\r\n }\r\n}\r\n\r\n/**\r\n * Abstract base class for generic mathematical function nodes\r\n *\r\n * @remarks\r\n * Provides a flexible framework for shader math functions that:\r\n * - Accept N arguments of specified types\r\n * - Perform type validation and inference\r\n * - Support both uniform input types and mixed types\r\n *\r\n * Type handling:\r\n * - By default, all inputs must be the same type (float, vec2, vec3, or vec4)\r\n * - `explicitInTypes` allows specific inputs to accept only certain types\r\n * - `additionalInTypes` allows specific inputs to accept additional mixed types\r\n * - `originTypes` specifies type casting requirements\r\n *\r\n * The output type is either:\r\n * - Explicitly specified via `outType`\r\n * - Inferred from the common input type\r\n *\r\n * @example\r\n * ```typescript\r\n * // Simple function with uniform types (all float or all vec3, etc.)\r\n * class AddNode extends GenericMathNode {\r\n * constructor() {\r\n * super('add', 2); // 2 arguments, output type = input type\r\n * }\r\n * }\r\n *\r\n * // Function with explicit output type\r\n * class LengthNode extends GenericMathNode {\r\n * constructor() {\r\n * super('length', 1, 'float'); // 1 argument, always outputs float\r\n * }\r\n * }\r\n *\r\n * // Function with mixed input types\r\n * class MulNode extends GenericMathNode {\r\n * constructor() {\r\n * // Allow scalar multiplication: vec * float or float * vec\r\n * super('mul', 2, null, null, null, { '1': ['float'], '2': ['float'] });\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport abstract class GenericMathNode extends BaseGraphNode {\r\n /** The shader function name (e.g., 'sin', 'add', 'normalize') */\r\n readonly func: string;\r\n /** The explicit output type, if specified (otherwise inferred from inputs) */\r\n readonly outType: string;\r\n /** Maps input slot IDs to allowed types for that specific slot */\r\n readonly explicitInTypes: Nullable<Record<number, string[]>>;\r\n /** Maps input slot IDs to additional allowed types beyond the common type */\r\n readonly additionalInTypes: Nullable<Record<number, string[]>>;\r\n /**\r\n * Creates a new generic math node\r\n *\r\n * @param func - The shader function name\r\n * @param numArgs - Number of input arguments\r\n * @param outType - Explicit output type (null to infer from inputs)\r\n * @param inTypes - Default allowed input types (defaults to all vector types)\r\n * @param explicitInTypes - Per-slot type restrictions\r\n * @param additionalInTypes - Per-slot additional allowed types\r\n * @param originTypes - Per-slot type casting requirements\r\n *\r\n * @remarks\r\n * Creates input slots named 'a', 'b', 'c', etc. based on numArgs.\r\n * All inputs are required by default.\r\n */\r\n constructor(\r\n func: string,\r\n numArgs: number,\r\n outType?: Nullable<string>,\r\n inTypes?: Nullable<string[]>,\r\n explicitInTypes?: Nullable<Record<number, string[]>>,\r\n additionalInTypes?: Nullable<Record<number, string[]>>,\r\n originTypes?: string[]\r\n ) {\r\n super();\r\n this.func = func;\r\n this.outType = outType ?? '';\r\n this.explicitInTypes = explicitInTypes ?? null;\r\n this.additionalInTypes = additionalInTypes ?? null;\r\n inTypes = inTypes ?? ['float', 'vec2', 'vec3', 'vec4'];\r\n this._inputs = Array.from({ length: numArgs }).map((_, index) => ({\r\n id: index + 1,\r\n name: 'abcdefghijklmn'[index],\r\n type: this.explicitInTypes?.[index + 1] ?? [\r\n ...new Set([...inTypes, ...(this.additionalInTypes?.[index + 1] ?? [])])\r\n ],\r\n required: true,\r\n originType: originTypes?.[index]\r\n }));\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The function name\r\n */\r\n toString() {\r\n return this.func;\r\n }\r\n /**\r\n * Validates the node state and input type compatibility\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Ensures all inputs:\r\n * - Have determinable types\r\n * - Have allowed types for their slot\r\n * - Share a common type (unless explicitly or additionally typed)\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n let type: string = '';\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n const name = 'abcdefghijklmn'[i];\r\n const t = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!t) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[i].type.includes(t)) {\r\n return `Invalid input type ${t}`;\r\n }\r\n if (!this.explicitInTypes || !this.explicitInTypes[this._inputs[i].id]) {\r\n if (!this.additionalInTypes || !this.additionalInTypes[this._inputs[i].id]?.includes(t)) {\r\n if (type && t !== type) {\r\n return 'Invalid Arguments types';\r\n } else {\r\n type = t;\r\n }\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on input types\r\n *\r\n * @returns The output type, or empty string if invalid\r\n *\r\n * @remarks\r\n * Returns the explicit output type if specified, otherwise infers\r\n * the common type from non-explicit, non-additional inputs.\r\n */\r\n protected getType() {\r\n if (this.outType) {\r\n return this.outType;\r\n }\r\n let type: string = '';\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n if (!this._inputs[i].inputNode) {\r\n return '';\r\n }\r\n const t = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!t) {\r\n return '';\r\n }\r\n if (!this.explicitInTypes || !this.explicitInTypes[this._inputs[i].id]) {\r\n if (!this.additionalInTypes || !this.additionalInTypes[this._inputs[i].id]?.includes(t)) {\r\n if (type && t !== type) {\r\n return 'Invalid Arguments types';\r\n } else {\r\n type = t;\r\n }\r\n }\r\n }\r\n }\r\n return type;\r\n }\r\n}\r\n\r\n/**\r\n * Converts degrees to radians\r\n *\r\n * @remarks\r\n * Applies the formula: radians = degrees * (π / 180)\r\n * Supports scalar and vector inputs.\r\n *\r\n * @public\r\n */\r\nexport class Degrees2RadiansNode extends GenericMathNode {\r\n constructor() {\r\n super('degrees2radians', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Degrees2RadiansNode,\r\n name: 'Degrees2RadiansNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Converts radians to degrees\r\n *\r\n * @remarks\r\n * Applies the formula: degrees = radians * (180 / π)\r\n * Supports scalar and vector inputs.\r\n *\r\n * @public\r\n */\r\nexport class Radians2DegreesNode extends GenericMathNode {\r\n constructor() {\r\n super('radians2degrees', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Radians2DegreesNode,\r\n name: 'Radians2DegreesNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the sine function\r\n *\r\n * @remarks\r\n * Returns sin(x) for input x in radians.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SinNode extends GenericMathNode {\r\n constructor() {\r\n super('sin', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SinNode,\r\n name: 'SinNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the cosine function\r\n *\r\n * @remarks\r\n * Returns cos(x) for input x in radians.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class CosNode extends GenericMathNode {\r\n constructor() {\r\n super('cos', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CosNode,\r\n name: 'CosNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the tangent function\r\n *\r\n * @remarks\r\n * Returns tan(x) for input x in radians.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class TanNode extends GenericMathNode {\r\n constructor() {\r\n super('tan', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: TanNode,\r\n name: 'TanNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the arcsine (inverse sine) function\r\n *\r\n * @remarks\r\n * Returns asin(x) in radians for input x in the range [-1, 1].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcSinNode extends GenericMathNode {\r\n constructor() {\r\n super('asin', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcSinNode,\r\n name: 'ArcSinNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the arccosine (inverse cosine) function\r\n *\r\n * @remarks\r\n * Returns acos(x) in radians for input x in the range [-1, 1].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcCosNode extends GenericMathNode {\r\n constructor() {\r\n super('acos', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcCosNode,\r\n name: 'ArcCosNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the arctangent (inverse tangent) function\r\n *\r\n * @remarks\r\n * Returns atan(x) in radians for input x.\r\n * Result is in the range [-π/2, π/2].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcTanNode extends GenericMathNode {\r\n constructor() {\r\n super('atan', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcTanNode,\r\n name: 'ArcTanNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the two-argument arctangent function\r\n *\r\n * @remarks\r\n * Returns atan2(y, x) in radians, the angle in the range [-π, π]\r\n * whose tangent is y/x, using the signs of both arguments to determine\r\n * the quadrant of the result.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcTan2Node extends GenericMathNode {\r\n constructor() {\r\n super('atan2', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcTan2Node,\r\n name: 'ArcTan2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the hyperbolic sine function\r\n *\r\n * @remarks\r\n * Returns sinh(x) = (e^x - e^(-x)) / 2\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SinHNode extends GenericMathNode {\r\n constructor() {\r\n super('sinh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SinHNode,\r\n name: 'SinHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the hyperbolic cosine function\r\n *\r\n * @remarks\r\n * Returns cosh(x) = (e^x + e^(-x)) / 2\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class CosHNode extends GenericMathNode {\r\n constructor() {\r\n super('cosh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CosHNode,\r\n name: 'CosHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the hyperbolic tangent function\r\n *\r\n * @remarks\r\n * Returns tanh(x) = sinh(x) / cosh(x)\r\n * Result is in the range [-1, 1].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class TanHNode extends GenericMathNode {\r\n constructor() {\r\n super('tanh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: TanHNode,\r\n name: 'TanHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse hyperbolic sine function\r\n *\r\n * @remarks\r\n * Returns asinh(x) = ln(x + sqrt(x^2 + 1))\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcsineHNode extends GenericMathNode {\r\n constructor() {\r\n super('asinh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcsineHNode,\r\n name: 'ArcsineHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse hyperbolic cosine function\r\n *\r\n * @remarks\r\n * Returns acosh(x) = ln(x + sqrt(x^2 - 1)) for x \\>= 1\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArccosineHNode extends GenericMathNode {\r\n constructor() {\r\n super('acosh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArccosineHNode,\r\n name: 'ArccosineHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse hyperbolic tangent function\r\n *\r\n * @remarks\r\n * Returns atanh(x) = 0.5 * ln((1 + x) / (1 - x)) for |x| \\< 1\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArctangentHNode extends GenericMathNode {\r\n constructor() {\r\n super('atanh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArctangentHNode,\r\n name: 'ArctangentHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the natural exponential function\r\n *\r\n * @remarks\r\n * Returns e^x (Euler's number raised to the power x).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ExpNode extends GenericMathNode {\r\n constructor() {\r\n super('exp', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ExpNode,\r\n name: 'ExpNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the base-2 exponential function\r\n *\r\n * @remarks\r\n * Returns 2^x (2 raised to the power x).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class Exp2Node extends GenericMathNode {\r\n constructor() {\r\n super('exp2', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Exp2Node,\r\n name: 'Exp2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the natural logarithm\r\n *\r\n * @remarks\r\n * Returns ln(x) (logarithm base e) for x \\> 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class LogNode extends GenericMathNode {\r\n constructor() {\r\n super('log', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LogNode,\r\n name: 'LogNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the base-2 logarithm\r\n *\r\n * @remarks\r\n * Returns log₂(x) (logarithm base 2) for x \\> 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class Log2Node extends GenericMathNode {\r\n constructor() {\r\n super('log2', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Log2Node,\r\n name: 'Log2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the square root\r\n *\r\n * @remarks\r\n * Returns √x for x \\>= 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SqrtNode extends GenericMathNode {\r\n constructor() {\r\n super('sqrt', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SqrtNode,\r\n name: 'SqrtNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse square root\r\n *\r\n * @remarks\r\n * Returns 1/√x for x \\> 0.\r\n * Often more efficient than computing sqrt then dividing.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class InvSqrtNode extends GenericMathNode {\r\n constructor() {\r\n super('inverseSqrt', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: InvSqrtNode,\r\n name: 'InvSqrtNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the absolute value\r\n *\r\n * @remarks\r\n * Returns |x| (magnitude without sign).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class AbsNode extends GenericMathNode {\r\n constructor() {\r\n super('abs', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: AbsNode,\r\n name: 'AbsNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Extracts the sign of a value\r\n *\r\n * @remarks\r\n * Returns -1 if x \\< 0, 0 if x = 0, +1 if x \\> 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SignNode extends GenericMathNode {\r\n constructor() {\r\n super('sign', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SignNode,\r\n name: 'SignNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Rounds down to the nearest integer\r\n *\r\n * @remarks\r\n * Returns the largest integer value not greater than x.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class FloorNode extends GenericMathNode {\r\n constructor() {\r\n super('floor', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FloorNode,\r\n name: 'FloorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Rounds up to the nearest integer\r\n *\r\n * @remarks\r\n * Returns the smallest integer value not less than x.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class CeilNode extends GenericMathNode {\r\n constructor() {\r\n super('ceil', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CeilNode,\r\n name: 'CeilNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the fractional part\r\n *\r\n * @remarks\r\n * Returns x - floor(x), the decimal part of x.\r\n * Result is always in the range [0, 1).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class FractNode extends GenericMathNode {\r\n constructor() {\r\n super('fract', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FractNode,\r\n name: 'FractNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the partial derivative with respect to screen-space X\r\n *\r\n * @remarks\r\n * Returns the rate of change of the input value across adjacent pixels in the X direction.\r\n * Only available in fragment shaders.\r\n * Useful for computing gradients, detecting edges, and adjusting sampling rates.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class DDXNode extends GenericMathNode {\r\n constructor() {\r\n super('dpdx', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DDXNode,\r\n name: 'DDXNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the partial derivative with respect to screen-space Y\r\n *\r\n * @remarks\r\n * Returns the rate of change of the input value across adjacent pixels in the Y direction.\r\n * Only available in fragment shaders.\r\n * Useful for computing gradients, detecting edges, and adjusting sampling rates.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class DDYNode extends GenericMathNode {\r\n constructor() {\r\n super('dpdy', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DDYNode,\r\n name: 'DDYNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the sum of absolute derivatives\r\n *\r\n * @remarks\r\n * Returns abs(dpdx(x)) + abs(dpdy(x)), representing the total rate of change\r\n * across both screen axes. Useful for automatic LOD calculation and edge detection.\r\n * Only available in fragment shaders.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class FWidthNode extends GenericMathNode {\r\n constructor() {\r\n super('fwidth', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FWidthNode,\r\n name: 'FWidthNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise addition\r\n *\r\n * @remarks\r\n * Returns a + b for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n *\r\n * @public\r\n */\r\nexport class CompAddNode extends GenericMathNode {\r\n constructor() {\r\n super('add', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompAddNode,\r\n name: 'CompAddNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise subtraction\r\n *\r\n * @remarks\r\n * Returns a - b for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n *\r\n * @public\r\n */\r\nexport class CompSubNode extends GenericMathNode {\r\n constructor() {\r\n super('sub', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompSubNode,\r\n name: 'CompSubNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise multiplication with scalar support\r\n *\r\n * @remarks\r\n * Returns a * b for each component.\r\n * Supports:\r\n * - vec * vec (component-wise)\r\n * - vec * float (scalar multiplication)\r\n * - float * vec (scalar multiplication)\r\n * - float * float\r\n *\r\n * For matrix multiplication, use TransformNode instead.\r\n *\r\n * @public\r\n */\r\nexport class CompMulNode extends GenericMathNode {\r\n constructor() {\r\n super('mul', 2, null, null, null, { '1': ['float'], '2': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompMulNode,\r\n name: 'CompMulNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n protected getType() {\r\n const type1 = this.inputs[0].inputNode\r\n ? this.inputs[0].inputNode.getOutputType(this.inputs[0].inputId!)\r\n : '';\r\n const type2 = this.inputs[1].inputNode\r\n ? this.inputs[1].inputNode.getOutputType(this.inputs[1].inputId!)\r\n : '';\r\n if (!type1 || !type2) {\r\n return '';\r\n }\r\n return type1 === 'float' ? type2 : type1;\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise division\r\n *\r\n * @remarks\r\n * Returns a / b for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Division by zero produces undefined results.\r\n *\r\n * @public\r\n */\r\nexport class CompDivNode extends GenericMathNode {\r\n constructor() {\r\n super('div', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompDivNode,\r\n name: 'CompDivNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Modulo operation\r\n *\r\n * @remarks\r\n * Returns a - b * floor(a / b), the remainder of a divided by b.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class ModNode extends GenericMathNode {\r\n constructor() {\r\n super('mod', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ModNode,\r\n name: 'ModNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Returns the minimum of two values\r\n *\r\n * @remarks\r\n * Returns min(a, b) for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class MinNode extends GenericMathNode {\r\n constructor() {\r\n super('min', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: MinNode,\r\n name: 'MinNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Returns the maximum of two values\r\n *\r\n * @remarks\r\n * Returns max(a, b) for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class MaxNode extends GenericMathNode {\r\n constructor() {\r\n super('max', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: MaxNode,\r\n name: 'MaxNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Raises a value to a power\r\n *\r\n * @remarks\r\n * Returns a^b (a raised to the power b).\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class PowNode extends GenericMathNode {\r\n constructor() {\r\n super('pow', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: PowNode,\r\n name: 'PowNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Step function (Heaviside step)\r\n *\r\n * @remarks\r\n * Returns 0 if x \\< edge, otherwise 1.\r\n * Useful for creating hard thresholds.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class StepNode extends GenericMathNode {\r\n constructor() {\r\n super('step', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: StepNode,\r\n name: 'StepNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * SmoothStep function\r\n *\r\n * @public\r\n */\r\nexport class SmoothStepNode extends GenericMathNode {\r\n constructor() {\r\n super('smoothStep', 3);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SmoothStepNode,\r\n name: 'SmoothStepNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Fused multiply-add operation\r\n *\r\n * @remarks\r\n * Returns a * b + c in a single operation.\r\n * More accurate and potentially faster than separate multiply and add.\r\n * All three inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class FmaNode extends GenericMathNode {\r\n constructor() {\r\n super('fma', 3);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FmaNode,\r\n name: 'FmaNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Clamps a value to a specified range\r\n *\r\n * @remarks\r\n * Returns min(max(x, minVal), maxVal).\r\n * Constrains x to be between minVal and maxVal.\r\n * All three inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class ClampNode extends GenericMathNode {\r\n constructor() {\r\n super('clamp', 3);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ClampNode,\r\n name: 'ClampNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Clamps a value to the range [0, 1]\r\n *\r\n * @remarks\r\n * Returns clamp(x, 0, 1).\r\n * Commonly used to ensure color values are in valid range.\r\n * Supports float, vec2, vec3, and vec4 inputs.\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class SaturateNode extends GenericMathNode {\r\n constructor() {\r\n super('saturate', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SaturateNode,\r\n name: 'SaturateNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Linear interpolation between two values\r\n *\r\n * @remarks\r\n * Returns a * (1 - t) + b * t, blending between a and b based on t.\r\n * When t = 0, returns a; when t = 1, returns b.\r\n * The first two inputs must be the same type (float, vec2, vec3, or vec4).\r\n * The third input (t) can be a float for uniform interpolation or a vector for component-wise interpolation.\r\n *\r\n * @public\r\n */\r\nexport class MixNode extends GenericMathNode {\r\n constructor() {\r\n super('mix', 3, null, null, null, { '3': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: MixNode,\r\n name: 'MixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Normalizes a vector to unit length\r\n *\r\n * @remarks\r\n * Returns x / length(x), a vector in the same direction with length 1.\r\n * Only supports vector inputs (vec2, vec3, vec4).\r\n * Essential for working with directions, normals, and lighting calculations.\r\n *\r\n * @public\r\n */\r\nexport class NormalizeNode extends GenericMathNode {\r\n constructor() {\r\n super('normalize', 1, null, ['vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: NormalizeNode,\r\n name: 'NormalizeNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Flips a vector to face forward\r\n *\r\n * @remarks\r\n * Returns N if dot(Nref, I) \\< 0, otherwise -N.\r\n * Used to orient a normal to face away from a surface (opposite to incident direction).\r\n * All three inputs must be the same vector type (vec2 or vec3).\r\n *\r\n * @public\r\n */\r\nexport class FaceForwardNode extends GenericMathNode {\r\n constructor() {\r\n super('faceForward', 3, null, ['vec2', 'vec3']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FaceForwardNode,\r\n name: 'FaceForwardNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the reflection direction\r\n *\r\n * @remarks\r\n * Returns I - 2 * dot(N, I) * N, the reflection of incident vector I about normal N.\r\n * Both inputs must be the same vector type (vec2 or vec3).\r\n * Used for environment mapping and reflections.\r\n *\r\n * @public\r\n */\r\nexport class ReflectNode extends GenericMathNode {\r\n constructor() {\r\n super('reflect', 2, null, ['vec2', 'vec3']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ReflectNode,\r\n name: 'ReflectNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the refraction direction\r\n *\r\n * @remarks\r\n * Returns the refraction of incident vector I through surface with normal N\r\n * using the ratio of indices of refraction eta.\r\n * The first two inputs must be the same vector type (vec2 or vec3).\r\n * The third input (eta) is always a float scalar.\r\n * Used for transparent materials and refractive effects.\r\n *\r\n * @public\r\n */\r\nexport class RefractNode extends GenericMathNode {\r\n constructor() {\r\n super('refract', 3, null, ['vec2', 'vec3'], { '3': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: RefractNode,\r\n name: 'RefractNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the length of a vector\r\n *\r\n * @remarks\r\n * Returns sqrt(x.x + x.y + x.z + ...), the Euclidean length of the vector.\r\n * Supports vector inputs (vec2, vec3, vec4).\r\n * Always returns a float scalar.\r\n *\r\n * @public\r\n */\r\nexport class LengthNode extends GenericMathNode {\r\n constructor() {\r\n super('length', 1, 'float');\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LengthNode,\r\n name: 'LengthNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the distance between two points\r\n *\r\n * @remarks\r\n * Returns length(a - b), the Euclidean distance between points a and b.\r\n * Both inputs must be the same vector type (vec2, vec3, or vec4).\r\n * Always returns a float scalar.\r\n *\r\n * @public\r\n */\r\nexport class DistanceNode extends GenericMathNode {\r\n constructor() {\r\n super('distance', 2, 'float');\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DistanceNode,\r\n name: 'DistanceNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Logically and\r\n *\r\n * @public\r\n */\r\nexport class LogicallyAndNode extends GenericMathNode {\r\n constructor() {\r\n super('and', 2, 'bool', ['bool']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LogicallyAndNode,\r\n name: 'LogicallyAndNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Logically or\r\n *\r\n * @public\r\n */\r\nexport class LogicallyOrNode extends GenericMathNode {\r\n constructor() {\r\n super('or', 2, 'bool', ['bool']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LogicallyOrNode,\r\n name: 'LogicallyOrNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Equal test across two scalar or vectors\r\n *\r\n * @public\r\n */\r\nexport class EqualNode extends GenericMathNode {\r\n constructor() {\r\n super('equal', 2, 'bool', ['float', 'vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: EqualNode,\r\n name: 'EqualNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Not-Equal test across two scalar or vectors\r\n *\r\n * @public\r\n */\r\nexport class NotEqualNode extends GenericMathNode {\r\n constructor() {\r\n super('notEqual', 2, 'bool', ['float', 'vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: NotEqualNode,\r\n name: 'NotEqualNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n/**\r\n * Calculates the dot product of two vectors\r\n *\r\n * @remarks\r\n * Returns a.x * b.x + a.y * b.y + ... (sum of component-wise products).\r\n * Both inputs must be the same vector type (vec2, vec3, or vec4).\r\n * Always returns a float scalar.\r\n *\r\n * Used for:\r\n * - Calculating angles between vectors (via cosine)\r\n * - Projecting one vector onto another\r\n * - Lighting calculations (Lambert's cosine law)\r\n *\r\n * @public\r\n */\r\nexport class DotProductNode extends GenericMathNode {\r\n constructor() {\r\n super('dot', 2, 'float', ['vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DotProductNode,\r\n name: 'DotProductNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the cross product of two 3D vectors\r\n *\r\n * @remarks\r\n * Returns a vector perpendicular to both input vectors.\r\n * Both inputs must be vec3.\r\n * Always returns vec3.\r\n *\r\n * The magnitude of the result equals the area of the parallelogram\r\n * formed by the two input vectors.\r\n *\r\n * Used for:\r\n * - Calculating surface normals from tangent vectors\r\n * - Finding perpendicular directions\r\n * - Computing oriented areas\r\n *\r\n * @public\r\n */\r\nexport class CrossProductNode extends GenericMathNode {\r\n constructor() {\r\n super('cross', 2, null, ['vec3']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CrossProductNode,\r\n name: 'CrossProductNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a simplex noise by input UV and scale value\r\n *\r\n * @remarks\r\n * Returns a float value\r\n *\r\n * @public\r\n */\r\nexport class SimplexNoise2DNode extends GenericMathNode {\r\n constructor() {\r\n super('Z_simplexNoise2D', 2, 'float', null, { '1': ['vec2'], '2': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SimplexNoise2DNode,\r\n name: 'SimplexNoise2DNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a perlin noise by input UV and scale value\r\n *\r\n * @remarks\r\n * Returns a float value\r\n *\r\n * @public\r\n */\r\nexport class PerlinNoise2DNode extends GenericMathNode {\r\n constructor() {\r\n super('Z_perlinNoise2D', 2, 'float', null, { '1': ['vec2'], '2': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: PerlinNoise2DNode,\r\n name: 'PerlinNoise2DNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates float hash by input scalar value or vector value\r\n *\r\n * @public\r\n */\r\nexport class Hash1Node extends GenericMathNode {\r\n constructor() {\r\n super('Z_hash1', 1, 'float', null, { '1': ['float', 'vec2', 'vec3'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Hash1Node,\r\n name: 'Hash1Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates vec2 hash by input scalar value or vector value\r\n *\r\n * @public\r\n */\r\nexport class Hash2Node extends GenericMathNode {\r\n constructor() {\r\n super('Z_hash2', 1, 'vec2', null, { '1': ['float', 'vec2', 'vec3'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Hash2Node,\r\n name: 'Hash2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates vec3 hash by input scalar value or vector value\r\n *\r\n * @public\r\n */\r\nexport class Hash3Node extends GenericMathNode {\r\n constructor() {\r\n super('Z_hash3', 1, 'vec3', null, { '1': ['float', 'vec2', 'vec3'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Hash3Node,\r\n name: 'Hash3Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n"],"names":["MakeVectorNode","BaseGraphNode","_inputs","id","name","type","required","_outputs","toString","getSerializationCls","ctor","getProps","err","validate","index","length","inputNode","n","types","i","getOutputType","inputId","includes","push","join","SwizzleNode","_swizzle","swizzle","val","defineProps","get","value","str","set","some","slice","indexOf","CompComparisonNode","_mode","mode","options","enum","labels","values","type0","type1","getNodeTypeComponents","AnyConditionNode","AllConditionNode","SelectionNode","type2","TransformNode","GenericMathNode","func","numArgs","outType","inTypes","explicitInTypes","additionalInTypes","originTypes","Array","from","map","_","Set","originType","t","Degrees2RadiansNode","Radians2DegreesNode","SinNode","CosNode","TanNode","ArcSinNode","ArcCosNode","ArcTanNode","ArcTan2Node","SinHNode","CosHNode","TanHNode","ArcsineHNode","ArccosineHNode","ArctangentHNode","ExpNode","Exp2Node","LogNode","Log2Node","SqrtNode","InvSqrtNode","AbsNode","SignNode","FloorNode","CeilNode","FractNode","DDXNode","DDYNode","FWidthNode","CompAddNode","CompSubNode","CompMulNode","getType","inputs","CompDivNode","ModNode","MinNode","MaxNode","PowNode","StepNode","SmoothStepNode","FmaNode","ClampNode","SaturateNode","MixNode","NormalizeNode","FaceForwardNode","ReflectNode","RefractNode","LengthNode","DistanceNode","LogicallyAndNode","LogicallyOrNode","EqualNode","NotEqualNode","DotProductNode","CrossProductNode","SimplexNoise2DNode","PerlinNoise2DNode","Hash1Node","Hash2Node","Hash3Node"],"mappings":"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"}
1
+ {"version":3,"file":"math.js","sources":["../../../../src/utility/blueprint/common/math.ts"],"sourcesContent":["import type { Nullable } from '@zephyr3d/base';\r\nimport { BaseGraphNode, getNodeTypeComponents } from '../node';\r\nimport { defineProps } from '../../serialization/types';\r\n\r\n/**\r\n * Vector constructor node\r\n *\r\n * @remarks\r\n * Constructs a vector (vec2, vec3, or vec4) from individual components or smaller vectors.\r\n * Accepts 1-4 inputs which can be scalars (float) or vectors (vec2, vec3).\r\n * The output vector size is determined by the total number of components from all inputs.\r\n *\r\n * Valid combinations:\r\n * - vec2: float + float, or vec2\r\n * - vec3: float + float + float, vec2 + float, float + vec2, or vec3\r\n * - vec4: float + float + float + float, vec2 + vec2, vec3 + float, etc.\r\n *\r\n * @example\r\n * ```typescript\r\n * // Create vec3 from three floats\r\n * const makeVec3 = new MakeVectorNode();\r\n * makeVec3.connectInput(1, xNode, 1);\r\n * makeVec3.connectInput(2, yNode, 1);\r\n * makeVec3.connectInput(3, zNode, 1);\r\n *\r\n * // Create vec4 from vec3 and float\r\n * const makeVec4 = new MakeVectorNode();\r\n * makeVec4.connectInput(1, rgbNode, 1);\r\n * makeVec4.connectInput(2, alphaNode, 1);\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class MakeVectorNode extends BaseGraphNode {\r\n /**\r\n * Creates a new make vector node\r\n *\r\n * @remarks\r\n * Initializes with 4 optional input slots (a, b, c, d).\r\n * At least one input must be connected. Unused trailing inputs can be left disconnected.\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'a',\r\n type: ['float', 'vec2', 'vec3'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: 'b',\r\n type: ['float', 'vec2', 'vec3']\r\n },\r\n {\r\n id: 3,\r\n name: 'c',\r\n type: ['float', 'vec2', 'vec3']\r\n },\r\n {\r\n id: 4,\r\n name: 'd',\r\n type: ['float', 'vec2', 'vec3']\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'MakeVector'\r\n */\r\n toString() {\r\n return 'MakeVector';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: MakeVectorNode,\r\n name: 'MakeVectorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Validation checks:\r\n * - At least one input must be connected\r\n * - All inputs up to the last connected one must be present\r\n * - Total component count must be between 2 and 4\r\n * - All input types must be valid (float, vec2, or vec3)\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n let index = this._inputs.length - 1;\r\n while (index >= 0 && !this._inputs[index].inputNode) {\r\n index--;\r\n }\r\n if (index < 0) {\r\n return 'Missing arguments';\r\n }\r\n let n = 0;\r\n const types: string[] = [];\r\n for (let i = 0; i <= index; i++) {\r\n const name = this._inputs[i].name;\r\n if (!this._inputs[i].inputNode) {\r\n return `Missing argument \\`${name}\\``;\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[i].type.includes(type)) {\r\n return `Invalid input type ${type}`;\r\n }\r\n types.push(type);\r\n n += type === 'float' ? 1 : type === 'vec2' ? 2 : type === 'vec3' ? 3 : 0;\r\n }\r\n if (n < 2 || n > 4) {\r\n return `Invalid type combination ${types.join(',')}`;\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'vec2', 'vec3', 'vec4', or empty string if invalid\r\n *\r\n * @remarks\r\n * Counts total components from all connected inputs:\r\n * - float = 1 component\r\n * - vec2 = 2 components\r\n * - vec3 = 3 components\r\n * Returns vecN where N is the total component count (2-4).\r\n */\r\n protected getType() {\r\n let index = this._inputs.length - 1;\r\n while (index >= 0 && !this._inputs[index].inputNode) {\r\n index--;\r\n }\r\n if (index < 0) {\r\n return '';\r\n }\r\n let n = 0;\r\n for (let i = 0; i <= index; i++) {\r\n if (!this._inputs[i].inputNode) {\r\n return '';\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return '';\r\n }\r\n n += type === 'float' ? 1 : type === 'vec2' ? 2 : type === 'vec3' ? 3 : 0;\r\n }\r\n if (n < 2 || n > 4) {\r\n return '';\r\n }\r\n return `vec${n}`;\r\n }\r\n}\r\n\r\n/**\r\n * Vector swizzle node\r\n *\r\n * @public\r\n */\r\nexport class SwizzleNode extends BaseGraphNode {\r\n private _swizzle: string;\r\n /**\r\n * Creates a new swizzle node\r\n */\r\n constructor() {\r\n super();\r\n this._swizzle = '';\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /** Swizzle */\r\n get swizzle() {\r\n return this._swizzle;\r\n }\r\n set swizzle(val: string) {\r\n this._swizzle = val;\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Swizzle'\r\n */\r\n toString() {\r\n return 'Swizzle';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: SwizzleNode,\r\n name: 'SwizzleNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'Swizzle',\r\n type: 'string',\r\n get(this: SwizzleNode, value) {\r\n value.str[0] = this.swizzle;\r\n },\r\n set(this: SwizzleNode, value) {\r\n this.swizzle = value.str[0];\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Validation checks:\r\n * - At least one input must be connected\r\n * - All inputs up to the last connected one must be present\r\n * - Total component count must be between 2 and 4\r\n * - All input types must be valid (float, vec2, or vec3)\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const type = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n if (!type) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[0].type.includes(type)) {\r\n return `Invalid input type ${type}`;\r\n }\r\n let n: number;\r\n if (type === 'float') {\r\n n = 1;\r\n } else if (type === 'vec2') {\r\n n = 2;\r\n } else if (type === 'vec3') {\r\n n = 3;\r\n } else {\r\n n = 4;\r\n }\r\n if (\r\n this._swizzle.length === 0 ||\r\n this._swizzle.length > 4 ||\r\n ([...this._swizzle].some((val) => 'xyzw'.slice(0, n).indexOf(val) < 0) &&\r\n [...this._swizzle].some((val) => 'rgba'.slice(0, n).indexOf(val) < 0))\r\n ) {\r\n return `Invalid swizzle pattern: ${this._swizzle}`;\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'float', 'vec2', 'vec3', 'vec4', or empty string if invalid\r\n *\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n if (!this._inputs[0].inputNode) {\r\n return '';\r\n }\r\n const type = this._inputs[0].inputNode.getOutputType(this._inputs[0].inputId!);\r\n if (!type) {\r\n return '';\r\n }\r\n if (!this._inputs[0].type.includes(type)) {\r\n return '';\r\n }\r\n let n: number;\r\n if (type === 'float') {\r\n n = 1;\r\n } else if (type === 'vec2') {\r\n n = 2;\r\n } else if (type === 'vec3') {\r\n n = 3;\r\n } else {\r\n n = 4;\r\n }\r\n if (\r\n this._swizzle.length === 0 ||\r\n this._swizzle.length > 4 ||\r\n ([...this._swizzle].some((val) => 'xyzw'.slice(0, n).indexOf(val) < 0) &&\r\n [...this._swizzle].some((val) => 'rgba'.slice(0, n).indexOf(val) < 0))\r\n ) {\r\n return '';\r\n }\r\n return this._swizzle.length === 1 ? 'float' : `vec${this._swizzle.length}`;\r\n }\r\n}\r\n\r\n/**\r\n * Comparison mode\r\n * @public\r\n **/\r\nexport type ComparisonMode = 'eq' | 'ne' | 'lt' | 'le' | 'gt' | 'ge';\r\n\r\n/**\r\n * Vector comparison node\r\n *\r\n * @public\r\n */\r\nexport class CompComparisonNode extends BaseGraphNode {\r\n private _mode: ComparisonMode;\r\n /**\r\n * Creates a new swizzle node\r\n */\r\n constructor() {\r\n super();\r\n this._mode = 'eq';\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['vec2', 'vec3', 'vec4'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: '',\r\n type: ['vec2', 'vec3', 'vec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /** Swizzle */\r\n get mode() {\r\n return this._mode;\r\n }\r\n set mode(val: ComparisonMode) {\r\n this._mode = val;\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Swizzle'\r\n */\r\n toString() {\r\n return 'Comparison';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompComparisonNode,\r\n name: 'CompComparisonNode',\r\n getProps() {\r\n return defineProps([\r\n {\r\n name: 'mode',\r\n type: 'string',\r\n options: {\r\n enum: {\r\n labels: ['Equal', 'NotEqual', 'LessThan', 'LessThanEqual', 'GreaterThan', 'GreaterThanEqual'],\r\n values: ['eq', 'ne', 'lt', 'le', 'gt', 'ge']\r\n }\r\n },\r\n get(this: CompComparisonNode, value) {\r\n value.str[0] = this.mode;\r\n },\r\n set(this: CompComparisonNode, value) {\r\n this.mode = value.str[0] as ComparisonMode;\r\n }\r\n }\r\n ]);\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const type0 = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n const type1 = this._inputs[1].inputNode!.getOutputType(this._inputs[1].inputId!);\r\n if (type0 !== type1) {\r\n return 'Input arguments must be the same type';\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bvec2', 'bvec3', 'bvec4', or empty string if invalid\r\n *\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n const type = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n return `bvec${getNodeTypeComponents(type)}`;\r\n }\r\n}\r\n\r\n/**\r\n * Any condition node\r\n *\r\n * @public\r\n */\r\nexport class AnyConditionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new any-condition node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['bool', 'bvec2', 'bvec3', 'bvec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Any'\r\n */\r\n toString() {\r\n return 'Any';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: AnyConditionNode,\r\n name: 'AnyConditionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bool'\r\n *\r\n */\r\n protected getType() {\r\n return this.validate() ? '' : 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * All condition node\r\n *\r\n * @public\r\n */\r\nexport class AllConditionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new all-condition node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: '',\r\n type: ['bool', 'bvec2', 'bvec3', 'bvec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'All'\r\n */\r\n toString() {\r\n return 'All';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: AllConditionNode,\r\n name: 'AllConditionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bool'\r\n *\r\n */\r\n protected getType() {\r\n return this.validate() ? '' : 'bool';\r\n }\r\n}\r\n\r\n/**\r\n * Selection node\r\n *\r\n * @public\r\n */\r\nexport class SelectionNode extends BaseGraphNode {\r\n /**\r\n * Creates a new selection node\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'a',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: 'b',\r\n type: ['float', 'vec2', 'vec3', 'vec4'],\r\n required: true\r\n },\r\n {\r\n id: 3,\r\n name: 'condition',\r\n type: ['bool', 'bvec2', 'bvec3', 'bvec4'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Selection'\r\n */\r\n toString() {\r\n return 'Selection';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: SelectionNode,\r\n name: 'SelectionNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input types\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const type0 = this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n const type1 = this._inputs[1].inputNode!.getOutputType(this._inputs[1].inputId!);\r\n if (type0 !== type1) {\r\n return 'Input arguments 0-1 must be the same type';\r\n }\r\n const type2 = this._inputs[2].inputNode!.getOutputType(this._inputs[2].inputId!);\r\n const n = getNodeTypeComponents(type2);\r\n if (n > 1 && n !== getNodeTypeComponents(type0)) {\r\n return 'Invalid type of argument 2';\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on connected inputs\r\n *\r\n * @returns 'bool'\r\n *\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n return this._inputs[0].inputNode!.getOutputType(this._inputs[0].inputId!);\r\n }\r\n}\r\n\r\n/**\r\n * Matrix-vector transformation node\r\n *\r\n * @remarks\r\n * Performs matrix-vector or matrix-matrix multiplication using the shader's mul() function.\r\n * Supports transformations for 2D, 3D, and 4D spaces:\r\n * - mat2 * vec2 or vec2 * mat2\r\n * - mat3 * vec3 or vec3 * mat3\r\n * - mat4 * vec4 or vec4 * mat4\r\n * - mat2 * mat2, mat3 * mat3, mat4 * mat4\r\n *\r\n * Common uses:\r\n * - Transform positions by model/view/projection matrices\r\n * - Transform normals by inverse transpose matrices\r\n * - Chain matrix transformations\r\n *\r\n * @example\r\n * ```typescript\r\n * // Transform position by view-projection matrix\r\n * const transform = new TransformNode();\r\n * transform.connectInput(1, positionNode, 1); // vec4 position\r\n * transform.connectInput(2, viewProjMatrixNode, 1); // mat4 matrix\r\n *\r\n * // Transform normal by normal matrix\r\n * const normalTransform = new TransformNode();\r\n * normalTransform.connectInput(1, normalNode, 1); // vec3 normal\r\n * normalTransform.connectInput(2, normalMatrixNode, 1); // mat3 matrix\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class TransformNode extends BaseGraphNode {\r\n /**\r\n * Creates a new transform node\r\n *\r\n * @remarks\r\n * Initializes with two required inputs: the value to transform (a) and the transformation matrix (b).\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'a',\r\n type: ['vec2', 'vec3', 'vec4', 'mat2', 'mat3', 'mat4'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: 'b',\r\n type: ['vec2', 'vec3', 'vec4', 'mat2', 'mat3', 'mat4']\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'Transform'\r\n */\r\n toString() {\r\n return 'Transform';\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 * @remarks\r\n * No properties need to be serialized beyond the base node data.\r\n */\r\n static getSerializationCls() {\r\n return {\r\n ctor: TransformNode,\r\n name: 'TransformNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n /**\r\n * Validates the node state and input type compatibility\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Validates that the input types are compatible for multiplication:\r\n * - vec2 with mat2\r\n * - vec3 with mat3\r\n * - vec4 with mat4\r\n * - Compatible matrix-matrix multiplications\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n const types: string[] = [];\r\n for (let i = 0; i < 2; i++) {\r\n const name = this._inputs[i].name;\r\n if (!this._inputs[i].inputNode) {\r\n return `Missing argument \\`${name}\\``;\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[i].type.includes(type)) {\r\n return `Invalid input type ${type}`;\r\n }\r\n types.push(type);\r\n }\r\n if (types[0] === 'vec2' && types[1] === 'mat2') {\r\n return '';\r\n }\r\n if (types[0] === 'vec3' && types[1] === 'mat3') {\r\n return '';\r\n }\r\n if (types[0] === 'vec4' && types[1] === 'mat4') {\r\n return '';\r\n }\r\n if (types[0] === 'mat2' && (types[1] === 'mat2' || types[1] === 'vec2')) {\r\n return '';\r\n }\r\n if (types[0] === 'mat3' && (types[1] === 'mat3' || types[1] === 'vec3')) {\r\n return '';\r\n }\r\n if (types[0] === 'mat4' && (types[1] === 'mat4' || types[1] === 'vec4')) {\r\n return '';\r\n }\r\n return 'Invalid argument types of transformation';\r\n }\r\n /**\r\n * Gets the output type based on input types\r\n *\r\n * @returns The result type of the transformation, or empty string if invalid\r\n *\r\n * @remarks\r\n * Result type rules:\r\n * - vec * mat = vec (same dimension)\r\n * - mat * vec = vec (same dimension)\r\n * - mat * mat = mat (same dimension)\r\n */\r\n protected getType() {\r\n const err = this.validate();\r\n if (err) {\r\n return '';\r\n }\r\n const types: string[] = [];\r\n for (let i = 0; i < 2; i++) {\r\n if (!this._inputs[i].inputNode) {\r\n return '';\r\n }\r\n const type = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!type) {\r\n return '';\r\n }\r\n if (!this._inputs[i].type.includes(type)) {\r\n return '';\r\n }\r\n types.push(type);\r\n }\r\n if (types[0] === 'vec2' && types[1] === 'mat2') {\r\n return 'vec2';\r\n }\r\n if (types[0] === 'vec3' && types[1] === 'mat3') {\r\n return 'vec3';\r\n }\r\n if (types[0] === 'vec4' && types[1] === 'mat4') {\r\n return 'vec4';\r\n }\r\n if (types[0] === 'mat2' && (types[1] === 'mat2' || types[1] === 'vec2')) {\r\n return types[1] === 'mat2' ? 'mat2' : 'vec2';\r\n }\r\n if (types[0] === 'mat3' && (types[1] === 'mat3' || types[1] === 'vec3')) {\r\n return types[1] === 'mat3' ? 'mat3' : 'vec3';\r\n }\r\n if (types[0] === 'mat4' && (types[1] === 'mat4' || types[1] === 'vec4')) {\r\n return types[1] === 'mat4' ? 'mat4' : 'vec4';\r\n }\r\n return '';\r\n }\r\n}\r\n\r\n/**\r\n * Rotate about axis node\r\n *\r\n * @remarks\r\n * Rotates a position around a pivot along a normalized axis by a given angle.\r\n * Angle input is in turns (1.0 = 360 degrees).\r\n *\r\n * Outputs:\r\n * - Output 1: Rotated position (vec3)\r\n *\r\n * @example\r\n * ```typescript\r\n * const rotate = new RotateAboutAxisNode();\r\n * rotate.connectInput(1, axisNode, 1); // normalized axis (vec3)\r\n * rotate.connectInput(2, angleNode, 1); // angle in turns (float)\r\n * rotate.connectInput(3, pivotNode, 1); // pivot (vec3)\r\n * rotate.connectInput(4, posNode, 1); // position (vec3)\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport class RotateAboutAxisNode extends BaseGraphNode {\r\n /**\r\n * Creates a new rotate-about-axis node\r\n *\r\n * @remarks\r\n * Initializes with four inputs and one output.\r\n */\r\n constructor() {\r\n super();\r\n this._inputs = [\r\n {\r\n id: 1,\r\n name: 'NormalizedRotationAxis',\r\n type: ['vec3'],\r\n required: true\r\n },\r\n {\r\n id: 2,\r\n name: 'RotationAngle',\r\n type: ['float'],\r\n defaultValue: [0]\r\n },\r\n {\r\n id: 3,\r\n name: 'PivotPoint',\r\n type: ['vec3'],\r\n defaultValue: [0, 0, 0]\r\n },\r\n {\r\n id: 4,\r\n name: 'Position',\r\n type: ['vec3'],\r\n required: true\r\n }\r\n ];\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns 'RotateAboutAxis'\r\n */\r\n toString() {\r\n return 'RotateAboutAxis';\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: RotateAboutAxisNode,\r\n name: 'RotateAboutAxisNode',\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 beyond base validation)\r\n */\r\n protected validate() {\r\n return super.validate();\r\n }\r\n /**\r\n * Gets the output type\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 * Abstract base class for generic mathematical function nodes\r\n *\r\n * @remarks\r\n * Provides a flexible framework for shader math functions that:\r\n * - Accept N arguments of specified types\r\n * - Perform type validation and inference\r\n * - Support both uniform input types and mixed types\r\n *\r\n * Type handling:\r\n * - By default, all inputs must be the same type (float, vec2, vec3, or vec4)\r\n * - `explicitInTypes` allows specific inputs to accept only certain types\r\n * - `additionalInTypes` allows specific inputs to accept additional mixed types\r\n * - `originTypes` specifies type casting requirements\r\n *\r\n * The output type is either:\r\n * - Explicitly specified via `outType`\r\n * - Inferred from the common input type\r\n *\r\n * @example\r\n * ```typescript\r\n * // Simple function with uniform types (all float or all vec3, etc.)\r\n * class AddNode extends GenericMathNode {\r\n * constructor() {\r\n * super('add', 2); // 2 arguments, output type = input type\r\n * }\r\n * }\r\n *\r\n * // Function with explicit output type\r\n * class LengthNode extends GenericMathNode {\r\n * constructor() {\r\n * super('length', 1, 'float'); // 1 argument, always outputs float\r\n * }\r\n * }\r\n *\r\n * // Function with mixed input types\r\n * class MulNode extends GenericMathNode {\r\n * constructor() {\r\n * // Allow scalar multiplication: vec * float or float * vec\r\n * super('mul', 2, null, null, null, { '1': ['float'], '2': ['float'] });\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @public\r\n */\r\nexport abstract class GenericMathNode extends BaseGraphNode {\r\n /** The shader function name (e.g., 'sin', 'add', 'normalize') */\r\n readonly func: string;\r\n /** The explicit output type, if specified (otherwise inferred from inputs) */\r\n readonly outType: string;\r\n /** Maps input slot IDs to allowed types for that specific slot */\r\n readonly explicitInTypes: Nullable<Record<number, string[]>>;\r\n /** Maps input slot IDs to additional allowed types beyond the common type */\r\n readonly additionalInTypes: Nullable<Record<number, string[]>>;\r\n /**\r\n * Creates a new generic math node\r\n *\r\n * @param func - The shader function name\r\n * @param numArgs - Number of input arguments\r\n * @param outType - Explicit output type (null to infer from inputs)\r\n * @param inTypes - Default allowed input types (defaults to all vector types)\r\n * @param explicitInTypes - Per-slot type restrictions\r\n * @param additionalInTypes - Per-slot additional allowed types\r\n * @param originTypes - Per-slot type casting requirements\r\n *\r\n * @remarks\r\n * Creates input slots named 'a', 'b', 'c', etc. based on numArgs.\r\n * All inputs are required by default.\r\n */\r\n constructor(\r\n func: string,\r\n numArgs: number,\r\n outType?: Nullable<string>,\r\n inTypes?: Nullable<string[]>,\r\n explicitInTypes?: Nullable<Record<number, string[]>>,\r\n additionalInTypes?: Nullable<Record<number, string[]>>,\r\n originTypes?: string[]\r\n ) {\r\n super();\r\n this.func = func;\r\n this.outType = outType ?? '';\r\n this.explicitInTypes = explicitInTypes ?? null;\r\n this.additionalInTypes = additionalInTypes ?? null;\r\n inTypes = inTypes ?? ['float', 'vec2', 'vec3', 'vec4'];\r\n this._inputs = Array.from({ length: numArgs }).map((_, index) => ({\r\n id: index + 1,\r\n name: 'abcdefghijklmn'[index],\r\n type: this.explicitInTypes?.[index + 1] ?? [\r\n ...new Set([...inTypes, ...(this.additionalInTypes?.[index + 1] ?? [])])\r\n ],\r\n required: true,\r\n originType: originTypes?.[index]\r\n }));\r\n this._outputs = [\r\n {\r\n id: 1,\r\n name: ''\r\n }\r\n ];\r\n }\r\n /**\r\n * Generates a string representation of this node\r\n *\r\n * @returns The function name\r\n */\r\n toString() {\r\n return this.func;\r\n }\r\n /**\r\n * Validates the node state and input type compatibility\r\n *\r\n * @returns Error message if invalid, empty string if valid\r\n *\r\n * @remarks\r\n * Ensures all inputs:\r\n * - Have determinable types\r\n * - Have allowed types for their slot\r\n * - Share a common type (unless explicitly or additionally typed)\r\n */\r\n protected validate() {\r\n const err = super.validate();\r\n if (err) {\r\n return err;\r\n }\r\n let type: string = '';\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n const name = 'abcdefghijklmn'[i];\r\n const t = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!t) {\r\n return `Cannot determine type of argument \\`${name}\\``;\r\n }\r\n if (!this._inputs[i].type.includes(t)) {\r\n return `Invalid input type ${t}`;\r\n }\r\n if (!this.explicitInTypes || !this.explicitInTypes[this._inputs[i].id]) {\r\n if (!this.additionalInTypes || !this.additionalInTypes[this._inputs[i].id]?.includes(t)) {\r\n if (type && t !== type) {\r\n return 'Invalid Arguments types';\r\n } else {\r\n type = t;\r\n }\r\n }\r\n }\r\n }\r\n return '';\r\n }\r\n /**\r\n * Gets the output type based on input types\r\n *\r\n * @returns The output type, or empty string if invalid\r\n *\r\n * @remarks\r\n * Returns the explicit output type if specified, otherwise infers\r\n * the common type from non-explicit, non-additional inputs.\r\n */\r\n protected getType() {\r\n if (this.outType) {\r\n return this.outType;\r\n }\r\n let type: string = '';\r\n for (let i = 0; i < this._inputs.length; i++) {\r\n if (!this._inputs[i].inputNode) {\r\n return '';\r\n }\r\n const t = this._inputs[i].inputNode!.getOutputType(this._inputs[i].inputId!);\r\n if (!t) {\r\n return '';\r\n }\r\n if (!this.explicitInTypes || !this.explicitInTypes[this._inputs[i].id]) {\r\n if (!this.additionalInTypes || !this.additionalInTypes[this._inputs[i].id]?.includes(t)) {\r\n if (type && t !== type) {\r\n return 'Invalid Arguments types';\r\n } else {\r\n type = t;\r\n }\r\n }\r\n }\r\n }\r\n return type;\r\n }\r\n}\r\n\r\n/**\r\n * Converts degrees to radians\r\n *\r\n * @remarks\r\n * Applies the formula: radians = degrees * (π / 180)\r\n * Supports scalar and vector inputs.\r\n *\r\n * @public\r\n */\r\nexport class Degrees2RadiansNode extends GenericMathNode {\r\n constructor() {\r\n super('degrees2radians', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Degrees2RadiansNode,\r\n name: 'Degrees2RadiansNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Converts radians to degrees\r\n *\r\n * @remarks\r\n * Applies the formula: degrees = radians * (180 / π)\r\n * Supports scalar and vector inputs.\r\n *\r\n * @public\r\n */\r\nexport class Radians2DegreesNode extends GenericMathNode {\r\n constructor() {\r\n super('radians2degrees', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Radians2DegreesNode,\r\n name: 'Radians2DegreesNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the sine function\r\n *\r\n * @remarks\r\n * Returns sin(x) for input x in radians.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SinNode extends GenericMathNode {\r\n constructor() {\r\n super('sin', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SinNode,\r\n name: 'SinNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the cosine function\r\n *\r\n * @remarks\r\n * Returns cos(x) for input x in radians.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class CosNode extends GenericMathNode {\r\n constructor() {\r\n super('cos', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CosNode,\r\n name: 'CosNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the tangent function\r\n *\r\n * @remarks\r\n * Returns tan(x) for input x in radians.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class TanNode extends GenericMathNode {\r\n constructor() {\r\n super('tan', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: TanNode,\r\n name: 'TanNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the arcsine (inverse sine) function\r\n *\r\n * @remarks\r\n * Returns asin(x) in radians for input x in the range [-1, 1].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcSinNode extends GenericMathNode {\r\n constructor() {\r\n super('asin', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcSinNode,\r\n name: 'ArcSinNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the arccosine (inverse cosine) function\r\n *\r\n * @remarks\r\n * Returns acos(x) in radians for input x in the range [-1, 1].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcCosNode extends GenericMathNode {\r\n constructor() {\r\n super('acos', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcCosNode,\r\n name: 'ArcCosNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the arctangent (inverse tangent) function\r\n *\r\n * @remarks\r\n * Returns atan(x) in radians for input x.\r\n * Result is in the range [-π/2, π/2].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcTanNode extends GenericMathNode {\r\n constructor() {\r\n super('atan', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcTanNode,\r\n name: 'ArcTanNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the two-argument arctangent function\r\n *\r\n * @remarks\r\n * Returns atan2(y, x) in radians, the angle in the range [-π, π]\r\n * whose tangent is y/x, using the signs of both arguments to determine\r\n * the quadrant of the result.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcTan2Node extends GenericMathNode {\r\n constructor() {\r\n super('atan2', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcTan2Node,\r\n name: 'ArcTan2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the hyperbolic sine function\r\n *\r\n * @remarks\r\n * Returns sinh(x) = (e^x - e^(-x)) / 2\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SinHNode extends GenericMathNode {\r\n constructor() {\r\n super('sinh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SinHNode,\r\n name: 'SinHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the hyperbolic cosine function\r\n *\r\n * @remarks\r\n * Returns cosh(x) = (e^x + e^(-x)) / 2\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class CosHNode extends GenericMathNode {\r\n constructor() {\r\n super('cosh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CosHNode,\r\n name: 'CosHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the hyperbolic tangent function\r\n *\r\n * @remarks\r\n * Returns tanh(x) = sinh(x) / cosh(x)\r\n * Result is in the range [-1, 1].\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class TanHNode extends GenericMathNode {\r\n constructor() {\r\n super('tanh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: TanHNode,\r\n name: 'TanHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse hyperbolic sine function\r\n *\r\n * @remarks\r\n * Returns asinh(x) = ln(x + sqrt(x^2 + 1))\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArcsineHNode extends GenericMathNode {\r\n constructor() {\r\n super('asinh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArcsineHNode,\r\n name: 'ArcsineHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse hyperbolic cosine function\r\n *\r\n * @remarks\r\n * Returns acosh(x) = ln(x + sqrt(x^2 - 1)) for x \\>= 1\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArccosineHNode extends GenericMathNode {\r\n constructor() {\r\n super('acosh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArccosineHNode,\r\n name: 'ArccosineHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse hyperbolic tangent function\r\n *\r\n * @remarks\r\n * Returns atanh(x) = 0.5 * ln((1 + x) / (1 - x)) for |x| \\< 1\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ArctangentHNode extends GenericMathNode {\r\n constructor() {\r\n super('atanh', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ArctangentHNode,\r\n name: 'ArctangentHNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the natural exponential function\r\n *\r\n * @remarks\r\n * Returns e^x (Euler's number raised to the power x).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class ExpNode extends GenericMathNode {\r\n constructor() {\r\n super('exp', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ExpNode,\r\n name: 'ExpNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the base-2 exponential function\r\n *\r\n * @remarks\r\n * Returns 2^x (2 raised to the power x).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class Exp2Node extends GenericMathNode {\r\n constructor() {\r\n super('exp2', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Exp2Node,\r\n name: 'Exp2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the natural logarithm\r\n *\r\n * @remarks\r\n * Returns ln(x) (logarithm base e) for x \\> 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class LogNode extends GenericMathNode {\r\n constructor() {\r\n super('log', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LogNode,\r\n name: 'LogNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the base-2 logarithm\r\n *\r\n * @remarks\r\n * Returns log₂(x) (logarithm base 2) for x \\> 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class Log2Node extends GenericMathNode {\r\n constructor() {\r\n super('log2', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Log2Node,\r\n name: 'Log2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the square root\r\n *\r\n * @remarks\r\n * Returns √x for x \\>= 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SqrtNode extends GenericMathNode {\r\n constructor() {\r\n super('sqrt', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SqrtNode,\r\n name: 'SqrtNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the inverse square root\r\n *\r\n * @remarks\r\n * Returns 1/√x for x \\> 0.\r\n * Often more efficient than computing sqrt then dividing.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class InvSqrtNode extends GenericMathNode {\r\n constructor() {\r\n super('inverseSqrt', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: InvSqrtNode,\r\n name: 'InvSqrtNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the absolute value\r\n *\r\n * @remarks\r\n * Returns |x| (magnitude without sign).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class AbsNode extends GenericMathNode {\r\n constructor() {\r\n super('abs', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: AbsNode,\r\n name: 'AbsNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Extracts the sign of a value\r\n *\r\n * @remarks\r\n * Returns -1 if x \\< 0, 0 if x = 0, +1 if x \\> 0.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class SignNode extends GenericMathNode {\r\n constructor() {\r\n super('sign', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SignNode,\r\n name: 'SignNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Rounds down to the nearest integer\r\n *\r\n * @remarks\r\n * Returns the largest integer value not greater than x.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class FloorNode extends GenericMathNode {\r\n constructor() {\r\n super('floor', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FloorNode,\r\n name: 'FloorNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Rounds up to the nearest integer\r\n *\r\n * @remarks\r\n * Returns the smallest integer value not less than x.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class CeilNode extends GenericMathNode {\r\n constructor() {\r\n super('ceil', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CeilNode,\r\n name: 'CeilNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the fractional part\r\n *\r\n * @remarks\r\n * Returns x - floor(x), the decimal part of x.\r\n * Result is always in the range [0, 1).\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class FractNode extends GenericMathNode {\r\n constructor() {\r\n super('fract', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FractNode,\r\n name: 'FractNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the partial derivative with respect to screen-space X\r\n *\r\n * @remarks\r\n * Returns the rate of change of the input value across adjacent pixels in the X direction.\r\n * Only available in fragment shaders.\r\n * Useful for computing gradients, detecting edges, and adjusting sampling rates.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class DDXNode extends GenericMathNode {\r\n constructor() {\r\n super('dpdx', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DDXNode,\r\n name: 'DDXNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the partial derivative with respect to screen-space Y\r\n *\r\n * @remarks\r\n * Returns the rate of change of the input value across adjacent pixels in the Y direction.\r\n * Only available in fragment shaders.\r\n * Useful for computing gradients, detecting edges, and adjusting sampling rates.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class DDYNode extends GenericMathNode {\r\n constructor() {\r\n super('dpdy', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DDYNode,\r\n name: 'DDYNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Computes the sum of absolute derivatives\r\n *\r\n * @remarks\r\n * Returns abs(dpdx(x)) + abs(dpdy(x)), representing the total rate of change\r\n * across both screen axes. Useful for automatic LOD calculation and edge detection.\r\n * Only available in fragment shaders.\r\n * Supports scalar and vector inputs (component-wise for vectors).\r\n *\r\n * @public\r\n */\r\nexport class FWidthNode extends GenericMathNode {\r\n constructor() {\r\n super('fwidth', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FWidthNode,\r\n name: 'FWidthNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise addition\r\n *\r\n * @remarks\r\n * Returns a + b for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n *\r\n * @public\r\n */\r\nexport class CompAddNode extends GenericMathNode {\r\n constructor() {\r\n super('add', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompAddNode,\r\n name: 'CompAddNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise subtraction\r\n *\r\n * @remarks\r\n * Returns a - b for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n *\r\n * @public\r\n */\r\nexport class CompSubNode extends GenericMathNode {\r\n constructor() {\r\n super('sub', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompSubNode,\r\n name: 'CompSubNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise multiplication with scalar support\r\n *\r\n * @remarks\r\n * Returns a * b for each component.\r\n * Supports:\r\n * - vec * vec (component-wise)\r\n * - vec * float (scalar multiplication)\r\n * - float * vec (scalar multiplication)\r\n * - float * float\r\n *\r\n * For matrix multiplication, use TransformNode instead.\r\n *\r\n * @public\r\n */\r\nexport class CompMulNode extends GenericMathNode {\r\n constructor() {\r\n super('mul', 2, null, null, null, { '1': ['float'], '2': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompMulNode,\r\n name: 'CompMulNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n protected getType() {\r\n const type1 = this.inputs[0].inputNode\r\n ? this.inputs[0].inputNode.getOutputType(this.inputs[0].inputId!)\r\n : '';\r\n const type2 = this.inputs[1].inputNode\r\n ? this.inputs[1].inputNode.getOutputType(this.inputs[1].inputId!)\r\n : '';\r\n if (!type1 || !type2) {\r\n return '';\r\n }\r\n return type1 === 'float' ? type2 : type1;\r\n }\r\n}\r\n\r\n/**\r\n * Component-wise division\r\n *\r\n * @remarks\r\n * Returns a / b for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Division by zero produces undefined results.\r\n *\r\n * @public\r\n */\r\nexport class CompDivNode extends GenericMathNode {\r\n constructor() {\r\n super('div', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CompDivNode,\r\n name: 'CompDivNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Modulo operation\r\n *\r\n * @remarks\r\n * Returns a - b * floor(a / b), the remainder of a divided by b.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class ModNode extends GenericMathNode {\r\n constructor() {\r\n super('mod', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ModNode,\r\n name: 'ModNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Returns the minimum of two values\r\n *\r\n * @remarks\r\n * Returns min(a, b) for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class MinNode extends GenericMathNode {\r\n constructor() {\r\n super('min', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: MinNode,\r\n name: 'MinNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Returns the maximum of two values\r\n *\r\n * @remarks\r\n * Returns max(a, b) for each component.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class MaxNode extends GenericMathNode {\r\n constructor() {\r\n super('max', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: MaxNode,\r\n name: 'MaxNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Raises a value to a power\r\n *\r\n * @remarks\r\n * Returns a^b (a raised to the power b).\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class PowNode extends GenericMathNode {\r\n constructor() {\r\n super('pow', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: PowNode,\r\n name: 'PowNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Step function (Heaviside step)\r\n *\r\n * @remarks\r\n * Returns 0 if x \\< edge, otherwise 1.\r\n * Useful for creating hard thresholds.\r\n * Both inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class StepNode extends GenericMathNode {\r\n constructor() {\r\n super('step', 2);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: StepNode,\r\n name: 'StepNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * SmoothStep function\r\n *\r\n * @public\r\n */\r\nexport class SmoothStepNode extends GenericMathNode {\r\n constructor() {\r\n super('smoothStep', 3);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SmoothStepNode,\r\n name: 'SmoothStepNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Fused multiply-add operation\r\n *\r\n * @remarks\r\n * Returns a * b + c in a single operation.\r\n * More accurate and potentially faster than separate multiply and add.\r\n * All three inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class FmaNode extends GenericMathNode {\r\n constructor() {\r\n super('fma', 3);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FmaNode,\r\n name: 'FmaNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Clamps a value to a specified range\r\n *\r\n * @remarks\r\n * Returns min(max(x, minVal), maxVal).\r\n * Constrains x to be between minVal and maxVal.\r\n * All three inputs must be the same type (float, vec2, vec3, or vec4).\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class ClampNode extends GenericMathNode {\r\n constructor() {\r\n super('clamp', 3);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ClampNode,\r\n name: 'ClampNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Clamps a value to the range [0, 1]\r\n *\r\n * @remarks\r\n * Returns clamp(x, 0, 1).\r\n * Commonly used to ensure color values are in valid range.\r\n * Supports float, vec2, vec3, and vec4 inputs.\r\n * Component-wise for vectors.\r\n *\r\n * @public\r\n */\r\nexport class SaturateNode extends GenericMathNode {\r\n constructor() {\r\n super('saturate', 1);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SaturateNode,\r\n name: 'SaturateNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Linear interpolation between two values\r\n *\r\n * @remarks\r\n * Returns a * (1 - t) + b * t, blending between a and b based on t.\r\n * When t = 0, returns a; when t = 1, returns b.\r\n * The first two inputs must be the same type (float, vec2, vec3, or vec4).\r\n * The third input (t) can be a float for uniform interpolation or a vector for component-wise interpolation.\r\n *\r\n * @public\r\n */\r\nexport class MixNode extends GenericMathNode {\r\n constructor() {\r\n super('mix', 3, null, null, null, { '3': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: MixNode,\r\n name: 'MixNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Normalizes a vector to unit length\r\n *\r\n * @remarks\r\n * Returns x / length(x), a vector in the same direction with length 1.\r\n * Only supports vector inputs (vec2, vec3, vec4).\r\n * Essential for working with directions, normals, and lighting calculations.\r\n *\r\n * @public\r\n */\r\nexport class NormalizeNode extends GenericMathNode {\r\n constructor() {\r\n super('normalize', 1, null, ['vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: NormalizeNode,\r\n name: 'NormalizeNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Flips a vector to face forward\r\n *\r\n * @remarks\r\n * Returns N if dot(Nref, I) \\< 0, otherwise -N.\r\n * Used to orient a normal to face away from a surface (opposite to incident direction).\r\n * All three inputs must be the same vector type (vec2 or vec3).\r\n *\r\n * @public\r\n */\r\nexport class FaceForwardNode extends GenericMathNode {\r\n constructor() {\r\n super('faceForward', 3, null, ['vec2', 'vec3']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: FaceForwardNode,\r\n name: 'FaceForwardNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the reflection direction\r\n *\r\n * @remarks\r\n * Returns I - 2 * dot(N, I) * N, the reflection of incident vector I about normal N.\r\n * Both inputs must be the same vector type (vec2 or vec3).\r\n * Used for environment mapping and reflections.\r\n *\r\n * @public\r\n */\r\nexport class ReflectNode extends GenericMathNode {\r\n constructor() {\r\n super('reflect', 2, null, ['vec2', 'vec3']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: ReflectNode,\r\n name: 'ReflectNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the refraction direction\r\n *\r\n * @remarks\r\n * Returns the refraction of incident vector I through surface with normal N\r\n * using the ratio of indices of refraction eta.\r\n * The first two inputs must be the same vector type (vec2 or vec3).\r\n * The third input (eta) is always a float scalar.\r\n * Used for transparent materials and refractive effects.\r\n *\r\n * @public\r\n */\r\nexport class RefractNode extends GenericMathNode {\r\n constructor() {\r\n super('refract', 3, null, ['vec2', 'vec3'], { '3': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: RefractNode,\r\n name: 'RefractNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the length of a vector\r\n *\r\n * @remarks\r\n * Returns sqrt(x.x + x.y + x.z + ...), the Euclidean length of the vector.\r\n * Supports vector inputs (vec2, vec3, vec4).\r\n * Always returns a float scalar.\r\n *\r\n * @public\r\n */\r\nexport class LengthNode extends GenericMathNode {\r\n constructor() {\r\n super('length', 1, 'float');\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LengthNode,\r\n name: 'LengthNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the distance between two points\r\n *\r\n * @remarks\r\n * Returns length(a - b), the Euclidean distance between points a and b.\r\n * Both inputs must be the same vector type (vec2, vec3, or vec4).\r\n * Always returns a float scalar.\r\n *\r\n * @public\r\n */\r\nexport class DistanceNode extends GenericMathNode {\r\n constructor() {\r\n super('distance', 2, 'float');\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DistanceNode,\r\n name: 'DistanceNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Logically and\r\n *\r\n * @public\r\n */\r\nexport class LogicallyAndNode extends GenericMathNode {\r\n constructor() {\r\n super('and', 2, 'bool', ['bool']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LogicallyAndNode,\r\n name: 'LogicallyAndNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Logically or\r\n *\r\n * @public\r\n */\r\nexport class LogicallyOrNode extends GenericMathNode {\r\n constructor() {\r\n super('or', 2, 'bool', ['bool']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: LogicallyOrNode,\r\n name: 'LogicallyOrNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Equal test across two scalar or vectors\r\n *\r\n * @public\r\n */\r\nexport class EqualNode extends GenericMathNode {\r\n constructor() {\r\n super('equal', 2, 'bool', ['float', 'vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: EqualNode,\r\n name: 'EqualNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Not-Equal test across two scalar or vectors\r\n *\r\n * @public\r\n */\r\nexport class NotEqualNode extends GenericMathNode {\r\n constructor() {\r\n super('notEqual', 2, 'bool', ['float', 'vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: NotEqualNode,\r\n name: 'NotEqualNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n/**\r\n * Calculates the dot product of two vectors\r\n *\r\n * @remarks\r\n * Returns a.x * b.x + a.y * b.y + ... (sum of component-wise products).\r\n * Both inputs must be the same vector type (vec2, vec3, or vec4).\r\n * Always returns a float scalar.\r\n *\r\n * Used for:\r\n * - Calculating angles between vectors (via cosine)\r\n * - Projecting one vector onto another\r\n * - Lighting calculations (Lambert's cosine law)\r\n *\r\n * @public\r\n */\r\nexport class DotProductNode extends GenericMathNode {\r\n constructor() {\r\n super('dot', 2, 'float', ['vec2', 'vec3', 'vec4']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: DotProductNode,\r\n name: 'DotProductNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates the cross product of two 3D vectors\r\n *\r\n * @remarks\r\n * Returns a vector perpendicular to both input vectors.\r\n * Both inputs must be vec3.\r\n * Always returns vec3.\r\n *\r\n * The magnitude of the result equals the area of the parallelogram\r\n * formed by the two input vectors.\r\n *\r\n * Used for:\r\n * - Calculating surface normals from tangent vectors\r\n * - Finding perpendicular directions\r\n * - Computing oriented areas\r\n *\r\n * @public\r\n */\r\nexport class CrossProductNode extends GenericMathNode {\r\n constructor() {\r\n super('cross', 2, null, ['vec3']);\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: CrossProductNode,\r\n name: 'CrossProductNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a simplex noise by input UV and scale value\r\n *\r\n * @remarks\r\n * Returns a float value\r\n *\r\n * @public\r\n */\r\nexport class SimplexNoise2DNode extends GenericMathNode {\r\n constructor() {\r\n super('Z_simplexNoise2D', 2, 'float', null, { '1': ['vec2'], '2': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: SimplexNoise2DNode,\r\n name: 'SimplexNoise2DNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates a perlin noise by input UV and scale value\r\n *\r\n * @remarks\r\n * Returns a float value\r\n *\r\n * @public\r\n */\r\nexport class PerlinNoise2DNode extends GenericMathNode {\r\n constructor() {\r\n super('Z_perlinNoise2D', 2, 'float', null, { '1': ['vec2'], '2': ['float'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: PerlinNoise2DNode,\r\n name: 'PerlinNoise2DNode',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates float hash by input scalar value or vector value\r\n *\r\n * @public\r\n */\r\nexport class Hash1Node extends GenericMathNode {\r\n constructor() {\r\n super('Z_hash1', 1, 'float', null, { '1': ['float', 'vec2', 'vec3'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Hash1Node,\r\n name: 'Hash1Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates vec2 hash by input scalar value or vector value\r\n *\r\n * @public\r\n */\r\nexport class Hash2Node extends GenericMathNode {\r\n constructor() {\r\n super('Z_hash2', 1, 'vec2', null, { '1': ['float', 'vec2', 'vec3'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Hash2Node,\r\n name: 'Hash2Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Calculates vec3 hash by input scalar value or vector value\r\n *\r\n * @public\r\n */\r\nexport class Hash3Node extends GenericMathNode {\r\n constructor() {\r\n super('Z_hash3', 1, 'vec3', null, { '1': ['float', 'vec2', 'vec3'] });\r\n }\r\n static getSerializationCls() {\r\n return {\r\n ctor: Hash3Node,\r\n name: 'Hash3Node',\r\n getProps() {\r\n return [];\r\n }\r\n };\r\n }\r\n}\r\n"],"names":["MakeVectorNode","BaseGraphNode","_inputs","id","name","type","required","_outputs","toString","getSerializationCls","ctor","getProps","err","validate","index","length","inputNode","n","types","i","getOutputType","inputId","includes","push","join","SwizzleNode","_swizzle","swizzle","val","defineProps","get","value","str","set","some","slice","indexOf","CompComparisonNode","_mode","mode","options","enum","labels","values","type0","type1","getNodeTypeComponents","AnyConditionNode","AllConditionNode","SelectionNode","type2","TransformNode","RotateAboutAxisNode","defaultValue","GenericMathNode","func","numArgs","outType","inTypes","explicitInTypes","additionalInTypes","originTypes","Array","from","map","_","Set","originType","t","Degrees2RadiansNode","Radians2DegreesNode","SinNode","CosNode","TanNode","ArcSinNode","ArcCosNode","ArcTanNode","ArcTan2Node","SinHNode","CosHNode","TanHNode","ArcsineHNode","ArccosineHNode","ArctangentHNode","ExpNode","Exp2Node","LogNode","Log2Node","SqrtNode","InvSqrtNode","AbsNode","SignNode","FloorNode","CeilNode","FractNode","DDXNode","DDYNode","FWidthNode","CompAddNode","CompSubNode","CompMulNode","getType","inputs","CompDivNode","ModNode","MinNode","MaxNode","PowNode","StepNode","SmoothStepNode","FmaNode","ClampNode","SaturateNode","MixNode","NormalizeNode","FaceForwardNode","ReflectNode","RefractNode","LengthNode","DistanceNode","LogicallyAndNode","LogicallyOrNode","EqualNode","NotEqualNode","DotProductNode","CrossProductNode","SimplexNoise2DNode","PerlinNoise2DNode","Hash1Node","Hash2Node","Hash3Node"],"mappings":"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"}