@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
@@ -145,14 +145,41 @@ const MXElements = [
145
145
  const MtlXLibrary = {};
146
146
  MXElements.forEach( element => MtlXLibrary[ element.name ] = element );
147
147
 
148
+ /**
149
+ * A loader for the MaterialX format.
150
+ *
151
+ * The node materials loaded with this loader can only be used with {@link WebGPURenderer}.
152
+ *
153
+ * ```js
154
+ * const loader = new MaterialXLoader().setPath( SAMPLE_PATH );
155
+ * const materials = await loader.loadAsync( 'standard_surface_brass_tiled.mtlx' );
156
+ * ```
157
+ *
158
+ * @augments Loader
159
+ */
148
160
  class MaterialXLoader extends Loader {
149
161
 
162
+ /**
163
+ * Constructs a new MaterialX loader.
164
+ *
165
+ * @param {LoadingManager} [manager] - The loading manager.
166
+ */
150
167
  constructor( manager ) {
151
168
 
152
169
  super( manager );
153
170
 
154
171
  }
155
172
 
173
+ /**
174
+ * Starts loading from the given URL and passes the loaded MaterialX asset
175
+ * to the `onLoad()` callback.
176
+ *
177
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
178
+ * @param {function(Object<string,NodeMaterial>)} onLoad - Executed when the loading process has been finished.
179
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
180
+ * @param {onErrorCallback} onError - Executed when errors occur.
181
+ * @return {MaterialXLoader} A reference to this loader.
182
+ */
156
183
  load( url, onLoad, onProgress, onError ) {
157
184
 
158
185
  const _onError = function ( e ) {
@@ -189,6 +216,12 @@ class MaterialXLoader extends Loader {
189
216
 
190
217
  }
191
218
 
219
+ /**
220
+ * Parses the given MaterialX data and returns the resulting materials.
221
+ *
222
+ * @param {string} text - The raw MaterialX data as a string.
223
+ * @return {Object<string,NodeMaterial>} A dictionary holding the parse node materials.
224
+ */
192
225
  parse( text ) {
193
226
 
194
227
  return new MaterialX( this.manager, this.path ).parse( text );
@@ -7,14 +7,38 @@ import {
7
7
  import * as fflate from '../libs/fflate.module.js';
8
8
  import { Volume } from '../misc/Volume.js';
9
9
 
10
+ /**
11
+ * A loader for the NRRD format.
12
+ *
13
+ * ```js
14
+ * const loader = new NRRDLoader();
15
+ * const volume = await loader.loadAsync( 'models/nrrd/I.nrrd' );
16
+ * ```
17
+ *
18
+ * @augments Loader
19
+ */
10
20
  class NRRDLoader extends Loader {
11
21
 
22
+ /**
23
+ * Constructs a new NRRD loader.
24
+ *
25
+ * @param {LoadingManager} [manager] - The loading manager.
26
+ */
12
27
  constructor( manager ) {
13
28
 
14
29
  super( manager );
15
30
 
16
31
  }
17
32
 
33
+ /**
34
+ * Starts loading from the given URL and passes the loaded NRRD asset
35
+ * to the `onLoad()` callback.
36
+ *
37
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
38
+ * @param {function(Volume)} onLoad - Executed when the loading process has been finished.
39
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
40
+ * @param {onErrorCallback} onError - Executed when errors occur.
41
+ */
18
42
  load( url, onLoad, onProgress, onError ) {
19
43
 
20
44
  const scope = this;
@@ -51,15 +75,22 @@ class NRRDLoader extends Loader {
51
75
  }
52
76
 
53
77
  /**
78
+ * Toggles the segmentation mode.
54
79
  *
55
- * @param {boolean} segmentation is a option for user to choose
56
- */
80
+ * @param {boolean} segmentation - Whether to use segmentation mode or not.
81
+ */
57
82
  setSegmentation( segmentation ) {
58
83
 
59
- this.segmentation = segmentation;
84
+ this.segmentation = segmentation;
60
85
 
61
86
  }
62
87
 
88
+ /**
89
+ * Parses the given NRRD data and returns the resulting volume data.
90
+ *
91
+ * @param {ArrayBuffer} data - The raw NRRD data as an array buffer.
92
+ * @return {Volume} The parsed volume.
93
+ */
63
94
  parse( data ) {
64
95
 
65
96
  // this parser is largely inspired from the XTK NRRD parser : https://github.com/xtk/X
@@ -307,7 +338,7 @@ class NRRDLoader extends Loader {
307
338
 
308
339
  // we found two line breaks in a row
309
340
  // now we know what the header is
310
- _header = this.parseChars( _bytes, 0, i - 2 );
341
+ _header = this._parseChars( _bytes, 0, i - 2 );
311
342
  // this is were the data starts
312
343
  _data_start = i + 1;
313
344
  break;
@@ -485,7 +516,7 @@ class NRRDLoader extends Loader {
485
516
 
486
517
  }
487
518
 
488
- parseChars( array, start, end ) {
519
+ _parseChars( array, start, end ) {
489
520
 
490
521
  // without borders, use the whole array
491
522
  if ( start === undefined ) {
@@ -432,18 +432,53 @@ function ParserState() {
432
432
 
433
433
  }
434
434
 
435
- //
436
435
 
436
+ /**
437
+ * A loader for the OBJ format.
438
+ *
439
+ * The [OBJ format]{@link https://en.wikipedia.org/wiki/Wavefront_.obj_file} is a simple data-format that
440
+ * represents 3D geometry in a human readable format as the position of each vertex, the UV position of
441
+ * each texture coordinate vertex, vertex normals, and the faces that make each polygon defined as a list
442
+ * of vertices, and texture vertices.
443
+ *
444
+ * ```js
445
+ * const loader = new OBJLoader();
446
+ * const object = await loader.loadAsync( 'models/monster.obj' );
447
+ * scene.add( object );
448
+ * ```
449
+ *
450
+ * @augments Loader
451
+ */
437
452
  class OBJLoader extends Loader {
438
453
 
454
+ /**
455
+ * Constructs a new OBJ loader.
456
+ *
457
+ * @param {LoadingManager} [manager] - The loading manager.
458
+ */
439
459
  constructor( manager ) {
440
460
 
441
461
  super( manager );
442
462
 
463
+ /**
464
+ * A reference to a material creator.
465
+ *
466
+ * @type {?MaterialCreator}
467
+ * @default null
468
+ */
443
469
  this.materials = null;
444
470
 
445
471
  }
446
472
 
473
+ /**
474
+ * Starts loading from the given URL and passes the loaded OBJ asset
475
+ * to the `onLoad()` callback.
476
+ *
477
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
478
+ * @param {function(Group)} onLoad - Executed when the loading process has been finished.
479
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
480
+ * @param {onErrorCallback} onError - Executed when errors occur.
481
+ */
447
482
  load( url, onLoad, onProgress, onError ) {
448
483
 
449
484
  const scope = this;
@@ -478,6 +513,12 @@ class OBJLoader extends Loader {
478
513
 
479
514
  }
480
515
 
516
+ /**
517
+ * Sets the material creator for this OBJ. This object is loaded via {@link MTLLoader}.
518
+ *
519
+ * @param {MaterialCreator} materials - An object that creates the materials for this OBJ.
520
+ * @return {OBJLoader} A reference to this loader.
521
+ */
481
522
  setMaterials( materials ) {
482
523
 
483
524
  this.materials = materials;
@@ -486,6 +527,12 @@ class OBJLoader extends Loader {
486
527
 
487
528
  }
488
529
 
530
+ /**
531
+ * Parses the given OBJ data and returns the resulting group.
532
+ *
533
+ * @param {string} text - The raw OBJ data as a string.
534
+ * @return {Group} The parsed OBJ.
535
+ */
489
536
  parse( text ) {
490
537
 
491
538
  const state = new ParserState();
@@ -10,16 +10,57 @@ import {
10
10
  SRGBColorSpace
11
11
  } from 'three';
12
12
 
13
+ /**
14
+ * A loader for the Point Cloud Data (PCD) format.
15
+ *
16
+ * PCDLoader supports ASCII and (compressed) binary files as well as the following PCD fields:
17
+ * - x y z
18
+ * - rgb
19
+ * - normal_x normal_y normal_z
20
+ * - intensity
21
+ * - label
22
+ *
23
+ * ```js
24
+ * const loader = new PCDLoader();
25
+ *
26
+ * const points = await loader.loadAsync( './models/pcd/binary/Zaghetto.pcd' );
27
+ * points.geometry.center(); // optional
28
+ * points.geometry.rotateX( Math.PI ); // optional
29
+ * scene.add( points );
30
+ * ```
31
+ *
32
+ * @augments Loader
33
+ */
13
34
  class PCDLoader extends Loader {
14
35
 
36
+ /**
37
+ * Constructs a new PCD loader.
38
+ *
39
+ * @param {LoadingManager} [manager] - The loading manager.
40
+ */
15
41
  constructor( manager ) {
16
42
 
17
43
  super( manager );
18
44
 
45
+ /**
46
+ * Whether to use little Endian or not.
47
+ *
48
+ * @type {boolean}
49
+ * @default true
50
+ */
19
51
  this.littleEndian = true;
20
52
 
21
53
  }
22
54
 
55
+ /**
56
+ * Starts loading from the given URL and passes the loaded PCD asset
57
+ * to the `onLoad()` callback.
58
+ *
59
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
60
+ * @param {function(Points)} onLoad - Executed when the loading process has been finished.
61
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
62
+ * @param {onErrorCallback} onError - Executed when errors occur.
63
+ */
23
64
  load( url, onLoad, onProgress, onError ) {
24
65
 
25
66
  const scope = this;
@@ -55,6 +96,12 @@ class PCDLoader extends Loader {
55
96
 
56
97
  }
57
98
 
99
+ /**
100
+ * Parses the given PCD data and returns a point cloud.
101
+ *
102
+ * @param {ArrayBuffer} data - The raw PCD data as an array buffer.
103
+ * @return {Points} The parsed point cloud.
104
+ */
58
105
  parse( data ) {
59
106
 
60
107
  // from https://gitlab.com/taketwo/three-pcd-loader/blob/master/decompress-lzf.js
@@ -7,14 +7,45 @@ import {
7
7
  SRGBColorSpace
8
8
  } from 'three';
9
9
 
10
+ /**
11
+ * A loader for the PDB format.
12
+ *
13
+ * The [Protein Data Bank]{@link https://en.wikipedia.org/wiki/Protein_Data_Bank_(file_format)}
14
+ * file format is a textual file describing the three-dimensional structures of molecules.
15
+ *
16
+ * ```js
17
+ * const loader = new PDBLoader();
18
+ * const pdb = await loader.loadAsync( 'models/pdb/ethanol.pdb' );
19
+ *
20
+ * const geometryAtoms = pdb.geometryAtoms;
21
+ * const geometryBonds = pdb.geometryBonds;
22
+ * const json = pdb.json;
23
+ * ```
24
+ *
25
+ * @augments Loader
26
+ */
10
27
  class PDBLoader extends Loader {
11
28
 
29
+ /**
30
+ * Constructs a new PDB loader.
31
+ *
32
+ * @param {LoadingManager} [manager] - The loading manager.
33
+ */
12
34
  constructor( manager ) {
13
35
 
14
36
  super( manager );
15
37
 
16
38
  }
17
39
 
40
+ /**
41
+ * Starts loading from the given URL and passes the loaded PDB asset
42
+ * 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(Object)} 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
+ */
18
49
  load( url, onLoad, onProgress, onError ) {
19
50
 
20
51
  const scope = this;
@@ -49,10 +80,17 @@ class PDBLoader extends Loader {
49
80
 
50
81
  }
51
82
 
52
- // Based on CanvasMol PDB parser
53
-
83
+ /**
84
+ * Parses the given PDB data and returns an object holding the atoms and
85
+ * bond geometries as well as the raw atom data as JSON.
86
+ *
87
+ * @param {string} text - The raw PDB data as a string.
88
+ * @return {Object} The result object.
89
+ */
54
90
  parse( text ) {
55
91
 
92
+ // Based on CanvasMol PDB parser
93
+
56
94
  function trim( text ) {
57
95
 
58
96
  return text.replace( /^\s\s*/, '' ).replace( /\s\s*$/, '' );
@@ -7,55 +7,50 @@ import {
7
7
  SRGBColorSpace
8
8
  } from 'three';
9
9
 
10
+ const _color = new Color();
11
+
10
12
  /**
11
- * Description: A THREE loader for PLY ASCII files (known as the Polygon
13
+ * A loader for PLY the PLY format (known as the Polygon
12
14
  * File Format or the Stanford Triangle Format).
13
15
  *
14
- * Limitations: ASCII decoding assumes file is UTF-8.
15
- *
16
- * Usage:
17
- * const loader = new PLYLoader();
18
- * loader.load('./models/ply/ascii/dolphins.ply', function (geometry) {
19
- *
20
- * scene.add( new THREE.Mesh( geometry ) );
21
- *
22
- * } );
23
- *
24
- * If the PLY file uses non standard property names, they can be mapped while
25
- * loading. For example, the following maps the properties
26
- * “diffuse_(red|green|blue)” in the file to standard color names.
16
+ * Limitations:
17
+ * - ASCII decoding assumes file is UTF-8.
27
18
  *
28
- * loader.setPropertyNameMapping( {
29
- * diffuse_red: 'red',
30
- * diffuse_green: 'green',
31
- * diffuse_blue: 'blue'
32
- * } );
33
- *
34
- * Custom properties outside of the defaults for position, uv, normal
35
- * and color attributes can be added using the setCustomPropertyNameMapping method.
36
- * For example, the following maps the element properties “custom_property_a”
37
- * and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
38
- * Attribute item sizes are set from the number of element properties in the property array.
39
- *
40
- * loader.setCustomPropertyNameMapping( {
41
- * customAttribute: ['custom_property_a', 'custom_property_b'],
42
- * } );
19
+ * ```js
20
+ * const loader = new PLYLoader();
21
+ * const geometry = await loader.loadAsync( './models/ply/ascii/dolphins.ply' );
22
+ * scene.add( new THREE.Mesh( geometry ) );
23
+ * ```
43
24
  *
25
+ * @augments Loader
44
26
  */
45
-
46
- const _color = new Color();
47
-
48
27
  class PLYLoader extends Loader {
49
28
 
29
+ /**
30
+ * Constructs a new PLY loader.
31
+ *
32
+ * @param {LoadingManager} [manager] - The loading manager.
33
+ */
50
34
  constructor( manager ) {
51
35
 
52
36
  super( manager );
53
37
 
38
+ // internals
39
+
54
40
  this.propertyNameMapping = {};
55
41
  this.customPropertyMapping = {};
56
42
 
57
43
  }
58
44
 
45
+ /**
46
+ * Starts loading from the given URL and passes the loaded PLY asset
47
+ * to the `onLoad()` callback.
48
+ *
49
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
50
+ * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
51
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
52
+ * @param {onErrorCallback} onError - Executed when errors occur.
53
+ */
59
54
  load( url, onLoad, onProgress, onError ) {
60
55
 
61
56
  const scope = this;
@@ -91,18 +86,53 @@ class PLYLoader extends Loader {
91
86
 
92
87
  }
93
88
 
89
+ /**
90
+ * Sets a property name mapping that maps default property names
91
+ * to custom ones. For example, the following maps the properties
92
+ * “diffuse_(red|green|blue)” in the file to standard color names.
93
+ *
94
+ * ```js
95
+ * loader.setPropertyNameMapping( {
96
+ * diffuse_red: 'red',
97
+ * diffuse_green: 'green',
98
+ * diffuse_blue: 'blue'
99
+ * } );
100
+ * ```
101
+ *
102
+ * @param {Object} mapping - The mapping dictionary.
103
+ */
94
104
  setPropertyNameMapping( mapping ) {
95
105
 
96
106
  this.propertyNameMapping = mapping;
97
107
 
98
108
  }
99
109
 
110
+ /**
111
+ * Custom properties outside of the defaults for position, uv, normal
112
+ * and color attributes can be added using the setCustomPropertyNameMapping method.
113
+ * For example, the following maps the element properties “custom_property_a”
114
+ * and “custom_property_b” to an attribute “customAttribute” with an item size of 2.
115
+ * Attribute item sizes are set from the number of element properties in the property array.
116
+ *
117
+ * ```js
118
+ * loader.setCustomPropertyNameMapping( {
119
+ * customAttribute: ['custom_property_a', 'custom_property_b'],
120
+ * } );
121
+ * ```
122
+ * @param {Object} mapping - The mapping dictionary.
123
+ */
100
124
  setCustomPropertyNameMapping( mapping ) {
101
125
 
102
126
  this.customPropertyMapping = mapping;
103
127
 
104
128
  }
105
129
 
130
+ /**
131
+ * Parses the given PLY data and returns the resulting geometry.
132
+ *
133
+ * @param {ArrayBuffer} data - The raw PLY data as an array buffer.
134
+ * @return {BufferGeometry} The parsed geometry.
135
+ */
106
136
  parse( data ) {
107
137
 
108
138
  function parseHeader( data, headerLength = 0 ) {
@@ -6,20 +6,38 @@ import {
6
6
  RGB_PVRTC_4BPPV1_Format
7
7
  } from 'three';
8
8
 
9
- /*
10
- * PVR v2 (legacy) parser
11
- * TODO : Add Support for PVR v3 format
12
- * TODO : implement loadMipmaps option
9
+ /**
10
+ * A loader for the PVRTC texture compression format.
11
+ *
12
+ * ```js
13
+ * const loader = new PVRLoader();
14
+ *
15
+ * const map = loader.load( 'textures/compressed/disturb_4bpp_rgb.pvr' );
16
+ * map.colorSpace = THREE.SRGBColorSpace; // only for color textures
17
+ * ```
18
+ *
19
+ * @augments CompressedTextureLoader
13
20
  */
14
-
15
21
  class PVRLoader extends CompressedTextureLoader {
16
22
 
23
+ /**
24
+ * Constructs a new PVR loader.
25
+ *
26
+ * @param {LoadingManager} [manager] - The loading manager.
27
+ */
17
28
  constructor( manager ) {
18
29
 
19
30
  super( manager );
20
31
 
21
32
  }
22
33
 
34
+ /**
35
+ * Parses the given PVRTC texture data.
36
+ *
37
+ * @param {ArrayBuffer} buffer - The raw texture data.
38
+ * @param {boolean} loadMipmaps - Whether to load mipmaps or not. This option is not yet supported by the loader.
39
+ * @return {CompressedTextureLoader~TexData} An object representing the parsed texture data.
40
+ */
23
41
  parse( buffer, loadMipmaps ) {
24
42
 
25
43
  const headerLengthInt = 13;
@@ -7,23 +7,50 @@ import {
7
7
  LinearSRGBColorSpace
8
8
  } from 'three';
9
9
 
10
- // https://github.com/mrdoob/three.js/issues/5552
11
- // http://en.wikipedia.org/wiki/RGBE_image_format
12
-
10
+ /**
11
+ * A loader for the RGBE HDR texture format.
12
+ *
13
+ * ```js
14
+ * const loader = new RGBELoader();
15
+ * const envMap = await loader.loadAsync( 'textures/equirectangular/blouberg_sunrise_2_1k.hdr' );
16
+ * envMap.mapping = THREE.EquirectangularReflectionMapping;
17
+ *
18
+ * scene.environment = envMap;
19
+ * ```
20
+ *
21
+ * @augments DataTextureLoader
22
+ */
13
23
  class RGBELoader extends DataTextureLoader {
14
24
 
25
+ /**
26
+ * Constructs a new RGBE loader.
27
+ *
28
+ * @param {LoadingManager} [manager] - The loading manager.
29
+ */
15
30
  constructor( manager ) {
16
31
 
17
32
  super( manager );
18
33
 
34
+ /**
35
+ * The texture type.
36
+ *
37
+ * @type {(HalfFloatType|FloatType)}
38
+ * @default HalfFloatType
39
+ */
19
40
  this.type = HalfFloatType;
20
41
 
21
42
  }
22
43
 
23
- // adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html
24
-
44
+ /**
45
+ * Parses the given RGBE texture data.
46
+ *
47
+ * @param {ArrayBuffer} buffer - The raw texture data.
48
+ * @return {DataTextureLoader~TexData} An object representing the parsed texture data.
49
+ */
25
50
  parse( buffer ) {
26
51
 
52
+ // adapted from http://www.graphics.cornell.edu/~bjw/rgbe.html
53
+
27
54
  const
28
55
  /* default error routine. change this to change error handling */
29
56
  rgbe_read_error = 1,
@@ -411,6 +438,12 @@ class RGBELoader extends DataTextureLoader {
411
438
 
412
439
  }
413
440
 
441
+ /**
442
+ * Sets the texture type.
443
+ *
444
+ * @param {(HalfFloatType|FloatType)} value - The texture type to set.
445
+ * @return {RGBELoader} A reference to this loader.
446
+ */
414
447
  setDataType( value ) {
415
448
 
416
449
  this.type = value;