@unikia/upe-renderer 0.186.110 → 0.187.11

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 (506) hide show
  1. package/README.md +5 -7
  2. package/UPSTREAM.md +4 -4
  3. package/build/three.core.js +853 -277
  4. package/build/three.module.js +1098 -1280
  5. package/build/three.tsl.js +41938 -686
  6. package/build/three.webgpu.js +10604 -49055
  7. package/build/three.webgpu.nodes.js +9249 -5788
  8. package/examples/jsm/Addons.js +2 -0
  9. package/examples/jsm/animation/CCDIKSolver.js +17 -5
  10. package/examples/jsm/controls/FirstPersonControls.js +1 -1
  11. package/examples/jsm/controls/OrbitControls.js +27 -14
  12. package/examples/jsm/csm/CSMShader.js +74 -3
  13. package/examples/jsm/curves/CurveExtras.js +4 -4
  14. package/examples/jsm/curves/NURBSCurve.js +14 -0
  15. package/examples/jsm/exporters/EXRExporter.js +673 -16
  16. package/examples/jsm/exporters/GLTFExporter.js +4 -4
  17. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  18. package/examples/jsm/exporters/OBJExporter.js +48 -5
  19. package/examples/jsm/exporters/PLYExporter.js +22 -11
  20. package/examples/jsm/generators/CityGenerator.js +3 -2
  21. package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
  22. package/examples/jsm/gpgpu/BitonicSort.js +30 -23
  23. package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
  24. package/examples/jsm/inspector/Extension.js +1 -1
  25. package/examples/jsm/inspector/Inspector.js +6 -46
  26. package/examples/jsm/inspector/RendererInspector.js +43 -8
  27. package/examples/jsm/inspector/Storage.js +49 -0
  28. package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
  29. package/examples/jsm/inspector/tabs/Parameters.js +5 -1
  30. package/examples/jsm/inspector/tabs/Performance.js +22 -7
  31. package/examples/jsm/inspector/tabs/Settings.js +1 -1
  32. package/examples/jsm/inspector/tabs/Timeline.js +83 -7
  33. package/examples/jsm/inspector/tabs/Viewer.js +25 -10
  34. package/examples/jsm/inspector/ui/Profiler.js +1 -1
  35. package/examples/jsm/inspector/ui/Style.js +21 -53
  36. package/examples/jsm/inspector/ui/Values.js +28 -3
  37. package/examples/jsm/libs/fflate.module.js +83 -56
  38. package/examples/jsm/libs/mikktspace.README.md +27 -0
  39. package/examples/jsm/libs/mikktspace.module.js +721 -109
  40. package/examples/jsm/lighting/ClusteredLighting.js +100 -2
  41. package/examples/jsm/lighting/LightMapper.js +295 -0
  42. package/examples/jsm/lighting/LightProbeGrid.js +242 -139
  43. package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
  44. package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
  45. package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
  46. package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
  47. package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
  48. package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
  49. package/examples/jsm/lights/SunLight.js +9 -4
  50. package/examples/jsm/lights/SunLightNode.js +3 -3
  51. package/examples/jsm/lines/LineMaterial.js +26 -10
  52. package/examples/jsm/loaders/3DMLoader.js +10 -1
  53. package/examples/jsm/loaders/3MFLoader.js +5 -1
  54. package/examples/jsm/loaders/AMFLoader.js +2 -0
  55. package/examples/jsm/loaders/BVHLoader.js +2 -0
  56. package/examples/jsm/loaders/ColladaLoader.js +8 -0
  57. package/examples/jsm/loaders/DDSLoader.js +1 -1
  58. package/examples/jsm/loaders/DRACOLoader.js +5 -1
  59. package/examples/jsm/loaders/EXRLoader.js +120 -104
  60. package/examples/jsm/loaders/FBXLoader.js +4 -0
  61. package/examples/jsm/loaders/FontLoader.js +2 -0
  62. package/examples/jsm/loaders/GCodeLoader.js +5 -9
  63. package/examples/jsm/loaders/GLTFLoader.js +112 -31
  64. package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
  65. package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
  66. package/examples/jsm/loaders/IESLoader.js +46 -12
  67. package/examples/jsm/loaders/JXLLoader.js +159 -0
  68. package/examples/jsm/loaders/KMZLoader.js +6 -0
  69. package/examples/jsm/loaders/KSPLATLoader.js +2 -0
  70. package/examples/jsm/loaders/KTX2Loader.js +49 -4
  71. package/examples/jsm/loaders/KTXLoader.js +5 -3
  72. package/examples/jsm/loaders/LDrawLoader.js +15 -22
  73. package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
  74. package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
  75. package/examples/jsm/loaders/LUTImageLoader.js +2 -0
  76. package/examples/jsm/loaders/LWOLoader.js +6 -0
  77. package/examples/jsm/loaders/MD2Loader.js +2 -0
  78. package/examples/jsm/loaders/MDDLoader.js +4 -0
  79. package/examples/jsm/loaders/MTLLoader.js +8 -0
  80. package/examples/jsm/loaders/MaterialXLoader.js +57 -5
  81. package/examples/jsm/loaders/NRRDLoader.js +4 -2
  82. package/examples/jsm/loaders/OBJLoader.js +10 -4
  83. package/examples/jsm/loaders/PCDLoader.js +6 -2
  84. package/examples/jsm/loaders/PDBLoader.js +5 -3
  85. package/examples/jsm/loaders/PLYLoader.js +39 -15
  86. package/examples/jsm/loaders/PVRLoader.js +2 -2
  87. package/examples/jsm/loaders/SPLATLoader.js +2 -0
  88. package/examples/jsm/loaders/SPZLoader.js +2 -0
  89. package/examples/jsm/loaders/STLLoader.js +3 -1
  90. package/examples/jsm/loaders/SVGLoader.js +27 -49
  91. package/examples/jsm/loaders/TDSLoader.js +4 -0
  92. package/examples/jsm/loaders/TGALoader.js +6 -5
  93. package/examples/jsm/loaders/TTFLoader.js +2 -0
  94. package/examples/jsm/loaders/USDLoader.js +14 -0
  95. package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
  96. package/examples/jsm/loaders/VOXLoader.js +3 -0
  97. package/examples/jsm/loaders/VRMLLoader.js +4 -0
  98. package/examples/jsm/loaders/VTKLoader.js +2 -0
  99. package/examples/jsm/loaders/XYZLoader.js +2 -0
  100. package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
  101. package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
  102. package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
  103. package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
  104. package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
  105. package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
  106. package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
  107. package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
  108. package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
  109. package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
  110. package/examples/jsm/loaders/usd/USDAParser.js +56 -47
  111. package/examples/jsm/loaders/usd/USDComposer.js +25 -30
  112. package/examples/jsm/math/ColorConverter.js +7 -3
  113. package/examples/jsm/math/Lut.js +2 -2
  114. package/examples/jsm/math/OBB.js +3 -3
  115. package/examples/jsm/math/Octree.js +20 -17
  116. package/examples/jsm/objects/GaussianSplat.js +5 -4
  117. package/examples/jsm/objects/Reflector.js +5 -0
  118. package/examples/jsm/objects/SkyMesh.js +14 -7
  119. package/examples/jsm/objects/Water2Mesh.js +2 -2
  120. package/examples/jsm/physics/RapierPhysics.js +2 -2
  121. package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
  122. package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
  123. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  124. package/examples/jsm/postprocessing/GTAOPass.js +26 -18
  125. package/examples/jsm/renderers/SVGRenderer.js +3 -2
  126. package/examples/jsm/shaders/GTAOShader.js +7 -4
  127. package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
  128. package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
  129. package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
  130. package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
  131. package/examples/jsm/tsl/display/BloomNode.js +3 -3
  132. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
  133. package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
  134. package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
  135. package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
  136. package/examples/jsm/tsl/display/FSR1Node.js +3 -3
  137. package/examples/jsm/tsl/display/FXAANode.js +3 -10
  138. package/examples/jsm/tsl/display/FilmNode.js +3 -3
  139. package/examples/jsm/tsl/display/GTAONode.js +33 -25
  140. package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
  141. package/examples/jsm/tsl/display/GodraysNode.js +5 -19
  142. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
  143. package/examples/jsm/tsl/display/LensflareNode.js +3 -3
  144. package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
  145. package/examples/jsm/tsl/display/OITPassNode.js +0 -11
  146. package/examples/jsm/tsl/display/OutlineNode.js +107 -5
  147. package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
  148. package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
  149. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
  150. package/examples/jsm/tsl/display/SMAANode.js +3 -3
  151. package/examples/jsm/tsl/display/SSAONode.js +6 -20
  152. package/examples/jsm/tsl/display/SSGINode.js +36 -29
  153. package/examples/jsm/tsl/display/SSRNode.js +135 -63
  154. package/examples/jsm/tsl/display/SSSNode.js +6 -20
  155. package/examples/jsm/tsl/display/SharpenNode.js +3 -3
  156. package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
  157. package/examples/jsm/tsl/display/TAAUNode.js +10 -42
  158. package/examples/jsm/tsl/display/TRAANode.js +11 -43
  159. package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
  160. package/examples/jsm/tsl/display/TransitionNode.js +3 -3
  161. package/examples/jsm/tsl/display/lensDirt.js +30 -0
  162. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
  163. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
  164. package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
  165. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
  166. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
  167. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
  168. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
  169. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
  170. package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
  171. package/examples/jsm/tsl/utils/Raymarching.js +1 -1
  172. package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
  173. package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
  174. package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
  175. package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
  176. package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
  177. package/examples/jsm/utils/SceneOptimizer.js +2 -1
  178. package/examples/jsm/utils/SceneUtils.js +1 -1
  179. package/examples/jsm/utils/unwrapUVs.js +865 -0
  180. package/examples/jsm/webxr/XREstimatedLight.js +11 -4
  181. package/package.json +3 -3
  182. package/src/Three.TSL.js +2 -683
  183. package/src/Three.WebGPU.Nodes.js +2 -1
  184. package/src/Three.WebGPU.js +2 -1
  185. package/src/animation/AnimationAction.js +1 -1
  186. package/src/animation/AnimationUtils.js +1 -3
  187. package/src/animation/KeyframeTrack.js +19 -0
  188. package/src/cameras/ArrayCamera.js +12 -0
  189. package/src/cameras/CubeCamera.js +3 -3
  190. package/src/constants.js +1 -9
  191. package/src/core/BufferAttribute.js +57 -21
  192. package/src/core/BufferGeometry.js +5 -13
  193. package/src/core/Clock.js +1 -1
  194. package/src/core/InterleavedBuffer.js +28 -18
  195. package/src/core/InterleavedBufferAttribute.js +54 -20
  196. package/src/core/Object3D.js +19 -9
  197. package/src/core/Raycaster.js +2 -0
  198. package/src/core/RenderTarget.js +11 -5
  199. package/src/core/UniformsGroup.js +7 -3
  200. package/src/extras/PMREMGenerator.js +392 -685
  201. package/src/extras/core/Curve.js +4 -0
  202. package/src/extras/core/CurvePath.js +13 -0
  203. package/src/extras/core/ShapePath.js +1 -1
  204. package/src/geometries/EdgesGeometry.js +12 -10
  205. package/src/geometries/LatheGeometry.js +2 -0
  206. package/src/helpers/PolarGridHelper.js +1 -1
  207. package/src/lights/Light.js +11 -0
  208. package/src/lights/LightProbe.js +2 -0
  209. package/src/lights/LightShadow.js +2 -0
  210. package/src/loaders/AnimationLoader.js +2 -0
  211. package/src/loaders/AudioLoader.js +2 -0
  212. package/src/loaders/BufferGeometryLoader.js +2 -0
  213. package/src/loaders/CompressedTextureLoader.js +2 -0
  214. package/src/loaders/CubeTextureLoader.js +2 -0
  215. package/src/loaders/DataTextureLoader.js +2 -0
  216. package/src/loaders/FileLoader.js +2 -0
  217. package/src/loaders/ImageBitmapLoader.js +3 -1
  218. package/src/loaders/ImageLoader.js +1 -0
  219. package/src/loaders/Loader.js +47 -0
  220. package/src/loaders/MaterialLoader.js +2 -0
  221. package/src/loaders/ObjectLoader.js +27 -8
  222. package/src/loaders/TextureLoader.js +5 -3
  223. package/src/loaders/nodes/NodeLoader.js +2 -0
  224. package/src/materials/Material.js +21 -2
  225. package/src/materials/MeshDepthMaterial.js +1 -1
  226. package/src/materials/MeshDistanceMaterial.js +1 -1
  227. package/src/materials/MeshLambertMaterial.js +1 -1
  228. package/src/materials/MeshMatcapMaterial.js +1 -1
  229. package/src/materials/MeshNormalMaterial.js +1 -1
  230. package/src/materials/MeshPhongMaterial.js +1 -1
  231. package/src/materials/MeshPhysicalMaterial.js +90 -11
  232. package/src/materials/MeshStandardMaterial.js +1 -1
  233. package/src/materials/MeshToonMaterial.js +1 -1
  234. package/src/materials/nodes/Line2NodeMaterial.js +32 -10
  235. package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
  236. package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
  237. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
  238. package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
  239. package/src/materials/nodes/NodeMaterial.js +36 -16
  240. package/src/materials/nodes/NodeMaterialInstance.js +193 -0
  241. package/src/materials/nodes/NodeMaterials.js +1 -0
  242. package/src/materials/nodes/PointsNodeMaterial.js +1 -1
  243. package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
  244. package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
  245. package/src/math/Box3.js +2 -2
  246. package/src/math/Color.js +8 -8
  247. package/src/math/ColorManagement.js +2 -21
  248. package/src/math/FrustumArray.js +12 -0
  249. package/src/math/Interpolant.js +1 -1
  250. package/src/math/Line3.js +2 -4
  251. package/src/math/MathUtils.js +33 -46
  252. package/src/math/Matrix2.js +1 -1
  253. package/src/math/Matrix3.js +1 -1
  254. package/src/math/Matrix4.js +1 -1
  255. package/src/math/Triangle.js +2 -1
  256. package/src/math/Vector2.js +1 -1
  257. package/src/math/Vector3.js +1 -1
  258. package/src/math/Vector4.js +1 -1
  259. package/src/nodes/Nodes.js +1 -0
  260. package/src/nodes/TSL.js +2 -0
  261. package/src/nodes/accessors/Arrays.js +1 -1
  262. package/src/nodes/accessors/Batch.js +29 -23
  263. package/src/nodes/accessors/BufferAttributeNode.js +21 -1
  264. package/src/nodes/accessors/BuiltinNode.js +6 -0
  265. package/src/nodes/accessors/Camera.js +100 -93
  266. package/src/nodes/accessors/ClippingNode.js +17 -6
  267. package/src/nodes/accessors/CubeTextureNode.js +12 -24
  268. package/src/nodes/accessors/Instance.js +198 -160
  269. package/src/nodes/accessors/Lights.js +19 -6
  270. package/src/nodes/accessors/MaterialNode.js +33 -4
  271. package/src/nodes/accessors/Morph.js +81 -22
  272. package/src/nodes/accessors/Normal.js +0 -42
  273. package/src/nodes/accessors/Object3DNode.js +6 -0
  274. package/src/nodes/accessors/PointUVNode.js +6 -0
  275. package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
  276. package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
  277. package/src/nodes/accessors/ReferenceNode.js +6 -0
  278. package/src/nodes/accessors/Skinning.js +57 -52
  279. package/src/nodes/accessors/StorageBufferNode.js +3 -12
  280. package/src/nodes/accessors/TextureBicubic.js +30 -27
  281. package/src/nodes/accessors/TextureNode.js +164 -78
  282. package/src/nodes/accessors/TextureSizeNode.js +6 -0
  283. package/src/nodes/accessors/UniformArrayNode.js +8 -15
  284. package/src/nodes/accessors/VelocityNode.js +13 -8
  285. package/src/nodes/code/CodeNode.js +6 -0
  286. package/src/nodes/code/ExpressionNode.js +6 -0
  287. package/src/nodes/code/FunctionCallNode.js +3 -3
  288. package/src/nodes/code/FunctionNode.js +15 -13
  289. package/src/nodes/core/ArrayNode.js +3 -3
  290. package/src/nodes/core/AssignNode.js +10 -9
  291. package/src/nodes/core/AttributeNode.js +39 -0
  292. package/src/nodes/core/BypassNode.js +6 -0
  293. package/src/nodes/core/ConstNode.js +31 -1
  294. package/src/nodes/core/ContextNode.js +11 -6
  295. package/src/nodes/core/IndexNode.js +6 -0
  296. package/src/nodes/core/InputNode.js +6 -0
  297. package/src/nodes/core/InspectorNode.js +17 -31
  298. package/src/nodes/core/IsolateNode.js +8 -0
  299. package/src/nodes/core/Node.js +367 -67
  300. package/src/nodes/core/NodeBuilder.js +664 -222
  301. package/src/nodes/core/NodeUtils.js +25 -0
  302. package/src/nodes/core/NodeVar.js +10 -1
  303. package/src/nodes/core/OutputStructNode.js +6 -0
  304. package/src/nodes/core/OverrideContextNode.js +38 -37
  305. package/src/nodes/core/PropertyNode.js +14 -0
  306. package/src/nodes/core/StackNode.js +33 -21
  307. package/src/nodes/core/StructNode.js +6 -0
  308. package/src/nodes/core/StructTypeNode.js +6 -0
  309. package/src/nodes/core/SubBuildNode.js +8 -0
  310. package/src/nodes/core/TempNode.js +10 -35
  311. package/src/nodes/core/UniformGroupNode.js +6 -0
  312. package/src/nodes/core/VarNode.js +43 -135
  313. package/src/nodes/core/VaryingNode.js +33 -2
  314. package/src/nodes/display/BlendModes.js +5 -40
  315. package/src/nodes/display/BumpMapNode.js +17 -7
  316. package/src/nodes/display/ColorAdjustment.js +22 -10
  317. package/src/nodes/display/ColorSpaceFunctions.js +2 -14
  318. package/src/nodes/display/ColorSpaceNode.js +3 -3
  319. package/src/nodes/display/FrontFacingNode.js +6 -0
  320. package/src/nodes/display/NormalMapNode.js +3 -3
  321. package/src/nodes/display/PassNode.js +75 -16
  322. package/src/nodes/display/RenderOutputNode.js +22 -5
  323. package/src/nodes/display/ScreenNode.js +6 -0
  324. package/src/nodes/display/ToneMappingFunctions.js +9 -51
  325. package/src/nodes/display/ToneMappingNode.js +3 -3
  326. package/src/nodes/display/ToonOutlinePassNode.js +66 -2
  327. package/src/nodes/display/ViewportDepthNode.js +34 -4
  328. package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
  329. package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
  330. package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
  331. package/src/nodes/functions/BSDF/D_GGX.js +1 -8
  332. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
  333. package/src/nodes/functions/BSDF/LTC.js +20 -47
  334. package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
  335. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
  336. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
  337. package/src/nodes/functions/PhysicalLightingModel.js +84 -51
  338. package/src/nodes/functions/VolumetricLightingModel.js +1 -1
  339. package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
  340. package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
  341. package/src/nodes/functions/material/getRoughness.js +3 -1
  342. package/src/nodes/geometry/RangeNode.js +52 -69
  343. package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
  344. package/src/nodes/gpgpu/BarrierNode.js +6 -0
  345. package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
  346. package/src/nodes/gpgpu/ComputeNode.js +6 -0
  347. package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
  348. package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
  349. package/src/nodes/lighting/AnalyticLightNode.js +7 -14
  350. package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
  351. package/src/nodes/lighting/EnvironmentNode.js +58 -8
  352. package/src/nodes/lighting/IESSpotLightNode.js +19 -4
  353. package/src/nodes/lighting/LightProbeNode.js +2 -1
  354. package/src/nodes/lighting/LightUtils.js +2 -2
  355. package/src/nodes/lighting/LightingNode.js +6 -0
  356. package/src/nodes/lighting/LightsNode.js +26 -32
  357. package/src/nodes/lighting/PointShadowNode.js +92 -48
  358. package/src/nodes/lighting/ProjectorLightNode.js +1 -1
  359. package/src/nodes/lighting/RectAreaLightNode.js +13 -14
  360. package/src/nodes/lighting/ShadowBaseNode.js +9 -17
  361. package/src/nodes/lighting/ShadowFilterNode.js +26 -3
  362. package/src/nodes/lighting/ShadowNode.js +13 -11
  363. package/src/nodes/materialx/MaterialXColor.js +2 -14
  364. package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
  365. package/src/nodes/materialx/MaterialXNodes.js +8 -11
  366. package/src/nodes/materialx/MaterialXNoise.js +195 -454
  367. package/src/nodes/math/BitcastNode.js +5 -5
  368. package/src/nodes/math/BitcountNode.js +18 -46
  369. package/src/nodes/math/ConditionalNode.js +92 -22
  370. package/src/nodes/math/Hash.js +1 -1
  371. package/src/nodes/math/MathNode.js +86 -64
  372. package/src/nodes/math/MathUtils.js +2 -2
  373. package/src/nodes/math/OperatorNode.js +42 -59
  374. package/src/nodes/math/PackFloatNode.js +9 -9
  375. package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
  376. package/src/nodes/math/TriNoise3D.js +3 -23
  377. package/src/nodes/math/UnpackFloatNode.js +9 -9
  378. package/src/nodes/pmrem/PMREMNode.js +38 -75
  379. package/src/nodes/pmrem/PMREMUtils.js +108 -272
  380. package/src/nodes/procedural/Checker.js +1 -1
  381. package/src/nodes/tsl/TSLCore.js +199 -74
  382. package/src/nodes/utils/ArrayElementNode.js +19 -1
  383. package/src/nodes/utils/CubeMapNode.js +3 -3
  384. package/src/nodes/utils/DebugNode.js +2 -2
  385. package/src/nodes/utils/EventNode.js +6 -0
  386. package/src/nodes/utils/FlipNode.js +3 -3
  387. package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
  388. package/src/nodes/utils/JoinNode.js +3 -3
  389. package/src/nodes/utils/LoopNode.js +14 -9
  390. package/src/nodes/utils/MemberNode.js +18 -0
  391. package/src/nodes/utils/PostProcessingUtils.js +20 -25
  392. package/src/nodes/utils/RTTNode.js +2 -0
  393. package/src/nodes/utils/ReflectorNode.js +24 -0
  394. package/src/nodes/utils/RotateNode.js +3 -3
  395. package/src/nodes/utils/SampleNode.js +6 -0
  396. package/src/nodes/utils/SetNode.js +3 -3
  397. package/src/nodes/utils/SplitNode.js +6 -0
  398. package/src/nodes/utils/UVUtils.js +2 -2
  399. package/src/objects/BatchedMesh.js +146 -15
  400. package/src/objects/InstancedMesh.js +12 -4
  401. package/src/objects/Line.js +20 -0
  402. package/src/objects/Mesh.js +8 -0
  403. package/src/objects/Points.js +20 -0
  404. package/src/objects/Skeleton.js +26 -0
  405. package/src/objects/SkinnedMesh.js +3 -3
  406. package/src/objects/Sprite.js +10 -0
  407. package/src/renderers/WebGLRenderer.js +104 -70
  408. package/src/renderers/common/Animation.js +5 -1
  409. package/src/renderers/common/Attributes.js +67 -57
  410. package/src/renderers/common/Backend.js +78 -3
  411. package/src/renderers/common/BindGroup.js +11 -0
  412. package/src/renderers/common/Binding.js +0 -11
  413. package/src/renderers/common/Bindings.js +116 -10
  414. package/src/renderers/common/Buffer.js +1 -1
  415. package/src/renderers/common/ClippingContext.js +12 -1
  416. package/src/renderers/common/ComputePipeline.js +17 -1
  417. package/src/renderers/common/DirectRenderPipeline.js +7 -3
  418. package/src/renderers/common/Geometries.js +170 -132
  419. package/src/renderers/common/Info.js +1 -1
  420. package/src/renderers/common/InspectorBase.js +5 -5
  421. package/src/renderers/common/Lighting.js +59 -0
  422. package/src/renderers/common/Pipelines.js +26 -12
  423. package/src/renderers/common/ProgrammableStage.js +1 -17
  424. package/src/renderers/common/RenderContext.js +21 -0
  425. package/src/renderers/common/RenderContexts.js +13 -4
  426. package/src/renderers/common/RenderObject.js +111 -35
  427. package/src/renderers/common/RenderObjects.js +37 -19
  428. package/src/renderers/common/Renderer.js +537 -295
  429. package/src/renderers/common/RendererUtils.js +15 -0
  430. package/src/renderers/common/StandardDrawingPipeline.js +343 -0
  431. package/src/renderers/common/Storage3DTexture.js +11 -0
  432. package/src/renderers/common/StorageArrayTexture.js +10 -0
  433. package/src/renderers/common/StorageTexture.js +0 -9
  434. package/src/renderers/common/Textures.js +144 -37
  435. package/src/renderers/common/UniformsGroup.js +19 -0
  436. package/src/renderers/common/XRManager.js +10 -91
  437. package/src/renderers/common/extras/PMREMGenerator.js +298 -576
  438. package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
  439. package/src/renderers/common/nodes/NodeLibrary.js +11 -35
  440. package/src/renderers/common/nodes/NodeManager.js +80 -31
  441. package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
  442. package/src/renderers/common/nodes/NodeSampler.js +14 -0
  443. package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
  444. package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
  445. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
  446. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
  447. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
  448. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
  449. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
  450. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
  451. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
  452. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
  453. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
  454. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
  455. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
  456. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
  457. package/src/renderers/shaders/ShaderChunk.js +0 -2
  458. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
  459. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
  460. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  461. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
  462. package/src/renderers/shaders/ShaderLib.js +3 -0
  463. package/src/renderers/shaders/UniformsLib.js +4 -5
  464. package/src/renderers/webgl/WebGLBackground.js +3 -3
  465. package/src/renderers/webgl/WebGLBindingStates.js +4 -2
  466. package/src/renderers/webgl/WebGLCapabilities.js +7 -1
  467. package/src/renderers/webgl/WebGLEnvironments.js +2 -2
  468. package/src/renderers/webgl/WebGLGeometries.js +42 -14
  469. package/src/renderers/webgl/WebGLMaterials.js +15 -2
  470. package/src/renderers/webgl/WebGLOutput.js +37 -1
  471. package/src/renderers/webgl/WebGLProgram.js +13 -54
  472. package/src/renderers/webgl/WebGLPrograms.js +22 -8
  473. package/src/renderers/webgl/WebGLRenderStates.js +11 -8
  474. package/src/renderers/webgl/WebGLShadowMap.js +6 -4
  475. package/src/renderers/webgl/WebGLState.js +10 -6
  476. package/src/renderers/webgl/WebGLTextures.js +129 -77
  477. package/src/renderers/webgl/WebGLUniforms.js +44 -6
  478. package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
  479. package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
  480. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
  481. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
  482. package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
  483. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
  484. package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
  485. package/src/renderers/webgpu/WebGPUBackend.js +140 -82
  486. package/src/renderers/webgpu/WebGPURenderer.js +1 -1
  487. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
  488. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
  489. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
  490. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
  491. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
  492. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
  493. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
  494. package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
  495. package/src/renderers/webxr/WebXRController.js +3 -3
  496. package/src/renderers/webxr/WebXRManager.js +5 -90
  497. package/src/scenes/Scene.js +4 -4
  498. package/src/textures/CompressedTexture.js +2 -2
  499. package/src/textures/DepthTexture.js +2 -2
  500. package/src/textures/FramebufferTexture.js +11 -0
  501. package/src/textures/Texture.js +29 -1
  502. package/src/textures/TextureSource.js +1 -1
  503. package/src/upe.js +1 -1
  504. package/src/utils.js +4 -4
  505. package/examples/jsm/libs/surfaceNet.js +0 -201
  506. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
