super-three 0.173.5 → 0.176.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 (832) hide show
  1. package/build/three.cjs +21993 -1359
  2. package/build/three.core.js +21129 -1188
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +835 -142
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +8 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +19493 -17617
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +19477 -17617
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +1 -1
  13. package/examples/jsm/animation/AnimationClipCreator.js +57 -6
  14. package/examples/jsm/animation/CCDIKSolver.js +144 -42
  15. package/examples/jsm/capabilities/WebGL.js +28 -3
  16. package/examples/jsm/capabilities/WebGPU.js +16 -6
  17. package/examples/jsm/controls/ArcballControls.js +424 -154
  18. package/examples/jsm/controls/DragControls.js +93 -2
  19. package/examples/jsm/controls/FirstPersonControls.js +113 -4
  20. package/examples/jsm/controls/FlyControls.js +49 -2
  21. package/examples/jsm/controls/MapControls.js +42 -9
  22. package/examples/jsm/controls/OrbitControls.js +345 -42
  23. package/examples/jsm/controls/PointerLockControls.js +111 -9
  24. package/examples/jsm/controls/TrackballControls.js +159 -8
  25. package/examples/jsm/controls/TransformControls.js +252 -6
  26. package/examples/jsm/csm/CSM.js +226 -15
  27. package/examples/jsm/csm/CSMFrustum.js +52 -0
  28. package/examples/jsm/csm/CSMHelper.js +47 -0
  29. package/examples/jsm/csm/CSMShader.js +10 -1
  30. package/examples/jsm/csm/CSMShadowNode.js +156 -13
  31. package/examples/jsm/curves/CurveExtras.js +289 -31
  32. package/examples/jsm/curves/NURBSCurve.js +57 -14
  33. package/examples/jsm/curves/NURBSSurface.js +50 -6
  34. package/examples/jsm/curves/NURBSUtils.js +96 -112
  35. package/examples/jsm/curves/NURBSVolume.js +22 -4
  36. package/examples/jsm/effects/AnaglyphEffect.js +30 -0
  37. package/examples/jsm/effects/AsciiEffect.js +60 -15
  38. package/examples/jsm/effects/OutlineEffect.js +59 -111
  39. package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
  40. package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
  41. package/examples/jsm/effects/StereoEffect.js +29 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +49 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +23 -4
  44. package/examples/jsm/exporters/DRACOExporter.js +53 -13
  45. package/examples/jsm/exporters/EXRExporter.js +37 -8
  46. package/examples/jsm/exporters/GLTFExporter.js +194 -71
  47. package/examples/jsm/exporters/KTX2Exporter.js +20 -0
  48. package/examples/jsm/exporters/OBJExporter.js +18 -0
  49. package/examples/jsm/exporters/PLYExporter.js +39 -9
  50. package/examples/jsm/exporters/STLExporter.js +25 -5
  51. package/examples/jsm/exporters/USDZExporter.js +70 -3
  52. package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +18 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +20 -9
  55. package/examples/jsm/geometries/ParametricFunctions.js +97 -0
  56. package/examples/jsm/geometries/ParametricGeometry.js +37 -5
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
  58. package/examples/jsm/geometries/TeapotGeometry.js +22 -38
  59. package/examples/jsm/geometries/TextGeometry.js +44 -16
  60. package/examples/jsm/helpers/LightProbeHelper.js +35 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +35 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
  64. package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
  65. package/examples/jsm/helpers/TextureHelper.js +27 -0
  66. package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
  67. package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
  68. package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
  69. package/examples/jsm/helpers/ViewHelper.js +75 -1
  70. package/examples/jsm/interactive/HTMLMesh.js +25 -0
  71. package/examples/jsm/interactive/InteractiveGroup.js +65 -5
  72. package/examples/jsm/interactive/SelectionBox.js +74 -9
  73. package/examples/jsm/interactive/SelectionHelper.js +74 -30
  74. package/examples/jsm/libs/motion-controllers.module.js +1 -1
  75. package/examples/jsm/lighting/TiledLighting.js +23 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +26 -1
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
  79. package/examples/jsm/lines/Line2.js +36 -0
  80. package/examples/jsm/lines/LineGeometry.js +52 -0
  81. package/examples/jsm/lines/LineMaterial.js +95 -0
  82. package/examples/jsm/lines/LineSegments2.js +51 -2
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
  84. package/examples/jsm/lines/Wireframe.js +38 -2
  85. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +25 -1
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
  88. package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
  89. package/examples/jsm/loaders/3DMLoader.js +71 -2
  90. package/examples/jsm/loaders/3MFLoader.js +51 -5
  91. package/examples/jsm/loaders/AMFLoader.js +31 -12
  92. package/examples/jsm/loaders/BVHLoader.js +57 -11
  93. package/examples/jsm/loaders/ColladaLoader.js +36 -1
  94. package/examples/jsm/loaders/DDSLoader.js +25 -1
  95. package/examples/jsm/loaders/DRACOLoader.js +73 -1
  96. package/examples/jsm/loaders/EXRLoader.js +40 -8
  97. package/examples/jsm/loaders/FBXLoader.js +71 -14
  98. package/examples/jsm/loaders/FontLoader.js +60 -2
  99. package/examples/jsm/loaders/GCodeLoader.js +33 -5
  100. package/examples/jsm/loaders/GLTFLoader.js +222 -9
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
  102. package/examples/jsm/loaders/IESLoader.js +41 -0
  103. package/examples/jsm/loaders/KMZLoader.js +32 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +87 -19
  105. package/examples/jsm/loaders/KTXLoader.js +26 -6
  106. package/examples/jsm/loaders/LDrawLoader.js +115 -5
  107. package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
  108. package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
  109. package/examples/jsm/loaders/LUTImageLoader.js +78 -38
  110. package/examples/jsm/loaders/LWOLoader.js +46 -7
  111. package/examples/jsm/loaders/LottieLoader.js +37 -0
  112. package/examples/jsm/loaders/MD2Loader.js +36 -1
  113. package/examples/jsm/loaders/MDDLoader.js +56 -12
  114. package/examples/jsm/loaders/MTLLoader.js +56 -33
  115. package/examples/jsm/loaders/MaterialXLoader.js +33 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +36 -5
  117. package/examples/jsm/loaders/OBJLoader.js +48 -1
  118. package/examples/jsm/loaders/PCDLoader.js +47 -0
  119. package/examples/jsm/loaders/PDBLoader.js +40 -2
  120. package/examples/jsm/loaders/PLYLoader.js +62 -32
  121. package/examples/jsm/loaders/PVRLoader.js +23 -5
  122. package/examples/jsm/loaders/RGBELoader.js +38 -5
  123. package/examples/jsm/loaders/RGBMLoader.js +67 -1
  124. package/examples/jsm/loaders/STLLoader.js +47 -38
  125. package/examples/jsm/loaders/SVGLoader.js +113 -20
  126. package/examples/jsm/loaders/TDSLoader.js +90 -70
  127. package/examples/jsm/loaders/TGALoader.js +22 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +22 -0
  129. package/examples/jsm/loaders/TTFLoader.js +36 -2
  130. package/examples/jsm/loaders/USDZLoader.js +34 -1
  131. package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
  132. package/examples/jsm/loaders/VOXLoader.js +57 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +32 -1
  134. package/examples/jsm/loaders/VTKLoader.js +38 -0
  135. package/examples/jsm/loaders/XYZLoader.js +35 -0
  136. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
  137. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
  138. package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
  139. package/examples/jsm/math/Capsule.js +89 -14
  140. package/examples/jsm/math/ColorConverter.js +21 -0
  141. package/examples/jsm/math/ColorSpaces.js +53 -0
  142. package/examples/jsm/math/ConvexHull.js +514 -92
  143. package/examples/jsm/math/ImprovedNoise.js +14 -2
  144. package/examples/jsm/math/Lut.js +111 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
  146. package/examples/jsm/math/OBB.js +139 -46
  147. package/examples/jsm/math/Octree.js +132 -5
  148. package/examples/jsm/math/SimplexNoise.js +66 -42
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
  150. package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
  151. package/examples/jsm/misc/Gyroscope.js +11 -0
  152. package/examples/jsm/misc/MD2Character.js +115 -2
  153. package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
  154. package/examples/jsm/misc/MorphAnimMesh.js +43 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +102 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
  158. package/examples/jsm/misc/RollerCoaster.js +52 -0
  159. package/examples/jsm/misc/Timer.js +105 -13
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +109 -73
  162. package/examples/jsm/misc/VolumeSlice.js +91 -48
  163. package/examples/jsm/modifiers/CurveModifier.js +57 -34
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
  167. package/examples/jsm/modifiers/TessellateModifier.js +33 -2
  168. package/examples/jsm/objects/GroundedSkybox.js +23 -5
  169. package/examples/jsm/objects/Lensflare.js +91 -2
  170. package/examples/jsm/objects/LensflareMesh.js +53 -2
  171. package/examples/jsm/objects/MarchingCubes.js +88 -5
  172. package/examples/jsm/objects/Reflector.js +75 -2
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
  174. package/examples/jsm/objects/Refractor.js +61 -0
  175. package/examples/jsm/objects/ShadowMesh.js +53 -4
  176. package/examples/jsm/objects/Sky.js +26 -9
  177. package/examples/jsm/objects/SkyMesh.js +60 -9
  178. package/examples/jsm/objects/Water.js +44 -5
  179. package/examples/jsm/objects/Water2.js +42 -3
  180. package/examples/jsm/objects/Water2Mesh.js +38 -3
  181. package/examples/jsm/objects/WaterMesh.js +94 -7
  182. package/examples/jsm/physics/AmmoPhysics.js +47 -0
  183. package/examples/jsm/physics/JoltPhysics.js +48 -0
  184. package/examples/jsm/physics/RapierPhysics.js +56 -0
  185. package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
  186. package/examples/jsm/postprocessing/BloomPass.js +125 -24
  187. package/examples/jsm/postprocessing/BokehPass.js +98 -22
  188. package/examples/jsm/postprocessing/ClearPass.js +53 -3
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
  190. package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
  191. package/examples/jsm/postprocessing/EffectComposer.js +134 -0
  192. package/examples/jsm/postprocessing/FilmPass.js +53 -5
  193. package/examples/jsm/postprocessing/GTAOPass.js +191 -48
  194. package/examples/jsm/postprocessing/GlitchPass.js +84 -33
  195. package/examples/jsm/postprocessing/HalftonePass.js +64 -10
  196. package/examples/jsm/postprocessing/LUTPass.js +37 -8
  197. package/examples/jsm/postprocessing/MaskPass.js +90 -0
  198. package/examples/jsm/postprocessing/OutlinePass.js +268 -134
  199. package/examples/jsm/postprocessing/OutputPass.js +53 -14
  200. package/examples/jsm/postprocessing/Pass.js +98 -4
  201. package/examples/jsm/postprocessing/RenderPass.js +83 -0
  202. package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
  203. package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
  204. package/examples/jsm/postprocessing/SAOPass.js +126 -53
  205. package/examples/jsm/postprocessing/SMAAPass.js +103 -71
  206. package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
  207. package/examples/jsm/postprocessing/SSAOPass.js +160 -47
  208. package/examples/jsm/postprocessing/SSRPass.js +230 -49
  209. package/examples/jsm/postprocessing/SavePass.js +68 -16
  210. package/examples/jsm/postprocessing/ShaderPass.js +64 -7
  211. package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
  212. package/examples/jsm/postprocessing/TexturePass.js +71 -8
  213. package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
  214. package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
  215. package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
  216. package/examples/jsm/renderers/Projector.js +18 -2
  217. package/examples/jsm/renderers/SVGRenderer.js +124 -0
  218. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
  219. package/examples/jsm/shaders/AfterimageShader.js +6 -4
  220. package/examples/jsm/shaders/BasicShader.js +6 -2
  221. package/examples/jsm/shaders/BleachBypassShader.js +8 -4
  222. package/examples/jsm/shaders/BlendShader.js +6 -2
  223. package/examples/jsm/shaders/BokehShader.js +7 -4
  224. package/examples/jsm/shaders/BokehShader2.js +7 -3
  225. package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
  226. package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
  227. package/examples/jsm/shaders/ColorifyShader.js +6 -2
  228. package/examples/jsm/shaders/ConvolutionShader.js +7 -39
  229. package/examples/jsm/shaders/CopyShader.js +6 -2
  230. package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
  231. package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
  232. package/examples/jsm/shaders/DigitalGlitch.js +7 -7
  233. package/examples/jsm/shaders/DotScreenShader.js +6 -4
  234. package/examples/jsm/shaders/ExposureShader.js +6 -2
  235. package/examples/jsm/shaders/FXAAShader.js +15 -7
  236. package/examples/jsm/shaders/FilmShader.js +10 -0
  237. package/examples/jsm/shaders/FocusShader.js +6 -4
  238. package/examples/jsm/shaders/FreiChenShader.js +7 -3
  239. package/examples/jsm/shaders/GTAOShader.js +33 -39
  240. package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
  241. package/examples/jsm/shaders/GodRaysShader.js +14 -5
  242. package/examples/jsm/shaders/HalftoneShader.js +11 -5
  243. package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
  244. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
  245. package/examples/jsm/shaders/HueSaturationShader.js +7 -3
  246. package/examples/jsm/shaders/KaleidoShader.js +8 -4
  247. package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
  248. package/examples/jsm/shaders/LuminosityShader.js +6 -3
  249. package/examples/jsm/shaders/MirrorShader.js +7 -4
  250. package/examples/jsm/shaders/NormalMapShader.js +5 -3
  251. package/examples/jsm/shaders/OutputShader.js +11 -0
  252. package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
  253. package/examples/jsm/shaders/RGBShiftShader.js +5 -1
  254. package/examples/jsm/shaders/SAOShader.js +8 -2
  255. package/examples/jsm/shaders/SMAAShader.js +23 -1
  256. package/examples/jsm/shaders/SSAOShader.js +23 -5
  257. package/examples/jsm/shaders/SSRShader.js +25 -1
  258. package/examples/jsm/shaders/SepiaShader.js +6 -4
  259. package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
  260. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
  261. package/examples/jsm/shaders/TechnicolorShader.js +7 -4
  262. package/examples/jsm/shaders/ToonShader.js +29 -7
  263. package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
  264. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
  265. package/examples/jsm/shaders/VelocityShader.js +6 -2
  266. package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
  267. package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
  268. package/examples/jsm/shaders/VignetteShader.js +6 -4
  269. package/examples/jsm/shaders/VolumeShader.js +7 -1
  270. package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
  271. package/examples/jsm/textures/FlakesTexture.js +12 -0
  272. package/examples/jsm/transpiler/AST.js +10 -0
  273. package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
  274. package/examples/jsm/transpiler/TSLEncoder.js +83 -15
  275. package/examples/jsm/transpiler/Transpiler.js +31 -0
  276. package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
  277. package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
  278. package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
  279. package/examples/jsm/tsl/display/BleachBypass.js +1 -2
  280. package/examples/jsm/tsl/display/BloomNode.js +15 -16
  281. package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
  282. package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
  283. package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
  284. package/examples/jsm/tsl/display/FXAANode.js +2 -3
  285. package/examples/jsm/tsl/display/FilmNode.js +9 -8
  286. package/examples/jsm/tsl/display/GTAONode.js +11 -12
  287. package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
  288. package/examples/jsm/tsl/display/LensflareNode.js +15 -16
  289. package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
  290. package/examples/jsm/tsl/display/MotionBlur.js +1 -2
  291. package/examples/jsm/tsl/display/OutlineNode.js +7 -8
  292. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
  293. package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
  294. package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
  295. package/examples/jsm/tsl/display/SMAANode.js +13 -7
  296. package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
  297. package/examples/jsm/tsl/display/SSRNode.js +6 -7
  298. package/examples/jsm/tsl/display/Sepia.js +1 -2
  299. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
  300. package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
  301. package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
  302. package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
  303. package/examples/jsm/tsl/display/TransitionNode.js +4 -5
  304. package/examples/jsm/tsl/display/hashBlur.js +1 -2
  305. package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
  306. package/examples/jsm/tsl/math/Bayer.js +31 -0
  307. package/examples/jsm/tsl/utils/Raymarching.js +67 -0
  308. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  309. package/examples/jsm/utils/CameraUtils.js +10 -7
  310. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  311. package/examples/jsm/utils/GeometryUtils.js +12 -13
  312. package/examples/jsm/utils/LDrawUtils.js +11 -4
  313. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  314. package/examples/jsm/utils/SceneUtils.js +50 -3
  315. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  316. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  317. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  318. package/examples/jsm/utils/SortUtils.js +14 -5
  319. package/examples/jsm/utils/UVsDebug.js +9 -4
  320. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  321. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  322. package/examples/jsm/utils/WorkerPool.js +65 -2
  323. package/examples/jsm/webxr/ARButton.js +18 -0
  324. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  325. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  326. package/examples/jsm/webxr/Text2D.js +11 -0
  327. package/examples/jsm/webxr/VRButton.js +30 -0
  328. package/examples/jsm/webxr/XRButton.js +22 -0
  329. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  330. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  331. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  332. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  333. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  334. package/examples/jsm/webxr/XRPlanes.js +17 -0
  335. package/package.json +3 -4
  336. package/src/Three.TSL.js +7 -1
  337. package/src/animation/AnimationAction.js +262 -30
  338. package/src/animation/AnimationClip.js +141 -2
  339. package/src/animation/AnimationMixer.js +99 -15
  340. package/src/animation/AnimationObjectGroup.js +41 -18
  341. package/src/animation/AnimationUtils.js +169 -19
  342. package/src/animation/KeyframeTrack.js +144 -10
  343. package/src/animation/PropertyBinding.js +77 -3
  344. package/src/animation/PropertyMixer.js +72 -5
  345. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  346. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  347. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  348. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  349. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  350. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  351. package/src/audio/Audio.js +339 -0
  352. package/src/audio/AudioAnalyser.js +58 -1
  353. package/src/audio/AudioContext.js +15 -0
  354. package/src/audio/AudioListener.js +76 -0
  355. package/src/audio/PositionalAudio.js +107 -0
  356. package/src/cameras/ArrayCamera.js +28 -0
  357. package/src/cameras/Camera.js +47 -0
  358. package/src/cameras/CubeCamera.js +66 -0
  359. package/src/cameras/OrthographicCamera.js +109 -0
  360. package/src/cameras/PerspectiveCamera.js +163 -40
  361. package/src/cameras/StereoCamera.js +46 -0
  362. package/src/constants.js +1429 -5
  363. package/src/core/BufferAttribute.js +413 -3
  364. package/src/core/BufferGeometry.js +337 -1
  365. package/src/core/Clock.js +60 -0
  366. package/src/core/EventDispatcher.js +44 -2
  367. package/src/core/GLBufferAttribute.js +99 -0
  368. package/src/core/InstancedBufferAttribute.js +29 -0
  369. package/src/core/InstancedBufferGeometry.js +20 -0
  370. package/src/core/InstancedInterleavedBuffer.js +26 -0
  371. package/src/core/InterleavedBuffer.js +137 -3
  372. package/src/core/InterleavedBufferAttribute.js +197 -0
  373. package/src/core/Layers.js +71 -10
  374. package/src/core/Object3D.js +593 -0
  375. package/src/core/Raycaster.js +134 -1
  376. package/src/core/RenderTarget.js +170 -11
  377. package/src/core/RenderTarget3D.js +25 -0
  378. package/src/core/RenderTargetArray.js +18 -0
  379. package/src/core/Uniform.js +29 -0
  380. package/src/core/UniformsGroup.js +84 -2
  381. package/src/extras/Controls.js +88 -1
  382. package/src/extras/DataUtils.js +48 -8
  383. package/src/extras/Earcut.js +13 -780
  384. package/src/extras/ImageUtils.js +20 -2
  385. package/src/extras/PMREMGenerator.js +41 -25
  386. package/src/extras/ShapeUtils.js +24 -2
  387. package/src/extras/TextureUtils.js +95 -15
  388. package/src/extras/core/Curve.js +150 -50
  389. package/src/extras/core/CurvePath.js +63 -22
  390. package/src/extras/core/Interpolations.js +29 -3
  391. package/src/extras/core/Path.js +134 -1
  392. package/src/extras/core/Shape.js +63 -0
  393. package/src/extras/core/ShapePath.js +76 -0
  394. package/src/extras/curves/ArcCurve.js +22 -0
  395. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  396. package/src/extras/curves/CubicBezierCurve.js +67 -0
  397. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  398. package/src/extras/curves/EllipseCurve.js +102 -0
  399. package/src/extras/curves/LineCurve.js +36 -0
  400. package/src/extras/curves/LineCurve3.js +36 -0
  401. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  402. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  403. package/src/extras/curves/SplineCurve.js +48 -0
  404. package/src/extras/lib/earcut.js +685 -0
  405. package/src/geometries/BoxGeometry.js +38 -0
  406. package/src/geometries/CapsuleGeometry.js +34 -0
  407. package/src/geometries/CircleGeometry.js +40 -0
  408. package/src/geometries/ConeGeometry.js +38 -0
  409. package/src/geometries/CylinderGeometry.js +39 -0
  410. package/src/geometries/DodecahedronGeometry.js +32 -0
  411. package/src/geometries/EdgesGeometry.js +28 -0
  412. package/src/geometries/ExtrudeGeometry.js +112 -28
  413. package/src/geometries/IcosahedronGeometry.js +32 -0
  414. package/src/geometries/LatheGeometry.js +40 -0
  415. package/src/geometries/OctahedronGeometry.js +32 -0
  416. package/src/geometries/PlaneGeometry.js +34 -0
  417. package/src/geometries/PolyhedronGeometry.js +29 -0
  418. package/src/geometries/RingGeometry.js +36 -0
  419. package/src/geometries/ShapeGeometry.js +37 -0
  420. package/src/geometries/SphereGeometry.js +37 -0
  421. package/src/geometries/TetrahedronGeometry.js +32 -0
  422. package/src/geometries/TorusGeometry.js +35 -0
  423. package/src/geometries/TorusKnotGeometry.js +38 -0
  424. package/src/geometries/TubeGeometry.js +49 -0
  425. package/src/geometries/WireframeGeometry.js +32 -0
  426. package/src/helpers/ArrowHelper.js +60 -3
  427. package/src/helpers/AxesHelper.js +28 -0
  428. package/src/helpers/Box3Helper.js +28 -0
  429. package/src/helpers/BoxHelper.js +43 -7
  430. package/src/helpers/CameraHelper.js +45 -5
  431. package/src/helpers/DirectionalLightHelper.js +52 -0
  432. package/src/helpers/GridHelper.js +26 -0
  433. package/src/helpers/HemisphereLightHelper.js +39 -0
  434. package/src/helpers/PlaneHelper.js +33 -0
  435. package/src/helpers/PointLightHelper.js +43 -0
  436. package/src/helpers/PolarGridHelper.js +30 -0
  437. package/src/helpers/SkeletonHelper.js +39 -2
  438. package/src/helpers/SpotLightHelper.js +40 -0
  439. package/src/lights/AmbientLight.js +25 -0
  440. package/src/lights/DirectionalLight.js +57 -0
  441. package/src/lights/DirectionalLightShadow.js +15 -0
  442. package/src/lights/HemisphereLight.js +32 -0
  443. package/src/lights/Light.js +36 -0
  444. package/src/lights/LightProbe.js +43 -0
  445. package/src/lights/LightShadow.js +159 -0
  446. package/src/lights/PointLight.js +59 -0
  447. package/src/lights/PointLightShadow.js +21 -0
  448. package/src/lights/RectAreaLight.js +59 -0
  449. package/src/lights/SpotLight.js +102 -0
  450. package/src/lights/SpotLightShadow.js +22 -0
  451. package/src/lights/webgpu/IESSpotLight.js +21 -0
  452. package/src/loaders/AnimationLoader.js +31 -0
  453. package/src/loaders/AudioLoader.js +31 -0
  454. package/src/loaders/BufferGeometryLoader.js +34 -0
  455. package/src/loaders/Cache.js +45 -0
  456. package/src/loaders/CompressedTextureLoader.js +36 -3
  457. package/src/loaders/CubeTextureLoader.js +45 -0
  458. package/src/loaders/DataTextureLoader.js +44 -3
  459. package/src/loaders/FileLoader.js +57 -1
  460. package/src/loaders/ImageBitmapLoader.js +57 -0
  461. package/src/loaders/ImageLoader.js +30 -0
  462. package/src/loaders/Loader.js +130 -0
  463. package/src/loaders/LoaderUtils.js +18 -36
  464. package/src/loaders/LoadingManager.js +142 -0
  465. package/src/loaders/MaterialLoader.js +57 -0
  466. package/src/loaders/ObjectLoader.js +53 -0
  467. package/src/loaders/TextureLoader.js +33 -0
  468. package/src/loaders/nodes/NodeLoader.js +13 -9
  469. package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
  470. package/src/loaders/nodes/NodeObjectLoader.js +12 -12
  471. package/src/materials/LineBasicMaterial.js +74 -1
  472. package/src/materials/LineDashedMaterial.js +52 -0
  473. package/src/materials/Material.js +481 -4
  474. package/src/materials/MeshBasicMaterial.js +165 -0
  475. package/src/materials/MeshDepthMaterial.js +93 -0
  476. package/src/materials/MeshDistanceMaterial.js +76 -0
  477. package/src/materials/MeshLambertMaterial.js +273 -0
  478. package/src/materials/MeshMatcapMaterial.js +142 -0
  479. package/src/materials/MeshNormalMaterial.js +113 -0
  480. package/src/materials/MeshPhongMaterial.js +288 -0
  481. package/src/materials/MeshPhysicalMaterial.js +292 -1
  482. package/src/materials/MeshStandardMaterial.js +297 -0
  483. package/src/materials/MeshToonMaterial.js +218 -0
  484. package/src/materials/PointsMaterial.js +89 -0
  485. package/src/materials/RawShaderMaterial.js +25 -0
  486. package/src/materials/ShaderMaterial.js +215 -6
  487. package/src/materials/ShadowMaterial.js +54 -0
  488. package/src/materials/SpriteMaterial.js +82 -0
  489. package/src/materials/nodes/Line2NodeMaterial.js +14 -14
  490. package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
  491. package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
  492. package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
  493. package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
  494. package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
  495. package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
  496. package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
  497. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
  498. package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
  499. package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
  500. package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
  501. package/src/materials/nodes/NodeMaterial.js +66 -47
  502. package/src/materials/nodes/PointsNodeMaterial.js +6 -6
  503. package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
  504. package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
  505. package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
  506. package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
  507. package/src/math/Box2.js +177 -0
  508. package/src/math/Box3.js +243 -0
  509. package/src/math/Color.js +343 -0
  510. package/src/math/Cylindrical.js +65 -6
  511. package/src/math/Euler.js +137 -4
  512. package/src/math/Frustum.js +83 -0
  513. package/src/math/Interpolant.js +87 -8
  514. package/src/math/Line3.js +94 -0
  515. package/src/math/MathUtils.js +405 -19
  516. package/src/math/Matrix2.js +70 -0
  517. package/src/math/Matrix3.js +229 -4
  518. package/src/math/Matrix4.js +368 -3
  519. package/src/math/Plane.js +164 -2
  520. package/src/math/Quaternion.js +262 -6
  521. package/src/math/Ray.js +160 -0
  522. package/src/math/Sphere.js +147 -0
  523. package/src/math/Spherical.js +70 -8
  524. package/src/math/SphericalHarmonics3.js +112 -14
  525. package/src/math/Triangle.js +206 -2
  526. package/src/math/Vector2.js +388 -2
  527. package/src/math/Vector3.js +541 -4
  528. package/src/math/Vector4.js +393 -0
  529. package/src/math/interpolants/CubicInterpolant.js +10 -1
  530. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  531. package/src/math/interpolants/LinearInterpolant.js +13 -0
  532. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  533. package/src/nodes/Nodes.js +1 -0
  534. package/src/nodes/TSL.js +1 -0
  535. package/src/nodes/accessors/AccessorsUtils.js +4 -2
  536. package/src/nodes/accessors/Arrays.js +6 -6
  537. package/src/nodes/accessors/BatchNode.js +10 -11
  538. package/src/nodes/accessors/Bitangent.js +6 -2
  539. package/src/nodes/accessors/BufferAttributeNode.js +33 -31
  540. package/src/nodes/accessors/BufferNode.js +12 -13
  541. package/src/nodes/accessors/BuiltinNode.js +7 -8
  542. package/src/nodes/accessors/Camera.js +9 -2
  543. package/src/nodes/accessors/ClippingNode.js +4 -4
  544. package/src/nodes/accessors/CubeTextureNode.js +17 -19
  545. package/src/nodes/accessors/InstanceNode.js +10 -11
  546. package/src/nodes/accessors/InstancedMeshNode.js +3 -4
  547. package/src/nodes/accessors/Lights.js +12 -15
  548. package/src/nodes/accessors/MaterialNode.js +45 -9
  549. package/src/nodes/accessors/MaterialProperties.js +51 -2
  550. package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
  551. package/src/nodes/accessors/ModelNode.js +20 -3
  552. package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
  553. package/src/nodes/accessors/MorphNode.js +29 -26
  554. package/src/nodes/accessors/Normal.js +11 -3
  555. package/src/nodes/accessors/Object3DNode.js +51 -16
  556. package/src/nodes/accessors/PointUVNode.js +2 -3
  557. package/src/nodes/accessors/Position.js +8 -3
  558. package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
  559. package/src/nodes/accessors/ReferenceNode.js +31 -31
  560. package/src/nodes/accessors/ReflectVector.js +4 -2
  561. package/src/nodes/accessors/RendererReferenceNode.js +9 -10
  562. package/src/nodes/accessors/SceneNode.js +5 -4
  563. package/src/nodes/accessors/SkinningNode.js +53 -44
  564. package/src/nodes/accessors/StorageBufferNode.js +24 -24
  565. package/src/nodes/accessors/StorageTextureNode.js +17 -17
  566. package/src/nodes/accessors/Tangent.js +6 -2
  567. package/src/nodes/accessors/Texture3DNode.js +11 -12
  568. package/src/nodes/accessors/TextureBicubic.js +2 -3
  569. package/src/nodes/accessors/TextureNode.js +68 -47
  570. package/src/nodes/accessors/TextureSizeNode.js +5 -6
  571. package/src/nodes/accessors/UV.js +2 -3
  572. package/src/nodes/accessors/UniformArrayNode.js +24 -24
  573. package/src/nodes/accessors/UserDataNode.js +11 -12
  574. package/src/nodes/accessors/VelocityNode.js +4 -5
  575. package/src/nodes/accessors/VertexColorNode.js +7 -8
  576. package/src/nodes/code/CodeNode.js +15 -13
  577. package/src/nodes/code/ExpressionNode.js +8 -9
  578. package/src/nodes/code/FunctionCallNode.js +29 -9
  579. package/src/nodes/code/FunctionNode.js +1 -1
  580. package/src/nodes/code/ScriptableNode.js +27 -28
  581. package/src/nodes/code/ScriptableValueNode.js +11 -12
  582. package/src/nodes/core/ArrayNode.js +29 -12
  583. package/src/nodes/core/AssignNode.js +4 -5
  584. package/src/nodes/core/AttributeNode.js +8 -9
  585. package/src/nodes/core/BypassNode.js +3 -4
  586. package/src/nodes/core/CacheNode.js +5 -6
  587. package/src/nodes/core/ConstNode.js +4 -4
  588. package/src/nodes/core/ContextNode.js +9 -9
  589. package/src/nodes/core/IndexNode.js +8 -4
  590. package/src/nodes/core/InputNode.js +7 -7
  591. package/src/nodes/core/LightingModel.js +17 -17
  592. package/src/nodes/core/MRTNode.js +9 -10
  593. package/src/nodes/core/Node.js +49 -37
  594. package/src/nodes/core/NodeAttribute.js +7 -7
  595. package/src/nodes/core/NodeBuilder.js +248 -175
  596. package/src/nodes/core/NodeCache.js +4 -4
  597. package/src/nodes/core/NodeCode.js +6 -6
  598. package/src/nodes/core/NodeFrame.js +10 -10
  599. package/src/nodes/core/NodeFunction.js +8 -8
  600. package/src/nodes/core/NodeFunctionInput.js +8 -8
  601. package/src/nodes/core/NodeParser.js +1 -1
  602. package/src/nodes/core/NodeUniform.js +7 -7
  603. package/src/nodes/core/NodeUtils.js +22 -24
  604. package/src/nodes/core/NodeVar.js +9 -9
  605. package/src/nodes/core/NodeVarying.js +4 -4
  606. package/src/nodes/core/OutputStructNode.js +2 -3
  607. package/src/nodes/core/ParameterNode.js +6 -7
  608. package/src/nodes/core/PropertyNode.js +41 -13
  609. package/src/nodes/core/StackNode.js +11 -12
  610. package/src/nodes/core/StructNode.js +2 -3
  611. package/src/nodes/core/StructTypeNode.js +10 -6
  612. package/src/nodes/core/TempNode.js +3 -3
  613. package/src/nodes/core/UniformGroupNode.js +15 -12
  614. package/src/nodes/core/UniformNode.js +9 -10
  615. package/src/nodes/core/VarNode.js +14 -18
  616. package/src/nodes/core/VaryingNode.js +10 -10
  617. package/src/nodes/core/constants.js +0 -2
  618. package/src/nodes/display/BlendModes.js +21 -14
  619. package/src/nodes/display/BumpMapNode.js +5 -6
  620. package/src/nodes/display/ColorAdjustment.js +13 -9
  621. package/src/nodes/display/ColorSpaceFunctions.js +4 -4
  622. package/src/nodes/display/ColorSpaceNode.js +15 -12
  623. package/src/nodes/display/FrontFacingNode.js +3 -3
  624. package/src/nodes/display/NormalMapNode.js +5 -6
  625. package/src/nodes/display/PassNode.js +122 -35
  626. package/src/nodes/display/PosterizeNode.js +2 -3
  627. package/src/nodes/display/RenderOutputNode.js +8 -9
  628. package/src/nodes/display/ScreenNode.js +16 -7
  629. package/src/nodes/display/ToneMappingFunctions.js +12 -8
  630. package/src/nodes/display/ToneMappingNode.js +8 -8
  631. package/src/nodes/display/ToonOutlinePassNode.js +3 -4
  632. package/src/nodes/display/ViewportDepthNode.js +15 -7
  633. package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
  634. package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
  635. package/src/nodes/display/ViewportTextureNode.js +16 -16
  636. package/src/nodes/fog/Fog.js +5 -2
  637. package/src/nodes/functions/BSDF/LTC.js +45 -1
  638. package/src/nodes/functions/BasicLightingModel.js +5 -8
  639. package/src/nodes/functions/PhongLightingModel.js +6 -8
  640. package/src/nodes/functions/PhysicalLightingModel.js +40 -42
  641. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  642. package/src/nodes/functions/ToonLightingModel.js +5 -6
  643. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  644. package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
  645. package/src/nodes/geometry/RangeNode.js +4 -5
  646. package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
  647. package/src/nodes/gpgpu/BarrierNode.js +6 -4
  648. package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
  649. package/src/nodes/gpgpu/ComputeNode.js +43 -16
  650. package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
  651. package/src/nodes/lighting/AONode.js +2 -2
  652. package/src/nodes/lighting/AmbientLightNode.js +1 -1
  653. package/src/nodes/lighting/AnalyticLightNode.js +50 -9
  654. package/src/nodes/lighting/BasicLightMapNode.js +2 -2
  655. package/src/nodes/lighting/DirectionalLightNode.js +3 -12
  656. package/src/nodes/lighting/EnvironmentNode.js +5 -8
  657. package/src/nodes/lighting/HemisphereLightNode.js +1 -1
  658. package/src/nodes/lighting/LightProbeNode.js +1 -1
  659. package/src/nodes/lighting/LightUtils.js +1 -5
  660. package/src/nodes/lighting/LightingContextNode.js +10 -10
  661. package/src/nodes/lighting/LightingNode.js +1 -1
  662. package/src/nodes/lighting/LightsNode.js +68 -25
  663. package/src/nodes/lighting/PointLightNode.js +12 -27
  664. package/src/nodes/lighting/PointShadowNode.js +5 -6
  665. package/src/nodes/lighting/RectAreaLightNode.js +5 -10
  666. package/src/nodes/lighting/ShadowBaseNode.js +8 -9
  667. package/src/nodes/lighting/ShadowNode.js +28 -15
  668. package/src/nodes/lighting/SpotLightNode.js +8 -19
  669. package/src/nodes/math/ConditionalNode.js +26 -9
  670. package/src/nodes/math/Hash.js +2 -3
  671. package/src/nodes/math/MathNode.js +217 -150
  672. package/src/nodes/math/MathUtils.js +8 -6
  673. package/src/nodes/math/OperatorNode.js +198 -89
  674. package/src/nodes/math/TriNoise3D.js +2 -3
  675. package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
  676. package/src/nodes/parsers/GLSLNodeParser.js +1 -1
  677. package/src/nodes/pmrem/PMREMNode.js +61 -37
  678. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  679. package/src/nodes/procedural/Checker.js +2 -3
  680. package/src/nodes/shapes/Shapes.js +2 -3
  681. package/src/nodes/tsl/TSLBase.js +2 -1
  682. package/src/nodes/tsl/TSLCore.js +117 -19
  683. package/src/nodes/utils/ArrayElementNode.js +5 -3
  684. package/src/nodes/utils/ConvertNode.js +3 -3
  685. package/src/nodes/utils/CubeMapNode.js +7 -8
  686. package/src/nodes/utils/DebugNode.js +70 -0
  687. package/src/nodes/utils/Discard.js +5 -5
  688. package/src/nodes/utils/EquirectUVNode.js +3 -4
  689. package/src/nodes/utils/FlipNode.js +3 -3
  690. package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
  691. package/src/nodes/utils/JoinNode.js +29 -4
  692. package/src/nodes/utils/LoopNode.js +67 -35
  693. package/src/nodes/utils/MatcapUVNode.js +1 -2
  694. package/src/nodes/utils/MaxMipLevelNode.js +4 -5
  695. package/src/nodes/utils/MemberNode.js +2 -2
  696. package/src/nodes/utils/Oscillators.js +8 -6
  697. package/src/nodes/utils/Packing.js +4 -4
  698. package/src/nodes/utils/PostProcessingUtils.js +6 -5
  699. package/src/nodes/utils/RTTNode.js +19 -19
  700. package/src/nodes/utils/ReflectorNode.js +35 -25
  701. package/src/nodes/utils/RemapNode.js +9 -9
  702. package/src/nodes/utils/RotateNode.js +3 -4
  703. package/src/nodes/utils/SetNode.js +3 -3
  704. package/src/nodes/utils/SplitNode.js +5 -5
  705. package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
  706. package/src/nodes/utils/SpriteUtils.js +5 -6
  707. package/src/nodes/utils/StorageArrayElementNode.js +3 -4
  708. package/src/nodes/utils/Timer.js +9 -5
  709. package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
  710. package/src/nodes/utils/UVUtils.js +4 -4
  711. package/src/nodes/utils/ViewportUtils.js +3 -4
  712. package/src/objects/BatchedMesh.js +319 -32
  713. package/src/objects/Bone.js +24 -0
  714. package/src/objects/ClippingGroup.js +4 -4
  715. package/src/objects/Group.js +24 -0
  716. package/src/objects/InstancedMesh.js +120 -2
  717. package/src/objects/LOD.js +99 -5
  718. package/src/objects/Line.js +82 -0
  719. package/src/objects/LineLoop.js +20 -0
  720. package/src/objects/LineSegments.js +18 -0
  721. package/src/objects/Mesh.js +75 -0
  722. package/src/objects/Points.js +60 -0
  723. package/src/objects/Skeleton.js +105 -0
  724. package/src/objects/SkinnedMesh.js +99 -5
  725. package/src/objects/Sprite.js +54 -0
  726. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  727. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  728. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  729. package/src/renderers/WebGLRenderTarget.js +19 -0
  730. package/src/renderers/WebGLRenderer.js +622 -83
  731. package/src/renderers/common/Animation.js +6 -6
  732. package/src/renderers/common/Attributes.js +3 -3
  733. package/src/renderers/common/Backend.js +40 -31
  734. package/src/renderers/common/Background.js +4 -3
  735. package/src/renderers/common/BindGroup.js +5 -5
  736. package/src/renderers/common/Binding.js +4 -4
  737. package/src/renderers/common/Bindings.js +10 -0
  738. package/src/renderers/common/Buffer.js +5 -5
  739. package/src/renderers/common/BufferUtils.js +7 -9
  740. package/src/renderers/common/BundleGroup.js +6 -6
  741. package/src/renderers/common/ChainMap.js +3 -3
  742. package/src/renderers/common/ClippingContext.js +8 -8
  743. package/src/renderers/common/Color4.js +8 -8
  744. package/src/renderers/common/ComputePipeline.js +2 -2
  745. package/src/renderers/common/CubeRenderTarget.js +13 -0
  746. package/src/renderers/common/DataMap.js +2 -2
  747. package/src/renderers/common/Geometries.js +6 -6
  748. package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
  749. package/src/renderers/common/Info.js +17 -17
  750. package/src/renderers/common/Pipeline.js +3 -3
  751. package/src/renderers/common/Pipelines.js +12 -12
  752. package/src/renderers/common/PostProcessing.js +13 -1
  753. package/src/renderers/common/ProgrammableStage.js +11 -11
  754. package/src/renderers/common/QuadMesh.js +5 -3
  755. package/src/renderers/common/RenderContext.js +24 -24
  756. package/src/renderers/common/RenderContexts.js +4 -4
  757. package/src/renderers/common/RenderList.js +16 -16
  758. package/src/renderers/common/RenderObject.js +27 -27
  759. package/src/renderers/common/RenderObjects.js +4 -4
  760. package/src/renderers/common/RenderPipeline.js +1 -1
  761. package/src/renderers/common/Renderer.js +272 -200
  762. package/src/renderers/common/RendererUtils.js +0 -2
  763. package/src/renderers/common/SampledTexture.js +20 -20
  764. package/src/renderers/common/Sampler.js +5 -5
  765. package/src/renderers/common/StorageBuffer.js +2 -2
  766. package/src/renderers/common/StorageBufferAttribute.js +4 -4
  767. package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
  768. package/src/renderers/common/StorageTexture.js +6 -6
  769. package/src/renderers/common/Textures.js +6 -6
  770. package/src/renderers/common/TimestampQueryPool.js +66 -7
  771. package/src/renderers/common/Uniform.js +26 -26
  772. package/src/renderers/common/UniformBuffer.js +2 -2
  773. package/src/renderers/common/UniformsGroup.js +18 -18
  774. package/src/renderers/common/XRManager.js +369 -54
  775. package/src/renderers/common/XRRenderTarget.js +5 -5
  776. package/src/renderers/common/extras/PMREMGenerator.js +62 -37
  777. package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
  778. package/src/renderers/common/nodes/NodeLibrary.js +13 -13
  779. package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
  780. package/src/renderers/common/nodes/NodeSampler.js +1 -1
  781. package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
  782. package/src/renderers/common/nodes/NodeUniform.js +9 -9
  783. package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
  784. package/src/renderers/common/nodes/Nodes.js +13 -13
  785. package/src/renderers/shaders/UniformsLib.js +1 -4
  786. package/src/renderers/shaders/UniformsUtils.js +1 -3
  787. package/src/renderers/webgl/WebGLBackground.js +4 -2
  788. package/src/renderers/webgl/WebGLState.js +19 -19
  789. package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
  790. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
  791. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
  792. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
  793. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
  794. package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
  795. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
  796. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
  797. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
  798. package/src/renderers/webgpu/WebGPUBackend.js +200 -119
  799. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
  800. package/src/renderers/webgpu/WebGPURenderer.js +19 -13
  801. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
  802. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
  803. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
  804. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
  805. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
  806. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  807. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
  808. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
  809. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
  810. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
  811. package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
  812. package/src/renderers/webxr/WebXRController.js +87 -2
  813. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  814. package/src/renderers/webxr/WebXRManager.js +185 -9
  815. package/src/scenes/Fog.js +60 -0
  816. package/src/scenes/FogExp2.js +51 -0
  817. package/src/scenes/Scene.js +88 -0
  818. package/src/textures/CanvasTexture.js +28 -0
  819. package/src/textures/CompressedArrayTexture.js +57 -0
  820. package/src/textures/CompressedCubeTexture.js +29 -0
  821. package/src/textures/CompressedTexture.js +64 -6
  822. package/src/textures/CubeTexture.js +52 -4
  823. package/src/textures/Data3DTexture.js +77 -0
  824. package/src/textures/DataArrayTexture.js +93 -0
  825. package/src/textures/DataTexture.js +65 -0
  826. package/src/textures/DepthTexture.js +61 -9
  827. package/src/textures/FramebufferTexture.js +62 -0
  828. package/src/textures/Source.js +69 -0
  829. package/src/textures/Texture.js +362 -3
  830. package/src/textures/VideoFrameTexture.js +43 -6
  831. package/src/textures/VideoTexture.js +49 -4
  832. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -2,12 +2,10 @@ import AttributeNode from '../core/AttributeNode.js';
