@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
@@ -5,6 +5,8 @@ import {
5
5
  EquirectangularReflectionMapping,
6
6
  EquirectangularRefractionMapping,
7
7
  CubeUVReflectionMapping,
8
+ TriPlanarMapping,
9
+ CylindricalMapping,
8
10
 
9
11
  RepeatWrapping,
10
12
  ClampToEdgeWrapping,
@@ -63,14 +65,43 @@ import { getTypedArray } from '../utils.js';
63
65
  import { Box3 } from '../math/Box3.js';
64
66
  import { Sphere } from '../math/Sphere.js';
65
67
 
68
+ /**
69
+ * A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}.
70
+ * The files are internally loaded via {@link FileLoader}.
71
+ *
72
+ * ```js
73
+ * const loader = new THREE.ObjectLoader();
74
+ * const obj = await loader.loadAsync( 'models/json/example.json' );
75
+ * scene.add( obj );
76
+ *
77
+ * // Alternatively, to parse a previously loaded JSON structure
78
+ * const object = await loader.parseAsync( a_json_object );
79
+ * scene.add( object );
80
+ * ```
81
+ *
82
+ * @augments Loader
83
+ */
66
84
  class ObjectLoader extends Loader {
67
85
 
86
+ /**
87
+ * Constructs a new object loader.
88
+ *
89
+ * @param {LoadingManager} [manager] - The loading manager.
90
+ */
68
91
  constructor( manager ) {
69
92
 
70
93
  super( manager );
71
94
 
72
95
  }
73
96
 
97
+ /**
98
+ * Starts loading from the given URL and pass the loaded 3D object to the `onLoad()` callback.
99
+ *
100
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
101
+ * @param {function(Object3D)} onLoad - Executed when the loading process has been finished.
102
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
103
+ * @param {onErrorCallback} onError - Executed when errors occur.
104
+ */
74
105
  load( url, onLoad, onProgress, onError ) {
75
106
 
76
107
  const scope = this;
@@ -117,6 +148,14 @@ class ObjectLoader extends Loader {
117
148
 
118
149
  }
119
150
 
151
+ /**
152
+ * Async version of {@link ObjectLoader#load}.
153
+ *
154
+ * @async
155
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
156
+ * @param {onProgressCallback} onProgress - Executed while the loading is in progress.
157
+ * @return {Promise<Object3D>} A Promise that resolves with the loaded 3D object.
158
+ */
120
159
  async loadAsync( url, onProgress ) {
121
160
 
122
161
  const scope = this;
@@ -145,6 +184,14 @@ class ObjectLoader extends Loader {
145
184
 
146
185
  }
147
186
 
187
+ /**
188
+ * Parses the given JSON. This is used internally by {@link ObjectLoader#load}
189
+ * but can also be used directly to parse a previously loaded JSON structure.
190
+ *
191
+ * @param {Object} json - The serialized 3D object.
192
+ * @param {onLoad} onLoad - Executed when all resources (e.g. textures) have been fully loaded.
193
+ * @return {Object3D} The parsed 3D object.
194
+ */
148
195
  parse( json, onLoad ) {
149
196
 
150
197
  const animations = this.parseAnimations( json.animations );
@@ -191,6 +238,12 @@ class ObjectLoader extends Loader {
191
238
 
192
239
  }
193
240
 
241
+ /**
242
+ * Async version of {@link ObjectLoader#parse}.
243
+ *
244
+ * @param {Object} json - The serialized 3D object.
245
+ * @return {Promise<Object3D>} A Promise that resolves with the parsed 3D object.
246
+ */
194
247
  async parseAsync( json ) {
195
248
 
196
249
  const animations = this.parseAnimations( json.animations );
@@ -212,6 +265,8 @@ class ObjectLoader extends Loader {
212
265
 
213
266
  }
214
267
 
268
+ // internals
269
+
215
270
  parseShapes( json ) {
216
271
 
217
272
  const shapes = {};
@@ -1162,7 +1217,9 @@ const TEXTURE_MAPPING = {
1162
1217
  CubeRefractionMapping: CubeRefractionMapping,
1163
1218
  EquirectangularReflectionMapping: EquirectangularReflectionMapping,
1164
1219
  EquirectangularRefractionMapping: EquirectangularRefractionMapping,
1165
- CubeUVReflectionMapping: CubeUVReflectionMapping
1220
+ CubeUVReflectionMapping: CubeUVReflectionMapping,
1221
+ TriPlanarMapping: TriPlanarMapping,
1222
+ CylindricalMapping: CylindricalMapping
1166
1223
  };
1167
1224
 
1168
1225
  const TEXTURE_WRAPPING = {
@@ -2,14 +2,47 @@ import { ImageLoader } from './ImageLoader.js';
2
2
  import { Texture } from '../textures/Texture.js';
3
3
  import { Loader } from './Loader.js';
4
4
 
5
+ /**
6
+ * Class for loading textures. Images are internally
7
+ * loaded via {@link ImageLoader}.
8
+ *
9
+ * ```js
10
+ * const loader = new THREE.TextureLoader();
11
+ * const texture = await loader.loadAsync( 'textures/land_ocean_ice_cloud_2048.jpg' );
12
+ *
13
+ * const material = new THREE.MeshBasicMaterial( { map:texture } );
14
+ * ```
15
+ * Please note that `TextureLoader` has dropped support for progress
16
+ * events in `r84`. For a `TextureLoader` that supports progress events, see
17
+ * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}.
18
+ *
19
+ * @augments Loader
20
+ */
5
21
  class TextureLoader extends Loader {
6
22
 
23
+ /**
24
+ * Constructs a new texture loader.
25
+ *
26
+ * @param {LoadingManager} [manager] - The loading manager.
27
+ */
7
28
  constructor( manager ) {
8
29
 
9
30
  super( manager );
10
31
 
11
32
  }
12
33
 
34
+ /**
35
+ * Starts loading from the given URL and pass the fully loaded texture
36
+ * to the `onLoad()` callback. The method also returns a new texture object which can
37
+ * directly be used for material creation. If you do it this way, the texture
38
+ * may pop up in your scene once the respective loading process is finished.
39
+ *
40
+ * @param {string} url - The path/URL of the file to be loaded. This can also be a data URI.
41
+ * @param {function(Texture)} onLoad - Executed when the loading process has been finished.
42
+ * @param {onProgressCallback} onProgress - Unsupported in this loader.
43
+ * @param {onErrorCallback} onError - Executed when errors occur.
44
+ * @return {Texture} The texture.
45
+ */
13
46
  load( url, onLoad, onProgress, onError ) {
14
47
 
15
48
  const texture = new Texture();
@@ -13,7 +13,7 @@ class NodeLoader extends Loader {
13
13
  /**
14
14
  * Constructs a new node loader.
15
15
  *
16
- * @param {?LoadingManager} manager - A reference to a loading manager.
16
+ * @param {LoadingManager} [manager] - A reference to a loading manager.
17
17
  */
18
18
  constructor( manager ) {
19
19
 
@@ -78,7 +78,7 @@ class NodeLoader extends Loader {
78
78
  /**
79
79
  * Parse the node dependencies for the loaded node.
80
80
  *
81
- * @param {Object} json - The JSON definition
81
+ * @param {Array<Object>} [json] - The JSON definition
82
82
  * @return {Object<string,Node>} A dictionary with node dependencies.
83
83
  */
84
84
  parseNodes( json ) {
@@ -119,6 +119,10 @@ class NodeLoader extends Loader {
119
119
  * Parses the node from the given JSON.
120
120
  *
121
121
  * @param {Object} json - The JSON definition
122
+ * @param {string} json.type - The node type.
123
+ * @param {string} json.uuid - The node UUID.
124
+ * @param {Array<Object>} [json.nodes] - The node dependencies.
125
+ * @param {Object} [json.meta] - The meta data.
122
126
  * @return {Node} The parsed node.
123
127
  */
124
128
  parse( json ) {
@@ -10,7 +10,7 @@ class NodeMaterialLoader extends MaterialLoader {
10
10
  /**
11
11
  * Constructs a new node material loader.
12
12
  *
13
- * @param {?LoadingManager} manager - A reference to a loading manager.
13
+ * @param {LoadingManager} [manager] - A reference to a loading manager.
14
14
  */
15
15
  constructor( manager ) {
16
16
 
@@ -14,7 +14,7 @@ class NodeObjectLoader extends ObjectLoader {
14
14
  /**
15
15
  * Constructs a new node object loader.
16
16
  *
17
- * @param {?LoadingManager} manager - A reference to a loading manager.
17
+ * @param {LoadingManager} [manager] - A reference to a loading manager.
18
18
  */
19
19
  constructor( manager ) {
20
20
 
@@ -48,7 +48,7 @@ class NodeObjectLoader extends ObjectLoader {
48
48
  * Defines the dictionary of node types.
49
49
  *
50
50
  * @param {Object<string,Node.constructor>} value - The node library defined as `<classname,class>`.
51
- * @return {NodeLoader} A reference to this loader.
51
+ * @return {NodeObjectLoader} A reference to this loader.
52
52
  */
53
53
  setNodes( value ) {
54
54
 
@@ -61,7 +61,7 @@ class NodeObjectLoader extends ObjectLoader {
61
61
  * Defines the dictionary of node material types.
62
62
  *
63
63
  * @param {Object<string,NodeMaterial.constructor>} value - The node material library defined as `<classname,class>`.
64
- * @return {NodeLoader} A reference to this loader.
64
+ * @return {NodeObjectLoader} A reference to this loader.
65
65
  */
66
66
  setNodeMaterials( value ) {
67
67
 
@@ -1,31 +1,104 @@
1
1
  import { Material } from './Material.js';
2
2
  import { Color } from '../math/Color.js';
3
3
 
4
+ /**
5
+ * A material for rendering line primitives.
6
+ *
7
+ * Materials define the appearance of renderable 3D objects.
8
+ *
9
+ * ```js
10
+ * const material = new THREE.LineBasicMaterial( { color: 0xffffff } );
11
+ * ```
12
+ *
13
+ * @augments Material
14
+ */
4
15
  class LineBasicMaterial extends Material {
5
16
 
17
+ /**
18
+ * Constructs a new line basic material.
19
+ *
20
+ * @param {Object} [parameters] - An object with one or more properties
21
+ * defining the material's appearance. Any property of the material
22
+ * (including any property from inherited materials) can be passed
23
+ * in here. Color values can be passed any type of value accepted
24
+ * by {@link Color#set}.
25
+ */
6
26
  constructor( parameters ) {
7
27
 
8
28
  super();
9
29
 
30
+ /**
31
+ * This flag can be used for type testing.
32
+ *
33
+ * @type {boolean}
34
+ * @readonly
35
+ * @default true
36
+ */
10
37
  this.isLineBasicMaterial = true;
11
38
 
12
39
  this.type = 'LineBasicMaterial';
13
40
 
41
+ /**
42
+ * Color of the material.
43
+ *
44
+ * @type {Color}
45
+ * @default (1,1,1)
46
+ */
14
47
  this.color = new Color( 0xffffff );
15
48
 
49
+ /**
50
+ * Sets the color of the lines using data from a texture. The texture map
51
+ * color is modulated by the diffuse `color`.
52
+ *
53
+ * @type {?Texture}
54
+ * @default null
55
+ */
16
56
  this.map = null;
17
57
 
58
+ /**
59
+ * Controls line thickness or lines.
60
+ *
61
+ * Can only be used with {@link SVGRenderer}. WebGL and WebGPU
62
+ * ignore this setting and always render line primitives with a
63
+ * width of one pixel.
64
+ *
65
+ * @type {number}
66
+ * @default 1
67
+ */
18
68
  this.linewidth = 1;
69
+
70
+ /**
71
+ * Defines appearance of line ends.
72
+ *
73
+ * Can only be used with {@link SVGRenderer}.
74
+ *
75
+ * @type {('butt'|'round'|'square')}
76
+ * @default 'round'
77
+ */
19
78
  this.linecap = 'round';
79
+
80
+ /**
81
+ * Defines appearance of line joints.
82
+ *
83
+ * Can only be used with {@link SVGRenderer}.
84
+ *
85
+ * @type {('round'|'bevel'|'miter')}
86
+ * @default 'round'
87
+ */
20
88
  this.linejoin = 'round';
21
89
 
90
+ /**
91
+ * Whether the material is affected by fog or not.
92
+ *
93
+ * @type {boolean}
94
+ * @default true
95
+ */
22
96
  this.fog = true;
23
97
 
24
98
  this.setValues( parameters );
25
99
 
26
100
  }
27
101
 
28
-
29
102
  copy( source ) {
30
103
 
31
104
  super.copy( source );
@@ -1,16 +1,68 @@
1
1
  import { LineBasicMaterial } from './LineBasicMaterial.js';
2
2
 
3
+ /**
4
+ * A material for rendering line primitives.
5
+ *
6
+ * Materials define the appearance of renderable 3D objects.
7
+ *
8
+ * ```js
9
+ * const material = new THREE.LineDashedMaterial( {
10
+ * color: 0xffffff,
11
+ * scale: 1,
12
+ * dashSize: 3,
13
+ * gapSize: 1,
14
+ * } );
15
+ * ```
16
+ *
17
+ * @augments LineBasicMaterial
18
+ */
3
19
  class LineDashedMaterial extends LineBasicMaterial {
4
20
 
21
+ /**
22
+ * Constructs a new line dashed material.
23
+ *
24
+ * @param {Object} [parameters] - An object with one or more properties
25
+ * defining the material's appearance. Any property of the material
26
+ * (including any property from inherited materials) can be passed
27
+ * in here. Color values can be passed any type of value accepted
28
+ * by {@link Color#set}.
29
+ */
5
30
  constructor( parameters ) {
6
31
 
7
32
  super();
8
33
 
34
+ /**
35
+ * This flag can be used for type testing.
36
+ *
37
+ * @type {boolean}
38
+ * @readonly
39
+ * @default true
40
+ */
9
41
  this.isLineDashedMaterial = true;
10
42
  this.type = 'LineDashedMaterial';
11
43
 
44
+ /**
45
+ * The scale of the dashed part of a line.
46
+ *
47
+ * @type {number}
48
+ * @default 1
49
+ */
12
50
  this.scale = 1;
51
+
52
+ /**
53
+ * The size of the dash. This is both the gap with the stroke.
54
+ *
55
+ * @type {number}
56
+ * @default 3
57
+ */
13
58
  this.dashSize = 3;
59
+
60
+ /**
61
+ * The size of the gap.
62
+ *
63
+ * @type {number}
64
+ * @default 1
65
+ */
14
66
  this.gapSize = 1;
15
67
 
16
68
  this.setValues( parameters );
@@ -151,7 +151,7 @@ class Material extends EventDispatcher {
151
151
  * Defines the blending equation.
152
152
  *
153
153
  * @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
154
- * @default OneMinusSrcAlphaFactor
154
+ * @default AddEquation
155
155
  */
156
156
  this.blendEquation = AddEquation;
157
157
 
@@ -174,8 +174,8 @@ class Material extends EventDispatcher {
174
174
  /**
175
175
  * Defines the blending equation of the alpha channel.
176
176
  *
177
- * @type {(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
178
- * @default OneMinusSrcAlphaFactor
177
+ * @type {?(AddEquation|SubtractEquation|ReverseSubtractEquation|MinEquation|MaxEquation)}
178
+ * @default null
179
179
  */
180
180
  this.blendEquationAlpha = null;
181
181
 
@@ -427,6 +427,14 @@ class Material extends EventDispatcher {
427
427
  */
428
428
  this.forceSinglePass = false;
429
429
 
430
+ /**
431
+ * Whether it's possible to override the material with {@link Scene#overrideMaterial} or not.
432
+ *
433
+ * @type {boolean}
434
+ * @default true
435
+ */
436
+ this.allowOverride = true;
437
+
430
438
  /**
431
439
  * Defines whether 3D objects using this material are visible.
432
440
  *
@@ -536,6 +544,13 @@ class Material extends EventDispatcher {
536
544
 
537
545
  }
538
546
 
547
+ /**
548
+ * This method can be used to set default values from parameter objects.
549
+ * It is a generic implementation so it can be used with different types
550
+ * of materials.
551
+ *
552
+ * @param {Object} [values] - The material values to set.
553
+ */
539
554
  setValues( values ) {
540
555
 
541
556
  if ( values === undefined ) return;
@@ -3,41 +3,206 @@ import { MultiplyOperation } from '../constants.js';
3
3
  import { Color } from '../math/Color.js';
4
4
  import { Euler } from '../math/Euler.js';
5
5
 
6
+ /**
7
+ * A material for drawing geometries in a simple shaded (flat or wireframe) way.
8
+ *
9
+ * This material is not affected by lights.
10
+ *
11
+ * @augments Material
12
+ */
6
13
  class MeshBasicMaterial extends Material {
7
14
 
15
+ /**
16
+ * Constructs a new mesh basic material.
17
+ *
18
+ * @param {Object} [parameters] - An object with one or more properties
19
+ * defining the material's appearance. Any property of the material
20
+ * (including any property from inherited materials) can be passed
21
+ * in here. Color values can be passed any type of value accepted
22
+ * by {@link Color#set}.
23
+ */
8
24
  constructor( parameters ) {
9
25
 
10
26
  super();
11
27
 
28
+ /**
29
+ * This flag can be used for type testing.
30
+ *
31
+ * @type {boolean}
32
+ * @readonly
33
+ * @default true
34
+ */
12
35
  this.isMeshBasicMaterial = true;
13
36
 
14
37
  this.type = 'MeshBasicMaterial';
15
38
 
39
+ /**
40
+ * Color of the material.
41
+ *
42
+ * @type {Color}
43
+ * @default (1,1,1)
44
+ */
16
45
  this.color = new Color( 0xffffff ); // emissive
17
46
 
47
+ /**
48
+ * The color map. May optionally include an alpha channel, typically combined
49
+ * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
50
+ * color is modulated by the diffuse `color`.
51
+ *
52
+ * @type {?Texture}
53
+ * @default null
54
+ */
18
55
  this.map = null;
19
56
 
57
+ /**
58
+ * The light map. Requires a second set of UVs.
59
+ *
60
+ * @type {?Texture}
61
+ * @default null
62
+ */
20
63
  this.lightMap = null;
64
+
65
+ /**
66
+ * Intensity of the baked light.
67
+ *
68
+ * @type {number}
69
+ * @default 1
70
+ */
21
71
  this.lightMapIntensity = 1.0;
22
72
 
73
+ /**
74
+ * The red channel of this texture is used as the ambient occlusion map.
75
+ * Requires a second set of UVs.
76
+ *
77
+ * @type {?Texture}
78
+ * @default null
79
+ */
23
80
  this.aoMap = null;
81
+
82
+ /**
83
+ * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`
84
+ * disables ambient occlusion. Where intensity is `1` and the AO map's
85
+ * red channel is also `1`, ambient light is fully occluded on a surface.
86
+ *
87
+ * @type {number}
88
+ * @default 1
89
+ */
24
90
  this.aoMapIntensity = 1.0;
25
91
 
92
+ /**
93
+ * Specular map used by the material.
94
+ *
95
+ * @type {?Texture}
96
+ * @default null
97
+ */
26
98
  this.specularMap = null;
27
99
 
100
+ /**
101
+ * The alpha map is a grayscale texture that controls the opacity across the
102
+ * surface (black: fully transparent; white: fully opaque).
103
+ *
104
+ * Only the color of the texture is used, ignoring the alpha channel if one
105
+ * exists. For RGB and RGBA textures, the renderer will use the green channel
106
+ * when sampling this texture due to the extra bit of precision provided for
107
+ * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
108
+ * luminance/alpha textures will also still work as expected.
109
+ *
110
+ * @type {?Texture}
111
+ * @default null
112
+ */
28
113
  this.alphaMap = null;
29
114
 
115
+ /**
116
+ * The environment map.
117
+ *
118
+ * @type {?Texture}
119
+ * @default null
120
+ */
30
121
  this.envMap = null;
122
+
123
+ /**
124
+ * The rotation of the environment map in radians.
125
+ *
126
+ * @type {Euler}
127
+ * @default (0,0,0)
128
+ */
31
129
  this.envMapRotation = new Euler();
130
+
131
+ /**
132
+ * How to combine the result of the surface's color with the environment map, if any.
133
+ *
134
+ * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to
135
+ * blend between the two colors.
136
+ *
137
+ * @type {(MultiplyOperation|MixOperation|AddOperation)}
138
+ * @default MultiplyOperation
139
+ */
32
140
  this.combine = MultiplyOperation;
141
+
142
+ /**
143
+ * How much the environment map affects the surface.
144
+ * The valid range is between `0` (no reflections) and `1` (full reflections).
145
+ *
146
+ * @type {number}
147
+ * @default 1
148
+ */
33
149
  this.reflectivity = 1;
150
+
151
+ /**
152
+ * The index of refraction (IOR) of air (approximately 1) divided by the
153
+ * index of refraction of the material. It is used with environment mapping
154
+ * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.
155
+ * The refraction ratio should not exceed `1`.
156
+ *
157
+ * @type {number}
158
+ * @default 0.98
159
+ */
34
160
  this.refractionRatio = 0.98;
35
161
 
162
+ /**
163
+ * Renders the geometry as a wireframe.
164
+ *
165
+ * @type {boolean}
166
+ * @default false
167
+ */
36
168
  this.wireframe = false;
169
+
170
+ /**
171
+ * Controls the thickness of the wireframe.
172
+ *
173
+ * Can only be used with {@link SVGRenderer}.
174
+ *
175
+ * @type {number}
176
+ * @default 1
177
+ */
37
178
  this.wireframeLinewidth = 1;
179
+
180
+ /**
181
+ * Defines appearance of wireframe ends.
182
+ *
183
+ * Can only be used with {@link SVGRenderer}.
184
+ *
185
+ * @type {('round'|'bevel'|'miter')}
186
+ * @default 'round'
187
+ */
38
188
  this.wireframeLinecap = 'round';
189
+
190
+ /**
191
+ * Defines appearance of wireframe joints.
192
+ *
193
+ * Can only be used with {@link SVGRenderer}.
194
+ *
195
+ * @type {('round'|'bevel'|'miter')}
196
+ * @default 'round'
197
+ */
39
198
  this.wireframeLinejoin = 'round';
40
199
 
200
+ /**
201
+ * Whether the material is affected by fog or not.
202
+ *
203
+ * @type {boolean}
204
+ * @default true
205
+ */
41
206
  this.fog = true;
42
207
 
43
208
  this.setValues( parameters );