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
@@ -7,14 +7,12 @@ import { maxMipLevel } from '../utils/MaxMipLevelNode.js';
7
7
  import { nodeProxy, vec3, nodeObject, int } from '../tsl/TSLBase.js';
8
8
  import { NodeUpdateType } from '../core/constants.js';
9
9
 
10
- import { IntType, UnsignedIntType } from '../../constants.js';
11
-
12
- /** @module TextureNode **/
10
+ import { IntType, NearestFilter, UnsignedIntType } from '../../constants.js';
13
11
 
14
12
  /**
15
13
  * This type of uniform node represents a 2D texture.
16
14
  *
17
- * @augments module:UniformNode~UniformNode
15
+ * @augments UniformNode
18
16
  */
19
17
  class TextureNode extends UniformNode {
20
18
 
@@ -28,9 +26,9 @@ class TextureNode extends UniformNode {
28
26
  * Constructs a new texture node.
29
27
  *
30
28
  * @param {Texture} value - The texture.
31
- * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
32
- * @param {Node<int>?} [levelNode=null] - The level node.
33
- * @param {Node<float>?} [biasNode=null] - The bias node.
29
+ * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
30
+ * @param {?Node<int>} [levelNode=null] - The level node.
31
+ * @param {?Node<float>} [biasNode=null] - The bias node.
34
32
  */
35
33
  constructor( value, uvNode = null, levelNode = null, biasNode = null ) {
36
34
 
@@ -39,7 +37,7 @@ class TextureNode 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,7 +46,7 @@ class TextureNode extends UniformNode {
48
46
  /**
49
47
  * Represents the texture coordinates.
50
48
  *
51
- * @type {Node<vec2|vec3>?}
49
+ * @type {?Node<vec2|vec3>}
52
50
  * @default null
53
51
  */
54
52
  this.uvNode = uvNode;
@@ -56,7 +54,7 @@ class TextureNode extends UniformNode {
56
54
  /**
57
55
  * Represents the mip level that should be selected.
58
56
  *
59
- * @type {Node<int>?}
57
+ * @type {?Node<int>}
60
58
  * @default null
61
59
  */
62
60
  this.levelNode = levelNode;
@@ -64,7 +62,7 @@ class TextureNode extends UniformNode {
64
62
  /**
65
63
  * Represents the bias to be applied during level-of-detail computation.
66
64
  *
67
- * @type {Node<float>?}
65
+ * @type {?Node<float>}
68
66
  * @default null
69
67
  */
70
68
  this.biasNode = biasNode;
@@ -72,7 +70,7 @@ class TextureNode extends UniformNode {
72
70
  /**
73
71
  * Represents a reference value a texture sample is compared to.
74
72
  *
75
- * @type {Node<float>?}
73
+ * @type {?Node<float>}
76
74
  * @default null
77
75
  */
78
76
  this.compareNode = null;
@@ -80,7 +78,7 @@ class TextureNode extends UniformNode {
80
78
  /**
81
79
  * When using texture arrays, the depth node defines the layer to select.
82
80
  *
83
- * @type {Node<int>?}
81
+ * @type {?Node<int>}
84
82
  * @default null
85
83
  */
86
84
  this.depthNode = null;
@@ -88,7 +86,7 @@ class TextureNode extends UniformNode {
88
86
  /**
89
87
  * When defined, a texture is sampled using explicit gradients.
90
88
  *
91
- * @type {Array<Node<vec2>>?}
89
+ * @type {?Array<Node<vec2>>}
92
90
  * @default null
93
91
  */
94
92
  this.gradNode = null;
@@ -96,7 +94,7 @@ class TextureNode extends UniformNode {
96
94
  /**
97
95
  * Whether texture values should be sampled or fetched.
98
96
  *
99
- * @type {Boolean}
97
+ * @type {boolean}
100
98
  * @default true
101
99
  */
102
100
  this.sampler = true;
@@ -106,7 +104,7 @@ class TextureNode extends UniformNode {
106
104
  * automatically updated or not. Use `setUpdateMatrix()`
107
105
  * if you want to change the value of the property.
108
106
  *
109
- * @type {Boolean}
107
+ * @type {boolean}
110
108
  * @default false
111
109
  */
112
110
  this.updateMatrix = false;
@@ -116,7 +114,7 @@ class TextureNode extends UniformNode {
116
114
  * sets the value to `frame` when the uv transformation matrix should
117
115
  * automatically be updated.
118
116
  *
119
- * @type {String}
117
+ * @type {string}
120
118
  * @default 'none'
121
119
  */
122
120
  this.updateType = NodeUpdateType.NONE;
@@ -124,7 +122,7 @@ class TextureNode extends UniformNode {
124
122
  /**
125
123
  * The reference node.
126
124
  *
127
- * @type {Node?}
125
+ * @type {?Node}
128
126
  * @default null
129
127
  */
130
128
  this.referenceNode = null;
@@ -141,7 +139,7 @@ class TextureNode extends UniformNode {
141
139
  * The uniform node that represents the uv transformation matrix.
142
140
  *
143
141
  * @private
144
- * @type {UniformNode<mat3>?}
142
+ * @type {?UniformNode<mat3>}
145
143
  */
146
144
  this._matrixUniform = null;
147
145
 
@@ -178,7 +176,7 @@ class TextureNode extends UniformNode {
178
176
  * Overwritten since the uniform hash is defined by the texture's UUID.
179
177
  *
180
178
  * @param {NodeBuilder} builder - The current node builder.
181
- * @return {String} The uniform hash.
179
+ * @return {string} The uniform hash.
182
180
  */
183
181
  getUniformHash( /*builder*/ ) {
184
182
 
@@ -190,7 +188,7 @@ class TextureNode extends UniformNode {
190
188
  * Overwritten since the node type is inferred from the texture type.
191
189
  *
192
190
  * @param {NodeBuilder} builder - The current node builder.
193
- * @return {String} The node type.
191
+ * @return {string} The node type.
194
192
  */
195
193
  getNodeType( /*builder*/ ) {
196
194
 
@@ -214,7 +212,7 @@ class TextureNode extends UniformNode {
214
212
  * Overwrites the default implementation to return a fixed value `'texture'`.
215
213
  *
216
214
  * @param {NodeBuilder} builder - The current node builder.
217
- * @return {String} The input type.
215
+ * @return {string} The input type.
218
216
  */
219
217
  getInputType( /*builder*/ ) {
220
218
 
@@ -236,7 +234,7 @@ class TextureNode extends UniformNode {
236
234
  /**
237
235
  * Overwritten to always return the texture reference of the node.
238
236
  *
239
- * @param {Any} state - This method can be invocated in different contexts so `state` can refer to any object type.
237
+ * @param {any} state - This method can be invocated in different contexts so `state` can refer to any object type.
240
238
  * @return {Texture} The texture reference.
241
239
  */
242
240
  updateReference( /*state*/ ) {
@@ -262,7 +260,7 @@ class TextureNode extends UniformNode {
262
260
  /**
263
261
  * Defines whether the uv transformation matrix should automatically be updated or not.
264
262
  *
265
- * @param {Boolean} value - The update toggle.
263
+ * @param {boolean} value - The update toggle.
266
264
  * @return {TextureNode} A reference to this node.
267
265
  */
268
266
  setUpdateMatrix( value ) {
@@ -370,7 +368,7 @@ class TextureNode extends UniformNode {
370
368
  *
371
369
  * @param {NodeBuilder} builder - The current node builder.
372
370
  * @param {Node} uvNode - The uv node to generate code for.
373
- * @return {String} The generated code snippet.
371
+ * @return {string} The generated code snippet.
374
372
  */
375
373
  generateUV( builder, uvNode ) {
376
374
 
@@ -382,14 +380,14 @@ class TextureNode extends UniformNode {
382
380
  * Generates the snippet for the texture sampling.
383
381
  *
384
382
  * @param {NodeBuilder} builder - The current node builder.
385
- * @param {String} textureProperty - The texture property.
386
- * @param {String} uvSnippet - The uv snippet.
387
- * @param {String?} levelSnippet - The level snippet.
388
- * @param {String?} biasSnippet - The bias snippet.
389
- * @param {String?} depthSnippet - The depth snippet.
390
- * @param {String?} compareSnippet - The compare snippet.
391
- * @param {Array<String>?} gradSnippet - The grad snippet.
392
- * @return {String} The generated code snippet.
383
+ * @param {string} textureProperty - The texture property.
384
+ * @param {string} uvSnippet - The uv snippet.
385
+ * @param {?string} levelSnippet - The level snippet.
386
+ * @param {?string} biasSnippet - The bias snippet.
387
+ * @param {?string} depthSnippet - The depth snippet.
388
+ * @param {?string} compareSnippet - The compare snippet.
389
+ * @param {?Array<string>} gradSnippet - The grad snippet.
390
+ * @return {string} The generated code snippet.
393
391
  */
394
392
  generateSnippet( builder, textureProperty, uvSnippet, levelSnippet, biasSnippet, depthSnippet, compareSnippet, gradSnippet ) {
395
393
 
@@ -431,8 +429,8 @@ class TextureNode extends UniformNode {
431
429
  * Generates the code snippet of the texture node.
432
430
  *
433
431
  * @param {NodeBuilder} builder - The current node builder.
434
- * @param {String} output - The current output.
435
- * @return {String} The generated code snippet.
432
+ * @param {string} output - The current output.
433
+ * @return {string} The generated code snippet.
436
434
  */
437
435
  generate( builder, output ) {
438
436
 
@@ -441,7 +439,7 @@ class TextureNode extends UniformNode {
441
439
  const properties = builder.getNodeProperties( this );
442
440
  const textureProperty = super.generate( builder, 'property' );
443
441
 
444
- if ( output === 'sampler' ) {
442
+ if ( /^sampler/.test( output ) ) {
445
443
 
446
444
  return textureProperty + '_sampler';
447
445
 
@@ -497,7 +495,7 @@ class TextureNode extends UniformNode {
497
495
  /**
498
496
  * Sets the sampler value.
499
497
  *
500
- * @param {Boolean} value - The sampler value to set.
498
+ * @param {boolean} value - The sampler value to set.
501
499
  * @return {TextureNode} A reference to this texture node.
502
500
  */
503
501
  setSampler( value ) {
@@ -511,7 +509,7 @@ class TextureNode extends UniformNode {
511
509
  /**
512
510
  * Returns the sampler value.
513
511
  *
514
- * @return {Boolean} The sampler value.
512
+ * @return {boolean} The sampler value.
515
513
  */
516
514
  getSampler() {
517
515
 
@@ -564,6 +562,16 @@ class TextureNode extends UniformNode {
564
562
  textureNode.biasNode = nodeObject( amountNode ).mul( maxMipLevel( textureNode ) );
565
563
  textureNode.referenceNode = this.getSelf();
566
564
 
565
+ const map = textureNode.value;
566
+
567
+ if ( map && map.generateMipmaps === false || map.minFilter === NearestFilter || map.magFilter === NearestFilter ) {
568
+
569
+ console.warn( 'THREE.TSL: texture().blur() requires mipmaps and sampling. Use .generateMipmaps=true and .minFilter/.magFilter=THREE.LinearFilter in the Texture.' );
570
+
571
+ textureNode.biasNode = null;
572
+
573
+ }
574
+
567
575
  return nodeObject( textureNode );
568
576
 
569
577
  }
@@ -724,23 +732,25 @@ export default TextureNode;
724
732
  /**
725
733
  * TSL function for creating a texture node.
726
734
  *
735
+ * @tsl
727
736
  * @function
728
737
  * @param {Texture} value - The texture.
729
- * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
730
- * @param {Node<int>?} [levelNode=null] - The level node.
731
- * @param {Node<float>?} [biasNode=null] - The bias node.
738
+ * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
739
+ * @param {?Node<int>} [levelNode=null] - The level node.
740
+ * @param {?Node<float>} [biasNode=null] - The bias node.
732
741
  * @returns {TextureNode}
733
742
  */
734
- export const texture = /*@__PURE__*/ nodeProxy( TextureNode );
743
+ export const texture = /*@__PURE__*/ nodeProxy( TextureNode ).setParameterLength( 1, 4 );
735
744
 
736
745
  /**
737
746
  * TSL function for creating a texture node that fetches/loads texels without interpolation.
738
747
  *
748
+ * @tsl
739
749
  * @function
740
750
  * @param {Texture} value - The texture.
741
- * @param {Node<vec2|vec3>?} [uvNode=null] - The uv node.
742
- * @param {Node<int>?} [levelNode=null] - The level node.
743
- * @param {Node<float>?} [biasNode=null] - The bias node.
751
+ * @param {?Node<vec2|vec3>} [uvNode=null] - The uv node.
752
+ * @param {?Node<int>} [levelNode=null] - The level node.
753
+ * @param {?Node<float>} [biasNode=null] - The bias node.
744
754
  * @returns {TextureNode}
745
755
  */
746
756
  export const textureLoad = ( ...params ) => texture( ...params ).setSampler( false );
@@ -750,8 +760,19 @@ export const textureLoad = ( ...params ) => texture( ...params ).setSampler( fal
750
760
  /**
751
761
  * Converts a texture or texture node to a sampler.
752
762
  *
763
+ * @tsl
764
+ * @function
765
+ * @param {TextureNode|Texture} value - The texture or texture node to convert.
766
+ * @returns {Node}
767
+ */
768
+ export const sampler = ( value ) => ( value.isNode === true ? value : texture( value ) ).convert( 'sampler' );
769
+
770
+ /**
771
+ * Converts a texture or texture node to a sampler comparison.
772
+ *
773
+ * @tsl
753
774
  * @function
754
- * @param {TextureNode|Texture} aTexture - The texture or texture node to convert.
775
+ * @param {TextureNode|Texture} value - The texture or texture node to convert.
755
776
  * @returns {Node}
756
777
  */
757
- export const sampler = ( aTexture ) => ( aTexture.isNode === true ? aTexture : texture( aTexture ) ).convert( 'sampler' );
778
+ export const samplerComparison = ( value ) => ( value.isNode === true ? value : texture( value ) ).convert( 'samplerComparison' );
@@ -1,8 +1,6 @@
1
1
  import Node from '../core/Node.js';
2
2
  import { nodeProxy } from '../tsl/TSLBase.js';
3
3
 
4
- /** @module TextureSizeNode **/
5
-
6
4
  /**
7
5
  * A node that represents the dimensions of a texture. The texture size is
8
6
  * retrieved in the shader via built-in shader functions like `textureDimensions()`
@@ -22,7 +20,7 @@ class TextureSizeNode extends Node {
22
20
  * Constructs a new texture size node.
23
21
  *
24
22
  * @param {TextureNode} textureNode - A texture node which size should be retrieved.
25
- * @param {Node<int>?} [levelNode=null] - A level node which defines the requested mip.
23
+ * @param {?Node<int>} [levelNode=null] - A level node which defines the requested mip.
26
24
  */
27
25
  constructor( textureNode, levelNode = null ) {
28
26
 
@@ -31,7 +29,7 @@ class TextureSizeNode extends Node {
31
29
  /**
32
30
  * This flag can be used for type testing.
33
31
  *
34
- * @type {Boolean}
32
+ * @type {boolean}
35
33
  * @readonly
36
34
  * @default true
37
35
  */
@@ -70,9 +68,10 @@ export default TextureSizeNode;
70
68
  /**
71
69
  * TSL function for creating a texture size node.
72
70
  *
71
+ * @tsl
73
72
  * @function
74
73
  * @param {TextureNode} textureNode - A texture node which size should be retrieved.
75
- * @param {Node<int>?} [levelNode=null] - A level node which defines the requested mip.
74
+ * @param {?Node<int>} [levelNode=null] - A level node which defines the requested mip.
76
75
  * @returns {TextureSizeNode}
77
76
  */
78
- export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode );
77
+ export const textureSize = /*@__PURE__*/ nodeProxy( TextureSizeNode ).setParameterLength( 1, 2 );
@@ -1,12 +1,11 @@
1
1
  import { attribute } from '../core/AttributeNode.js';
2
2
 
3
- /** @module UV **/
4
-
5
3
  /**
6
4
  * TSL function for creating an uv attribute node with the given index.
7
5
  *
6
+ * @tsl
8
7
  * @function
9
- * @param {Number} [index=0] - The uv index.
8
+ * @param {number} [index=0] - The uv index.
10
9
  * @return {AttributeNode<vec2>} The uv attribute node.
11
10
  */
12
11
  export const uv = ( index = 0 ) => attribute( 'uv' + ( index > 0 ? index : '' ), 'vec2' );
@@ -4,8 +4,6 @@ import { getValueType } from '../core/NodeUtils.js';
4
4
  import ArrayElementNode from '../utils/ArrayElementNode.js';
5
5
  import BufferNode from './BufferNode.js';
6
6
 
7
- /** @module UniformArrayNode **/
8
-
9
7
  /**
10
8
  * Represents the element access on uniform array nodes.
11
9
  *
@@ -32,7 +30,7 @@ class UniformArrayElementNode extends ArrayElementNode {
32
30
  /**
33
31
  * This flag can be used for type testing.
34
32
  *
35
- * @type {Boolean}
33
+ * @type {boolean}
36
34
  * @readonly
37
35
  * @default true
38
36
  */
@@ -53,8 +51,8 @@ class UniformArrayElementNode extends ArrayElementNode {
53
51
  }
54
52
 
55
53
  /**
56
- * Similar to {@link module:BufferNode~BufferNode} this module represents array-like data as
57
- * uniform buffers. Unlike {@link module:BufferNode~BufferNode}, it can handle more common
54
+ * Similar to {@link BufferNode} this module represents array-like data as
55
+ * uniform buffers. Unlike {@link BufferNode}, it can handle more common
58
56
  * data types in the array (e.g `three.js` primitives) and automatically
59
57
  * manage buffer padding. It should be the first choice when working with
60
58
  * uniforms buffers.
@@ -67,7 +65,7 @@ class UniformArrayElementNode extends ArrayElementNode {
67
65
  *
68
66
  * const redColor = tintColors.element( 0 );
69
67
  *
70
- * @augments module:BufferNode~BufferNode
68
+ * @augments BufferNode
71
69
  */
72
70
  class UniformArrayNode extends BufferNode {
73
71
 
@@ -80,26 +78,26 @@ class UniformArrayNode extends BufferNode {
80
78
  /**
81
79
  * Constructs a new uniform array node.
82
80
  *
83
- * @param {Array<Any>} value - Array holding the buffer data.
84
- * @param {String?} [elementType=null] - The data type of a buffer element.
81
+ * @param {Array<any>} value - Array holding the buffer data.
82
+ * @param {?string} [elementType=null] - The data type of a buffer element.
85
83
  */
86
84
  constructor( value, elementType = null ) {
87
85
 
88
86
  super( null );
89
87
 
90
88
  /**
91
- * Array holding the buffer data. Unlike {@link module:BufferNode~BufferNode}, the array can
89
+ * Array holding the buffer data. Unlike {@link BufferNode}, the array can
92
90
  * hold number primitives as well as three.js objects like vectors, matrices
93
91
  * or colors.
94
92
  *
95
- * @type {Array<Any>}
93
+ * @type {Array<any>}
96
94
  */
97
95
  this.array = value;
98
96
 
99
97
  /**
100
98
  * The data type of an array element.
101
99
  *
102
- * @type {String}
100
+ * @type {string}
103
101
  */
104
102
  this.elementType = elementType === null ? getValueType( value[ 0 ] ) : elementType;
105
103
 
@@ -107,14 +105,14 @@ class UniformArrayNode extends BufferNode {
107
105
  * The padded type. Uniform buffers must conform to a certain buffer layout
108
106
  * so a separate type is computed to ensure correct buffer size.
109
107
  *
110
- * @type {String}
108
+ * @type {string}
111
109
  */
112
110
  this.paddedType = this.getPaddedType();
113
111
 
114
112
  /**
115
113
  * Overwritten since uniform array nodes are updated per render.
116
114
  *
117
- * @type {String}
115
+ * @type {string}
118
116
  * @default 'render'
119
117
  */
120
118
  this.updateType = NodeUpdateType.RENDER;
@@ -122,7 +120,7 @@ class UniformArrayNode extends BufferNode {
122
120
  /**
123
121
  * This flag can be used for type testing.
124
122
  *
125
- * @type {Boolean}
123
+ * @type {boolean}
126
124
  * @readonly
127
125
  * @default true
128
126
  */
@@ -132,10 +130,10 @@ class UniformArrayNode extends BufferNode {
132
130
 
133
131
  /**
134
132
  * This method is overwritten since the node type is inferred from the
135
- * {@link module:UniformArrayNode~UniformArrayNode#paddedType}.
133
+ * {@link UniformArrayNode#paddedType}.
136
134
  *
137
135
  * @param {NodeBuilder} builder - The current node builder.
138
- * @return {String} The node type.
136
+ * @return {string} The node type.
139
137
  */
140
138
  getNodeType( /*builder*/ ) {
141
139
 
@@ -147,7 +145,7 @@ class UniformArrayNode extends BufferNode {
147
145
  * The data type of the array elements.
148
146
  *
149
147
  * @param {NodeBuilder} builder - The current node builder.
150
- * @return {String} The element type.
148
+ * @return {string} The element type.
151
149
  */
152
150
  getElementType() {
153
151
 
@@ -158,7 +156,7 @@ class UniformArrayNode extends BufferNode {
158
156
  /**
159
157
  * Returns the padded type based on the element type.
160
158
  *
161
- * @return {String} The padded type.
159
+ * @return {string} The padded type.
162
160
  */
163
161
  getPaddedType() {
164
162
 
@@ -323,7 +321,7 @@ class UniformArrayNode extends BufferNode {
323
321
 
324
322
  /**
325
323
  * Overwrites the default `element()` method to provide element access
326
- * based on {@link module:UniformArrayNode~UniformArrayNode}.
324
+ * based on {@link UniformArrayNode}.
327
325
  *
328
326
  * @param {IndexNode} indexNode - The index node.
329
327
  * @return {UniformArrayElementNode}
@@ -341,24 +339,26 @@ export default UniformArrayNode;
341
339
  /**
342
340
  * TSL function for creating an uniform array node.
343
341
  *
342
+ * @tsl
344
343
  * @function
345
- * @param {Array<Any>} values - Array-like data.
346
- * @param {String?} nodeType - The data type of the array elements.
344
+ * @param {Array<any>} values - Array-like data.
345
+ * @param {?string} [nodeType] - The data type of the array elements.
347
346
  * @returns {UniformArrayNode}
348
347
  */
349
348
  export const uniformArray = ( values, nodeType ) => nodeObject( new UniformArrayNode( values, nodeType ) );
350
349
 
351
350
  /**
351
+ * @tsl
352
352
  * @function
353
353
  * @deprecated since r168. Use {@link uniformArray} instead.
354
354
  *
355
- * @param {Array<Any>} values - Array-like data.
356
- * @param {String} nodeType - The data type of the array elements.
355
+ * @param {Array<any>} values - Array-like data.
356
+ * @param {string} nodeType - The data type of the array elements.
357
357
  * @returns {UniformArrayNode}
358
358
  */
359
359
  export const uniforms = ( values, nodeType ) => { // @deprecated, r168
360
360
 
361
- console.warn( 'TSL.UniformArrayNode: uniforms() has been renamed to uniformArray().' );
361
+ console.warn( 'THREE.TSL: uniforms() has been renamed to uniformArray().' );
362
362
  return nodeObject( new UniformArrayNode( values, nodeType ) );
363
363
 
364
364
  };
@@ -1,8 +1,6 @@
1
1
  import ReferenceNode from './ReferenceNode.js';
2
2
  import { nodeObject } from '../tsl/TSLBase.js';
3
3
 
4
- /** @module UserDataNode **/
5
-
6
4
  /**
7
5
  * A special type of reference node that allows to link values in
8
6
  * `userData` fields to node objects.
@@ -12,10 +10,10 @@ import { nodeObject } from '../tsl/TSLBase.js';
12
10
  * const material = new THREE.SpriteNodeMaterial();
13
11
  * material.rotationNode = userData( 'rotation', 'float' );
14
12
  * ```
15
- * Since `UserDataNode` is extended from {@link module:ReferenceNode~ReferenceNode}, the node value
13
+ * Since `UserDataNode` is extended from {@link ReferenceNode}, the node value
16
14
  * will automatically be updated when the `rotation` user data field changes.
17
15
  *
18
- * @augments module:ReferenceNode~ReferenceNode
16
+ * @augments ReferenceNode
19
17
  */
20
18
  class UserDataNode extends ReferenceNode {
21
19
 
@@ -28,9 +26,9 @@ class UserDataNode extends ReferenceNode {
28
26
  /**
29
27
  * Constructs a new user data node.
30
28
  *
31
- * @param {String} property - The property name that should be referenced by the node.
32
- * @param {String} inputType - The node data type of the reference.
33
- * @param {Object?} [userData=null] - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
29
+ * @param {string} property - The property name that should be referenced by the node.
30
+ * @param {string} inputType - The node data type of the reference.
31
+ * @param {?Object} [userData=null] - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
34
32
  */
35
33
  constructor( property, inputType, userData = null ) {
36
34
 
@@ -40,7 +38,7 @@ class UserDataNode extends ReferenceNode {
40
38
  * A reference to the `userData` object. If not provided, the `userData`
41
39
  * property of the 3D object that uses the node material is evaluated.
42
40
  *
43
- * @type {Object?}
41
+ * @type {?Object}
44
42
  * @default null
45
43
  */
46
44
  this.userData = userData;
@@ -48,7 +46,7 @@ class UserDataNode extends ReferenceNode {
48
46
  }
49
47
 
50
48
  /**
51
- * Overwritten to make sure {@link module:ReferenceNode~ReferenceNode#reference} points to the correct
49
+ * Overwritten to make sure {@link ReferenceNode#reference} points to the correct
52
50
  * `userData` field.
53
51
  *
54
52
  * @param {(NodeFrame|NodeBuilder)} state - The current state to evaluate.
@@ -69,10 +67,11 @@ export default UserDataNode;
69
67
  /**
70
68
  * TSL function for creating a user data node.
71
69
  *
70
+ * @tsl
72
71
  * @function
73
- * @param {String} name - The property name that should be referenced by the node.
74
- * @param {String} inputType - The node data type of the reference.
75
- * @param {Object?} userData - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
72
+ * @param {string} name - The property name that should be referenced by the node.
73
+ * @param {string} inputType - The node data type of the reference.
74
+ * @param {?Object} userData - A reference to the `userData` object. If not provided, the `userData` property of the 3D object that uses the node material is evaluated.
76
75
  * @returns {UserDataNode}
77
76
  */
78
77
  export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );
@@ -11,8 +11,6 @@ import { renderGroup } from '../core/UniformGroupNode.js';
11
11
 
12
12
  const _objectData = new WeakMap();
13
13
 
14
- /** @module VelocityNode **/
15
-
16
14
  /**
17
15
  * A node for representing motion or velocity vectors. Foundation
18
16
  * for advanced post processing effects like motion blur or TRAA.
@@ -41,7 +39,7 @@ class VelocityNode extends TempNode {
41
39
  /**
42
40
  * The current projection matrix.
43
41
  *
44
- * @type {Matrix4?}
42
+ * @type {?Matrix4}
45
43
  * @default null
46
44
  */
47
45
  this.projectionMatrix = null;
@@ -49,7 +47,7 @@ class VelocityNode extends TempNode {
49
47
  /**
50
48
  * Overwritten since velocity nodes are updated per object.
51
49
  *
52
- * @type {String}
50
+ * @type {string}
53
51
  * @default 'object'
54
52
  */
55
53
  this.updateType = NodeUpdateType.OBJECT;
@@ -57,7 +55,7 @@ class VelocityNode extends TempNode {
57
55
  /**
58
56
  * Overwritten since velocity nodes save data after the update.
59
57
  *
60
- * @type {String}
58
+ * @type {string}
61
59
  * @default 'object'
62
60
  */
63
61
  this.updateAfterType = NodeUpdateType.OBJECT;
@@ -219,6 +217,7 @@ export default VelocityNode;
219
217
  /**
220
218
  * TSL object that represents the velocity of a render pass.
221
219
  *
220
+ * @tsl
222
221
  * @type {VelocityNode}
223
222
  */
224
223
  export const velocity = /*@__PURE__*/ nodeImmutable( VelocityNode );