@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
@@ -15,21 +15,39 @@ import {
15
15
  } from 'three';
16
16
 
17
17
  /**
18
- * Autodesk 3DS three.js file loader, based on lib3ds.
18
+ * A loader for the 3DS format, based on lib3ds.
19
19
  *
20
20
  * Loads geometry with uv and materials basic properties with texture support.
21
21
  *
22
- * @class TDSLoader
22
+ * ```js
23
+ * const loader = new TDSLoader();
24
+ * loader.setResourcePath( 'models/3ds/portalgun/textures/' );
25
+ * const object = await loader.loadAsync( 'models/3ds/portalgun/portalgun.3ds' );
26
+ * scene.add( object );
27
+ *
28
+ * @augments Loader
23
29
  */
24
-
25
30
  class TDSLoader extends Loader {
26
31
 
32
+ /**
33
+ * Constructs a new 3DS loader.
34
+ *
35
+ * @param {LoadingManager} [manager] - The loading manager.
36
+ */
27
37
  constructor( manager ) {
28
38
 
29
39
  super( manager );
30
40
 
41
+ /**
42
+ * Whether debug mode should be enabled or not.
43
+ *
44
+ * @type {boolean}
45
+ * @default false
46
+ */
31
47
  this.debug = false;
32
48
 
49
+ // internals
50
+
33
51
  this.group = null;
34
52
 
35
53
  this.materials = [];
@@ -38,13 +56,13 @@ class TDSLoader extends Loader {
38
56
  }
39
57
 
40
58
  /**
41
- * Load 3ds file from url.
59
+ * Starts loading from the given URL and passes the loaded 3DS asset
60
+ * to the `onLoad()` callback.
42
61
  *
43
- * @method load
44
- * @param {string} url URL for the file.
45
- * @param {Function} onLoad onLoad callback, receives group Object3D as argument.
46
- * @param {Function} onProgress onProgress callback.
47
- * @param {Function} onError onError callback.
62
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
63
+ * @param {function(Group)} onLoad - Executed when the loading process has been finished.
64
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
65
+ * @param {onErrorCallback} onError - Executed when errors occur.
48
66
  */
49
67
  load( url, onLoad, onProgress, onError ) {
50
68
 
@@ -85,12 +103,11 @@ class TDSLoader extends Loader {
85
103
  }
86
104
 
87
105
  /**
88
- * Parse arraybuffer data and load 3ds file.
106
+ * Parses the given 3DS data and returns the resulting data.
89
107
  *
90
- * @method parse
91
- * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded.
92
- * @param {string} path Path for external resources.
93
- * @return {Group} Group loaded from 3ds file.
108
+ * @param {ArrayBuffer} arraybuffer - The raw 3DS data as an array buffer.
109
+ * @param {string} path - The asset path.
110
+ * @return {Group} The parsed asset represented as a group.
94
111
  */
95
112
  parse( arraybuffer, path ) {
96
113
 
@@ -113,9 +130,9 @@ class TDSLoader extends Loader {
113
130
  /**
114
131
  * Decode file content to read 3ds data.
115
132
  *
116
- * @method readFile
117
- * @param {ArrayBuffer} arraybuffer Arraybuffer data to be loaded.
118
- * @param {string} path Path for external resources.
133
+ * @private
134
+ * @param {ArrayBuffer} arraybuffer - Arraybuffer data to be loaded.
135
+ * @param {string} path - Path for external resources.
119
136
  */
120
137
  readFile( arraybuffer, path ) {
121
138
 
@@ -156,9 +173,9 @@ class TDSLoader extends Loader {
156
173
  /**
157
174
  * Read mesh data chunk.
158
175
  *
159
- * @method readMeshData
160
- * @param {Chunk} chunk to read mesh from
161
- * @param {string} path Path for external resources.
176
+ * @private
177
+ * @param {Chunk} chunk - to read mesh from
178
+ * @param {string} path - Path for external resources.
162
179
  */
163
180
  readMeshData( chunk, path ) {
164
181
 
@@ -202,8 +219,8 @@ class TDSLoader extends Loader {
202
219
  /**
203
220
  * Read named object chunk.
204
221
  *
205
- * @method readNamedObject
206
- * @param {Chunk} chunk Chunk in use.
222
+ * @private
223
+ * @param {Chunk} chunk - Chunk in use.
207
224
  */
208
225
  readNamedObject( chunk ) {
209
226
 
@@ -233,9 +250,9 @@ class TDSLoader extends Loader {
233
250
  /**
234
251
  * Read material data chunk and add it to the material list.
235
252
  *
236
- * @method readMaterialEntry
237
- * @param {Chunk} chunk Chunk in use.
238
- * @param {string} path Path for external resources.
253
+ * @private
254
+ * @param {Chunk} chunk - Chunk in use.
255
+ * @param {string} path - Path for external resources.
239
256
  */
240
257
  readMaterialEntry( chunk, path ) {
241
258
 
@@ -335,9 +352,9 @@ class TDSLoader extends Loader {
335
352
  /**
336
353
  * Read mesh data chunk.
337
354
  *
338
- * @method readMesh
339
- * @param {Chunk} chunk Chunk in use.
340
- * @return {Mesh} The parsed mesh.
355
+ * @private
356
+ * @param {Chunk} chunk - Chunk in use.
357
+ * @return {Mesh} - The parsed mesh.
341
358
  */
342
359
  readMesh( chunk ) {
343
360
 
@@ -459,9 +476,9 @@ class TDSLoader extends Loader {
459
476
  /**
460
477
  * Read face array data chunk.
461
478
  *
462
- * @method readFaceArray
463
- * @param {Chunk} chunk Chunk in use.
464
- * @param {Mesh} mesh Mesh to be filled with the data read.
479
+ * @private
480
+ * @param {Chunk} chunk - Chunk in use.
481
+ * @param {Mesh} mesh - Mesh to be filled with the data read.
465
482
  */
466
483
  readFaceArray( chunk, mesh ) {
467
484
 
@@ -527,9 +544,9 @@ class TDSLoader extends Loader {
527
544
  /**
528
545
  * Read texture map data chunk.
529
546
  *
530
- * @method readMap
531
- * @param {Chunk} chunk Chunk in use.
532
- * @param {string} path Path for external resources.
547
+ * @private
548
+ * @param {Chunk} chunk - Chunk in use.
549
+ * @param {string} path - Path for external resources.
533
550
  * @return {Texture} Texture read from this data chunk.
534
551
  */
535
552
  readMap( chunk, path ) {
@@ -586,8 +603,8 @@ class TDSLoader extends Loader {
586
603
  /**
587
604
  * Read material group data chunk.
588
605
  *
589
- * @method readMaterialGroup
590
- * @param {Chunk} chunk Chunk in use.
606
+ * @private
607
+ * @param {Chunk} chunk - Chunk in use.
591
608
  * @return {Object} Object with name and index of the object.
592
609
  */
593
610
  readMaterialGroup( chunk ) {
@@ -612,9 +629,9 @@ class TDSLoader extends Loader {
612
629
  /**
613
630
  * Read a color value.
614
631
  *
615
- * @method readColor
616
- * @param {Chunk} chunk Chunk.
617
- * @return {Color} Color value read..
632
+ * @private
633
+ * @param {Chunk} chunk - Chunk.
634
+ * @return {Color} Color value read.
618
635
  */
619
636
  readColor( chunk ) {
620
637
 
@@ -654,8 +671,8 @@ class TDSLoader extends Loader {
654
671
  /**
655
672
  * Read percentage value.
656
673
  *
657
- * @method readPercentage
658
- * @param {Chunk} chunk Chunk to read data from.
674
+ * @private
675
+ * @param {Chunk} chunk - Chunk to read data from.
659
676
  * @return {number} Data read from the dataview.
660
677
  */
661
678
  readPercentage( chunk ) {
@@ -685,8 +702,8 @@ class TDSLoader extends Loader {
685
702
  *
686
703
  * Is controlled by a flag to show or hide debug messages.
687
704
  *
688
- * @method debugMessage
689
- * @param {Object} message Debug message to print to the console.
705
+ * @private
706
+ * @param {Object} message - Debug message to print to the console.
690
707
  */
691
708
  debugMessage( message ) {
692
709
 
@@ -700,17 +717,20 @@ class TDSLoader extends Loader {
700
717
 
701
718
  }
702
719
 
703
-
704
- /** Read data/sub-chunks from chunk */
720
+ /**
721
+ * Read data/sub-chunks from chunk.
722
+ *
723
+ * @private
724
+ */
705
725
  class Chunk {
706
726
 
707
727
  /**
708
728
  * Create a new chunk
709
729
  *
710
- * @class Chunk
711
- * @param {DataView} data DataView to read from.
712
- * @param {number} position in data.
713
- * @param {Function} debugMessage logging callback.
730
+ * @private
731
+ * @param {DataView} data - DataView to read from.
732
+ * @param {number} position - In data.
733
+ * @param {Function} debugMessage - Logging callback.
714
734
  */
715
735
  constructor( data, position, debugMessage ) {
716
736
 
@@ -740,10 +760,10 @@ class Chunk {
740
760
  }
741
761
 
742
762
  /**
743
- * read a sub cchunk.
763
+ * Reads a sub cchunk.
744
764
  *
745
- * @method readChunk
746
- * @return {Chunk | null} next sub chunk
765
+ * @private
766
+ * @return {Chunk | null} next sub chunk.
747
767
  */
748
768
  readChunk() {
749
769
 
@@ -769,9 +789,9 @@ class Chunk {
769
789
  }
770
790
 
771
791
  /**
772
- * return the ID of this chunk as Hex
792
+ * Returns the ID of this chunk as Hex
773
793
  *
774
- * @method idToString
794
+ * @private
775
795
  * @return {string} hex-string of id
776
796
  */
777
797
  get hexId() {
@@ -789,7 +809,7 @@ class Chunk {
789
809
  /**
790
810
  * Read byte value.
791
811
  *
792
- * @method readByte
812
+ * @private
793
813
  * @return {number} Data read from the dataview.
794
814
  */
795
815
  readByte() {
@@ -803,7 +823,7 @@ class Chunk {
803
823
  /**
804
824
  * Read 32 bit float value.
805
825
  *
806
- * @method readFloat
826
+ * @private
807
827
  * @return {number} Data read from the dataview.
808
828
  */
809
829
  readFloat() {
@@ -826,7 +846,7 @@ class Chunk {
826
846
  /**
827
847
  * Read 32 bit signed integer value.
828
848
  *
829
- * @method readInt
849
+ * @private
830
850
  * @return {number} Data read from the dataview.
831
851
  */
832
852
  readInt() {
@@ -840,7 +860,7 @@ class Chunk {
840
860
  /**
841
861
  * Read 16 bit signed integer value.
842
862
  *
843
- * @method readShort
863
+ * @private
844
864
  * @return {number} Data read from the dataview.
845
865
  */
846
866
  readShort() {
@@ -854,7 +874,7 @@ class Chunk {
854
874
  /**
855
875
  * Read 64 bit unsigned integer value.
856
876
  *
857
- * @method readDWord
877
+ * @private
858
878
  * @return {number} Data read from the dataview.
859
879
  */
860
880
  readDWord() {
@@ -868,7 +888,7 @@ class Chunk {
868
888
  /**
869
889
  * Read 32 bit unsigned integer value.
870
890
  *
871
- * @method readWord
891
+ * @private
872
892
  * @return {number} Data read from the dataview.
873
893
  */
874
894
  readWord() {
@@ -882,7 +902,7 @@ class Chunk {
882
902
  /**
883
903
  * Read NULL terminated ASCII string value from chunk-pos.
884
904
  *
885
- * @method readString
905
+ * @private
886
906
  * @return {string} Data read from the dataview.
887
907
  */
888
908
  readString() {
@@ -3,14 +3,36 @@ import {
3
3
  LinearMipmapLinearFilter
4
4
  } from 'three';
5
5
 
6
+ /**
7
+ * A loader for the TGA texture format.
8
+ *
9
+ * ```js
10
+ * const loader = new TGALoader();
11
+ * const texture = await loader.loadAsync( 'textures/crate_color8.tga' );
12
+ * texture.colorSpace = THREE.SRGBColorSpace; // only for color textures
13
+ * ```
14
+ *
15
+ * @augments DataTextureLoader
16
+ */
6
17
  class TGALoader extends DataTextureLoader {
7
18
 
19
+ /**
20
+ * Constructs a new TGA loader.
21
+ *
22
+ * @param {LoadingManager} [manager] - The loading manager.
23
+ */
8
24
  constructor( manager ) {
9
25
 
10
26
  super( manager );
11
27
 
12
28
  }
13
29
 
30
+ /**
31
+ * Parses the given TGA texture data.
32
+ *
33
+ * @param {ArrayBuffer} buffer - The raw texture data.
34
+ * @return {DataTextureLoader~TexData} An object representing the parsed texture data.
35
+ */
14
36
  parse( buffer ) {
15
37
 
16
38
  // reference from vthibault, https://github.com/vthibault/roBrowser/blob/master/src/Loaders/Targa.js
@@ -6,14 +6,36 @@ import {
6
6
 
7
7
  import UTIF from '../libs/utif.module.js';
8
8
 
9
+ /**
10
+ * A loader for the TIFF texture format.
11
+ *
12
+ * ```js
13
+ * const loader = new TIFFLoader();
14
+ * const texture = await loader.loadAsync( 'textures/tiff/crate_lzw.tif' );
15
+ * texture.colorSpace = THREE.SRGBColorSpace;
16
+ * ```
17
+ *
18
+ * @augments DataTextureLoader
19
+ */
9
20
  class TIFFLoader extends DataTextureLoader {
10
21
 
22
+ /**
23
+ * Constructs a new TIFF loader.
24
+ *
25
+ * @param {LoadingManager} [manager] - The loading manager.
26
+ */
11
27
  constructor( manager ) {
12
28
 
13
29
  super( manager );
14
30
 
15
31
  }
16
32
 
33
+ /**
34
+ * Parses the given TIFF texture data.
35
+ *
36
+ * @param {ArrayBuffer} buffer - The raw texture data.
37
+ * @return {DataTextureLoader~TexData} An object representing the parsed texture data.
38
+ */
17
39
  parse( buffer ) {
18
40
 
19
41
  const ifds = UTIF.decode( buffer );
@@ -5,21 +5,49 @@ import {
5
5
  import opentype from '../libs/opentype.module.js';
6
6
 
7
7
  /**
8
- * Requires opentype.js to be included in the project.
8
+ * A loader for the TTF format.
9
+ *
9
10
  * Loads TTF files and converts them into typeface JSON that can be used directly
10
11
  * to create THREE.Font objects.
12
+ *
13
+ * ```js
14
+ * const loader = new TTFLoader();
15
+ * const json = await loader.loadAsync( 'fonts/ttf/kenpixel.ttf' );
16
+ * const font = new Font( json );
17
+ * ```
18
+ *
19
+ * @augments Loader
11
20
  */
12
-
13
21
  class TTFLoader extends Loader {
14
22
 
23
+ /**
24
+ * Constructs a new TTF loader.
25
+ *
26
+ * @param {LoadingManager} [manager] - The loading manager.
27
+ */
15
28
  constructor( manager ) {
16
29
 
17
30
  super( manager );
18
31
 
32
+ /**
33
+ * Whether the TTF commands should be reversed or not.
34
+ *
35
+ * @type {boolean}
36
+ * @default false
37
+ */
19
38
  this.reversed = false;
20
39
 
21
40
  }
22
41
 
42
+ /**
43
+ * Starts loading from the given URL and passes the loaded TTF asset
44
+ * to the `onLoad()` callback.
45
+ *
46
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
47
+ * @param {function(Object)} onLoad - Executed when the loading process has been finished.
48
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
49
+ * @param {onErrorCallback} onError - Executed when errors occur.
50
+ */
23
51
  load( url, onLoad, onProgress, onError ) {
24
52
 
25
53
  const scope = this;
@@ -55,6 +83,12 @@ class TTFLoader extends Loader {
55
83
 
56
84
  }
57
85
 
86
+ /**
87
+ * Parses the given TTF data and returns a JSON for creating a font.
88
+ *
89
+ * @param {ArrayBuffer} arraybuffer - The raw TTF data as an array buffer.
90
+ * @return {Object} The result JSON.
91
+ */
58
92
  parse( arraybuffer ) {
59
93
 
60
94
  function convert( font, reversed ) {
@@ -116,14 +116,41 @@ class USDAParser {
116
116
 
117
117
  }
118
118
 
119
+ /**
120
+ * A loader for the USDZ format.
121
+ *
122
+ * USDZ files that use USDC internally are not yet supported, only USDA.
123
+ *
124
+ * ```js
125
+ * const loader = new USDZLoader();
126
+ * const model = await loader.loadAsync( 'saeukkang.usdz' );
127
+ * scene.add( model );
128
+ * ```
129
+ *
130
+ * @augments Loader
131
+ */
119
132
  class USDZLoader extends Loader {
120
133
 
134
+ /**
135
+ * Constructs a new USDZ loader.
136
+ *
137
+ * @param {LoadingManager} [manager] - The loading manager.
138
+ */
121
139
  constructor( manager ) {
122
140
 
123
141
  super( manager );
124
142
 
125
143
  }
126
144
 
145
+ /**
146
+ * Starts loading from the given URL and passes the loaded USDZ asset
147
+ * to the `onLoad()` callback.
148
+ *
149
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
150
+ * @param {function(Group)} onLoad - Executed when the loading process has been finished.
151
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
152
+ * @param {onErrorCallback} onError - Executed when errors occur.
153
+ */
127
154
  load( url, onLoad, onProgress, onError ) {
128
155
 
129
156
  const scope = this;
@@ -159,6 +186,12 @@ class USDZLoader extends Loader {
159
186
 
160
187
  }
161
188
 
189
+ /**
190
+ * Parses the given USDZ data and returns the resulting group.
191
+ *
192
+ * @param {ArrayBuffer} buffer - The raw USDZ data as an array buffer.
193
+ * @return {Group} The parsed asset as a group.
194
+ */
162
195
  parse( buffer ) {
163
196
 
164
197
  const parser = new USDAParser();
@@ -173,7 +206,7 @@ class USDZLoader extends Loader {
173
206
 
174
207
  if ( filename.endsWith( 'png' ) ) {
175
208
 
176
- const blob = new Blob( [ zip[ filename ] ], { type: { type: 'image/png' } } );
209
+ const blob = new Blob( [ zip[ filename ] ], { type: 'image/png' } );
177
210
  data[ filename ] = URL.createObjectURL( blob );
178
211
 
179
212
  }
@@ -12,10 +12,8 @@ import {
12
12
  UVMapping,
13
13
  } from 'three';
14
14
 
15
- // UltraHDR Image Format - https://developer.android.com/media/platform/hdr-image-format
16
- // HDR/EXR to UltraHDR Converter - https://gainmap-creator.monogrid.com/
17
-
18
15
  /**
16
+ * UltraHDR Image Format - https://developer.android.com/media/platform/hdr-image-format
19
17
  *
20
18
  * Short format brief:
21
19
  *
@@ -30,36 +28,68 @@ import {
30
28
  * Binary image storages are prefixed with a unique 0xFFD8 16-bit descriptor.
31
29
  */
32
30
 
31
+
32
+ // Calculating this SRGB powers is extremely slow for 4K images and can be sufficiently precalculated for a 3-4x speed boost
33
+ const SRGB_TO_LINEAR = Array( 1024 )
34
+ .fill( 0 )
35
+ .map( ( _, value ) =>
36
+ Math.pow( ( value / 255 ) * 0.9478672986 + 0.0521327014, 2.4 )
37
+ );
38
+
33
39
  /**
40
+ * A loader for the Ultra HDR Image Format.
41
+ *
42
+ * Existing HDR or EXR textures can be converted to Ultra HDR with this [tool]{@link https://gainmap-creator.monogrid.com/}.
43
+ *
34
44
  * Current feature set:
35
45
  * - JPEG headers (required)
36
46
  * - XMP metadata (required)
37
- * - XMP validation (not implemented)
47
+ * - XMP validation (not implemented)
38
48
  * - EXIF profile (not implemented)
39
49
  * - ICC profile (not implemented)
40
50
  * - Binary storage for SDR & HDR images (required)
41
51
  * - Gainmap metadata (required)
42
52
  * - Non-JPEG image formats (not implemented)
43
53
  * - Primary image as an HDR image (not implemented)
54
+ *
55
+ * ```js
56
+ * const loader = new UltraHDRLoader();
57
+ * const texture = await loader.loadAsync( 'textures/equirectangular/ice_planet_close.jpg' );
58
+ * texture.mapping = THREE.EquirectangularReflectionMapping;
59
+ *
60
+ * scene.background = texture;
61
+ * scene.environment = texture;
62
+ * ```
63
+ *
64
+ * @augments Loader
44
65
  */
45
-
46
- /* Calculating this SRGB powers is extremely slow for 4K images and can be sufficiently precalculated for a 3-4x speed boost */
47
- const SRGB_TO_LINEAR = Array( 1024 )
48
- .fill( 0 )
49
- .map( ( _, value ) =>
50
- Math.pow( ( value / 255 ) * 0.9478672986 + 0.0521327014, 2.4 )
51
- );
52
-
53
66
  class UltraHDRLoader extends Loader {
54
67
 
68
+ /**
69
+ * Constructs a new Ultra HDR loader.
70
+ *
71
+ * @param {LoadingManager} [manager] - The loading manager.
72
+ */
55
73
  constructor( manager ) {
56
74
 
57
75
  super( manager );
58
76
 
77
+ /**
78
+ * The texture type.
79
+ *
80
+ * @type {(HalfFloatType|FloatType)}
81
+ * @default HalfFloatType
82
+ */
59
83
  this.type = HalfFloatType;
60
84
 
61
85
  }
62
86
 
87
+ /**
88
+ * Sets the texture type.
89
+ *
90
+ * @param {(HalfFloatType|FloatType)} value - The texture type to set.
91
+ * @return {RGBELoader} A reference to this loader.
92
+ */
63
93
  setDataType( value ) {
64
94
 
65
95
  this.type = value;
@@ -68,6 +98,12 @@ class UltraHDRLoader extends Loader {
68
98
 
69
99
  }
70
100
 
101
+ /**
102
+ * Parses the given Ultra HDR texture data.
103
+ *
104
+ * @param {ArrayBuffer} buffer - The raw texture data.
105
+ * @param {Function} onLoad - The `onLoad` callback.
106
+ */
71
107
  parse( buffer, onLoad ) {
72
108
 
73
109
  const xmpMetadata = {
@@ -262,6 +298,16 @@ class UltraHDRLoader extends Loader {
262
298
 
263
299
  }
264
300
 
301
+ /**
302
+ * Starts loading from the given URL and passes the loaded Ultra HDR texture
303
+ * to the `onLoad()` callback.
304
+ *
305
+ * @param {string} url - The path/URL of the files to be loaded. This can also be a data URI.
306
+ * @param {function(DataTexture, Object)} onLoad - Executed when the loading process has been finished.
307
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
308
+ * @param {onErrorCallback} onError - Executed when errors occur.
309
+ * @return {DataTexture} The Ultra HDR texture.
310
+ */
265
311
  load( url, onLoad, onProgress, onError ) {
266
312
 
267
313
  const texture = new DataTexture(