@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
@@ -13,8 +13,35 @@ import {
13
13
  SRGBColorSpace
14
14
  } from 'three';
15
15
 
16
+ /**
17
+ * A loader for the VOX format.
18
+ *
19
+ * ```js
20
+ * const loader = new VOXLoader();
21
+ * const chunks = await loader.loadAsync( 'models/vox/monu10.vox' );
22
+ *
23
+ * for ( let i = 0; i < chunks.length; i ++ ) {
24
+ *
25
+ * const chunk = chunks[ i ];
26
+ * const mesh = new VOXMesh( chunk );
27
+ * mesh.scale.setScalar( 0.0015 );
28
+ * scene.add( mesh );
29
+ *
30
+ * }
31
+ * ```
32
+ * @augments Loader
33
+ */
16
34
  class VOXLoader extends Loader {
17
35
 
36
+ /**
37
+ * Starts loading from the given URL and passes the loaded VOX asset
38
+ * to the `onLoad()` callback.
39
+ *
40
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
41
+ * @param {function(Array<Object>)} onLoad - Executed when the loading process has been finished.
42
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
43
+ * @param {onErrorCallback} onError - Executed when errors occur.
44
+ */
18
45
  load( url, onLoad, onProgress, onError ) {
19
46
 
20
47
  const scope = this;
@@ -49,6 +76,12 @@ class VOXLoader extends Loader {
49
76
 
50
77
  }
51
78
 
79
+ /**
80
+ * Parses the given VOX data and returns the resulting chunks.
81
+ *
82
+ * @param {ArrayBuffer} buffer - The raw VOX data as an array buffer.
83
+ * @return {Array<Object>} The parsed chunks.
84
+ */
52
85
  parse( buffer ) {
53
86
 
54
87
  const data = new DataView( buffer );
@@ -173,8 +206,20 @@ class VOXLoader extends Loader {
173
206
 
174
207
  }
175
208
 
209
+ /**
210
+ * A VOX mesh.
211
+ *
212
+ * Instances of this class are created from the loaded chunks of {@link VOXLoader}.
213
+ *
214
+ * @augments Mesh
215
+ */
176
216
  class VOXMesh extends Mesh {
177
217
 
218
+ /**
219
+ * Constructs a new VOX mesh.
220
+ *
221
+ * @param {Object} chunk - A VOX chunk loaded via {@link VOXLoader}.
222
+ */
178
223
  constructor( chunk ) {
179
224
 
180
225
  const data = chunk.data;
@@ -279,8 +324,20 @@ class VOXMesh extends Mesh {
279
324
 
280
325
  }
281
326
 
327
+ /**
328
+ * A VOX 3D texture.
329
+ *
330
+ * Instances of this class are created from the loaded chunks of {@link VOXLoader}.
331
+ *
332
+ * @augments Data3DTexture
333
+ */
282
334
  class VOXData3DTexture extends Data3DTexture {
283
335
 
336
+ /**
337
+ * Constructs a new VOX 3D texture.
338
+ *
339
+ * @param {Object} chunk - A VOX chunk loaded via {@link VOXLoader}.
340
+ */
284
341
  constructor( chunk ) {
285
342
 
286
343
  const data = chunk.data;
@@ -36,15 +36,39 @@ import {
36
36
  } from 'three';
37
37
  import chevrotain from '../libs/chevrotain.module.min.js';
38
38
 
39
-
39
+ /**
40
+ * A loader for the VRML format.
41
+ *
42
+ * ```js
43
+ * const loader = new VRMLLoader();
44
+ * const object = await loader.loadAsync( 'models/vrml/house.wrl' );
45
+ * scene.add( object );
46
+ * ```
47
+ *
48
+ * @augments Loader
49
+ */
40
50
  class VRMLLoader extends Loader {
41
51
 
52
+ /**
53
+ * Constructs a new VRML loader.
54
+ *
55
+ * @param {LoadingManager} [manager] - The loading manager.
56
+ */
42
57
  constructor( manager ) {
43
58
 
44
59
  super( manager );
45
60
 
46
61
  }
47
62
 
63
+ /**
64
+ * Starts loading from the given URL and passes the loaded VRML asset
65
+ * to the `onLoad()` callback.
66
+ *
67
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
68
+ * @param {function(Scene)} onLoad - Executed when the loading process has been finished.
69
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
70
+ * @param {onErrorCallback} onError - Executed when errors occur.
71
+ */
48
72
  load( url, onLoad, onProgress, onError ) {
49
73
 
50
74
  const scope = this;
@@ -81,6 +105,13 @@ class VRMLLoader extends Loader {
81
105
 
82
106
  }
83
107
 
108
+ /**
109
+ * Parses the given VRML data and returns the resulting scene.
110
+ *
111
+ * @param {string} data - The raw VRML data as a string.
112
+ * @param {string} path - The URL base path.
113
+ * @return {Scene} The parsed scene.
114
+ */
84
115
  parse( data, path ) {
85
116
 
86
117
  const nodeMap = {};
@@ -9,14 +9,46 @@ import {
9
9
  } from 'three';
10
10
  import * as fflate from '../libs/fflate.module.js';
11
11
 
12
+ /**
13
+ * A loader for the VTK format.
14
+ *
15
+ * This loader only supports the `POLYDATA` dataset format so far. Other formats
16
+ * (structured points, structured grid, rectilinear grid, unstructured grid, appended)
17
+ * are not supported.
18
+ *
19
+ * ```js
20
+ * const loader = new VTKLoader();
21
+ * const geometry = await loader.loadAsync( 'models/vtk/liver.vtk' );
22
+ * geometry.computeVertexNormals();
23
+ *
24
+ * const mesh = new THREE.Mesh( geometry, new THREE.MeshLambertMaterial() );
25
+ * scene.add( mesh );
26
+ * ```
27
+ *
28
+ * @augments Loader
29
+ */
12
30
  class VTKLoader extends Loader {
13
31
 
32
+ /**
33
+ * Constructs a new VTK loader.
34
+ *
35
+ * @param {LoadingManager} [manager] - The loading manager.
36
+ */
14
37
  constructor( manager ) {
15
38
 
16
39
  super( manager );
17
40
 
18
41
  }
19
42
 
43
+ /**
44
+ * Starts loading from the given URL and passes the loaded VRML asset
45
+ * to the `onLoad()` callback.
46
+ *
47
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
48
+ * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
49
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
50
+ * @param {onErrorCallback} onError - Executed when errors occur.
51
+ */
20
52
  load( url, onLoad, onProgress, onError ) {
21
53
 
22
54
  const scope = this;
@@ -52,6 +84,12 @@ class VTKLoader extends Loader {
52
84
 
53
85
  }
54
86
 
87
+ /**
88
+ * Parses the given VTK data and returns the resulting geometry.
89
+ *
90
+ * @param {ArrayBuffer} data - The raw VTK data as an array buffer
91
+ * @return {BufferGeometry} The parsed geometry.
92
+ */
55
93
  parse( data ) {
56
94
 
57
95
  function parseASCII( data ) {
@@ -7,8 +7,37 @@ import {
7
7
  SRGBColorSpace
8
8
  } from 'three';
9
9
 
10
+ /**
11
+ * A loader for the XYZ format.
12
+ *
13
+ * XYZ is a very simple format for storing point clouds. The layouts
14
+ * `XYZ` (points) and `XYZRGB` (points + colors) are supported.
15
+ *
16
+ * ```js
17
+ * const loader = new XYZLoader();
18
+ * const geometry = await loader.loadAsync( 'models/xyz/helix_201.xyz' );
19
+ * geometry.center();
20
+ *
21
+ * const vertexColors = ( geometry.hasAttribute( 'color' ) === true );
22
+ * const material = new THREE.PointsMaterial( { size: 0.1, vertexColors: vertexColors } );
23
+ *
24
+ * const points = new THREE.Points( geometry, material );
25
+ * scene.add( points );
26
+ * ```
27
+ *
28
+ * @augments Loader
29
+ */
10
30
  class XYZLoader extends Loader {
11
31
 
32
+ /**
33
+ * Starts loading from the given URL and passes the loaded XYZ asset
34
+ * to the `onLoad()` callback.
35
+ *
36
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
37
+ * @param {function(BufferGeometry)} onLoad - Executed when the loading process has been finished.
38
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
39
+ * @param {onErrorCallback} onError - Executed when errors occur.
40
+ */
12
41
  load( url, onLoad, onProgress, onError ) {
13
42
 
14
43
  const scope = this;
@@ -43,6 +72,12 @@ class XYZLoader extends Loader {
43
72
 
44
73
  }
45
74
 
75
+ /**
76
+ * Parses the given XYZ data and returns the resulting geometry.
77
+ *
78
+ * @param {string} text - The raw XYZ data as a string.
79
+ * @return {BufferGeometry} The geometry representing the point cloud.
80
+ */
46
81
  parse( text ) {
47
82
 
48
83
  const lines = text.split( '\n' );
@@ -5,6 +5,14 @@ import {
5
5
  UniformsUtils,
6
6
  } from 'three';
7
7
 
8
+ /**
9
+ * A special line material for meshes loaded via {@link LDrawLoader}.
10
+ *
11
+ * This module can only be used with {@link WebGLRenderer}. When using {@link WebGPURenderer},
12
+ * import the class from `LDrawConditionalLineNodeMaterial.js`.
13
+ *
14
+ * @augments ShaderMaterial
15
+ */
8
16
  class LDrawConditionalLineMaterial extends ShaderMaterial {
9
17
 
10
18
  static get type() {
@@ -13,6 +21,15 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
13
21
 
14
22
  }
15
23
 
24
+ /**
25
+ * Constructs a new conditional line material.
26
+ *
27
+ * @param {Object} [parameters] - An object with one or more properties
28
+ * defining the material's appearance. Any property of the material
29
+ * (including any property from inherited materials) can be passed
30
+ * in here. Color values can be passed any type of value accepted
31
+ * by {@link Color#set}.
32
+ */
16
33
  constructor( parameters ) {
17
34
 
18
35
  super( {
@@ -109,6 +126,13 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
109
126
 
110
127
  Object.defineProperties( this, {
111
128
 
129
+ /**
130
+ * The material's opacity.
131
+ *
132
+ * @name LDrawConditionalLineMaterial#opacity
133
+ * @type {number}
134
+ * @default 1
135
+ */
112
136
  opacity: {
113
137
  get: function () {
114
138
 
@@ -123,6 +147,13 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
123
147
  }
124
148
  },
125
149
 
150
+ /**
151
+ * The material's color.
152
+ *
153
+ * @name LDrawConditionalLineMaterial#color
154
+ * @type {Color}
155
+ * @default (1,1,1)
156
+ */
126
157
  color: {
127
158
  get: function () {
128
159
 
@@ -134,6 +165,14 @@ class LDrawConditionalLineMaterial extends ShaderMaterial {
134
165
  } );
135
166
 
136
167
  this.setValues( parameters );
168
+
169
+ /**
170
+ * This flag can be used for type testing.
171
+ *
172
+ * @type {boolean}
173
+ * @readonly
174
+ * @default true
175
+ */
137
176
  this.isLDrawConditionalLineMaterial = true;
138
177
 
139
178
  }
@@ -1,6 +1,14 @@
1
1
  import { Color } from 'three';
2
2
  import { attribute, cameraProjectionMatrix, dot, float, Fn, modelViewMatrix, modelViewProjection, NodeMaterial, normalize, positionGeometry, sign, uniform, varyingProperty, vec2, vec4 } from 'three/tsl';
3
3
 
4
+ /**
5
+ * A special line material for meshes loaded via {@link LDrawLoader}.
6
+ *
7
+ * This module can only be used with {@link WebGPURenderer}. When using {@link WebGLRenderer},
8
+ * import the class from `LDrawConditionalLineMaterial.js`.
9
+ *
10
+ * @augments NodeMaterial
11
+ */
4
12
  class LDrawConditionalLineMaterial extends NodeMaterial {
5
13
 
6
14
  static get type() {
@@ -9,6 +17,15 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
9
17
 
10
18
  }
11
19
 
20
+ /**
21
+ * Constructs a new conditional line material.
22
+ *
23
+ * @param {Object} [parameters] - An object with one or more properties
24
+ * defining the material's appearance. Any property of the material
25
+ * (including any property from inherited materials) can be passed
26
+ * in here. Color values can be passed any type of value accepted
27
+ * by {@link Color#set}.
28
+ */
12
29
  constructor( parameters ) {
13
30
 
14
31
  super();
@@ -74,6 +91,13 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
74
91
 
75
92
  Object.defineProperties( this, {
76
93
 
94
+ /**
95
+ * The material's opacity.
96
+ *
97
+ * @name LDrawConditionalLineMaterial#opacity
98
+ * @type {number}
99
+ * @default 1
100
+ */
77
101
  opacity: {
78
102
  get: function () {
79
103
 
@@ -88,6 +112,13 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
88
112
  }
89
113
  },
90
114
 
115
+ /**
116
+ * The material's color.
117
+ *
118
+ * @name LDrawConditionalLineMaterial#color
119
+ * @type {Color}
120
+ * @default (1,1,1)
121
+ */
91
122
  color: {
92
123
  get: function () {
93
124
 
@@ -105,6 +136,14 @@ class LDrawConditionalLineMaterial extends NodeMaterial {
105
136
  } );
106
137
 
107
138
  this.setValues( parameters );
139
+
140
+ /**
141
+ * This flag can be used for type testing.
142
+ *
143
+ * @type {boolean}
144
+ * @readonly
145
+ * @default true
146
+ */
108
147
  this.isLDrawConditionalLineMaterial = true;
109
148
 
110
149
  }
@@ -21,10 +21,20 @@ import { MeshPhysicalMaterial } from 'three';
21
21
  *
22
22
  * Further extension work might be to use the output of an SSR pass or an HBIL pass from a previous frame.
23
23
  * This would then create the possibility of SSR and IR depending on material properties such as `roughness`, `metalness` and `reflectivity`.
24
- **/
25
-
24
+ *
25
+ * @augments MeshPhysicalMaterial
26
+ */
26
27
  class MeshPostProcessingMaterial extends MeshPhysicalMaterial {
27
28
 
29
+ /**
30
+ * Constructs a new conditional line material.
31
+ *
32
+ * @param {Object} [parameters] - An object with one or more properties
33
+ * defining the material's appearance. Any property of the material
34
+ * (including any property from inherited materials) can be passed
35
+ * in here. Color values can be passed any type of value accepted
36
+ * by {@link Color#set}.
37
+ */
28
38
  constructor( parameters ) {
29
39
 
30
40
  const aoPassMap = parameters.aoPassMap;
@@ -37,11 +47,23 @@ class MeshPostProcessingMaterial extends MeshPhysicalMaterial {
37
47
  this.onBeforeCompile = this._onBeforeCompile;
38
48
  this.customProgramCacheKey = this._customProgramCacheKey;
39
49
  this._aoPassMap = aoPassMap;
50
+
51
+ /**
52
+ * The scale of the AO pass.
53
+ *
54
+ * @type {number}
55
+ * @default 1
56
+ */
40
57
  this.aoPassMapScale = aoPassMapScale;
41
58
  this._shader = null;
42
59
 
43
60
  }
44
61
 
62
+ /**
63
+ * A texture representing the AO pass.
64
+ *
65
+ * @type {Texture}
66
+ */
45
67
  get aoPassMap() {
46
68
 
47
69
  return this._aoPassMap;
@@ -2,74 +2,138 @@ import {
2
2
  Vector3
3
3
  } from 'three';
4
4
 
5
+ /**
6
+ * A capsule is essentially a cylinder with hemispherical caps at both ends.
7
+ * It can be thought of as a swept sphere, where a sphere is moved along a line segment.
8
+ *
9
+ * Capsules are often used as bounding volumes (next to AABBs and bounding spheres).
10
+ */
5
11
  class Capsule {
6
12
 
13
+ /**
14
+ * Constructs a new capsule.
15
+ *
16
+ * @param {Vector3} [start] - The start vector.
17
+ * @param {Vector3} [end] - The end vector.
18
+ * @param {number} [radius=1] - The capsule's radius.
19
+ */
7
20
  constructor( start = new Vector3( 0, 0, 0 ), end = new Vector3( 0, 1, 0 ), radius = 1 ) {
8
21
 
22
+ /**
23
+ * The start vector.
24
+ *
25
+ * @type {Vector3}
26
+ */
9
27
  this.start = start;
28
+
29
+ /**
30
+ * The end vector.
31
+ *
32
+ * @type {Vector3}
33
+ */
10
34
  this.end = end;
35
+
36
+ /**
37
+ * The capsule's radius.
38
+ *
39
+ * @type {number}
40
+ * @default 1
41
+ */
11
42
  this.radius = radius;
12
43
 
13
44
  }
14
45
 
46
+ /**
47
+ * Returns a new capsule with copied values from this instance.
48
+ *
49
+ * @return {Capsule} A clone of this instance.
50
+ */
15
51
  clone() {
16
52
 
17
- return new Capsule( this.start.clone(), this.end.clone(), this.radius );
53
+ return new this.constructor().copy( this );
18
54
 
19
55
  }
20
56
 
57
+ /**
58
+ * Sets the capsule components to the given values.
59
+ * Please note that this method only copies the values from the given objects.
60
+ *
61
+ * @param {Vector3} start - The start vector.
62
+ * @param {Vector3} end - The end vector
63
+ * @param {number} radius - The capsule's radius.
64
+ * @return {Capsule} A reference to this capsule.
65
+ */
21
66
  set( start, end, radius ) {
22
67
 
23
68
  this.start.copy( start );
24
69
  this.end.copy( end );
25
70
  this.radius = radius;
26
71
 
72
+ return this;
73
+
27
74
  }
28
75
 
76
+ /**
77
+ * Copies the values of the given capsule to this instance.
78
+ *
79
+ * @param {Capsule} capsule - The capsule to copy.
80
+ * @return {Capsule} A reference to this capsule.
81
+ */
29
82
  copy( capsule ) {
30
83
 
31
84
  this.start.copy( capsule.start );
32
85
  this.end.copy( capsule.end );
33
86
  this.radius = capsule.radius;
34
87
 
88
+ return this;
89
+
35
90
  }
36
91
 
92
+ /**
93
+ * Returns the center point of this capsule.
94
+ *
95
+ * @param {Vector3} target - The target vector that is used to store the method's result.
96
+ * @return {Vector3} The center point.
97
+ */
37
98
  getCenter( target ) {
38
99
 
39
100
  return target.copy( this.end ).add( this.start ).multiplyScalar( 0.5 );
40
101
 
41
102
  }
42
103
 
104
+ /**
105
+ * Adds the given offset to this capsule, effectively moving it in 3D space.
106
+ *
107
+ * @param {Vector3} v - The offset that should be used to translate the capsule.
108
+ * @return {Capsule} A reference to this capsule.
109
+ */
43
110
  translate( v ) {
44
111
 
45
112
  this.start.add( v );
46
113
  this.end.add( v );
47
114
 
48
- }
49
-
50
- checkAABBAxis( p1x, p1y, p2x, p2y, minx, maxx, miny, maxy, radius ) {
51
-
52
- return (
53
- ( minx - p1x < radius || minx - p2x < radius ) &&
54
- ( p1x - maxx < radius || p2x - maxx < radius ) &&
55
- ( miny - p1y < radius || miny - p2y < radius ) &&
56
- ( p1y - maxy < radius || p2y - maxy < radius )
57
- );
115
+ return this;
58
116
 
59
117
  }
60
118
 
119
+ /**
120
+ * Returns `true` if the given bounding box intersects with this capsule.
121
+ *
122
+ * @param {Box3} box - The bounding box to test.
123
+ * @return {boolean} Whether the given bounding box intersects with this capsule.
124
+ */
61
125
  intersectsBox( box ) {
62
126
 
63
127
  return (
64
- this.checkAABBAxis(
128
+ checkAABBAxis(
65
129
  this.start.x, this.start.y, this.end.x, this.end.y,
66
130
  box.min.x, box.max.x, box.min.y, box.max.y,
67
131
  this.radius ) &&
68
- this.checkAABBAxis(
132
+ checkAABBAxis(
69
133
  this.start.x, this.start.z, this.end.x, this.end.z,
70
134
  box.min.x, box.max.x, box.min.z, box.max.z,
71
135
  this.radius ) &&
72
- this.checkAABBAxis(
136
+ checkAABBAxis(
73
137
  this.start.y, this.start.z, this.end.y, this.end.z,
74
138
  box.min.y, box.max.y, box.min.z, box.max.z,
75
139
  this.radius )
@@ -79,4 +143,15 @@ class Capsule {
79
143
 
80
144
  }
81
145
 
146
+ function checkAABBAxis( p1x, p1y, p2x, p2y, minx, maxx, miny, maxy, radius ) {
147
+
148
+ return (
149
+ ( minx - p1x < radius || minx - p2x < radius ) &&
150
+ ( p1x - maxx < radius || p2x - maxx < radius ) &&
151
+ ( miny - p1y < radius || miny - p2y < radius ) &&
152
+ ( p1y - maxy < radius || p2y - maxy < radius )
153
+ );
154
+
155
+ }
156
+
82
157
  export { Capsule };
@@ -2,8 +2,22 @@ import { MathUtils } from 'three';
2
2
 
3
3
  const _hsl = {};
4
4
 
5
+ /**
6
+ * A utility class with helper functions for color conversion.
7
+ *
8
+ * @hideconstructor
9
+ */
5
10
  class ColorConverter {
6
11
 
12
+ /**
13
+ * Sets the given HSV color definition to the given color object.
14
+ *
15
+ * @param {Color} color - The color to set.
16
+ * @param {number} h - The hue.
17
+ * @param {number} s - The saturation.
18
+ * @param {number} v - The value.
19
+ * @return {Color} The update color.
20
+ */
7
21
  static setHSV( color, h, s, v ) {
8
22
 
9
23
  // https://gist.github.com/xpansive/1337890#file-index-js
@@ -16,6 +30,13 @@ class ColorConverter {
16
30
 
17
31
  }
18
32
 
33
+ /**
34
+ * Returns a HSV color representation of the given color object.
35
+ *
36
+ * @param {Color} color - The color to get HSV values from.
37
+ * @param {{h:number,s:number,v:number}} target - The target object that is used to store the method's result.
38
+ * @return {{h:number,s:number,v:number}} The HSV color.
39
+ */
19
40
  static getHSV( color, target ) {
20
41
 
21
42
  color.getHSL( _hsl );