@plastic-software/three 0.174.0 → 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 (544) hide show
  1. package/build/three.cjs +10655 -1446
  2. package/build/three.core.js +9626 -1094
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +834 -157
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +4 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +2658 -1697
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +2654 -1709
  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 +93 -39
  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 +171 -48
  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 +71 -29
  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 +41 -3
  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 +35 -0
  94. package/examples/jsm/loaders/DDSLoader.js +24 -0
  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 +42 -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 +218 -5
  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 +86 -18
  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 +38 -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 +81 -61
  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 +79 -2
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +108 -72
  162. package/examples/jsm/misc/VolumeSlice.js +88 -45
  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 +70 -0
  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 +131 -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 +266 -133
  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/Transpiler.js +31 -0
  273. package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
  274. package/examples/jsm/tsl/display/BloomNode.js +1 -1
  275. package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
  276. package/examples/jsm/tsl/display/SSRNode.js +1 -1
  277. package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
  278. package/examples/jsm/tsl/math/Bayer.js +14 -1
  279. package/examples/jsm/tsl/utils/Raymarching.js +4 -2
  280. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  281. package/examples/jsm/utils/CameraUtils.js +10 -7
  282. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  283. package/examples/jsm/utils/GeometryUtils.js +12 -13
  284. package/examples/jsm/utils/LDrawUtils.js +11 -4
  285. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  286. package/examples/jsm/utils/SceneUtils.js +50 -3
  287. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  288. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  289. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  290. package/examples/jsm/utils/SortUtils.js +14 -5
  291. package/examples/jsm/utils/UVsDebug.js +9 -4
  292. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  293. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  294. package/examples/jsm/utils/WorkerPool.js +65 -2
  295. package/examples/jsm/webxr/ARButton.js +18 -0
  296. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  297. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  298. package/examples/jsm/webxr/Text2D.js +11 -0
  299. package/examples/jsm/webxr/VRButton.js +30 -0
  300. package/examples/jsm/webxr/XRButton.js +22 -0
  301. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  302. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  303. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  304. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  305. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  306. package/examples/jsm/webxr/XRPlanes.js +17 -0
  307. package/package.json +1 -1
  308. package/src/Three.TSL.js +3 -1
  309. package/src/animation/AnimationAction.js +262 -30
  310. package/src/animation/AnimationClip.js +141 -2
  311. package/src/animation/AnimationMixer.js +99 -15
  312. package/src/animation/AnimationObjectGroup.js +41 -18
  313. package/src/animation/AnimationUtils.js +168 -18
  314. package/src/animation/KeyframeTrack.js +144 -10
  315. package/src/animation/PropertyBinding.js +77 -3
  316. package/src/animation/PropertyMixer.js +72 -5
  317. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  318. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  319. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  320. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  321. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  322. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  323. package/src/audio/AudioAnalyser.js +1 -1
  324. package/src/audio/AudioListener.js +2 -2
  325. package/src/audio/PositionalAudio.js +5 -5
  326. package/src/constants.js +1429 -5
  327. package/src/core/BufferAttribute.js +413 -3
  328. package/src/core/BufferGeometry.js +337 -1
  329. package/src/core/Clock.js +60 -0
  330. package/src/core/GLBufferAttribute.js +99 -0
  331. package/src/core/InstancedBufferAttribute.js +29 -0
  332. package/src/core/InstancedBufferGeometry.js +20 -0
  333. package/src/core/InstancedInterleavedBuffer.js +26 -0
  334. package/src/core/InterleavedBuffer.js +137 -3
  335. package/src/core/InterleavedBufferAttribute.js +197 -0
  336. package/src/core/Layers.js +71 -10
  337. package/src/core/Object3D.js +23 -0
  338. package/src/core/Raycaster.js +134 -1
  339. package/src/core/RenderTarget.js +166 -7
  340. package/src/core/RenderTarget3D.js +25 -0
  341. package/src/core/RenderTargetArray.js +18 -0
  342. package/src/core/Uniform.js +29 -0
  343. package/src/core/UniformsGroup.js +84 -2
  344. package/src/extras/Controls.js +16 -1
  345. package/src/extras/Earcut.js +3 -781
  346. package/src/extras/ImageUtils.js +3 -2
  347. package/src/extras/PMREMGenerator.js +22 -17
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/extras/core/Path.js +1 -1
  350. package/src/extras/lib/earcut.js +685 -0
  351. package/src/geometries/ConeGeometry.js +2 -2
  352. package/src/geometries/CylinderGeometry.js +2 -2
  353. package/src/geometries/ExtrudeGeometry.js +71 -39
  354. package/src/geometries/LatheGeometry.js +1 -1
  355. package/src/lights/LightShadow.js +1 -1
  356. package/src/lights/webgpu/IESSpotLight.js +1 -1
  357. package/src/loaders/AnimationLoader.js +31 -0
  358. package/src/loaders/AudioLoader.js +31 -0
  359. package/src/loaders/BufferGeometryLoader.js +34 -0
  360. package/src/loaders/Cache.js +45 -0
  361. package/src/loaders/CompressedTextureLoader.js +36 -3
  362. package/src/loaders/CubeTextureLoader.js +45 -0
  363. package/src/loaders/DataTextureLoader.js +44 -3
  364. package/src/loaders/FileLoader.js +57 -1
  365. package/src/loaders/ImageBitmapLoader.js +57 -0
  366. package/src/loaders/ImageLoader.js +30 -0
  367. package/src/loaders/Loader.js +4 -6
  368. package/src/loaders/LoaderUtils.js +18 -36
  369. package/src/loaders/LoadingManager.js +142 -0
  370. package/src/loaders/MaterialLoader.js +57 -0
  371. package/src/loaders/ObjectLoader.js +53 -0
  372. package/src/loaders/TextureLoader.js +33 -0
  373. package/src/loaders/nodes/NodeLoader.js +6 -2
  374. package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
  375. package/src/loaders/nodes/NodeObjectLoader.js +3 -3
  376. package/src/materials/LineBasicMaterial.js +74 -1
  377. package/src/materials/LineDashedMaterial.js +52 -0
  378. package/src/materials/Material.js +18 -3
  379. package/src/materials/MeshBasicMaterial.js +165 -0
  380. package/src/materials/MeshDepthMaterial.js +93 -0
  381. package/src/materials/MeshDistanceMaterial.js +76 -0
  382. package/src/materials/MeshLambertMaterial.js +273 -0
  383. package/src/materials/MeshMatcapMaterial.js +142 -0
  384. package/src/materials/MeshNormalMaterial.js +113 -0
  385. package/src/materials/MeshPhongMaterial.js +288 -0
  386. package/src/materials/MeshPhysicalMaterial.js +292 -1
  387. package/src/materials/MeshStandardMaterial.js +297 -0
  388. package/src/materials/MeshToonMaterial.js +218 -0
  389. package/src/materials/PointsMaterial.js +89 -0
  390. package/src/materials/RawShaderMaterial.js +25 -0
  391. package/src/materials/ShaderMaterial.js +215 -6
  392. package/src/materials/ShadowMaterial.js +54 -0
  393. package/src/materials/SpriteMaterial.js +82 -0
  394. package/src/materials/nodes/Line2NodeMaterial.js +1 -1
  395. package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
  396. package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
  397. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  398. package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
  399. package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
  400. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  401. package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
  402. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
  403. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  404. package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
  405. package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
  406. package/src/materials/nodes/NodeMaterial.js +7 -3
  407. package/src/materials/nodes/PointsNodeMaterial.js +1 -1
  408. package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
  409. package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
  410. package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
  411. package/src/math/Color.js +1 -1
  412. package/src/math/MathUtils.js +223 -0
  413. package/src/nodes/Nodes.js +1 -0
  414. package/src/nodes/accessors/BatchNode.js +8 -8
  415. package/src/nodes/accessors/BuiltinNode.js +1 -1
  416. package/src/nodes/accessors/CubeTextureNode.js +1 -1
  417. package/src/nodes/accessors/InstanceNode.js +5 -5
  418. package/src/nodes/accessors/InstancedMeshNode.js +1 -1
  419. package/src/nodes/accessors/MorphNode.js +27 -23
  420. package/src/nodes/accessors/Normal.js +1 -1
  421. package/src/nodes/accessors/Object3DNode.js +12 -12
  422. package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
  423. package/src/nodes/accessors/ReferenceNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +46 -37
  425. package/src/nodes/accessors/StorageBufferNode.js +1 -1
  426. package/src/nodes/accessors/StorageTextureNode.js +3 -3
  427. package/src/nodes/accessors/Texture3DNode.js +1 -1
  428. package/src/nodes/accessors/TextureNode.js +25 -5
  429. package/src/nodes/accessors/TextureSizeNode.js +1 -1
  430. package/src/nodes/accessors/UniformArrayNode.js +2 -2
  431. package/src/nodes/code/CodeNode.js +4 -4
  432. package/src/nodes/code/ExpressionNode.js +4 -4
  433. package/src/nodes/code/FunctionCallNode.js +23 -3
  434. package/src/nodes/code/ScriptableNode.js +4 -4
  435. package/src/nodes/code/ScriptableValueNode.js +2 -2
  436. package/src/nodes/core/AssignNode.js +1 -1
  437. package/src/nodes/core/AttributeNode.js +1 -1
  438. package/src/nodes/core/BypassNode.js +1 -1
  439. package/src/nodes/core/CacheNode.js +1 -1
  440. package/src/nodes/core/ContextNode.js +1 -1
  441. package/src/nodes/core/InputNode.js +2 -2
  442. package/src/nodes/core/Node.js +14 -2
  443. package/src/nodes/core/NodeBuilder.js +86 -14
  444. package/src/nodes/core/StackNode.js +5 -5
  445. package/src/nodes/core/StructNode.js +1 -1
  446. package/src/nodes/core/StructTypeNode.js +2 -2
  447. package/src/nodes/core/VarNode.js +2 -8
  448. package/src/nodes/core/VaryingNode.js +3 -3
  449. package/src/nodes/display/BlendModes.js +4 -4
  450. package/src/nodes/display/BumpMapNode.js +1 -1
  451. package/src/nodes/display/NormalMapNode.js +1 -1
  452. package/src/nodes/display/PosterizeNode.js +1 -1
  453. package/src/nodes/display/ScreenNode.js +3 -3
  454. package/src/nodes/display/ViewportDepthNode.js +2 -2
  455. package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
  456. package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
  457. package/src/nodes/display/ViewportTextureNode.js +4 -4
  458. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  459. package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
  460. package/src/nodes/geometry/RangeNode.js +1 -1
  461. package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
  462. package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
  463. package/src/nodes/gpgpu/ComputeNode.js +30 -2
  464. package/src/nodes/lighting/AnalyticLightNode.js +9 -1
  465. package/src/nodes/lighting/LightsNode.js +3 -3
  466. package/src/nodes/lighting/ShadowNode.js +1 -1
  467. package/src/nodes/math/ConditionalNode.js +20 -3
  468. package/src/nodes/math/MathNode.js +83 -78
  469. package/src/nodes/math/OperatorNode.js +171 -82
  470. package/src/nodes/pmrem/PMREMNode.js +4 -4
  471. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  472. package/src/nodes/tsl/TSLBase.js +2 -1
  473. package/src/nodes/tsl/TSLCore.js +115 -12
  474. package/src/nodes/utils/ArrayElementNode.js +3 -1
  475. package/src/nodes/utils/CubeMapNode.js +3 -3
  476. package/src/nodes/utils/DebugNode.js +70 -0
  477. package/src/nodes/utils/EquirectUVNode.js +2 -2
  478. package/src/nodes/utils/JoinNode.js +27 -2
  479. package/src/nodes/utils/LoopNode.js +58 -28
  480. package/src/nodes/utils/MaxMipLevelNode.js +1 -1
  481. package/src/nodes/utils/ReflectorNode.js +2 -2
  482. package/src/nodes/utils/RemapNode.js +6 -6
  483. package/src/nodes/utils/RotateNode.js +1 -1
  484. package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
  485. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  486. package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
  487. package/src/objects/BatchedMesh.js +4 -4
  488. package/src/objects/InstancedMesh.js +2 -2
  489. package/src/objects/LOD.js +1 -1
  490. package/src/objects/Skeleton.js +1 -1
  491. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  492. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  493. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  494. package/src/renderers/WebGLRenderTarget.js +19 -0
  495. package/src/renderers/WebGLRenderer.js +617 -79
  496. package/src/renderers/common/Animation.js +2 -2
  497. package/src/renderers/common/Attributes.js +2 -2
  498. package/src/renderers/common/Backend.js +12 -3
  499. package/src/renderers/common/Background.js +1 -0
  500. package/src/renderers/common/Color4.js +1 -1
  501. package/src/renderers/common/CubeRenderTarget.js +13 -0
  502. package/src/renderers/common/PostProcessing.js +2 -0
  503. package/src/renderers/common/QuadMesh.js +2 -0
  504. package/src/renderers/common/RenderList.js +2 -2
  505. package/src/renderers/common/RenderObject.js +1 -1
  506. package/src/renderers/common/RenderObjects.js +2 -2
  507. package/src/renderers/common/Renderer.js +52 -31
  508. package/src/renderers/common/XRManager.js +333 -10
  509. package/src/renderers/common/extras/PMREMGenerator.js +6 -0
  510. package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
  511. package/src/renderers/shaders/UniformsLib.js +1 -4
  512. package/src/renderers/shaders/UniformsUtils.js +1 -3
  513. package/src/renderers/webgl/WebGLBackground.js +4 -2
  514. package/src/renderers/webgl/WebGLState.js +9 -9
  515. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  516. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  517. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  518. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  519. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  520. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  521. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  522. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  523. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  524. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  525. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  526. package/src/renderers/webxr/WebXRController.js +87 -2
  527. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  528. package/src/renderers/webxr/WebXRManager.js +173 -1
  529. package/src/scenes/Scene.js +2 -1
  530. package/src/textures/CanvasTexture.js +28 -0
  531. package/src/textures/CompressedArrayTexture.js +57 -0
  532. package/src/textures/CompressedCubeTexture.js +29 -0
  533. package/src/textures/CompressedTexture.js +64 -6
  534. package/src/textures/CubeTexture.js +52 -4
  535. package/src/textures/Data3DTexture.js +77 -0
  536. package/src/textures/DataArrayTexture.js +93 -0
  537. package/src/textures/DataTexture.js +65 -0
  538. package/src/textures/DepthTexture.js +59 -9
  539. package/src/textures/FramebufferTexture.js +62 -0
  540. package/src/textures/Source.js +69 -0
  541. package/src/textures/Texture.js +5 -5
  542. package/src/textures/VideoFrameTexture.js +43 -6
  543. package/src/textures/VideoTexture.js +49 -4
  544. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -10,7 +10,7 @@ import { MeshMatcapMaterial } from '../MeshMatcapMaterial.js';
