@plastic-software/three 0.174.0 → 0.175.0

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 (544) hide show
  1. package/build/three.cjs +10655 -1446
  2. package/build/three.core.js +9626 -1094
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +834 -157
  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 +1429 -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 +53 -0
  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/UniformsLib.js +1 -4
  512. package/src/renderers/shaders/UniformsUtils.js +1 -3
  513. package/src/renderers/webgl/WebGLBackground.js +4 -2
  514. package/src/renderers/webgl/WebGLState.js +9 -9
  515. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  516. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  517. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  518. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  519. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  520. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  521. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  522. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  523. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  524. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  525. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  526. package/src/renderers/webxr/WebXRController.js +87 -2
  527. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  528. package/src/renderers/webxr/WebXRManager.js +173 -1
  529. package/src/scenes/Scene.js +2 -1
  530. package/src/textures/CanvasTexture.js +28 -0
  531. package/src/textures/CompressedArrayTexture.js +57 -0
  532. package/src/textures/CompressedCubeTexture.js +29 -0
  533. package/src/textures/CompressedTexture.js +64 -6
  534. package/src/textures/CubeTexture.js +52 -4
  535. package/src/textures/Data3DTexture.js +77 -0
  536. package/src/textures/DataArrayTexture.js +93 -0
  537. package/src/textures/DataTexture.js +65 -0
  538. package/src/textures/DepthTexture.js +59 -9
  539. package/src/textures/FramebufferTexture.js +62 -0
  540. package/src/textures/Source.js +69 -0
  541. package/src/textures/Texture.js +5 -5
  542. package/src/textures/VideoFrameTexture.js +43 -6
  543. package/src/textures/VideoTexture.js +49 -4
  544. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -1,25 +1,114 @@
1
1
  import { Material } from './Material.js';
2
2
  import { Color } from '../math/Color.js';
3
3
 
