super-three 0.173.4 → 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 +22198 -1564
  2. package/build/three.core.js +21287 -1346
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +882 -189
  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 +19358 -17482
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +19342 -17482
  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 +187 -11
  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
@@ -30,12 +30,38 @@ import { EXRLoader } from '../loaders/EXRLoader.js';
30
30
 
31
31
  const _taskCache = new WeakMap();
32
32
 
33
+ /**
34
+ * A loader for Rhinoceros 3D files and objects.
35
+ *
36
+ * Rhinoceros is a 3D modeler used to create, edit, analyze, document, render,
37
+ * animate, and translate NURBS curves, surfaces, breps, extrusions, point clouds,
38
+ * as well as polygon meshes and SubD objects. `rhino3dm.js` is compiled to WebAssembly
39
+ * from the open source geometry library `openNURBS`. The loader currently uses
40
+ * `rhino3dm.js 8.4.0`.
41
+ *
42
+ * ```js
43
+ * const loader = new Rhino3dmLoader();
44
+ * loader.setLibraryPath( 'https://cdn.jsdelivr.net/npm/rhino3dm@8.0.1' );
45
+ *
46
+ * const object = await loader.loadAsync( 'models/3dm/Rhino_Logo.3dm' );
47
+ * scene.add( object );
48
+ * ```
49
+ *
50
+ * @augments Loader
51
+ */
33
52
  class Rhino3dmLoader extends Loader {
34
53
 
54
+ /**
55
+ * Constructs a new Rhino 3DM loader.
56
+ *
57
+ * @param {LoadingManager} [manager] - The loading manager.
58
+ */
35
59
  constructor( manager ) {
36
60
 
37
61
  super( manager );
38
62
 
63
+ // internals
64
+
39
65
  this.libraryPath = '';
40
66
  this.libraryPending = null;
41
67
  this.libraryBinary = null;
@@ -54,6 +80,12 @@ class Rhino3dmLoader extends Loader {
54
80
 
55
81
  }
56
82
 
83
+ /**
84
+ * Path to a folder containing the JS and WASM libraries.
85
+ *
86
+ * @param {string} path - The library path to set.
87
+ * @return {Rhino3dmLoader} A reference to this loader.
88
+ */
57
89
  setLibraryPath( path ) {
58
90
 
59
91
  this.libraryPath = path;
@@ -62,6 +94,14 @@ class Rhino3dmLoader extends Loader {
62
94
 
63
95
  }
64
96
 
97
+ /**
98
+ * Sets the maximum number of Web Workers to be used during decoding.
99
+ * A lower limit may be preferable if workers are also for other
100
+ * tasks in the application.
101
+ *
102
+ * @param {number} workerLimit - The worker limit.
103
+ * @return {Rhino3dmLoader} A reference to this loader.
104
+ */
65
105
  setWorkerLimit( workerLimit ) {
66
106
 
67
107
  this.workerLimit = workerLimit;
@@ -70,6 +110,15 @@ class Rhino3dmLoader extends Loader {
70
110
 
71
111
  }
72
112
 
113
+ /**
114
+ * Starts loading from the given URL and passes the loaded 3DM asset
115
+ * to the `onLoad()` callback.
116
+ *
117
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
118
+ * @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
119
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
120
+ * @param {onErrorCallback} onError - Executed when errors occur.
121
+ */
73
122
  load( url, onLoad, onProgress, onError ) {
74
123
 
75
124
  const loader = new FileLoader( this.manager );
@@ -105,12 +154,22 @@ class Rhino3dmLoader extends Loader {
105
154
 
106
155
  }
107
156
 
157
+ /**
158
+ * Prints debug messages to the browser console.
159
+ */
108
160
  debug() {
109
161
 
110
162
  console.log( 'Task load: ', this.workerPool.map( ( worker ) => worker._taskLoad ) );
111
163
 
112
164
  }
113
165
 
166
+ /**
167
+ * Decodes the 3DM asset data with a Web Worker.
168
+ *
169
+ * @param {ArrayBuffer} buffer - The raw 3DM asset data as an array buffer.
170
+ * @param {string} url - The asset URL.
171
+ * @return {Promise<Object3D>} A Promise that resolved with the decoded 3D object.
172
+ */
114
173
  decodeObjects( buffer, url ) {
115
174
 
116
175
  let worker;
@@ -170,6 +229,14 @@ class Rhino3dmLoader extends Loader {
170
229
 
171
230
  }
172
231
 
232
+ /**
233
+ * Parses the given 3DM data and passes the loaded 3DM asset
234
+ * to the `onLoad()` callback.
235
+ *
236
+ * @param {ArrayBuffer} data - The raw 3DM asset data as an array buffer.
237
+ * @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
238
+ * @param {onErrorCallback} onError - Executed when errors occur.
239
+ */
173
240
  parse( data, onLoad, onError ) {
174
241
 
175
242
  this.decodeObjects( data, '' )
@@ -962,6 +1029,10 @@ class Rhino3dmLoader extends Loader {
962
1029
 
963
1030
  }
964
1031
 
1032
+ /**
1033
+ * Frees internal resources. This method should be called
1034
+ * when the loader is no longer required.
1035
+ */
965
1036
  dispose() {
966
1037
 
967
1038
  for ( let i = 0; i < this.workerPool.length; ++ i ) {
@@ -972,8 +1043,6 @@ class Rhino3dmLoader extends Loader {
972
1043
 
973
1044
  this.workerPool.length = 0;
974
1045
 
975
- return this;
976
-
977
1046
  }
978
1047
 
979
1048
  }
@@ -24,8 +24,7 @@ import * as fflate from '../libs/fflate.module.js';
24
24
  const COLOR_SPACE_3MF = SRGBColorSpace;
25
25
 
26
26
  /**
27
- *
28
- * 3D Manufacturing Format (3MF) specification: https://3mf.io/specification/
27
+ * A loader for the [3D Manufacturing Format (3MF)]{@link https://3mf.io/specification/} format.
29
28
  *
30
29
  * The following features from the core specification are supported:
31
30
  *
@@ -39,18 +38,46 @@ const COLOR_SPACE_3MF = SRGBColorSpace;
39
38
  * - Texture 2D Groups
40
39
  * - Color Groups (Vertex Colors)
41
40
  * - Metallic Display Properties (PBR)
41
+ *
42
+ * ```js
43
+ * const loader = new ThreeMFLoader();
44
+ *
45
+ * const object = await loader.loadAsync( './models/3mf/truck.3mf' );
46
+ * object.rotation.set( - Math.PI / 2, 0, 0 ); // z-up conversion
47
+ * scene.add( object );
48
+ * ```
49
+ *
50
+ * @augments Loader
42
51
  */
43
-
44
52
  class ThreeMFLoader extends Loader {
45
53
 
54
+ /**
55
+ * Constructs a new 3MF loader.
56
+ *
57
+ * @param {LoadingManager} [manager] - The loading manager.
58
+ */
46
59
  constructor( manager ) {
47
60
 
48
61
  super( manager );
49
62
 
63
+ /**
64
+ * An array of available extensions.
65
+ *
66
+ * @type {Array<Object>}
67
+ */
50
68
  this.availableExtensions = [];
51
69
 
52
70
  }
53
71
 
72
+ /**
73
+ * Starts loading from the given URL and passes the loaded 3MF asset
74
+ * to the `onLoad()` callback.
75
+ *
76
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
77
+ * @param {function(Group)} onLoad - Executed when the loading process has been finished.
78
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
79
+ * @param {onErrorCallback} onError - Executed when errors occur.
80
+ */
54
81
  load( url, onLoad, onProgress, onError ) {
55
82
 
56
83
  const scope = this;
@@ -85,6 +112,12 @@ class ThreeMFLoader extends Loader {
85
112
 
86
113
  }
87
114
 
115
+ /**
116
+ * Parses the given 3MF data and returns the resulting group.
117
+ *
118
+ * @param {ArrayBuffer} data - The raw 3MF asset data as an array buffer.
119
+ * @return {Group} A group representing the parsed asset.
120
+ */
88
121
  parse( data ) {
89
122
 
90
123
  const scope = this;
@@ -122,6 +155,8 @@ class ThreeMFLoader extends Loader {
122
155
 
123
156
  }
124
157
 
158
+ let rootModelFile = null;
159
+
125
160
  for ( file in zip ) {
126
161
 
127
162
  if ( file.match( /\_rels\/.rels$/ ) ) {
@@ -132,9 +167,13 @@ class ThreeMFLoader extends Loader {
132
167
 
133
168
  modelRelsName = file;
134
169
 
135
- } else if ( file.match( /^3D\/.*\.model$/ ) ) {
170
+ } else if ( file.match( /^3D\/[^\/]*\.model$/ ) ) {
171
+
172
+ rootModelFile = file;
136
173
 
137
- modelPartNames.push( file );
174
+ } else if ( file.match( /^3D\/.*\/.*\.model$/ ) ) {
175
+
176
+ modelPartNames.push( file ); // sub models
138
177
 
139
178
  } else if ( file.match( /^3D\/Textures?\/.*/ ) ) {
140
179
 
@@ -144,6 +183,8 @@ class ThreeMFLoader extends Loader {
144
183
 
145
184
  }
146
185
 
186
+ modelPartNames.push( rootModelFile ); // push root model at the end so it is processed after the sub models
187
+
147
188
  if ( relsName === undefined ) throw new Error( 'THREE.ThreeMFLoader: Cannot find relationship file `rels` in 3MF archive.' );
148
189
 
149
190
  //
@@ -1563,6 +1604,11 @@ class ThreeMFLoader extends Loader {
1563
1604
 
1564
1605
  }
1565
1606
 
1607
+ /**
1608
+ * Adds a 3MF extension.
1609
+ *
1610
+ * @param {Object} extension - The extension to add.
1611
+ */
1566
1612
  addExtension( extension ) {
1567
1613
 
1568
1614
  this.availableExtensions.push( extension );
@@ -11,29 +11,42 @@ import {
11
11
  import * as fflate from '../libs/fflate.module.js';
12
12
 
13
13
  /**
14
- * Description: Early release of an AMF Loader following the pattern of the
15
- * example loaders in the three.js project.
14
+ * A loader for the AMF format.
16
15
  *
17
- * Usage:
18
- * const loader = new AMFLoader();
19
- * loader.load('/path/to/project.amf', function(objecttree) {
20
- * scene.add(objecttree);
21
- * });
16
+ * The loader supports materials, color and ZIP compressed files.
17
+ * No constellation support (yet).
22
18
  *
23
- * Materials now supported, material colors supported
24
- * Zip support, requires fflate
25
- * No constellation support (yet)!
19
+ * ```js
20
+ * const loader = new AMFLoader();
26
21
  *
22
+ * const object = await loader.loadAsync( './models/amf/rook.amf' );
23
+ * scene.add( object );
24
+ * ```
25
+ *
26
+ * @augments Loader
27
27
  */
28
-
29
28
  class AMFLoader extends Loader {
30
29
 
30
+ /**
31
+ * Constructs a new AMF loader.
32
+ *
33
+ * @param {LoadingManager} [manager] - The loading manager.
34
+ */
31
35
  constructor( manager ) {
32
36
 
33
37
  super( manager );
34
38
 
35
39
  }
36
40
 
41
+ /**
42
+ * Starts loading from the given URL and passes the loaded AMF asset
43
+ * to the `onLoad()` callback.
44
+ *
45
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
46
+ * @param {function(Group)} onLoad - Executed when the loading process has been finished.
47
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
48
+ * @param {onErrorCallback} onError - Executed when errors occur.
49
+ */
37
50
  load( url, onLoad, onProgress, onError ) {
38
51
 
39
52
  const scope = this;
@@ -69,6 +82,12 @@ class AMFLoader extends Loader {
69
82
 
70
83
  }
71
84
 
85
+ /**
86
+ * Parses the given AMF data and returns the resulting group.
87
+ *
88
+ * @param {ArrayBuffer} data - The raw AMF asset data as an array buffer.
89
+ * @return {Group} A group representing the parsed asset.
90
+ */
72
91
  parse( data ) {
73
92
 
74
93
  function loadDocument( data ) {
@@ -236,7 +255,7 @@ class AMFLoader extends Loader {
236
255
 
237
256
  function loadMeshVolume( node ) {
238
257
 
239
- const volume = { name: '', triangles: [], materialid: null };
258
+ const volume = { name: '', triangles: [], materialId: null };
240
259
 
241
260
  let currVolumeNode = node.firstElementChild;
242
261
 
@@ -11,23 +11,65 @@ import {
11
11
  } from 'three';
12
12
 
13
13
  /**
14
- * Description: reads BVH files and outputs a single Skeleton and an AnimationClip
14
+ * A loader for the BVH format.
15
15
  *
16
- * Currently only supports bvh files containing a single root.
16
+ * Imports BVH files and outputs a single {@link Skeleton} and {@link AnimationClip}.
17
+ * The loader only supports BVH files containing a single root right now.
17
18
  *
19
+ * ```js
20
+ * const loader = new BVHLoader();
21
+ * const result = await loader.loadAsync( 'models/bvh/pirouette.bvh' );
22
+ *
23
+ * // visualize skeleton
24
+ * const skeletonHelper = new THREE.SkeletonHelper( result.skeleton.bones[ 0 ] );
25
+ * scene.add( result.skeleton.bones[ 0 ] );
26
+ * scene.add( skeletonHelper );
27
+ *
28
+ * // play animation clip
29
+ * mixer = new THREE.AnimationMixer( result.skeleton.bones[ 0 ] );
30
+ * mixer.clipAction( result.clip ).play();
31
+ * ```
32
+ *
33
+ * @augments Loader
18
34
  */
19
-
20
35
  class BVHLoader extends Loader {
21
36
 
37
+ /**
38
+ * Constructs a new BVH loader.
39
+ *
40
+ * @param {LoadingManager} [manager] - The loading manager.
41
+ */
22
42
  constructor( manager ) {
23
43
 
24
44
  super( manager );
25
45
 
46
+ /**
47
+ * Whether to animate bone positions or not.
48
+ *
49
+ * @type {boolean}
50
+ * @default true
51
+ */
26
52
  this.animateBonePositions = true;
53
+
54
+ /**
55
+ * Whether to animate bone rotations or not.
56
+ *
57
+ * @type {boolean}
58
+ * @default true
59
+ */
27
60
  this.animateBoneRotations = true;
28
61
 
29
62
  }
30
63
 
64
+ /**
65
+ * Starts loading from the given URL and passes the loaded BVH asset
66
+ * to the `onLoad()` callback.
67
+ *
68
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
69
+ * @param {function({skeleton:Skeleton,clip:AnimationClip})} onLoad - Executed when the loading process has been finished.
70
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
71
+ * @param {onErrorCallback} onError - Executed when errors occur.
72
+ */
31
73
  load( url, onLoad, onProgress, onError ) {
32
74
 
33
75
  const scope = this;
@@ -62,15 +104,19 @@ class BVHLoader extends Loader {
62
104
 
63
105
  }
64
106
 
107
+ /**
108
+ * Parses the given BVH data and returns the resulting data.
109
+ *
110
+ * @param {string} text - The raw BVH data as a string.
111
+ * @return {{skeleton:Skeleton,clip:AnimationClip}} An object representing the parsed asset.
112
+ */
65
113
  parse( text ) {
66
114
 
67
- /*
68
- reads a string array (lines) from a BVH file
69
- and outputs a skeleton structure including motion data
115
+ // reads a string array (lines) from a BVH file
116
+ // and outputs a skeleton structure including motion data
70
117
 
71
- returns thee root node:
72
- { name: '', channels: [], children: [] }
73
- */
118
+ // returns thee root node:
119
+ // { name: '', channels: [], children: [] }
74
120
  function readBvh( lines ) {
75
121
 
76
122
  // read model structure
@@ -338,11 +384,11 @@ class BVHLoader extends Loader {
338
384
  }
339
385
 
340
386
  /*
341
- builds a AnimationClip from the keyframe data saved in each bone.
387
+ builds an AnimationClip from the keyframe data saved in each bone.
342
388
 
343
389
  bone: bvh root node
344
390
 
345
- returns: a AnimationClip containing position and quaternion tracks
391
+ returns: an AnimationClip containing position and quaternion tracks
346
392
  */
347
393
  function toTHREEAnimation( bones ) {
348
394
 
@@ -41,8 +41,35 @@ import {
41
41
  } from 'three';
42
42
  import { TGALoader } from '../loaders/TGALoader.js';
43
43
 
44
+ /**
45
+ * A loader for the Collada format.
46
+ *
47
+ * The Collada format is very complex so this loader only supports a subset of what
48
+ * is defined in the [official specification]{@link https://www.khronos.org/files/collada_spec_1_5.pdf}.
49
+ *
50
+ * Assets with a Z-UP coordinate system are transformed it into Y-UP by a simple rotation.
51
+ * The vertex data are not converted.
52
+ *
53
+ * ```js
54
+ * const loader = new ColladaLoader();
55
+ *
56
+ * const result = await loader.loadAsync( './models/collada/elf/elf.dae' );
57
+ * scene.add( result.scene );
58
+ * ```
59
+ *
60
+ * @augments Loader
61
+ */
44
62
  class ColladaLoader extends Loader {
45
63
 
64
+ /**
65
+ * Starts loading from the given URL and passes the loaded Collada asset
66
+ * to the `onLoad()` callback.
67
+ *
68
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
69
+ * @param {function({scene:Group,animations:Array<AnimationClip>,kinematics:Object})} onLoad - Executed when the loading process has been finished.
70
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
71
+ * @param {onErrorCallback} onError - Executed when errors occur.
72
+ */
46
73
  load( url, onLoad, onProgress, onError ) {
47
74
 
48
75
  const scope = this;
@@ -79,6 +106,14 @@ class ColladaLoader extends Loader {
79
106
 
80
107
  }
81
108
 
109
+ /**
110
+ * Parses the given Collada data and returns a result oject holding the parsed scene,
111
+ * an array of animation clips and kinematics.
112
+ *
113
+ * @param {string} text - The raw Collada data as a string.
114
+ * @param {string} path - The asset path.
115
+ * @return {{scene:Group,animations:Array<AnimationClip>,kinematics:Object}} An object representing the parsed asset.
116
+ */
82
117
  parse( text, path ) {
83
118
 
84
119
  function getElementsByTagName( xml, name ) {
@@ -3971,7 +4006,7 @@ class ColladaLoader extends Loader {
3971
4006
  } else {
3972
4007
 
3973
4008
  result += '\n';
3974
- stack.push.apply( stack, node.childNodes );
4009
+ stack.push( ...node.childNodes );
3975
4010
 
3976
4011
  }
3977
4012
 
@@ -9,14 +9,38 @@ import {
9
9
  RGB_BPTC_UNSIGNED_Format
10
10
  } from 'three';
11
11
 
12
+ /**
13
+ * A loader for the S3TC texture compression format.
14
+ *
15
+ * ```js
16
+ * const loader = new DDSLoader();
17
+ *
18
+ * const map = loader.load( 'textures/compressed/disturb_dxt1_nomip.dds' );
19
+ * map.colorSpace = THREE.SRGBColorSpace; // only for color textures
20
+ * ```
21
+ *
22
+ * @augments CompressedTextureLoader
23
+ */
12
24
  class DDSLoader extends CompressedTextureLoader {
13
25
 
26
+ /**
27
+ * Constructs a new DDS loader.
28
+ *
29
+ * @param {LoadingManager} [manager] - The loading manager.
30
+ */
14
31
  constructor( manager ) {
15
32
 
16
33
  super( manager );
17
34
 
18
35
  }
19
36
 
37
+ /**
38
+ * Parses the given S3TC texture data.
39
+ *
40
+ * @param {ArrayBuffer} buffer - The raw texture data.
41
+ * @param {boolean} loadMipmaps - Whether to load mipmaps or not.
42
+ * @return {CompressedTextureLoader~TexData} An object representing the parsed texture data.
43
+ */
20
44
  parse( buffer, loadMipmaps ) {
21
45
 
22
46
  const dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1 };
@@ -126,7 +150,7 @@ class DDSLoader extends CompressedTextureLoader {
126
150
  byteArray[ dst ] = r; dst ++; //r
127
151
  byteArray[ dst ] = g; dst ++; //g
128
152
  byteArray[ dst ] = b; dst ++; //b
129
- byteArray[ dst ] = 1.0; dst ++; //a
153
+ byteArray[ dst ] = 255; dst ++; //a
130
154
 
131
155
  }
132
156
 
@@ -11,8 +11,44 @@ import {
11
11
 
12
12
  const _taskCache = new WeakMap();
13
13
 
14
+ /**
15
+ * A loader for the Draco format.
16
+ *
17
+ * [Draco]{@link https://google.github.io/draco/} is an open source library for compressing
18
+ * and decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,
19
+ * at the cost of additional decoding time on the client device.
20
+ *
21
+ * Standalone Draco files have a `.drc` extension, and contain vertex positions, normals, colors,
22
+ * and other attributes. Draco files do not contain materials, textures, animation, or node hierarchies –
23
+ * to use these features, embed Draco geometry inside of a glTF file. A normal glTF file can be converted
24
+ * to a Draco-compressed glTF file using [glTF-Pipeline]{@link https://github.com/CesiumGS/gltf-pipeline}.
25
+ * When using Draco with glTF, an instance of `DRACOLoader` will be used internally by {@link GLTFLoader}.
26
+ *
27
+ * It is recommended to create one DRACOLoader instance and reuse it to avoid loading and creating
28
+ * multiple decoder instances.
29
+ *
30
+ * `DRACOLoader` will automatically use either the JS or the WASM decoding library, based on
31
+ * browser capabilities.
32
+ *
33
+ * ```js
34
+ * const loader = new DRACOLoader();
35
+ * loader.setDecoderPath( '/examples/jsm/libs/draco/' );
36
+ *
37
+ * const geometry = await dracoLoader.loadAsync( 'models/draco/bunny.drc' );
38
+ * geometry.computeVertexNormals(); // optional
39
+ *
40
+ * dracoLoader.dispose();
41
+ * ```
42
+ *
43
+ * @augments Loader
44
+ */
14
45
  class DRACOLoader extends Loader {
15
46
 
47
+ /**
48
+ * Constructs a new Draco loader.
49
+ *
50
+ * @param {LoadingManager} [manager] - The loading manager.
51
+ */
16
52
  constructor( manager ) {
17
53
 
18
54
  super( manager );
@@ -42,6 +78,12 @@ class DRACOLoader extends Loader {
42
78
 
43
79
  }
44
80
 
81
+ /**
82
+ * Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.
83
+ *
84
+ * @param {string} path - The decoder path.
85
+ * @return {DRACOLoader} A reference to this loader.
86
+ */
45
87
  setDecoderPath( path ) {
46
88
 
47
89
  this.decoderPath = path;
@@ -50,6 +92,12 @@ class DRACOLoader extends Loader {
50
92
 
51
93
  }
52
94
 
95
+ /**
96
+ * Provides configuration for the decoder libraries. Configuration cannot be changed after decoding begins.
97
+ *
98
+ * @param {{type:('js'|'wasm')}} config - The decoder config.
99
+ * @return {DRACOLoader} A reference to this loader.
100
+ */
53
101
  setDecoderConfig( config ) {
54
102
 
55
103
  this.decoderConfig = config;
@@ -58,6 +106,13 @@ class DRACOLoader extends Loader {
58
106
 
59
107
  }
60
108
 
109
+ /**
110
+ * Sets the maximum number of Web Workers to be used during decoding.
111
+ * A lower limit may be preferable if workers are also for other tasks in the application.
112
+ *
113
+ * @param {number} workerLimit - The worker limit.
114
+ * @return {DRACOLoader} A reference to this loader.
115
+ */
61
116
  setWorkerLimit( workerLimit ) {
62
117
 
63
118
  this.workerLimit = workerLimit;
@@ -66,6 +121,15 @@ class DRACOLoader extends Loader {
66
121
 
67
122
  }
68
123
 
124
+ /**
125
+ * Starts loading from the given URL and passes the loaded Draco asset
126
+ * to the `onLoad()` callback.
127
+ *
128
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
129
+ * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
130
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
131
+ * @param {onErrorCallback} onError - Executed when errors occur.
132
+ */
69
133
  load( url, onLoad, onProgress, onError ) {
70
134
 
71
135
  const loader = new FileLoader( this.manager );
@@ -83,13 +147,21 @@ class DRACOLoader extends Loader {
83
147
 
84
148
  }
85
149
 
86
-
150
+ /**
151
+ * Parses the given Draco data.
152
+ *
153
+ * @param {ArrayBuffer} buffer - The raw Draco data as an array buffer.
154
+ * @param {function(BufferGeometry)} onLoad - Executed when the loading/parsing process has been finished.
155
+ * @param {onErrorCallback} onError - Executed when errors occur.
156
+ */
87
157
  parse( buffer, onLoad, onError = ()=>{} ) {
88
158
 
89
159
  this.decodeDracoFile( buffer, onLoad, null, null, SRGBColorSpace, onError ).catch( onError );
90
160
 
91
161
  }
92
162
 
163
+ //
164
+
93
165
  decodeDracoFile( buffer, callback, attributeIDs, attributeTypes, vertexColorSpace = LinearSRGBColorSpace, onError = () => {} ) {
94
166
 
95
167
  const taskConfig = {