@plastic-software/three 0.174.0 → 0.175.1

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 (567) hide show
  1. package/build/three.cjs +10744 -1476
  2. package/build/three.core.js +9633 -1096
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +918 -189
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +4 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +2658 -1697
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +2654 -1709
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +1 -1
  13. package/examples/jsm/animation/AnimationClipCreator.js +57 -6
  14. package/examples/jsm/animation/CCDIKSolver.js +93 -39
  15. package/examples/jsm/capabilities/WebGL.js +28 -3
  16. package/examples/jsm/capabilities/WebGPU.js +16 -6
  17. package/examples/jsm/controls/ArcballControls.js +424 -154
  18. package/examples/jsm/controls/DragControls.js +93 -2
  19. package/examples/jsm/controls/FirstPersonControls.js +113 -4
  20. package/examples/jsm/controls/FlyControls.js +49 -2
  21. package/examples/jsm/controls/MapControls.js +42 -9
  22. package/examples/jsm/controls/OrbitControls.js +345 -42
  23. package/examples/jsm/controls/PointerLockControls.js +111 -9
  24. package/examples/jsm/controls/TrackballControls.js +159 -8
  25. package/examples/jsm/controls/TransformControls.js +252 -6
  26. package/examples/jsm/csm/CSM.js +226 -15
  27. package/examples/jsm/csm/CSMFrustum.js +52 -0
  28. package/examples/jsm/csm/CSMHelper.js +47 -0
  29. package/examples/jsm/csm/CSMShader.js +10 -1
  30. package/examples/jsm/csm/CSMShadowNode.js +156 -13
  31. package/examples/jsm/curves/CurveExtras.js +289 -31
  32. package/examples/jsm/curves/NURBSCurve.js +57 -14
  33. package/examples/jsm/curves/NURBSSurface.js +50 -6
  34. package/examples/jsm/curves/NURBSUtils.js +96 -112
  35. package/examples/jsm/curves/NURBSVolume.js +22 -4
  36. package/examples/jsm/effects/AnaglyphEffect.js +30 -0
  37. package/examples/jsm/effects/AsciiEffect.js +60 -15
  38. package/examples/jsm/effects/OutlineEffect.js +59 -111
  39. package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
  40. package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
  41. package/examples/jsm/effects/StereoEffect.js +29 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +49 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +23 -4
  44. package/examples/jsm/exporters/DRACOExporter.js +53 -13
  45. package/examples/jsm/exporters/EXRExporter.js +37 -8
  46. package/examples/jsm/exporters/GLTFExporter.js +171 -48
  47. package/examples/jsm/exporters/KTX2Exporter.js +20 -0
  48. package/examples/jsm/exporters/OBJExporter.js +18 -0
  49. package/examples/jsm/exporters/PLYExporter.js +39 -9
  50. package/examples/jsm/exporters/STLExporter.js +25 -5
  51. package/examples/jsm/exporters/USDZExporter.js +70 -3
  52. package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +18 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +20 -9
  55. package/examples/jsm/geometries/ParametricFunctions.js +97 -0
  56. package/examples/jsm/geometries/ParametricGeometry.js +37 -5
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
  58. package/examples/jsm/geometries/TeapotGeometry.js +22 -38
  59. package/examples/jsm/geometries/TextGeometry.js +44 -16
  60. package/examples/jsm/helpers/LightProbeHelper.js +35 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +35 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
  64. package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
  65. package/examples/jsm/helpers/TextureHelper.js +27 -0
  66. package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
  67. package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
  68. package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
  69. package/examples/jsm/helpers/ViewHelper.js +75 -1
  70. package/examples/jsm/interactive/HTMLMesh.js +25 -0
  71. package/examples/jsm/interactive/InteractiveGroup.js +65 -5
  72. package/examples/jsm/interactive/SelectionBox.js +74 -9
  73. package/examples/jsm/interactive/SelectionHelper.js +71 -29
  74. package/examples/jsm/libs/motion-controllers.module.js +1 -1
  75. package/examples/jsm/lighting/TiledLighting.js +23 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +26 -1
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
  79. package/examples/jsm/lines/Line2.js +36 -0
  80. package/examples/jsm/lines/LineGeometry.js +52 -0
  81. package/examples/jsm/lines/LineMaterial.js +95 -0
  82. package/examples/jsm/lines/LineSegments2.js +51 -2
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
  84. package/examples/jsm/lines/Wireframe.js +38 -2
  85. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +25 -1
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
  88. package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
  89. package/examples/jsm/loaders/3DMLoader.js +71 -2
  90. package/examples/jsm/loaders/3MFLoader.js +41 -3
  91. package/examples/jsm/loaders/AMFLoader.js +31 -12
  92. package/examples/jsm/loaders/BVHLoader.js +57 -11
  93. package/examples/jsm/loaders/ColladaLoader.js +35 -0
  94. package/examples/jsm/loaders/DDSLoader.js +24 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +73 -1
  96. package/examples/jsm/loaders/EXRLoader.js +40 -8
  97. package/examples/jsm/loaders/FBXLoader.js +42 -14
  98. package/examples/jsm/loaders/FontLoader.js +60 -2
  99. package/examples/jsm/loaders/GCodeLoader.js +33 -5
  100. package/examples/jsm/loaders/GLTFLoader.js +218 -5
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
  102. package/examples/jsm/loaders/IESLoader.js +41 -0
  103. package/examples/jsm/loaders/KMZLoader.js +32 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +86 -18
  105. package/examples/jsm/loaders/KTXLoader.js +26 -6
  106. package/examples/jsm/loaders/LDrawLoader.js +115 -5
  107. package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
  108. package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
  109. package/examples/jsm/loaders/LUTImageLoader.js +78 -38
  110. package/examples/jsm/loaders/LWOLoader.js +46 -7
  111. package/examples/jsm/loaders/LottieLoader.js +37 -0
  112. package/examples/jsm/loaders/MD2Loader.js +36 -1
  113. package/examples/jsm/loaders/MDDLoader.js +56 -12
  114. package/examples/jsm/loaders/MTLLoader.js +38 -33
  115. package/examples/jsm/loaders/MaterialXLoader.js +33 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +36 -5
  117. package/examples/jsm/loaders/OBJLoader.js +48 -1
  118. package/examples/jsm/loaders/PCDLoader.js +47 -0
  119. package/examples/jsm/loaders/PDBLoader.js +40 -2
  120. package/examples/jsm/loaders/PLYLoader.js +62 -32
  121. package/examples/jsm/loaders/PVRLoader.js +23 -5
  122. package/examples/jsm/loaders/RGBELoader.js +38 -5
  123. package/examples/jsm/loaders/RGBMLoader.js +67 -1
  124. package/examples/jsm/loaders/STLLoader.js +47 -38
  125. package/examples/jsm/loaders/SVGLoader.js +113 -20
  126. package/examples/jsm/loaders/TDSLoader.js +81 -61
  127. package/examples/jsm/loaders/TGALoader.js +22 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +22 -0
  129. package/examples/jsm/loaders/TTFLoader.js +36 -2
  130. package/examples/jsm/loaders/USDZLoader.js +34 -1
  131. package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
  132. package/examples/jsm/loaders/VOXLoader.js +57 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +32 -1
  134. package/examples/jsm/loaders/VTKLoader.js +38 -0
  135. package/examples/jsm/loaders/XYZLoader.js +35 -0
  136. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
  137. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
  138. package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
  139. package/examples/jsm/math/Capsule.js +89 -14
  140. package/examples/jsm/math/ColorConverter.js +21 -0
  141. package/examples/jsm/math/ColorSpaces.js +53 -0
  142. package/examples/jsm/math/ConvexHull.js +514 -92
  143. package/examples/jsm/math/ImprovedNoise.js +14 -2
  144. package/examples/jsm/math/Lut.js +111 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
  146. package/examples/jsm/math/OBB.js +139 -46
  147. package/examples/jsm/math/Octree.js +132 -5
  148. package/examples/jsm/math/SimplexNoise.js +66 -42
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
  150. package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
  151. package/examples/jsm/misc/Gyroscope.js +11 -0
  152. package/examples/jsm/misc/MD2Character.js +115 -2
  153. package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
  154. package/examples/jsm/misc/MorphAnimMesh.js +43 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +102 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
  158. package/examples/jsm/misc/RollerCoaster.js +52 -0
  159. package/examples/jsm/misc/Timer.js +79 -2
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +108 -72
  162. package/examples/jsm/misc/VolumeSlice.js +88 -45
  163. package/examples/jsm/modifiers/CurveModifier.js +57 -34
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
  167. package/examples/jsm/modifiers/TessellateModifier.js +33 -2
  168. package/examples/jsm/objects/GroundedSkybox.js +23 -5
  169. package/examples/jsm/objects/Lensflare.js +91 -2
  170. package/examples/jsm/objects/LensflareMesh.js +53 -2
  171. package/examples/jsm/objects/MarchingCubes.js +88 -5
  172. package/examples/jsm/objects/Reflector.js +70 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
  174. package/examples/jsm/objects/Refractor.js +61 -0
  175. package/examples/jsm/objects/ShadowMesh.js +53 -4
  176. package/examples/jsm/objects/Sky.js +26 -9
  177. package/examples/jsm/objects/SkyMesh.js +60 -9
  178. package/examples/jsm/objects/Water.js +44 -5
  179. package/examples/jsm/objects/Water2.js +42 -3
  180. package/examples/jsm/objects/Water2Mesh.js +38 -3
  181. package/examples/jsm/objects/WaterMesh.js +94 -7
  182. package/examples/jsm/physics/AmmoPhysics.js +47 -0
  183. package/examples/jsm/physics/JoltPhysics.js +48 -0
  184. package/examples/jsm/physics/RapierPhysics.js +56 -0
  185. package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
  186. package/examples/jsm/postprocessing/BloomPass.js +125 -24
  187. package/examples/jsm/postprocessing/BokehPass.js +98 -22
  188. package/examples/jsm/postprocessing/ClearPass.js +53 -3
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
  190. package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
  191. package/examples/jsm/postprocessing/EffectComposer.js +131 -0
  192. package/examples/jsm/postprocessing/FilmPass.js +53 -5
  193. package/examples/jsm/postprocessing/GTAOPass.js +191 -48
  194. package/examples/jsm/postprocessing/GlitchPass.js +84 -33
  195. package/examples/jsm/postprocessing/HalftonePass.js +64 -10
  196. package/examples/jsm/postprocessing/LUTPass.js +37 -8
  197. package/examples/jsm/postprocessing/MaskPass.js +90 -0
  198. package/examples/jsm/postprocessing/OutlinePass.js +266 -133
  199. package/examples/jsm/postprocessing/OutputPass.js +53 -14
  200. package/examples/jsm/postprocessing/Pass.js +98 -4
  201. package/examples/jsm/postprocessing/RenderPass.js +83 -0
  202. package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
  203. package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
  204. package/examples/jsm/postprocessing/SAOPass.js +126 -53
  205. package/examples/jsm/postprocessing/SMAAPass.js +103 -71
  206. package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
  207. package/examples/jsm/postprocessing/SSAOPass.js +160 -47
  208. package/examples/jsm/postprocessing/SSRPass.js +230 -49
  209. package/examples/jsm/postprocessing/SavePass.js +68 -16
  210. package/examples/jsm/postprocessing/ShaderPass.js +64 -7
  211. package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
  212. package/examples/jsm/postprocessing/TexturePass.js +71 -8
  213. package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
  214. package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
  215. package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
  216. package/examples/jsm/renderers/Projector.js +18 -2
  217. package/examples/jsm/renderers/SVGRenderer.js +124 -0
  218. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
  219. package/examples/jsm/shaders/AfterimageShader.js +6 -4
  220. package/examples/jsm/shaders/BasicShader.js +6 -2
  221. package/examples/jsm/shaders/BleachBypassShader.js +8 -4
  222. package/examples/jsm/shaders/BlendShader.js +6 -2
  223. package/examples/jsm/shaders/BokehShader.js +7 -4
  224. package/examples/jsm/shaders/BokehShader2.js +7 -3
  225. package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
  226. package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
  227. package/examples/jsm/shaders/ColorifyShader.js +6 -2
  228. package/examples/jsm/shaders/ConvolutionShader.js +7 -39
  229. package/examples/jsm/shaders/CopyShader.js +6 -2
  230. package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
  231. package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
  232. package/examples/jsm/shaders/DigitalGlitch.js +7 -7
  233. package/examples/jsm/shaders/DotScreenShader.js +6 -4
  234. package/examples/jsm/shaders/ExposureShader.js +6 -2
  235. package/examples/jsm/shaders/FXAAShader.js +15 -7
  236. package/examples/jsm/shaders/FilmShader.js +10 -0
  237. package/examples/jsm/shaders/FocusShader.js +6 -4
  238. package/examples/jsm/shaders/FreiChenShader.js +7 -3
  239. package/examples/jsm/shaders/GTAOShader.js +33 -39
  240. package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
  241. package/examples/jsm/shaders/GodRaysShader.js +14 -5
  242. package/examples/jsm/shaders/HalftoneShader.js +11 -5
  243. package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
  244. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
  245. package/examples/jsm/shaders/HueSaturationShader.js +7 -3
  246. package/examples/jsm/shaders/KaleidoShader.js +8 -4
  247. package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
  248. package/examples/jsm/shaders/LuminosityShader.js +6 -3
  249. package/examples/jsm/shaders/MirrorShader.js +7 -4
  250. package/examples/jsm/shaders/NormalMapShader.js +5 -3
  251. package/examples/jsm/shaders/OutputShader.js +11 -0
  252. package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
  253. package/examples/jsm/shaders/RGBShiftShader.js +5 -1
  254. package/examples/jsm/shaders/SAOShader.js +8 -2
  255. package/examples/jsm/shaders/SMAAShader.js +23 -1
  256. package/examples/jsm/shaders/SSAOShader.js +23 -5
  257. package/examples/jsm/shaders/SSRShader.js +25 -1
  258. package/examples/jsm/shaders/SepiaShader.js +6 -4
  259. package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
  260. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
  261. package/examples/jsm/shaders/TechnicolorShader.js +7 -4
  262. package/examples/jsm/shaders/ToonShader.js +29 -7
  263. package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
  264. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
  265. package/examples/jsm/shaders/VelocityShader.js +6 -2
  266. package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
  267. package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
  268. package/examples/jsm/shaders/VignetteShader.js +6 -4
  269. package/examples/jsm/shaders/VolumeShader.js +7 -1
  270. package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
  271. package/examples/jsm/textures/FlakesTexture.js +12 -0
  272. package/examples/jsm/transpiler/Transpiler.js +31 -0
  273. package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
  274. package/examples/jsm/tsl/display/BloomNode.js +1 -1
  275. package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
  276. package/examples/jsm/tsl/display/SSRNode.js +1 -1
  277. package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
  278. package/examples/jsm/tsl/math/Bayer.js +14 -1
  279. package/examples/jsm/tsl/utils/Raymarching.js +4 -2
  280. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  281. package/examples/jsm/utils/CameraUtils.js +10 -7
  282. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  283. package/examples/jsm/utils/GeometryUtils.js +12 -13
  284. package/examples/jsm/utils/LDrawUtils.js +11 -4
  285. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  286. package/examples/jsm/utils/SceneUtils.js +50 -3
  287. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  288. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  289. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  290. package/examples/jsm/utils/SortUtils.js +14 -5
  291. package/examples/jsm/utils/UVsDebug.js +9 -4
  292. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  293. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  294. package/examples/jsm/utils/WorkerPool.js +65 -2
  295. package/examples/jsm/webxr/ARButton.js +18 -0
  296. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  297. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  298. package/examples/jsm/webxr/Text2D.js +11 -0
  299. package/examples/jsm/webxr/VRButton.js +30 -0
  300. package/examples/jsm/webxr/XRButton.js +22 -0
  301. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  302. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  303. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  304. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  305. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  306. package/examples/jsm/webxr/XRPlanes.js +17 -0
  307. package/package.json +1 -1
  308. package/src/Three.TSL.js +3 -1
  309. package/src/animation/AnimationAction.js +262 -30
  310. package/src/animation/AnimationClip.js +141 -2
  311. package/src/animation/AnimationMixer.js +99 -15
  312. package/src/animation/AnimationObjectGroup.js +41 -18
  313. package/src/animation/AnimationUtils.js +168 -18
  314. package/src/animation/KeyframeTrack.js +144 -10
  315. package/src/animation/PropertyBinding.js +77 -3
  316. package/src/animation/PropertyMixer.js +72 -5
  317. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  318. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  319. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  320. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  321. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  322. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  323. package/src/audio/AudioAnalyser.js +1 -1
  324. package/src/audio/AudioListener.js +2 -2
  325. package/src/audio/PositionalAudio.js +5 -5
  326. package/src/constants.js +1432 -5
  327. package/src/core/BufferAttribute.js +413 -3
  328. package/src/core/BufferGeometry.js +337 -1
  329. package/src/core/Clock.js +60 -0
  330. package/src/core/GLBufferAttribute.js +99 -0
  331. package/src/core/InstancedBufferAttribute.js +29 -0
  332. package/src/core/InstancedBufferGeometry.js +20 -0
  333. package/src/core/InstancedInterleavedBuffer.js +26 -0
  334. package/src/core/InterleavedBuffer.js +137 -3
  335. package/src/core/InterleavedBufferAttribute.js +197 -0
  336. package/src/core/Layers.js +71 -10
  337. package/src/core/Object3D.js +23 -0
  338. package/src/core/Raycaster.js +134 -1
  339. package/src/core/RenderTarget.js +166 -7
  340. package/src/core/RenderTarget3D.js +25 -0
  341. package/src/core/RenderTargetArray.js +18 -0
  342. package/src/core/Uniform.js +29 -0
  343. package/src/core/UniformsGroup.js +84 -2
  344. package/src/extras/Controls.js +16 -1
  345. package/src/extras/Earcut.js +3 -781
  346. package/src/extras/ImageUtils.js +3 -2
  347. package/src/extras/PMREMGenerator.js +22 -17
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/extras/core/Path.js +1 -1
  350. package/src/extras/lib/earcut.js +685 -0
  351. package/src/geometries/ConeGeometry.js +2 -2
  352. package/src/geometries/CylinderGeometry.js +2 -2
  353. package/src/geometries/ExtrudeGeometry.js +71 -39
  354. package/src/geometries/LatheGeometry.js +1 -1
  355. package/src/lights/LightShadow.js +1 -1
  356. package/src/lights/webgpu/IESSpotLight.js +1 -1
  357. package/src/loaders/AnimationLoader.js +31 -0
  358. package/src/loaders/AudioLoader.js +31 -0
  359. package/src/loaders/BufferGeometryLoader.js +34 -0
  360. package/src/loaders/Cache.js +45 -0
  361. package/src/loaders/CompressedTextureLoader.js +36 -3
  362. package/src/loaders/CubeTextureLoader.js +45 -0
  363. package/src/loaders/DataTextureLoader.js +44 -3
  364. package/src/loaders/FileLoader.js +57 -1
  365. package/src/loaders/ImageBitmapLoader.js +57 -0
  366. package/src/loaders/ImageLoader.js +30 -0
  367. package/src/loaders/Loader.js +4 -6
  368. package/src/loaders/LoaderUtils.js +18 -36
  369. package/src/loaders/LoadingManager.js +142 -0
  370. package/src/loaders/MaterialLoader.js +57 -0
  371. package/src/loaders/ObjectLoader.js +58 -1
  372. package/src/loaders/TextureLoader.js +33 -0
  373. package/src/loaders/nodes/NodeLoader.js +6 -2
  374. package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
  375. package/src/loaders/nodes/NodeObjectLoader.js +3 -3
  376. package/src/materials/LineBasicMaterial.js +74 -1
  377. package/src/materials/LineDashedMaterial.js +52 -0
  378. package/src/materials/Material.js +18 -3
  379. package/src/materials/MeshBasicMaterial.js +165 -0
  380. package/src/materials/MeshDepthMaterial.js +93 -0
  381. package/src/materials/MeshDistanceMaterial.js +76 -0
  382. package/src/materials/MeshLambertMaterial.js +273 -0
  383. package/src/materials/MeshMatcapMaterial.js +142 -0
  384. package/src/materials/MeshNormalMaterial.js +113 -0
  385. package/src/materials/MeshPhongMaterial.js +288 -0
  386. package/src/materials/MeshPhysicalMaterial.js +292 -1
  387. package/src/materials/MeshStandardMaterial.js +297 -0
  388. package/src/materials/MeshToonMaterial.js +218 -0
  389. package/src/materials/PointsMaterial.js +89 -0
  390. package/src/materials/RawShaderMaterial.js +25 -0
  391. package/src/materials/ShaderMaterial.js +215 -6
  392. package/src/materials/ShadowMaterial.js +54 -0
  393. package/src/materials/SpriteMaterial.js +82 -0
  394. package/src/materials/nodes/Line2NodeMaterial.js +1 -1
  395. package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
  396. package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
  397. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  398. package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
  399. package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
  400. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  401. package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
  402. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
  403. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  404. package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
  405. package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
  406. package/src/materials/nodes/NodeMaterial.js +7 -3
  407. package/src/materials/nodes/PointsNodeMaterial.js +1 -1
  408. package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
  409. package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
  410. package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
  411. package/src/math/Color.js +1 -1
  412. package/src/math/MathUtils.js +223 -0
  413. package/src/nodes/Nodes.js +1 -0
  414. package/src/nodes/accessors/BatchNode.js +8 -8
  415. package/src/nodes/accessors/BuiltinNode.js +1 -1
  416. package/src/nodes/accessors/CubeTextureNode.js +1 -1
  417. package/src/nodes/accessors/InstanceNode.js +5 -5
  418. package/src/nodes/accessors/InstancedMeshNode.js +1 -1
  419. package/src/nodes/accessors/MorphNode.js +27 -23
  420. package/src/nodes/accessors/Normal.js +1 -1
  421. package/src/nodes/accessors/Object3DNode.js +12 -12
  422. package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
  423. package/src/nodes/accessors/ReferenceNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +46 -37
  425. package/src/nodes/accessors/StorageBufferNode.js +1 -1
  426. package/src/nodes/accessors/StorageTextureNode.js +3 -3
  427. package/src/nodes/accessors/Texture3DNode.js +1 -1
  428. package/src/nodes/accessors/TextureNode.js +25 -5
  429. package/src/nodes/accessors/TextureSizeNode.js +1 -1
  430. package/src/nodes/accessors/UniformArrayNode.js +2 -2
  431. package/src/nodes/code/CodeNode.js +4 -4
  432. package/src/nodes/code/ExpressionNode.js +4 -4
  433. package/src/nodes/code/FunctionCallNode.js +23 -3
  434. package/src/nodes/code/ScriptableNode.js +4 -4
  435. package/src/nodes/code/ScriptableValueNode.js +2 -2
  436. package/src/nodes/core/AssignNode.js +1 -1
  437. package/src/nodes/core/AttributeNode.js +1 -1
  438. package/src/nodes/core/BypassNode.js +1 -1
  439. package/src/nodes/core/CacheNode.js +1 -1
  440. package/src/nodes/core/ContextNode.js +1 -1
  441. package/src/nodes/core/InputNode.js +2 -2
  442. package/src/nodes/core/Node.js +14 -2
  443. package/src/nodes/core/NodeBuilder.js +86 -14
  444. package/src/nodes/core/StackNode.js +5 -5
  445. package/src/nodes/core/StructNode.js +1 -1
  446. package/src/nodes/core/StructTypeNode.js +2 -2
  447. package/src/nodes/core/VarNode.js +2 -8
  448. package/src/nodes/core/VaryingNode.js +3 -3
  449. package/src/nodes/display/BlendModes.js +4 -4
  450. package/src/nodes/display/BumpMapNode.js +1 -1
  451. package/src/nodes/display/NormalMapNode.js +1 -1
  452. package/src/nodes/display/PosterizeNode.js +1 -1
  453. package/src/nodes/display/ScreenNode.js +3 -3
  454. package/src/nodes/display/ViewportDepthNode.js +2 -2
  455. package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
  456. package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
  457. package/src/nodes/display/ViewportTextureNode.js +4 -4
  458. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  459. package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
  460. package/src/nodes/geometry/RangeNode.js +1 -1
  461. package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
  462. package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
  463. package/src/nodes/gpgpu/ComputeNode.js +30 -2
  464. package/src/nodes/lighting/AnalyticLightNode.js +9 -1
  465. package/src/nodes/lighting/LightsNode.js +3 -3
  466. package/src/nodes/lighting/ShadowNode.js +1 -1
  467. package/src/nodes/math/ConditionalNode.js +20 -3
  468. package/src/nodes/math/MathNode.js +83 -78
  469. package/src/nodes/math/OperatorNode.js +171 -82
  470. package/src/nodes/pmrem/PMREMNode.js +4 -4
  471. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  472. package/src/nodes/tsl/TSLBase.js +2 -1
  473. package/src/nodes/tsl/TSLCore.js +115 -12
  474. package/src/nodes/utils/ArrayElementNode.js +3 -1
  475. package/src/nodes/utils/CubeMapNode.js +3 -3
  476. package/src/nodes/utils/DebugNode.js +70 -0
  477. package/src/nodes/utils/EquirectUVNode.js +2 -2
  478. package/src/nodes/utils/JoinNode.js +27 -2
  479. package/src/nodes/utils/LoopNode.js +58 -28
  480. package/src/nodes/utils/MaxMipLevelNode.js +1 -1
  481. package/src/nodes/utils/ReflectorNode.js +2 -2
  482. package/src/nodes/utils/RemapNode.js +6 -6
  483. package/src/nodes/utils/RotateNode.js +1 -1
  484. package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
  485. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  486. package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
  487. package/src/objects/BatchedMesh.js +4 -4
  488. package/src/objects/InstancedMesh.js +2 -2
  489. package/src/objects/LOD.js +1 -1
  490. package/src/objects/Skeleton.js +1 -1
  491. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  492. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  493. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  494. package/src/renderers/WebGLRenderTarget.js +19 -0
  495. package/src/renderers/WebGLRenderer.js +617 -79
  496. package/src/renderers/common/Animation.js +2 -2
  497. package/src/renderers/common/Attributes.js +2 -2
  498. package/src/renderers/common/Backend.js +12 -3
  499. package/src/renderers/common/Background.js +1 -0
  500. package/src/renderers/common/Color4.js +1 -1
  501. package/src/renderers/common/CubeRenderTarget.js +13 -0
  502. package/src/renderers/common/PostProcessing.js +2 -0
  503. package/src/renderers/common/QuadMesh.js +2 -0
  504. package/src/renderers/common/RenderList.js +2 -2
  505. package/src/renderers/common/RenderObject.js +1 -1
  506. package/src/renderers/common/RenderObjects.js +2 -2
  507. package/src/renderers/common/Renderer.js +52 -31
  508. package/src/renderers/common/XRManager.js +333 -10
  509. package/src/renderers/common/extras/PMREMGenerator.js +6 -0
  510. package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
  511. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
  512. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
  513. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
  514. package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
  515. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
  516. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
  517. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
  518. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
  519. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
  520. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
  521. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
  522. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
  523. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
  524. package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
  525. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
  526. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
  527. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
  528. package/src/renderers/shaders/ShaderChunk.js +2 -0
  529. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
  530. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
  531. package/src/renderers/shaders/UniformsLib.js +6 -5
  532. package/src/renderers/shaders/UniformsUtils.js +1 -3
  533. package/src/renderers/webgl/WebGLBackground.js +4 -2
  534. package/src/renderers/webgl/WebGLMaterials.js +12 -0
  535. package/src/renderers/webgl/WebGLProgram.js +25 -5
  536. package/src/renderers/webgl/WebGLPrograms.js +21 -7
  537. package/src/renderers/webgl/WebGLState.js +9 -9
  538. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  539. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  540. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  541. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  542. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  543. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  544. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  545. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  546. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  547. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  548. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  549. package/src/renderers/webxr/WebXRController.js +87 -2
  550. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  551. package/src/renderers/webxr/WebXRManager.js +173 -1
  552. package/src/scenes/Scene.js +2 -1
  553. package/src/textures/CanvasTexture.js +28 -0
  554. package/src/textures/CompressedArrayTexture.js +57 -0
  555. package/src/textures/CompressedCubeTexture.js +29 -0
  556. package/src/textures/CompressedTexture.js +64 -6
  557. package/src/textures/CubeTexture.js +52 -4
  558. package/src/textures/Data3DTexture.js +77 -0
  559. package/src/textures/DataArrayTexture.js +93 -0
  560. package/src/textures/DataTexture.js +65 -0
  561. package/src/textures/DepthTexture.js +59 -9
  562. package/src/textures/FramebufferTexture.js +62 -0
  563. package/src/textures/Source.js +69 -0
  564. package/src/textures/Texture.js +5 -5
  565. package/src/textures/VideoFrameTexture.js +43 -6
  566. package/src/textures/VideoTexture.js +49 -4
  567. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -1,25 +1,3 @@
