super-three 0.173.5 → 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 +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
@@ -1,8 +1,6 @@
1
1
  import Node from './Node.js';
2
2
  import { nodeImmutable, nodeObject } from '../tsl/TSLCore.js';
3
3
 
4
- /** @module PropertyNode **/
5
-
6
4
  /**
7
5
  * This class represents a shader property. It can be used
8
6
  * to explicitly define a property and assign a value to it.
@@ -26,9 +24,9 @@ class PropertyNode extends Node {
26
24
  /**
27
25
  * Constructs a new property node.
28
26
  *
29
- * @param {String} nodeType - The type of the node.
30
- * @param {String?} [name=null] - The name of the property in the shader.
31
- * @param {Boolean} [varying=false] - Whether this property is a varying or not.
27
+ * @param {string} nodeType - The type of the node.
28
+ * @param {?string} [name=null] - The name of the property in the shader.
29
+ * @param {boolean} [varying=false] - Whether this property is a varying or not.
32
30
  */
33
31
  constructor( nodeType, name = null, varying = false ) {
34
32
 
@@ -38,7 +36,7 @@ class PropertyNode extends Node {
38
36
  * The name of the property in the shader. If no name is defined,
39
37
  * the node system auto-generates one.
40
38
  *
41
- * @type {String?}
39
+ * @type {?string}
42
40
  * @default null
43
41
  */
44
42
  this.name = name;
@@ -46,7 +44,7 @@ class PropertyNode extends Node {
46
44
  /**
47
45
  * Whether this property is a varying or not.
48
46
  *
49
- * @type {Boolean}
47
+ * @type {boolean}
50
48
  * @default false
51
49
  */
52
50
  this.varying = varying;
@@ -54,7 +52,7 @@ class PropertyNode extends Node {
54
52
  /**
55
53
  * This flag can be used for type testing.
56
54
  *
57
- * @type {Boolean}
55
+ * @type {boolean}
58
56
  * @readonly
59
57
  * @default true
60
58
  */
@@ -72,7 +70,7 @@ class PropertyNode extends Node {
72
70
  * The method is overwritten so it always returns `true`.
73
71
  *
74
72
  * @param {NodeBuilder} builder - The current node builder.
75
- * @return {Boolean} Whether this node is global or not.
73
+ * @return {boolean} Whether this node is global or not.
76
74
  */
77
75
  isGlobal( /*builder*/ ) {
78
76
 
@@ -106,9 +104,10 @@ export default PropertyNode;
106
104
  /**
107
105
  * TSL function for creating a property node.
108
106
  *
107
+ * @tsl
109
108
  * @function
110
- * @param {String} type - The type of the node.
111
- * @param {String?} [name=null] - The name of the property in the shader.
109
+ * @param {string} type - The type of the node.
110
+ * @param {?string} [name=null] - The name of the property in the shader.
112
111
  * @returns {PropertyNode}
113
112
  */
114
113
  export const property = ( type, name ) => nodeObject( new PropertyNode( type, name ) );
@@ -116,9 +115,10 @@ export const property = ( type, name ) => nodeObject( new PropertyNode( type, na
116
115
  /**
117
116
  * TSL function for creating a varying property node.
118
117
  *
118
+ * @tsl
119
119
  * @function
120
- * @param {String} type - The type of the node.
121
- * @param {String?} [name=null] - The name of the varying in the shader.
120
+ * @param {string} type - The type of the node.
121
+ * @param {?string} [name=null] - The name of the varying in the shader.
122
122
  * @returns {PropertyNode}
123
123
  */
124
124
  export const varyingProperty = ( type, name ) => nodeObject( new PropertyNode( type, name, true ) );
@@ -126,6 +126,7 @@ export const varyingProperty = ( type, name ) => nodeObject( new PropertyNode( t
126
126
  /**
127
127
  * TSL object that represents the shader variable `DiffuseColor`.
128
128
  *
129
+ * @tsl
129
130
  * @type {PropertyNode<vec4>}
130
131
  */
131
132
  export const diffuseColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'DiffuseColor' );
@@ -133,6 +134,7 @@ export const diffuseColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', '
133
134
  /**
134
135
  * TSL object that represents the shader variable `EmissiveColor`.
135
136
  *
137
+ * @tsl
136
138
  * @type {PropertyNode<vec3>}
137
139
  */
138
140
  export const emissive = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'EmissiveColor' );
@@ -140,6 +142,7 @@ export const emissive = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'Emis
140
142
  /**
141
143
  * TSL object that represents the shader variable `Roughness`.
142
144
  *
145
+ * @tsl
143
146
  * @type {PropertyNode<float>}
144
147
  */
145
148
  export const roughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Roughness' );
@@ -147,6 +150,7 @@ export const roughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Ro
147
150
  /**
148
151
  * TSL object that represents the shader variable `Metalness`.
149
152
  *
153
+ * @tsl
150
154
  * @type {PropertyNode<float>}
151
155
  */
152
156
  export const metalness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Metalness' );
@@ -154,6 +158,7 @@ export const metalness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Me
154
158
  /**
155
159
  * TSL object that represents the shader variable `Clearcoat`.
156
160
  *
161
+ * @tsl
157
162
  * @type {PropertyNode<float>}
158
163
  */
159
164
  export const clearcoat = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Clearcoat' );
@@ -161,6 +166,7 @@ export const clearcoat = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Cl
161
166
  /**
162
167
  * TSL object that represents the shader variable `ClearcoatRoughness`.
163
168
  *
169
+ * @tsl
164
170
  * @type {PropertyNode<float>}
165
171
  */
166
172
  export const clearcoatRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'ClearcoatRoughness' );
@@ -168,6 +174,7 @@ export const clearcoatRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'fl
168
174
  /**
169
175
  * TSL object that represents the shader variable `Sheen`.
170
176
  *
177
+ * @tsl
171
178
  * @type {PropertyNode<vec3>}
172
179
  */
173
180
  export const sheen = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'Sheen' );
@@ -175,6 +182,7 @@ export const sheen = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'Sheen'
175
182
  /**
176
183
  * TSL object that represents the shader variable `SheenRoughness`.
177
184
  *
185
+ * @tsl
178
186
  * @type {PropertyNode<float>}
179
187
  */
180
188
  export const sheenRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SheenRoughness' );
@@ -182,6 +190,7 @@ export const sheenRoughness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float'
182
190
  /**
183
191
  * TSL object that represents the shader variable `Iridescence`.
184
192
  *
193
+ * @tsl
185
194
  * @type {PropertyNode<float>}
186
195
  */
187
196
  export const iridescence = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Iridescence' );
@@ -189,6 +198,7 @@ export const iridescence = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', '
189
198
  /**
190
199
  * TSL object that represents the shader variable `IridescenceIOR`.
191
200
  *
201
+ * @tsl
192
202
  * @type {PropertyNode<float>}
193
203
  */
194
204
  export const iridescenceIOR = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceIOR' );
@@ -196,6 +206,7 @@ export const iridescenceIOR = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float'
196
206
  /**
197
207
  * TSL object that represents the shader variable `IridescenceThickness`.
198
208
  *
209
+ * @tsl
199
210
  * @type {PropertyNode<float>}
200
211
  */
201
212
  export const iridescenceThickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IridescenceThickness' );
@@ -203,6 +214,7 @@ export const iridescenceThickness = /*@__PURE__*/ nodeImmutable( PropertyNode, '
203
214
  /**
204
215
  * TSL object that represents the shader variable `AlphaT`.
205
216
  *
217
+ * @tsl
206
218
  * @type {PropertyNode<float>}
207
219
  */
208
220
  export const alphaT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AlphaT' );
@@ -210,6 +222,7 @@ export const alphaT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Alpha
210
222
  /**
211
223
  * TSL object that represents the shader variable `Anisotropy`.
212
224
  *
225
+ * @tsl
213
226
  * @type {PropertyNode<float>}
214
227
  */
215
228
  export const anisotropy = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Anisotropy' );
@@ -217,6 +230,7 @@ export const anisotropy = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'A
217
230
  /**
218
231
  * TSL object that represents the shader variable `AnisotropyT`.
219
232
  *
233
+ * @tsl
220
234
  * @type {PropertyNode<vec3>}
221
235
  */
222
236
  export const anisotropyT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyT' );
@@ -224,6 +238,7 @@ export const anisotropyT = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'A
224
238
  /**
225
239
  * TSL object that represents the shader variable `AnisotropyB`.
226
240
  *
241
+ * @tsl
227
242
  * @type {PropertyNode<vec3>}
228
243
  */
229
244
  export const anisotropyB = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'AnisotropyB' );
@@ -231,6 +246,7 @@ export const anisotropyB = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec3', 'A
231
246
  /**
232
247
  * TSL object that represents the shader variable `SpecularColor`.
233
248
  *
249
+ * @tsl
234
250
  * @type {PropertyNode<color>}
235
251
  */
236
252
  export const specularColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'SpecularColor' );
@@ -238,6 +254,7 @@ export const specularColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color',
238
254
  /**
239
255
  * TSL object that represents the shader variable `SpecularF90`.
240
256
  *
257
+ * @tsl
241
258
  * @type {PropertyNode<float>}
242
259
  */
243
260
  export const specularF90 = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'SpecularF90' );
@@ -245,6 +262,7 @@ export const specularF90 = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', '
245
262
  /**
246
263
  * TSL object that represents the shader variable `Shininess`.
247
264
  *
265
+ * @tsl
248
266
  * @type {PropertyNode<float>}
249
267
  */
250
268
  export const shininess = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Shininess' );
@@ -252,6 +270,7 @@ export const shininess = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Sh
252
270
  /**
253
271
  * TSL object that represents the shader variable `Output`.
254
272
  *
273
+ * @tsl
255
274
  * @type {PropertyNode<vec4>}
256
275
  */
257
276
  export const output = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'Output' );
@@ -259,6 +278,7 @@ export const output = /*@__PURE__*/ nodeImmutable( PropertyNode, 'vec4', 'Output
259
278
  /**
260
279
  * TSL object that represents the shader variable `dashSize`.
261
280
  *
281
+ * @tsl
262
282
  * @type {PropertyNode<float>}
263
283
  */
264
284
  export const dashSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'dashSize' );
@@ -266,6 +286,7 @@ export const dashSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'das
266
286
  /**
267
287
  * TSL object that represents the shader variable `gapSize`.
268
288
  *
289
+ * @tsl
269
290
  * @type {PropertyNode<float>}
270
291
  */
271
292
  export const gapSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'gapSize' );
@@ -273,6 +294,7 @@ export const gapSize = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'gapS
273
294
  /**
274
295
  * TSL object that represents the shader variable `pointWidth`.
275
296
  *
297
+ * @tsl
276
298
  * @type {PropertyNode<float>}
277
299
  */
278
300
  export const pointWidth = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'pointWidth' );
@@ -280,6 +302,7 @@ export const pointWidth = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'p
280
302
  /**
281
303
  * TSL object that represents the shader variable `IOR`.
282
304
  *
305
+ * @tsl
283
306
  * @type {PropertyNode<float>}
284
307
  */
285
308
  export const ior = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IOR' );
@@ -287,6 +310,7 @@ export const ior = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'IOR' );
287
310
  /**
288
311
  * TSL object that represents the shader variable `Transmission`.
289
312
  *
313
+ * @tsl
290
314
  * @type {PropertyNode<float>}
291
315
  */