10
10
  const _defaultValues = /*@__PURE__*/ new MeshMatcapMaterial();
11
11
 
12
12
  /**
13
- * Node material version of `MeshMatcapMaterial`.
13
+ * Node material version of {@link MeshMatcapMaterial}.
14
14
  *
15
15
  * @augments NodeMaterial
16
16
  */
@@ -25,7 +25,7 @@ class MeshMatcapNodeMaterial extends NodeMaterial {
25
25
  /**
26
26
  * Constructs a new mesh normal node material.
27
27
  *
28
- * @param {?Object} parameters - The configuration parameter.
28
+ * @param {Object} [parameters] - The configuration parameter.
29
29
  */
30
30
  constructor( parameters ) {
31
31
 
@@ -12,7 +12,7 @@ import { MeshNormalMaterial } from '../MeshNormalMaterial.js';
12
12
  const _defaultValues = /*@__PURE__*/ new MeshNormalMaterial();
13
13
 
14
14
  /**
15
- * Node material version of `MeshNormalMaterial`.
15
+ * Node material version of {@link MeshNormalMaterial}.
16
16
  *
17
17
  * @augments NodeMaterial
18
18
  */
@@ -27,7 +27,7 @@ class MeshNormalNodeMaterial extends NodeMaterial {
27
27
  /**
28
28
  * Constructs a new mesh normal node material.
29
29
  *
30
- * @param {?Object} parameters - The configuration parameter.
30
+ * @param {Object} [parameters] - The configuration parameter.
31
31
  */
32
32
  constructor( parameters ) {
33
33
 
@@ -10,7 +10,7 @@ import { MeshPhongMaterial } from '../MeshPhongMaterial.js';
10
10
  const _defaultValues = /*@__PURE__*/ new MeshPhongMaterial();
11
11
 
12
12
  /**
13
- * Node material version of `MeshPhongMaterial`.
13
+ * Node material version of {@link MeshPhongMaterial}.
14
14
  *
15
15
  * @augments NodeMaterial
16
16
  */
@@ -25,7 +25,7 @@ class MeshPhongNodeMaterial extends NodeMaterial {
25
25
  /**
26
26
  * Constructs a new mesh lambert node material.
27
27
  *
28
- * @param {?Object} parameters - The configuration parameter.
28
+ * @param {Object} [parameters] - The configuration parameter.
29
29
  */
30
30
  constructor( parameters ) {
31
31
 
@@ -12,7 +12,7 @@ import { MeshPhysicalMaterial } from '../MeshPhysicalMaterial.js';
12
12
  const _defaultValues = /*@__PURE__*/ new MeshPhysicalMaterial();
13
13
 
14
14
  /**
15
- * Node material version of `MeshPhysicalMaterial`.
15
+ * Node material version of {@link MeshPhysicalMaterial}.
16
16
  *
17
17
  * @augments MeshStandardNodeMaterial
18
18
  */
@@ -27,7 +27,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
27
27
  /**
28
28
  * Constructs a new mesh physical node material.
29
29
  *
30
- * @param {?Object} parameters - The configuration parameter.
30
+ * @param {Object} [parameters] - The configuration parameter.
31
31
  */
32
32
  constructor( parameters ) {
33
33
 
@@ -83,7 +83,7 @@ class MeshSSSNodeMaterial extends MeshPhysicalNodeMaterial {
83
83
  /**
84
84
  * Constructs a new mesh SSS node material.
85
85
  *
86
- * @param {?Object} parameters - The configuration parameter.
86
+ * @param {Object} [parameters] - The configuration parameter.
87
87
  */
88
88
  constructor( parameters ) {
89
89
 
@@ -12,7 +12,7 @@ import { MeshStandardMaterial } from '../MeshStandardMaterial.js';
12
12
  const _defaultValues = /*@__PURE__*/ new MeshStandardMaterial();
13
13
 
14
14
  /**
15
- * Node material version of `MeshStandardMaterial`.
15
+ * Node material version of {@link MeshStandardMaterial}.
16
16
  *
17
17
  * @augments NodeMaterial
18
18
  */
@@ -27,7 +27,7 @@ class MeshStandardNodeMaterial extends NodeMaterial {
27
27
  /**
28
28
  * Constructs a new mesh standard node material.
29
29
  *
30
- * @param {?Object} parameters - The configuration parameter.
30
+ * @param {Object} [parameters] - The configuration parameter.
31
31
  */
32
32
  constructor( parameters ) {
33
33
 
@@ -6,7 +6,7 @@ import { MeshToonMaterial } from '../MeshToonMaterial.js';
6
6
  const _defaultValues = /*@__PURE__*/ new MeshToonMaterial();
7
7
 
8
8
  /**
9
- * Node material version of `MeshToonMaterial`.
9
+ * Node material version of {@link MeshToonMaterial}.
10
10
  *
11
11
  * @augments NodeMaterial
12
12
  */
@@ -21,7 +21,7 @@ class MeshToonNodeMaterial extends NodeMaterial {
21
21
  /**
22
22
  * Constructs a new mesh toon node material.
23
23
  *
24
- * @param {?Object} parameters - The configuration parameter.
24
+ * @param {Object} [parameters] - The configuration parameter.
25
25
  */
26
26
  constructor( parameters ) {
27
27
 
@@ -11,7 +11,7 @@ import { instancedMesh } from '../../nodes/accessors/InstancedMeshNode.js';
11
11
  import { batch } from '../../nodes/accessors/BatchNode.js';
12
12
  import { materialReference } from '../../nodes/accessors/MaterialReferenceNode.js';
13
13
  import { positionLocal, positionView } from '../../nodes/accessors/Position.js';
14
- import { skinningReference } from '../../nodes/accessors/SkinningNode.js';
14
+ import { skinning } from '../../nodes/accessors/SkinningNode.js';
15
15
  import { morphReference } from '../../nodes/accessors/MorphNode.js';
16
16
  import { mix } from '../../nodes/math/MathNode.js';
17
17
  import { float, vec3, vec4 } from '../../nodes/tsl/TSLBase.js';
@@ -476,7 +476,9 @@ class NodeMaterial extends Material {
476
476
 
477
477
  //
478
478
 
479
- if ( this.outputNode !== null ) resultNode = this.outputNode;
479
+ const isCustomOutput = this.outputNode !== null;
480
+
481
+ if ( isCustomOutput ) resultNode = this.outputNode;
480
482
 
481
483
  // MRT
482
484
 
@@ -487,6 +489,8 @@ class NodeMaterial extends Material {
487
489
 
488
490
  if ( mrt !== null ) {
489
491
 
492
+ if ( isCustomOutput ) output.assign( resultNode );
493
+
490
494
  resultNode = mrt;
491
495
 
492
496
  if ( materialMRT !== null ) {
@@ -695,7 +699,7 @@ class NodeMaterial extends Material {
695
699
 
696
700
  if ( object.isSkinnedMesh === true ) {
697
701
 
698
- skinningReference( object ).append();
702
+ skinning( object ).append();
699
703
 
700
704
  }
701
705
 
@@ -11,7 +11,7 @@ import { PointsMaterial } from '../PointsMaterial.js';
11
11
  const _defaultValues = /*@__PURE__*/ new PointsMaterial();
12
12
 
13
13
  /**
14
- * Node material version of `PointsMaterial`.
14
+ * Node material version of {@link PointsMaterial}.
15
15
  *
16
16
  * @augments SpriteNodeMaterial
17
17
  */
@@ -6,7 +6,7 @@ import { ShadowMaterial } from '../ShadowMaterial.js';
6
6
  const _defaultValues = /*@__PURE__*/ new ShadowMaterial();
7
7
 
8
8
  /**
9
- * Node material version of `ShadowMaterial`.
9
+ * Node material version of {@link ShadowMaterial}.
10
10
  *
11
11
  * @augments NodeMaterial
12
12
  */
@@ -21,7 +21,7 @@ class ShadowNodeMaterial extends NodeMaterial {
21
21
  /**
22
22
  * Constructs a new shadow node material.
23
23
  *
24
- * @param {?Object} parameters - The configuration parameter.
24
+ * @param {Object} [parameters] - The configuration parameter.
25
25
  */
26
26
  constructor( parameters ) {
27
27
 
@@ -45,6 +45,15 @@ class ShadowNodeMaterial extends NodeMaterial {
45
45
  */
46
46
  this.lights = true;
47
47
 
48
+ /**
49
+ * Overwritten since shadow materials are transparent
50
+ * by default.
51
+ *
52
+ * @type {boolean}
53
+ * @default true
54
+ */
55
+ this.transparent = true;
56
+
48
57
  this.setDefaultValues( _defaultValues );
49
58
 
50
59
  this.setValues( parameters );
@@ -12,7 +12,7 @@ import { reference } from '../../nodes/accessors/ReferenceBaseNode.js';
12
12
  const _defaultValues = /*@__PURE__*/ new SpriteMaterial();
13
13
 
14
14
  /**
15
- * Node material version of `SpriteMaterial`.
15
+ * Node material version of {@link SpriteMaterial}.
16
16
  *
17
17
  * @augments NodeMaterial
18
18
  */
@@ -18,7 +18,7 @@ class VolumeNodeMaterial extends NodeMaterial {
18
18
  /**
19
19
  * Constructs a new volume node material.
20
20
  *
21
- * @param {?Object} parameters - The configuration parameter.
21
+ * @param {Object} [parameters] - The configuration parameter.
22
22
  */
23
23
  constructor( parameters ) {
24
24
 
@@ -41,6 +41,15 @@ class VolumeNodeMaterial extends NodeMaterial {
41
41
  */
42
42
  this.steps = 25;
43
43
 
44
+ /**
45
+ * Offsets the distance a ray has been traveled through a volume.
46
+ * Can be used to implement dithering to reduce banding.
47
+ *
48
+ * @type {Node<float>}
49
+ * @default null
50
+ */
51
+ this.offsetNode = null;
52
+
44
53
  /**
45
54
  * Node used for scattering calculations.
46
55
  *
package/src/math/Color.js CHANGED
@@ -559,7 +559,7 @@ class Color {
559
559
  * Converts the colors RGB values into the HSL format and stores them into the
560
560
  * given target object.
561
561
  *
562
- * @param {{h:0,s:0,l:0}} target - The target object that is used to store the method's result.
562
+ * @param {{h:number,s:number,l:number}} target - The target object that is used to store the method's result.
563
563
  * @param {string} [colorSpace=ColorManagement.workingColorSpace] - The color space.
564
564
  * @return {{h:number,s:number,l:number}} The HSL representation of this color.
565
565
  */
@@ -470,30 +470,253 @@ function normalize( value, array ) {
470
470
 
471
471
  }
472
472
 
473
+ /**
474
+ * @class
475
+ * @classdesc A collection of math utility functions.
476
+ * @hideconstructor
477
+ */
473
478
  const MathUtils = {
474
479
  DEG2RAD: DEG2RAD,
475
480
  RAD2DEG: RAD2DEG,
481
+ /**
482
+ * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}
483
+ * (universally unique identifier).
484
+ *
485
+ * @static
486
+ * @method
487
+ * @return {string} The UUID.
488
+ */
476
489
  generateUUID: generateUUID,
490
+ /**
491
+ * Clamps the given value between min and max.
492
+ *
493
+ * @static
494
+ * @method
495
+ * @param {number} value - The value to clamp.
496
+ * @param {number} min - The min value.
497
+ * @param {number} max - The max value.
498
+ * @return {number} The clamped value.
499
+ */
477
500
  clamp: clamp,
501
+ /**
502
+ * Computes the Euclidean modulo of the given parameters that
503
+ * is `( ( n % m ) + m ) % m`.
504
+ *
505
+ * @static
506
+ * @method
507
+ * @param {number} n - The first parameter.
508
+ * @param {number} m - The second parameter.
509
+ * @return {number} The Euclidean modulo.
510
+ */
478
511
  euclideanModulo: euclideanModulo,
512
+ /**
513
+ * Performs a linear mapping from range `<a1, a2>` to range `<b1, b2>`
514
+ * for the given value.
515
+ *
516
+ * @static
517
+ * @method
518
+ * @param {number} x - The value to be mapped.
519
+ * @param {number} a1 - Minimum value for range A.
520
+ * @param {number} a2 - Maximum value for range A.
521
+ * @param {number} b1 - Minimum value for range B.
522
+ * @param {number} b2 - Maximum value for range B.
523
+ * @return {number} The mapped value.
524
+ */
479
525
  mapLinear: mapLinear,
526
+ /**
527
+ * Returns the percentage in the closed interval `[0, 1]` of the given value
528
+ * between the start and end point.
529
+ *
530
+ * @static
531
+ * @method
532
+ * @param {number} x - The start point
533
+ * @param {number} y - The end point.
534
+ * @param {number} value - A value between start and end.
535
+ * @return {number} The interpolation factor.
536
+ */
480
537
  inverseLerp: inverseLerp,
538
+ /**
539
+ * Returns a value linearly interpolated from two known points based on the given interval -
540
+ * `t = 0` will return `x` and `t = 1` will return `y`.
541
+ *
542
+ * @static
543
+ * @method
544
+ * @param {number} x - The start point
545
+ * @param {number} y - The end point.
546
+ * @param {number} t - The interpolation factor in the closed interval `[0, 1]`.
547
+ * @return {number} The interpolated value.
548
+ */
481
549
  lerp: lerp,
550
+ /**
551
+ * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta
552
+ * time to maintain frame rate independent movement. For details, see
553
+ * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.
554
+ *
555
+ * @static
556
+ * @method
557
+ * @param {number} x - The current point.
558
+ * @param {number} y - The target point.
559
+ * @param {number} lambda - A higher lambda value will make the movement more sudden,
560
+ * and a lower value will make the movement more gradual.
561
+ * @param {number} dt - Delta time in seconds.
562
+ * @return {number} The interpolated value.
563
+ */
482
564
  damp: damp,
565
+ /**
566
+ * Returns a value that alternates between `0` and the given `length` parameter.
567
+ *
568
+ * @static
569
+ * @method
570
+ * @param {number} x - The value to pingpong.
571
+ * @param {number} [length=1] - The positive value the function will pingpong to.
572
+ * @return {number} The alternated value.
573
+ */
483
574
  pingpong: pingpong,
575
+ /**
576
+ * Returns a value in the range `[0,1]` that represents the percentage that `x` has
577
+ * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to
578
+ * the `min` and `max`.
579
+ *
580
+ * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.
581
+ *
582
+ * @static
583
+ * @method
584
+ * @param {number} x - The value to evaluate based on its position between min and max.
585
+ * @param {number} min - The min value. Any x value below min will be `0`.
586
+ * @param {number} max - The max value. Any x value above max will be `1`.
587
+ * @return {number} The alternated value.
588
+ */
484
589
  smoothstep: smoothstep,
590
+ /**
591
+ * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}
592
+ * that has zero 1st and 2nd order derivatives at x=0 and x=1.
593
+ *
594
+ * @static
595
+ * @method
596
+ * @param {number} x - The value to evaluate based on its position between min and max.
597
+ * @param {number} min - The min value. Any x value below min will be `0`.
598
+ * @param {number} max - The max value. Any x value above max will be `1`.
599
+ * @return {number} The alternated value.
600
+ */
485
601
  smootherstep: smootherstep,
602
+ /**
603
+ * Returns a random integer from `<low, high>` interval.
604
+ *
605
+ * @static
606
+ * @method
607
+ * @param {number} low - The lower value boundary.
608
+ * @param {number} high - The upper value boundary
609
+ * @return {number} A random integer.
610
+ */
486
611
  randInt: randInt,
612
+ /**
613
+ * Returns a random float from `<low, high>` interval.
614
+ *
615
+ * @static
616
+ * @method
617
+ * @param {number} low - The lower value boundary.
618
+ * @param {number} high - The upper value boundary
619
+ * @return {number} A random float.
620
+ */
487
621
  randFloat: randFloat,
622
+ /**
623
+ * Returns a random integer from `<-range/2, range/2>` interval.
624
+ *
625
+ * @static
626
+ * @method
627
+ * @param {number} range - Defines the value range.
628
+ * @return {number} A random float.
629
+ */
488
630
  randFloatSpread: randFloatSpread,
631
+ /**
632
+ * Returns a deterministic pseudo-random float in the interval `[0, 1]`.
633
+ *
634
+ * @static
635
+ * @method
636
+ * @param {number} [s] - The integer seed.
637
+ * @return {number} A random float.
638
+ */
489
639
  seededRandom: seededRandom,
640
+ /**
641
+ * Converts degrees to radians.
642
+ *
643
+ * @static
644
+ * @method
645
+ * @param {number} degrees - A value in degrees.
646
+ * @return {number} The converted value in radians.
647
+ */
490
648
  degToRad: degToRad,
649
+ /**
650
+ * Converts radians to degrees.
651
+ *
652
+ * @static
653
+ * @method
654
+ * @param {number} radians - A value in radians.
655
+ * @return {number} The converted value in degrees.
656
+ */
491
657
  radToDeg: radToDeg,
658
+ /**
659
+ * Returns `true` if the given number is a power of two.
660
+ *
661
+ * @static
662
+ * @method
663
+ * @param {number} value - The value to check.
664
+ * @return {boolean} Whether the given number is a power of two or not.
665
+ */
492
666
  isPowerOfTwo: isPowerOfTwo,
667
+ /**
668
+ * Returns the smallest power of two that is greater than or equal to the given number.
669
+ *
670
+ * @static
671
+ * @method
672
+ * @param {number} value - The value to find a POT for.
673
+ * @return {number} The smallest power of two that is greater than or equal to the given number.
674
+ */
493
675
  ceilPowerOfTwo: ceilPowerOfTwo,
676
+ /**
677
+ * Returns the largest power of two that is less than or equal to the given number.
678
+ *
679
+ * @static
680
+ * @method
681
+ * @param {number} value - The value to find a POT for.
682
+ * @return {number} The largest power of two that is less than or equal to the given number.
683
+ */
494
684
  floorPowerOfTwo: floorPowerOfTwo,
685
+ /**
686
+ * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}
687
+ * defined by the given angles and order.
688
+ *
689
+ * Rotations are applied to the axes in the order specified by order:
690
+ * rotation by angle `a` is applied first, then by angle `b`, then by angle `c`.
691
+ *
692
+ * @static
693
+ * @method
694
+ * @param {Quaternion} q - The quaternion to set.
695
+ * @param {number} a - The rotation applied to the first axis, in radians.
696
+ * @param {number} b - The rotation applied to the second axis, in radians.
697
+ * @param {number} c - The rotation applied to the third axis, in radians.
698
+ * @param {('XYX'|'XZX'|'YXY'|'YZY'|'ZXZ'|'ZYZ')} order - A string specifying the axes order.
699
+ */
495
700
  setQuaternionFromProperEuler: setQuaternionFromProperEuler,
701
+ /**
702
+ * Normalizes the given value according to the given typed array.
703
+ *
704
+ * @static
705
+ * @method
706
+ * @param {number} value - The float value in the range `[0,1]` to normalize.
707
+ * @param {TypedArray} array - The typed array that defines the data type of the value.
708
+ * @return {number} The normalize value.
709
+ */
496
710
  normalize: normalize,
711
+ /**
712
+ * Denormalizes the given value according to the given typed array.
713
+ *
714
+ * @static
715
+ * @method
716
+ * @param {number} value - The value to denormalize.
717
+ * @param {TypedArray} array - The typed array that defines the data type of the value.
718
+ * @return {number} The denormalize (float) value in the range `[0,1]`.
719
+ */
497
720
  denormalize: denormalize
498
721
  };
499
722
 
@@ -56,6 +56,7 @@ export { default as TriplanarTexturesNode } from './utils/TriplanarTexturesNode.
56
56
  export { default as ReflectorNode } from './utils/ReflectorNode.js';
57
57
  export { default as RTTNode } from './utils/RTTNode.js';
58
58
  export { default as MemberNode } from './utils/MemberNode.js';
59
+ export { default as DebugNode } from './utils/DebugNode.js';
59
60
 
60
61
  // accessors
61
62
  export { default as UniformArrayNode } from './accessors/UniformArrayNode.js';
@@ -74,8 +74,8 @@ class BatchNode extends Node {
74
74
 
75
75
  const getIndirectIndex = Fn( ( [ id ] ) => {
76
76
 
77
- const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ) );
78
- const x = int( id ).modInt( size );
77
+ const size = int( textureSize( textureLoad( this.batchMesh._indirectTexture ), 0 ).x );
78
+ const x = int( id ).mod( size );
79
79
  const y = int( id ).div( size );
80
80
  return textureLoad( this.batchMesh._indirectTexture, ivec2( x, y ) ).x;
81
81
 
@@ -91,11 +91,11 @@ class BatchNode extends Node {
91
91
 
92
92
  const matricesTexture = this.batchMesh._matricesTexture;
93
93
 
94
- const size = textureSize( textureLoad( matricesTexture ), 0 );
94
+ const size = int( textureSize( textureLoad( matricesTexture ), 0 ).x );
95
95
  const j = float( indirectId ).mul( 4 ).toInt().toVar();
96
96
 
97
- const x = j.modInt( size );
98
- const y = j.div( int( size ) );
97
+ const x = j.mod( size );
98
+ const y = j.div( size );
99
99
  const batchingMatrix = mat4(
100
100
  textureLoad( matricesTexture, ivec2( x, y ) ),
101
101
  textureLoad( matricesTexture, ivec2( x.add( 1 ), y ) ),
@@ -110,9 +110,9 @@ class BatchNode extends Node {
110
110
 
111
111
  const getBatchingColor = Fn( ( [ id ] ) => {
112
112
 
113
- const size = textureSize( textureLoad( colorsTexture ), 0 ).x;
113
+ const size = int( textureSize( textureLoad( colorsTexture ), 0 ).x );
114
114
  const j = id;
115
- const x = j.modInt( size );
115
+ const x = j.mod( size );
116
116
  const y = j.div( size );
117
117
  return textureLoad( colorsTexture, ivec2( x, y ) ).rgb;
118
118
 
@@ -160,4 +160,4 @@ export default BatchNode;
160
160
  * @param {BatchedMesh} batchMesh - A reference to batched mesh.
161
161
  * @returns {BatchNode}
162
162
  */
163
- export const batch = /*@__PURE__*/ nodeProxy( BatchNode );
163
+ export const batch = /*@__PURE__*/ nodeProxy( BatchNode ).setParameterLength( 1 );
@@ -60,4 +60,4 @@ export default BuiltinNode;
60
60
  * @param {string} name - The name of the built-in shader variable.
61
61
  * @returns {BuiltinNode}
62
62
  */
63
- export const builtin = nodeProxy( BuiltinNode );
63
+ export const builtin = nodeProxy( BuiltinNode ).setParameterLength( 1 );
@@ -138,4 +138,4 @@ export default CubeTextureNode;
138
138
  * @param {?Node<float>} [biasNode=null] - The bias node.
139
139
  * @returns {CubeTextureNode}
140
140
  */
141
- export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode );
141
+ export const cubeTexture = /*@__PURE__*/ nodeProxy( CubeTextureNode ).setParameterLength( 1, 4 ).setName( 'cubeTexture' );
@@ -63,14 +63,14 @@ class InstanceNode extends Node {
63
63
  /**
64
64
  * The node that represents the instance matrix data.
65
65
  *
66
- * @type {Node}
66
+ * @type {?Node}
67
67
  */
68
68
  this.instanceMatrixNode = null;
69
69
 
70
70
  /**
71
71
  * The node that represents the instance color data.
72
72
  *
73
- * @type {Node}
73
+ * @type {?Node}
74
74
  */
75
75
  this.instanceColorNode = null;
76
76
 
@@ -86,14 +86,14 @@ class InstanceNode extends Node {
86
86
  /**
87
87
  * A reference to a buffer that is used by `instanceMatrixNode`.
88
88
  *
89
- * @type {InstancedInterleavedBuffer}
89
+ * @type {?InstancedInterleavedBuffer}
90
90
  */
91
91
  this.buffer = null;
92
92
 
93
93
  /**
94
94
  * A reference to a buffer that is used by `instanceColorNode`.
95
95
  *
96
- * @type {InstancedBufferAttribute}
96
+ * @type {?InstancedBufferAttribute}
97
97
  */
98
98
  this.bufferColor = null;
99
99
 
@@ -220,4 +220,4 @@ export default InstanceNode;
220
220
  * @param {InstancedBufferAttribute} instanceColor - Instanced buffer attribute representing the instance colors.
221
221
  * @returns {InstanceNode}
222
222
  */
223
- export const instance = /*@__PURE__*/ nodeProxy( InstanceNode );
223
+ export const instance = /*@__PURE__*/ nodeProxy( InstanceNode ).setParameterLength( 3 );
@@ -47,4 +47,4 @@ export default InstancedMeshNode;
47
47
  * @param {InstancedMesh} instancedMesh - The instancedMesh.
48
48
  * @returns {InstancedMeshNode}
49
49
  */
50
- export const instancedMesh = /*@__PURE__*/ nodeProxy( InstancedMeshNode );
50
+ export const instancedMesh = /*@__PURE__*/ nodeProxy( InstancedMeshNode ).setParameterLength( 1 );