@@ -1,6 +1,6 @@
1
1
  import { WebGLCoordinateSystem } from '../../constants.js';
2
- import TempNode from '../core/TempNode.js';
3
- import { addMethodChaining, Fn, int, nodeProxyIntent } from '../tsl/TSLCore.js';
2
+ import Node from '../core/Node.js';
3
+ import { addMethodChaining, Fn, int, nodeProxyAssignable } from '../tsl/TSLCore.js';
4
4
 
5
5
  const _vectorOperators = {
6
6
  '==': 'equal',
@@ -16,9 +16,9 @@ const _vectorOperators = {
16
16
  * This node represents basic mathematical and logical operations like addition,
17
17
  * subtraction or comparisons (e.g. `equal()`).
18
18
  *
19
- * @augments TempNode
19
+ * @augments Node
20
20
  */
21
- class OperatorNode extends TempNode {
21
+ class OperatorNode extends Node {
22
22
 
23
23
  static get type() {
24
24
 
@@ -120,10 +120,6 @@ class OperatorNode extends TempNode {
120
120
 
121
121
  return output || 'void';
122
122
 
123
- } else if ( op === '%' ) {
124
-
125
- return typeA;
126
-
127
123
  } else if ( op === '~' || op === '&' || op === '|' || op === '^' || op === '>>' || op === '<<' ) {
128
124
 
129
125
  return builder.getIntegerType( typeA );
@@ -144,13 +140,17 @@ class OperatorNode extends TempNode {
144
140
 
145
141
  return typeLength > 1 ? `bvec${ typeLength }` : 'bool';
146
142
 
143
+ } else if ( typeB === null ) {
144
+
145
+ return typeA;
146
+
147
147
  } else {
148
148
 
149
149
  // Handle matrix operations
150
150
 
151
151
  if ( builder.isMatrix( typeA ) ) {
152
152
 
153
- if ( typeB === 'float' ) {
153
+ if ( builder.isScalar( typeB ) ) {
154
154
 
155
155
  return typeA; // matrix * scalar = matrix
156
156
 
@@ -166,7 +166,7 @@ class OperatorNode extends TempNode {
166
166
 
167
167
  } else if ( builder.isMatrix( typeB ) ) {
168
168
 
169
- if ( typeA === 'float' ) {
169
+ if ( builder.isScalar( typeA ) ) {
170
170
 
171
171
  return typeB; // scalar * matrix = matrix
172
172
 
@@ -180,15 +180,13 @@ class OperatorNode extends TempNode {
180
180
 
181
181
  // Handle non-matrix cases
182
182
 
183
- if ( builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ) {
183
+ // anytype x anytype: use the greater length vector
184
184
 
185
- // anytype x anytype: use the greater length vector
185
+ const type = builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ? typeB : typeA;
186
186
 
187
- return typeB;
187
+ const promotedType = builder.getPromotedComponentType( aNode, bNode );
188
188
 
189
- }
190
-
191
- return typeA;
189
+ return builder.changeComponentType( type, promotedType );
192
190
 
193
191
  }
194
192
 
@@ -212,33 +210,18 @@ class OperatorNode extends TempNode {
212
210
 
213
211
  if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' || op === '!=' ) {
214
212
 
215
- if ( builder.isVector( typeA ) ) {
216
-
217
- typeB = typeA;
213
+ const length = Math.max( builder.getTypeLength( typeA ), builder.getTypeLength( typeB ) );
218
214
 
219
- } else if ( builder.isVector( typeB ) ) {
220
-
221
- typeA = typeB;
222
-
223
- } else if ( typeA !== typeB ) {
224
-
225
- typeA = typeB = 'float';
226
-
227
- }
215
+ typeA = typeB = builder.getTypeFromLength( length, builder.getPromotedComponentType( aNode, bNode ) );
228
216
 
229
217
  } else if ( op === '>>' || op === '<<' ) {
230
218
 
231
219
  typeA = type;
232
220
  typeB = builder.changeComponentType( typeB, 'uint' );
233
221
 
234
- } else if ( op === '%' ) {
235
-
236
- typeA = type;
237
- typeB = builder.isInteger( typeA ) && builder.isInteger( typeB ) ? typeB : typeA;
238
-
239
222
  } else if ( builder.isMatrix( typeA ) ) {
240
223
 
241
- if ( typeB === 'float' ) {
224
+ if ( builder.isScalar( typeB ) ) {
242
225
 
243
226
  // Keep matrix type for typeA, but ensure typeB stays float
244
227
 
@@ -261,7 +244,7 @@ class OperatorNode extends TempNode {
261
244
 
262
245
  } else if ( builder.isMatrix( typeB ) ) {
263
246
 
264
- if ( typeA === 'float' ) {
247
+ if ( builder.isScalar( typeA ) ) {
265
248
 
266
249
  // Keep matrix type for typeB, but ensure typeA stays float
267
250
 
@@ -362,11 +345,11 @@ class OperatorNode extends TempNode {
362
345
 
363
346
  // Handle matrix operations
364
347
 
365
- if ( builder.isMatrix( typeA ) && typeB === 'float' ) {
348
+ if ( builder.isMatrix( typeA ) && builder.isScalar( typeB ) ) {
366
349
 
367
350
  return builder.format( `( ${ b } ${ op } ${ a } )`, type, output );
368
351
 
369
- } else if ( typeA === 'float' && builder.isMatrix( typeB ) ) {
352
+ } else if ( builder.isScalar( typeA ) && builder.isMatrix( typeB ) ) {
370
353
 
371
354
  return builder.format( `${ a } ${ op } ${ b }`, type, output );
372
355
 
@@ -394,7 +377,7 @@ class OperatorNode extends TempNode {
394
377
 
395
378
  } else {
396
379
 
397
- if ( builder.isMatrix( typeA ) && typeB === 'float' ) {
380
+ if ( builder.isMatrix( typeA ) && builder.isScalar( typeB ) ) {
398
381
 
399
382
  return builder.format( `${ b } ${ op } ${ a }`, type, output );
400
383
 
@@ -440,7 +423,7 @@ export default OperatorNode;
440
423
  * @param {...Node} params - Additional input parameters.
441
424
  * @returns {OperatorNode}
442
425
  */
443
- export const add = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
426
+ export const add = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
444
427
 
445
428
  /**
446
429
  * Returns the subtraction of two or more value.
@@ -452,7 +435,7 @@ export const add = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '+' ).setParamet
452
435
  * @param {...Node} params - Additional input parameters.
453
436
  * @returns {OperatorNode}
454
437
  */
455
- export const sub = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
438
+ export const sub = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
456
439
 
457
440
  /**
458
441
  * Returns the multiplication of two or more value.
@@ -464,7 +447,7 @@ export const sub = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '-' ).setParamet
464
447
  * @param {...Node} params - Additional input parameters.
465
448
  * @returns {OperatorNode}
466
449
  */
467
- export const mul = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
450
+ export const mul = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
468
451
 
469
452
  /**
470
453
  * Returns the division of two or more value.
@@ -476,7 +459,7 @@ export const mul = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '*' ).setParamet
476
459
  * @param {...Node} params - Additional input parameters.
477
460
  * @returns {OperatorNode}
478
461
  */
479
- export const div = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
462
+ export const div = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
480
463
 
481
464
  /**
482
465
  * Computes the remainder of dividing the first node by the second one.
@@ -487,7 +470,7 @@ export const div = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '/' ).setParamet
487
470
  * @param {Node} b - The second input.
488
471
  * @returns {OperatorNode}
489
472
  */
490
- export const mod = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
473
+ export const mod = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
491
474
 
492
475
  /**
493
476
  * Checks if two nodes are equal.
@@ -498,7 +481,7 @@ export const mod = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '%' ).setParamet
498
481
  * @param {Node} b - The second input.
499
482
  * @returns {OperatorNode}
500
483
  */
501
- export const equal = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
484
+ export const equal = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
502
485
 
503
486
  /**
504
487
  * Checks if two nodes are not equal.
@@ -509,7 +492,7 @@ export const equal = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '==' ).setPara
509
492
  * @param {Node} b - The second input.
510
493
  * @returns {OperatorNode}
511
494
  */
512
- export const notEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
495
+ export const notEqual = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
513
496
 
514
497
  /**
515
498
  * Checks if the first node is less than the second.
@@ -520,7 +503,7 @@ export const notEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!=' ).setP
520
503
  * @param {Node} b - The second input.
521
504
  * @returns {OperatorNode}
522
505
  */
523
- export const lessThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
506
+ export const lessThan = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
524
507
 
525
508
  /**
526
509
  * Checks if the first node is greater than the second.
@@ -531,7 +514,7 @@ export const lessThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<' ).setPa
531
514
  * @param {Node} b - The second input.
532
515
  * @returns {OperatorNode}
533
516
  */
534
- export const greaterThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
517
+ export const greaterThan = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
535
518
 
536
519
  /**
537
520
  * Checks if the first node is less than or equal to the second.
@@ -542,7 +525,7 @@ export const greaterThan = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>' ).se
542
525
  * @param {Node} b - The second input.
543
526
  * @returns {OperatorNode}
544
527
  */
545
- export const lessThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
528
+ export const lessThanEqual = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
546
529
 
547
530
  /**
548
531
  * Checks if the first node is greater than or equal to the second.
@@ -553,7 +536,7 @@ export const lessThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<=' )
553
536
  * @param {Node} b - The second input.
554
537
  * @returns {OperatorNode}
555
538
  */
556
- export const greaterThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
539
+ export const greaterThanEqual = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
557
540
 
558
541
  /**
559
542
  * Performs a logical AND operation on multiple nodes.
@@ -563,7 +546,7 @@ export const greaterThanEqual = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>=
563
546
  * @param {...Node} nodes - The input nodes to be combined using AND.
564
547
  * @returns {OperatorNode}
565
548
  */
566
- export const and = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
549
+ export const and = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
567
550
 
568
551
  /**
569
552
  * Performs a logical OR operation on multiple nodes.
@@ -573,7 +556,7 @@ export const and = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&&' ).setParame
573
556
  * @param {...Node} nodes - The input nodes to be combined using OR.
574
557
  * @returns {OperatorNode}
575
558
  */
576
- export const or = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
559
+ export const or = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
577
560
 
578
561
  /**
579
562
  * Performs logical NOT on a node.
@@ -583,7 +566,7 @@ export const or = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '||' ).setParamet
583
566
  * @param {Node} value - The value.
584
567
  * @returns {OperatorNode}
585
568
  */
586
- export const not = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
569
+ export const not = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
587
570
 
588
571
  /**
589
572
  * Performs logical XOR on two nodes.
@@ -594,7 +577,7 @@ export const not = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '!' ).setParamet
594
577
  * @param {Node} b - The second input.
595
578
  * @returns {OperatorNode}
596
579
  */
597
- export const xor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
580
+ export const xor = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
598
581
 
599
582
  /**
600
583
  * Performs bitwise AND on two nodes.
@@ -605,7 +588,7 @@ export const xor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^^' ).setParame
605
588
  * @param {Node} b - The second input.
606
589
  * @returns {OperatorNode}
607
590
  */
608
- export const bitAnd = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
591
+ export const bitAnd = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
609
592
 
610
593
  /**
611
594
  * Performs bitwise NOT on a node.
@@ -616,7 +599,7 @@ export const bitAnd = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '&' ).setPara
616
599
  * @param {Node} b - The second input.
617
600
  * @returns {OperatorNode}
618
601
  */
619
- export const bitNot = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '~' ).setParameterLength( 1 ).setName( 'bitNot' );
602
+ export const bitNot = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '~' ).setParameterLength( 1 ).setName( 'bitNot' );
620
603
 
621
604
  /**
622
605
  * Performs bitwise OR on two nodes.
@@ -627,7 +610,7 @@ export const bitNot = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '~' ).setPara
627
610
  * @param {Node} b - The second input.
628
611
  * @returns {OperatorNode}
629
612
  */
630
- export const bitOr = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
613
+ export const bitOr = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
631
614
 
632
615
  /**
633
616
  * Performs bitwise XOR on two nodes.
@@ -638,7 +621,7 @@ export const bitOr = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '|' ).setParam
638
621
  * @param {Node} b - The second input.
639
622
  * @returns {OperatorNode}
640
623
  */
641
- export const bitXor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
624
+ export const bitXor = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
642
625
 
643
626
  /**
644
627
  * Shifts a node to the left.
@@ -649,7 +632,7 @@ export const bitXor = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '^' ).setPara
649
632
  * @param {Node} b - The value to shift.
650
633
  * @returns {OperatorNode}
651
634
  */
652
- export const shiftLeft = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
635
+ export const shiftLeft = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
653
636
 
654
637
  /**
655
638
  * Shifts a node to the right.
@@ -660,7 +643,7 @@ export const shiftLeft = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '<<' ).set
660
643
  * @param {Node} b - The value to shift.
661
644
  * @returns {OperatorNode}
662
645
  */
663
- export const shiftRight = /*@__PURE__*/ nodeProxyIntent( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
646
+ export const shiftRight = /*@__PURE__*/ nodeProxyAssignable( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
664
647
 
665
648
  /**
666
649
  * Increments a node by 1.
@@ -1,12 +1,12 @@
1
- import TempNode from '../core/TempNode.js';
2
- import { nodeProxyIntent } from '../tsl/TSLCore.js';
1
+ import Node from '../core/Node.js';
2
+ import { nodeProxyAssignable } from '../tsl/TSLCore.js';
3
3
 
4
4
  /**
5
5
  * This node represents an operation that packs floating-point values of a vector into an unsigned 32-bit integer
6
6
  *
7
- * @augments TempNode
7
+ * @augments Node
8
8
  */
9
- class PackFloatNode extends TempNode {
9
+ class PackFloatNode extends Node {
10
10
 
11
11
  static get type() {
12
12
 
@@ -82,7 +82,7 @@ export default PackFloatNode;
82
82
  * @param {Node<vec2>} value - The 2-component vector to be packed
83
83
  * @returns {Node}
84
84
  */
85
- export const packSnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'snorm' ).setParameterLength( 1 );
85
+ export const packSnorm2x16 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'snorm' ).setParameterLength( 1 );
86
86
 
87
87
  /**
88
88
  * Converts each component of the normalized float to 16-bit integer values. The results are packed into a single unsigned integer.
@@ -93,7 +93,7 @@ export const packSnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'snor
93
93
  * @param {Node<vec2>} value - The 2-component vector to be packed
94
94
  * @returns {Node}
95
95
  */
96
- export const packUnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'unorm' ).setParameterLength( 1 );
96
+ export const packUnorm2x16 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'unorm' ).setParameterLength( 1 );
97
97
 
98
98
  /**
99
99
  * Converts each component of the vec2 to 16-bit floating-point values. The results are packed into a single unsigned integer.
@@ -103,7 +103,7 @@ export const packUnorm2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'unor
103
103
  * @param {Node<vec2>} value - The 2-component vector to be packed
104
104
  * @returns {Node}
105
105
  */
106
- export const packHalf2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'float16' ).setParameterLength( 1 );
106
+ export const packHalf2x16 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'float16' ).setParameterLength( 1 );
107
107
 
108
108
  /**
109
109
  * Converts each component of the normalized float to 8-bit integer values. The results are packed into a single unsigned integer.
@@ -113,7 +113,7 @@ export const packHalf2x16 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'float
113
113
  * @param {Node<vec4>} value - The 4-component vector to be packed
114
114
  * @returns {Node}
115
115
  */
116
- export const packSnorm4x8 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'snorm', null, { layout: '4x8' } ).setParameterLength( 1 );
116
+ export const packSnorm4x8 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'snorm', null, { layout: '4x8' } ).setParameterLength( 1 );
117
117
 
118
118
  /**
119
119
  * Converts each component of the normalized float to 8-bit integer values. The results are packed into a single unsigned integer.
@@ -123,4 +123,4 @@ export const packSnorm4x8 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'snorm
123
123
  * @param {Node<vec4>} value - The 4-component vector to be packed
124
124
  * @returns {Node}
125
125
  */
126
- export const packUnorm4x8 = /*@__PURE__*/ nodeProxyIntent( PackFloatNode, 'unorm', null, { layout: '4x8' } ).setParameterLength( 1 );
126
+ export const packUnorm4x8 = /*@__PURE__*/ nodeProxyAssignable( PackFloatNode, 'unorm', null, { layout: '4x8' } ).setParameterLength( 1 );
@@ -1,5 +1,5 @@
1
- import TempNode from '../core/TempNode.js';
2
- import { nodeProxyIntent, Fn, uint, int, ivec4, uvec4 } from '../tsl/TSLCore.js';
1
+ import Node from '../core/Node.js';
2
+ import { nodeProxyAssignable, Fn, uint, int, ivec4, uvec4 } from '../tsl/TSLCore.js';
3
3
  import { clamp } from './MathNode.js';
4
4
 
5
5
  /**
@@ -7,9 +7,9 @@ import { clamp } from './MathNode.js';
7
7
  * language extension. If the extension is not available, the node falls back to an
8
8
  * emulation with plain integer bit operations.
9
9
  *
10
- * @augments TempNode
10
+ * @augments Node
11
11
  */
12
- class Packed4x8IntegerNode extends TempNode {
12
+ class Packed4x8IntegerNode extends Node {
13
13
 
14
14
  static get type() {
15
15
 
@@ -244,41 +244,25 @@ const emulatedPack4xU8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
244
244
 
245
245
  return x.bitOr( y.shiftLeft( uint( 8 ) ) ).bitOr( z.shiftLeft( uint( 16 ) ) ).bitOr( w.shiftLeft( uint( 24 ) ) );
246
246
 
247
- } ).setLayout( {
248
- name: 'tsl_packed4x8_pack4xU8',
249
- type: 'uint',
250
- inputs: [ { name: 'v', type: 'uvec4' } ]
251
- } );
247
+ }, { v: 'uvec4', return: 'uint' } );
252
248
 
253
249
  const emulatedPack4xI8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
254
250
 
255
251
  return emulatedPack4xU8( uvec4( v ) );
256
252
 
257
- } ).setLayout( {
258
- name: 'tsl_packed4x8_pack4xI8',
259
- type: 'uint',
260
- inputs: [ { name: 'v', type: 'ivec4' } ]
261
- } );
253
+ }, { v: 'ivec4', return: 'uint' } );
262
254
 
263
255
  const emulatedPack4xU8Clamp = /*@__PURE__*/ Fn( ( [ v ] ) => {
264
256
 
265
257
  return emulatedPack4xU8( clamp( v, uvec4( 0 ), uvec4( 255 ) ) );
266
258
 
267
- } ).setLayout( {
268
- name: 'tsl_packed4x8_pack4xU8Clamp',
269
- type: 'uint',
270
- inputs: [ { name: 'v', type: 'uvec4' } ]
271
- } );
259
+ }, { v: 'uvec4', return: 'uint' } );
272
260
 
273
261
  const emulatedPack4xI8Clamp = /*@__PURE__*/ Fn( ( [ v ] ) => {
274
262
 
275
263
  return emulatedPack4xI8( clamp( v, ivec4( - 128 ), ivec4( 127 ) ) );
276
264
 
277
- } ).setLayout( {
278
- name: 'tsl_packed4x8_pack4xI8Clamp',
279
- type: 'uint',
280
- inputs: [ { name: 'v', type: 'ivec4' } ]
281
- } );
265
+ }, { v: 'ivec4', return: 'uint' } );
282
266
 
283
267
  const emulatedUnpack4xU8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
284
268
 
@@ -289,11 +273,7 @@ const emulatedUnpack4xU8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
289
273
  v.shiftRight( uint( 24 ) ).bitAnd( uint( 0xff ) )
290
274
  );
291
275
 
292
- } ).setLayout( {
293
- name: 'tsl_packed4x8_unpack4xU8',
294
- type: 'uvec4',
295
- inputs: [ { name: 'v', type: 'uint' } ]
296
- } );
276
+ }, { v: 'uint', return: 'uvec4' } );
297
277
 
298
278
  function signExtendByte( v, byteShift ) {
299
279
 
@@ -310,11 +290,7 @@ const emulatedUnpack4xI8 = /*@__PURE__*/ Fn( ( [ v ] ) => {
310
290
  signExtendByte( v, 24 )
311
291
  );
312
292
 
313
- } ).setLayout( {
314
- name: 'tsl_packed4x8_unpack4xI8',
315
- type: 'ivec4',
316
- inputs: [ { name: 'v', type: 'uint' } ]
317
- } );
293
+ }, { v: 'uint', return: 'ivec4' } );
318
294
 
319
295
  const emulatedDot4U8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
320
296
 
@@ -323,11 +299,7 @@ const emulatedDot4U8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
323
299
 
324
300
  return ua.x.mul( ub.x ).add( ua.y.mul( ub.y ) ).add( ua.z.mul( ub.z ) ).add( ua.w.mul( ub.w ) );
325
301
 
326
- } ).setLayout( {
327
- name: 'tsl_packed4x8_dot4U8Packed',
328
- type: 'uint',
329
- inputs: [ { name: 'a', type: 'uint' }, { name: 'b', type: 'uint' } ]
330
- } );
302
+ }, { a: 'uint', b: 'uint', return: 'uint' } );
331
303
 
