super-three 0.171.0 → 0.173.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 (455) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +594 -427
  4. package/build/three.core.js +515 -81
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +79 -350
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +20 -7
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +29362 -3427
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +29361 -3427
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +0 -5
  15. package/examples/jsm/animation/CCDIKSolver.js +9 -7
  16. package/examples/jsm/capabilities/WebGPU.js +1 -1
  17. package/examples/jsm/controls/ArcballControls.js +48 -37
  18. package/examples/jsm/controls/OrbitControls.js +5 -4
  19. package/examples/jsm/csm/CSMShadowNode.js +16 -11
  20. package/examples/jsm/curves/NURBSCurve.js +1 -1
  21. package/examples/jsm/curves/NURBSUtils.js +3 -0
  22. package/examples/jsm/effects/OutlineEffect.js +1 -1
  23. package/examples/jsm/exporters/GLTFExporter.js +34 -29
  24. package/examples/jsm/exporters/KTX2Exporter.js +1 -1
  25. package/examples/jsm/exporters/PLYExporter.js +2 -2
  26. package/examples/jsm/geometries/TextGeometry.js +1 -12
  27. package/examples/jsm/helpers/TextureHelperGPU.js +15 -5
  28. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  29. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  30. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  31. package/examples/jsm/lights/LightProbeGenerator.js +3 -3
  32. package/examples/jsm/lines/webgpu/LineSegments2.js +15 -6
  33. package/examples/jsm/loaders/3MFLoader.js +6 -3
  34. package/examples/jsm/loaders/BVHLoader.js +1 -1
  35. package/examples/jsm/loaders/ColladaLoader.js +5 -5
  36. package/examples/jsm/loaders/DDSLoader.js +42 -0
  37. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  38. package/examples/jsm/loaders/GLTFLoader.js +22 -4
  39. package/examples/jsm/loaders/KTX2Loader.js +6 -1
  40. package/examples/jsm/loaders/KTXLoader.js +4 -4
  41. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  42. package/examples/jsm/loaders/LottieLoader.js +1 -1
  43. package/examples/jsm/loaders/MTLLoader.js +1 -0
  44. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  45. package/examples/jsm/loaders/PLYLoader.js +7 -7
  46. package/examples/jsm/loaders/PVRLoader.js +1 -1
  47. package/examples/jsm/loaders/SVGLoader.js +2 -2
  48. package/examples/jsm/loaders/TDSLoader.js +1 -2
  49. package/examples/jsm/loaders/VRMLLoader.js +7 -7
  50. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  51. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -1
  52. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  53. package/examples/jsm/math/ConvexHull.js +1 -1
  54. package/examples/jsm/math/OBB.js +17 -0
  55. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  56. package/examples/jsm/misc/ProgressiveLightMap.js +4 -3
  57. package/examples/jsm/misc/ProgressiveLightMapGPU.js +14 -13
  58. package/examples/jsm/misc/Volume.js +27 -17
  59. package/examples/jsm/misc/VolumeSlice.js +7 -5
  60. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  61. package/examples/jsm/modifiers/CurveModifierGPU.js +9 -7
  62. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  63. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  64. package/examples/jsm/objects/Sky.js +2 -2
  65. package/examples/jsm/objects/SkyMesh.js +3 -3
  66. package/examples/jsm/objects/Water2.js +1 -1
  67. package/examples/jsm/objects/Water2Mesh.js +2 -2
  68. package/examples/jsm/objects/WaterMesh.js +29 -24
  69. package/examples/jsm/physics/JoltPhysics.js +7 -7
  70. package/examples/jsm/physics/RapierPhysics.js +4 -4
  71. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  72. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  73. package/examples/jsm/postprocessing/OutlinePass.js +4 -4
  74. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  75. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  76. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  77. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  78. package/examples/jsm/postprocessing/SSRPass.js +2 -4
  79. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  80. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  81. package/examples/jsm/shaders/BokehShader2.js +1 -1
  82. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  83. package/examples/jsm/shaders/OutputShader.js +5 -1
  84. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  85. package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
  86. package/examples/jsm/transpiler/TSLEncoder.js +2 -0
  87. package/examples/jsm/tsl/display/AfterImageNode.js +93 -4
  88. package/examples/jsm/tsl/display/AnaglyphPassNode.js +46 -2
  89. package/examples/jsm/tsl/display/AnamorphicNode.js +118 -5
  90. package/examples/jsm/tsl/display/BleachBypass.js +10 -0
  91. package/examples/jsm/tsl/display/BloomNode.js +233 -26
  92. package/examples/jsm/tsl/display/DenoiseNode.js +141 -25
  93. package/examples/jsm/tsl/display/DepthOfFieldNode.js +80 -1
  94. package/examples/jsm/tsl/display/DotScreenNode.js +50 -5
  95. package/examples/jsm/tsl/display/FXAANode.js +52 -3
  96. package/examples/jsm/tsl/display/FilmNode.js +47 -1
  97. package/examples/jsm/tsl/display/GTAONode.js +210 -14
  98. package/examples/jsm/tsl/display/GaussianBlurNode.js +152 -8
  99. package/examples/jsm/tsl/display/LensflareNode.js +131 -13
  100. package/examples/jsm/tsl/display/Lut3DNode.js +55 -1
  101. package/examples/jsm/tsl/display/MotionBlur.js +12 -2
  102. package/examples/jsm/tsl/display/OutlineNode.js +343 -26
  103. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +36 -2
  104. package/examples/jsm/tsl/display/PixelationPassNode.js +142 -9
  105. package/examples/jsm/tsl/display/RGBShiftNode.js +49 -2
  106. package/examples/jsm/tsl/display/SMAANode.js +187 -46
  107. package/examples/jsm/tsl/display/SSAAPassNode.js +110 -25
  108. package/examples/jsm/tsl/display/SSRNode.js +194 -21
  109. package/examples/jsm/tsl/display/Sepia.js +9 -0
  110. package/examples/jsm/tsl/display/SobelOperatorNode.js +54 -4
  111. package/examples/jsm/tsl/display/StereoCompositePassNode.js +79 -3
  112. package/examples/jsm/tsl/display/StereoPassNode.js +41 -3
  113. package/examples/jsm/tsl/display/TRAAPassNode.js +116 -21
  114. package/examples/jsm/tsl/display/TransitionNode.js +71 -6
  115. package/examples/jsm/tsl/display/hashBlur.js +14 -3
  116. package/examples/jsm/tsl/lighting/TiledLightsNode.js +40 -34
  117. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  118. package/examples/jsm/utils/CameraUtils.js +4 -1
  119. package/examples/jsm/utils/GeometryUtils.js +22 -19
  120. package/examples/jsm/utils/SceneUtils.js +2 -2
  121. package/examples/jsm/webxr/XRControllerModelFactory.js +6 -1
  122. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  123. package/package.json +8 -3
  124. package/src/Three.Core.js +4 -0
  125. package/src/Three.Legacy.js +0 -21
  126. package/src/Three.TSL.js +18 -5
  127. package/src/Three.WebGPU.Nodes.js +2 -2
  128. package/src/Three.WebGPU.js +2 -2
  129. package/src/animation/PropertyBinding.js +2 -2
  130. package/src/cameras/ArrayCamera.js +1 -0
  131. package/src/cameras/PerspectiveCamera.js +18 -2
  132. package/src/constants.js +6 -1
  133. package/src/core/BufferAttribute.js +4 -0
  134. package/src/core/EventDispatcher.js +8 -6
  135. package/src/core/RenderTarget.js +18 -0
  136. package/src/core/RenderTarget3D.js +22 -0
  137. package/src/core/RenderTargetArray.js +22 -0
  138. package/src/extras/Earcut.js +1 -1
  139. package/src/extras/ImageUtils.js +1 -11
  140. package/src/extras/PMREMGenerator.js +20 -0
  141. package/src/extras/TextureUtils.js +6 -0
  142. package/src/helpers/CameraHelper.js +16 -13
  143. package/src/loaders/nodes/NodeLoader.js +59 -0
  144. package/src/loaders/nodes/NodeMaterialLoader.js +45 -0
  145. package/src/loaders/nodes/NodeObjectLoader.js +61 -0
  146. package/src/materials/nodes/Line2NodeMaterial.js +128 -34
  147. package/src/materials/nodes/LineBasicNodeMaterial.js +17 -2
  148. package/src/materials/nodes/LineDashedNodeMaterial.js +78 -5
  149. package/src/materials/nodes/MeshBasicNodeMaterial.js +56 -0
  150. package/src/materials/nodes/MeshLambertNodeMaterial.js +35 -0
  151. package/src/materials/nodes/MeshMatcapNodeMaterial.js +22 -2
  152. package/src/materials/nodes/MeshNormalNodeMaterial.js +21 -2
  153. package/src/materials/nodes/MeshPhongNodeMaterial.js +64 -1
  154. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +269 -0
  155. package/src/materials/nodes/MeshSSSNodeMaterial.js +97 -6
  156. package/src/materials/nodes/MeshStandardNodeMaterial.js +78 -0
  157. package/src/materials/nodes/MeshToonNodeMaterial.js +28 -0
  158. package/src/materials/nodes/NodeMaterial.js +476 -23
  159. package/src/materials/nodes/NodeMaterials.js +0 -1
  160. package/src/materials/nodes/PointsNodeMaterial.js +121 -10
  161. package/src/materials/nodes/ShadowNodeMaterial.js +29 -0
  162. package/src/materials/nodes/SpriteNodeMaterial.js +78 -20
  163. package/src/materials/nodes/VolumeNodeMaterial.js +80 -4
  164. package/src/materials/nodes/manager/NodeMaterialObserver.js +95 -0
  165. package/src/nodes/Nodes.js +5 -6
  166. package/src/nodes/TSL.js +6 -3
  167. package/src/nodes/accessors/AccessorsUtils.js +27 -0
  168. package/src/nodes/accessors/Arrays.js +47 -6
  169. package/src/nodes/accessors/BatchNode.js +42 -6
  170. package/src/nodes/accessors/Bitangent.js +37 -0
  171. package/src/nodes/accessors/BufferAttributeNode.js +178 -5
  172. package/src/nodes/accessors/BufferNode.js +63 -0
  173. package/src/nodes/accessors/BuiltinNode.js +38 -0
  174. package/src/nodes/accessors/Camera.js +113 -3
  175. package/src/nodes/accessors/ClippingNode.js +71 -2
  176. package/src/nodes/accessors/CubeTextureNode.js +64 -0
  177. package/src/nodes/accessors/InstanceNode.js +85 -2
  178. package/src/nodes/accessors/InstancedMeshNode.js +28 -3
  179. package/src/nodes/accessors/Lights.js +50 -1
  180. package/src/nodes/accessors/MaterialNode.js +306 -12
  181. package/src/nodes/accessors/MaterialProperties.js +7 -0
  182. package/src/nodes/accessors/MaterialReferenceNode.js +53 -13
  183. package/src/nodes/accessors/ModelNode.js +100 -5
  184. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -38
  185. package/src/nodes/accessors/MorphNode.js +48 -4
  186. package/src/nodes/accessors/Normal.js +65 -5
  187. package/src/nodes/accessors/Object3DNode.js +101 -1
  188. package/src/nodes/accessors/PointUVNode.js +26 -0
  189. package/src/nodes/accessors/Position.js +56 -7
  190. package/src/nodes/accessors/ReferenceBaseNode.js +186 -0
  191. package/src/nodes/accessors/ReferenceNode.js +201 -2
  192. package/src/nodes/accessors/ReflectVector.js +24 -0
  193. package/src/nodes/accessors/RendererReferenceNode.js +46 -1
  194. package/src/nodes/accessors/SceneNode.js +54 -0
  195. package/src/nodes/accessors/SkinningNode.js +127 -1
  196. package/src/nodes/accessors/StorageBufferNode.js +209 -8
  197. package/src/nodes/accessors/StorageTextureNode.js +118 -0
  198. package/src/nodes/accessors/Tangent.js +38 -2
  199. package/src/nodes/accessors/Texture3DNode.js +91 -7
  200. package/src/nodes/accessors/TextureBicubic.js +12 -2
  201. package/src/nodes/accessors/TextureNode.js +316 -10
  202. package/src/nodes/accessors/TextureSizeNode.js +42 -0
  203. package/src/nodes/accessors/UV.js +10 -1
  204. package/src/nodes/accessors/UniformArrayNode.js +231 -25
  205. package/src/nodes/accessors/UserDataNode.js +46 -0
  206. package/src/nodes/accessors/VelocityNode.js +80 -0
  207. package/src/nodes/accessors/VertexColorNode.js +39 -2
  208. package/src/nodes/code/CodeNode.js +95 -1
  209. package/src/nodes/code/ExpressionNode.js +28 -0
  210. package/src/nodes/code/FunctionCallNode.js +37 -0
  211. package/src/nodes/code/FunctionNode.js +45 -0
  212. package/src/nodes/code/ScriptableNode.js +223 -1
  213. package/src/nodes/code/ScriptableValueNode.js +85 -1
  214. package/src/nodes/core/ArrayNode.js +125 -0
  215. package/src/nodes/core/AssignNode.js +48 -2
  216. package/src/nodes/core/AttributeNode.js +43 -0
  217. package/src/nodes/core/BypassNode.js +47 -2
  218. package/src/nodes/core/CacheNode.js +53 -2
  219. package/src/nodes/core/ConstNode.js +32 -0
  220. package/src/nodes/core/ContextNode.js +65 -0
  221. package/src/nodes/core/IndexNode.js +68 -7
  222. package/src/nodes/core/InputNode.js +48 -0
  223. package/src/nodes/core/LightingModel.js +60 -0
  224. package/src/nodes/core/MRTNode.js +66 -0
  225. package/src/nodes/core/Node.js +350 -12
  226. package/src/nodes/core/NodeAttribute.js +38 -0
  227. package/src/nodes/core/NodeBuilder.js +1166 -26
  228. package/src/nodes/core/NodeCache.js +41 -2
  229. package/src/nodes/core/NodeCode.js +31 -0
  230. package/src/nodes/core/NodeFrame.js +123 -2
  231. package/src/nodes/core/NodeFunction.js +46 -0
  232. package/src/nodes/core/NodeFunctionInput.js +44 -0
  233. package/src/nodes/core/NodeParser.js +11 -0
  234. package/src/nodes/core/NodeUniform.js +52 -0
  235. package/src/nodes/core/NodeUtils.js +152 -1
  236. package/src/nodes/core/NodeVar.js +47 -1
  237. package/src/nodes/core/NodeVarying.js +28 -0
  238. package/src/nodes/core/OutputStructNode.js +51 -10
  239. package/src/nodes/core/ParameterNode.js +28 -0
  240. package/src/nodes/core/PropertyNode.js +232 -0
  241. package/src/nodes/core/StackNode.js +98 -1
  242. package/src/nodes/core/StructNode.js +121 -0
  243. package/src/nodes/core/StructType.js +13 -0
  244. package/src/nodes/core/StructTypeNode.js +105 -6
  245. package/src/nodes/core/TempNode.js +31 -5
  246. package/src/nodes/core/UniformGroupNode.js +82 -7
  247. package/src/nodes/core/UniformNode.js +66 -0
  248. package/src/nodes/core/VarNode.js +146 -7
  249. package/src/nodes/core/VaryingNode.js +100 -3
  250. package/src/nodes/core/constants.js +36 -0
  251. package/src/nodes/display/BlendModes.js +88 -1
  252. package/src/nodes/display/BumpMapNode.js +37 -0
  253. package/src/nodes/display/ColorAdjustment.js +53 -11
  254. package/src/nodes/display/ColorSpaceFunctions.js +16 -0
  255. package/src/nodes/display/ColorSpaceNode.js +82 -0
  256. package/src/nodes/display/FrontFacingNode.js +29 -0
  257. package/src/nodes/display/NormalMapNode.js +43 -0
  258. package/src/nodes/display/PassNode.js +300 -7
  259. package/src/nodes/display/PosterizeNode.js +33 -0
  260. package/src/nodes/display/RenderOutputNode.js +66 -1
  261. package/src/nodes/display/ScreenNode.js +96 -0
  262. package/src/nodes/display/ToneMappingFunctions.js +58 -10
  263. package/src/nodes/display/ToneMappingNode.js +55 -2
  264. package/src/nodes/display/ToonOutlinePassNode.js +73 -0
  265. package/src/nodes/display/ViewportDepthNode.js +122 -8
  266. package/src/nodes/display/ViewportDepthTextureNode.js +23 -0
  267. package/src/nodes/display/ViewportSharedTextureNode.js +23 -0
  268. package/src/nodes/display/ViewportTextureNode.js +57 -0
  269. package/src/nodes/fog/Fog.js +110 -0
  270. package/src/nodes/functions/BasicLightingModel.js +24 -0
  271. package/src/nodes/functions/PhongLightingModel.js +34 -2
  272. package/src/nodes/functions/PhysicalLightingModel.js +167 -8
  273. package/src/nodes/functions/ShadowMaskModel.js +23 -0
  274. package/src/nodes/functions/ToonLightingModel.js +20 -0
  275. package/src/nodes/functions/material/getAlphaHashThreshold.js +1 -3
  276. package/src/nodes/functions/material/getParallaxCorrectNormal.js +16 -1
  277. package/src/nodes/geometry/RangeNode.js +54 -2
  278. package/src/nodes/gpgpu/AtomicFunctionNode.js +174 -2
  279. package/src/nodes/gpgpu/BarrierNode.js +47 -0
  280. package/src/nodes/gpgpu/ComputeBuiltinNode.js +134 -0
  281. package/src/nodes/gpgpu/ComputeNode.js +106 -2
  282. package/src/nodes/gpgpu/WorkgroupInfoNode.js +115 -6
  283. package/src/nodes/lighting/AONode.js +18 -0
  284. package/src/nodes/lighting/AmbientLightNode.js +10 -0
  285. package/src/nodes/lighting/AnalyticLightNode.js +97 -2
  286. package/src/nodes/lighting/BasicEnvironmentNode.js +19 -0
  287. package/src/nodes/lighting/BasicLightMapNode.js +17 -0
  288. package/src/nodes/lighting/DirectionalLightNode.js +10 -0
  289. package/src/nodes/lighting/EnvironmentNode.js +18 -0
  290. package/src/nodes/lighting/HemisphereLightNode.js +31 -0
  291. package/src/nodes/lighting/IESSpotLightNode.js +11 -0
  292. package/src/nodes/lighting/IrradianceNode.js +17 -0
  293. package/src/nodes/lighting/LightProbeNode.js +20 -0
  294. package/src/nodes/lighting/LightUtils.js +12 -0
  295. package/src/nodes/lighting/LightingContextNode.js +48 -0
  296. package/src/nodes/lighting/LightingNode.js +15 -6
  297. package/src/nodes/lighting/LightsNode.js +132 -1
  298. package/src/nodes/lighting/PointLightNode.js +32 -1
  299. package/src/nodes/lighting/PointShadowNode.js +54 -1
  300. package/src/nodes/lighting/RectAreaLightNode.js +44 -6
  301. package/src/nodes/lighting/ShadowBaseNode.js +93 -0
  302. package/src/nodes/lighting/ShadowNode.js +241 -35
  303. package/src/nodes/lighting/SpotLightNode.js +43 -0
  304. package/src/nodes/math/ConditionalNode.js +78 -4
  305. package/src/nodes/math/Hash.js +9 -0
  306. package/src/nodes/math/MathNode.js +627 -11
  307. package/src/nodes/math/MathUtils.js +45 -1
  308. package/src/nodes/math/OperatorNode.js +329 -18
  309. package/src/nodes/math/TriNoise3D.js +18 -7
  310. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  311. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  312. package/src/nodes/pmrem/PMREMNode.js +133 -0
  313. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  314. package/src/nodes/procedural/Checker.js +9 -0
  315. package/src/nodes/shapes/Shapes.js +33 -0
  316. package/src/nodes/tsl/TSLBase.js +3 -2
  317. package/src/nodes/tsl/TSLCore.js +22 -2
  318. package/src/nodes/utils/ArrayElementNode.js +39 -3
  319. package/src/nodes/utils/ConvertNode.js +31 -0
  320. package/src/nodes/utils/CubeMapNode.js +78 -0
  321. package/src/nodes/utils/Discard.js +16 -0
  322. package/src/nodes/utils/EquirectUVNode.js +31 -1
  323. package/src/nodes/utils/FlipNode.js +38 -0
  324. package/src/nodes/utils/FunctionOverloadingNode.js +53 -1
  325. package/src/nodes/utils/JoinNode.js +25 -0
  326. package/src/nodes/utils/LoopNode.js +82 -2
  327. package/src/nodes/utils/MatcapUVNode.js +17 -0
  328. package/src/nodes/utils/MaxMipLevelNode.js +49 -0
  329. package/src/nodes/utils/MemberNode.js +68 -0
  330. package/src/nodes/utils/Oscillators.js +33 -0
  331. package/src/nodes/utils/Packing.js +17 -0
  332. package/src/nodes/utils/PostProcessingUtils.js +28 -23
  333. package/src/nodes/utils/RTTNode.js +123 -2
  334. package/src/nodes/utils/ReflectorNode.js +174 -4
  335. package/src/nodes/utils/RemapNode.js +79 -0
  336. package/src/nodes/utils/RotateNode.js +41 -0
  337. package/src/nodes/utils/SetNode.js +44 -1
  338. package/src/nodes/utils/SplitNode.js +55 -3
  339. package/src/nodes/utils/SpriteSheetUVNode.js +46 -0
  340. package/src/nodes/utils/SpriteUtils.js +17 -0
  341. package/src/nodes/utils/StorageArrayElementNode.js +54 -0
  342. package/src/nodes/utils/Timer.js +40 -0
  343. package/src/nodes/utils/TriplanarTexturesNode.js +84 -0
  344. package/src/nodes/utils/UVUtils.js +20 -0
  345. package/src/nodes/utils/ViewportUtils.js +13 -0
  346. package/src/objects/BatchedMesh.js +2 -3
  347. package/src/objects/ClippingGroup.js +49 -0
  348. package/src/objects/Line.js +6 -6
  349. package/src/renderers/WebGLRenderer.js +30 -4
  350. package/src/renderers/common/Animation.js +85 -0
  351. package/src/renderers/common/Attributes.js +36 -0
  352. package/src/renderers/common/Backend.js +502 -44
  353. package/src/renderers/common/Background.js +48 -1
  354. package/src/renderers/common/BindGroup.js +43 -0
  355. package/src/renderers/common/Binding.js +35 -0
  356. package/src/renderers/common/Bindings.js +93 -1
  357. package/src/renderers/common/Buffer.js +49 -0
  358. package/src/renderers/common/BufferUtils.js +27 -0
  359. package/src/renderers/common/BundleGroup.js +57 -0
  360. package/src/renderers/common/ChainMap.js +45 -6
  361. package/src/renderers/common/ClippingContext.js +108 -15
  362. package/src/renderers/common/Color4.js +40 -0
  363. package/src/renderers/common/ComputePipeline.js +24 -0
  364. package/src/renderers/common/CubeRenderTarget.js +13 -0
  365. package/src/renderers/common/DataMap.js +37 -1
  366. package/src/renderers/common/Geometries.js +91 -14
  367. package/src/renderers/common/IndirectStorageBufferAttribute.js +25 -2
  368. package/src/renderers/common/Info.js +78 -35
  369. package/src/renderers/common/Lighting.js +34 -6
  370. package/src/renderers/common/Pipeline.js +22 -0
  371. package/src/renderers/common/Pipelines.js +148 -5
  372. package/src/renderers/common/PostProcessing.js +99 -11
  373. package/src/renderers/common/ProgrammableStage.js +60 -2
  374. package/src/renderers/common/QuadMesh.js +54 -5
  375. package/src/renderers/common/RenderBundle.js +14 -8
  376. package/src/renderers/common/RenderBundles.js +39 -10
  377. package/src/renderers/common/RenderContext.js +201 -2
  378. package/src/renderers/common/RenderContexts.js +59 -6
  379. package/src/renderers/common/RenderList.js +178 -0
  380. package/src/renderers/common/RenderLists.js +40 -3
  381. package/src/renderers/common/RenderObject.js +400 -17
  382. package/src/renderers/common/RenderObjects.js +103 -7
  383. package/src/renderers/common/RenderPipeline.js +24 -0
  384. package/src/renderers/common/Renderer.js +1170 -86
  385. package/src/renderers/common/RendererUtils.js +193 -0
  386. package/src/renderers/common/SampledTexture.js +120 -0
  387. package/src/renderers/common/Sampler.js +30 -0
  388. package/src/renderers/common/StorageBuffer.js +24 -0
  389. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  390. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  391. package/src/renderers/common/StorageTexture.js +38 -0
  392. package/src/renderers/common/Textures.js +97 -7
  393. package/src/renderers/common/TimestampQueryPool.js +39 -0
  394. package/src/renderers/common/Uniform.js +225 -3
  395. package/src/renderers/common/UniformBuffer.js +19 -0
  396. package/src/renderers/common/UniformsGroup.js +141 -2
  397. package/src/renderers/common/XRManager.js +1193 -0
  398. package/src/renderers/common/XRRenderTarget.js +74 -0
  399. package/src/renderers/common/extras/PMREMGenerator.js +76 -10
  400. package/src/renderers/common/nodes/NodeBuilderState.js +99 -5
  401. package/src/renderers/common/nodes/NodeLibrary.js +89 -0
  402. package/src/renderers/common/nodes/NodeSampledTexture.js +90 -2
  403. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  404. package/src/renderers/common/nodes/NodeStorageBuffer.js +35 -0
  405. package/src/renderers/common/nodes/NodeUniform.js +243 -2
  406. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  407. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  408. package/src/renderers/common/nodes/Nodes.js +352 -78
  409. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  410. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  411. package/src/renderers/webgl/WebGLBackground.js +4 -0
  412. package/src/renderers/webgl-fallback/WebGLBackend.js +819 -116
  413. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +347 -18
  414. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +58 -1
  415. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  416. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  417. package/src/renderers/webgl-fallback/utils/WebGLState.js +323 -11
  418. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +168 -22
  419. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +359 -0
  420. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  421. package/src/renderers/webgpu/WebGPUBackend.js +578 -164
  422. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +36 -0
  423. package/src/renderers/webgpu/WebGPURenderer.js +36 -0
  424. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +20 -8
  425. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +21 -8
  426. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +674 -52
  427. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +17 -0
  428. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  429. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +95 -14
  430. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +94 -1
  431. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +102 -3
  432. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +98 -1
  433. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +262 -18
  434. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +274 -0
  435. package/src/renderers/webgpu/utils/WebGPUUtils.js +116 -4
  436. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  437. package/src/renderers/webxr/WebXRManager.js +19 -2
  438. package/src/textures/Data3DTexture.js +2 -2
  439. package/src/textures/Texture.js +4 -0
  440. package/src/textures/VideoFrameTexture.js +35 -0
  441. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1209
  442. package/examples/jsm/animation/MMDPhysics.js +0 -1408
  443. package/examples/jsm/exporters/MMDExporter.js +0 -223
  444. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -176
  445. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  446. package/examples/jsm/loaders/MMDLoader.js +0 -2298
  447. package/examples/jsm/objects/InstancedPoints.js +0 -19
  448. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  449. package/src/materials/nodes/InstancedPointsNodeMaterial.js +0 -156
  450. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -24
  451. package/src/nodes/core/UniformGroup.js +0 -13
  452. package/src/nodes/fog/FogExp2Node.js +0 -35
  453. package/src/nodes/fog/FogNode.js +0 -50
  454. package/src/nodes/fog/FogRangeNode.js +0 -36
  455. package/src/renderers/common/PostProcessingUtils.js +0 -86
