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
@@ -7,10 +7,19 @@ import { Interpolant } from '../Interpolant.js';
7
7
  * It was derived from a Hermitian construction setting the first derivative
8
8
  * at each sample position to the linear slope between neighboring positions
9
9
  * over their parameter interval.
10
+ *
11
+ * @augments Interpolant
10
12
  */
11
-
12
13
  class CubicInterpolant extends Interpolant {
13
14
 
15
+ /**
16
+ * Constructs a new cubic interpolant.
17
+ *
18
+ * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
19
+ * @param {TypedArray} sampleValues - The sample values.
20
+ * @param {number} sampleSize - The sample size
21
+ * @param {TypedArray} [resultBuffer] - The result buffer.
22
+ */
14
23
  constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
15
24
 
16
25
  super( parameterPositions, sampleValues, sampleSize, resultBuffer );
@@ -1,13 +1,21 @@
1
1
  import { Interpolant } from '../Interpolant.js';
2
2
 
3
3
  /**
4
- *
5
4
  * Interpolant that evaluates to the sample value at the position preceding
6
5
  * the parameter.
6
+ *
7
+ * @augments Interpolant
7
8
  */
8
-
9
9
  class DiscreteInterpolant extends Interpolant {
10
10
 
11
+ /**
12
+ * Constructs a new discrete interpolant.
13
+ *
14
+ * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
15
+ * @param {TypedArray} sampleValues - The sample values.
16
+ * @param {number} sampleSize - The sample size
17
+ * @param {TypedArray} [resultBuffer] - The result buffer.
18
+ */
11
19
  constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
12
20
 
13
21
  super( parameterPositions, sampleValues, sampleSize, resultBuffer );
@@ -1,7 +1,20 @@
1
1
  import { Interpolant } from '../Interpolant.js';
2
2
 
3
+ /**
4
+ * A basic linear interpolant.
5
+ *
6
+ * @augments Interpolant
7
+ */
3
8
  class LinearInterpolant extends Interpolant {
4
9
 
10
+ /**
11
+ * Constructs a new linear interpolant.
12
+ *
13
+ * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
14
+ * @param {TypedArray} sampleValues - The sample values.
15
+ * @param {number} sampleSize - The sample size
16
+ * @param {TypedArray} [resultBuffer] - The result buffer.
17
+ */
5
18
  constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
6
19
 
7
20
  super( parameterPositions, sampleValues, sampleSize, resultBuffer );
@@ -3,10 +3,19 @@ import { Quaternion } from '../Quaternion.js';
3
3
 
4
4
  /**
5
5
  * Spherical linear unit quaternion interpolant.
6
+ *
7
+ * @augments Interpolant
6
8
  */
7
-
8
9
  class QuaternionLinearInterpolant extends Interpolant {
9
10
 
11
+ /**
12
+ * Constructs a new SLERP interpolant.
13
+ *
14
+ * @param {TypedArray} parameterPositions - The parameter positions hold the interpolation factors.
15
+ * @param {TypedArray} sampleValues - The sample values.
16
+ * @param {number} sampleSize - The sample size
17
+ * @param {TypedArray} [resultBuffer] - The result buffer.
18
+ */
10
19
  constructor( parameterPositions, sampleValues, sampleSize, resultBuffer ) {
11
20
 
12
21
  super( parameterPositions, sampleValues, sampleSize, resultBuffer );
@@ -56,6 +56,7 @@ export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.
56
56
  export { default as ReflectorNode } from './utils/ReflectorNode.js';
57
57
  export { default as RTTNode } from './utils/RTTNode.js';
58
58
  export { default as MemberNode } from './utils/MemberNode.js';
59
+ export { default as DebugNode } from './utils/DebugNode.js';
59
60
 
60
61
  // accessors
61
62
  export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
package/src/nodes/TSL.js CHANGED
@@ -134,6 +134,7 @@ export * from './lighting/LightsNode.js';
134
134
  export * from './lighting/LightingContextNode.js';
135
135
  export * from './lighting/ShadowBaseNode.js';
136
136
  export * from './lighting/ShadowNode.js';
137
+ export * from './lighting/PointShadowNode.js';
137
138
  export * from './lighting/PointLightNode.js';
138
139
 
139
140
  // pmrem
@@ -6,11 +6,10 @@ import { mix } from '../math/MathNode.js';
6
6
  import { anisotropy, anisotropyB, roughness } from '../core/PropertyNode.js';
7
7
  import { positionViewDirection } from './Position.js';
8
8
 
9
- /** @module AccessorsUtils **/
10
-
11
9
  /**
12
10
  * TSL object that represents the TBN matrix in view space.
13
11
  *
12
+ * @tsl
14
13
  * @type {Node<mat3>}
15
14
  */
16
15
  export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, normalView );
@@ -18,6 +17,7 @@ export const TBNViewMatrix = /*@__PURE__*/ mat3( tangentView, bitangentView, nor
18
17
  /**
19
18
  * TSL object that represents the parallax direction.
20
19
  *
20
+ * @tsl
21
21
  * @type {Node<mat3>}
22
22
  */
23
23
  export const parallaxDirection = /*@__PURE__*/ positionViewDirection.mul( TBNViewMatrix )/*.normalize()*/;
@@ -25,6 +25,7 @@ export const parallaxDirection = /*@__PURE__*/ positionViewDirection.mul( TBNVie
25
25
  /**
26
26
  * TSL function for computing parallax uv coordinates.
27
27
  *
28
+ * @tsl
28
29
  * @function
29
30
  * @param {Node<vec2>} uv - A uv node.
30
31
  * @param {Node<vec2>} scale - A scale node.
@@ -35,6 +36,7 @@ export const parallaxUV = ( uv, scale ) => uv.sub( parallaxDirection.mul( scale
35
36
  /**
36
37
  * TSL function for computing bent normals.
37
38
  *
39
+ * @tsl
38
40
  * @function
39
41
  * @returns {Node<vec3>} Bent normals.
40
42
  */
@@ -3,14 +3,13 @@ import StorageBufferAttribute from '../../renderers/common/StorageBufferAttribut
3
3
  import { storage } from './StorageBufferNode.js';
4
4
  import { getLengthFromType, getTypedArrayFromType } from '../core/NodeUtils.js';
5
5
 
6
- /** @module Arrays **/
7
-
8
6
  /**
9
7
  * TSL function for creating a storage buffer node with a configured `StorageBufferAttribute`.
10
8
  *
9
+ * @tsl
11
10
  * @function
12
- * @param {Number|TypedArray} count - The data count. It is also valid to pass a typed array as an argument.
13
- * @param {String|Struct} [type='float'] - The data type.
11
+ * @param {number|TypedArray} count - The data count. It is also valid to pass a typed array as an argument.
12
+ * @param {string|Struct} [type='float'] - The data type.
14
13
  * @returns {StorageBufferNode}
15
14
  */
16
15
  export const attributeArray = ( count, type = 'float' ) => {
@@ -39,9 +38,10 @@ export const attributeArray = ( count, type = 'float' ) => {
39
38
  /**
40
39
  * TSL function for creating a storage buffer node with a configured `StorageInstancedBufferAttribute`.
41
40
  *
41
+ * @tsl
42
42
  * @function
43
- * @param {Number|TypedArray} count - The data count. It is also valid to pass a typed array as an argument.
44
- * @param {String|Struct} [type='float'] - The data type.
43
+ * @param {number|TypedArray} count - The data count. It is also valid to pass a typed array as an argument.
44
+ * @param {string|Struct} [type='float'] - The data type.
45
45
  * @returns {StorageBufferNode}
46
46
  */
47
47
  export const instancedArray = ( count, type = 'float' ) => {
@@ -8,8 +8,6 @@ import { tangentLocal } from './Tangent.js';
8
8
  import { instanceIndex, drawIndex } from '../core/IndexNode.js';
9
9
  import { varyingProperty } from '../core/PropertyNode.js';
10
10
 
11
- /** @module BatchNode **/
12
-
13
11
  /**
14
12
  * This node implements the vertex shader logic which is required
15
13
  * when rendering 3D objects via batching. `BatchNode` must be used
@@ -44,7 +42,7 @@ class BatchNode extends Node {
44
42
  /**
45
43
  * The batching index node.
46
44
  *
47
- * @type {IndexNode?}
45
+ * @type {?IndexNode}
48
46
  * @default null
49
47
  */
50
48
  this.batchingIdNode = null;
@@ -76,8 +74,8 @@ class BatchNode extends Node {
76
74
 
77
75
  const getIndirectIndex = Fn( ( [ id ] ) => {
78
76
 
79
- const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ) );
80
- const x = int( id ).modInt( size );
77
+ const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ).x );
78
+ const x = int( id ).mod( size );
81
79
  const y = int( id ).div( size );
82
80
  return textureLoad( this.batchMesh._indirectTexture, ivec2( x, y ) ).x;
83
81
 
@@ -93,11 +91,11 @@ class BatchNode extends Node {
93
91
 
94
92
  const matricesTexture = this.batchMesh._matricesTexture;
95
93
 
96
- const size = textureSize( textureLoad( matricesTexture ), 0 );
94
+ const size = int( textureSize( textureLoad( matricesTexture ), 0 ).x );
97
95
  const j = float( indirectId ).mul( 4 ).toInt().toVar();
98
96
 
99
- const x = j.modInt( size );
100
- const y = j.div( int( size ) );
97
+ const x = j.mod( size );
98
+ const y = j.div( size );
101
99
  const batchingMatrix = mat4(
102
100
  textureLoad( matricesTexture, ivec2( x, y ) ),
103
101
  textureLoad( matricesTexture, ivec2( x.add( 1 ), y ) ),
@@ -112,9 +110,9 @@ class BatchNode extends Node {
112
110
 
113
111
  const getBatchingColor = Fn( ( [ id ] ) => {
114
112
 
115
- const size = textureSize( textureLoad( colorsTexture ), 0 ).x;
113
+ const size = int( textureSize( textureLoad( colorsTexture ), 0 ).x );
116
114
  const j = id;
117
- const x = j.modInt( size );
115
+ const x = j.mod( size );
118
116
  const y = j.div( size );
119
117
  return textureLoad( colorsTexture, ivec2( x, y ) ).rgb;
120
118
 
@@ -157,8 +155,9 @@ export default BatchNode;
157
155
  /**
158
156
  * TSL function for creating a batch node.
159
157
  *
158
+ * @tsl
160
159
  * @function
161
160
  * @param {BatchedMesh} batchMesh - A reference to batched mesh.
162
161
  * @returns {BatchNode}
163
162
  */
164
- export const batch = /*@__PURE__*/ nodeProxy( BatchNode );
163
+ export const batch = /*@__PURE__*/ nodeProxy( BatchNode ).setParameterLength( 1 );
@@ -3,13 +3,12 @@ import { cameraViewMatrix } from './Camera.js';
3
3
  import { normalGeometry, normalLocal, normalView, normalWorld, transformedNormalView } from './Normal.js';
4
4
  import { tangentGeometry, tangentLocal, tangentView, tangentWorld, transformedTangentView } from './Tangent.js';
5
5
 
6
- /** @module Bitangent **/
7
-
8
6
  const getBitangent = ( crossNormalTangent ) => crossNormalTangent.mul( tangentGeometry.w ).xyz;
9
7
 
10
8
  /**
11
9
  * TSL object that represents the bitangent attribute of the current rendered object.
12
10
  *
11
+ * @tsl
13
12
  * @type {Node<vec3>}
14
13
  */
15
14
  export const bitangentGeometry = /*@__PURE__*/ varying( getBitangent( normalGeometry.cross( tangentGeometry ) ), 'v_bitangentGeometry' ).normalize().toVar( 'bitangentGeometry' );
@@ -17,6 +16,7 @@ export const bitangentGeometry = /*@__PURE__*/ varying( getBitangent( normalGeom
17
16
  /**
18
17
  * TSL object that represents the vertex bitangent in local space of the current rendered object.
19
18
  *
19
+ * @tsl
20
20
  * @type {Node<vec3>}
21
21
  */
22
22
  export const bitangentLocal = /*@__PURE__*/ varying( getBitangent( normalLocal.cross( tangentLocal ) ), 'v_bitangentLocal' ).normalize().toVar( 'bitangentLocal' );
@@ -24,6 +24,7 @@ export const bitangentLocal = /*@__PURE__*/ varying( getBitangent( normalLocal.c
24
24
  /**
25
25
  * TSL object that represents the vertex bitangent in view space of the current rendered object.
26
26
  *
27
+ * @tsl
27
28
  * @type {Node<vec4>}
28
29
  */
29
30
  export const bitangentView = /*@__PURE__*/ varying( getBitangent( normalView.cross( tangentView ) ), 'v_bitangentView' ).normalize().toVar( 'bitangentView' );
@@ -31,6 +32,7 @@ export const bitangentView = /*@__PURE__*/ varying( getBitangent( normalView.cro
31
32
  /**
32
33
  * TSL object that represents the vertex bitangent in world space of the current rendered object.
33
34
  *
35
+ * @tsl
34
36
  * @type {Node<vec4>}
35
37
  */
36
38
  export const bitangentWorld = /*@__PURE__*/ varying( getBitangent( normalWorld.cross( tangentWorld ) ), 'v_bitangentWorld' ).normalize().toVar( 'bitangentWorld' );
@@ -38,6 +40,7 @@ export const bitangentWorld = /*@__PURE__*/ varying( getBitangent( normalWorld.c
38
40
  /**
39
41
  * TSL object that represents the transformed vertex bitangent in view space of the current rendered object.
40
42
  *
43
+ * @tsl
41
44
  * @type {Node<vec4>}
42
45
  */
43
46
  export const transformedBitangentView = /*@__PURE__*/ getBitangent( transformedNormalView.cross( transformedTangentView ) ).normalize().toVar( 'transformedBitangentView' );
@@ -45,6 +48,7 @@ export const transformedBitangentView = /*@__PURE__*/ getBitangent( transformedN
45
48
  /**
46
49
  * TSL object that represents the transformed vertex bitangent in world space of the current rendered object.
47
50
  *
51
+ * @tsl
48
52
  * @type {Node<vec4>}
49
53
  */
50
54
  export const transformedBitangentWorld = /*@__PURE__*/ transformedBitangentView.transformDirection( cameraViewMatrix ).normalize().toVar( 'transformedBitangentWorld' );
@@ -6,8 +6,6 @@ import { InterleavedBufferAttribute } from '../../core/InterleavedBufferAttribut
6
6
  import { InterleavedBuffer } from '../../core/InterleavedBuffer.js';
7
7
  import { StaticDrawUsage, DynamicDrawUsage } from '../../constants.js';
8
8
 
9
- /** @module BufferAttributeNode **/
10
-
11
9
  /**
12
10
  * In earlier `three.js` versions it was only possible to define attribute data
13
11
  * on geometry level. With `BufferAttributeNode`, it is also possible to do this
@@ -42,9 +40,9 @@ class BufferAttributeNode extends InputNode {
42
40
  * Constructs a new buffer attribute node.
43
41
  *
44
42
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} value - The attribute data.
45
- * @param {String?} [bufferType=null] - The buffer type (e.g. `'vec3'`).
46
- * @param {Number} [bufferStride=0] - The buffer stride.
47
- * @param {Number} [bufferOffset=0] - The buffer offset.
43
+ * @param {?string} [bufferType=null] - The buffer type (e.g. `'vec3'`).
44
+ * @param {number} [bufferStride=0] - The buffer stride.
45
+ * @param {number} [bufferOffset=0] - The buffer offset.
48
46
  */
49
47
  constructor( value, bufferType = null, bufferStride = 0, bufferOffset = 0 ) {
50
48
 
@@ -53,7 +51,7 @@ class BufferAttributeNode extends InputNode {
53
51
  /**
54
52
  * This flag can be used for type testing.
55
53
  *
56
- * @type {Boolean}
54
+ * @type {boolean}
57
55
  * @readonly
58
56
  * @default true
59
57
  */
@@ -62,7 +60,7 @@ class BufferAttributeNode extends InputNode {
62
60
  /**
63
61
  * The buffer type (e.g. `'vec3'`).
64
62
  *
65
- * @type {String}
63
+ * @type {?string}
66
64
  * @default null
67
65
  */
68
66
  this.bufferType = bufferType;
@@ -70,7 +68,7 @@ class BufferAttributeNode extends InputNode {
70
68
  /**
71
69
  * The buffer stride.
72
70
  *
73
- * @type {Number}
71
+ * @type {number}
74
72
  * @default 0
75
73
  */
76
74
  this.bufferStride = bufferStride;
@@ -78,7 +76,7 @@ class BufferAttributeNode extends InputNode {
78
76
  /**
79
77
  * The buffer offset.
80
78
  *
81
- * @type {Number}
79
+ * @type {number}
82
80
  * @default 0
83
81
  */
84
82
  this.bufferOffset = bufferOffset;
@@ -87,7 +85,7 @@ class BufferAttributeNode extends InputNode {
87
85
  * The usage property. Set this to `THREE.DynamicDrawUsage` via `.setUsage()`,
88
86
  * if you are planning to update the attribute data per frame.
89
87
  *
90
- * @type {Number}
88
+ * @type {number}
91
89
  * @default StaticDrawUsage
92
90
  */
93
91
  this.usage = StaticDrawUsage;
@@ -95,7 +93,7 @@ class BufferAttributeNode extends InputNode {
95
93
  /**
96
94
  * Whether the attribute is instanced or not.
97
95
  *
98
- * @type {Boolean}
96
+ * @type {boolean}
99
97
  * @default false
100
98
  */
101
99
  this.instanced = false;
@@ -103,7 +101,7 @@ class BufferAttributeNode extends InputNode {
103
101
  /**
104
102
  * A reference to the buffer attribute.
105
103
  *
106
- * @type {BufferAttribute?}
104
+ * @type {?BufferAttribute}
107
105
  * @default null
108
106
  */
109
107
  this.attribute = null;
@@ -111,7 +109,7 @@ class BufferAttributeNode extends InputNode {
111
109
  /**
112
110
  * `BufferAttributeNode` sets this property to `true` by default.
113
111
  *
114
- * @type {Boolean}
112
+ * @type {boolean}
115
113
  * @default true
116
114
  */
117
115
  this.global = true;
@@ -131,7 +129,7 @@ class BufferAttributeNode extends InputNode {
131
129
  * and thus the hash should be shared as well.
132
130
  *
133
131
  * @param {NodeBuilder} builder - The current node builder.
134
- * @return {String} The hash.
132
+ * @return {string} The hash.
135
133
  */
136
134
  getHash( builder ) {
137
135
 
@@ -162,7 +160,7 @@ class BufferAttributeNode extends InputNode {
162
160
  * the buffer attribute.
163
161
  *
164
162
  * @param {NodeBuilder} builder - The current node builder.
165
- * @return {String} The node type.
163
+ * @return {string} The node type.
166
164
  */
167
165
  getNodeType( builder ) {
168
166
 
@@ -207,7 +205,7 @@ class BufferAttributeNode extends InputNode {
207
205
  * Generates the code snippet of the buffer attribute node.
208
206
  *
209
207
  * @param {NodeBuilder} builder - The current node builder.
210
- * @return {String} The generated code snippet.
208
+ * @return {string} The generated code snippet.
211
209
  */
212
210
  generate( builder ) {
213
211
 
@@ -240,7 +238,7 @@ class BufferAttributeNode extends InputNode {
240
238
  * Overwrites the default implementation to return a fixed value `'bufferAttribute'`.
241
239
  *
242
240
  * @param {NodeBuilder} builder - The current node builder.
243
- * @return {String} The input type.
241
+ * @return {string} The input type.
244
242
  */
245
243
  getInputType( /*builder*/ ) {
246
244
 
@@ -251,7 +249,7 @@ class BufferAttributeNode extends InputNode {
251
249
  /**
252
250
  * Sets the `usage` property to the given value.
253
251
  *
254
- * @param {Number} value - The usage to set.
252
+ * @param {number} value - The usage to set.
255
253
  * @return {BufferAttributeNode} A reference to this node.
256
254
  */
257
255
  setUsage( value ) {
@@ -271,7 +269,7 @@ class BufferAttributeNode extends InputNode {
271
269
  /**
272
270
  * Sets the `instanced` property to the given value.
273
271
  *
274
- * @param {Boolean} value - The value to set.
272
+ * @param {boolean} value - The value to set.
275
273
  * @return {BufferAttributeNode} A reference to this node.
276
274
  */
277
275
  setInstanced( value ) {
@@ -289,11 +287,12 @@ export default BufferAttributeNode;
289
287
  /**
290
288
  * TSL function for creating a buffer attribute node.
291
289
  *
290
+ * @tsl
292
291
  * @function
293
292
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
294
- * @param {String?} [type=null] - The buffer type (e.g. `'vec3'`).
295
- * @param {Number} [stride=0] - The buffer stride.
296
- * @param {Number} [offset=0] - The buffer offset.
293
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
294
+ * @param {number} [stride=0] - The buffer stride.
295
+ * @param {number} [offset=0] - The buffer offset.
297
296
  * @returns {BufferAttributeNode}
298
297
  */
299
298
  export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => nodeObject( new BufferAttributeNode( array, type, stride, offset ) );
@@ -302,11 +301,12 @@ export const bufferAttribute = ( array, type = null, stride = 0, offset = 0 ) =>
302
301
  * TSL function for creating a buffer attribute node but with dynamic draw usage.
303
302
  * Use this function if attribute data are updated per frame.
304
303
  *
304
+ * @tsl
305
305
  * @function
306
306
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
307
- * @param {String?} [type=null] - The buffer type (e.g. `'vec3'`).
308
- * @param {Number} [stride=0] - The buffer stride.
309
- * @param {Number} [offset=0] - The buffer offset.
307
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
308
+ * @param {number} [stride=0] - The buffer stride.
309
+ * @param {number} [offset=0] - The buffer offset.
310
310
  * @returns {BufferAttributeNode}
311
311
  */
312
312
  export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => bufferAttribute( array, type, stride, offset ).setUsage( DynamicDrawUsage );
@@ -314,11 +314,12 @@ export const dynamicBufferAttribute = ( array, type = null, stride = 0, offset =
314
314
  /**
315
315
  * TSL function for creating a buffer attribute node but with enabled instancing
316
316
  *
317
+ * @tsl
317
318
  * @function
318
319
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
319
- * @param {String?} [type=null] - The buffer type (e.g. `'vec3'`).
320
- * @param {Number} [stride=0] - The buffer stride.
321
- * @param {Number} [offset=0] - The buffer offset.
320
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
321
+ * @param {number} [stride=0] - The buffer stride.
322
+ * @param {number} [offset=0] - The buffer offset.
322
323
  * @returns {BufferAttributeNode}
323
324
  */
324
325
  export const instancedBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => bufferAttribute( array, type, stride, offset ).setInstanced( true );
@@ -326,11 +327,12 @@ export const instancedBufferAttribute = ( array, type = null, stride = 0, offset
326
327
  /**
327
328
  * TSL function for creating a buffer attribute node but with dynamic draw usage and enabled instancing
328
329
  *
330
+ * @tsl
329
331
  * @function
330
332
  * @param {BufferAttribute|InterleavedBuffer|TypedArray} array - The attribute data.
331
- * @param {String?} [type=null] - The buffer type (e.g. `'vec3'`).
332
- * @param {Number} [stride=0] - The buffer stride.
333
- * @param {Number} [offset=0] - The buffer offset.
333
+ * @param {?string} [type=null] - The buffer type (e.g. `'vec3'`).
334
+ * @param {number} [stride=0] - The buffer stride.
335
+ * @param {number} [offset=0] - The buffer offset.
334
336
  * @returns {BufferAttributeNode}
335
337
  */
336
338
  export const instancedDynamicBufferAttribute = ( array, type = null, stride = 0, offset = 0 ) => dynamicBufferAttribute( array, type, stride, offset ).setInstanced( true );
@@ -1,8 +1,6 @@
1
1
  import UniformNode from '../core/UniformNode.js';
2
2
  import { nodeObject } from '../tsl/TSLBase.js';
3
3
 
4
- /** @module BufferNode **/
5
-
6
4
  /**
7
5
  * A special type of uniform node which represents array-like data
8
6
  * as uniform buffers. The access usually happens via `element()`
@@ -15,7 +13,7 @@ import { nodeObject } from '../tsl/TSLBase.js';
15
13
  * In general, it is recommended to use the more managed {@link UniformArrayNode}
16
14
  * since it handles more input types and automatically cares about buffer paddings.
17
15
  *
18
- * @augments module:UniformNode~UniformNode
16
+ * @augments UniformNode
19
17
  */
20
18
  class BufferNode extends UniformNode {
21
19
 
@@ -28,9 +26,9 @@ class BufferNode extends UniformNode {
28
26
  /**
29
27
  * Constructs a new buffer node.
30
28
  *
31
- * @param {Array<Number>} value - Array-like buffer data.
32
- * @param {String} bufferType - The data type of the buffer.
33
- * @param {Number} [bufferCount=0] - The count of buffer elements.
29
+ * @param {Array<number>} value - Array-like buffer data.
30
+ * @param {string} bufferType - The data type of the buffer.
31
+ * @param {number} [bufferCount=0] - The count of buffer elements.
34
32
  */
35
33
  constructor( value, bufferType, bufferCount = 0 ) {
36
34
 
@@ -39,7 +37,7 @@ class BufferNode extends UniformNode {
39
37
  /**
40
38
  * This flag can be used for type testing.
41
39
  *
42
- * @type {Boolean}
40
+ * @type {boolean}
43
41
  * @readonly
44
42
  * @default true
45
43
  */
@@ -48,14 +46,14 @@ class BufferNode extends UniformNode {
48
46
  /**
49
47
  * The data type of the buffer.
50
48
  *
51
- * @type {String}
49
+ * @type {string}
52
50
  */
53
51
  this.bufferType = bufferType;
54
52
 
55
53
  /**
56
54
  * The uniform node that holds the value of the reference node.
57
55
  *
58
- * @type {Number}
56
+ * @type {number}
59
57
  * @default 0
60
58
  */
61
59
  this.bufferCount = bufferCount;
@@ -66,7 +64,7 @@ class BufferNode extends UniformNode {
66
64
  * The data type of the buffer elements.
67
65
  *
68
66
  * @param {NodeBuilder} builder - The current node builder.
69
- * @return {String} The element type.
67
+ * @return {string} The element type.
70
68
  */
71
69
  getElementType( builder ) {
72
70
 
@@ -78,7 +76,7 @@ class BufferNode extends UniformNode {
78
76
  * Overwrites the default implementation to return a fixed value `'buffer'`.
79
77
  *
80
78
  * @param {NodeBuilder} builder - The current node builder.
81
- * @return {String} The input type.
79
+ * @return {string} The input type.
82
80
  */
83
81
  getInputType( /*builder*/ ) {
84
82
 
@@ -93,10 +91,11 @@ export default BufferNode;
93
91
  /**
94
92
  * TSL function for creating a buffer node.
95
93
  *
94
+ * @tsl
96
95
  * @function
97
96
  * @param {Array} value - Array-like buffer data.
98
- * @param {String} type - The data type of a buffer element.
99
- * @param {Number} count - The count of buffer elements.
97
+ * @param {string} type - The data type of a buffer element.
98
+ * @param {number} count - The count of buffer elements.
100
99
  * @returns {BufferNode}
101
100
  */
102
101
  export const buffer = ( value, type, count ) => nodeObject( new BufferNode( value, type, count ) );
@@ -1,8 +1,6 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { nodeProxy } from '../tsl/TSLBase.js';
3
3
 
4
- /** @module BuiltinNode **/
5
-
6
4
  /**
7
5
  * The node allows to set values for built-in shader variables. That is
8
6
  * required for features like hardware-accelerated vertex clipping.
@@ -14,7 +12,7 @@ class BuiltinNode extends Node {
14
12
  /**
15
13
  * Constructs a new builtin node.
16
14
  *
17
- * @param {String} name - The name of the built-in shader variable.
15
+ * @param {string} name - The name of the built-in shader variable.
18
16
  */
19
17
  constructor( name ) {
20
18
 
@@ -23,14 +21,14 @@ class BuiltinNode extends Node {
23
21
  /**
24
22
  * The name of the built-in shader variable.
25
23
  *
26
- * @type {String}
24
+ * @type {string}
27
25
  */
28
26
  this.name = name;
29
27
 
30
28
  /**
31
29
  * This flag can be used for type testing.
32
30
  *
33
- * @type {Boolean}
31
+ * @type {boolean}
34
32
  * @readonly
35
33
  * @default true
36
34
  */
@@ -42,7 +40,7 @@ class BuiltinNode extends Node {
42
40
  * Generates the code snippet of the builtin node.
43
41
  *
44
42
  * @param {NodeBuilder} builder - The current node builder.
45
- * @return {String} The generated code snippet.
43
+ * @return {string} The generated code snippet.
46
44
  */
47
45
  generate( /* builder */ ) {
48
46
 
@@ -57,8 +55,9 @@ export default BuiltinNode;
57
55
  /**
58
56
  * TSL function for creating a builtin node.
59
57
  *
58
+ * @tsl
60
59
  * @function
61
- * @param {String} name - The name of the built-in shader variable.
60
+ * @param {string} name - The name of the built-in shader variable.
62
61
  * @returns {BuiltinNode}
63
62
  */
64
- export const builtin = nodeProxy( BuiltinNode );
63
+ export const builtin = nodeProxy( BuiltinNode ).setParameterLength( 1 );