332
304
  const emulatedDot4I8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
333
305
 
@@ -336,11 +308,7 @@ const emulatedDot4I8Packed = /*@__PURE__*/ Fn( ( [ a, b ] ) => {
336
308
 
337
309
  return ia.x.mul( ib.x ).add( ia.y.mul( ib.y ) ).add( ia.z.mul( ib.z ) ).add( ia.w.mul( ib.w ) );
338
310
 
339
- } ).setLayout( {
340
- name: 'tsl_packed4x8_dot4I8Packed',
341
- type: 'int',
342
- inputs: [ { name: 'a', type: 'uint' }, { name: 'b', type: 'uint' } ]
343
- } );
311
+ }, { a: 'uint', b: 'uint', return: 'int' } );
344
312
 
345
313
  // exports
346
314
 
@@ -356,7 +324,7 @@ export default Packed4x8IntegerNode;
356
324
  * @param {Node<uint>} b - The second packed unsigned integer vector.
357
325
  * @returns {Node<uint>} The dot product.
358
326
  */
359
- export const dot4U8Packed = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.DOT4_U8_PACKED ).setParameterLength( 2 );
327
+ export const dot4U8Packed = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.DOT4_U8_PACKED ).setParameterLength( 2 );
360
328
 
361
329
  /**
362
330
  * Computes the dot product of four signed 8-bit integer components packed
@@ -368,7 +336,7 @@ export const dot4U8Packed = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode,
368
336
  * @param {Node<uint>} b - The second packed signed integer vector.
369
337
  * @returns {Node<int>} The dot product.
370
338
  */