@@ -1,10 +1,13 @@
1
1
  import { Color } from '../../math/Color.js';
2
+ import { Matrix2 } from '../../math/Matrix2.js';
2
3
  import { Matrix3 } from '../../math/Matrix3.js';
3
4
  import { Matrix4 } from '../../math/Matrix4.js';
4
5
  import { Vector2 } from '../../math/Vector2.js';
5
6
  import { Vector3 } from '../../math/Vector3.js';
6
7
  import { Vector4 } from '../../math/Vector4.js';
7
8
 
9
+ /** @module NodeUtils **/
10
+
8
11
  // cyrb53 (c) 2018 bryc (github.com/bryc). License: Public domain. Attribution appreciated.
9
12
  // A fast and simple 64-bit (or 53-bit) string hash function with decent collision resistance.
10
13
  // Largely inspired by MurmurHash2/3, but with a focus on speed/simplicity.
@@ -45,10 +48,41 @@ function cyrb53( value, seed = 0 ) {
45
48
 
46
49
  }
47
50
 
51
+ /**
52
+ * Computes a hash for the given string.
53
+ *
54
+ * @method
55
+ * @param {String} str - The string to be hashed.
56
+ * @return {Number} The hash.
57
+ */
48
58
  export const hashString = ( str ) => cyrb53( str );