2
2
  import { nodeObject } from '../tsl/TSLBase.js';
3
3
  import { Vector4 } from '../../math/Vector4.js';
4
4
 
5
- /** @module VertexColorNode **/
6
-
7
5
  /**
8
6
  * An attribute node for representing vertex colors.
9
7
  *
10
- * @augments module:AttributeNode~AttributeNode
8
+ * @augments AttributeNode
11
9
  */
12
10
  class VertexColorNode extends AttributeNode {
13
11
 
@@ -20,7 +18,7 @@ class VertexColorNode extends AttributeNode {
20
18
  /**
21
19
  * Constructs a new vertex color node.
22
20
  *
23
- * @param {Number} [index=0] - The attribute index.
21
+ * @param {number} [index=0] - The attribute index.
24
22
  */
25
23
  constructor( index = 0 ) {
26
24
 
@@ -29,7 +27,7 @@ class VertexColorNode extends AttributeNode {
29
27
  /**
30
28
  * This flag can be used for type testing.
31
29
  *
32
- * @type {Boolean}
30
+ * @type {boolean}
33
31
  * @readonly
34
32
  * @default true
35
33
  */
@@ -38,7 +36,7 @@ class VertexColorNode extends AttributeNode {
38
36
  /**
39
37
  * The attribute index to enable more than one sets of vertex colors.
40
38
  *
41
- * @type {Number}
39
+ * @type {number}
42
40
  * @default 0
43
41
  */
44
42
  this.index = index;
@@ -49,7 +47,7 @@ class VertexColorNode extends AttributeNode {
49
47
  * Overwrites the default implementation by honoring the attribute index.
50
48
  *
51
49
  * @param {NodeBuilder} builder - The current node builder.
52
- * @return {String} The attribute name.
50
+ * @return {string} The attribute name.
53
51
  */
54
52
  getAttributeName( /*builder*/ ) {
55
53
 
@@ -104,8 +102,9 @@ export default VertexColorNode;
104
102
  /**
105
103
  * TSL function for creating a reference node.
106
104
  *
105
+ * @tsl
107
106
  * @function
108
- * @param {Number} index - The attribute index.
107
+ * @param {number} index - The attribute index.
109
108
  * @returns {VertexColorNode}
110
109
  */
111
110
  export const vertexColor = ( index ) => nodeObject( new VertexColorNode( index ) );
@@ -1,8 +1,6 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { nodeProxy } from '../tsl/TSLBase.js';
3
3
 
4
- /** @module CodeNode **/
5
-
6
4
  /**
7
5
  * This class represents native code sections. It is the base
8
6
  * class for modules like {@link FunctionNode} which allows to implement
@@ -21,7 +19,7 @@ class CodeNode extends Node {
21
19
  /**
22
20
  * Constructs a new code node.
23
21
  *
24
- * @param {String} [code=''] - The native code.
22
+ * @param {string} [code=''] - The native code.
25
23
  * @param {Array<Node>} [includes=[]] - An array of includes.
26
24
  * @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
27
25
  */
@@ -32,7 +30,7 @@ class CodeNode extends Node {
32
30
  /**
33
31
  * This flag can be used for type testing.
34
32
  *
35
- * @type {Boolean}
33
+ * @type {boolean}
36
34
  * @readonly
37
35
  * @default true
38
36
  */
@@ -41,7 +39,7 @@ class CodeNode extends Node {
41
39
  /**
42
40
  * The native code.
43
41
  *
44
- * @type {String}
42
+ * @type {string}
45
43
  * @default ''
46
44
  */
47
45
  this.code = code;
@@ -67,7 +65,7 @@ class CodeNode extends Node {
67
65
  /**
68
66
  * The method is overwritten so it always returns `true`.
69
67
  *
70
- * @return {Boolean} Whether this node is global or not.
68
+ * @return {boolean} Whether this node is global or not.
71
69
  */
72
70
  isGlobal() {
73
71
 
@@ -143,19 +141,21 @@ export default CodeNode;
143
141
  /**
144
142
  * TSL function for creating a code node.
145
143
  *
144
+ * @tsl
146
145
  * @function
147
- * @param {String} [code=''] - The native code.
148
- * @param {Array<Node>} [includes=[]] - An array of includes.
149
- * @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
146
+ * @param {string} [code] - The native code.
147
+ * @param {?Array<Node>} [includes=[]] - An array of includes.
148
+ * @param {?('js'|'wgsl'|'glsl')} [language=''] - The used language.
150
149
  * @returns {CodeNode}
151
150
  */
152
- export const code = /*@__PURE__*/ nodeProxy( CodeNode );
151
+ export const code = /*@__PURE__*/ nodeProxy( CodeNode ).setParameterLength( 1, 3 );
153
152
 
154
153
  /**
155
154
  * TSL function for creating a JS code node.
156
155
  *
156
+ * @tsl
157
157
  * @function
158
- * @param {String} src - The native code.
158
+ * @param {string} src - The native code.
159
159
  * @param {Array<Node>} includes - An array of includes.
160
160
  * @returns {CodeNode}
161
161
  */
@@ -164,8 +164,9 @@ export const js = ( src, includes ) => code( src, includes, 'js' );
164
164
  /**
165
165
  * TSL function for creating a WGSL code node.
166
166
  *
167
+ * @tsl
167
168
  * @function
168
- * @param {String} src - The native code.
169
+ * @param {string} src - The native code.
169
170
  * @param {Array<Node>} includes - An array of includes.
170
171
  * @returns {CodeNode}
171
172
  */
@@ -174,8 +175,9 @@ export const wgsl = ( src, includes ) => code( src, includes, 'wgsl' );
174
175
  /**
175
176
  * TSL function for creating a GLSL code node.
176
177
  *
178
+ * @tsl
177
179
  * @function
178
- * @param {String} src - The native code.
180
+ * @param {string} src - The native code.
179
181
  * @param {Array<Node>} includes - An array of includes.
180
182
  * @returns {CodeNode}
181
183
  */
@@ -1,8 +1,6 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { nodeProxy } from '../tsl/TSLCore.js';
3
3
 
4
- /** @module ExpressionNode **/
5
-
6
4
  /**
7
5
  * This class can be used to implement basic expressions in shader code.
8
6
  * Basic examples for that are `return`, `continue` or `discard` statements.
@@ -20,8 +18,8 @@ class ExpressionNode extends Node {
20
18
  /**
21
19
  * Constructs a new expression node.
22
20
  *
23
- * @param {String} [snippet=''] - The native code snippet.
24
- * @param {String} [nodeType='void'] - The node type.
21
+ * @param {string} [snippet=''] - The native code snippet.
22
+ * @param {string} [nodeType='void'] - The node type.
25
23
  */
26
24
  constructor( snippet = '', nodeType = 'void' ) {
27
25
 
@@ -30,7 +28,7 @@ class ExpressionNode extends Node {
30
28
  /**
31
29
  * The native code snippet.
32
30
  *
33
- * @type {String}
31
+ * @type {string}
34
32
  * @default ''
35
33
  */
36
34
  this.snippet = snippet;
@@ -48,7 +46,7 @@ class ExpressionNode extends Node {
48
46
 
49
47
  } else {
50
48
 
51
- return builder.format( `( ${ snippet } )`, type, output );
49
+ return builder.format( snippet, type, output );
52
50
 
53
51
  }
54
52
 
@@ -61,9 +59,10 @@ export default ExpressionNode;
61
59
  /**
62
60
  * TSL function for creating an expression node.
63
61
  *
62
+ * @tsl
64
63
  * @function
65
- * @param {String} [snippet=''] - The native code snippet.
66
- * @param {String} [nodeType='void'] - The node type.
64
+ * @param {string} [snippet] - The native code snippet.
65
+ * @param {?string} [nodeType='void'] - The node type.
67
66
  * @returns {ExpressionNode}
68
67
  */
69
- export const expression = /*@__PURE__*/ nodeProxy( ExpressionNode );
68
+ export const expression = /*@__PURE__*/ nodeProxy( ExpressionNode ).setParameterLength( 1, 2 );
@@ -1,5 +1,5 @@
1
1
  import TempNode from '../core/TempNode.js';
2
- import { addMethodChaining, nodeArray, nodeObject, nodeObjects } from '../tsl/TSLCore.js';
2
+ import { addMethodChaining, nodeArray, nodeObject, nodeObjects, float } from '../tsl/TSLCore.js';
3
3
 
4
4
  /**
5
5
  * This module represents the call of a {@link FunctionNode}. Developers are usually not confronted
@@ -19,8 +19,8 @@ class FunctionCallNode extends TempNode {
19
19
  /**
20
20
  * Constructs a new function call node.
21
21
  *
22
- * @param {FunctionNode?} functionNode - The function node.
23
- * @param {Object<String, Node>} [parameters={}] - The parameters for the function call.
22
+ * @param {?FunctionNode} functionNode - The function node.
23
+ * @param {Object<string, Node>} [parameters={}] - The parameters for the function call.
24
24
  */
25
25
  constructor( functionNode = null, parameters = {} ) {
26
26
 
@@ -29,7 +29,7 @@ class FunctionCallNode extends TempNode {
29
29
  /**
30
30
  * The function node.
31
31
  *
32
- * @type {FunctionNode}
32
+ * @type {?FunctionNode}
33
33
  * @default null
34
34
  */
35
35
  this.functionNode = functionNode;
@@ -37,7 +37,7 @@ class FunctionCallNode extends TempNode {
37
37
  /**
38
38
  * The parameters of the function call.
39
39
  *
40
- * @type {Object<String, Node>}
40
+ * @type {Object<string, Node>}
41
41
  * @default {}
42
42
  */
43
43
  this.parameters = parameters;
@@ -47,7 +47,7 @@ class FunctionCallNode extends TempNode {
47
47
  /**
48
48
  * Sets the parameters of the function call node.
49
49
  *
50
- * @param {Object<String, Node>} parameters - The parameters to set.
50
+ * @param {Object<string, Node>} parameters - The parameters to set.
51
51
  * @return {FunctionCallNode} A reference to this node.
52
52
  */
53
53
  setParameters( parameters ) {
@@ -61,7 +61,7 @@ class FunctionCallNode extends TempNode {
61
61
  /**
62
62
  * Returns the parameters of the function call node.
63
63
  *
64
- * @return {Object<String, Node>} The parameters of this node.
64
+ * @return {Object<string, Node>} The parameters of this node.
65
65
  */
66
66
  getParameters() {
67
67
 
@@ -100,6 +100,24 @@ class FunctionCallNode extends TempNode {
100
100
 
101
101
  if ( Array.isArray( parameters ) ) {
102
102
 
103
+ if ( parameters.length > inputs.length ) {
104
+
105
+ console.error( 'THREE.TSL: The number of provided parameters exceeds the expected number of inputs in \'Fn()\'.' );
106
+
107
+ parameters.length = inputs.length;
108
+
109
+ } else if ( parameters.length < inputs.length ) {
110
+
111
+ console.error( 'THREE.TSL: The number of provided parameters is less than the expected number of inputs in \'Fn()\'.' );
112
+
113
+ while ( parameters.length < inputs.length ) {
114
+
115
+ parameters.push( float( 0 ) );
116
+
117
+ }
118
+
119
+ }
120
+
103
121
  for ( let i = 0; i < parameters.length; i ++ ) {
104
122
 
105
123
  params.push( generateInput( parameters[ i ], inputs[ i ] ) );
@@ -118,7 +136,9 @@ class FunctionCallNode extends TempNode {
118
136
 
119
137
  } else {
120
138
 
121
- throw new Error( `FunctionCallNode: Input '${inputNode.name}' not found in FunctionNode.` );
139
+ console.error( `THREE.TSL: Input '${ inputNode.name }' not found in \'Fn()\'.` );
140
+
141
+ params.push( generateInput( float( 0 ), inputNode ) );
122
142
 
123
143
  }
124
144
 
@@ -128,7 +148,7 @@ class FunctionCallNode extends TempNode {
128
148
 
129
149
  const functionName = functionNode.build( builder, 'property' );
130
150
 
131
- return `${functionName}( ${params.join( ', ' )} )`;
151
+ return `${ functionName }( ${ params.join( ', ' ) } )`;
132
152
 
133
153
  }
134
154
 
@@ -38,7 +38,7 @@ class FunctionNode extends CodeNode {
38
38
  /**
39
39
  * Constructs a new function node.
40
40
  *
41
- * @param {String} [code=''] - The native code.
41
+ * @param {string} [code=''] - The native code.
42
42
  * @param {Array<Node>} [includes=[]] - An array of includes.
43
43
  * @param {('js'|'wgsl'|'glsl')} [language=''] - The used language.
44
44
  */
@@ -3,8 +3,6 @@ import { scriptableValue } from './ScriptableValueNode.js';
3
3
  import { nodeProxy, float } from '../tsl/TSLBase.js';
4
4
  import { hashArray, hashString } from '../core/NodeUtils.js';
5
5
 
6
- /** @module ScriptableNode **/
7
-
8
6
  /**
9
7
  * A Map-like data structure for managing resources of scriptable nodes.
10
8
  *
@@ -119,7 +117,7 @@ class ScriptableNode extends Node {
119
117
  /**
120
118
  * Constructs a new scriptable node.
121
119
  *
122
- * @param {CodeNode?} [codeNode=null] - The code node.
120
+ * @param {?CodeNode} [codeNode=null] - The code node.
123
121
  * @param {Object} [parameters={}] - The parameters definition.
124
122
  */
125
123
  constructor( codeNode = null, parameters = {} ) {
@@ -129,7 +127,7 @@ class ScriptableNode extends Node {
129
127
  /**
130
128
  * The code node.
131
129
  *
132
- * @type {CodeNode?}
130
+ * @type {?CodeNode}
133
131
  * @default null
134
132
  */
135
133
  this.codeNode = codeNode;
@@ -143,7 +141,7 @@ class ScriptableNode extends Node {
143
141
  this.parameters = parameters;
144
142
 
145
143
  this._local = new Resources();
146
- this._output = scriptableValue();
144
+ this._output = scriptableValue( null );
147
145
  this._outputs = {};
148
146
  this._source = this.source;
149
147
  this._method = null;
@@ -156,7 +154,7 @@ class ScriptableNode extends Node {
156
154
  /**
157
155
  * This flag can be used for type testing.
158
156
  *
159
- * @type {Boolean}
157
+ * @type {boolean}
160
158
  * @readonly
161
159
  * @default true
162
160
  */
@@ -167,7 +165,7 @@ class ScriptableNode extends Node {
167
165
  /**
168
166
  * The source code of the scriptable node.
169
167
  *
170
- * @type {String}
168
+ * @type {string}
171
169
  */
172
170
  get source() {
173
171
 
@@ -178,7 +176,7 @@ class ScriptableNode extends Node {
178
176
  /**
179
177
  * Sets the reference of a local script variable.
180
178
  *
181
- * @param {String} name - The variable name.
179
+ * @param {string} name - The variable name.
182
180
  * @param {Object} value - The reference to set.
183
181
  * @return {Resources} The resource map
184
182
  */
@@ -191,7 +189,7 @@ class ScriptableNode extends Node {
191
189
  /**
192
190
  * Gets the value of a local script variable.
193
191
  *
194
- * @param {String} name - The variable name.
192
+ * @param {string} name - The variable name.
195
193
  * @return {Object} The value.
196
194
  */
197
195
  getLocal( name ) {
@@ -212,7 +210,7 @@ class ScriptableNode extends Node {
212
210
  /**
213
211
  * Returns an input from the layout with the given id/name.
214
212
  *
215
- * @param {String} id - The id/name of the input.
213
+ * @param {string} id - The id/name of the input.
216
214
  * @return {Object} The element entry.
217
215
  */
218
216
  getInputLayout( id ) {
@@ -232,7 +230,7 @@ class ScriptableNode extends Node {
232
230
  /**
233
231
  * Returns an output from the layout with the given id/name.
234
232
  *
235
- * @param {String} id - The id/name of the output.
233
+ * @param {string} id - The id/name of the output.
236
234
  * @return {Object} The element entry.
237
235
  */
238
236
  getOutputLayout( id ) {
@@ -252,7 +250,7 @@ class ScriptableNode extends Node {
252
250
  /**
253
251
  * Defines a script output for the given name and value.
254
252
  *
255
- * @param {String} name - The name of the output.
253
+ * @param {string} name - The name of the output.
256
254
  * @param {Node} value - The node value.
257
255
  * @return {ScriptableNode} A reference to this node.
258
256
  */
@@ -277,7 +275,7 @@ class ScriptableNode extends Node {
277
275
  /**
278
276
  * Returns a script output for the given name.
279
277
  *
280
- * @param {String} name - The name of the output.
278
+ * @param {string} name - The name of the output.
281
279
  * @return {ScriptableValueNode} The node value.
282
280
  */
283
281
  getOutput( name ) {
@@ -289,7 +287,7 @@ class ScriptableNode extends Node {
289
287
  /**
290
288
  * Returns a parameter for the given name
291
289
  *
292
- * @param {String} name - The name of the parameter.
290
+ * @param {string} name - The name of the parameter.
293
291
  * @return {ScriptableValueNode} The node value.
294
292
  */
295
293
  getParameter( name ) {
@@ -301,8 +299,8 @@ class ScriptableNode extends Node {
301
299
  /**
302
300
  * Sets a value for the given parameter name.
303
301
  *
304
- * @param {String} name - The parameter name.
305
- * @param {Any} value - The parameter value.
302
+ * @param {string} name - The parameter name.
303
+ * @param {any} value - The parameter value.
306
304
  * @return {ScriptableNode} A reference to this node.
307
305
  */
308
306
  setParameter( name, value ) {
@@ -353,7 +351,7 @@ class ScriptableNode extends Node {
353
351
  /**
354
352
  * Deletes a parameter from the script.
355
353
  *
356
- * @param {String} name - The parameter to remove.
354
+ * @param {string} name - The parameter to remove.
357
355
  * @return {ScriptableNode} A reference to this node.
358
356
  */
359
357
  deleteParameter( name ) {
@@ -394,9 +392,9 @@ class ScriptableNode extends Node {
394
392
  /**
395
393
  * Calls a function from the script.
396
394
  *
397
- * @param {String} name - The function name.
398
- * @param {...Any} params - A list of parameters.
399
- * @return {Any} The result of the function call.
395
+ * @param {string} name - The function name.
396
+ * @param {...any} params - A list of parameters.
397
+ * @return {any} The result of the function call.
400
398
  */
401
399
  call( name, ...params ) {
402
400
 
@@ -414,9 +412,9 @@ class ScriptableNode extends Node {
414
412
  /**
415
413
  * Asynchronously calls a function from the script.
416
414
  *
417
- * @param {String} name - The function name.
418
- * @param {...Any} params - A list of parameters.
419
- * @return {Promise<Any>} The result of the function call.
415
+ * @param {string} name - The function name.
416
+ * @param {...any} params - A list of parameters.
417
+ * @return {Promise<any>} The result of the function call.
420
418
  */
421
419
  async callAsync( name, ...params ) {
422
420
 
@@ -435,7 +433,7 @@ class ScriptableNode extends Node {
435
433
  * Overwritten since the node types is inferred from the script's output.
436
434
  *
437
435
  * @param {NodeBuilder} builder - The current node builder
438
- * @return {String} The node type.
436
+ * @return {string} The node type.
439
437
  */
440
438
  getNodeType( builder ) {
441
439
 
@@ -446,7 +444,7 @@ class ScriptableNode extends Node {
446
444
  /**
447
445
  * Refreshes the script node.
448
446
  *
449
- * @param {String?} [output=null] - An optional output.
447
+ * @param {?string} [output=null] - An optional output.
450
448
  */
451
449
  refresh( output = null ) {
452
450
 
@@ -719,9 +717,10 @@ export default ScriptableNode;
719
717
  /**
720
718
  * TSL function for creating a scriptable node.
721
719
  *
720
+ * @tsl
722
721
  * @function
723
- * @param {CodeNode?} [codeNode=null] - The code node.
724
- * @param {Object} [parameters={}] - The parameters definition.
722
+ * @param {CodeNode} [codeNode] - The code node.
723
+ * @param {?Object} [parameters={}] - The parameters definition.
725
724
  * @returns {ScriptableNode}
726
725
  */
727
- export const scriptable = /*@__PURE__*/ nodeProxy( ScriptableNode );
726
+ export const scriptable = /*@__PURE__*/ nodeProxy( ScriptableNode ).setParameterLength( 1, 2 );
@@ -4,8 +4,6 @@ import { nodeProxy, float } from '../tsl/TSLBase.js';
4
4
 
5
5
  import { EventDispatcher } from '../../core/EventDispatcher.js';
6
6
 
7
- /** @module ScriptableValueNode **/
8
-
9
7
  /**
10
8
  * `ScriptableNode` uses this class to manage script inputs and outputs.
11
9
  *
@@ -22,7 +20,7 @@ class ScriptableValueNode extends Node {
22
20
  /**
23
21
  * Constructs a new scriptable node.
24
22
  *
25
- * @param {Any} [value=null] - The value.
23
+ * @param {any} [value=null] - The value.
26
24
  */
27
25
  constructor( value = null ) {
28
26
 
@@ -47,7 +45,7 @@ class ScriptableValueNode extends Node {
47
45
  /**
48
46
  * If this node represents an input, this property represents the input type.
49
47
  *
50
- * @type {String?}
48
+ * @type {?string}
51
49
  * @default null
52
50
  */
53
51
  this.inputType = null;
@@ -55,7 +53,7 @@ class ScriptableValueNode extends Node {
55
53
  /**
56
54
  * If this node represents an output, this property represents the output type.
57
55
  *
58
- * @type {String?}
56
+ * @type {?string}
59
57
  * @default null
60
58
  */
61
59
  this.outputType = null;
@@ -70,7 +68,7 @@ class ScriptableValueNode extends Node {
70
68
  /**
71
69
  * This flag can be used for type testing.
72
70
  *
73
- * @type {Boolean}
71
+ * @type {boolean}
74
72
  * @readonly
75
73
  * @default true
76
74
  */
@@ -81,7 +79,7 @@ class ScriptableValueNode extends Node {
81
79
  /**
82
80
  * Whether this node represents an output or not.
83
81
  *
84
- * @type {Boolean}
82
+ * @type {boolean}
85
83
  * @readonly
86
84
  * @default true
87
85
  */
@@ -114,7 +112,7 @@ class ScriptableValueNode extends Node {
114
112
  /**
115
113
  * The node's value.
116
114
  *
117
- * @type {Any}
115
+ * @type {any}
118
116
  */
119
117
  get value() {
120
118
 
@@ -135,7 +133,7 @@ class ScriptableValueNode extends Node {
135
133
  * The `value` property usually represents a node or even binary data in form of array buffers.
136
134
  * In this case, this method tries to return the actual value behind the complex type.
137
135
  *
138
- * @return {Any} The value.
136
+ * @return {any} The value.
139
137
  */
140
138
  getValue() {
141
139
 
@@ -168,7 +166,7 @@ class ScriptableValueNode extends Node {
168
166
  * Overwritten since the node type is inferred from the value.
169
167
  *
170
168
  * @param {NodeBuilder} builder - The current node builder.
171
- * @return {String} The node type.
169
+ * @return {string} The node type.
172
170
  */
173
171
  getNodeType( builder ) {
174
172
 
@@ -247,8 +245,9 @@ export default ScriptableValueNode;
247
245
  /**
248
246
  * TSL function for creating a scriptable value node.
249
247
  *
248
+ * @tsl
250
249
  * @function
251
- * @param {Any} [value=null] - The value.
250
+ * @param {any} [value] - The value.
252
251
  * @returns {ScriptableValueNode}
253
252
  */
254
- export const scriptableValue = /*@__PURE__*/ nodeProxy( ScriptableValueNode );
253
+ export const scriptableValue = /*@__PURE__*/ nodeProxy( ScriptableValueNode ).setParameterLength( 1 );
@@ -1,10 +1,8 @@
1
1
  import TempNode from './TempNode.js';
2
2
  import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
3
3
 
4
- /** @module ArrayNode **/
5
-
6
4
  /**
7
- * ArrayNode represents a collection of nodes, typically created using the {@link module:TSL~array} function.
5
+ * ArrayNode represents a collection of nodes, typically created using the {@link array} function.
8
6
  * ```js
9
7
  * const colors = array( [
10
8
  * vec3( 1, 0, 0 ),
@@ -14,7 +12,7 @@ import { addMethodChaining, nodeObject } from '../tsl/TSLCore.js';
14
12
  *
15
13
  * const redColor = tintColors.element( 0 );
16
14
  *
17
- * @augments Node
15
+ * @augments TempNode
18
16
  */
19
17
  class ArrayNode extends TempNode {
20
18
 
@@ -27,9 +25,9 @@ class ArrayNode extends TempNode {
27
25
  /**
28
26
  * Constructs a new array node.
29
27
  *
30
- * @param {String} [nodeType] - The data type of the elements.
31
- * @param {Number} [count] - Size of the array.
32
- * @param {Array<Node>?} [values=null] - Array default values.
28
+ * @param {?string} nodeType - The data type of the elements.
29
+ * @param {number} count - Size of the array.
30
+ * @param {?Array<Node>} [values=null] - Array default values.
33
31
  */
34
32
  constructor( nodeType, count, values = null ) {
35
33
 
@@ -38,21 +36,21 @@ class ArrayNode extends TempNode {
38
36
  /**
39
37
  * Array size.
40
38
  *
41
- * @type {Array<Node>}
39
+ * @type {number}
42
40
  */
43
41
  this.count = count;
44
42
 
45
43
  /**
46
44
  * Array default values.
47
45
  *
48
- * @type {Array<Node>}
46
+ * @type {?Array<Node>}
49
47
  */
50
48
  this.values = values;
51
49
 
52
50
  /**
53
51
  * This flag can be used for type testing.
54
52
  *
55
- * @type {Boolean}
53
+ * @type {boolean}
56
54
  * @readonly
57
55
  * @default true
58
56
  */
@@ -60,6 +58,12 @@ class ArrayNode extends TempNode {
60
58
 
61
59
  }
62
60
 
61
+ /**
62
+ * Returns the node's type.
63
+ *
64
+ * @param {NodeBuilder} builder - The current node builder.
65
+ * @return {string} The type of the node.
66
+ */
63
67
  getNodeType( builder ) {
64
68
 
65
69
  if ( this.nodeType === null ) {
@@ -72,12 +76,24 @@ class ArrayNode extends TempNode {
72
76
 
73
77
  }
74
78
 
79
+ /**
80
+ * Returns the node's type.
81
+ *
82
+ * @param {NodeBuilder} builder - The current node builder.
83
+ * @return {string} The type of the node.
84
+ */
75
85
  getElementType( builder ) {
76
86
 
77
87
  return this.getNodeType( builder );
78
88
 
79
89
  }
80
90
 
91
+ /**
92
+ * This method builds the output node and returns the resulting array as a shader string.
93
+ *
94
+ * @param {NodeBuilder} builder - The current node builder.
95
+ * @return {string} The generated shader string.
96
+ */
81
97
  generate( builder ) {
82
98
 
83
99
  const type = this.getNodeType( builder );
@@ -93,10 +109,11 @@ export default ArrayNode;
93
109
  /**
94
110
  * TSL function for creating an array node.
95
111
  *
112
+ * @tsl
96
113
  * @function
97
- * @param {String|Array<Node>} nodeTypeOrValues - A string representing the element type (e.g., 'vec3')
114
+ * @param {string|Array<Node>} nodeTypeOrValues - A string representing the element type (e.g., 'vec3')
98
115
  * or an array containing the default values (e.g., [ vec3() ]).
99
- * @param {Number?} [count] - Size of the array.
116
+ * @param {?number} [count] - Size of the array.
100
117
  * @returns {ArrayNode}
101
118
  */
102
119
  export const array = ( ...params ) => {