4
+ /**
5
+ * A material for rendering point primitives.
6
+ *
7
+ * Materials define the appearance of renderable 3D objects.
8
+ *
9
+ * ```js
10
+ * const vertices = [];
11
+ *
12
+ * for ( let i = 0; i < 10000; i ++ ) {
13
+ * const x = THREE.MathUtils.randFloatSpread( 2000 );
14
+ * const y = THREE.MathUtils.randFloatSpread( 2000 );
15
+ * const z = THREE.MathUtils.randFloatSpread( 2000 );
16
+ *
17
+ * vertices.push( x, y, z );
18
+ * }
19
+ *
20
+ * const geometry = new THREE.BufferGeometry();
21
+ * geometry.setAttribute( 'position', new THREE.Float32BufferAttribute( vertices, 3 ) );
22
+ * const material = new THREE.PointsMaterial( { color: 0x888888 } );
23
+ * const points = new THREE.Points( geometry, material );
24
+ * scene.add( points );
25
+ * ```
26
+ *
27
+ * @augments Material
28
+ */
4
29
  class PointsMaterial extends Material {
5
30
 
31
+ /**
32
+ * Constructs a new points material.
33
+ *
34
+ * @param {Object} [parameters] - An object with one or more properties
35
+ * defining the material's appearance. Any property of the material
36
+ * (including any property from inherited materials) can be passed
37
+ * in here. Color values can be passed any type of value accepted
38
+ * by {@link Color#set}.
39
+ */
6
40
  constructor( parameters ) {
7
41
 
8
42
  super();
9
43
 
44
+ /**
45
+ * This flag can be used for type testing.
46
+ *
47
+ * @type {boolean}
48
+ * @readonly
49
+ * @default true
50
+ */
10
51
  this.isPointsMaterial = true;
11
52
 
12
53
  this.type = 'PointsMaterial';
13
54
 
55
+ /**
56
+ * Color of the material.
57
+ *
58
+ * @type {Color}
59
+ * @default (1,1,1)
60
+ */
14
61
  this.color = new Color( 0xffffff );
15
62
 
63
+ /**
64
+ * The color map. May optionally include an alpha channel, typically combined
65
+ * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
66
+ * color is modulated by the diffuse `color`.
67
+ *
68
+ * @type {?Texture}
69
+ * @default null
70
+ */
16
71
  this.map = null;
17
72
 
73
+ /**
74
+ * The alpha map is a grayscale texture that controls the opacity across the
75
+ * surface (black: fully transparent; white: fully opaque).
76
+ *
77
+ * Only the color of the texture is used, ignoring the alpha channel if one
78
+ * exists. For RGB and RGBA textures, the renderer will use the green channel
79
+ * when sampling this texture due to the extra bit of precision provided for
80
+ * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
81
+ * luminance/alpha textures will also still work as expected.
82
+ *
83
+ * @type {?Texture}
84
+ * @default null
85
+ */
18
86
  this.alphaMap = null;
19
87
 
88
+ /**
89
+ * Defines the size of the points in pixels.
90
+ *
91
+ * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete}.
92
+ *
93
+ * @type {number}
94
+ * @default 1
95
+ */
20
96
  this.size = 1;
97
+
98
+ /**
99
+ * Specifies whether size of individual points is attenuated by the camera depth (perspective camera only).
100
+ *
101
+ * @type {boolean}
102
+ * @default true
103
+ */
21
104
  this.sizeAttenuation = true;
22
105
 
106
+ /**
107
+ * Whether the material is affected by fog or not.
108
+ *
109
+ * @type {boolean}
110
+ * @default true
111
+ */
23
112
  this.fog = true;
24
113
 
25
114
  this.setValues( parameters );
@@ -1,11 +1,36 @@
1
1
  import { ShaderMaterial } from './ShaderMaterial.js';
2
2
 
3
+ /**
4
+ * This class works just like {@link ShaderMaterial}, except that definitions
5
+ * of built-in uniforms and attributes are not automatically prepended to the
6
+ * GLSL shader code.
7
+ *
8
+ * `RawShaderMaterial` can only be used with {@link WebGLRenderer}.
9
+ *
10
+ * @augments ShaderMaterial
11
+ */
3
12
  class RawShaderMaterial extends ShaderMaterial {
4
13
 
14
+ /**
15
+ * Constructs a new raw shader material.
16
+ *
17
+ * @param {Object} [parameters] - An object with one or more properties
18
+ * defining the material's appearance. Any property of the material
19
+ * (including any property from inherited materials) can be passed
20
+ * in here. Color values can be passed any type of value accepted
21
+ * by {@link Color#set}.
22
+ */
5
23
  constructor( parameters ) {
6
24
 
7
25
  super( parameters );
8
26
 
27
+ /**
28
+ * This flag can be used for type testing.
29
+ *
30
+ * @type {boolean}
31
+ * @readonly
32
+ * @default true
33
+ */
9
34
  this.isRawShaderMaterial = true;
10
35
 
11
36
  this.type = 'RawShaderMaterial';
@@ -4,50 +4,248 @@ import { cloneUniforms, cloneUniformsGroups } from '../renderers/shaders/Uniform
4
4
  import default_vertex from '../renderers/shaders/ShaderChunk/default_vertex.glsl.js';
5
5
  import default_fragment from '../renderers/shaders/ShaderChunk/default_fragment.glsl.js';
6
6
 
7
+ /**
8
+ * A material rendered with custom shaders. A shader is a small program written in GLSL.
9
+ * that runs on the GPU. You may want to use a custom shader if you need to implement an
10
+ * effect not included with any of the built-in materials.
11
+ *
12
+ * There are the following notes to bear in mind when using a `ShaderMaterial`:
13
+ *
14
+ * - `ShaderMaterial` can only be used with {@link WebGLRenderer}.
15
+ * - Built in attributes and uniforms are passed to the shaders along with your code. If
16
+ * you don't want that, use {@link RawShaderMaterial} instead.
17
+ * - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`
18
+ * in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has
19
+ * to be placed right above the loop. The loop formatting has to correspond to a defined standard.
20
+ * - The loop has to be [normalized]{@link https://en.wikipedia.org/wiki/Normalized_loop}.
21
+ * - The loop variable has to be *i*.
22
+ * - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly
23
+ * value of *i* for the given iteration and can be used in preprocessor
24
+ * statements.
25
+ *
26
+ * ```js
27
+ * const material = new THREE.ShaderMaterial( {
28
+ * uniforms: {
29
+ * time: { value: 1.0 },
30
+ * resolution: { value: new THREE.Vector2() }
31
+ * },
32
+ * vertexShader: document.getElementById( 'vertexShader' ).textContent,
33
+ * fragmentShader: document.getElementById( 'fragmentShader' ).textContent
34
+ * } );
35
+ * ```
36
+ *
37
+ * @augments Material
38
+ */
7
39
  class ShaderMaterial extends Material {
8
40
 
41
+ /**
42
+ * Constructs a new shader material.
43
+ *
44
+ * @param {Object} [parameters] - An object with one or more properties
45
+ * defining the material's appearance. Any property of the material
46
+ * (including any property from inherited materials) can be passed
47
+ * in here. Color values can be passed any type of value accepted
48
+ * by {@link Color#set}.
49
+ */
9
50
  constructor( parameters ) {
10
51
 
11
52
  super();
12
53
 
54
+ /**
55
+ * This flag can be used for type testing.
56
+ *
57
+ * @type {boolean}
58
+ * @readonly
59
+ * @default true
60
+ */
13
61
  this.isShaderMaterial = true;
14
62
 
15
63
  this.type = 'ShaderMaterial';
16
64
 
65
+ /**
66
+ * Defines custom constants using `#define` directives within the GLSL code
67
+ * for both the vertex shader and the fragment shader; each key/value pair
68
+ * yields another directive.
69
+ * ```js
70
+ * defines: {
71
+ * FOO: 15,
72
+ * BAR: true
73
+ * }
74
+ * ```
75
+ * Yields the lines:
76
+ * ```
77
+ * #define FOO 15
78
+ * #define BAR true
79
+ * ```
80
+ *
81
+ * @type {Object}
82
+ */
17
83
  this.defines = {};
84
+
85
+ /**
86
+ * An object of the form:
87
+ * ```js
88
+ * {
89
+ * "uniform1": { value: 1.0 },
90
+ * "uniform2": { value: 2 }
91
+ * }
92
+ * ```
93
+ * specifying the uniforms to be passed to the shader code; keys are uniform
94
+ * names, values are definitions of the form
95
+ * ```
96
+ * {
97
+ * value: 1.0
98
+ * }
99
+ * ```
100
+ * where `value` is the value of the uniform. Names must match the name of
101
+ * the uniform, as defined in the GLSL code. Note that uniforms are refreshed
102
+ * on every frame, so updating the value of the uniform will immediately
103
+ * update the value available to the GLSL code.
104
+ *
105
+ * @type {Object}
106
+ */
18
107
  this.uniforms = {};
108
+
109
+ /**
110
+ * An array holding uniforms groups for configuring UBOs.
111
+ *
112
+ * @type {Array<UniformsGroup>}
113
+ */
19
114
  this.uniformsGroups = [];
20
115
 
116
+ /**
117
+ * Vertex shader GLSL code. This is the actual code for the shader.
118
+ *
119
+ * @type {string}
120
+ */
21
121
  this.vertexShader = default_vertex;
122
+
123
+ /**
124
+ * Fragment shader GLSL code. This is the actual code for the shader.
125
+ *
126
+ * @type {string}
127
+ */
22
128
  this.fragmentShader = default_fragment;
23
129
 
130
+ /**
131
+ * Controls line thickness or lines.
132
+ *
133
+ * WebGL and WebGPU ignore this setting and always render line primitives with a
134
+ * width of one pixel.
135
+ *
136
+ * @type {number}
137
+ * @default 1
138
+ */
24
139
  this.linewidth = 1;
25
140
 
141
+ /**
142
+ * Renders the geometry as a wireframe.
143
+ *
144
+ * @type {boolean}
145
+ * @default false
146
+ */
26
147
  this.wireframe = false;
27
- this.wireframeLinewidth = 1;
28
148
 
29
- this.fog = false; // set to use scene fog
30
- this.lights = false; // set to use scene lights
31
- this.clipping = false; // set to use user-defined clipping planes
149
+ /**
150
+ * Controls the thickness of the wireframe.
151
+ *
152
+ * WebGL and WebGPU ignore this property and always render
153
+ * 1 pixel wide lines.
154
+ *
155
+ * @type {number}
156
+ * @default 1
157
+ */
158
+ this.wireframeLinewidth = 1;
32
159
 
160
+ /**
161
+ * Define whether the material color is affected by global fog settings; `true`
162
+ * to pass fog uniforms to the shader.
163
+ *
164
+ * @type {boolean}
165
+ * @default false
166
+ */
167
+ this.fog = false;
168
+
169
+ /**
170
+ * Defines whether this material uses lighting; `true` to pass uniform data
171
+ * related to lighting to this shader.
172
+ *
173
+ * @type {boolean}
174
+ * @default false
175
+ */
176
+ this.lights = false;
177
+
178
+ /**
179
+ * Defines whether this material supports clipping; `true` to let the renderer
180
+ * pass the clippingPlanes uniform.
181
+ *
182
+ * @type {boolean}
183
+ * @default false
184
+ */
185
+ this.clipping = false;
186
+
187
+ /**
188
+ * Overwritten and set to `true` by default.
189
+ *
190
+ * @type {boolean}
191
+ * @default true
192
+ */
33
193
  this.forceSinglePass = true;
34
194
 
195
+ /**
196
+ * This object allows to enable certain WebGL 2 extensions.
197
+ *
198
+ * - clipCullDistance: set to `true` to use vertex shader clipping
199
+ * - multiDraw: set to `true` to use vertex shader multi_draw / enable gl_DrawID
200
+ *
201
+ * @type {{clipCullDistance:false,multiDraw:false}}
202
+ */
35
203
  this.extensions = {
36
204
  clipCullDistance: false, // set to use vertex shader clipping
37
205
  multiDraw: false // set to use vertex shader multi_draw / enable gl_DrawID
38
206
  };
39
207
 
40
- // When rendered geometry doesn't include these attributes but the material does,
41
- // use these default values in WebGL. This avoids errors when buffer data is missing.
208
+ /**
209
+ * When the rendered geometry doesn't include these attributes but the
210
+ * material does, these default values will be passed to the shaders. This
211
+ * avoids errors when buffer data is missing.
212
+ *
213
+ * - color: [ 1, 1, 1 ]
214
+ * - uv: [ 0, 0 ]
215
+ * - uv1: [ 0, 0 ]
216
+ *
217
+ * @type {Object}
218
+ */
42
219
  this.defaultAttributeValues = {
43
220
  'color': [ 1, 1, 1 ],
44
221
  'uv': [ 0, 0 ],
45
222
  'uv1': [ 0, 0 ]
46
223
  };
47
224
 
225
+ /**
226
+ * If set, this calls [gl.bindAttribLocation]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation}
227
+ * to bind a generic vertex index to an attribute variable.
228
+ *
229
+ * @type {string|undefined}
230
+ * @default undefined
231
+ */
48
232
  this.index0AttributeName = undefined;
233
+
234
+ /**
235
+ * Can be used to force a uniform update while changing uniforms in
236
+ * {@link Object3D#onBeforeRender}.
237
+ *
238
+ * @type {boolean}
239
+ * @default false
240
+ */
49
241
  this.uniformsNeedUpdate = false;
50
242
 
243
+ /**
244
+ * Defines the GLSL version of custom shader code.
245
+ *
246
+ * @type {?(GLSL1|GLSL3)}
247
+ * @default null
248
+ */
51
249
  this.glslVersion = null;
52
250
 
53
251
  if ( parameters !== undefined ) {
@@ -182,4 +380,15 @@ class ShaderMaterial extends Material {
182
380
 
183
381
  }
184
382
 
383
+ /**
384
+ * This type represents the fields required to store and run the shader code.
385
+ *
386
+ * @typedef {Object} ShaderMaterial~Shader
387
+ * @property {string} name - The name of the shader.
388
+ * @property {Object<string, Uniform>} uniforms - The uniforms of the shader.
389
+ * @property {Object<string, any>} defines - The defines of the shader.
390
+ * @property {string} vertexShader - The vertex shader code.
391
+ * @property {string} fragmentShader - The fragment shader code.
392
+ **/
393
+
185
394
  export { ShaderMaterial };
@@ -1,19 +1,73 @@
1
1
  import { Material } from './Material.js';
2
2
  import { Color } from '../math/Color.js';
3
3
 
4
+ /**
5
+ * This material can receive shadows, but otherwise is completely transparent.
6
+ *
7
+ * ```js
8
+ * const geometry = new THREE.PlaneGeometry( 2000, 2000 );
9
+ * geometry.rotateX( - Math.PI / 2 );
10
+ *
11
+ * const material = new THREE.ShadowMaterial();
12
+ * material.opacity = 0.2;
13
+ *
14
+ * const plane = new THREE.Mesh( geometry, material );
15
+ * plane.position.y = -200;
16
+ * plane.receiveShadow = true;
17
+ * scene.add( plane );
18
+ * ```
19
+ *
20
+ * @augments Material
21
+ */
4
22
  class ShadowMaterial extends Material {
5
23
 
24
+ /**
25
+ * Constructs a new shadow 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
+ */
6
33
  constructor( parameters ) {
7
34
 
8
35
  super();
9
36
 
37
+ /**
38
+ * This flag can be used for type testing.
39
+ *
40
+ * @type {boolean}
41
+ * @readonly
42
+ * @default true
43
+ */
10
44
  this.isShadowMaterial = true;
11
45
 
12
46
  this.type = 'ShadowMaterial';
13
47
 
48
+ /**
49
+ * Color of the material.
50
+ *
51
+ * @type {Color}
52
+ * @default (0,0,0)
53
+ */
14
54
  this.color = new Color( 0x000000 );
55
+
56
+ /**
57
+ * Overwritten since shadow materials are transparent
58
+ * by default.
59
+ *
60
+ * @type {boolean}
61
+ * @default true
62
+ */
15
63
  this.transparent = true;
16
64
 
65
+ /**
66
+ * Whether the material is affected by fog or not.
67
+ *
68
+ * @type {boolean}
69
+ * @default true
70
+ */
17
71
  this.fog = true;
18
72
 
19
73
  this.setValues( parameters );
@@ -1,28 +1,110 @@
1
1
  import { Material } from './Material.js';
2
2
  import { Color } from '../math/Color.js';
3
3
 
4
+ /**
5
+ * A material for rendering instances of {@link Sprite}.
6
+ *
7
+ * ```js
8
+ * const map = new THREE.TextureLoader().load( 'textures/sprite.png' );
9
+ * const material = new THREE.SpriteMaterial( { map: map, color: 0xffffff } );
10
+ *
11
+ * const sprite = new THREE.Sprite( material );
12
+ * sprite.scale.set(200, 200, 1)
13
+ * scene.add( sprite );
14
+ * ```
15
+ *
16
+ * @augments Material
17
+ */
4
18
  class SpriteMaterial extends Material {
5
19
 
20
+ /**
21
+ * Constructs a new sprite 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
+ */
6
29
  constructor( parameters ) {
7
30
 
8
31
  super();
9
32
 
33
+ /**
34
+ * This flag can be used for type testing.
35
+ *
36
+ * @type {boolean}
37
+ * @readonly
38
+ * @default true
39
+ */
10
40
  this.isSpriteMaterial = true;
11
41
 
12
42
  this.type = 'SpriteMaterial';
13
43
 
44
+ /**
45
+ * Color of the material.
46
+ *
47
+ * @type {Color}
48
+ * @default (1,1,1)
49
+ */
14
50
  this.color = new Color( 0xffffff );
15
51
 
52
+ /**
53
+ * The color map. May optionally include an alpha channel, typically combined
54
+ * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
55
+ * color is modulated by the diffuse `color`.
56
+ *
57
+ * @type {?Texture}
58
+ * @default null
59
+ */
16
60
  this.map = null;
17
61
 
62
+ /**
63
+ * The alpha map is a grayscale texture that controls the opacity across the
64
+ * surface (black: fully transparent; white: fully opaque).
65
+ *
66
+ * Only the color of the texture is used, ignoring the alpha channel if one
67
+ * exists. For RGB and RGBA textures, the renderer will use the green channel
68
+ * when sampling this texture due to the extra bit of precision provided for
69
+ * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
70
+ * luminance/alpha textures will also still work as expected.
71
+ *
72
+ * @type {?Texture}
73
+ * @default null
74
+ */
18
75
  this.alphaMap = null;
19
76
 
77
+ /**
78
+ * The rotation of the sprite in radians.
79
+ *
80
+ * @type {number}
81
+ * @default 0
82
+ */
20
83
  this.rotation = 0;
21
84
 
85
+ /**
86
+ * Specifies whether size of the sprite is attenuated by the camera depth (perspective camera only).
87
+ *
88
+ * @type {boolean}
89
+ * @default true
90
+ */
22
91
  this.sizeAttenuation = true;
23
92
 
93
+ /**
94
+ * Overwritten since sprite materials are transparent
95
+ * by default.
96
+ *
97
+ * @type {boolean}
98
+ * @default true
99
+ */
24
100
  this.transparent = true;
25
101
 
102
+ /**
103
+ * Whether the material is affected by fog or not.
104
+ *
105
+ * @type {boolean}
106
+ * @default true
107
+ */
26
108
  this.fog = true;
27
109
 
28
110
  this.setValues( parameters );
@@ -33,7 +33,7 @@ class Line2NodeMaterial extends NodeMaterial {
33
33
  /**
34
34
  * Constructs a new node material for wide line rendering.
35
35
  *
36
- * @param {?Object} parameters - The configuration parameter.
36
+ * @param {Object} [parameters={}] - The configuration parameter.
37
37
  */
38
38
  constructor( parameters = {} ) {
39
39
 
@@ -5,7 +5,7 @@ import { LineBasicMaterial } from '../LineBasicMaterial.js';
5
5
  const _defaultValues = /*@__PURE__*/ new LineBasicMaterial();
6
6
 
7
7
  /**
8
- * Node material version of `LineBasicMaterial`.
8
+ * Node material version of {@link LineBasicMaterial}.
9
9
  *
10
10
  * @augments NodeMaterial
11
11
  */
@@ -20,7 +20,7 @@ class LineBasicNodeMaterial extends NodeMaterial {
20
20
  /**
21
21
  * Constructs a new line basic node material.
22
22
  *
23
- * @param {?Object} parameters - The configuration parameter.
23
+ * @param {Object} [parameters] - The configuration parameter.
24
24
  */
25
25
  constructor( parameters ) {
26
26
 
@@ -9,7 +9,7 @@ import { LineDashedMaterial } from '../LineDashedMaterial.js';
9
9
  const _defaultValues = /*@__PURE__*/ new LineDashedMaterial();
10
10
 
11
11
  /**
12
- * Node material version of `LineDashedMaterial`.
12
+ * Node material version of {@link LineDashedMaterial}.
13
13
  *
14
14
  * @augments NodeMaterial
15
15
  */
@@ -24,7 +24,7 @@ class LineDashedNodeMaterial extends NodeMaterial {
24
24
  /**
25
25
  * Constructs a new line dashed node material.
26
26
  *
27
- * @param {?Object} parameters - The configuration parameter.
27
+ * @param {Object} [parameters] - The configuration parameter.
28
28
  */
29
29
  constructor( parameters ) {
30
30
 
@@ -11,7 +11,7 @@ import { MeshBasicMaterial } from '../MeshBasicMaterial.js';
11
11
  const _defaultValues = /*@__PURE__*/ new MeshBasicMaterial();
12
12
 
13
13
  /**
14
- * Node material version of `MeshBasicMaterial`.
14
+ * Node material version of {@link MeshBasicMaterial}.
15
15
  *
16
16
  * @augments NodeMaterial
17
17
  */
@@ -26,7 +26,7 @@ class MeshBasicNodeMaterial extends NodeMaterial {
26
26
  /**
27
27
  * Constructs a new mesh basic node material.
28
28
  *
29
- * @param {?Object} parameters - The configuration parameter.
29
+ * @param {Object} [parameters] - The configuration parameter.
30
30
  */
31
31
  constructor( parameters ) {
32
32
 
@@ -7,7 +7,7 @@ import { MeshLambertMaterial } from '../MeshLambertMaterial.js';
7
7
  const _defaultValues = /*@__PURE__*/ new MeshLambertMaterial();
8
8
 
9
9
  /**
10
- * Node material version of `MeshLambertMaterial`.
10
+ * Node material version of {@link MeshLambertMaterial}.
11
11
  *
12
12
  * @augments NodeMaterial
13
13
  */
@@ -22,7 +22,7 @@ class MeshLambertNodeMaterial extends NodeMaterial {
22
22
  /**
23
23
  * Constructs a new mesh lambert node material.
24
24
  *
25
- * @param {?Object} parameters - The configuration parameter.
25
+ * @param {Object} [parameters] - The configuration parameter.
26
26
  */
27
27
  constructor( parameters ) {
28
28