59
+
60
+ /**
61
+ * Computes a hash for the given array.
62
+ *
63
+ * @method
64
+ * @param {Array<Number>} array - The array to be hashed.
65
+ * @return {Number} The hash.
66
+ */
49
67
  export const hashArray = ( array ) => cyrb53( array );
68
+
69
+ /**
70
+ * Computes a hash for the given list of parameters.
71
+ *
72
+ * @method
73
+ * @param {...Number} params - A list of parameters.
74
+ * @return {Number} The hash.
75
+ */
50
76
  export const hash = ( ...params ) => cyrb53( params );
51
77
 
78
+ /**
79
+ * Computes a cache key for the given node.
80
+ *
81
+ * @method
82
+ * @param {Object} object - The object to be hashed.
83
+ * @param {Boolean} [force=false] - Whether to force a cache key computation or not.
84
+ * @return {Number} The hash.
85
+ */
52
86
  export function getCacheKey( object, force = false ) {
53
87
 
54
88
  const values = [];
@@ -62,7 +96,7 @@ export function getCacheKey( object, force = false ) {
62
96
 
63
97
  for ( const { property, childNode } of getNodeChildren( object ) ) {
64
98
 
65
- values.push( values, cyrb53( property.slice( 0, - 4 ) ), childNode.getCacheKey( force ) );
99
+ values.push( cyrb53( property.slice( 0, - 4 ) ), childNode.getCacheKey( force ) );
66
100
 
67
101
  }
68
102
 
@@ -70,6 +104,15 @@ export function getCacheKey( object, force = false ) {
70
104
 
71
105
  }
72
106
 
107
+ /**
108
+ * This generator function can be used to iterate over the node children
109
+ * of the given object.
110
+ *
111
+ * @generator
112
+ * @param {Object} node - The object to be hashed.
113
+ * @param {Boolean} [toJSON=false] - Whether to return JSON or not.
114
+ * @yields {Object} A result node holding the property, index (if available) and the child node.
115
+ */
73
116
  export function* getNodeChildren( node, toJSON = false ) {
74
117
 
75
118
  for ( const property in node ) {
@@ -126,18 +169,68 @@ const typeFromLength = /*@__PURE__*/ new Map( [
126
169
  [ 16, 'mat4' ]
127
170
  ] );
128
171
 
172
+ const dataFromObject = /*@__PURE__*/ new WeakMap();
173
+
174
+ /**
175
+ * Returns the data type for the given the length.
176
+ *
177
+ * @method
178
+ * @param {Number} length - The length.
179
+ * @return {String} The data type.
180
+ */
129
181
  export function getTypeFromLength( length ) {
130
182
 
131
183
  return typeFromLength.get( length );
132
184
 
133
185
  }
134
186
 
187
+ /**
188
+ * Returns the typed array for the given data type.
189
+ *
190
+ * @method
191
+ * @param {String} type - The data type.
192
+ * @return {TypedArray} The typed array.
193
+ */
194
+ export function getTypedArrayFromType( type ) {
195
+
196
+ // Handle component type for vectors and matrices
197
+ if ( /[iu]?vec\d/.test( type ) ) {
198
+
199
+ // Handle int vectors
200
+ if ( type.startsWith( 'ivec' ) ) return Int32Array;
201
+ // Handle uint vectors
202
+ if ( type.startsWith( 'uvec' ) ) return Uint32Array;
203
+ // Default to float vectors
204
+ return Float32Array;
205
+
206
+ }
207
+
208
+ // Handle matrices (always float)
209
+ if ( /mat\d/.test( type ) ) return Float32Array;
210
+
211
+ // Basic types
212
+ if ( /float/.test( type ) ) return Float32Array;
213
+ if ( /uint/.test( type ) ) return Uint32Array;
214
+ if ( /int/.test( type ) ) return Int32Array;
215
+
216
+ throw new Error( `THREE.NodeUtils: Unsupported type: ${type}` );
217
+
218
+ }
219
+
220
+ /**
221
+ * Returns the length for the given data type.
222
+ *
223
+ * @method
224
+ * @param {String} type - The data type.
225
+ * @return {Number} The length.
226
+ */
135
227
  export function getLengthFromType( type ) {
136
228
 
137
229
  if ( /float|int|uint/.test( type ) ) return 1;
138
230
  if ( /vec2/.test( type ) ) return 2;
139
231
  if ( /vec3/.test( type ) ) return 3;
140
232
  if ( /vec4/.test( type ) ) return 4;
233
+ if ( /mat2/.test( type ) ) return 4;
141
234
  if ( /mat3/.test( type ) ) return 9;
142
235
  if ( /mat4/.test( type ) ) return 16;
143
236
 
@@ -145,6 +238,13 @@ export function getLengthFromType( type ) {
145
238
 
146
239
  }
147
240
 
241
+ /**
242
+ * Returns the data type for the given value.
243
+ *
244
+ * @method
245
+ * @param {Any} value - The value.
246
+ * @return {String?} The data type.
247
+ */
148
248
  export function getValueType( value ) {
149
249
 
150
250
  if ( value === undefined || value === null ) return null;
@@ -183,6 +283,10 @@ export function getValueType( value ) {
183
283
 
184
284
  return 'vec4';
185
285
 
286
+ } else if ( value.isMatrix2 === true ) {
287
+
288
+ return 'mat2';
289
+
186
290
  } else if ( value.isMatrix3 === true ) {
187
291
 
188
292
  return 'mat3';
@@ -205,6 +309,14 @@ export function getValueType( value ) {
205
309
 
206
310
  }
207
311
 
312
+ /**
313
+ * Returns the value/object for the given data type and parameters.
314
+ *
315
+ * @method
316
+ * @param {String} type - The given type.
317
+ * @param {...Any} params - A parameter list.
318
+ * @return {Any} The value/object.
319
+ */
208
320
  export function getValueFromType( type, ...params ) {
209
321
 
210
322
  const last4 = type ? type.slice( - 4 ) : undefined;
@@ -233,6 +345,10 @@ export function getValueFromType( type, ...params ) {
233
345
 
234
346
  return new Vector4( ...params );
235
347
 
348
+ } else if ( last4 === 'mat2' ) {
349
+
350
+ return new Matrix2( ...params );
351
+
236
352
  } else if ( last4 === 'mat3' ) {
237
353
 
238
354
  return new Matrix3( ...params );
@@ -263,6 +379,34 @@ export function getValueFromType( type, ...params ) {
263
379
 
264
380
  }
265
381
 
382
+ /**
383
+ * Gets the object data that can be shared between different rendering steps.
384
+ *
385
+ * @param {Object} object - The object to get the data for.
386
+ * @return {Object} The object data.
387
+ */
388
+ export function getDataFromObject( object ) {
389
+
390
+ let data = dataFromObject.get( object );
391
+
392
+ if ( data === undefined ) {
393
+
394
+ data = {};
395
+ dataFromObject.set( object, data );
396
+
397
+ }
398
+
399
+ return data;
400
+
401
+ }
402
+
403
+ /**
404
+ * Converts the given array buffer to a Base64 string.
405
+ *
406
+ * @method
407
+ * @param {ArrayBuffer} arrayBuffer - The array buffer.
408
+ * @return {String} The Base64 string.
409
+ */
266
410
  export function arrayBufferToBase64( arrayBuffer ) {
267
411
 
268
412
  let chars = '';
@@ -279,6 +423,13 @@ export function arrayBufferToBase64( arrayBuffer ) {
279
423
 
280
424
  }
281
425
 
426
+ /**
427
+ * Converts the given Base64 string to an array buffer.
428
+ *
429
+ * @method
430
+ * @param {String} base64 - The Base64 string.
431
+ * @return {ArrayBuffer} The array buffer.
432
+ */
282
433
  export function base64ToArrayBuffer( base64 ) {
283
434
 
284
435
  return Uint8Array.from( atob( base64 ), c => c.charCodeAt( 0 ) ).buffer;
@@ -1,12 +1,58 @@
1
+ /**
2
+ * {@link NodeBuilder} is going to create instances of this class during the build process
3
+ * of nodes. They represent the final shader variables that are going to be generated
4
+ * by the builder. A dictionary of node variables is maintained in {@link NodeBuilder#vars} for
5
+ * this purpose.
6
+ */
1
7
  class NodeVar {
2
8
 
3
- constructor( name, type ) {
9
+ /**
10
+ * Constructs a new node variable.
11
+ *
12
+ * @param {String} name - The name of the variable.
13
+ * @param {String} type - The type of the variable.
14
+ * @param {Boolean} [readOnly=false] - The read-only flag.
15
+ * @param {Number?} [count=null] - The size.
16
+ */
17
+ constructor( name, type, readOnly = false, count = null ) {
4
18
 
19
+ /**
20
+ * This flag can be used for type testing.
21
+ *
22
+ * @type {Boolean}
23
+ * @readonly
24
+ * @default true
25
+ */
5
26
  this.isNodeVar = true;
6
27
 
28
+ /**
29
+ * The name of the variable.
30
+ *
31
+ * @type {String}
32
+ */
7
33
  this.name = name;
34
+
35
+ /**
36
+ * The type of the variable.
37
+ *
38
+ * @type {String}
39
+ */
8
40
  this.type = type;
9
41
 
42
+ /**
43
+ * The read-only flag.
44
+ *
45
+ * @type {Boolean}
46
+ */
47
+ this.readOnly = readOnly;
48
+
49
+ /**
50
+ * The size.
51
+ *
52
+ * @type {Number?}
53
+ */
54
+ this.count = count;
55
+
10
56
  }
11
57
 
12
58
  }
@@ -1,13 +1,41 @@
1
1
  import NodeVar from './NodeVar.js';
2
2
 
3
+ /**
4
+ * {@link NodeBuilder} is going to create instances of this class during the build process
5
+ * of nodes. They represent the final shader varyings that are going to be generated
6
+ * by the builder. An array of node varyings is maintained in {@link NodeBuilder#varyings} for
7
+ * this purpose.
8
+ *
9
+ * @augments NodeVar
10
+ */
3
11
  class NodeVarying extends NodeVar {
4
12
 
13
+ /**
14
+ * Constructs a new node varying.
15
+ *
16
+ * @param {String} name - The name of the varying.
17
+ * @param {String} type - The type of the varying.
18
+ */
5
19
  constructor( name, type ) {
6
20
 
7
21
  super( name, type );
8
22
 
23
+ /**
24
+ * Whether this varying requires interpolation or not. This property can be used
25
+ * to check if the varying can be optimized for a variable.
26
+ *
27
+ * @type {Boolean}
28
+ * @default false
29
+ */
9
30
  this.needsInterpolation = false;
10
31
 
32
+ /**
33
+ * This flag can be used for type testing.
34
+ *
35
+ * @type {Boolean}
36
+ * @readonly
37
+ * @default true
38
+ */
11
39
  this.isNodeVarying = true;
12
40
 
13
41
  }
@@ -1,7 +1,13 @@
1
1
  import Node from './Node.js';
2
- import StructTypeNode from './StructTypeNode.js';
3
2
  import { nodeProxy } from '../tsl/TSLBase.js';
4
3
 
4
+ /** @module OutputStructNode **/
5
+
6
+ /**
7
+ * This node can be used to define multiple outputs in a shader programs.
8
+ *
9
+ * @augments Node
10
+ */
5
11
  class OutputStructNode extends Node {
6
12
 
7
13
  static get type() {
@@ -10,34 +16,62 @@ class OutputStructNode extends Node {
10
16
 
11
17
  }
12
18
 
19
+ /**
20
+ * Constructs a new output struct node. The constructor can be invoked with an
21
+ * arbitrary number of nodes representing the members.
22
+ *
23
+ * @param {...Node} members - A parameter list of nodes.
24
+ */
13
25
  constructor( ...members ) {
14
26
 
15
27
  super();
16
28
 
29
+ /**
30
+ * An array of nodes which defines the output.
31
+ *
32
+ * @type {Array<Node>}
33
+ */
17
34
  this.members = members;
18
35
 
36
+ /**
37
+ * This flag can be used for type testing.
38
+ *
39
+ * @type {Boolean}
40
+ * @readonly
41
+ * @default true
42
+ */
19
43
  this.isOutputStructNode = true;
20
44
 
21
45
  }
22
46
 
23
- setup( builder ) {
47
+ getNodeType( builder ) {
24
48
 
25
- super.setup( builder );
49
+ const properties = builder.getNodeProperties( this );
26
50
 
27
- const members = this.members;
28
- const types = [];
51
+ if ( properties.membersLayout === undefined ) {
29
52
 
30
- for ( let i = 0; i < members.length; i ++ ) {
53
+ const members = this.members;
54
+ const membersLayout = [];
55
+
56
+ for ( let i = 0; i < members.length; i ++ ) {
57
+
58
+ const name = 'm' + i;
59
+ const type = members[ i ].getNodeType( builder );
60
+
61
+ membersLayout.push( { name, type, index: i } );
62
+
63
+ }
31
64
 
32
- types.push( members[ i ].getNodeType( builder ) );
65
+ properties.membersLayout = membersLayout;
66
+ properties.structType = builder.getOutputStructTypeFromNode( this, properties.membersLayout );
33
67
 
34
68
  }
35
69
 
36
- this.nodeType = builder.getStructTypeFromNode( new StructTypeNode( types ) ).name;
70
+ return properties.structType.name;
37
71
 
38
72
  }
39
73
 
40
- generate( builder, output ) {
74
+ generate( builder ) {
41
75
 
42
76
  const propertyName = builder.getOutputStructName();
43
77
  const members = this.members;
@@ -46,7 +80,7 @@ class OutputStructNode extends Node {
46
80
 
47
81
  for ( let i = 0; i < members.length; i ++ ) {
48
82
 
49
- const snippet = members[ i ].build( builder, output );
83
+ const snippet = members[ i ].build( builder );
50
84
 
51
85
  builder.addLineFlowCode( `${ structPrefix }m${ i } = ${ snippet }`, this );
52
86
 
@@ -60,4 +94,11 @@ class OutputStructNode extends Node {
60
94
 
61
95
  export default OutputStructNode;
62
96
 
97
+ /**
98
+ * TSL function for creating an output struct node.
99
+ *
100
+ * @function
101
+ * @param {...Node} members - A parameter list of nodes.
102
+ * @returns {OutputStructNode}
103
+ */
63
104
  export const outputStruct = /*@__PURE__*/ nodeProxy( OutputStructNode );
@@ -1,6 +1,13 @@
1
1
  import { nodeObject } from '../tsl/TSLBase.js';
2
2
  import PropertyNode from './PropertyNode.js';
3
3
 
4
+ /** @module ParameterNode **/
5
+
6
+ /**
7
+ * Special version of {@link PropertyNode} which is used for parameters.
8
+ *
9
+ * @augments PropertyNode
10
+ */
4
11
  class ParameterNode extends PropertyNode {
5
12
 
6
13
  static get type() {
@@ -9,10 +16,23 @@ class ParameterNode extends PropertyNode {
9
16
 
10
17
  }
11
18
 
19
+ /**
20
+ * Constructs a new parameter node.
21
+ *
22
+ * @param {String} nodeType - The type of the node.
23
+ * @param {String?} [name=null] - The name of the parameter in the shader.
24
+ */
12
25
  constructor( nodeType, name = null ) {
13
26
 
14
27
  super( nodeType, name );
15
28
 
29
+ /**
30
+ * This flag can be used for type testing.
31
+ *
32
+ * @type {Boolean}
33
+ * @readonly
34
+ * @default true
35
+ */
16
36
  this.isParameterNode = true;
17
37
 
18
38
  }
@@ -33,4 +53,12 @@ class ParameterNode extends PropertyNode {
33
53
 
34
54
  export default ParameterNode;
35
55
 
56
+ /**
57
+ * TSL function for creating a parameter node.
58
+ *
59
+ * @function
60
+ * @param {String} type - The type of the node.
61
+ * @param {String?} name - The name of the parameter in the shader.
62
+ * @returns {ParameterNode}
63
+ */
36
64
  export const parameter = ( type, name ) => nodeObject( new ParameterNode( type, name ) );