292
316
  export const transmission = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Transmission' );
@@ -294,6 +318,7 @@ export const transmission = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float',
294
318
  /**
295
319
  * TSL object that represents the shader variable `Thickness`.
296
320
  *
321
+ * @tsl
297
322
  * @type {PropertyNode<float>}
298
323
  */
299
324
  export const thickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Thickness' );
@@ -301,6 +326,7 @@ export const thickness = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Th
301
326
  /**
302
327
  * TSL object that represents the shader variable `AttenuationDistance`.
303
328
  *
329
+ * @tsl
304
330
  * @type {PropertyNode<float>}
305
331
  */
306
332
  export const attenuationDistance = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'AttenuationDistance' );
@@ -308,6 +334,7 @@ export const attenuationDistance = /*@__PURE__*/ nodeImmutable( PropertyNode, 'f
308
334
  /**
309
335
  * TSL object that represents the shader variable `AttenuationColor`.
310
336
  *
337
+ * @tsl
311
338
  * @type {PropertyNode<color>}
312
339
  */
313
340
  export const attenuationColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'color', 'AttenuationColor' );
@@ -315,6 +342,7 @@ export const attenuationColor = /*@__PURE__*/ nodeImmutable( PropertyNode, 'colo
315
342
  /**
316
343
  * TSL object that represents the shader variable `Dispersion`.
317
344
  *
345
+ * @tsl
318
346
  * @type {PropertyNode<float>}
319
347
  */
320
348
  export const dispersion = /*@__PURE__*/ nodeImmutable( PropertyNode, 'float', 'Dispersion' );
@@ -2,8 +2,6 @@ import Node from './Node.js';
2
2
  import { select } from '../math/ConditionalNode.js';
3
3
  import { ShaderNode, nodeProxy, getCurrentStack, setCurrentStack } from '../tsl/TSLBase.js';
4
4
 
5
- /** @module StackNode **/
6
-
7
5
  /**
8
6
  * Stack is a helper for Nodes that need to produce stack-based code instead of continuous flow.
9
7
  * They are usually needed in cases like `If`, `Else`.
@@ -21,7 +19,7 @@ class StackNode extends Node {
21
19
  /**
22
20
  * Constructs a new stack node.
23
21
  *
24
- * @param {StackNode?} [parent=null] - The parent stack node.
22
+ * @param {?StackNode} [parent=null] - The parent stack node.
25
23
  */
26
24
  constructor( parent = null ) {
27
25
 
@@ -37,7 +35,7 @@ class StackNode extends Node {
37
35
  /**
38
36
  * The output node.
39
37
  *
40
- * @type {Node?}
38
+ * @type {?Node}
41
39
  * @default null
42
40
  */
43
41
  this.outputNode = null;
@@ -45,7 +43,7 @@ class StackNode extends Node {
45
43
  /**
46
44
  * The parent stack node.
47
45
  *
48
- * @type {StackNode}
46
+ * @type {?StackNode}
49
47
  * @default null
50
48
  */
51
49
  this.parent = parent;
@@ -62,7 +60,7 @@ class StackNode extends Node {
62
60
  /**
63
61
  * This flag can be used for type testing.
64
62
  *
65
- * @type {Boolean}
63
+ * @type {boolean}
66
64
  * @readonly
67
65
  * @default true
68
66
  */
@@ -169,12 +167,12 @@ class StackNode extends Node {
169
167
  * @function
170
168
  * @deprecated since r168. Use {@link StackNode#Else} instead.
171
169
  *
172
- * @param {...any} params
170
+ * @param {...any} params
173
171
  * @returns {StackNode}
174
172
  */
175
173
  else( ...params ) { // @deprecated, r168
176
174
 
177
- console.warn( 'TSL.StackNode: .else() has been renamed to .Else().' );
175
+ console.warn( 'THREE.TSL: .else() has been renamed to .Else().' );
178
176
  return this.Else( ...params );
179
177
 
180
178
  }
@@ -182,12 +180,12 @@ class StackNode extends Node {
182
180
  /**
183
181
  * @deprecated since r168. Use {@link StackNode#ElseIf} instead.
184
182
  *
185
- * @param {...any} params
183
+ * @param {...any} params
186
184
  * @returns {StackNode}
187
185
  */
188
186
  elseif( ...params ) { // @deprecated, r168
189
187
 
190
- console.warn( 'TSL.StackNode: .elseif() has been renamed to .ElseIf().' );
188
+ console.warn( 'THREE.TSL: .elseif() has been renamed to .ElseIf().' );
191
189
  return this.ElseIf( ...params );
192
190
 
193
191
  }
@@ -199,8 +197,9 @@ export default StackNode;
199
197
  /**
200
198
  * TSL function for creating a stack node.
201
199
  *
200
+ * @tsl
202
201
  * @function
203
- * @param {StackNode?} [parent=null] - The parent stack node.
202
+ * @param {?StackNode} [parent=null] - The parent stack node.
204
203
  * @returns {StackNode}
205
204
  */
206
- export const stack = /*@__PURE__*/ nodeProxy( StackNode );
205
+ export const stack = /*@__PURE__*/ nodeProxy( StackNode ).setParameterLength( 0, 1 );
@@ -2,8 +2,6 @@ import Node from './Node.js';
2
2
  import StructTypeNode from './StructTypeNode.js';
3
3
  import { nodeObject } from '../tsl/TSLCore.js';
4
4
 
5
- /** @module StructNode **/
6
-
7
5
  /**
8
6
  * StructNode allows to create custom structures with multiple members.
9
7
  * This can also be used to define structures in attribute and uniform data.
@@ -74,9 +72,10 @@ export default StructNode;
74
72
  /**
75
73
  * TSL function for creating a struct node.
76
74
  *
75
+ * @tsl
77
76
  * @function
78
77
  * @param {Object} membersLayout - The layout of the struct members.
79
- * @param {string} [name=null] - The name of the struct.
78
+ * @param {?string} [name=null] - The name of the struct.
80
79
  * @returns {Function} The struct function.
81
80
  */
82
81
  export const struct = ( membersLayout, name = null ) => {
@@ -2,8 +2,6 @@
2
2
  import Node from './Node.js';
3
3
  import { getLengthFromType } from './NodeUtils.js';
4
4
 
5
- /** @module StructTypeNode **/
6
-
7
5
  /**
8
6
  * Generates a layout for struct members.
9
7
  * This function takes an object representing struct members and returns an array of member layouts.
@@ -48,7 +46,7 @@ class StructTypeNode extends Node {
48
46
  * Creates an instance of StructTypeNode.
49
47
  *
50
48
  * @param {Object} membersLayout - The layout of the members for the struct.
51
- * @param {string} [name=null] - The optional name of the struct.
49
+ * @param {?string} [name=null] - The optional name of the struct.
52
50
  */
53
51
  constructor( membersLayout, name = null ) {
54
52
 
@@ -64,7 +62,7 @@ class StructTypeNode extends Node {
64
62
  /**
65
63
  * The name of the struct.
66
64
  *
67
- * @type {String}
65
+ * @type {?string}
68
66
  * @default null
69
67
  */
70
68
  this.name = name;
@@ -72,7 +70,7 @@ class StructTypeNode extends Node {
72
70
  /**
73
71
  * This flag can be used for type testing.
74
72
  *
75
- * @type {Boolean}
73
+ * @type {boolean}
76
74
  * @readonly
77
75
  * @default true
78
76
  */
@@ -84,7 +82,7 @@ class StructTypeNode extends Node {
84
82
  * Returns the length of the struct.
85
83
  * The length is calculated by summing the lengths of the struct's members.
86
84
  *
87
- * @returns {Number} The length of the struct.
85
+ * @returns {number} The length of the struct.
88
86
  */
89
87
  getLength() {
90
88
 
@@ -116,6 +114,12 @@ class StructTypeNode extends Node {
116
114
 
117
115
  }
118
116
 
117
+ setup( builder ) {
118
+
119
+ builder.addInclude( this );
120
+
121
+ }
122
+
119
123
  generate( builder ) {
120
124
 
121
125
  return this.getNodeType( builder );
@@ -19,7 +19,7 @@ class TempNode extends Node {
19
19
  /**
20
20
  * Constructs a temp node.
21
21
  *
22
- * @param {String?} nodeType - The node type.
22
+ * @param {?string} nodeType - The node type.
23
23
  */
24
24
  constructor( nodeType = null ) {
25
25
 
@@ -28,7 +28,7 @@ class TempNode extends Node {
28
28
  /**
29
29
  * This flag can be used for type testing.
30
30
  *
31
- * @type {Boolean}
31
+ * @type {boolean}
32
32
  * @readonly
33
33
  * @default true
34
34
  */
@@ -40,7 +40,7 @@ class TempNode extends Node {
40
40
  * Whether this node is used more than once in context of other nodes.
41
41
  *
42
42
  * @param {NodeBuilder} builder - The node builder.
43
- * @return {Boolean} A flag that indicates if there is more than one dependency to other nodes.
43
+ * @return {boolean} A flag that indicates if there is more than one dependency to other nodes.
44
44
  */
45
45
  hasDependencies( builder ) {
46
46
 
@@ -1,7 +1,5 @@
1
1
  import Node from './Node.js';
2
2
 
3
- /** @module UniformGroupNode **/
4
-
5
3
  /**
6
4
  * This node can be used to group single instances of {@link UniformNode}
7
5
  * and manage them as a uniform buffer.
@@ -26,9 +24,9 @@ class UniformGroupNode extends Node {
26
24
  /**
27
25
  * Constructs a new uniform group node.
28
26
  *
29
- * @param {String} name - The name of the uniform group node.
30
- * @param {Boolean} [shared=false] - Whether this uniform group node is shared or not.
31
- * @param {Number} [order=1] - Influences the internal sorting.
27
+ * @param {string} name - The name of the uniform group node.
28
+ * @param {boolean} [shared=false] - Whether this uniform group node is shared or not.
29
+ * @param {number} [order=1] - Influences the internal sorting.
32
30
  */
33
31
  constructor( name, shared = false, order = 1 ) {
34
32
 
@@ -37,14 +35,14 @@ class UniformGroupNode extends Node {
37
35
  /**
38
36
  * The name of the uniform group node.
39
37
  *
40
- * @type {String}
38
+ * @type {string}
41
39
  */
42
40
  this.name = name;
43
41
 
44
42
  /**
45
43
  * Whether this uniform group node is shared or not.
46
44
  *
47
- * @type {Boolean}
45
+ * @type {boolean}
48
46
  * @default false
49
47
  */
50
48
  this.shared = shared;
@@ -53,7 +51,7 @@ class UniformGroupNode extends Node {
53
51
  * Influences the internal sorting.
54
52
  * TODO: Add details when this property should be changed.
55
53
  *
56
- * @type {Number}
54
+ * @type {number}
57
55
  * @default 1
58
56
  */
59
57
  this.order = order;
@@ -61,7 +59,7 @@ class UniformGroupNode extends Node {
61
59
  /**
62
60
  * This flag can be used for type testing.
63
61
  *
64
- * @type {Boolean}
62
+ * @type {boolean}
65
63
  * @readonly
66
64
  * @default true
67
65
  */
@@ -96,8 +94,9 @@ export default UniformGroupNode;
96
94
  /**
97
95
  * TSL function for creating a uniform group node with the given name.
98
96
  *
97
+ * @tsl
99
98
  * @function
100
- * @param {String} name - The name of the uniform group node.
99
+ * @param {string} name - The name of the uniform group node.
101
100
  * @returns {UniformGroupNode}
102
101
  */
103
102
  export const uniformGroup = ( name ) => new UniformGroupNode( name );
@@ -105,9 +104,10 @@ export const uniformGroup = ( name ) => new UniformGroupNode( name );
105
104
  /**
106
105
  * TSL function for creating a shared uniform group node with the given name and order.
107
106
  *
107
+ * @tsl
108
108
  * @function
109
- * @param {String} name - The name of the uniform group node.
110
- * @param {Number} [order=0] - Influences the internal sorting.
109
+ * @param {string} name - The name of the uniform group node.
110
+ * @param {number} [order=0] - Influences the internal sorting.
111
111
  * @returns {UniformGroupNode}
112
112
  */
113
113
  export const sharedUniformGroup = ( name, order = 0 ) => new UniformGroupNode( name, true, order );
@@ -115,6 +115,7 @@ export const sharedUniformGroup = ( name, order = 0 ) => new UniformGroupNode( n
115
115
  /**
116
116
  * TSL object that represents a shared uniform group node which is updated once per frame.
117
117
  *
118
+ * @tsl
118
119
  * @type {UniformGroupNode}
119
120
  */
120
121
  export const frameGroup = /*@__PURE__*/ sharedUniformGroup( 'frame' );
@@ -122,6 +123,7 @@ export const frameGroup = /*@__PURE__*/ sharedUniformGroup( 'frame' );
122
123
  /**
123
124
  * TSL object that represents a shared uniform group node which is updated once per render.
124
125
  *
126
+ * @tsl
125
127
  * @type {UniformGroupNode}
126
128
  */
127
129
  export const renderGroup = /*@__PURE__*/ sharedUniformGroup( 'render' );
@@ -129,6 +131,7 @@ export const renderGroup = /*@__PURE__*/ sharedUniformGroup( 'render' );
129
131
  /**
130
132
  * TSL object that represents a uniform group node which is updated once per object.
131
133
  *
134
+ * @tsl
132
135
  * @type {UniformGroupNode}
133
136
  */
134
137
  export const objectGroup = /*@__PURE__*/ uniformGroup( 'object' );
@@ -2,8 +2,6 @@ import InputNode from './InputNode.js';
2
2
  import { objectGroup } from './UniformGroupNode.js';
3
3
  import { nodeObject, getConstNodeType } from '../tsl/TSLCore.js';
4
4
 
5
- /** @module UniformNode **/
6
-
7
5
  /**
8
6
  * Class for representing a uniform.
9
7
  *
@@ -20,8 +18,8 @@ class UniformNode extends InputNode {
20
18
  /**
21
19
  * Constructs a new uniform node.
22
20
  *
23
- * @param {Any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
24
- * @param {String?} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
21
+ * @param {any} value - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
22
+ * @param {?string} nodeType - The node type. If no explicit type is defined, the node tries to derive the type from its value.
25
23
  */
26
24
  constructor( value, nodeType = null ) {
27
25
 
@@ -30,7 +28,7 @@ class UniformNode extends InputNode {
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
  */
@@ -39,7 +37,7 @@ class UniformNode extends InputNode {
39
37
  /**
40
38
  * The name or label of the uniform.
41
39
  *
42
- * @type {String}
40
+ * @type {string}
43
41
  * @default ''
44
42
  */
45
43
  this.name = '';
@@ -58,7 +56,7 @@ class UniformNode extends InputNode {
58
56
  /**
59
57
  * Sets the {@link UniformNode#name} property.
60
58
  *
61
- * @param {String} name - The name of the uniform.
59
+ * @param {string} name - The name of the uniform.
62
60
  * @return {UniformNode} A reference to this node.
63
61
  */
64
62
  label( name ) {
@@ -99,7 +97,7 @@ class UniformNode extends InputNode {
99
97
  * classes might overwrite this method with a different implementation.
100
98
  *
101
99
  * @param {NodeBuilder} builder - The current node builder.
102
- * @return {String} The uniform hash.
100
+ * @return {string} The uniform hash.
103
101
  */
104
102
  getUniformHash( builder ) {
105
103
 
@@ -161,9 +159,10 @@ export default UniformNode;
161
159
  /**
162
160
  * TSL function for creating a uniform node.
163
161
  *
162
+ * @tsl
164
163
  * @function
165
- * @param {Any} arg1 - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
166
- * @param {String?} arg2 - The node type. If no explicit type is defined, the node tries to derive the type from its value.
164
+ * @param {any} arg1 - The value of this node. Usually a JS primitive or three.js object (vector, matrix, color, texture).
165
+ * @param {string} [arg2] - The node type. If no explicit type is defined, the node tries to derive the type from its value.
167
166
  * @returns {UniformNode}
168
167
  */
169
168
  export const uniform = ( arg1, arg2 ) => {