@plastic-software/three 0.167.4 → 0.174.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 (747) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36217 -23964
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46744
  7. package/build/three.module.min.js +2 -3
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50671
  11. package/build/three.webgpu.min.js +2 -3
  12. package/build/three.webgpu.nodes.js +70301 -0
  13. package/build/three.webgpu.nodes.min.js +6 -0
  14. package/examples/jsm/Addons.js +3 -15
  15. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  16. package/examples/jsm/animation/CCDIKSolver.js +61 -11
  17. package/examples/jsm/capabilities/WebGL.js +27 -21
  18. package/examples/jsm/capabilities/WebGPU.js +1 -10
  19. package/examples/jsm/controls/ArcballControls.js +262 -231
  20. package/examples/jsm/controls/DragControls.js +1 -1
  21. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  22. package/examples/jsm/controls/FlyControls.js +194 -188
  23. package/examples/jsm/controls/OrbitControls.js +801 -777
  24. package/examples/jsm/controls/PointerLockControls.js +26 -20
  25. package/examples/jsm/controls/TrackballControls.js +469 -448
  26. package/examples/jsm/controls/TransformControls.js +119 -68
  27. package/examples/jsm/csm/CSM.js +2 -2
  28. package/examples/jsm/csm/CSMFrustum.js +7 -4
  29. package/examples/jsm/csm/CSMHelper.js +2 -0
  30. package/examples/jsm/csm/CSMShadowNode.js +442 -0
  31. package/examples/jsm/curves/NURBSCurve.js +33 -2
  32. package/examples/jsm/curves/NURBSUtils.js +3 -0
  33. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  34. package/examples/jsm/effects/OutlineEffect.js +1 -1
  35. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  36. package/examples/jsm/effects/StereoEffect.js +6 -1
  37. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  38. package/examples/jsm/exporters/EXRExporter.js +19 -11
  39. package/examples/jsm/exporters/GLTFExporter.js +181 -109
  40. package/examples/jsm/exporters/KTX2Exporter.js +54 -23
  41. package/examples/jsm/exporters/OBJExporter.js +5 -1
  42. package/examples/jsm/exporters/PLYExporter.js +11 -9
  43. package/examples/jsm/exporters/USDZExporter.js +50 -11
  44. package/examples/jsm/geometries/DecalGeometry.js +73 -21
  45. package/examples/jsm/geometries/TextGeometry.js +1 -12
  46. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  47. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  48. package/examples/jsm/helpers/TextureHelperGPU.js +185 -0
  49. package/examples/jsm/helpers/VertexNormalsHelper.js +2 -0
  50. package/examples/jsm/interactive/HTMLMesh.js +1 -0
  51. package/examples/jsm/interactive/InteractiveGroup.js +108 -51
  52. package/examples/jsm/interactive/SelectionHelper.js +3 -1
  53. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  54. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  55. package/examples/jsm/libs/demuxer_mp4.js +109 -0
  56. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  57. package/examples/jsm/lighting/TiledLighting.js +18 -0
  58. package/examples/jsm/lights/LightProbeGenerator.js +26 -12
  59. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  60. package/examples/jsm/lines/LineGeometry.js +25 -0
  61. package/examples/jsm/lines/LineMaterial.js +0 -1
  62. package/examples/jsm/lines/LineSegmentsGeometry.js +2 -0
  63. package/examples/jsm/lines/webgpu/Line2.js +2 -1
  64. package/examples/jsm/lines/webgpu/LineSegments2.js +16 -21
  65. package/examples/jsm/lines/webgpu/Wireframe.js +57 -0
  66. package/examples/jsm/loaders/3DMLoader.js +1 -0
  67. package/examples/jsm/loaders/3MFLoader.js +104 -2
  68. package/examples/jsm/loaders/BVHLoader.js +1 -1
  69. package/examples/jsm/loaders/ColladaLoader.js +15 -12
  70. package/examples/jsm/loaders/DDSLoader.js +42 -0
  71. package/examples/jsm/loaders/DRACOLoader.js +3 -1
  72. package/examples/jsm/loaders/FBXLoader.js +71 -22
  73. package/examples/jsm/loaders/GCodeLoader.js +4 -2
  74. package/examples/jsm/loaders/GLTFLoader.js +29 -14
  75. package/examples/jsm/loaders/KTX2Loader.js +160 -58
  76. package/examples/jsm/loaders/KTXLoader.js +4 -4
  77. package/examples/jsm/loaders/LDrawLoader.js +22 -136
  78. package/examples/jsm/loaders/LottieLoader.js +2 -1
  79. package/examples/jsm/loaders/MTLLoader.js +27 -7
  80. package/examples/jsm/loaders/MaterialXLoader.js +40 -14
  81. package/examples/jsm/loaders/NRRDLoader.js +1 -1
  82. package/examples/jsm/loaders/OBJLoader.js +5 -3
  83. package/examples/jsm/loaders/PCDLoader.js +14 -13
  84. package/examples/jsm/loaders/PDBLoader.js +3 -2
  85. package/examples/jsm/loaders/PLYLoader.js +15 -12
  86. package/examples/jsm/loaders/PVRLoader.js +1 -1
  87. package/examples/jsm/loaders/STLLoader.js +3 -2
  88. package/examples/jsm/loaders/SVGLoader.js +2 -2
  89. package/examples/jsm/loaders/TDSLoader.js +17 -18
  90. package/examples/jsm/loaders/VRMLLoader.js +17 -17
  91. package/examples/jsm/loaders/VTKLoader.js +4 -3
  92. package/examples/jsm/loaders/XYZLoader.js +3 -2
  93. package/examples/jsm/loaders/lwo/IFFParser.js +4 -4
  94. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +143 -0
  95. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +114 -0
  96. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  97. package/examples/jsm/math/ColorSpaces.js +76 -0
  98. package/examples/jsm/math/ConvexHull.js +1 -1
  99. package/examples/jsm/math/OBB.js +17 -0
  100. package/examples/jsm/misc/GPUComputationRenderer.js +6 -7
  101. package/examples/jsm/misc/ProgressiveLightMap.js +54 -41
  102. package/examples/jsm/misc/ProgressiveLightMapGPU.js +294 -0
  103. package/examples/jsm/misc/Timer.js +27 -12
  104. package/examples/jsm/misc/Volume.js +28 -18
  105. package/examples/jsm/misc/VolumeSlice.js +19 -16
  106. package/examples/jsm/modifiers/CurveModifier.js +10 -8
  107. package/examples/jsm/modifiers/CurveModifierGPU.js +235 -0
  108. package/examples/jsm/modifiers/SimplifyModifier.js +2 -2
  109. package/examples/jsm/objects/GroundedSkybox.js +4 -4
  110. package/examples/jsm/objects/LensflareMesh.js +324 -0
  111. package/examples/jsm/objects/Reflector.js +5 -2
  112. package/examples/jsm/objects/Sky.js +2 -2
  113. package/examples/jsm/objects/SkyMesh.js +14 -14
  114. package/examples/jsm/objects/Water2.js +1 -1
  115. package/examples/jsm/objects/Water2Mesh.js +11 -9
  116. package/examples/jsm/objects/WaterMesh.js +38 -33
  117. package/examples/jsm/physics/JoltPhysics.js +8 -8
  118. package/examples/jsm/physics/RapierPhysics.js +5 -5
  119. package/examples/jsm/postprocessing/AfterimagePass.js +14 -3
  120. package/examples/jsm/postprocessing/BloomPass.js +2 -2
  121. package/examples/jsm/postprocessing/EffectComposer.js +1 -2
  122. package/examples/jsm/postprocessing/OutlinePass.js +37 -51
  123. package/examples/jsm/postprocessing/OutputPass.js +2 -0
  124. package/examples/jsm/postprocessing/SAOPass.js +1 -2
  125. package/examples/jsm/postprocessing/SMAAPass.js +1 -3
  126. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  127. package/examples/jsm/postprocessing/SSAOPass.js +2 -4
  128. package/examples/jsm/postprocessing/SSRPass.js +8 -4
  129. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -2
  130. package/examples/jsm/renderers/CSS2DRenderer.js +6 -3
  131. package/examples/jsm/renderers/CSS3DRenderer.js +7 -4
  132. package/examples/jsm/renderers/SVGRenderer.js +6 -4
  133. package/examples/jsm/shaders/BokehShader2.js +1 -1
  134. package/examples/jsm/shaders/FXAAShader.js +225 -224
  135. package/examples/jsm/shaders/GodRaysShader.js +3 -3
  136. package/examples/jsm/shaders/OutputShader.js +6 -2
  137. package/examples/jsm/shaders/SobelOperatorShader.js +1 -1
  138. package/examples/jsm/transpiler/AST.js +12 -2
  139. package/examples/jsm/transpiler/GLSLDecoder.js +77 -31
  140. package/examples/jsm/transpiler/ShaderToyDecoder.js +3 -3
  141. package/examples/jsm/transpiler/TSLEncoder.js +96 -21
  142. package/examples/jsm/tsl/display/AfterImageNode.js +243 -0
  143. package/examples/jsm/tsl/display/AnaglyphPassNode.js +106 -0
  144. package/examples/jsm/tsl/display/AnamorphicNode.js +257 -0
  145. package/{src/nodes/display/BleachBypassNode.js → examples/jsm/tsl/display/BleachBypass.js} +11 -6
  146. package/{src/nodes → examples/jsm/tsl}/display/BloomNode.js +252 -67
  147. package/examples/jsm/tsl/display/DenoiseNode.js +332 -0
  148. package/{src/nodes → examples/jsm/tsl}/display/DepthOfFieldNode.js +92 -14
  149. package/examples/jsm/tsl/display/DotScreenNode.js +103 -0
  150. package/examples/jsm/tsl/display/FXAANode.js +364 -0
  151. package/examples/jsm/tsl/display/FilmNode.js +100 -0
  152. package/examples/jsm/tsl/display/GTAONode.js +521 -0
  153. package/examples/jsm/tsl/display/GaussianBlurNode.js +393 -0
  154. package/examples/jsm/tsl/display/LensflareNode.js +278 -0
  155. package/examples/jsm/tsl/display/Lut3DNode.js +108 -0
  156. package/examples/jsm/tsl/display/MotionBlur.js +33 -0
  157. package/examples/jsm/tsl/display/OutlineNode.js +750 -0
  158. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +88 -0
  159. package/{src/nodes → examples/jsm/tsl}/display/PixelationPassNode.js +160 -28
  160. package/examples/jsm/tsl/display/RGBShiftNode.js +95 -0
  161. package/examples/jsm/tsl/display/SMAANode.js +767 -0
  162. package/examples/jsm/tsl/display/SSAAPassNode.js +357 -0
  163. package/examples/jsm/tsl/display/SSRNode.js +538 -0
  164. package/examples/jsm/tsl/display/Sepia.js +24 -0
  165. package/{src/nodes → examples/jsm/tsl}/display/SobelOperatorNode.js +66 -20
  166. package/examples/jsm/tsl/display/StereoCompositePassNode.js +184 -0
  167. package/examples/jsm/tsl/display/StereoPassNode.js +119 -0
  168. package/examples/jsm/tsl/display/TRAAPassNode.js +451 -0
  169. package/examples/jsm/tsl/display/TransitionNode.js +140 -0
  170. package/examples/jsm/tsl/display/hashBlur.js +34 -0
  171. package/examples/jsm/tsl/lighting/TiledLightsNode.js +395 -0
  172. package/examples/jsm/tsl/math/Bayer.js +18 -0
  173. package/examples/jsm/tsl/utils/Raymarching.js +65 -0
  174. package/examples/jsm/utils/BufferGeometryUtils.js +2 -2
  175. package/examples/jsm/utils/CameraUtils.js +4 -1
  176. package/examples/jsm/utils/GeometryCompressionUtils.js +38 -123
  177. package/examples/jsm/utils/GeometryUtils.js +22 -19
  178. package/examples/jsm/utils/SceneOptimizer.js +410 -0
  179. package/examples/jsm/utils/SceneUtils.js +2 -2
  180. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  181. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  182. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  183. package/examples/jsm/utils/UVsDebug.js +1 -1
  184. package/examples/jsm/utils/{TextureUtils.js → WebGLTextureUtils.js} +1 -0
  185. package/examples/jsm/utils/WebGPUTextureUtils.js +64 -0
  186. package/examples/jsm/webxr/OculusHandPointerModel.js +21 -21
  187. package/examples/jsm/webxr/Text2D.js +6 -6
  188. package/examples/jsm/webxr/XRControllerModelFactory.js +7 -2
  189. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  190. package/package.json +14 -9
  191. package/src/Three.Core.js +182 -0
  192. package/src/Three.Legacy.js +0 -21
  193. package/src/Three.TSL.js +543 -0
  194. package/src/Three.WebGPU.Nodes.js +23 -0
  195. package/src/Three.WebGPU.js +13 -184
  196. package/src/Three.js +1 -176
  197. package/src/animation/AnimationClip.js +2 -2
  198. package/src/animation/AnimationObjectGroup.js +2 -2
  199. package/src/animation/AnimationUtils.js +1 -1
  200. package/src/animation/PropertyBinding.js +2 -2
  201. package/src/audio/Audio.js +379 -2
  202. package/src/audio/AudioAnalyser.js +58 -1
  203. package/src/audio/AudioContext.js +15 -0
  204. package/src/audio/AudioListener.js +76 -0
  205. package/src/audio/PositionalAudio.js +107 -0
  206. package/src/cameras/ArrayCamera.js +29 -0
  207. package/src/cameras/Camera.js +47 -0
  208. package/src/cameras/CubeCamera.js +66 -0
  209. package/src/cameras/OrthographicCamera.js +109 -0
  210. package/src/cameras/PerspectiveCamera.js +173 -34
  211. package/src/cameras/StereoCamera.js +48 -2
  212. package/src/constants.js +6 -6
  213. package/src/core/BufferAttribute.js +4 -9
  214. package/src/core/BufferGeometry.js +48 -8
  215. package/src/core/Clock.js +1 -1
  216. package/src/core/EventDispatcher.js +52 -8
  217. package/src/core/InterleavedBuffer.js +4 -13
  218. package/src/core/Object3D.js +573 -3
  219. package/src/core/RenderTarget.js +22 -4
  220. package/src/core/RenderTarget3D.js +22 -0
  221. package/src/core/RenderTargetArray.js +22 -0
  222. package/src/extras/Controls.js +104 -0
  223. package/src/extras/DataUtils.js +48 -8
  224. package/src/extras/Earcut.js +18 -7
  225. package/src/extras/ImageUtils.js +18 -11
  226. package/src/extras/PMREMGenerator.js +40 -9
  227. package/src/extras/ShapeUtils.js +24 -2
  228. package/src/extras/TextureUtils.js +96 -10
  229. package/src/extras/core/Curve.js +153 -53
  230. package/src/extras/core/CurvePath.js +63 -22
  231. package/src/extras/core/Interpolations.js +29 -3
  232. package/src/extras/core/Path.js +134 -1
  233. package/src/extras/core/Shape.js +66 -3
  234. package/src/extras/core/ShapePath.js +76 -0
  235. package/src/extras/curves/ArcCurve.js +22 -0
  236. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  237. package/src/extras/curves/CubicBezierCurve.js +67 -0
  238. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  239. package/src/extras/curves/EllipseCurve.js +102 -0
  240. package/src/extras/curves/LineCurve.js +36 -0
  241. package/src/extras/curves/LineCurve3.js +36 -0
  242. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  243. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  244. package/src/extras/curves/SplineCurve.js +48 -0
  245. package/src/geometries/BoxGeometry.js +38 -0
  246. package/src/geometries/CapsuleGeometry.js +34 -0
  247. package/src/geometries/CircleGeometry.js +40 -0
  248. package/src/geometries/ConeGeometry.js +38 -0
  249. package/src/geometries/CylinderGeometry.js +50 -4
  250. package/src/geometries/DodecahedronGeometry.js +32 -0
  251. package/src/geometries/EdgesGeometry.js +30 -2
  252. package/src/geometries/ExtrudeGeometry.js +52 -0
  253. package/src/geometries/IcosahedronGeometry.js +32 -0
  254. package/src/geometries/LatheGeometry.js +43 -3
  255. package/src/geometries/OctahedronGeometry.js +32 -0
  256. package/src/geometries/PlaneGeometry.js +34 -0
  257. package/src/geometries/PolyhedronGeometry.js +29 -0
  258. package/src/geometries/RingGeometry.js +36 -0
  259. package/src/geometries/ShapeGeometry.js +37 -0
  260. package/src/geometries/SphereGeometry.js +37 -0
  261. package/src/geometries/TetrahedronGeometry.js +32 -0
  262. package/src/geometries/TorusGeometry.js +35 -0
  263. package/src/geometries/TorusKnotGeometry.js +38 -0
  264. package/src/geometries/TubeGeometry.js +49 -0
  265. package/src/geometries/WireframeGeometry.js +32 -0
  266. package/src/helpers/ArrowHelper.js +60 -3
  267. package/src/helpers/AxesHelper.js +28 -0
  268. package/src/helpers/Box3Helper.js +28 -0
  269. package/src/helpers/BoxHelper.js +43 -7
  270. package/src/helpers/CameraHelper.js +61 -18
  271. package/src/helpers/DirectionalLightHelper.js +52 -0
  272. package/src/helpers/GridHelper.js +26 -0
  273. package/src/helpers/HemisphereLightHelper.js +39 -0
  274. package/src/helpers/PlaneHelper.js +33 -0
  275. package/src/helpers/PointLightHelper.js +43 -0
  276. package/src/helpers/PolarGridHelper.js +30 -0
  277. package/src/helpers/SkeletonHelper.js +39 -2
  278. package/src/helpers/SpotLightHelper.js +40 -0
  279. package/src/lights/AmbientLight.js +25 -0
  280. package/src/lights/DirectionalLight.js +57 -0
  281. package/src/lights/DirectionalLightShadow.js +15 -0
  282. package/src/lights/HemisphereLight.js +32 -0
  283. package/src/lights/Light.js +36 -0
  284. package/src/lights/LightProbe.js +43 -0
  285. package/src/lights/LightShadow.js +159 -0
  286. package/src/lights/PointLight.js +59 -0
  287. package/src/lights/PointLightShadow.js +21 -0
  288. package/src/lights/RectAreaLight.js +59 -0
  289. package/src/lights/SpotLight.js +102 -0
  290. package/src/lights/SpotLightShadow.js +24 -2
  291. package/src/lights/webgpu/IESSpotLight.js +21 -0
  292. package/src/loaders/Loader.js +132 -0
  293. package/src/loaders/MaterialLoader.js +7 -1
  294. package/src/loaders/nodes/NodeLoader.js +189 -0
  295. package/src/loaders/nodes/NodeMaterialLoader.js +108 -0
  296. package/src/loaders/nodes/NodeObjectLoader.js +151 -0
  297. package/src/materials/LineDashedMaterial.js +0 -1
  298. package/src/materials/Material.js +469 -7
  299. package/src/materials/MeshPhongMaterial.js +1 -1
  300. package/src/materials/MeshPhysicalMaterial.js +2 -2
  301. package/src/materials/MeshStandardMaterial.js +2 -2
  302. package/src/{nodes/materials → materials/nodes}/Line2NodeMaterial.js +192 -82
  303. package/src/materials/nodes/LineBasicNodeMaterial.js +46 -0
  304. package/src/materials/nodes/LineDashedNodeMaterial.js +132 -0
  305. package/src/materials/nodes/MeshBasicNodeMaterial.js +133 -0
  306. package/src/materials/nodes/MeshLambertNodeMaterial.js +82 -0
  307. package/src/materials/nodes/MeshMatcapNodeMaterial.js +77 -0
  308. package/src/materials/nodes/MeshNormalNodeMaterial.js +67 -0
  309. package/src/materials/nodes/MeshPhongNodeMaterial.js +141 -0
  310. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +517 -0
  311. package/src/materials/nodes/MeshSSSNodeMaterial.js +175 -0
  312. package/src/materials/nodes/MeshStandardNodeMaterial.js +186 -0
  313. package/src/materials/nodes/MeshToonNodeMaterial.js +66 -0
  314. package/src/materials/nodes/NodeMaterial.js +1180 -0
  315. package/src/{nodes/materials/Materials.js → materials/nodes/NodeMaterials.js} +3 -2
  316. package/src/materials/nodes/PointsNodeMaterial.js +153 -0
  317. package/src/materials/nodes/ShadowNodeMaterial.js +67 -0
  318. package/src/materials/nodes/SpriteNodeMaterial.js +198 -0
  319. package/src/materials/nodes/VolumeNodeMaterial.js +72 -0
  320. package/src/materials/nodes/manager/NodeMaterialObserver.js +509 -0
  321. package/src/math/Box2.js +177 -0
  322. package/src/math/Box3.js +243 -0
  323. package/src/math/Color.js +343 -0
  324. package/src/math/ColorManagement.js +143 -102
  325. package/src/math/Cylindrical.js +65 -6
  326. package/src/math/Euler.js +137 -4
  327. package/src/math/Frustum.js +83 -0
  328. package/src/math/Interpolant.js +87 -8
  329. package/src/math/Line3.js +96 -2
  330. package/src/math/MathUtils.js +182 -19
  331. package/src/math/Matrix2.js +70 -0
  332. package/src/math/Matrix3.js +229 -4
  333. package/src/math/Matrix4.js +368 -3
  334. package/src/math/Plane.js +164 -2
  335. package/src/math/Quaternion.js +265 -9
  336. package/src/math/Ray.js +160 -0
  337. package/src/math/Sphere.js +147 -0
  338. package/src/math/Spherical.js +73 -11
  339. package/src/math/SphericalHarmonics3.js +112 -14
  340. package/src/math/Triangle.js +230 -2
  341. package/src/math/Vector2.js +396 -10
  342. package/src/math/Vector3.js +550 -13
  343. package/src/math/Vector4.js +415 -9
  344. package/src/math/interpolants/CubicInterpolant.js +10 -1
  345. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  346. package/src/math/interpolants/LinearInterpolant.js +13 -0
  347. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  348. package/src/nodes/Nodes.js +84 -166
  349. package/src/nodes/TSL.js +167 -0
  350. package/src/nodes/accessors/AccessorsUtils.js +39 -10
  351. package/src/nodes/accessors/Arrays.js +68 -0
  352. package/src/nodes/accessors/BatchNode.js +93 -26
  353. package/src/nodes/accessors/Bitangent.js +54 -0
  354. package/src/nodes/accessors/BufferAttributeNode.js +189 -11
  355. package/src/nodes/accessors/BufferNode.js +70 -5
  356. package/src/nodes/accessors/BuiltinNode.js +63 -0
  357. package/src/nodes/accessors/Camera.js +129 -0
  358. package/src/nodes/accessors/ClippingNode.js +152 -43
  359. package/src/nodes/accessors/CubeTextureNode.js +76 -13
  360. package/src/nodes/accessors/InstanceNode.js +118 -35
  361. package/src/nodes/accessors/InstancedMeshNode.js +50 -0
  362. package/src/nodes/accessors/Lights.js +129 -0
  363. package/src/nodes/accessors/MaterialNode.js +394 -58
  364. package/src/nodes/accessors/MaterialProperties.js +57 -1
  365. package/src/nodes/accessors/MaterialReferenceNode.js +60 -18
  366. package/src/nodes/accessors/ModelNode.js +159 -12
  367. package/src/nodes/accessors/ModelViewProjectionNode.js +10 -36
  368. package/src/nodes/accessors/MorphNode.js +60 -13
  369. package/src/nodes/accessors/Normal.js +156 -0
  370. package/src/nodes/accessors/Object3DNode.js +154 -35
  371. package/src/nodes/accessors/PointUVNode.js +35 -6
  372. package/src/nodes/accessors/Position.js +64 -0
  373. package/src/nodes/accessors/ReferenceBaseNode.js +357 -0
  374. package/src/nodes/accessors/ReferenceNode.js +243 -6
  375. package/src/nodes/accessors/ReflectVector.js +36 -0
  376. package/src/nodes/accessors/RendererReferenceNode.js +57 -7
  377. package/src/nodes/accessors/SceneNode.js +98 -6
  378. package/src/nodes/accessors/SkinningNode.js +214 -21
  379. package/src/nodes/accessors/StorageBufferNode.js +288 -28
  380. package/src/nodes/accessors/StorageTextureNode.js +139 -12
  381. package/src/nodes/accessors/Tangent.js +62 -0
  382. package/src/nodes/accessors/Texture3DNode.js +98 -12
  383. package/src/nodes/accessors/{TextureBicubicNode.js → TextureBicubic.js} +14 -34
  384. package/src/nodes/accessors/TextureNode.js +347 -34
  385. package/src/nodes/accessors/TextureSizeNode.js +51 -9
  386. package/src/nodes/accessors/UV.js +11 -0
  387. package/src/nodes/accessors/UniformArrayNode.js +241 -32
  388. package/src/nodes/accessors/UserDataNode.js +55 -7
  389. package/src/nodes/accessors/VelocityNode.js +223 -0
  390. package/src/nodes/accessors/VertexColorNode.js +45 -6
  391. package/src/nodes/code/CodeNode.js +108 -8
  392. package/src/nodes/code/ExpressionNode.js +38 -7
  393. package/src/nodes/code/FunctionCallNode.js +62 -11
  394. package/src/nodes/code/FunctionNode.js +54 -24
  395. package/src/nodes/code/ScriptableNode.js +241 -17
  396. package/src/nodes/code/ScriptableValueNode.js +93 -8
  397. package/src/nodes/core/ArrayNode.js +142 -0
  398. package/src/nodes/core/AssignNode.js +60 -12
  399. package/src/nodes/core/AttributeNode.js +55 -22
  400. package/src/nodes/core/BypassNode.js +59 -11
  401. package/src/nodes/core/CacheNode.js +64 -10
  402. package/src/nodes/core/ConstNode.js +38 -3
  403. package/src/nodes/core/ContextNode.js +87 -12
  404. package/src/nodes/core/IndexNode.js +102 -10
  405. package/src/nodes/core/InputNode.js +55 -3
  406. package/src/nodes/core/LightingModel.js +65 -5
  407. package/src/nodes/core/MRTNode.js +81 -7
  408. package/src/nodes/core/Node.js +368 -50
  409. package/src/nodes/core/NodeAttribute.js +38 -0
  410. package/src/nodes/core/NodeBuilder.js +1317 -83
  411. package/src/nodes/core/NodeCache.js +41 -2
  412. package/src/nodes/core/NodeCode.js +31 -0
  413. package/src/nodes/core/NodeFrame.js +123 -2
  414. package/src/nodes/core/NodeFunction.js +46 -0
  415. package/src/nodes/core/NodeFunctionInput.js +44 -0
  416. package/src/nodes/core/NodeParser.js +11 -0
  417. package/src/nodes/core/NodeUniform.js +52 -0
  418. package/src/nodes/core/NodeUtils.js +226 -6
  419. package/src/nodes/core/NodeVar.js +47 -1
  420. package/src/nodes/core/NodeVarying.js +28 -0
  421. package/src/nodes/core/OutputStructNode.js +61 -17
  422. package/src/nodes/core/ParameterNode.js +34 -4
  423. package/src/nodes/core/PropertyNode.js +296 -32
  424. package/src/nodes/core/StackNode.js +108 -8
  425. package/src/nodes/core/StructNode.js +120 -0
  426. package/src/nodes/core/StructType.js +13 -0
  427. package/src/nodes/core/StructTypeNode.js +116 -9
  428. package/src/nodes/core/TempNode.js +37 -7
  429. package/src/nodes/core/UniformGroupNode.js +98 -17
  430. package/src/nodes/core/UniformNode.js +72 -4
  431. package/src/nodes/core/VarNode.js +170 -13
  432. package/src/nodes/core/VaryingNode.js +109 -8
  433. package/src/nodes/core/constants.js +40 -0
  434. package/src/nodes/display/BlendModes.js +193 -0
  435. package/src/nodes/display/BumpMapNode.js +47 -10
  436. package/src/nodes/display/ColorAdjustment.js +141 -0
  437. package/src/nodes/display/ColorSpaceFunctions.js +54 -0
  438. package/src/nodes/display/ColorSpaceNode.js +147 -68
  439. package/src/nodes/display/FrontFacingNode.js +39 -6
  440. package/src/nodes/display/NormalMapNode.js +55 -13
  441. package/src/nodes/display/PassNode.js +420 -19
  442. package/src/nodes/display/PosterizeNode.js +40 -7
  443. package/src/nodes/display/RenderOutputNode.js +81 -13
  444. package/src/nodes/display/ScreenNode.js +286 -0
  445. package/src/nodes/display/ToneMappingFunctions.js +242 -0
  446. package/src/nodes/display/ToneMappingNode.js +68 -175
  447. package/src/nodes/display/ToonOutlinePassNode.js +183 -0
  448. package/src/nodes/display/ViewportDepthNode.js +210 -36
  449. package/src/nodes/display/ViewportDepthTextureNode.js +32 -9
  450. package/src/nodes/display/ViewportSharedTextureNode.js +32 -9
  451. package/src/nodes/display/ViewportTextureNode.js +68 -11
  452. package/src/nodes/fog/Fog.js +113 -0
  453. package/src/nodes/functions/BSDF/BRDF_GGX.js +4 -4
  454. package/src/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  455. package/src/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  456. package/src/nodes/functions/BSDF/DFGApprox.js +2 -2
  457. package/src/nodes/functions/BSDF/D_GGX.js +2 -2
  458. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +3 -3
  459. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  460. package/src/nodes/functions/BSDF/F_Schlick.js +2 -2
  461. package/src/nodes/functions/BSDF/LTC.js +50 -6
  462. package/src/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  463. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -2
  464. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  465. package/src/nodes/functions/BasicLightingModel.js +27 -6
  466. package/src/nodes/functions/PhongLightingModel.js +38 -8
  467. package/src/nodes/functions/PhysicalLightingModel.js +215 -51
  468. package/src/nodes/functions/ShadowMaskModel.js +24 -1
  469. package/src/nodes/functions/ToonLightingModel.js +24 -5
  470. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  471. package/src/nodes/functions/material/getAlphaHashThreshold.js +68 -0
  472. package/src/nodes/functions/material/getGeometryRoughness.js +10 -4
  473. package/src/nodes/functions/material/getParallaxCorrectNormal.js +37 -0
  474. package/src/nodes/functions/material/getRoughness.js +2 -2
  475. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  476. package/src/nodes/geometry/RangeNode.js +62 -7
  477. package/src/nodes/gpgpu/AtomicFunctionNode.js +280 -0
  478. package/src/nodes/gpgpu/BarrierNode.js +89 -0
  479. package/src/nodes/gpgpu/ComputeBuiltinNode.js +227 -0
  480. package/src/nodes/gpgpu/ComputeNode.js +124 -9
  481. package/src/nodes/gpgpu/WorkgroupInfoNode.js +208 -0
  482. package/src/nodes/lighting/AONode.js +24 -3
  483. package/src/nodes/lighting/AmbientLightNode.js +16 -8
  484. package/src/nodes/lighting/AnalyticLightNode.js +151 -231
  485. package/src/nodes/lighting/BasicEnvironmentNode.js +25 -3
  486. package/src/nodes/lighting/BasicLightMapNode.js +25 -5
  487. package/src/nodes/lighting/DirectionalLightNode.js +19 -20
  488. package/src/nodes/lighting/EnvironmentNode.js +34 -17
  489. package/src/nodes/lighting/HemisphereLightNode.js +42 -11
  490. package/src/nodes/lighting/IESSpotLightNode.js +18 -9
  491. package/src/nodes/lighting/IrradianceNode.js +23 -3
  492. package/src/nodes/lighting/LightProbeNode.js +29 -36
  493. package/src/nodes/lighting/LightUtils.js +12 -4
  494. package/src/nodes/lighting/LightingContextNode.js +70 -21
  495. package/src/nodes/lighting/LightingNode.js +22 -9
  496. package/src/nodes/lighting/LightsNode.js +309 -86
  497. package/src/nodes/lighting/PointLightNode.js +66 -32
  498. package/src/nodes/lighting/PointShadowNode.js +306 -0
  499. package/src/nodes/lighting/RectAreaLightNode.js +61 -25
  500. package/src/nodes/lighting/ShadowBaseNode.js +92 -0
  501. package/src/nodes/lighting/ShadowNode.js +812 -0
  502. package/src/nodes/lighting/SpotLightNode.js +73 -31
  503. package/src/nodes/materialx/MaterialXNodes.js +2 -2
  504. package/src/nodes/materialx/lib/mx_hsv.js +27 -22
  505. package/src/nodes/materialx/lib/mx_noise.js +70 -70
  506. package/src/nodes/materialx/lib/mx_transform_color.js +2 -2
  507. package/src/nodes/math/ConditionalNode.js +230 -0
  508. package/src/nodes/math/Hash.js +21 -0
  509. package/src/nodes/math/MathNode.js +812 -131
  510. package/src/nodes/math/MathUtils.js +47 -8
  511. package/src/nodes/math/OperatorNode.js +410 -66
  512. package/src/nodes/math/TriNoise3D.js +32 -32
  513. package/src/nodes/parsers/GLSLNodeFunction.js +16 -0
  514. package/src/nodes/parsers/GLSLNodeParser.js +11 -0
  515. package/src/nodes/pmrem/PMREMNode.js +188 -28
  516. package/src/nodes/pmrem/PMREMUtils.js +24 -24
  517. package/src/nodes/procedural/Checker.js +22 -0
  518. package/src/nodes/shapes/Shapes.js +32 -0
  519. package/src/nodes/tsl/TSLBase.js +31 -0
  520. package/src/nodes/{shadernode/ShaderNode.js → tsl/TSLCore.js} +114 -98
  521. package/src/nodes/utils/ArrayElementNode.js +45 -5
  522. package/src/nodes/utils/ConvertNode.js +39 -4
  523. package/src/nodes/utils/CubeMapNode.js +88 -8
  524. package/src/nodes/utils/Discard.js +24 -0
  525. package/src/nodes/utils/EquirectUVNode.js +39 -7
  526. package/src/nodes/utils/FlipNode.js +106 -0
  527. package/src/nodes/utils/FunctionOverloadingNode.js +61 -6
  528. package/src/nodes/utils/JoinNode.js +31 -3
  529. package/src/nodes/utils/LoopNode.js +95 -9
  530. package/src/nodes/utils/MatcapUVNode.js +27 -8
  531. package/src/nodes/utils/MaxMipLevelNode.js +57 -6
  532. package/src/nodes/utils/MemberNode.js +68 -0
  533. package/src/nodes/utils/Oscillators.js +41 -0
  534. package/src/nodes/utils/Packing.js +21 -0
  535. package/src/nodes/utils/PostProcessingUtils.js +95 -0
  536. package/src/nodes/utils/RTTNode.js +141 -9
  537. package/src/nodes/utils/ReflectorNode.js +295 -21
  538. package/src/nodes/utils/RemapNode.js +93 -10
  539. package/src/nodes/utils/RotateNode.js +48 -13
  540. package/src/nodes/utils/SetNode.js +50 -4
  541. package/src/nodes/utils/SplitNode.js +62 -6
  542. package/src/nodes/utils/SpriteSheetUVNode.js +56 -7
  543. package/src/nodes/utils/SpriteUtils.js +21 -5
  544. package/src/nodes/utils/StorageArrayElementNode.js +64 -12
  545. package/src/nodes/utils/Timer.js +73 -0
  546. package/src/nodes/utils/TriplanarTexturesNode.js +96 -10
  547. package/src/nodes/utils/UVUtils.js +27 -9
  548. package/src/nodes/utils/ViewportUtils.js +16 -4
  549. package/src/objects/BatchedMesh.js +808 -281
  550. package/src/objects/Bone.js +24 -0
  551. package/src/objects/ClippingGroup.js +68 -0
  552. package/src/objects/Group.js +24 -0
  553. package/src/objects/InstancedMesh.js +120 -2
  554. package/src/objects/LOD.js +120 -5
  555. package/src/objects/Line.js +89 -6
  556. package/src/objects/LineLoop.js +20 -0
  557. package/src/objects/LineSegments.js +18 -0
  558. package/src/objects/Mesh.js +82 -23
  559. package/src/objects/Points.js +62 -0
  560. package/src/objects/Skeleton.js +107 -2
  561. package/src/objects/SkinnedMesh.js +99 -5
  562. package/src/objects/Sprite.js +54 -0
  563. package/src/renderers/WebGLRenderer.js +274 -157
  564. package/src/renderers/common/Animation.js +109 -12
  565. package/src/renderers/common/Attributes.js +40 -0
  566. package/src/renderers/common/Backend.js +504 -44
  567. package/src/renderers/common/Background.js +67 -9
  568. package/src/renderers/common/BindGroup.js +45 -1
  569. package/src/renderers/common/Binding.js +35 -0
  570. package/src/renderers/common/Bindings.js +136 -19
  571. package/src/renderers/common/Buffer.js +49 -0
  572. package/src/renderers/common/BufferUtils.js +25 -0
  573. package/src/renderers/common/BundleGroup.js +83 -0
  574. package/src/renderers/common/ChainMap.js +45 -6
  575. package/src/renderers/common/ClippingContext.js +175 -80
  576. package/src/renderers/common/Color4.js +40 -0
  577. package/src/renderers/common/ComputePipeline.js +24 -0
  578. package/src/renderers/common/Constants.js +2 -1
  579. package/src/renderers/common/CubeRenderTarget.js +22 -3
  580. package/src/renderers/common/DataMap.js +37 -1
  581. package/src/renderers/common/Geometries.js +111 -14
  582. package/src/renderers/common/IndirectStorageBufferAttribute.js +38 -0
  583. package/src/renderers/common/Info.js +78 -35
  584. package/src/renderers/common/Lighting.js +73 -0
  585. package/src/renderers/common/Pipeline.js +22 -0
  586. package/src/renderers/common/Pipelines.js +148 -5
  587. package/src/renderers/common/PostProcessing.js +112 -11
  588. package/src/renderers/common/ProgrammableStage.js +60 -2
  589. package/src/renderers/common/QuadMesh.js +56 -5
  590. package/src/renderers/common/RenderBundle.js +14 -8
  591. package/src/renderers/common/RenderBundles.js +39 -10
  592. package/src/renderers/common/RenderContext.js +205 -7
  593. package/src/renderers/common/RenderContexts.js +59 -6
  594. package/src/renderers/common/RenderList.js +230 -21
  595. package/src/renderers/common/RenderLists.js +45 -6
  596. package/src/renderers/common/RenderObject.js +552 -41
  597. package/src/renderers/common/RenderObjects.js +118 -9
  598. package/src/renderers/common/RenderPipeline.js +24 -0
  599. package/src/renderers/common/Renderer.js +1537 -239
  600. package/src/renderers/common/RendererUtils.js +191 -0
  601. package/src/renderers/common/SampledTexture.js +132 -3
  602. package/src/renderers/common/Sampler.js +30 -0
  603. package/src/renderers/common/StorageBuffer.js +24 -0
  604. package/src/renderers/common/StorageBufferAttribute.js +31 -2
  605. package/src/renderers/common/StorageInstancedBufferAttribute.js +31 -2
  606. package/src/renderers/common/StorageTexture.js +38 -0
  607. package/src/renderers/common/Textures.js +142 -32
  608. package/src/renderers/common/TimestampQueryPool.js +98 -0
  609. package/src/renderers/common/Uniform.js +225 -3
  610. package/src/renderers/common/UniformBuffer.js +19 -0
  611. package/src/renderers/common/UniformsGroup.js +157 -6
  612. package/src/renderers/common/XRManager.js +1185 -0
  613. package/src/renderers/common/XRRenderTarget.js +74 -0
  614. package/src/renderers/common/extras/PMREMGenerator.js +211 -53
  615. package/src/renderers/common/nodes/NodeBuilderState.js +100 -6
  616. package/src/renderers/common/nodes/NodeLibrary.js +194 -0
  617. package/src/renderers/common/nodes/NodeSampledTexture.js +92 -4
  618. package/src/renderers/common/nodes/NodeSampler.js +28 -0
  619. package/src/renderers/common/nodes/NodeStorageBuffer.js +37 -3
  620. package/src/renderers/common/nodes/NodeUniform.js +285 -2
  621. package/src/renderers/common/nodes/NodeUniformBuffer.js +29 -0
  622. package/src/renderers/common/nodes/NodeUniformsGroup.js +31 -18
  623. package/src/renderers/common/nodes/Nodes.js +390 -70
  624. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +4 -24
  625. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +8 -0
  626. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  627. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +2 -2
  628. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +2 -2
  629. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +7 -7
  630. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  631. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  632. package/src/renderers/webgl/WebGLBackground.js +24 -1
  633. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  634. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  635. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  637. package/src/renderers/webgl/WebGLProgram.js +27 -29
  638. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  639. package/src/renderers/webgl/WebGLState.js +68 -11
  640. package/src/renderers/webgl/WebGLTextures.js +49 -10
  641. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  642. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  643. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  644. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  645. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  646. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  648. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  649. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  650. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  651. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  652. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  653. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  654. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  655. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  656. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  657. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  658. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  659. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  660. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  661. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  662. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  663. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  664. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  665. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  666. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  667. package/src/renderers/webxr/WebXRManager.js +54 -32
  668. package/src/scenes/Fog.js +60 -0
  669. package/src/scenes/FogExp2.js +51 -0
  670. package/src/scenes/Scene.js +87 -0
  671. package/src/textures/Data3DTexture.js +2 -2
  672. package/src/textures/DepthTexture.js +2 -0
  673. package/src/textures/Source.js +2 -2
  674. package/src/textures/Texture.js +368 -5
  675. package/src/textures/VideoFrameTexture.js +35 -0
  676. package/src/utils.js +33 -1
  677. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  678. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  679. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  680. package/examples/jsm/controls/Controls.js +0 -32
  681. package/examples/jsm/exporters/MMDExporter.js +0 -217
  682. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  683. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  684. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  685. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  686. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  687. package/examples/jsm/loaders/TiltLoader.js +0 -520
  688. package/examples/jsm/objects/InstancedPoints.js +0 -21
  689. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  690. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  691. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  692. package/src/nodes/accessors/BitangentNode.js +0 -13
  693. package/src/nodes/accessors/CameraNode.js +0 -19
  694. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  695. package/src/nodes/accessors/NormalNode.js +0 -14
  696. package/src/nodes/accessors/PositionNode.js +0 -10
  697. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  698. package/src/nodes/accessors/TangentNode.js +0 -23
  699. package/src/nodes/accessors/UVNode.js +0 -3
  700. package/src/nodes/core/NodeKeywords.js +0 -80
  701. package/src/nodes/core/UniformGroup.js +0 -13
  702. package/src/nodes/display/AfterImageNode.js +0 -152
  703. package/src/nodes/display/AnamorphicNode.js +0 -145
  704. package/src/nodes/display/BlendModeNode.js +0 -128
  705. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  706. package/src/nodes/display/DenoiseNode.js +0 -198
  707. package/src/nodes/display/DotScreenNode.js +0 -75
  708. package/src/nodes/display/FXAANode.js +0 -327
  709. package/src/nodes/display/FilmNode.js +0 -52
  710. package/src/nodes/display/GTAONode.js +0 -324
  711. package/src/nodes/display/GaussianBlurNode.js +0 -207
  712. package/src/nodes/display/Lut3DNode.js +0 -53
  713. package/src/nodes/display/RGBShiftNode.js +0 -49
  714. package/src/nodes/display/SepiaNode.js +0 -18
  715. package/src/nodes/display/TransitionNode.js +0 -76
  716. package/src/nodes/display/ViewportNode.js +0 -137
  717. package/src/nodes/fog/FogExp2Node.js +0 -34
  718. package/src/nodes/fog/FogNode.js +0 -48
  719. package/src/nodes/fog/FogRangeNode.js +0 -35
  720. package/src/nodes/lighting/LightNode.js +0 -57
  721. package/src/nodes/loaders/NodeLoader.js +0 -110
  722. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  723. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  724. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  725. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  726. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  727. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  728. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  729. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  730. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  731. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  732. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  733. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  734. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  735. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  736. package/src/nodes/materials/NodeMaterial.js +0 -680
  737. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  738. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  739. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  740. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  741. package/src/nodes/math/CondNode.js +0 -139
  742. package/src/nodes/math/HashNode.js +0 -34
  743. package/src/nodes/procedural/CheckerNode.js +0 -42
  744. package/src/nodes/utils/DiscardNode.js +0 -28
  745. package/src/nodes/utils/OscNode.js +0 -81
  746. package/src/nodes/utils/PackingNode.js +0 -55
  747. package/src/nodes/utils/TimerNode.js +0 -94