371
- export const dot4I8Packed = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.DOT4_I8_PACKED ).setParameterLength( 2 );
339
+ export const dot4I8Packed = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.DOT4_I8_PACKED ).setParameterLength( 2 );
372
340
 
373
341
  /**
374
342
  * Packs the least significant 8 bits of four signed integers into a `uint`.
@@ -378,7 +346,7 @@ export const dot4I8Packed = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode,
378
346
  * @param {Node<ivec4>} value - The signed integer vector to pack.
379
347
  * @returns {Node<uint>} The packed value.
380
348
  */
381
- export const pack4xI8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_I8 ).setParameterLength( 1 );
349
+ export const pack4xI8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_I8 ).setParameterLength( 1 );
382
350
 
383
351
  /**
384
352
  * Packs the least significant 8 bits of four unsigned integers into a `uint`.
@@ -388,7 +356,7 @@ export const pack4xI8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Pac
388
356
  * @param {Node<uvec4>} value - The unsigned integer vector to pack.
389
357
  * @returns {Node<uint>} The packed value.
390
358
  */
391
- export const pack4xU8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_U8 ).setParameterLength( 1 );
359
+ export const pack4xU8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_U8 ).setParameterLength( 1 );
392
360
 
393
361
  /**
394
362
  * Clamps four signed integers to the signed 8-bit range and packs them into a
@@ -399,7 +367,7 @@ export const pack4xU8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Pac
399
367
  * @param {Node<ivec4>} value - The signed integer vector to clamp and pack.
400
368
  * @returns {Node<uint>} The packed value.
401
369
  */
