@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,27 +1,120 @@
1
1
  import { Material } from './Material.js';
2
2
  import { BasicDepthPacking } from '../constants.js';
3
3
 
4
+ /**
5
+ * A material for drawing geometry by depth. Depth is based off of the camera
6
+ * near and far plane. White is nearest, black is farthest.
7
+ *
8
+ * @augments Material
9
+ */
4
10
  class MeshDepthMaterial extends Material {
5
11
 
12
+ /**
13
+ * Constructs a new mesh depth material.
14
+ *
15
+ * @param {Object} [parameters] - An object with one or more properties
16
+ * defining the material's appearance. Any property of the material
17
+ * (including any property from inherited materials) can be passed
18
+ * in here. Color values can be passed any type of value accepted
19
+ * by {@link Color#set}.
20
+ */
6
21
  constructor( parameters ) {
7
22
 
8
23
  super();
9
24
 
25
+ /**
26
+ * This flag can be used for type testing.
27
+ *
28
+ * @type {boolean}
29
+ * @readonly
30
+ * @default true
31
+ */
10
32
  this.isMeshDepthMaterial = true;
11
33
 
12
34
  this.type = 'MeshDepthMaterial';
13
35
 
36
+ /**
37
+ * Type for depth packing.
38
+ *
39
+ * @type {(BasicDepthPacking|RGBADepthPacking|RGBDepthPacking|RGDepthPacking)}
40
+ * @default BasicDepthPacking
41
+ */
14
42
  this.depthPacking = BasicDepthPacking;
15
43
 
44
+ /**
45
+ * The color map. May optionally include an alpha channel, typically combined
46
+ * with {@link Material#transparent} or {@link Material#alphaTest}.
47
+ *
48
+ * @type {?Texture}
49
+ * @default null
50
+ */
16
51
  this.map = null;
17
52
 
53
+ /**
54
+ * The alpha map is a grayscale texture that controls the opacity across the
55
+ * surface (black: fully transparent; white: fully opaque).
56
+ *
57
+ * Only the color of the texture is used, ignoring the alpha channel if one
58
+ * exists. For RGB and RGBA textures, the renderer will use the green channel
59
+ * when sampling this texture due to the extra bit of precision provided for
60
+ * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
61
+ * luminance/alpha textures will also still work as expected.
62
+ *
63
+ * @type {?Texture}
64
+ * @default null
65
+ */
18
66
  this.alphaMap = null;
19
67
 
68
+ /**
69
+ * The displacement map affects the position of the mesh's vertices. Unlike
70
+ * other maps which only affect the light and shade of the material the
71
+ * displaced vertices can cast shadows, block other objects, and otherwise
72
+ * act as real geometry. The displacement texture is an image where the value
73
+ * of each pixel (white being the highest) is mapped against, and
74
+ * repositions, the vertices of the mesh.
75
+ *
76
+ * @type {?Texture}
77
+ * @default null
78
+ */
20
79
  this.displacementMap = null;
80
+
81
+ /**
82
+ * How much the displacement map affects the mesh (where black is no
83
+ * displacement, and white is maximum displacement). Without a displacement
84
+ * map set, this value is not applied.
85
+ *
86
+ * @type {number}
87
+ * @default 0
88
+ */
21
89
  this.displacementScale = 1;
90
+
91
+ /**
92
+ * The offset of the displacement map's values on the mesh's vertices.
93
+ * The bias is added to the scaled sample of the displacement map.
94
+ * Without a displacement map set, this value is not applied.
95
+ *
96
+ * @type {number}
97
+ * @default 0
98
+ */
22
99
  this.displacementBias = 0;
23
100
 
101
+ /**
102
+ * Renders the geometry as a wireframe.
103
+ *
104
+ * @type {boolean}
105
+ * @default false
106
+ */
24
107
  this.wireframe = false;
108
+
109
+ /**
110
+ * Controls the thickness of the wireframe.
111
+ *
112
+ * WebGL and WebGPU ignore this property and always render
113
+ * 1 pixel wide lines.
114
+ *
115
+ * @type {number}
116
+ * @default 1
117
+ */
25
118
  this.wireframeLinewidth = 1;
26
119
 
27
120
  this.setValues( parameters );
@@ -1,21 +1,97 @@
1
1
  import { Material } from './Material.js';
2
2
 
3
+ /**
4
+ * A material used internally for implementing shadow mapping with
5
+ * point lights.
6
+ *
7
+ * Can also be used to customize the shadow casting of an object by assigning
8
+ * an instance of `MeshDistanceMaterial` to {@link Object3D#customDistanceMaterial}.
9
+ * The following examples demonstrates this approach in order to ensure
10
+ * transparent parts of objects do no cast shadows.
11
+ *
12
+ * @augments Material
13
+ */
3
14
  class MeshDistanceMaterial extends Material {
4
15
 
16
+ /**
17
+ * Constructs a new mesh distance material.
18
+ *
19
+ * @param {Object} [parameters] - An object with one or more properties
20
+ * defining the material's appearance. Any property of the material
21
+ * (including any property from inherited materials) can be passed
22
+ * in here. Color values can be passed any type of value accepted
23
+ * by {@link Color#set}.
24
+ */
5
25
  constructor( parameters ) {
6
26
 
7
27
  super();
8
28
 
29
+ /**
30
+ * This flag can be used for type testing.
31
+ *
32
+ * @type {boolean}
33
+ * @readonly
34
+ * @default true
35
+ */
9
36
  this.isMeshDistanceMaterial = true;
10
37
 
11
38
  this.type = 'MeshDistanceMaterial';
12
39
 
40
+ /**
41
+ * The color map. May optionally include an alpha channel, typically combined
42
+ * with {@link Material#transparent} or {@link Material#alphaTest}.
43
+ *
44
+ * @type {?Texture}
45
+ * @default null
46
+ */
13
47
  this.map = null;
14
48
 
49
+ /**
50
+ * The alpha map is a grayscale texture that controls the opacity across the
51
+ * surface (black: fully transparent; white: fully opaque).
52
+ *
53
+ * Only the color of the texture is used, ignoring the alpha channel if one
54
+ * exists. For RGB and RGBA textures, the renderer will use the green channel
55
+ * when sampling this texture due to the extra bit of precision provided for
56
+ * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
57
+ * luminance/alpha textures will also still work as expected.
58
+ *
59
+ * @type {?Texture}
60
+ * @default null
61
+ */
15
62
  this.alphaMap = null;
16
63
 
64
+ /**
65
+ * The displacement map affects the position of the mesh's vertices. Unlike
66
+ * other maps which only affect the light and shade of the material the
67
+ * displaced vertices can cast shadows, block other objects, and otherwise
68
+ * act as real geometry. The displacement texture is an image where the value
69
+ * of each pixel (white being the highest) is mapped against, and
70
+ * repositions, the vertices of the mesh.
71
+ *
72
+ * @type {?Texture}
73
+ * @default null
74
+ */
17
75
  this.displacementMap = null;
76
+
77
+ /**
78
+ * How much the displacement map affects the mesh (where black is no
79
+ * displacement, and white is maximum displacement). Without a displacement
80
+ * map set, this value is not applied.
81
+ *
82
+ * @type {number}
83
+ * @default 0
84
+ */
18
85
  this.displacementScale = 1;
86
+
87
+ /**
88
+ * The offset of the displacement map's values on the mesh's vertices.
89
+ * The bias is added to the scaled sample of the displacement map.
90
+ * Without a displacement map set, this value is not applied.
91
+ *
92
+ * @type {number}
93
+ * @default 0
94
+ */
19
95
  this.displacementBias = 0;
20
96
 
21
97
  this.setValues( parameters );
@@ -4,58 +4,331 @@ import { Vector2 } from '../math/Vector2.js';
4
4
  import { Color } from '../math/Color.js';
5
5
  import { Euler } from '../math/Euler.js';
6
6
 
7
+ /**
8
+ * A material for non-shiny surfaces, without specular highlights.
9
+ *
10
+ * The material uses a non-physically based [Lambertian]{@link https://en.wikipedia.org/wiki/Lambertian_reflectance}
11
+ * model for calculating reflectance. This can simulate some surfaces (such
12
+ * as untreated wood or stone) well, but cannot simulate shiny surfaces with
13
+ * specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment
14
+ * shading.
15
+ *
16
+ * Due to the simplicity of the reflectance and illumination models,
17
+ * performance will be greater when using this material over the
18
+ * {@link MeshPhongMaterial}, {@link MeshStandardMaterial} or
19
+ * {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy.
20
+ *
21
+ * @augments Material
22
+ */
7
23
  class MeshLambertMaterial extends Material {
8
24
 
25
+ /**
26
+ * Constructs a new mesh lambert material.
27
+ *
28
+ * @param {Object} [parameters] - An object with one or more properties
29
+ * defining the material's appearance. Any property of the material
30
+ * (including any property from inherited materials) can be passed
31
+ * in here. Color values can be passed any type of value accepted
32
+ * by {@link Color#set}.
33
+ */
9
34
  constructor( parameters ) {
10
35
 
11
36
  super();
12
37
 
38
+ /**
39
+ * This flag can be used for type testing.
40
+ *
41
+ * @type {boolean}
42
+ * @readonly
43
+ * @default true
44
+ */
13
45
  this.isMeshLambertMaterial = true;
14
46
 
15
47
  this.type = 'MeshLambertMaterial';
16
48
 
49
+ /**
50
+ * Color of the material.
51
+ *
52
+ * @type {Color}
53
+ * @default (1,1,1)
54
+ */
17
55
  this.color = new Color( 0xffffff ); // diffuse
18
56
 
57
+ /**
58
+ * The color map. May optionally include an alpha channel, typically combined
59
+ * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
60
+ * color is modulated by the diffuse `color`.
61
+ *
62
+ * @type {?Texture}
63
+ * @default null
64
+ */
19
65
  this.map = null;
20
66
 
67
+ /**
68
+ * The light map. Requires a second set of UVs.
69
+ *
70
+ * @type {?Texture}
71
+ * @default null
72
+ */
21
73
  this.lightMap = null;
74
+
75
+ /**
76
+ * Intensity of the baked light.
77
+ *
78
+ * @type {number}
79
+ * @default 1
80
+ */
22
81
  this.lightMapIntensity = 1.0;
23
82
 
83
+ /**
84
+ * The red channel of this texture is used as the ambient occlusion map.
85
+ * Requires a second set of UVs.
86
+ *
87
+ * @type {?Texture}
88
+ * @default null
89
+ */
24
90
  this.aoMap = null;
91
+
92
+ /**
93
+ * Intensity of the ambient occlusion effect. Range is `[0,1]`, where `0`
94
+ * disables ambient occlusion. Where intensity is `1` and the AO map's
95
+ * red channel is also `1`, ambient light is fully occluded on a surface.
96
+ *
97
+ * @type {number}
98
+ * @default 1
99
+ */
25
100
  this.aoMapIntensity = 1.0;
26
101
 
102
+ /**
103
+ * Emissive (light) color of the material, essentially a solid color
104
+ * unaffected by other lighting.
105
+ *
106
+ * @type {Color}
107
+ * @default (0,0,0)
108
+ */
27
109
  this.emissive = new Color( 0x000000 );
110
+
111
+ /**
112
+ * Intensity of the emissive light. Modulates the emissive color.
113
+ *
114
+ * @type {number}
115
+ * @default 1
116
+ */
28
117
  this.emissiveIntensity = 1.0;
118
+
119
+ /**
120
+ * Set emissive (glow) map. The emissive map color is modulated by the
121
+ * emissive color and the emissive intensity. If you have an emissive map,
122
+ * be sure to set the emissive color to something other than black.
123
+ *
124
+ * @type {?Texture}
125
+ * @default null
126
+ */
29
127
  this.emissiveMap = null;
30
128
 
129
+ /**
130
+ * The texture to create a bump map. The black and white values map to the
131
+ * perceived depth in relation to the lights. Bump doesn't actually affect
132
+ * the geometry of the object, only the lighting. If a normal map is defined
133
+ * this will be ignored.
134
+ *
135
+ * @type {?Texture}
136
+ * @default null
137
+ */
31
138
  this.bumpMap = null;
139
+
140
+ /**
141
+ * How much the bump map affects the material. Typical range is `[0,1]`.
142
+ *
143
+ * @type {number}
144
+ * @default 1
145
+ */
32
146
  this.bumpScale = 1;
33
147
 
148
+ /**
149
+ * The texture to create a normal map. The RGB values affect the surface
150
+ * normal for each pixel fragment and change the way the color is lit. Normal
151
+ * maps do not change the actual shape of the surface, only the lighting. In
152
+ * case the material has a normal map authored using the left handed
153
+ * convention, the `y` component of `normalScale` should be negated to compensate
154
+ * for the different handedness.
155
+ *
156
+ * @type {?Texture}
157
+ * @default null
158
+ */
34
159
  this.normalMap = null;
160
+
161
+ /**
162
+ * The type of normal map.
163
+ *
164
+ * @type {(TangentSpaceNormalMap|ObjectSpaceNormalMap)}
165
+ * @default TangentSpaceNormalMap
166
+ */
35
167
  this.normalMapType = TangentSpaceNormalMap;
168
+
169
+ /**
170
+ * How much the normal map affects the material. Typical value range is `[0,1]`.
171
+ *
172
+ * @type {Vector2}
173
+ * @default (1,1)
174
+ */
36
175
  this.normalScale = new Vector2( 1, 1 );
37
176
 
177
+ /**
178
+ * The displacement map affects the position of the mesh's vertices. Unlike
179
+ * other maps which only affect the light and shade of the material the
180
+ * displaced vertices can cast shadows, block other objects, and otherwise
181
+ * act as real geometry. The displacement texture is an image where the value
182
+ * of each pixel (white being the highest) is mapped against, and
183
+ * repositions, the vertices of the mesh.
184
+ *
185
+ * @type {?Texture}
186
+ * @default null
187
+ */
38
188
  this.displacementMap = null;
189
+
190
+ /**
191
+ * How much the displacement map affects the mesh (where black is no
192
+ * displacement, and white is maximum displacement). Without a displacement
193
+ * map set, this value is not applied.
194
+ *
195
+ * @type {number}
196
+ * @default 0
197
+ */
39
198
  this.displacementScale = 1;
199
+
200
+ /**
201
+ * The offset of the displacement map's values on the mesh's vertices.
202
+ * The bias is added to the scaled sample of the displacement map.
203
+ * Without a displacement map set, this value is not applied.
204
+ *
205
+ * @type {number}
206
+ * @default 0
207
+ */
40
208
  this.displacementBias = 0;
41
209
 
210
+ /**
211
+ * Specular map used by the material.
212
+ *
213
+ * @type {?Texture}
214
+ * @default null
215
+ */
42
216
  this.specularMap = null;
43
217
 
218
+ /**
219
+ * The alpha map is a grayscale texture that controls the opacity across the
220
+ * surface (black: fully transparent; white: fully opaque).
221
+ *
222
+ * Only the color of the texture is used, ignoring the alpha channel if one
223
+ * exists. For RGB and RGBA textures, the renderer will use the green channel
224
+ * when sampling this texture due to the extra bit of precision provided for
225
+ * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
226
+ * luminance/alpha textures will also still work as expected.
227
+ *
228
+ * @type {?Texture}
229
+ * @default null
230
+ */
44
231
  this.alphaMap = null;
45
232
 
233
+ /**
234
+ * The environment map.
235
+ *
236
+ * @type {?Texture}
237
+ * @default null
238
+ */
46
239
  this.envMap = null;
240
+
241
+ /**
242
+ * The rotation of the environment map in radians.
243
+ *
244
+ * @type {Euler}
245
+ * @default (0,0,0)
246
+ */
47
247
  this.envMapRotation = new Euler();
248
+
249
+ /**
250
+ * How to combine the result of the surface's color with the environment map, if any.
251
+ *
252
+ * When set to `MixOperation`, the {@link MeshBasicMaterial#reflectivity} is used to
253
+ * blend between the two colors.
254
+ *
255
+ * @type {(MultiplyOperation|MixOperation|AddOperation)}
256
+ * @default MultiplyOperation
257
+ */
48
258
  this.combine = MultiplyOperation;
259
+
260
+ /**
261
+ * How much the environment map affects the surface.
262
+ * The valid range is between `0` (no reflections) and `1` (full reflections).
263
+ *
264
+ * @type {number}
265
+ * @default 1
266
+ */
49
267
  this.reflectivity = 1;
268
+
269
+ /**
270
+ * The index of refraction (IOR) of air (approximately 1) divided by the
271
+ * index of refraction of the material. It is used with environment mapping
272
+ * modes {@link CubeRefractionMapping} and {@link EquirectangularRefractionMapping}.
273
+ * The refraction ratio should not exceed `1`.
274
+ *
275
+ * @type {number}
276
+ * @default 0.98
277
+ */
50
278
  this.refractionRatio = 0.98;
51
279
 
280
+ /**
281
+ * Renders the geometry as a wireframe.
282
+ *
283
+ * @type {boolean}
284
+ * @default false
285
+ */
52
286
  this.wireframe = false;
287
+
288
+ /**
289
+ * Controls the thickness of the wireframe.
290
+ *
291
+ * Can only be used with {@link SVGRenderer}.
292
+ *
293
+ * @type {number}
294
+ * @default 1
295
+ */
53
296
  this.wireframeLinewidth = 1;
297
+
298
+ /**
299
+ * Defines appearance of wireframe ends.
300
+ *
301
+ * Can only be used with {@link SVGRenderer}.
302
+ *
303
+ * @type {('round'|'bevel'|'miter')}
304
+ * @default 'round'
305
+ */
54
306
  this.wireframeLinecap = 'round';
307
+
308
+ /**
309
+ * Defines appearance of wireframe joints.
310
+ *
311
+ * Can only be used with {@link SVGRenderer}.
312
+ *
313
+ * @type {('round'|'bevel'|'miter')}
314
+ * @default 'round'
315
+ */
55
316
  this.wireframeLinejoin = 'round';
56
317
 
318
+ /**
319
+ * Whether the material is rendered with flat shading or not.
320
+ *
321
+ * @type {boolean}
322
+ * @default false
323
+ */
57
324
  this.flatShading = false;
58
325
 
326
+ /**
327
+ * Whether the material is affected by fog or not.
328
+ *
329
+ * @type {boolean}
330
+ * @default true
331
+ */
59
332
  this.fog = true;
60
333
 
61
334
  this.setValues( parameters );