1
- /**
2
- * Creates extruded geometry from a path shape.
3
- *
4
- * parameters = {
5
- *
6
- * curveSegments: <int>, // number of points on the curves
7
- * steps: <int>, // number of points for z-side extrusions / used for subdividing segments of extrude spline too
8
- * depth: <float>, // Depth to extrude the shape
9
- *
10
- * bevelEnabled: <bool>, // turn on bevel
11
- * bevelThickness: <float>, // how deep into the original shape bevel goes
12
- * bevelSize: <float>, // how far from shape outline (including bevelOffset) is bevel
13
- * bevelOffset: <float>, // how far from shape outline does bevel start
14
- * bevelSegments: <int>, // number of bevel layers
15
- *
16
- * extrudePath: <THREE.Curve> // curve to extrude shape along
17
- *
18
- * UVGenerator: <Object> // object that provides UV generator functions
19
- *
20
- * }
21
- */
22
-
23
1
  import { BufferGeometry } from '../core/BufferGeometry.js';
24
2
  import { Float32BufferAttribute } from '../core/BufferAttribute.js';
25
3
  import * as Curves from '../extras/curves/Curves.js';
@@ -55,17 +33,7 @@ class ExtrudeGeometry extends BufferGeometry {
55
33
  * Constructs a new extrude geometry.
56
34
  *
57
35
  * @param {Shape|Array<Shape>} [shapes] - A shape or an array of shapes.
58
- * @param {Object} [options={}] - The extrude settings.
59
- * @param {number} [options.curveSegments=12] - Number of points on the curves.
60
- * @param {number} [options.steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
61
- * @param {number} [options.depth=1] - Depth to extrude the shape.
62
- * @param {boolean} [options.bevelEnabled=true] - Whether to beveling to the shape or not.
63
- * @param {number} [options.bevelThickness=0.2] - How deep into the original shape the bevel goes.
64
- * @param {number} [options.bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
65
- * @param {number} [options.bevelOffset=0] - Distance from the shape outline that the bevel starts.
66
- * @param {number} [options.bevelSegments=3] - Number of bevel layers.
67
- * @param {Curve} [options.extrudePath=3] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
68
- * @param {Object} [options.UVGenerator] - An object that provides UV generator functions for custom UV generation.
36
+ * @param {ExtrudeGeometry~Options} [options] - The extrude settings.
69
37
  */
70
38
  constructor( shapes = new Shape( [ new Vector2( 0.5, 0.5 ), new Vector2( - 0.5, 0.5 ), new Vector2( - 0.5, - 0.5 ), new Vector2( 0.5, - 0.5 ) ] ), options = {} ) {
71
39
 
@@ -194,14 +162,53 @@ class ExtrudeGeometry extends BufferGeometry {
194
162
 
195
163
  }
196
164
 
165
+ /**Merges index-adjacent points that are within a threshold distance of each other. Array is modified in-place. Threshold distance is empirical, and scaled based on the magnitude of point coordinates.
166
+ * @param {Array<Vector2>} points
167
+ */
168
+ function mergeOverlappingPoints( points ) {
169
+
170
+ const THRESHOLD = 1e-10;
171
+ const THRESHOLD_SQ = THRESHOLD * THRESHOLD;
172
+ let prevPos = points[ 0 ];
173
+ for ( let i = 1; i <= points.length; i ++ ) {
174
+
175
+ const currentIndex = i % points.length;
176
+ const currentPos = points[ currentIndex ];
177
+ const dx = currentPos.x - prevPos.x;
178
+ const dy = currentPos.y - prevPos.y;
179
+ const distSq = dx * dx + dy * dy;
180
+
181
+ const scalingFactorSqrt = Math.max(
182
+ Math.abs( currentPos.x ),
183
+ Math.abs( currentPos.y ),
184
+ Math.abs( prevPos.x ),
185
+ Math.abs( prevPos.y )
186
+ );
187
+ const thesholdSqScaled = THRESHOLD_SQ * scalingFactorSqrt * scalingFactorSqrt;
188
+ if ( distSq <= thesholdSqScaled ) {
189
+
190
+ points.splice( currentIndex, 1 );
191
+ i --;
192
+ continue;
197
193
 
198
- const faces = ShapeUtils.triangulateShape( vertices, holes );
194
+ }
195
+
196
+ prevPos = currentPos;
197
+
198
+ }
199
+
200
+ }
201
+
202
+ mergeOverlappingPoints( vertices );
203
+ holes.forEach( mergeOverlappingPoints );
204
+
205
+ const numHoles = holes.length;
199
206
 
200
207
  /* Vertices */
201
208
 
202
209
  const contour = vertices; // vertices has all points but contour has only points of circumference
203
210
 
204
- for ( let h = 0, hl = holes.length; h < hl; h ++ ) {
211
+ for ( let h = 0; h < numHoles; h ++ ) {
205
212
 
206
213
  const ahole = holes[ h ];
207
214
 
@@ -218,7 +225,7 @@ class ExtrudeGeometry extends BufferGeometry {
218
225
 
219
226
  }
220
227
 
221
- const vlen = vertices.length, flen = faces.length;
228
+ const vlen = vertices.length;
222
229
 
223
230
 
224
231
  // Find directions for point movement
@@ -365,7 +372,7 @@ class ExtrudeGeometry extends BufferGeometry {
365
372
  const holesMovements = [];
366
373
  let oneHoleMovements, verticesMovements = contourMovements.concat();
367
374
 
368
- for ( let h = 0, hl = holes.length; h < hl; h ++ ) {
375
+ for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
369
376
 
370
377
  const ahole = holes[ h ];
371
378
 
@@ -386,6 +393,8 @@ class ExtrudeGeometry extends BufferGeometry {
386
393
 
387
394
  }
388
395
 
396
+ const contractedContourVertices = [];
397
+ const expandedHoleVertices = [];
389
398
 
390
399
  // Loop bevelSegments, 1 for the front, 1 for the back
391
400
 
@@ -404,28 +413,36 @@ class ExtrudeGeometry extends BufferGeometry {
404
413
  const vert = scalePt2( contour[ i ], contourMovements[ i ], bs );
405
414
 
406
415
  v( vert.x, vert.y, - z );
416
+ if ( t == 0 ) contractedContourVertices.push( vert );
407
417
 
408
418
  }
409
419
 
410
420
  // expand holes
411
421
 
412
- for ( let h = 0, hl = holes.length; h < hl; h ++ ) {
422
+ for ( let h = 0, hl = numHoles; h < hl; h ++ ) {
413
423
 
414
424
  const ahole = holes[ h ];
415
425
  oneHoleMovements = holesMovements[ h ];
416
-
426
+ const oneHoleVertices = [];
417
427
  for ( let i = 0, il = ahole.length; i < il; i ++ ) {
418
428
 
419
429
  const vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );
420
430
 
421
431
  v( vert.x, vert.y, - z );
432
+ if ( t == 0 ) oneHoleVertices.push( vert );
422
433
 
423
434
  }
424
435
 
436
+ if ( t == 0 ) expandedHoleVertices.push( oneHoleVertices );
437
+
425
438
  }
426
439
 
427
440
  }
428
441
 
442
+ const faces = ShapeUtils.triangulateShape( contractedContourVertices, expandedHoleVertices );
443
+
444
+ const flen = faces.length;
445
+
429
446
  const bs = bevelSize + bevelOffset;
430
447
 
431
448
  // Back facing vertices
@@ -862,5 +879,20 @@ function toJSON( shapes, options, data ) {
862
879
 
863
880
  }
864
881
 
882
+ /**
883
+ * Represents the `options` type of the geometry's constructor.
884
+ *
885
+ * @typedef {Object} ExtrudeGeometry~Options
886
+ * @property {number} [curveSegments=12] - Number of points on the curves.
887
+ * @property {number} [steps=1] - Number of points used for subdividing segments along the depth of the extruded spline.
888
+ * @property {number} [depth=1] - Depth to extrude the shape.
889
+ * @property {boolean} [bevelEnabled=true] - Whether to beveling to the shape or not.
890
+ * @property {number} [bevelThickness=0.2] - How deep into the original shape the bevel goes.
891
+ * @property {number} [bevelSize=bevelThickness-0.1] - Distance from the shape outline that the bevel extends.
892
+ * @property {number} [bevelOffset=0] - Distance from the shape outline that the bevel starts.
893
+ * @property {number} [bevelSegments=3] - Number of bevel layers.
894
+ * @property {?Curve} [extrudePath=null] - A 3D spline path along which the shape should be extruded. Bevels not supported for path extrusion.
895
+ * @property {Object} [UVGenerator] - An object that provides UV generator functions for custom UV generation.
896
+ **/
865
897
 
866
898
  export { ExtrudeGeometry };
@@ -25,7 +25,7 @@ class LatheGeometry extends BufferGeometry {
25
25
  /**
26
26
  * Constructs a new lathe geometry.
27
27
  *
28
- * @param {Array<Vector2>} [points] - An array of points in 2D space. The x-coordinate of each point
28
+ * @param {Array<Vector2|Vector3>} [points] - An array of points in 2D space. The x-coordinate of each point
29
29
  * must be greater than zero.
30
30
  * @param {number} [segments=12] - The number of circumference segments to generate.
31
31
  * @param {number} [phiStart=0] - The starting angle in radians.
@@ -10,7 +10,7 @@ const _lookTarget = /*@__PURE__*/ new Vector3();
10
10
 
11
11
  /**
12
12
  * Abstract base class for light shadow classes. These classes
13
- * represent the shadow configuration for different ligth types.
13
+ * represent the shadow configuration for different light types.
14
14
  *
15
15
  * @abstract
16
16
  */
@@ -22,7 +22,7 @@ class IESSpotLight extends SpotLight {
22
22
  super( color, intensity, distance, angle, penumbra, decay );
23
23
 
24
24
  /**
25
- * TOOD
25
+ * TODO
26
26
  *
27
27
  * @type {?Texture}
28
28
  * @default null
@@ -2,14 +2,39 @@ import { AnimationClip } from '../animation/AnimationClip.js';
2
2
  import { FileLoader } from './FileLoader.js';
3
3
  import { Loader } from './Loader.js';
4
4
 
5
+ /**
6
+ * Class for loading animation clips in the JSON format. The files are internally
7
+ * loaded via {@link FileLoader}.
8
+ *
9
+ * ```js
10
+ * const loader = new THREE.AnimationLoader();
11
+ * const animations = await loader.loadAsync( 'animations/animation.js' );
12
+ * ```
13
+ *
14
+ * @augments Loader
15
+ */
5
16
  class AnimationLoader extends Loader {
6
17
 
18
+ /**
19
+ * Constructs a new animation loader.
20
+ *
21
+ * @param {LoadingManager} [manager] - The loading manager.
22
+ */
7
23
  constructor( manager ) {
8
24
 
9
25
  super( manager );
10
26
 
11
27
  }
12
28
 
29
+ /**
30
+ * Starts loading from the given URL and pass the loaded animations as an array
31
+ * holding instances of {@link AnimationClip} to the `onLoad()` callback.
32
+ *
33
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
34
+ * @param {function(Array<AnimationClip>)} onLoad - Executed when the loading process has been finished.
35
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
36
+ * @param {onErrorCallback} onError - Executed when errors occur.
37
+ */
13
38
  load( url, onLoad, onProgress, onError ) {
14
39
 
15
40
  const scope = this;
@@ -44,6 +69,12 @@ class AnimationLoader extends Loader {
44
69
 
45
70
  }
46
71
 
72
+ /**
73
+ * Parses the given JSON object and returns an array of animation clips.
74
+ *
75
+ * @param {Object} json - The serialized animation clips.
76
+ * @return {Array<AnimationClip>} The parsed animation clips.
77
+ */
47
78
  parse( json ) {
48
79
 
49
80
  const animations = [];
@@ -2,14 +2,45 @@ import { AudioContext } from '../audio/AudioContext.js';
2
2
  import { FileLoader } from './FileLoader.js';
3
3
  import { Loader } from './Loader.js';
4
4
 
5
+ /**
6
+ * Class for loading audio buffers. Audios are internally
7
+ * loaded via {@link FileLoader}.
8
+ *
9
+ * ```js
10
+ * const audioListener = new THREE.AudioListener();
11
+ * const ambientSound = new THREE.Audio( audioListener );
12
+ *
13
+ * const loader = new THREE.AudioLoader();
14
+ * const audioBuffer = await loader.loadAsync( 'audio/ambient_ocean.ogg' );
15
+ *
16
+ * ambientSound.setBuffer( audioBuffer );
17
+ * ambientSound.play();
18
+ * ```
19
+ *
20
+ * @augments Loader
21
+ */
5
22
  class AudioLoader extends Loader {
6
23
 
24
+ /**
25
+ * Constructs a new audio loader.
26
+ *
27
+ * @param {LoadingManager} [manager] - The loading manager.
28
+ */
7
29
  constructor( manager ) {
8
30
 
9
31
  super( manager );
10
32
 
11
33
  }
12
34
 
35
+ /**
36
+ * Starts loading from the given URL and passes the loaded audio buffer
37
+ * to the `onLoad()` callback.
38
+ *
39
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
40
+ * @param {function(AudioBuffer)} onLoad - Executed when the loading process has been finished.
41
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
42
+ * @param {onErrorCallback} onError - Executed when errors occur.
43
+ */
13
44
  load( url, onLoad, onProgress, onError ) {
14
45
 
15
46
  const scope = this;
@@ -10,14 +10,42 @@ import { InterleavedBufferAttribute } from '../core/InterleavedBufferAttribute.j
10
10
  import { InterleavedBuffer } from '../core/InterleavedBuffer.js';
11
11
  import { getTypedArray } from '../utils.js';
12
12
 
13
+ /**
14
+ * Class for loading geometries. The files are internally
15
+ * loaded via {@link FileLoader}.
16
+ *
17
+ * ```js
18
+ * const loader = new THREE.BufferGeometryLoader();
19
+ * const geometry = await loader.loadAsync( 'models/json/pressure.json' );
20
+ *
21
+ * const material = new THREE.MeshBasicMaterial( { color: 0xF5F5F5 } );
22
+ * const object = new THREE.Mesh( geometry, material );
23
+ * scene.add( object );
24
+ * ```
25
+ *
26
+ * @augments Loader
27
+ */
13
28
  class BufferGeometryLoader extends Loader {
14
29
 
30
+ /**
31
+ * Constructs a new geometry loader.
32
+ *
33
+ * @param {LoadingManager} [manager] - The loading manager.
34
+ */
15
35
  constructor( manager ) {
16
36
 
17
37
  super( manager );
18
38
 
19
39
  }
20
40
 
41
+ /**
42
+ * Starts loading from the given URL and pass the loaded geometry to the `onLoad()` callback.
43
+ *
44
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
45
+ * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
46
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
47
+ * @param {onErrorCallback} onError - Executed when errors occur.
48
+ */
21
49
  load( url, onLoad, onProgress, onError ) {
22
50
 
23
51
  const scope = this;
@@ -52,6 +80,12 @@ class BufferGeometryLoader extends Loader {
52
80
 
53
81
  }
54
82
 
83
+ /**
84
+ * Parses the given JSON object and returns a geometry.
85
+ *
86
+ * @param {Object} json - The serialized geometry.
87
+ * @return {BufferGeometry} The parsed geometry.
88
+ */
55
89
  parse( json ) {
56
90
 
57
91
  const interleavedBufferMap = {};
@@ -1,9 +1,36 @@
1
+ /**
2
+ * @class
3
+ * @classdesc A simple caching system, used internally by {@link FileLoader}.
4
+ * To enable caching across all loaders that use {@link FileLoader}, add `THREE.Cache.enabled = true.` once in your app.
5
+ * @hideconstructor
6
+ */
1
7
  const Cache = {
2
8
 
9
+ /**
10
+ * Whether caching is enabled or not.
11
+ *
12
+ * @static
13
+ * @type {boolean}
14
+ * @default false
15
+ */
3
16
  enabled: false,
4
17
 
18
+ /**
19
+ * A dictionary that holds cached files.
20
+ *
21
+ * @static
22
+ * @type {Object<string,Object>}
23
+ */
5
24
  files: {},
6
25
 
26
+ /**
27
+ * Adds a cache entry with a key to reference the file. If this key already
28
+ * holds a file, it is overwritten.
29
+ *
30
+ * @static
31
+ * @param {string} key - The key to reference the cached file.
32
+ * @param {Object} file - The file to be cached.
33
+ */
7
34
  add: function ( key, file ) {
8
35
 
9
36
  if ( this.enabled === false ) return;
@@ -14,6 +41,13 @@ const Cache = {
14
41
 
15
42
  },
16
43
 
44
+ /**
45
+ * Gets the cached value for the given key.
46
+ *
47
+ * @static
48
+ * @param {string} key - The key to reference the cached file.
49
+ * @return {Object|undefined} The cached file. If the key does not exist `undefined` is returned.
50
+ */
17
51
  get: function ( key ) {
18
52
 
19
53
  if ( this.enabled === false ) return;
@@ -24,12 +58,23 @@ const Cache = {
24
58
 
25
59
  },
26
60
 
61
+ /**
62
+ * Removes the cached file associated with the given key.
63
+ *
64
+ * @static
65
+ * @param {string} key - The key to reference the cached file.
66
+ */
27
67
  remove: function ( key ) {
28
68
 
29
69
  delete this.files[ key ];
30
70
 
31
71
  },
32
72
 
73
+ /**
74
+ * Remove all values from the cache.
75
+ *
76
+ * @static
77
+ */
33
78
  clear: function () {
34
79
 
35
80
  this.files = {};
@@ -4,19 +4,40 @@ import { CompressedTexture } from '../textures/CompressedTexture.js';
4
4
  import { Loader } from './Loader.js';
5
5
 
6
6
  /**
7
- * Abstract Base class to block based textures loader (dds, pvr, ...)
7
+ * Abstract base class for loading compressed texture formats S3TC, ASTC or ETC.
8
+ * Textures are internally loaded via {@link FileLoader}.
8
9
  *
9
- * Sub classes have to implement the parse() method which will be used in load().
10
+ * Derived classes have to implement the `parse()` method which holds the parsing
11
+ * for the respective format.
12
+ *
13
+ * @abstract
14
+ * @augments Loader
10
15
  */
11
-
12
16
  class CompressedTextureLoader extends Loader {
13
17
 
18
+ /**
19
+ * Constructs a new compressed texture loader.
20
+ *
21
+ * @param {LoadingManager} [manager] - The loading manager.
22
+ */
14
23
  constructor( manager ) {
15
24
 
16
25
  super( manager );
17
26
 
18
27
  }
19
28
 
29
+ /**
30
+ * Starts loading from the given URL and passes the loaded compressed texture
31
+ * to the `onLoad()` callback. The method also returns a new texture object which can
32
+ * directly be used for material creation. If you do it this way, the texture
33
+ * may pop up in your scene once the respective loading process is finished.
34
+ *
35
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
36
+ * @param {function(CompressedTexture)} onLoad - Executed when the loading process has been finished.
37
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
38
+ * @param {onErrorCallback} onError - Executed when errors occur.
39
+ * @return {CompressedTexture} The compressed texture.
40
+ */
20
41
  load( url, onLoad, onProgress, onError ) {
21
42
 
22
43
  const scope = this;
@@ -130,5 +151,17 @@ class CompressedTextureLoader extends Loader {
130
151
 
131
152
  }
132
153
 
154
+ /**
155
+ * Represents the result object type of the `parse()` method.
156
+ *
157
+ * @typedef {Object} CompressedTextureLoader~TexData
158
+ * @property {number} width - The width of the base mip.
159
+ * @property {number} height - The width of the base mip.
160
+ * @property {boolean} isCubemap - Whether the data represent a cubemap or not.
161
+ * @property {number} mipmapCount - The mipmap count.
162
+ * @property {Array<{data:TypedArray,width:number,height:number}>} mipmaps - An array holding the mipmaps.
163
+ * Each entry holds the data and the dimensions for each level.
164
+ * @property {number} format - The texture format.
165
+ **/
133
166
 
134
167
  export { CompressedTextureLoader };
@@ -3,14 +3,59 @@ import { CubeTexture } from '../textures/CubeTexture.js';
3
3
  import { Loader } from './Loader.js';
4
4
  import { SRGBColorSpace } from '../constants.js';
5
5
 
6
+ /**
7
+ * Class for loading cube textures. Images are internally loaded via {@link ImageLoader}.
8
+ *
9
+ * The loader returns an instance of {@link CubeTexture} and expects the cube map to
10
+ * be defined as six separate images representing the sides of a cube. Other cube map definitions
11
+ * like vertical and horizontal cross, column and row layouts are not supported.
12
+ *
13
+ * Note that, by convention, cube maps are specified in a coordinate system
14
+ * in which positive-x is to the right when looking up the positive-z axis --
15
+ * in other words, using a left-handed coordinate system. Since three.js uses
16
+ * a right-handed coordinate system, environment maps used in three.js will
17
+ * have pos-x and neg-x swapped.
18
+ *
19
+ * The loaded cube texture is in sRGB color space. Meaning {@link Texture#colorSpace}
20
+ * is set to `SRGBColorSpace` by default.
21
+ *
22
+ * ```js
23
+ * const loader = new THREE.CubeTextureLoader().setPath( 'textures/cubeMaps/' );
24
+ * const cubeTexture = await loader.loadAsync( [
25
+ * 'px.png', 'nx.png', 'py.png', 'ny.png', 'pz.png', 'nz.png'
26
+ * ] );
27
+ * scene.background = cubeTexture;
28
+ * ```
29
+ *
30
+ * @augments Loader
31
+ */
6
32
  class CubeTextureLoader extends Loader {
7
33
 
34
+ /**
35
+ * Constructs a new cube texture loader.
36
+ *
37
+ * @param {LoadingManager} [manager] - The loading manager.
38
+ */
8
39
  constructor( manager ) {
9
40
 
10
41
  super( manager );
11
42
 
12
43
  }
13
44
 
45
+ /**
46
+ * Starts loading from the given URL and pass the fully loaded cube texture
47
+ * to the `onLoad()` callback. The method also returns a new cube texture object which can
48
+ * directly be used for material creation. If you do it this way, the cube texture
49
+ * may pop up in your scene once the respective loading process is finished.
50
+ *
51
+ * @param {Array<string>} urls - Array of 6 URLs to images, one for each side of the
52
+ * cube texture. The urls should be specified in the following order: pos-x,
53
+ * neg-x, pos-y, neg-y, pos-z, neg-z. An array of data URIs are allowed as well.
54
+ * @param {function(CubeTexture)} onLoad - Executed when the loading process has been finished.
55
+ * @param {onProgressCallback} onProgress - Unsupported in this loader.
56
+ * @param {onErrorCallback} onError - Executed when errors occur.
57
+ * @return {CubeTexture} The cube texture.
58
+ */
14
59
  load( urls, onLoad, onProgress, onError ) {
15
60
 
16
61
  const texture = new CubeTexture();
@@ -4,19 +4,40 @@ import { DataTexture } from '../textures/DataTexture.js';
4
4
  import { Loader } from './Loader.js';
5
5
 
6
6
  /**
7
- * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)
7
+ * Abstract base class for loading binary texture formats RGBE, EXR or TGA.
8
+ * Textures are internally loaded via {@link FileLoader}.
8
9
  *
9
- * Sub classes have to implement the parse() method which will be used in load().
10
+ * Derived classes have to implement the `parse()` method which holds the parsing
11
+ * for the respective format.
12
+ *
13
+ * @abstract
14
+ * @augments Loader
10
15
  */
11
-
12
16
  class DataTextureLoader extends Loader {
13
17
 
18
+ /**
19
+ * Constructs a new data texture loader.
20
+ *
21
+ * @param {LoadingManager} [manager] - The loading manager.
22
+ */
14
23
  constructor( manager ) {
15
24
 
16
25
  super( manager );
17
26
 
18
27
  }
19
28
 
29
+ /**
30
+ * Starts loading from the given URL and passes the loaded data texture
31
+ * to the `onLoad()` callback. The method also returns a new texture object which can
32
+ * directly be used for material creation. If you do it this way, the texture
33
+ * may pop up in your scene once the respective loading process is finished.
34
+ *
35
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
36
+ * @param {function(DataTexture)} onLoad - Executed when the loading process has been finished.
37
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
38
+ * @param {onErrorCallback} onError - Executed when errors occur.
39
+ * @return {DataTexture} The data texture.
40
+ */
20
41
  load( url, onLoad, onProgress, onError ) {
21
42
 
22
43
  const scope = this;
@@ -127,5 +148,25 @@ class DataTextureLoader extends Loader {
127
148
 
128
149
  }
129
150
 
151
+ /**
152
+ * Represents the result object type of the `parse()` method.
153
+ *
154
+ * @typedef {Object} DataTextureLoader~TexData
155
+ * @property {Object} [image] - An object holding width, height and the texture data.
156
+ * @property {number} [width] - The width of the base mip.
157
+ * @property {number} [height] - The width of the base mip.
158
+ * @property {TypedArray} [data] - The texture data.
159
+ * @property {number} [format] - The texture format.
160
+ * @property {number} [type] - The texture type.
161
+ * @property {boolean} [flipY] - If set to `true`, the texture is flipped along the vertical axis when uploaded to the GPU.
162
+ * @property {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
163
+ * @property {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
164
+ * @property {number} [anisotropy=1] - The anisotropy value.
165
+ * @property {boolean} [generateMipmaps] - Whether to generate mipmaps or not.
166
+ * @property {string} [colorSpace] - The color space.
167
+ * @property {number} [magFilter] - The mag filter.
168
+ * @property {number} [minFilter] - The min filter.
169
+ * @property {Array<Object>} [mipmaps] - The mipmaps.
170
+ **/
130
171
 
131
172
  export { DataTextureLoader };