402
- export const pack4xI8Clamp = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_I8_CLAMP ).setParameterLength( 1 );
370
+ export const pack4xI8Clamp = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_I8_CLAMP ).setParameterLength( 1 );
403
371
 
404
372
  /**
405
373
  * Clamps four unsigned integers to the unsigned 8-bit range and packs them
@@ -410,7 +378,7 @@ export const pack4xI8Clamp = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode
410
378
  * @param {Node<uvec4>} value - The unsigned integer vector to clamp and pack.
411
379
  * @returns {Node<uint>} The packed value.
412
380
  */
413
- export const pack4xU8Clamp = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_U8_CLAMP ).setParameterLength( 1 );
381
+ export const pack4xU8Clamp = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.PACK4X_U8_CLAMP ).setParameterLength( 1 );
414
382
 
415
383
  /**
416
384
  * Unpacks a `uint` into four sign-extended signed 8-bit integer components.
@@ -420,7 +388,7 @@ export const pack4xU8Clamp = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode
420
388
  * @param {Node<uint>} value - The packed value.
421
389
  * @returns {Node<ivec4>} The unpacked signed integer vector.
422
390
  */
423
- export const unpack4xI8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.UNPACK4X_I8 ).setParameterLength( 1 );
391
+ export const unpack4xI8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.UNPACK4X_I8 ).setParameterLength( 1 );
424
392
 
