super-three 0.173.4 → 0.175.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 +22198 -1564
  2. package/build/three.core.js +21287 -1346
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +882 -189
  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 +19358 -17482
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +19342 -17482
  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 +187 -11
  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
@@ -9,8 +9,6 @@ import { RenderTarget } from '../../core/RenderTarget.js';
9
9
  import { Vector2 } from '../../math/Vector2.js';
10
10
  import { HalfFloatType } from '../../constants.js';
11
11
 
12
- /** @module RTTNode **/
13
-
14
12
  const _size = /*@__PURE__*/ new Vector2();
15
13
 
16
14
  /**
@@ -19,7 +17,7 @@ const _size = /*@__PURE__*/ new Vector2();
19
17
  * texture input for their effects. With the helper function `convertToTexture()` which is based
20
18
  * on this module, the node system can automatically ensure texture input if required.
21
19
  *
22
- * @augments module:TextureNode~TextureNode
20
+ * @augments TextureNode
23
21
  */
24
22
  class RTTNode extends TextureNode {
25
23
 
@@ -33,8 +31,8 @@ class RTTNode extends TextureNode {
33
31
  * Constructs a new RTT node.
34
32
  *
35
33
  * @param {Node} node - The node to render a texture with.
36
- * @param {Number?} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
37
- * @param {Number?} [height=null] - The height of the internal render target.
34
+ * @param {?number} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
35
+ * @param {?number} [height=null] - The height of the internal render target.
38
36
  * @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
39
37
  */
40
38
  constructor( node, width = null, height = null, options = { type: HalfFloatType } ) {
@@ -54,7 +52,7 @@ class RTTNode extends TextureNode {
54
52
  * The width of the internal render target.
55
53
  * If not width is applied, the render target is automatically resized.
56
54
  *
57
- * @type {Number?}
55
+ * @type {?number}
58
56
  * @default null
59
57
  */
60
58
  this.width = width;
@@ -62,7 +60,7 @@ class RTTNode extends TextureNode {
62
60
  /**
63
61
  * The height of the internal render target.
64
62
  *
65
- * @type {Number?}
63
+ * @type {?number}
66
64
  * @default null
67
65
  */
68
66
  this.height = height;
@@ -70,7 +68,7 @@ class RTTNode extends TextureNode {
70
68
  /**
71
69
  * The pixel ratio
72
70
  *
73
- * @type {Number}
71
+ * @type {number}
74
72
  * @default 1
75
73
  */
76
74
  this.pixelRatio = 1;
@@ -85,7 +83,7 @@ class RTTNode extends TextureNode {
85
83
  /**
86
84
  * Whether the texture requires an update or not.
87
85
  *
88
- * @type {Boolean}
86
+ * @type {boolean}
89
87
  * @default true
90
88
  */
91
89
  this.textureNeedsUpdate = true;
@@ -93,7 +91,7 @@ class RTTNode extends TextureNode {
93
91
  /**
94
92
  * Whether the texture should automatically be updated or not.
95
93
  *
96
- * @type {Boolean}
94
+ * @type {boolean}
97
95
  * @default true
98
96
  */
99
97
  this.autoUpdate = true;
@@ -119,7 +117,7 @@ class RTTNode extends TextureNode {
119
117
  * The `updateBeforeType` is set to `NodeUpdateType.RENDER` since the node updates
120
118
  * the texture once per render in its {@link RTTNode#updateBefore} method.
121
119
  *
122
- * @type {String}
120
+ * @type {string}
123
121
  * @default 'render'
124
122
  */
125
123
  this.updateBeforeType = NodeUpdateType.RENDER;
@@ -129,7 +127,7 @@ class RTTNode extends TextureNode {
129
127
  /**
130
128
  * Whether the internal render target should automatically be resized or not.
131
129
  *
132
- * @type {Boolean}
130
+ * @type {boolean}
133
131
  * @readonly
134
132
  * @default true
135
133
  */
@@ -152,8 +150,8 @@ class RTTNode extends TextureNode {
152
150
  /**
153
151
  * Sets the size of the internal render target
154
152
  *
155
- * @param {Number} width - The width to set.
156
- * @param {Number} height - The width to set.
153
+ * @param {number} width - The width to set.
154
+ * @param {number} height - The width to set.
157
155
  */
158
156
  setSize( width, height ) {
159
157
 
@@ -172,7 +170,7 @@ class RTTNode extends TextureNode {
172
170
  /**
173
171
  * Sets the pixel ratio. This will also resize the render target.
174
172
  *
175
- * @param {Number} pixelRatio - The pixel ratio to set.
173
+ * @param {number} pixelRatio - The pixel ratio to set.
176
174
  */
177
175
  setPixelRatio( pixelRatio ) {
178
176
 
@@ -233,10 +231,11 @@ export default RTTNode;
233
231
  /**
234
232
  * TSL function for creating a RTT node.
235
233
  *
234
+ * @tsl
236
235
  * @function
237
236
  * @param {Node} node - The node to render a texture with.
238
- * @param {Number?} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
239
- * @param {Number?} [height=null] - The height of the internal render target.
237
+ * @param {?number} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
238
+ * @param {?number} [height=null] - The height of the internal render target.
240
239
  * @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
241
240
  * @returns {RTTNode}
242
241
  */
@@ -245,10 +244,11 @@ export const rtt = ( node, ...params ) => nodeObject( new RTTNode( nodeObject( n
245
244
  /**
246
245
  * TSL function for converting nodes to textures nodes.
247
246
  *
247
+ * @tsl
248
248
  * @function
249
249
  * @param {Node} node - The node to render a texture with.
250
- * @param {Number?} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
251
- * @param {Number?} [height=null] - The height of the internal render target.
250
+ * @param {?number} [width=null] - The width of the internal render target. If not width is applied, the render target is automatically resized.
251
+ * @param {?number} [height=null] - The height of the internal render target.
252
252
  * @param {Object} [options={type:HalfFloatType}] - The options for the internal render target.
253
253
  * @returns {RTTNode}
254
254
  */
@@ -14,8 +14,6 @@ import { Matrix4 } from '../../math/Matrix4.js';
14
14
  import { RenderTarget } from '../../core/RenderTarget.js';
15
15
  import { DepthTexture } from '../../textures/DepthTexture.js';
16
16
 
17
- /** @module ReflectorNode **/
18
-
19
17
  const _reflectorPlane = new Plane();
20
18
  const _normal = new Vector3();
21
19
  const _reflectorWorldPosition = new Vector3();
@@ -48,7 +46,7 @@ let _inReflector = false;
48
46
  * plane.add( groundReflector.target );
49
47
  * ```
50
48
  *
51
- * @augments module:TextureNode~TextureNode
49
+ * @augments TextureNode
52
50
  */
53
51
  class ReflectorNode extends TextureNode {
54
52
 
@@ -63,10 +61,10 @@ class ReflectorNode extends TextureNode {
63
61
  *
64
62
  * @param {Object} [parameters={}] - An object holding configuration parameters.
65
63
  * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
66
- * @param {Number} [parameters.resolution=1] - The resolution scale.
67
- * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
68
- * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
69
- * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.
64
+ * @param {number} [parameters.resolution=1] - The resolution scale.
65
+ * @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
66
+ * @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
67
+ * @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
70
68
  * @param {TextureNode} [parameters.defaultTexture] - The default texture node.
71
69
  * @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
72
70
  */
@@ -78,8 +76,8 @@ class ReflectorNode extends TextureNode {
78
76
  * A reference to the internal reflector base node which holds the actual implementation.
79
77
  *
80
78
  * @private
81
- * @type {ReflectorBaseNode?}
82
- * @default null
79
+ * @type {ReflectorBaseNode}
80
+ * @default ReflectorBaseNode
83
81
  */
84
82
  this._reflectorBaseNode = parameters.reflector || new ReflectorBaseNode( this, parameters );
85
83
 
@@ -87,7 +85,7 @@ class ReflectorNode extends TextureNode {
87
85
  * A reference to the internal depth node.
88
86
  *
89
87
  * @private
90
- * @type {Node?}
88
+ * @type {?Node}
91
89
  * @default null
92
90
  */
93
91
  this._depthNode = null;
@@ -188,10 +186,10 @@ class ReflectorBaseNode extends Node {
188
186
  * @param {TextureNode} textureNode - Represents the rendered reflections as a texture node.
189
187
  * @param {Object} [parameters={}] - An object holding configuration parameters.
190
188
  * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
191
- * @param {Number} [parameters.resolution=1] - The resolution scale.
192
- * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
193
- * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
194
- * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.
189
+ * @param {number} [parameters.resolution=1] - The resolution scale.
190
+ * @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
191
+ * @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
192
+ * @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
195
193
  */
196
194
  constructor( textureNode, parameters = {} ) {
197
195
 
@@ -223,7 +221,7 @@ class ReflectorBaseNode extends Node {
223
221
  /**
224
222
  * The resolution scale.
225
223
  *
226
- * @type {Number}
224
+ * @type {number}
227
225
  * @default {1}
228
226
  */
229
227
  this.resolution = resolution;
@@ -231,7 +229,7 @@ class ReflectorBaseNode extends Node {
231
229
  /**
232
230
  * Whether mipmaps should be generated or not.
233
231
  *
234
- * @type {Boolean}
232
+ * @type {boolean}
235
233
  * @default {false}
236
234
  */
237
235
  this.generateMipmaps = generateMipmaps;
@@ -239,7 +237,7 @@ class ReflectorBaseNode extends Node {
239
237
  /**
240
238
  * Whether reflectors can render other reflector nodes or not.
241
239
  *
242
- * @type {Boolean}
240
+ * @type {boolean}
243
241
  * @default {true}
244
242
  */
245
243
  this.bounces = bounces;
@@ -247,7 +245,7 @@ class ReflectorBaseNode extends Node {
247
245
  /**
248
246
  * Whether depth data should be generated or not.
249
247
  *
250
- * @type {Boolean}
248
+ * @type {boolean}
251
249
  * @default {false}
252
250
  */
253
251
  this.depth = depth;
@@ -256,7 +254,7 @@ class ReflectorBaseNode extends Node {
256
254
  * The `updateBeforeType` is set to `NodeUpdateType.RENDER` when {@link ReflectorBaseNode#bounces}
257
255
  * is `true`. Otherwise it's `NodeUpdateType.FRAME`.
258
256
  *
259
- * @type {String}
257
+ * @type {string}
260
258
  * @default 'render'
261
259
  */
262
260
  this.updateBeforeType = bounces ? NodeUpdateType.RENDER : NodeUpdateType.FRAME;
@@ -275,6 +273,14 @@ class ReflectorBaseNode extends Node {
275
273
  */
276
274
  this.renderTargets = new WeakMap();
277
275
 
276
+ /**
277
+ * Force render even if reflector is facing away from camera.
278
+ *
279
+ * @type {boolean}
280
+ * @default {false}
281
+ */
282
+ this.forceUpdate = false;
283
+
278
284
  }
279
285
 
280
286
  /**
@@ -389,9 +395,10 @@ class ReflectorBaseNode extends Node {
389
395
 
390
396
  _view.subVectors( _reflectorWorldPosition, _cameraWorldPosition );
391
397
 
392
- // Avoid rendering when reflector is facing away
398
+ // Avoid rendering when reflector is facing away unless forcing an update
399
+ const isFacingAway = _view.dot( _normal ) > 0;
393
400
 
394
- if ( _view.dot( _normal ) > 0 ) return;
401
+ if ( isFacingAway === true && this.forceUpdate === false ) return;
395
402
 
396
403
  _view.reflect( _normal ).negate();
397
404
  _view.add( _reflectorWorldPosition );
@@ -476,6 +483,8 @@ class ReflectorBaseNode extends Node {
476
483
 
477
484
  _inReflector = false;
478
485
 
486
+ this.forceUpdate = false;
487
+
479
488
  }
480
489
 
481
490
  }
@@ -483,13 +492,14 @@ class ReflectorBaseNode extends Node {
483
492
  /**
484
493
  * TSL function for creating a reflector node.
485
494
  *
495
+ * @tsl
486
496
  * @function
487
497
  * @param {Object} [parameters={}] - An object holding configuration parameters.
488
498
  * @param {Object3D} [parameters.target=new Object3D()] - The 3D object the reflector is linked to.
489
- * @param {Number} [parameters.resolution=1] - The resolution scale.
490
- * @param {Boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
491
- * @param {Boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
492
- * @param {Boolean} [parameters.depth=false] - Whether depth data should be generated or not.
499
+ * @param {number} [parameters.resolution=1] - The resolution scale.
500
+ * @param {boolean} [parameters.generateMipmaps=false] - Whether mipmaps should be generated or not.
501
+ * @param {boolean} [parameters.bounces=true] - Whether reflectors can render other reflector nodes or not.
502
+ * @param {boolean} [parameters.depth=false] - Whether depth data should be generated or not.
493
503
  * @param {TextureNode} [parameters.defaultTexture] - The default texture node.
494
504
  * @param {ReflectorBaseNode} [parameters.reflector] - The reflector base node.
495
505
  * @returns {ReflectorNode}
@@ -1,8 +1,6 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { float, addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
3
3
 
4
- /** @module RemapNode **/
5
-
6
4
  /**
7
5
  * This node allows to remap a node value from one range into another. E.g a value of
8
6
  * `0.4` in the range `[ 0.3, 0.5 ]` should be remapped into the normalized range `[ 0, 1 ]`.
@@ -72,7 +70,7 @@ class RemapNode extends Node {
72
70
  * Whether the node value should be clamped before
73
71
  * remapping it to the target range.
74
72
  *
75
- * @type {Boolean}
73
+ * @type {boolean}
76
74
  * @default true
77
75
  */
78
76
  this.doClamp = true;
@@ -98,28 +96,30 @@ export default RemapNode;
98
96
  /**
99
97
  * TSL function for creating a remap node.
100
98
  *
99
+ * @tsl
101
100
  * @function
102
101
  * @param {Node} node - The node that should be remapped.
103
102
  * @param {Node} inLowNode - The source or current lower bound of the range.
104
103
  * @param {Node} inHighNode - The source or current upper bound of the range.
105
- * @param {Node} [outLowNode=float(0)] - The target lower bound of the range.
106
- * @param {Node} [outHighNode=float(1)] - The target upper bound of the range.
104
+ * @param {?Node} [outLowNode=float(0)] - The target lower bound of the range.
105
+ * @param {?Node} [outHighNode=float(1)] - The target upper bound of the range.
107
106
  * @returns {RemapNode}
108
107
  */
109
- export const remap = /*@__PURE__*/ nodeProxy( RemapNode, null, null, { doClamp: false } );
108
+ export const remap = /*@__PURE__*/ nodeProxy( RemapNode, null, null, { doClamp: false } ).setParameterLength( 3, 5 );
110
109
 
111
110
  /**
112
111
  * TSL function for creating a remap node, but with enabled clamping.
113
112
  *
113
+ * @tsl
114
114
  * @function
115
115
  * @param {Node} node - The node that should be remapped.
116
116
  * @param {Node} inLowNode - The source or current lower bound of the range.
117
117
  * @param {Node} inHighNode - The source or current upper bound of the range.
118
- * @param {Node} [outLowNode=float(0)] - The target lower bound of the range.
119
- * @param {Node} [outHighNode=float(1)] - The target upper bound of the range.
118
+ * @param {?Node} [outLowNode=float(0)] - The target lower bound of the range.
119
+ * @param {?Node} [outHighNode=float(1)] - The target upper bound of the range.
120
120
  * @returns {RemapNode}
121
121
  */
122
- export const remapClamp = /*@__PURE__*/ nodeProxy( RemapNode );
122
+ export const remapClamp = /*@__PURE__*/ nodeProxy( RemapNode ).setParameterLength( 3, 5 );
123
123
 
124
124
  addMethodChaining( 'remap', remap );
125
125
  addMethodChaining( 'remapClamp', remapClamp );
@@ -2,8 +2,6 @@ import TempNode from '../core/TempNode.js';
2
2
  import { nodeProxy, vec4, mat2, mat4 } from '../tsl/TSLBase.js';
3
3
  import { cos, sin } from '../math/MathNode.js';
4
4
 
5
- /** @module RotateNode **/
6
-
7
5
  /**
8
6
  * Applies a rotation to the given position node.
9
7
  *
@@ -49,7 +47,7 @@ class RotateNode extends TempNode {
49
47
  * The type of the {@link RotateNode#positionNode} defines the node's type.
50
48
  *
51
49
  * @param {NodeBuilder} builder - The current node builder.
52
- * @return {String} The node's type.
50
+ * @return {string} The node's type.
53
51
  */
54
52
  getNodeType( builder ) {
55
53
 
@@ -95,10 +93,11 @@ export default RotateNode;
95
93
  /**
96
94
  * TSL function for creating a rotate node.
97
95
  *
96
+ * @tsl
98
97
  * @function
99
98
  * @param {Node} positionNode - The position node.
100
99
  * @param {Node} rotationNode - Represents the rotation that is applied to the position node. Depending
101
100
  * on whether the position data are 2D or 3D, the rotation is expressed a single float value or an Euler value.
102
101
  * @returns {RotateNode}
103
102
  */
104
- export const rotate = /*@__PURE__*/ nodeProxy( RotateNode );
103
+ export const rotate = /*@__PURE__*/ nodeProxy( RotateNode ).setParameterLength( 2 );
@@ -24,7 +24,7 @@ class SetNode extends TempNode {
24
24
  * Constructs a new set node.
25
25
  *
26
26
  * @param {Node} sourceNode - The node that should be updated.
27
- * @param {String} components - The components that should be updated.
27
+ * @param {string} components - The components that should be updated.
28
28
  * @param {Node} targetNode - The value node.
29
29
  */
30
30
  constructor( sourceNode, components, targetNode ) {
@@ -41,7 +41,7 @@ class SetNode extends TempNode {
41
41
  /**
42
42
  * The components that should be updated.
43
43
  *
44
- * @type {String}
44
+ * @type {string}
45
45
  */
46
46
  this.components = components;
47
47
 
@@ -58,7 +58,7 @@ class SetNode extends TempNode {
58
58
  * This method is overwritten since the node type is inferred from {@link SetNode#sourceNode}.
59
59
  *
60
60
  * @param {NodeBuilder} builder - The current node builder.
61
- * @return {String} The node type.
61
+ * @return {string} The node type.
62
62
  */
63
63
  getNodeType( builder ) {
64
64
 
@@ -26,7 +26,7 @@ class SplitNode extends Node {
26
26
  * Constructs a new split node.
27
27
  *
28
28
  * @param {Node} node - The node that should be accessed.
29
- * @param {String} [components='x'] - The components that should be accessed.
29
+ * @param {string} [components='x'] - The components that should be accessed.
30
30
  */
31
31
  constructor( node, components = 'x' ) {
32
32
 
@@ -49,7 +49,7 @@ class SplitNode extends Node {
49
49
  /**
50
50
  * This flag can be used for type testing.
51
51
  *
52
- * @type {Boolean}
52
+ * @type {boolean}
53
53
  * @readonly
54
54
  * @default true
55
55
  */
@@ -60,7 +60,7 @@ class SplitNode extends Node {
60
60
  /**
61
61
  * Returns the vector length which is computed based on the requested components.
62
62
  *
63
- * @return {Number} The vector length.
63
+ * @return {number} The vector length.
64
64
  */
65
65
  getVectorLength() {
66
66
 
@@ -80,7 +80,7 @@ class SplitNode extends Node {
80
80
  * Returns the component type of the node's type.
81
81
  *
82
82
  * @param {NodeBuilder} builder - The current node builder.
83
- * @return {String} The component type.
83
+ * @return {string} The component type.
84
84
  */
85
85
  getComponentType( builder ) {
86
86
 
@@ -92,7 +92,7 @@ class SplitNode extends Node {
92
92
  * This method is overwritten since the node type is inferred from requested components.
93
93
  *
94
94
  * @param {NodeBuilder} builder - The current node builder.
95
- * @return {String} The node type.
95
+ * @return {string} The node type.
96
96
  */
97
97
  getNodeType( builder ) {
98
98
 
@@ -2,8 +2,6 @@ import Node from '../core/Node.js';
2
2
  import { uv } from '../accessors/UV.js';
3
3
  import { nodeProxy, float, vec2 } from '../tsl/TSLBase.js';
4
4
 
5
- /** @module SpriteSheetUVNode **/
6
-
7
5
  /**
8
6
  * Can be used to compute texture coordinates for animated sprite sheets.
9
7
  *
@@ -82,10 +80,11 @@ export default SpriteSheetUVNode;
82
80
  /**
83
81
  * TSL function for creating a sprite sheet uv node.
84
82
  *
83
+ * @tsl
85
84
  * @function
86
85
  * @param {Node<vec2>} countNode - The node that defines the number of sprites in the x and y direction (e.g 6x6).
87
- * @param {Node<vec2>} [uvNode=uv()] - The uv node.
88
- * @param {Node<float>} [frameNode=float()] - The node that defines the current frame/sprite.
86
+ * @param {?Node<vec2>} [uvNode=uv()] - The uv node.
87
+ * @param {?Node<float>} [frameNode=float()] - The node that defines the current frame/sprite.
89
88
  * @returns {SpriteSheetUVNode}
90
89
  */
91
- export const spritesheetUV = /*@__PURE__*/ nodeProxy( SpriteSheetUVNode );
90
+ export const spritesheetUV = /*@__PURE__*/ nodeProxy( SpriteSheetUVNode ).setParameterLength( 3 );
@@ -3,8 +3,6 @@ import { cameraViewMatrix, cameraProjectionMatrix } from '../accessors/Camera.js
3
3
  import { positionLocal } from '../accessors/Position.js';
4
4
  import { Fn, defined } from '../tsl/TSLBase.js';
5
5
 
6
- /** @module SpriteUtils **/
7
-
8
6
  /**
9
7
  * This can be used to achieve a billboarding behavior for flat meshes. That means they are
10
8
  * oriented always towards the camera.
@@ -13,11 +11,12 @@ import { Fn, defined } from '../tsl/TSLBase.js';
13
11
  * material.vertexNode = billboarding();
14
12
  * ```
15
13
  *
16
- * @method
14
+ * @tsl
15
+ * @function
17
16
  * @param {Object} config - The configuration object.
18
- * @param {Node<vec3>?} [config.position=null] - Can be used to define the vertex positions in world space.
19
- * @param {Boolean} [config.horizontal=true] - Whether to follow the camera rotation horizontally or not.
20
- * @param {Boolean} [config.vertical=false] - Whether to follow the camera rotation vertically or not.
17
+ * @param {?Node<vec3>} [config.position=null] - Can be used to define the vertex positions in world space.
18
+ * @param {boolean} [config.horizontal=true] - Whether to follow the camera rotation horizontally or not.
19
+ * @param {boolean} [config.vertical=false] - Whether to follow the camera rotation vertically or not.
21
20
  * @return {Node<vec3>} The updated vertex position in clip space.
22
21
  */
23
22
  export const billboarding = /*@__PURE__*/ Fn( ( { position = null, horizontal = true, vertical = false } ) => {
@@ -1,8 +1,6 @@
1
1
  import { nodeProxy } from '../tsl/TSLBase.js';
2
2
  import ArrayElementNode from './ArrayElementNode.js';
3
3
 
4
- /** @module StorageArrayElementNode **/
5
-
6
4
  /**
7
5
  * This class enables element access on instances of {@link StorageBufferNode}.
8
6
  * In most cases, it is indirectly used when accessing elements with the
@@ -35,7 +33,7 @@ class StorageArrayElementNode extends ArrayElementNode {
35
33
  /**
36
34
  * This flag can be used for type testing.
37
35
  *
38
- * @type {Boolean}
36
+ * @type {boolean}
39
37
  * @readonly
40
38
  * @default true
41
39
  */
@@ -136,9 +134,10 @@ export default StorageArrayElementNode;
136
134
  /**
137
135
  * TSL function for creating a storage element node.
138
136
  *
137
+ * @tsl
139
138
  * @function
140
139
  * @param {StorageBufferNode} storageBufferNode - The storage buffer node.
141
140
  * @param {Node} indexNode - The index node that defines the element access.
142
141
  * @returns {StorageArrayElementNode}
143
142
  */
144
- export const storageElement = /*@__PURE__*/ nodeProxy( StorageArrayElementNode );
143
+ export const storageElement = /*@__PURE__*/ nodeProxy( StorageArrayElementNode ).setParameterLength( 2 );
@@ -1,11 +1,10 @@
1
1
  import { renderGroup } from '../core/UniformGroupNode.js';
2
2
  import { uniform } from '../core/UniformNode.js';
3
3
 
4
- /** @module Timer **/
5
-
6
4
  /**
7
5
  * Represents the elapsed time in seconds.
8
6
  *
7
+ * @tsl
9
8
  * @type {UniformNode<float>}
10
9
  */
11
10
  export const time = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.time );
@@ -13,6 +12,7 @@ export const time = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRenderU
13
12
  /**
14
13
  * Represents the delta time in seconds.
15
14
  *
15
+ * @tsl
16
16
  * @type {UniformNode<float>}
17
17
  */
18
18
  export const deltaTime = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.deltaTime );
@@ -20,6 +20,7 @@ export const deltaTime = /*@__PURE__*/ uniform( 0 ).setGroup( renderGroup ).onRe
20
20
  /**
21
21
  * Represents the current frame ID.
22
22
  *
23
+ * @tsl
23
24
  * @type {UniformNode<uint>}
24
25
  */
25
26
  export const frameId = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( renderGroup ).onRenderUpdate( ( frame ) => frame.frameId );
@@ -27,10 +28,11 @@ export const frameId = /*@__PURE__*/ uniform( 0, 'uint' ).setGroup( renderGroup
27
28
  // Deprecated
28
29
 
29
30
  /**
31
+ * @tsl
30
32
  * @function
31
33
  * @deprecated since r170. Use {@link time} instead.
32
34
  *
33
- * @param {Number} [timeScale=1] - The time scale.
35
+ * @param {number} [timeScale=1] - The time scale.
34
36
  * @returns {UniformNode<float>}
35
37
  */
36
38
  export const timerLocal = ( timeScale = 1 ) => { // @deprecated, r170
@@ -41,10 +43,11 @@ export const timerLocal = ( timeScale = 1 ) => { // @deprecated, r170
41
43
  };
42
44
 
43
45
  /**
46
+ * @tsl
44
47
  * @function
45
48
  * @deprecated since r170. Use {@link time} instead.
46
49
  *
47
- * @param {Number} [timeScale=1] - The time scale.
50
+ * @param {number} [timeScale=1] - The time scale.
48
51
  * @returns {UniformNode<float>}
49
52
  */
50
53
  export const timerGlobal = ( timeScale = 1 ) => { // @deprecated, r170
@@ -55,10 +58,11 @@ export const timerGlobal = ( timeScale = 1 ) => { // @deprecated, r170
55
58
  };
56
59
 
57
60
  /**
61
+ * @tsl
58
62
  * @function
59
63
  * @deprecated since r170. Use {@link deltaTime} instead.
60
64
  *
61
- * @param {Number} [timeScale=1] - The time scale.
65
+ * @param {number} [timeScale=1] - The time scale.
62
66
  * @returns {UniformNode<float>}
63
67
  */
64
68
  export const timerDelta = ( timeScale = 1 ) => { // @deprecated, r170