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
@@ -39,7 +39,7 @@ class Animation {
39
39
  /**
40
40
  * The user-defined animation loop.
41
41
  *
42
- * @type {Function?}
42
+ * @type {?Function}
43
43
  * @default null
44
44
  */
45
45
  this._animationLoop = null;
@@ -48,7 +48,7 @@ class Animation {
48
48
  * The requestId which is returned from the `requestAnimationFrame()` call.
49
49
  * Can be used to cancel the stop the animation loop.
50
50
  *
51
- * @type {Number?}
51
+ * @type {?number}
52
52
  * @default null
53
53
  */
54
54
  this._requestId = null;
@@ -60,7 +60,7 @@ class Animation {
60
60
  */
61
61
  start() {
62
62
 
63
- const update = ( time, frame ) => {
63
+ const update = ( time, xrFrame ) => {
64
64
 
65
65
  this._requestId = this._context.requestAnimationFrame( update );
66
66
 
@@ -70,7 +70,7 @@ class Animation {
70
70
 
71
71
  this.info.frame = this.nodes.nodeFrame.frameId;
72
72
 
73
- if ( this._animationLoop !== null ) this._animationLoop( time, frame );
73
+ if ( this._animationLoop !== null ) this._animationLoop( time, xrFrame );
74
74
 
75
75
  };
76
76
 
@@ -92,7 +92,7 @@ class Animation {
92
92
  /**
93
93
  * Returns the user-level animation loop.
94
94
  *
95
- * @return {Function} The animation loop.
95
+ * @return {?Function} The animation loop.
96
96
  */
97
97
  getAnimationLoop() {
98
98
 
@@ -103,7 +103,7 @@ class Animation {
103
103
  /**
104
104
  * Defines the user-level animation loop.
105
105
  *
106
- * @param {Function} callback - The animation loop.
106
+ * @param {?Function} callback - The animation loop.
107
107
  */
108
108
  setAnimationLoop( callback ) {
109
109
 
@@ -33,13 +33,13 @@ class Attributes extends DataMap {
33
33
  * Deletes the data for the given attribute.
34
34
  *
35
35
  * @param {BufferAttribute} attribute - The attribute.
36
- * @return {Object} The deleted attribute data.
36
+ * @return {Object|null} The deleted attribute data.
37
37
  */
38
38
  delete( attribute ) {
39
39
 
40
40
  const attributeData = super.delete( attribute );
41
41
 
42
- if ( attributeData !== undefined ) {
42
+ if ( attributeData !== null ) {
43
43
 
44
44
  this.backend.destroyAttribute( attribute );
45
45
 
@@ -54,7 +54,7 @@ class Attributes extends DataMap {
54
54
  * for new attributes and updates data for existing ones.
55
55
  *
56
56
  * @param {BufferAttribute} attribute - The attribute to update.
57
- * @param {Number} type - The attribute type.
57
+ * @param {number} type - The attribute type.
58
58
  */
59
59
  update( attribute, type ) {
60
60
 
@@ -8,7 +8,7 @@ import { REVISION } from '../../constants.js';
8
8
 
9
9
  /**
10
10
  * Most of the rendering related logic is implemented in the
11
- * {@link module:Renderer} module and related management components.
11
+ * {@link Renderer} module and related management components.
12
12
  * Sometimes it is required though to execute commands which are
13
13
  * specific to the current 3D backend (which is WebGPU or WebGL 2).
14
14
  * This abstract base class defines an interface that encapsulates
@@ -45,7 +45,7 @@ class Backend {
45
45
  /**
46
46
  * A reference to the renderer.
47
47
  *
48
- * @type {Renderer?}
48
+ * @type {?Renderer}
49
49
  * @default null
50
50
  */
51
51
  this.renderer = null;
@@ -53,7 +53,7 @@ class Backend {
53
53
  /**
54
54
  * A reference to the canvas element the renderer is drawing to.
55
55
  *
56
- * @type {(HTMLCanvasElement|OffscreenCanvas)?}
56
+ * @type {?(HTMLCanvasElement|OffscreenCanvas)}
57
57
  * @default null
58
58
  */
59
59
  this.domElement = null;
@@ -61,13 +61,21 @@ class Backend {
61
61
  /**
62
62
  * A reference to the timestamp query pool.
63
63
  *
64
- * @type {{render: TimestampQueryPool?, compute: TimestampQueryPool?}}
64
+ * @type {{render: ?TimestampQueryPool, compute: ?TimestampQueryPool}}
65
65
  */
66
66
  this.timestampQueryPool = {
67
67
  'render': null,
68
68
  'compute': null
69
69
  };
70
70
 
71
+ /**
72
+ * Whether to track timestamps with a Timestamp Query API or not.
73
+ *
74
+ * @type {boolean}
75
+ * @default false
76
+ */
77
+ this.trackTimestamp = ( parameters.trackTimestamp === true );
78
+
71
79
  }
72
80
 
73
81
  /**
@@ -89,7 +97,7 @@ class Backend {
89
97
  * The coordinate system of the backend.
90
98
  *
91
99
  * @abstract
92
- * @type {Number}
100
+ * @type {number}
93
101
  * @readonly
94
102
  */
95
103
  get coordinateSystem() {}
@@ -186,8 +194,8 @@ class Backend {
186
194
  * @abstract
187
195
  * @param {BindGroup} bindGroup - The bind group.
188
196
  * @param {Array<BindGroup>} bindings - Array of bind groups.
189
- * @param {Number} cacheIndex - The cache index.
190
- * @param {Number} version - The version.
197
+ * @param {number} cacheIndex - The cache index.
198
+ * @param {number} version - The version.
191
199
  */
192
200
  createBindings( /*bindGroup, bindings, cacheIndex, version*/ ) { }
193
201
 
@@ -197,8 +205,8 @@ class Backend {
197
205
  * @abstract
198
206
  * @param {BindGroup} bindGroup - The bind group.
199
207
  * @param {Array<BindGroup>} bindings - Array of bind groups.
200
- * @param {Number} cacheIndex - The cache index.
201
- * @param {Number} version - The version.
208
+ * @param {number} cacheIndex - The cache index.
209
+ * @param {number} version - The version.
202
210
  */
203
211
  updateBindings( /*bindGroup, bindings, cacheIndex, version*/ ) { }
204
212
 
@@ -237,7 +245,7 @@ class Backend {
237
245
  *
238
246
  * @abstract
239
247
  * @param {RenderObject} renderObject - The render object.
240
- * @return {Boolean} Whether the render pipeline requires an update or not.
248
+ * @return {boolean} Whether the render pipeline requires an update or not.
241
249
  */
242
250
  needsRenderUpdate( /*renderObject*/ ) { }
243
251
 
@@ -246,7 +254,7 @@ class Backend {
246
254
  *
247
255
  * @abstract
248
256
  * @param {RenderObject} renderObject - The render object.
249
- * @return {String} The cache key.
257
+ * @return {string} The cache key.
250
258
  */
251
259
  getRenderCacheKey( /*renderObject*/ ) { }
252
260
 
@@ -329,11 +337,11 @@ class Backend {
329
337
  * @abstract
330
338
  * @async
331
339
  * @param {Texture} texture - The texture to copy.
332
- * @param {Number} x - The x coordinate of the copy origin.
333
- * @param {Number} y - The y coordinate of the copy origin.
334
- * @param {Number} width - The width of the copy.
335
- * @param {Number} height - The height of the copy.
336
- * @param {Number} faceIndex - The face index.
340
+ * @param {number} x - The x coordinate of the copy origin.
341
+ * @param {number} y - The y coordinate of the copy origin.
342
+ * @param {number} width - The width of the copy.
343
+ * @param {number} height - The height of the copy.
344
+ * @param {number} faceIndex - The face index.
337
345
  * @return {Promise<TypedArray>} A Promise that resolves with a typed array when the copy operation has finished.
338
346
  */
339
347
  async copyTextureToBuffer( /*texture, x, y, width, height, faceIndex*/ ) {}
@@ -344,11 +352,12 @@ class Backend {
344
352
  * @abstract
345
353
  * @param {Texture} srcTexture - The source texture.
346
354
  * @param {Texture} dstTexture - The destination texture.
347
- * @param {Vector4?} [srcRegion=null] - The region of the source texture to copy.
348
- * @param {(Vector2|Vector3)?} [dstPosition=null] - The destination position of the copy.
349
- * @param {Number} [level=0] - The mip level to copy.
355
+ * @param {?(Box3|Box2)} [srcRegion=null] - The region of the source texture to copy.
356
+ * @param {?(Vector2|Vector3)} [dstPosition=null] - The destination position of the copy.
357
+ * @param {number} [srcLevel=0] - The source mip level to copy from.
358
+ * @param {number} [dstLevel=0] - The destination mip level to copy to.
350
359
  */
351
- copyTextureToTexture( /*srcTexture, dstTexture, srcRegion = null, dstPosition = null, level = 0*/ ) {}
360
+ copyTextureToTexture( /*srcTexture, dstTexture, srcRegion = null, dstPosition = null, srcLevel = 0, dstLevel = 0*/ ) {}
352
361
 
353
362
  /**
354
363
  * Copies the current bound framebuffer to the given texture.
@@ -438,7 +447,7 @@ class Backend {
438
447
  * @abstract
439
448
  * @param {RenderContext} renderContext - The render context.
440
449
  * @param {Object3D} object - The 3D object to test.
441
- * @return {Boolean} Whether the 3D object is fully occluded or not.
450
+ * @return {boolean} Whether the 3D object is fully occluded or not.
442
451
  */
443
452
  isOccluded( /*renderContext, object*/ ) {}
444
453
 
@@ -447,8 +456,8 @@ class Backend {
447
456
  *
448
457
  * @async
449
458
  * @abstract
450
- * @param {String} [type='render'] - The type of the time stamp.
451
- * @return {Promise<Number>} A Promise that resolves with the time stamp.
459
+ * @param {string} [type='render'] - The type of the time stamp.
460
+ * @return {Promise<number>} A Promise that resolves with the time stamp.
452
461
  */
453
462
  async resolveTimestampsAsync( type = 'render' ) {
454
463
 
@@ -500,8 +509,8 @@ class Backend {
500
509
  *
501
510
  * @async
502
511
  * @abstract
503
- * @param {String} name - The feature's name.
504
- * @return {Promise<Boolean>} A Promise that resolves with a bool that indicates whether the feature is supported or not.
512
+ * @param {string} name - The feature's name.
513
+ * @return {Promise<boolean>} A Promise that resolves with a bool that indicates whether the feature is supported or not.
505
514
  */
506
515
  async hasFeatureAsync( /*name*/ ) { }
507
516
 
@@ -509,8 +518,8 @@ class Backend {
509
518
  * Checks if the given feature is supported by the backend.
510
519
  *
511
520
  * @abstract
512
- * @param {String} name - The feature's name.
513
- * @return {Boolean} Whether the feature is supported or not.
521
+ * @param {string} name - The feature's name.
522
+ * @return {boolean} Whether the feature is supported or not.
514
523
  */
515
524
  hasFeature( /*name*/ ) {}
516
525
 
@@ -518,7 +527,7 @@ class Backend {
518
527
  * Returns the maximum anisotropy texture filtering value.
519
528
  *
520
529
  * @abstract
521
- * @return {Number} The maximum anisotropy texture filtering value.
530
+ * @return {number} The maximum anisotropy texture filtering value.
522
531
  */
523
532
  getMaxAnisotropy() {}
524
533
 
@@ -539,7 +548,7 @@ class Backend {
539
548
  * Defines the scissor test.
540
549
  *
541
550
  * @abstract
542
- * @param {Boolean} boolean - Whether the scissor test should be enabled or not.
551
+ * @param {boolean} boolean - Whether the scissor test should be enabled or not.
543
552
  */
544
553
  setScissorTest( /*boolean*/ ) { }
545
554
 
@@ -557,7 +566,7 @@ class Backend {
557
566
 
558
567
  renderer.getClearColor( _color4 );
559
568
 
560
- _color4.getRGB( _color4, this.renderer.currentColorSpace );
569
+ _color4.getRGB( _color4 );
561
570
 
562
571
  return _color4;
563
572
 
@@ -627,7 +636,7 @@ class Backend {
627
636
  * with data defined.
628
637
  *
629
638
  * @param {Object} object - The object.
630
- * @return {Boolean} Whether a dictionary for the given object as been defined or not.
639
+ * @return {boolean} Whether a dictionary for the given object as been defined or not.
631
640
  */
632
641
  has( object ) {
633
642
 
@@ -5,7 +5,7 @@ import NodeMaterial from '../../materials/nodes/NodeMaterial.js';
5
5
 
6
6
  import { Mesh } from '../../objects/Mesh.js';
7
7
  import { SphereGeometry } from '../../geometries/SphereGeometry.js';
8
- import { BackSide, LinearSRGBColorSpace } from '../../constants.js';
8
+ import { BackSide } from '../../constants.js';
9
9
 
10
10
  const _clearColor = /*@__PURE__*/ new Color4();
11
11
 
@@ -64,14 +64,14 @@ class Background extends DataMap {
64
64
 
65
65
  // no background settings, use clear color configuration from the renderer
66
66
 
67
- renderer._clearColor.getRGB( _clearColor, LinearSRGBColorSpace );
67
+ renderer._clearColor.getRGB( _clearColor );
68
68
  _clearColor.a = renderer._clearColor.a;
69
69
 
70
70
  } else if ( background.isColor === true ) {
71
71
 
72
72
  // background is an opaque color
73
73
 
74
- background.getRGB( _clearColor, LinearSRGBColorSpace );
74
+ background.getRGB( _clearColor );
75
75
  _clearColor.a = 1;
76
76
 
77
77
  forceClear = true;
@@ -101,6 +101,7 @@ class Background extends DataMap {
101
101
  nodeMaterial.side = BackSide;
102
102
  nodeMaterial.depthTest = false;
103
103
  nodeMaterial.depthWrite = false;
104
+ nodeMaterial.allowOverride = false;
104
105
  nodeMaterial.fog = false;
105
106
  nodeMaterial.lights = false;
106
107
  nodeMaterial.vertexNode = viewProj;
@@ -12,9 +12,9 @@ class BindGroup {
12
12
  /**
13
13
  * Constructs a new bind group.
14
14
  *
15
- * @param {String} name - The bind group's name.
15
+ * @param {string} name - The bind group's name.
16
16
  * @param {Array<Binding>} bindings - An array of bindings.
17
- * @param {Number} index - The group index.
17
+ * @param {number} index - The group index.
18
18
  * @param {Array<Binding>} bindingsReference - An array of reference bindings.
19
19
  */
20
20
  constructor( name = '', bindings = [], index = 0, bindingsReference = [] ) {
@@ -22,7 +22,7 @@ class BindGroup {
22
22
  /**
23
23
  * The bind group's name.
24
24
  *
25
- * @type {String}
25
+ * @type {string}
26
26
  */
27
27
  this.name = name;
28
28
 
@@ -36,7 +36,7 @@ class BindGroup {
36
36
  /**
37
37
  * The group index.
38
38
  *
39
- * @type {Number}
39
+ * @type {number}
40
40
  */
41
41
  this.index = index;
42
42
 
@@ -50,7 +50,7 @@ class BindGroup {
50
50
  /**
51
51
  * The group's ID.
52
52
  *
53
- * @type {Number}
53
+ * @type {number}
54
54
  */
55
55
  this.id = _id ++;
56
56
 
@@ -12,14 +12,14 @@ class Binding {
12
12
  /**
13
13
  * Constructs a new binding.
14
14
  *
15
- * @param {String} [name=''] - The binding's name.
15
+ * @param {string} [name=''] - The binding's name.
16
16
  */
17
17
  constructor( name = '' ) {
18
18
 
19
19
  /**
20
20
  * The binding's name.
21
21
  *
22
- * @type {String}
22
+ * @type {string}
23
23
  */
24
24
  this.name = name;
25
25
 
@@ -27,7 +27,7 @@ class Binding {
27
27
  * A bitmask that defines in what shader stages the
28
28
  * binding's resource is accessible.
29
29
  *
30
- * @type {Number}
30
+ * @type {number}
31
31
  */
32
32
  this.visibility = 0;
33
33
 
@@ -36,7 +36,7 @@ class Binding {
36
36
  /**
37
37
  * Makes sure binding's resource is visible for the given shader stage.
38
38
  *
39
- * @param {Number} visibility - The shader stage.
39
+ * @param {number} visibility - The shader stage.
40
40
  */
41
41
  setVisibility( visibility ) {
42
42
 
@@ -224,6 +224,16 @@ class Bindings extends DataMap {
224
224
 
225
225
  }
226
226
 
227
+ if ( binding.isStorageBuffer ) {
228
+
229
+ const attribute = binding.attribute;
230
+ const attributeType = attribute.isIndirectStorageBufferAttribute ? AttributeType.INDIRECT : AttributeType.STORAGE;
231
+
232
+ this.attributes.update( attribute, attributeType );
233
+
234
+
235
+ }
236
+
227
237
  if ( binding.isUniformBuffer ) {
228
238
 
229
239
  const updated = binding.update();
@@ -13,7 +13,7 @@ class Buffer extends Binding {
13
13
  /**
14
14
  * Constructs a new buffer.
15
15
  *
16
- * @param {String} name - The buffer's name.
16
+ * @param {string} name - The buffer's name.
17
17
  * @param {TypedArray} [buffer=null] - The buffer.
18
18
  */
19
19
  constructor( name, buffer = null ) {
@@ -23,7 +23,7 @@ class Buffer extends Binding {
23
23
  /**
24
24
  * This flag can be used for type testing.
25
25
  *
26
- * @type {Boolean}
26
+ * @type {boolean}
27
27
  * @readonly
28
28
  * @default true
29
29
  */
@@ -32,7 +32,7 @@ class Buffer extends Binding {
32
32
  /**
33
33
  * The bytes per element.
34
34
  *
35
- * @type {Number}
35
+ * @type {number}
36
36
  */
37
37
  this.bytesPerElement = Float32Array.BYTES_PER_ELEMENT;
38
38
 
@@ -49,7 +49,7 @@ class Buffer extends Binding {
49
49
  /**
50
50
  * The buffer's byte length.
51
51
  *
52
- * @type {Number}
52
+ * @type {number}
53
53
  * @readonly
54
54
  */
55
55
  get byteLength() {
@@ -73,7 +73,7 @@ class Buffer extends Binding {
73
73
  /**
74
74
  * Updates the binding.
75
75
  *
76
- * @return {Boolean} Whether the buffer has been updated and must be
76
+ * @return {boolean} Whether the buffer has been updated and must be
77
77
  * uploaded to the GPU.
78
78
  */
79
79
  update() {
@@ -1,14 +1,12 @@
1
1
  import { GPU_CHUNK_BYTES } from './Constants.js';
2
2
 
3
- /** @module BufferUtils **/
4
-
5
3
  /**
6
4
  * This function is usually called with the length in bytes of an array buffer.
7
5
  * It returns an padded value which ensure chunk size alignment according to STD140 layout.
8
6
  *
9
7
  * @function
10
- * @param {Number} floatLength - The buffer length.
11
- * @return {Number} The padded length.
8
+ * @param {number} floatLength - The buffer length.
9
+ * @return {number} The padded length.
12
10
  */
13
11
  function getFloatLength( floatLength ) {
14
12
 
@@ -23,9 +21,9 @@ function getFloatLength( floatLength ) {
23
21
  * a total length in bytes with buffer alignment according to STD140 layout.
24
22
  *
25
23
  * @function
26
- * @param {Number} count - The number of vectors.
27
- * @param {Number} [vectorLength=4] - The vector length.
28
- * @return {Number} The padded length.
24
+ * @param {number} count - The number of vectors.
25
+ * @param {number} [vectorLength=4] - The vector length.
26
+ * @return {number} The padded length.
29
27
  */
30
28
  function getVectorLength( count, vectorLength = 4 ) {
31
29
 
@@ -42,8 +40,8 @@ function getVectorLength( count, vectorLength = 4 ) {
42
40
  * matches a predefined stride (in this case `4`).
43
41
  *
44
42
  * @function
45
- * @param {Number} vectorLength - The vector length.
46
- * @return {Number} The padded length.
43
+ * @param {number} vectorLength - The vector length.
44
+ * @return {number} The padded length.
47
45
  */
48
46
  function getStrideLength( vectorLength ) {
49
47
 
@@ -24,7 +24,7 @@ class BundleGroup extends Group {
24
24
  /**
25
25
  * This flag can be used for type testing.
26
26
  *
27
- * @type {Boolean}
27
+ * @type {boolean}
28
28
  * @readonly
29
29
  * @default true
30
30
  */
@@ -35,7 +35,7 @@ class BundleGroup extends Group {
35
35
  * during serialization/deserialization. It should always
36
36
  * match the class name.
37
37
  *
38
- * @type {String}
38
+ * @type {string}
39
39
  * @readonly
40
40
  * @default 'BundleGroup'
41
41
  */
@@ -49,7 +49,7 @@ class BundleGroup extends Group {
49
49
  * If a change is required, an update can still be forced by setting the
50
50
  * `needsUpdate` flag to `true`.
51
51
  *
52
- * @type {Boolean}
52
+ * @type {boolean}
53
53
  * @default true
54
54
  */
55
55
  this.static = true;
@@ -57,7 +57,7 @@ class BundleGroup extends Group {
57
57
  /**
58
58
  * The bundle group's version.
59
59
  *
60
- * @type {Number}
60
+ * @type {number}
61
61
  * @readonly
62
62
  * @default 0
63
63
  */
@@ -68,9 +68,9 @@ class BundleGroup extends Group {
68
68
  /**
69
69
  * Set this property to `true` when the bundle group has changed.
70
70
  *
71
- * @type {Boolean}
71
+ * @type {boolean}
72
72
  * @default false
73
- * @param {Boolean} value
73
+ * @param {boolean} value
74
74
  */
75
75
  set needsUpdate( value ) {
76
76
 
@@ -26,7 +26,7 @@ class ChainMap {
26
26
  * Returns the value for the given array of keys.
27
27
  *
28
28
  * @param {Array<Object>} keys - List of keys.
29
- * @return {Any} The value. Returns `undefined` if no value was found.
29
+ * @return {any} The value. Returns `undefined` if no value was found.
30
30
  */
31
31
  get( keys ) {
32
32
 
@@ -48,7 +48,7 @@ class ChainMap {
48
48
  * Sets the value for the given keys.
49
49
  *
50
50
  * @param {Array<Object>} keys - List of keys.
51
- * @param {Any} value - The value to set.
51
+ * @param {any} value - The value to set.
52
52
  * @return {ChainMap} A reference to this Chain Map.
53
53
  */
54
54
  set( keys, value ) {
@@ -75,7 +75,7 @@ class ChainMap {
75
75
  * Deletes a value for the given keys.
76
76
  *
77
77
  * @param {Array<Object>} keys - The keys.
78
- * @return {Boolean} Returns `true` if the value has been removed successfully and `false` if the value has not be found.
78
+ * @return {boolean} Returns `true` if the value has been removed successfully and `false` if the value has not be found.
79
79
  */
80
80
  delete( keys ) {
81
81
 
@@ -17,14 +17,14 @@ class ClippingContext {
17
17
  /**
18
18
  * Constructs a new clipping context.
19
19
  *
20
- * @param {ClippingContext?} [parentContext=null] - A reference to the parent clipping context.
20
+ * @param {?ClippingContext} [parentContext=null] - A reference to the parent clipping context.
21
21
  */
22
22
  constructor( parentContext = null ) {
23
23
 
24
24
  /**
25
25
  * The clipping context's version.
26
26
  *
27
- * @type {Number}
27
+ * @type {number}
28
28
  * @readonly
29
29
  */
30
30
  this.version = 0;
@@ -32,7 +32,7 @@ class ClippingContext {
32
32
  /**
33
33
  * Whether the intersection of the clipping planes is used to clip objects, rather than their union.
34
34
  *
35
- * @type {Boolean?}
35
+ * @type {?boolean}
36
36
  * @default null
37
37
  */
38
38
  this.clipIntersection = null;
@@ -40,14 +40,14 @@ class ClippingContext {
40
40
  /**
41
41
  * The clipping context's cache key.
42
42
  *
43
- * @type {String}
43
+ * @type {string}
44
44
  */
45
45
  this.cacheKey = '';
46
46
 
47
47
  /**
48
48
  * Whether the shadow pass is active or not.
49
49
  *
50
- * @type {Boolean}
50
+ * @type {boolean}
51
51
  * @default false
52
52
  */
53
53
  this.shadowPass = false;
@@ -83,7 +83,7 @@ class ClippingContext {
83
83
  /**
84
84
  * The version of the clipping context's parent context.
85
85
  *
86
- * @type {Number?}
86
+ * @type {?number}
87
87
  * @readonly
88
88
  */
89
89
  this.parentVersion = null;
@@ -106,7 +106,7 @@ class ClippingContext {
106
106
  *
107
107
  * @param {Array<Plane>} source - The source clipping planes.
108
108
  * @param {Array<Vector4>} destination - The destination.
109
- * @param {Number} offset - The offset.
109
+ * @param {number} offset - The offset.
110
110
  */
111
111
  projectPlanes( source, destination, offset ) {
112
112
 
@@ -248,7 +248,7 @@ class ClippingContext {
248
248
  /**
249
249
  * The count of union clipping planes.
250
250
  *
251
- * @type {Number}
251
+ * @type {number}
252
252
  * @readonly
253
253
  */
254
254
  get unionClippingCount() {
@@ -15,10 +15,10 @@ class Color4 extends Color {
15
15
  * You can also pass a single THREE.Color, hex or
16
16
  * string argument to this constructor.
17
17
  *
18
- * @param {Number|String} [r=1] - The red value.
19
- * @param {Number} [g=1] - The green value.
20
- * @param {Number} [b=1] - The blue value.
21
- * @param {Number} [a=1] - The alpha value.
18
+ * @param {number|string} [r=1] - The red value.
19
+ * @param {number} [g=1] - The green value.
20
+ * @param {number} [b=1] - The blue value.
21
+ * @param {number} [a=1] - The alpha value.
22
22
  */
23
23
  constructor( r, g, b, a = 1 ) {
24
24
 
@@ -33,10 +33,10 @@ class Color4 extends Color {
33
33
  * You can also pass a single THREE.Color, hex or
34
34
  * string argument to this method.
35
35
  *
36
- * @param {Number|String} r - The red value.
37
- * @param {Number} g - The green value.
38
- * @param {Number} b - The blue value.
39
- * @param {Number} [a=1] - The alpha value.
36
+ * @param {number|string|Color} r - The red value.
37
+ * @param {number} g - The green value.
38
+ * @param {number} b - The blue value.
39
+ * @param {number} [a=1] - The alpha value.
40
40
  * @return {Color4} A reference to this object.
41
41
  */
42
42
  set( r, g, b, a = 1 ) {
@@ -11,7 +11,7 @@ class ComputePipeline extends Pipeline {
11
11
  /**
12
12
  * Constructs a new render pipeline.
13
13
  *
14
- * @param {String} cacheKey - The pipeline's cache key.
14
+ * @param {string} cacheKey - The pipeline's cache key.
15
15
  * @param {ProgrammableStage} computeProgram - The pipeline's compute shader.
16
16
  */
17
17
  constructor( cacheKey, computeProgram ) {
@@ -28,7 +28,7 @@ class ComputePipeline extends Pipeline {
28
28
  /**
29
29
  * This flag can be used for type testing.
30
30
  *
31
- * @type {Boolean}
31
+ * @type {boolean}
32
32
  * @readonly
33
33
  * @default true
34
34
  */