425
393
  /**
426
394
  * Unpacks a `uint` into four zero-extended unsigned 8-bit integer components.
@@ -430,4 +398,4 @@ export const unpack4xI8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, P
430
398
  * @param {Node<uint>} value - The packed value.
431
399
  * @returns {Node<uvec4>} The unpacked unsigned integer vector.
432
400
  */
433
- export const unpack4xU8 = /*@__PURE__*/ nodeProxyIntent( Packed4x8IntegerNode, Packed4x8IntegerNode.UNPACK4X_U8 ).setParameterLength( 1 );
401
+ export const unpack4xU8 = /*@__PURE__*/ nodeProxyAssignable( Packed4x8IntegerNode, Packed4x8IntegerNode.UNPACK4X_U8 ).setParameterLength( 1 );
@@ -7,25 +7,13 @@ const tri = /*@__PURE__*/ Fn( ( [ x ] ) => {
7
7
 
8
8
  return x.fract().sub( .5 ).abs();
9
9
 
10
- } ).setLayout( {
11
- name: 'tri',
12
- type: 'float',
13
- inputs: [
14
- { name: 'x', type: 'float' }
15
- ]
16
- } );
10
+ }, { x: 'float', return: 'float' } );
17
11
 
18
12
  const tri3 = /*@__PURE__*/ Fn( ( [ p ] ) => {
19
13
 
20
14
  return vec3( tri( p.z.add( tri( p.y.mul( 1. ) ) ) ), tri( p.z.add( tri( p.x.mul( 1. ) ) ) ), tri( p.y.add( tri( p.x.mul( 1. ) ) ) ) );
21
15
 
22
- } ).setLayout( {
23
- name: 'tri3',
24
- type: 'vec3',
25
- inputs: [
26
- { name: 'p', type: 'vec3' }
27
- ]
28
- } );
16
+ }, { p: 'vec3', return: 'vec3' } );
29
17
 
30
18
  /**
31
19
  * Generates a noise value from the given position, speed and time parameters.
@@ -60,12 +48,4 @@ export const triNoise3D = /*@__PURE__*/ Fn( ( [ position, speed, time ] ) => {
60
48
 
61
49
  return rz;
62
50
 
63
- } ).setLayout( {
64
- name: 'triNoise3D',
65
- type: 'float',
66
- inputs: [
67
- { name: 'position', type: 'vec3' },
68
- { name: 'speed', type: 'float' },
69
- { name: 'time', type: 'float' }
70
- ]
71
- } );
51
+ }, { position: 'vec3', speed: 'float', time: 'float', return: 'float' } );