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
@@ -151,7 +151,7 @@ class WGSLNodeFunction extends NodeFunction {
151
151
  /**
152
152
  * Constructs a new WGSL node function.
153
153
  *
154
- * @param {String} source - The WGSL source.
154
+ * @param {string} source - The WGSL source.
155
155
  */
156
156
  constructor( source ) {
157
157
 
@@ -168,8 +168,8 @@ class WGSLNodeFunction extends NodeFunction {
168
168
  /**
169
169
  * This method returns the WGSL code of the node function.
170
170
  *
171
- * @param {String} [name=this.name] - The function's name.
172
- * @return {String} The shader code.
171
+ * @param {string} [name=this.name] - The function's name.
172
+ * @return {string} The shader code.
173
173
  */
174
174
  getCode( name = this.name ) {
175
175
 
@@ -11,7 +11,7 @@ class WGSLNodeParser extends NodeParser {
11
11
  /**
12
12
  * The method parses the given WGSL code an returns a node function.
13
13
  *
14
- * @param {String} source - The WGSL code.
14
+ * @param {string} source - The WGSL code.
15
15
  * @return {WGSLNodeFunction} A node function.
16
16
  */
17
17
  parseFunction( source ) {
@@ -71,11 +71,11 @@ class WebGPUAttributeUtils {
71
71
  // patch for INT16 and UINT16
72
72
  if ( attribute.normalized === false ) {
73
73
 
74
- if ( array.constructor === Int16Array ) {
74
+ if ( array.constructor === Int16Array || array.constructor === Int8Array ) {
75
75
 
76
76
  array = new Int32Array( array );
77
77
 
78
- } else if ( array.constructor === Uint16Array ) {
78
+ } else if ( array.constructor === Uint16Array || array.constructor === Uint8Array ) {
79
79
 
80
80
  array = new Uint32Array( array );
81
81
 
@@ -109,6 +109,8 @@ class WebGPUAttributeUtils {
109
109
  bufferAttribute.itemSize = 4;
110
110
  bufferAttribute.array = array;
111
111
 
112
+ bufferData._force3to4BytesAlignment = true;
113
+
112
114
  }
113
115
 
114
116
  const size = array.byteLength + ( ( 4 - ( array.byteLength % 4 ) ) % 4 ); // ensure 4 byte alignment, see #20441
@@ -142,9 +144,27 @@ class WebGPUAttributeUtils {
142
144
  const backend = this.backend;
143
145
  const device = backend.device;
144
146
 
147
+ const bufferData = backend.get( bufferAttribute );
145
148
  const buffer = backend.get( bufferAttribute ).buffer;
146
149
 
147
- const array = bufferAttribute.array;
150
+ let array = bufferAttribute.array;
151
+
152
+ // if storage buffer ensure 4 byte alignment
153
+ if ( bufferData._force3to4BytesAlignment === true ) {
154
+
155
+ array = new array.constructor( bufferAttribute.count * 4 );
156
+
157
+ for ( let i = 0; i < bufferAttribute.count; i ++ ) {
158
+
159
+ array.set( bufferAttribute.array.subarray( i * 3, i * 3 + 3 ), i * 4 );
160
+
161
+ }
162
+
163
+ bufferAttribute.array = array;
164
+
165
+ }
166
+
167
+
148
168
  const isTypedArray = this._isTypedArray( array );
149
169
  const updateRanges = bufferAttribute.updateRanges;
150
170
 
@@ -166,13 +186,27 @@ class WebGPUAttributeUtils {
166
186
  for ( let i = 0, l = updateRanges.length; i < l; i ++ ) {
167
187
 
168
188
  const range = updateRanges[ i ];
189
+ let dataOffset, size;
190
+
191
+ if ( bufferData._force3to4BytesAlignment === true ) {
192
+
193
+ const vertexStart = Math.floor( range.start / 3 );
194
+ const vertexCount = Math.ceil( range.count / 3 );
195
+ dataOffset = vertexStart * 4 * byteOffsetFactor;
196
+ size = vertexCount * 4 * byteOffsetFactor;
197
+
198
+ } else {
199
+
200
+ dataOffset = range.start * byteOffsetFactor;
201
+ size = range.count * byteOffsetFactor;
202
+
203
+ }
169
204
 
170
- const dataOffset = range.start * byteOffsetFactor;
171
- const size = range.count * byteOffsetFactor;
205
+ const bufferOffset = dataOffset * ( isTypedArray ? array.BYTES_PER_ELEMENT : 1 ); // bufferOffset is always in bytes
172
206
 
173
207
  device.queue.writeBuffer(
174
208
  buffer,
175
- 0,
209
+ bufferOffset,
176
210
  array,
177
211
  dataOffset,
178
212
  size
@@ -325,7 +359,7 @@ class WebGPUAttributeUtils {
325
359
  *
326
360
  * @private
327
361
  * @param {BufferAttribute} geometryAttribute - The buffer attribute.
328
- * @return {String} The vertex format (e.g. 'float32x3').
362
+ * @return {string|undefined} The vertex format (e.g. 'float32x3').
329
363
  */
330
364
  _getVertexFormat( geometryAttribute ) {
331
365
 
@@ -376,8 +410,8 @@ class WebGPUAttributeUtils {
376
410
  * Returns `true` if the given array is a typed array.
377
411
  *
378
412
  * @private
379
- * @param {Any} array - The array.
380
- * @return {Boolean} Whether the given array is a typed array or not.
413
+ * @param {any} array - The array.
414
+ * @return {boolean} Whether the given array is a typed array or not.
381
415
  */
382
416
  _isTypedArray( array ) {
383
417
 
@@ -220,8 +220,8 @@ class WebGPUBindingUtils {
220
220
  *
221
221
  * @param {BindGroup} bindGroup - The bind group.
222
222
  * @param {Array<BindGroup>} bindings - Array of bind groups.
223
- * @param {Number} cacheIndex - The cache index.
224
- * @param {Number} version - The version.
223
+ * @param {number} cacheIndex - The cache index.
224
+ * @param {number} version - The version.
225
225
  */
226
226
  createBindings( bindGroup, bindings, cacheIndex, version = 0 ) {
227
227
 
@@ -113,7 +113,7 @@ export const GPUTextureFormat = {
113
113
  // Packed 32-bit formats
114
114
  RGB9E5UFloat: 'rgb9e5ufloat',
115
115
  RGB10A2Unorm: 'rgb10a2unorm',
116
- RG11B10uFloat: 'rgb10a2unorm',
116
+ RG11B10UFloat: 'rgb10a2unorm',
117
117
 
118
118
  // 64-bit formats
119
119
 
@@ -43,7 +43,7 @@ class WebGPUPipelineUtils {
43
43
  *
44
44
  * @private
45
45
  * @param {RenderContext} renderContext - The render context.
46
- * @return {Number} The sample count.
46
+ * @return {number} The sample count.
47
47
  */
48
48
  _getSampleCount( renderContext ) {
49
49
 
@@ -188,6 +188,14 @@ class WebGPUPipelineUtils {
188
188
 
189
189
  }
190
190
 
191
+ if ( material.polygonOffset === true ) {
192
+
193
+ depthStencil.depthBias = material.polygonOffsetUnits;
194
+ depthStencil.depthBiasSlopeScale = material.polygonOffsetFactor;
195
+ depthStencil.depthBiasClamp = 0; // three.js does not provide an API to configure this value
196
+
197
+ }
198
+
191
199
  pipelineDescriptor.depthStencil = depthStencil;
192
200
 
193
201
  }
@@ -397,8 +405,8 @@ class WebGPUPipelineUtils {
397
405
  * Returns the GPU blend factor which is required for the pipeline creation.
398
406
  *
399
407
  * @private
400
- * @param {Number} blend - The blend factor as a three.js constant.
401
- * @return {String} The GPU blend factor.
408
+ * @param {number} blend - The blend factor as a three.js constant.
409
+ * @return {string} The GPU blend factor.
402
410
  */
403
411
  _getBlendFactor( blend ) {
404
412
 
@@ -472,7 +480,7 @@ class WebGPUPipelineUtils {
472
480
  *
473
481
  * @private
474
482
  * @param {Material} material - The material.
475
- * @return {String} The GPU stencil compare function.
483
+ * @return {string} The GPU stencil compare function.
476
484
  */
477
485
  _getStencilCompare( material ) {
478
486
 
@@ -527,8 +535,8 @@ class WebGPUPipelineUtils {
527
535
  * Returns the GPU stencil operation which is required for the pipeline creation.
528
536
  *
529
537
  * @private
530
- * @param {Number} op - A three.js constant defining the stencil operation.
531
- * @return {String} The GPU stencil operation.
538
+ * @param {number} op - A three.js constant defining the stencil operation.
539
+ * @return {string} The GPU stencil operation.
532
540
  */
533
541
  _getStencilOperation( op ) {
534
542
 
@@ -581,8 +589,8 @@ class WebGPUPipelineUtils {
581
589
  * Returns the GPU blend operation which is required for the pipeline creation.
582
590
  *
583
591
  * @private
584
- * @param {Number} blendEquation - A three.js constant defining the blend equation.
585
- * @return {String} The GPU blend operation.
592
+ * @param {number} blendEquation - A three.js constant defining the blend equation.
593
+ * @return {string} The GPU blend operation.
586
594
  */
587
595
  _getBlendOperation( blendEquation ) {
588
596
 
@@ -674,7 +682,7 @@ class WebGPUPipelineUtils {
674
682
  *
675
683
  * @private
676
684
  * @param {Material} material - The material.
677
- * @return {String} The GPU color write mask.
685
+ * @return {string} The GPU color write mask.
678
686
  */
679
687
  _getColorWriteMask( material ) {
680
688
 
@@ -687,7 +695,7 @@ class WebGPUPipelineUtils {
687
695
  *
688
696
  * @private
689
697
  * @param {Material} material - The material.
690
- * @return {String} The GPU depth compare function.
698
+ * @return {string} The GPU depth compare function.
691
699
  */
692
700
  _getDepthCompare( material ) {
693
701
 
@@ -105,7 +105,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
105
105
  * A cache for GPU render pipelines used for copy/transfer passes.
106
106
  * Every texture format requires a unique pipeline.
107
107
  *
108
- * @type {Object<String,GPURenderPipeline>}
108
+ * @type {Object<string,GPURenderPipeline>}
109
109
  */
110
110
  this.transferPipelines = {};
111
111
 
@@ -113,7 +113,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
113
113
  * A cache for GPU render pipelines used for flipY passes.
114
114
  * Every texture format requires a unique pipeline.
115
115
  *
116
- * @type {Object<String,GPURenderPipeline>}
116
+ * @type {Object<string,GPURenderPipeline>}
117
117
  */
118
118
  this.flipYPipelines = {};
119
119
 
@@ -153,7 +153,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
153
153
  * Returns a render pipeline for the internal copy render pass. The pass
154
154
  * requires a unique render pipeline for each texture format.
155
155
  *
156
- * @param {String} format - The GPU texture format
156
+ * @param {string} format - The GPU texture format
157
157
  * @return {GPURenderPipeline} The GPU render pipeline.
158
158
  */
159
159
  getTransferPipeline( format ) {
@@ -192,7 +192,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
192
192
  * Returns a render pipeline for the flipY render pass. The pass
193
193
  * requires a unique render pipeline for each texture format.
194
194
  *
195
- * @param {String} format - The GPU texture format
195
+ * @param {string} format - The GPU texture format
196
196
  * @return {GPURenderPipeline} The GPU render pipeline.
197
197
  */
198
198
  getFlipYPipeline( format ) {
@@ -232,7 +232,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
232
232
  *
233
233
  * @param {GPUTexture} textureGPU - The GPU texture object.
234
234
  * @param {Object} textureGPUDescriptor - The texture descriptor.
235
- * @param {Number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
235
+ * @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
236
236
  */
237
237
  flipY( textureGPU, textureGPUDescriptor, baseArrayLayer = 0 ) {
238
238
 
@@ -309,7 +309,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
309
309
  *
310
310
  * @param {GPUTexture} textureGPU - The GPU texture object.
311
311
  * @param {Object} textureGPUDescriptor - The texture descriptor.
312
- * @param {Number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
312
+ * @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
313
313
  */
314
314
  generateMipmaps( textureGPU, textureGPUDescriptor, baseArrayLayer = 0 ) {
315
315
 
@@ -342,8 +342,8 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
342
342
  *
343
343
  * @param {GPUTexture} textureGPU - The GPU texture object.
344
344
  * @param {Object} textureGPUDescriptor - The texture descriptor.
345
- * @param {Number} baseArrayLayer - The index of the first array layer accessible to the texture view.
346
- * @return {Array} An array of render bundles.
345
+ * @param {number} baseArrayLayer - The index of the first array layer accessible to the texture view.
346
+ * @return {Array<Object>} An array of render bundles.
347
347
  */
348
348
  _mipmapCreateBundles( textureGPU, textureGPUDescriptor, baseArrayLayer ) {
349
349
 
@@ -414,7 +414,7 @@ fn main( @location( 0 ) vTex : vec2<f32> ) -> @location( 0 ) vec4<f32> {
414
414
  * Executes the render bundles.
415
415
  *
416
416
  * @param {GPUCommandEncoder} commandEncoder - The GPU command encoder.
417
- * @param {Array} passes - An array of render bundles.
417
+ * @param {Array<Object>} passes - An array of render bundles.
418
418
  */
419
419
  _mipmapRunBundles( commandEncoder, passes ) {
420
420
 
@@ -56,7 +56,7 @@ class WebGPUTextureUtils {
56
56
  /**
57
57
  * A reference to the pass utils.
58
58
  *
59
- * @type {WebGPUTexturePassUtils?}
59
+ * @type {?WebGPUTexturePassUtils}
60
60
  * @default null
61
61
  */
62
62
  this._passUtils = null;
@@ -65,7 +65,7 @@ class WebGPUTextureUtils {
65
65
  * A dictionary for managing default textures. The key
66
66
  * is the texture format, the value the texture object.
67
67
  *
68
- * @type {Object<String,Texture>}
68
+ * @type {Object<string,Texture>}
69
69
  */
70
70
  this.defaultTexture = {};
71
71
 
@@ -73,14 +73,14 @@ class WebGPUTextureUtils {
73
73
  * A dictionary for managing default cube textures. The key
74
74
  * is the texture format, the value the texture object.
75
75
  *
76
- * @type {Object<String,CubeTexture>}
76
+ * @type {Object<string,CubeTexture>}
77
77
  */
78
78
  this.defaultCubeTexture = {};
79
79
 
80
80
  /**
81
81
  * A default video frame.
82
82
  *
83
- * @type {VideoFrame?}
83
+ * @type {?VideoFrame}
84
84
  * @default null
85
85
  */
86
86
  this.defaultVideoFrame = null;
@@ -88,7 +88,7 @@ class WebGPUTextureUtils {
88
88
  /**
89
89
  * Represents the color attachment of the default framebuffer.
90
90
  *
91
- * @type {GPUTexture?}
91
+ * @type {?GPUTexture}
92
92
  * @default null
93
93
  */
94
94
  this.colorBuffer = null;
@@ -178,7 +178,6 @@ class WebGPUTextureUtils {
178
178
  *
179
179
  * @param {Texture} texture - The texture.
180
180
  * @param {Object} [options={}] - Optional configuration parameter.
181
- * @return {undefined}
182
181
  */
183
182
  createTexture( texture, options = {} ) {
184
183
 
@@ -266,7 +265,8 @@ class WebGPUTextureUtils {
266
265
 
267
266
  console.warn( 'WebGPURenderer: Texture format not supported.' );
268
267
 
269
- return this.createDefaultTexture( texture );
268
+ this.createDefaultTexture( texture );
269
+ return;
270
270
 
271
271
  }
272
272
 
@@ -387,8 +387,8 @@ class WebGPUTextureUtils {
387
387
  * Returns the depth buffer representing the depth
388
388
  * attachment of the default framebuffer.
389
389
  *
390
- * @param {Boolean} [depth=true] - Whether depth is enabled or not.
391
- * @param {Boolean} [stencil=false] - Whether stencil is enabled or not.
390
+ * @param {boolean} [depth=true] - Whether depth is enabled or not.
391
+ * @param {boolean} [stencil=false] - Whether stencil is enabled or not.
392
392
  * @return {GPUTexture} The depth buffer.
393
393
  */
394
394
  getDepthBuffer( depth = true, stencil = false ) {
@@ -499,11 +499,11 @@ class WebGPUTextureUtils {
499
499
  *
500
500
  * @async
501
501
  * @param {Texture} texture - The texture to copy.
502
- * @param {Number} x - The x coordinate of the copy origin.
503
- * @param {Number} y - The y coordinate of the copy origin.
504
- * @param {Number} width - The width of the copy.
505
- * @param {Number} height - The height of the copy.
506
- * @param {Number} faceIndex - The face index.
502
+ * @param {number} x - The x coordinate of the copy origin.
503
+ * @param {number} y - The y coordinate of the copy origin.
504
+ * @param {number} width - The width of the copy.
505
+ * @param {number} height - The height of the copy.
506
+ * @param {number} faceIndex - The face index.
507
507
  * @return {Promise<TypedArray>} A Promise that resolves with a typed array when the copy operation has finished.
508
508
  */
509
509
  async copyTextureToBuffer( texture, x, y, width, height, faceIndex ) {
@@ -560,7 +560,7 @@ class WebGPUTextureUtils {
560
560
  *
561
561
  * @private
562
562
  * @param {Texture} texture - The texture.
563
- * @return {Boolean} Whether the given texture is an environment map or not.
563
+ * @return {boolean} Whether the given texture is an environment map or not.
564
564
  */
565
565
  _isEnvironmentTexture( texture ) {
566
566
 
@@ -574,7 +574,7 @@ class WebGPUTextureUtils {
574
574
  * Returns the default GPU texture for the given format.
575
575
  *
576
576
  * @private
577
- * @param {String} format - The GPU format.
577
+ * @param {string} format - The GPU format.
578
578
  * @return {GPUTexture} The GPU texture.
579
579
  */
580
580
  _getDefaultTextureGPU( format ) {
@@ -601,7 +601,7 @@ class WebGPUTextureUtils {
601
601
  * Returns the default GPU cube texture for the given format.
602
602
  *
603
603
  * @private
604
- * @param {String} format - The GPU format.
604
+ * @param {string} format - The GPU format.
605
605
  * @return {GPUTexture} The GPU texture.
606
606
  */
607
607
  _getDefaultCubeTextureGPU( format ) {
@@ -658,7 +658,7 @@ class WebGPUTextureUtils {
658
658
  * @param {Array} images - The cube image data.
659
659
  * @param {GPUTexture} textureGPU - The GPU texture.
660
660
  * @param {Object} textureDescriptorGPU - The GPU texture descriptor.
661
- * @param {Boolean} flipY - Whether to flip texture data along their vertical axis or not.
661
+ * @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
662
662
  */
663
663
  _copyCubeMapToTexture( images, textureGPU, textureDescriptorGPU, flipY ) {
664
664
 
@@ -689,8 +689,8 @@ class WebGPUTextureUtils {
689
689
  * @param {HTMLImageElement|ImageBitmap|HTMLCanvasElement} image - The image data.
690
690
  * @param {GPUTexture} textureGPU - The GPU texture.
691
691
  * @param {Object} textureDescriptorGPU - The GPU texture descriptor.
692
- * @param {Number} originDepth - The origin depth.
693
- * @param {Boolean} flipY - Whether to flip texture data along their vertical axis or not.
692
+ * @param {number} originDepth - The origin depth.
693
+ * @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
694
694
  */
695
695
  _copyImageToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY ) {
696
696
 
@@ -739,7 +739,7 @@ class WebGPUTextureUtils {
739
739
  * @private
740
740
  * @param {GPUTexture} textureGPU - The GPU texture object.
741
741
  * @param {Object} textureDescriptorGPU - The texture descriptor.
742
- * @param {Number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
742
+ * @param {number} [baseArrayLayer=0] - The index of the first array layer accessible to the texture view.
743
743
  */
744
744
  _generateMipmaps( textureGPU, textureDescriptorGPU, baseArrayLayer = 0 ) {
745
745
 
@@ -753,7 +753,7 @@ class WebGPUTextureUtils {
753
753
  * @private
754
754
  * @param {GPUTexture} textureGPU - The GPU texture object.
755
755
  * @param {Object} textureDescriptorGPU - The texture descriptor.
756
- * @param {Number} [originDepth=0] - The origin depth.
756
+ * @param {number} [originDepth=0] - The origin depth.
757
757
  */
758
758
  _flipY( textureGPU, textureDescriptorGPU, originDepth = 0 ) {
759
759
 
@@ -768,9 +768,9 @@ class WebGPUTextureUtils {
768
768
  * @param {Object} image - An object defining the image buffer data.
769
769
  * @param {GPUTexture} textureGPU - The GPU texture.
770
770
  * @param {Object} textureDescriptorGPU - The GPU texture descriptor.
771
- * @param {Number} originDepth - The origin depth.
772
- * @param {Boolean} flipY - Whether to flip texture data along their vertical axis or not.
773
- * @param {Number} [depth=0] - TODO.
771
+ * @param {number} originDepth - The origin depth.
772
+ * @param {boolean} flipY - Whether to flip texture data along their vertical axis or not.
773
+ * @param {number} [depth=0] - TODO.
774
774
  */
775
775
  _copyBufferToTexture( image, textureGPU, textureDescriptorGPU, originDepth, flipY, depth = 0 ) {
776
776
 
@@ -869,7 +869,7 @@ class WebGPUTextureUtils {
869
869
  * data descriptor for the given GPU compressed texture format.
870
870
  *
871
871
  * @private
872
- * @param {String} format - The GPU compressed texture format.
872
+ * @param {string} format - The GPU compressed texture format.
873
873
  * @return {Object} The block data descriptor.
874
874
  */
875
875
  _getBlockData( format ) {
@@ -877,7 +877,7 @@ class WebGPUTextureUtils {
877
877
  if ( format === GPUTextureFormat.BC1RGBAUnorm || format === GPUTextureFormat.BC1RGBAUnormSRGB ) return { byteLength: 8, width: 4, height: 4 }; // DXT1
878
878
  if ( format === GPUTextureFormat.BC2RGBAUnorm || format === GPUTextureFormat.BC2RGBAUnormSRGB ) return { byteLength: 16, width: 4, height: 4 }; // DXT3
879
879
  if ( format === GPUTextureFormat.BC3RGBAUnorm || format === GPUTextureFormat.BC3RGBAUnormSRGB ) return { byteLength: 16, width: 4, height: 4 }; // DXT5
880
- if ( format === GPUTextureFormat.BC4RUnorm || format === GPUTextureFormat.BC4RSNorm ) return { byteLength: 8, width: 4, height: 4 }; // RGTC1
880
+ if ( format === GPUTextureFormat.BC4RUnorm || format === GPUTextureFormat.BC4RSnorm ) return { byteLength: 8, width: 4, height: 4 }; // RGTC1
881
881
  if ( format === GPUTextureFormat.BC5RGUnorm || format === GPUTextureFormat.BC5RGSnorm ) return { byteLength: 16, width: 4, height: 4 }; // RGTC2
882
882
  if ( format === GPUTextureFormat.BC6HRGBUFloat || format === GPUTextureFormat.BC6HRGBFloat ) return { byteLength: 16, width: 4, height: 4 }; // BPTC (float)
883
883
  if ( format === GPUTextureFormat.BC7RGBAUnorm || format === GPUTextureFormat.BC7RGBAUnormSRGB ) return { byteLength: 16, width: 4, height: 4 }; // BPTC (unorm)
@@ -911,8 +911,8 @@ class WebGPUTextureUtils {
911
911
  * Converts the three.js uv wrapping constants to GPU address mode constants.
912
912
  *
913
913
  * @private
914
- * @param {Number} value - The three.js constant defining a uv wrapping mode.
915
- * @return {String} The GPU address mode.
914
+ * @param {number} value - The three.js constant defining a uv wrapping mode.
915
+ * @return {string} The GPU address mode.
916
916
  */
917
917
  _convertAddressMode( value ) {
918
918
 
@@ -936,8 +936,8 @@ class WebGPUTextureUtils {
936
936
  * Converts the three.js filter constants to GPU filter constants.
937
937
  *
938
938
  * @private
939
- * @param {Number} value - The three.js constant defining a filter mode.
940
- * @return {String} The GPU filter mode.
939
+ * @param {number} value - The three.js constant defining a filter mode.
940
+ * @return {string} The GPU filter mode.
941
941
  */
942
942
  _convertFilterMode( value ) {
943
943
 
@@ -957,8 +957,8 @@ class WebGPUTextureUtils {
957
957
  * Returns the bytes-per-texel value for the given GPU texture format.
958
958
  *
959
959
  * @private
960
- * @param {String} format - The GPU texture format.
961
- * @return {Number} The bytes-per-texel.
960
+ * @param {string} format - The GPU texture format.
961
+ * @return {number} The bytes-per-texel.
962
962
  */
963
963
  _getBytesPerTexel( format ) {
964
964
 
@@ -1020,7 +1020,7 @@ class WebGPUTextureUtils {
1020
1020
  * Returns the corresponding typed array type for the given GPU texture format.
1021
1021
  *
1022
1022
  * @private
1023
- * @param {String} format - The GPU texture format.
1023
+ * @param {string} format - The GPU texture format.
1024
1024
  * @return {TypedArray.constructor} The typed array type.
1025
1025
  */
1026
1026
  _getTypedArrayType( format ) {
@@ -1078,7 +1078,7 @@ class WebGPUTextureUtils {
1078
1078
  *
1079
1079
  * @private
1080
1080
  * @param {Texture} texture - The texture.
1081
- * @return {String} The GPU dimension.
1081
+ * @return {string} The GPU dimension.
1082
1082
  */
1083
1083
  _getDimension( texture ) {
1084
1084
 
@@ -1104,9 +1104,9 @@ class WebGPUTextureUtils {
1104
1104
  * Returns the GPU format for the given texture.
1105
1105
  *
1106
1106
  * @param {Texture} texture - The texture.
1107
- * @param {GPUDevice?} [device=null] - The GPU device which is used for feature detection.
1107
+ * @param {?GPUDevice} [device=null] - The GPU device which is used for feature detection.
1108
1108
  * It is not necessary to apply the device for most formats.
1109
- * @return {String} The GPU format.
1109
+ * @return {string} The GPU format.
1110
1110
  */
1111
1111
  export function getFormat( texture, device = null ) {
1112
1112
 
@@ -4,16 +4,18 @@ import TimestampQueryPool from '../../common/TimestampQueryPool.js';
4
4
  /**
5
5
  * Manages a pool of WebGPU timestamp queries for performance measurement.
6
6
  * Extends the base TimestampQueryPool to provide WebGPU-specific implementation.
7
- * @extends TimestampQueryPool
7
+ *
8
+ * @augments TimestampQueryPool
8
9
  */
9
10
  class WebGPUTimestampQueryPool extends TimestampQueryPool {
10
11
 
11
12
  /**
12
- * Creates a new WebGPU timestamp query pool.
13
- * @param {GPUDevice} device - The WebGPU device to create queries on.
14
- * @param {string} type - The type identifier for this query pool.
15
- * @param {number} [maxQueries=2048] - Maximum number of queries this pool can hold.
16
- */
13
+ * Creates a new WebGPU timestamp query pool.
14
+ *
15
+ * @param {GPUDevice} device - The WebGPU device to create queries on.
16
+ * @param {string} type - The type identifier for this query pool.
17
+ * @param {number} [maxQueries=2048] - Maximum number of queries this pool can hold.
18
+ */
17
19
  constructor( device, type, maxQueries = 2048 ) {
18
20
 
19
21
  super( maxQueries );
@@ -42,10 +44,11 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
42
44
  }
43
45
 
44
46
  /**
45
- * Allocates a pair of queries for a given render context.
46
- * @param {Object} renderContext - The render context to allocate queries for.
47
- * @returns {?number} The base offset for the allocated queries, or null if allocation failed.
48
- */
47
+ * Allocates a pair of queries for a given render context.
48
+ *
49
+ * @param {Object} renderContext - The render context to allocate queries for.
50
+ * @returns {?number} The base offset for the allocated queries, or null if allocation failed.
51
+ */
49
52
  allocateQueriesForContext( renderContext ) {
50
53
 
51
54
  if ( ! this.trackTimestamp || this.isDisposed ) return null;
@@ -66,10 +69,12 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
66
69
  }
67
70
 
68
71
  /**
69
- * Asynchronously resolves all pending queries and returns the total duration.
70
- * If there's already a pending resolve operation, returns that promise instead.
71
- * @returns {Promise<number>} The total duration in milliseconds, or the last valid value if resolution fails.
72
- */
72
+ * Asynchronously resolves all pending queries and returns the total duration.
73
+ * If there's already a pending resolve operation, returns that promise instead.
74
+ *
75
+ * @async
76
+ * @returns {Promise<number>} The total duration in milliseconds, or the last valid value if resolution fails.
77
+ */
73
78
  async resolveQueriesAsync() {
74
79
 
75
80
  if ( ! this.trackTimestamp || this.currentQueryIndex === 0 || this.isDisposed ) {
@@ -100,10 +105,12 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
100
105
  }
101
106
 
102
107
  /**
103
- * Internal method to resolve queries and calculate total duration.
104
- * @private
105
- * @returns {Promise<number>} The total duration in milliseconds.
106
- */
108
+ * Internal method to resolve queries and calculate total duration.
109
+ *
110
+ * @async
111
+ * @private
112
+ * @returns {Promise<number>} The total duration in milliseconds.
113
+ */
107
114
  async _resolveQueries() {
108
115
 
109
116
  if ( this.isDisposed ) {
@@ -202,6 +209,12 @@ class WebGPUTimestampQueryPool extends TimestampQueryPool {
202
209
 
203
210
  }
204
211
 
212
+ /**
213
+ * Dispose of the query pool.
214
+ *
215
+ * @async
216
+ * @returns {Promise} A Promise that resolves when the dispose has been executed.
217
+ */
205
218
  async dispose() {
206
219
 
207
220
  if ( this.isDisposed ) {