@@ -7,16 +7,48 @@ import { BufferGeometry } from '../core/BufferGeometry.js';
7
7
 
8
8
  const _vector = /*@__PURE__*/ new Vector3();
9
9
 
10
+ /**
11
+ * This displays a cone shaped helper object for a {@link SpotLight}.
12
+ *
13
+ * ```js
14
+ * const spotLight = new THREE.SpotLight( 0xffffff );
15
+ * spotLight.position.set( 10, 10, 10 );
16
+ * scene.add( spotLight );
17
+ *
18
+ * const spotLightHelper = new THREE.SpotLightHelper( spotLight );
19
+ * scene.add( spotLightHelper );
20
+ * ```
21
+ *
22
+ * @augments Object3D
23
+ */
10
24
  class SpotLightHelper extends Object3D {
11
25
 
26
+ /**
27
+ * Constructs a new spot light helper.
28
+ *
29
+ * @param {HemisphereLight} light - The light to be visualized.
30
+ * @param {number|Color|string} [color] - The helper's color. If not set, the helper will take
31
+ * the color of the light.
32
+ */
12
33
  constructor( light, color ) {
13
34
 
14
35
  super();
15
36
 
37
+ /**
38
+ * The light being visualized.
39
+ *
40
+ * @type {SpotLight}
41
+ */
16
42
  this.light = light;
17
43
 
18
44
  this.matrixAutoUpdate = false;
19
45
 
46
+ /**
47
+ * The color parameter passed in the constructor.
48
+ * If not set, the helper will take the color of the light.
49
+ *
50
+ * @type {number|Color|string}
51
+ */
20
52
  this.color = color;
21
53
 
22
54
  this.type = 'SpotLightHelper';
@@ -54,6 +86,10 @@ class SpotLightHelper extends Object3D {
54
86
 
55
87
  }
56
88
 
89
+ /**
90
+ * Frees the GPU-related resources allocated by this instance. Call this
91
+ * method whenever this instance is no longer used in your app.
92
+ */
57
93
  dispose() {
58
94
 
59
95
  this.cone.geometry.dispose();
@@ -61,6 +97,10 @@ class SpotLightHelper extends Object3D {
61
97
 
62
98
  }
63
99
 
100
+ /**
101
+ * Updates the helper to match the position and direction of the
102
+ * light being visualized.
103
+ */
64
104
  update() {
65
105
 
66
106
  this.light.updateWorldMatrix( true, false );
@@ -1,11 +1,36 @@
1
1
  import { Light } from './Light.js';
2
2
 
3
+ /**
4
+ * This light globally illuminates all objects in the scene equally.
5
+ *
6
+ * It cannot be used to cast shadows as it does not have a direction.
7
+ *
8
+ * ```js
9
+ * const light = new THREE.AmbientLight( 0x404040 ); // soft white light
10
+ * scene.add( light );
11
+ * ```
12
+ *
13
+ * @augments Light
14
+ */
3
15
  class AmbientLight extends Light {
4
16
 
17
+ /**
18
+ * Constructs a new ambient light.
19
+ *
20
+ * @param {(number|Color|string)} [color=0xffffff] - The light's color.
21
+ * @param {number} [intensity=1] - The light's strength/intensity.
22
+ */
5
23
  constructor( color, intensity ) {
6
24
 
7
25
  super( color, intensity );
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.isAmbientLight = true;
10
35
 
11
36
  this.type = 'AmbientLight';
@@ -2,12 +2,52 @@ import { Light } from './Light.js';
2
2
  import { DirectionalLightShadow } from './DirectionalLightShadow.js';
3
3
  import { Object3D } from '../core/Object3D.js';
4
4
 
5
+ /**
6
+ * A light that gets emitted in a specific direction. This light will behave
7
+ * as though it is infinitely far away and the rays produced from it are all
8
+ * parallel. The common use case for this is to simulate daylight; the sun is
9
+ * far enough away that its position can be considered to be infinite, and
10
+ * all light rays coming from it are parallel.
11
+ *
12
+ * A common point of confusion for directional lights is that setting the
13
+ * rotation has no effect. This is because three.js's DirectionalLight is the
14
+ * equivalent to what is often called a 'Target Direct Light' in other
15
+ * applications.
16
+ *
17
+ * This means that its direction is calculated as pointing from the light's
18
+ * {@link Object3D#position} to the {@link DirectionalLight#target} position
19
+ * (as opposed to a 'Free Direct Light' that just has a rotation
20
+ * component).
21
+ *
22
+ * This light can cast shadows - see the {@link DirectionalLightShadow} for details.
23
+ *
24
+ * ```js
25
+ * // White directional light at half intensity shining from the top.
26
+ * const directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );
27
+ * scene.add( directionalLight );
28
+ * ```
29
+ *
30
+ * @augments Light
31
+ */
5
32
  class DirectionalLight extends Light {
6
33
 
34
+ /**
35
+ * Constructs a new directional light.
36
+ *
37
+ * @param {(number|Color|string)} [color=0xffffff] - The light's color.
38
+ * @param {number} [intensity=1] - The light's strength/intensity.
39
+ */
7
40
  constructor( color, intensity ) {
8
41
 
9
42
  super( color, intensity );
10
43
 
44
+ /**
45
+ * This flag can be used for type testing.
46
+ *
47
+ * @type {boolean}
48
+ * @readonly
49
+ * @default true
50
+ */
11
51
  this.isDirectionalLight = true;
12
52
 
13
53
  this.type = 'DirectionalLight';
@@ -15,8 +55,25 @@ class DirectionalLight extends Light {
15
55
  this.position.copy( Object3D.DEFAULT_UP );
16
56
  this.updateMatrix();
17
57
 
58
+ /**
59
+ * The directional light points from its position to the
60
+ * target's position.
61
+ *
62
+ * For the target's position to be changed to anything other
63
+ * than the default, it must be added to the scene.
64
+ *
65
+ * It is also possible to set the target to be another 3D object
66
+ * in the scene. The light will now track the target object.
67
+ *
68
+ * @type {Object3D}
69
+ */
18
70
  this.target = new Object3D();
19
71
 
72
+ /**
73
+ * This property holds the light's shadow configuration.
74
+ *
75
+ * @type {DirectionalLightShadow}
76
+ */
20
77
  this.shadow = new DirectionalLightShadow();
21
78
 
22
79
  }
@@ -1,12 +1,27 @@
1
1
  import { LightShadow } from './LightShadow.js';
2
2
  import { OrthographicCamera } from '../cameras/OrthographicCamera.js';
3
3
 
4
+ /**
5
+ * Represents the shadow configuration of directional lights.
6
+ *
7
+ * @augments LightShadow
8
+ */
4
9
  class DirectionalLightShadow extends LightShadow {
5
10
 
11
+ /**
12
+ * Constructs a new directional light shadow.
13
+ */
6
14
  constructor() {
7
15
 
8
16
  super( new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );
9
17
 
18
+ /**
19
+ * This flag can be used for type testing.
20
+ *
21
+ * @type {boolean}
22
+ * @readonly
23
+ * @default true
24
+ */
10
25
  this.isDirectionalLightShadow = true;
11
26
 
12
27
  }
@@ -2,12 +2,39 @@ import { Light } from './Light.js';
2
2
  import { Color } from '../math/Color.js';
3
3
  import { Object3D } from '../core/Object3D.js';
4
4
 
5
+ /**
6
+ * A light source positioned directly above the scene, with color fading from
7
+ * the sky color to the ground color.
8
+ *
9
+ * This light cannot be used to cast shadows.
10
+ *
11
+ * ```js
12
+ * const light = new THREE.HemisphereLight( 0xffffbb, 0x080820, 1 );
13
+ * scene.add( light );
14
+ * ```
15
+ *
16
+ * @augments Light
17
+ */
5
18
  class HemisphereLight extends Light {
6
19
 
20
+ /**
21
+ * Constructs a new hemisphere light.
22
+ *
23
+ * @param {(number|Color|string)} [skyColor=0xffffff] - The light's sky color.
24
+ * @param {(number|Color|string)} [groundColor=0xffffff] - The light's ground color.
25
+ * @param {number} [intensity=1] - The light's strength/intensity.
26
+ */
7
27
  constructor( skyColor, groundColor, intensity ) {
8
28
 
9
29
  super( skyColor, intensity );
10
30
 
31
+ /**
32
+ * This flag can be used for type testing.
33
+ *
34
+ * @type {boolean}
35
+ * @readonly
36
+ * @default true
37
+ */
11
38
  this.isHemisphereLight = true;
12
39
 
13
40
  this.type = 'HemisphereLight';
@@ -15,6 +42,11 @@ class HemisphereLight extends Light {
15
42
  this.position.copy( Object3D.DEFAULT_UP );
16
43
  this.updateMatrix();
17
44
 
45
+ /**
46
+ * The light's ground color.
47
+ *
48
+ * @type {Color}
49
+ */
18
50
  this.groundColor = new Color( groundColor );
19
51
 
20
52
  }
@@ -1,21 +1,57 @@
1
1
  import { Object3D } from '../core/Object3D.js';
2
2
  import { Color } from '../math/Color.js';
3
3
 
4
+ /**
5
+ * Abstract base class for lights - all other light types inherit the
6
+ * properties and methods described here.
7
+ *
8
+ * @abstract
9
+ * @augments Object3D
10
+ */
4
11
  class Light extends Object3D {
5
12
 
13
+ /**
14
+ * Constructs a new light.
15
+ *
16
+ * @param {(number|Color|string)} [color=0xffffff] - The light's color.
17
+ * @param {number} [intensity=1] - The light's strength/intensity.
18
+ */
6
19
  constructor( color, intensity = 1 ) {
7
20
 
8
21
  super();
9
22
 
23
+ /**
24
+ * This flag can be used for type testing.
25
+ *
26
+ * @type {boolean}
27
+ * @readonly
28
+ * @default true
29
+ */
10
30
  this.isLight = true;
11
31
 
12
32
  this.type = 'Light';
13
33
 
34
+ /**
35
+ * The light's color.
36
+ *
37
+ * @type {Color}
38
+ */
14
39
  this.color = new Color( color );
40
+
41
+ /**
42
+ * The light's intensity.
43
+ *
44
+ * @type {number}
45
+ * @default 1
46
+ */
15
47
  this.intensity = intensity;
16
48
 
17
49
  }
18
50
 
51
+ /**
52
+ * Frees the GPU-related resources allocated by this instance. Call this
53
+ * method whenever this instance is no longer used in your app.
54
+ */
19
55
  dispose() {
20
56
 
21
57
  // Empty here in base class; some subclasses override.
@@ -1,14 +1,51 @@
1
1
  import { SphericalHarmonics3 } from '../math/SphericalHarmonics3.js';
2
2
  import { Light } from './Light.js';
3
3
 
4
+ /**
5
+ * Light probes are an alternative way of adding light to a 3D scene. Unlike
6
+ * classical light sources (e.g. directional, point or spot lights), light
7
+ * probes do not emit light. Instead they store information about light
8
+ * passing through 3D space. During rendering, the light that hits a 3D
9
+ * object is approximated by using the data from the light probe.
10
+ *
11
+ * Light probes are usually created from (radiance) environment maps. The
12
+ * class {@link LightProbeGenerator} can be used to create light probes from
13
+ * cube textures or render targets. However, light estimation data could also
14
+ * be provided in other forms e.g. by WebXR. This enables the rendering of
15
+ * augmented reality content that reacts to real world lighting.
16
+ *
17
+ * The current probe implementation in three.js supports so-called diffuse
18
+ * light probes. This type of light probe is functionally equivalent to an
19
+ * irradiance environment map.
20
+ *
21
+ * @augments Light
22
+ */
4
23
  class LightProbe extends Light {
5
24
 
25
+ /**
26
+ * Constructs a new light probe.
27
+ *
28
+ * @param {SphericalHarmonics3} sh - The spherical harmonics which represents encoded lighting information.
29
+ * @param {number} [intensity=1] - The light's strength/intensity.
30
+ */
6
31
  constructor( sh = new SphericalHarmonics3(), intensity = 1 ) {
7
32
 
8
33
  super( undefined, intensity );
9
34
 
35
+ /**
36
+ * This flag can be used for type testing.
37
+ *
38
+ * @type {boolean}
39
+ * @readonly
40
+ * @default true
41
+ */
10
42
  this.isLightProbe = true;
11
43
 
44
+ /**
45
+ * A light probe uses spherical harmonics to encode lighting information.
46
+ *
47
+ * @type {SphericalHarmonics3}
48
+ */
12
49
  this.sh = sh;
13
50
 
14
51
  }
@@ -23,6 +60,12 @@ class LightProbe extends Light {
23
60
 
24
61
  }
25
62
 
63
+ /**
64
+ * Deserializes the light prove from the given JSON.
65
+ *
66
+ * @param {Object} json - The JSON holding the serialized light probe.
67
+ * @return {LightProbe} A reference to this light probe.
68
+ */
26
69
  fromJSON( json ) {
27
70
 
28
71
  this.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();
@@ -8,26 +8,137 @@ const _projScreenMatrix = /*@__PURE__*/ new Matrix4();
8
8
  const _lightPositionWorld = /*@__PURE__*/ new Vector3();
9
9
  const _lookTarget = /*@__PURE__*/ new Vector3();
10
10
 
11
+ /**
12
+ * Abstract base class for light shadow classes. These classes
13
+ * represent the shadow configuration for different ligth types.
14
+ *
15
+ * @abstract
16
+ */
11
17
  class LightShadow {
12
18
 
19
+ /**
20
+ * Constructs a new light shadow.
21
+ *
22
+ * @param {Camera} camera - The light's view of the world.
23
+ */
13
24
  constructor( camera ) {
14
25
 
26
+ /**
27
+ * The light's view of the world.
28
+ *
29
+ * @type {Camera}
30
+ */
15
31
  this.camera = camera;
16
32
 
33
+ /**
34
+ * The intensity of the shadow. The default is `1`.
35
+ * Valid values are in the range `[0, 1]`.
36
+ *
37
+ * @type {number}
38
+ * @default 1
39
+ */
17
40
  this.intensity = 1;
18
41
 
42
+ /**
43
+ * Shadow map bias, how much to add or subtract from the normalized depth
44
+ * when deciding whether a surface is in shadow.
45
+ *
46
+ * The default is `0`. Very tiny adjustments here (in the order of `0.0001`)
47
+ * may help reduce artifacts in shadows.
48
+ *
49
+ * @type {number}
50
+ * @default 0
51
+ */
19
52
  this.bias = 0;
53
+
54
+ /**
55
+ * Defines how much the position used to query the shadow map is offset along
56
+ * the object normal. The default is `0`. Increasing this value can be used to
57
+ * reduce shadow acne especially in large scenes where light shines onto
58
+ * geometry at a shallow angle. The cost is that shadows may appear distorted.
59
+ *
60
+ * @type {number}
61
+ * @default 0
62
+ */
20
63
  this.normalBias = 0;
64
+
65
+ /**
66
+ * Setting this to values greater than 1 will blur the edges of the shadow.
67
+ * High values will cause unwanted banding effects in the shadows - a greater
68
+ * map size will allow for a higher value to be used here before these effects
69
+ * become visible.
70
+ *
71
+ * The property has no effect when the shadow map type is `PCFSoftShadowMap` and
72
+ * and it is recommended to increase softness by decreasing the shadow map size instead.
73
+ *
74
+ * The property has no effect when the shadow map type is `BasicShadowMap`.
75
+ *
76
+ * @type {number}
77
+ * @default 1
78
+ */
21
79
  this.radius = 1;
80
+
81
+ /**
82
+ * The amount of samples to use when blurring a VSM shadow map.
83
+ *
84
+ * @type {number}
85
+ * @default 8
86
+ */
22
87
  this.blurSamples = 8;
23
88
 
89
+ /**
90
+ * Defines the width and height of the shadow map. Higher values give better quality
91
+ * shadows at the cost of computation time. Values must be powers of two.
92
+ *
93
+ * @type {Vector2}
94
+ * @default (512,512)
95
+ */
24
96
  this.mapSize = new Vector2( 512, 512 );
25
97
 
98
+ /**
99
+ * The depth map generated using the internal camera; a location beyond a
100
+ * pixel's depth is in shadow. Computed internally during rendering.
101
+ *
102
+ * @type {?RenderTarget}
103
+ * @default null
104
+ */
26
105
  this.map = null;
106
+
107
+ /**
108
+ * The distribution map generated using the internal camera; an occlusion is
109
+ * calculated based on the distribution of depths. Computed internally during
110
+ * rendering.
111
+ *
112
+ * @type {?RenderTarget}
113
+ * @default null
114
+ */
27
115
  this.mapPass = null;
116
+
117
+ /**
118
+ * Model to shadow camera space, to compute location and depth in shadow map.
119
+ * This is computed internally during rendering.
120
+ *
121
+ * @type {Matrix4}
122
+ */
28
123
  this.matrix = new Matrix4();
29
124
 
125
+ /**
126
+ * Enables automatic updates of the light's shadow. If you do not require dynamic
127
+ * lighting / shadows, you may set this to `false`.
128
+ *
129
+ * @type {boolean}
130
+ * @default true
131
+ */
30
132
  this.autoUpdate = true;
133
+
134
+ /**
135
+ * When set to `true`, shadow maps will be updated in the next `render` call.
136
+ * If you have set {@link LightShadow#autoUpdate} to `false`, you will need to
137
+ * set this property to `true` and then make a render call to update the light's shadow.
138
+ *
139
+ * @type {boolean}
140
+ * @default false
141
+ */
31
142
  this.needsUpdate = false;
32
143
 
33
144
  this._frustum = new Frustum();
@@ -43,18 +154,34 @@ class LightShadow {
43
154
 
44
155
  }
45
156
 
157
+ /**
158
+ * Used internally by the renderer to get the number of viewports that need
159
+ * to be rendered for this shadow.
160
+ *
161
+ * @return {number} The viewport count.
162
+ */
46
163
  getViewportCount() {
47
164
 
48
165
  return this._viewportCount;
49
166
 
50
167
  }
51
168
 
169
+ /**
170
+ * Gets the shadow cameras frustum. Used internally by the renderer to cull objects.
171
+ *
172
+ * @return {Frustum} The shadow camera frustum.
173
+ */
52
174
  getFrustum() {
53
175
 
54
176
  return this._frustum;
55
177
 
56
178
  }
57
179
 
180
+ /**
181
+ * Update the matrices for the camera and shadow, used internally by the renderer.
182
+ *
183
+ * @param {Light} light - The light for which the shadow is being rendered.
184
+ */
58
185
  updateMatrices( light ) {
59
186
 
60
187
  const shadowCamera = this.camera;
@@ -81,18 +208,33 @@ class LightShadow {
81
208
 
82
209
  }
83
210
 
211
+ /**
212
+ * Returns a viewport definition for the given viewport index.
213
+ *
214
+ * @param {number} viewportIndex - The viewport index.
215
+ * @return {Vector4} The viewport.
216
+ */
84
217
  getViewport( viewportIndex ) {
85
218
 
86
219
  return this._viewports[ viewportIndex ];
87
220
 
88
221
  }
89
222
 
223
+ /**
224
+ * Returns the frame extends.
225
+ *
226
+ * @return {Vector2} The frame extends.
227
+ */
90
228
  getFrameExtents() {
91
229
 
92
230
  return this._frameExtents;
93
231
 
94
232
  }
95
233
 
234
+ /**
235
+ * Frees the GPU-related resources allocated by this instance. Call this
236
+ * method whenever this instance is no longer used in your app.
237
+ */
96
238
  dispose() {
97
239
 
98
240
  if ( this.map ) {
@@ -109,6 +251,12 @@ class LightShadow {
109
251
 
110
252
  }
111
253
 
254
+ /**
255
+ * Copies the values of the given light shadow instance to this instance.
256
+ *
257
+ * @param {LightShadow} source - The light shadow to copy.
258
+ * @return {LightShadow} A reference to this light shadow instance.
259
+ */
112
260
  copy( source ) {
113
261
 
114
262
  this.camera = source.camera.clone();
@@ -124,12 +272,23 @@ class LightShadow {
124
272
 
125
273
  }
126
274
 
275
+ /**
276
+ * Returns a new light shadow instance with copied values from this instance.
277
+ *
278
+ * @return {LightShadow} A clone of this instance.
279
+ */
127
280
  clone() {
128
281
 
129
282
  return new this.constructor().copy( this );
130
283
 
131
284
  }
132
285
 
286
+ /**
287
+ * Serializes the light shadow into JSON.
288
+ *
289
+ * @return {Object} A JSON object representing the serialized light shadow.
290
+ * @see {@link ObjectLoader#parse}
291
+ */
133
292
  toJSON() {
134
293
 
135
294
  const object = {};
@@ -1,23 +1,82 @@
1
1
  import { Light } from './Light.js';
2
2
  import { PointLightShadow } from './PointLightShadow.js';
3
3
 
4
+ /**
5
+ * A light that gets emitted from a single point in all directions. A common
6
+ * use case for this is to replicate the light emitted from a bare
7
+ * lightbulb.
8
+ *
9
+ * This light can cast shadows - see the {@link PointLightShadow} for details.
10
+ *
11
+ * ```js
12
+ * const light = new THREE.PointLight( 0xff0000, 1, 100 );
13
+ * light.position.set( 50, 50, 50 );
14
+ * scene.add( light );
15
+ * ```
16
+ *
17
+ * @augments Light
18
+ */
4
19
  class PointLight extends Light {
5
20
 
21
+ /**
22
+ * Constructs a new point light.
23
+ *
24
+ * @param {(number|Color|string)} [color=0xffffff] - The light's color.
25
+ * @param {number} [intensity=1] - The light's strength/intensity measured in candela (cd).
26
+ * @param {number} [distance=0] - Maximum range of the light. `0` means no limit.
27
+ * @param {number} [decay=2] - The amount the light dims along the distance of the light.
28
+ */
6
29
  constructor( color, intensity, distance = 0, decay = 2 ) {
7
30
 
8
31
  super( color, intensity );
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.isPointLight = true;
11
41
 
12
42
  this.type = 'PointLight';
13
43
 
44
+ /**
45
+ * When distance is zero, light will attenuate according to inverse-square
46
+ * law to infinite distance. When distance is non-zero, light will attenuate
47
+ * according to inverse-square law until near the distance cutoff, where it
48
+ * will then attenuate quickly and smoothly to 0. Inherently, cutoffs are not
49
+ * physically correct.
50
+ *
51
+ * @type {number}
52
+ * @default 0
53
+ */
14
54
  this.distance = distance;
55
+
56
+ /**
57
+ * The amount the light dims along the distance of the light. In context of
58
+ * physically-correct rendering the default value should not be changed.
59
+ *
60
+ * @type {number}
61
+ * @default 2
62
+ */
15
63
  this.decay = decay;
16
64
 
65
+ /**
66
+ * This property holds the light's shadow configuration.
67
+ *
68
+ * @type {PointLightShadow}
69
+ */
17
70
  this.shadow = new PointLightShadow();
18
71
 
19
72
  }
20
73
 
74
+ /**
75
+ * The light's power. Power is the luminous power of the light measured in lumens (lm).
76
+ * Changing the power will also change the light's intensity.
77
+ *
78
+ * @type {number}
79
+ */
21
80
  get power() {
22
81
 
23
82
  // compute the light's luminous power (in lumens) from its intensity (in candela)