@plastic-software/three 0.167.3 → 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 (748) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/build/three.cjs +36277 -24023
  4. package/build/three.core.js +48830 -0
  5. package/build/three.core.min.js +6 -0
  6. package/build/three.module.js +10175 -46743
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +550 -0
  9. package/build/three.tsl.min.js +6 -0
  10. package/build/three.webgpu.js +44348 -50670
  11. package/build/three.webgpu.min.js +2 -2
  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/points.glsl.js +2 -0
  631. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  632. package/src/renderers/webgl/WebGLAttributes.js +45 -14
  633. package/src/renderers/webgl/WebGLBackground.js +24 -1
  634. package/src/renderers/webgl/WebGLBufferRenderer.js +2 -6
  635. package/src/renderers/webgl/WebGLCapabilities.js +2 -0
  636. package/src/renderers/webgl/WebGLGeometries.js +0 -28
  637. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +2 -6
  638. package/src/renderers/webgl/WebGLProgram.js +27 -29
  639. package/src/renderers/webgl/WebGLPrograms.js +24 -16
  640. package/src/renderers/webgl/WebGLState.js +68 -11
  641. package/src/renderers/webgl/WebGLTextures.js +49 -10
  642. package/src/renderers/webgl-fallback/WebGLBackend.js +1055 -238
  643. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +5 -10
  644. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +425 -48
  645. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +64 -1
  646. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +28 -0
  647. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +45 -0
  648. package/src/renderers/webgl-fallback/utils/WebGLState.js +419 -14
  649. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +281 -59
  650. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +367 -0
  651. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +43 -0
  652. package/src/renderers/webgpu/WebGPUBackend.js +816 -236
  653. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +78 -0
  654. package/src/renderers/webgpu/WebGPURenderer.js +45 -6
  655. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +63 -0
  656. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +97 -0
  657. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +954 -147
  658. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +29 -4
  659. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +11 -0
  660. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +147 -31
  661. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +213 -31
  662. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +146 -28
  663. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +161 -7
  664. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +333 -50
  665. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +287 -0
  666. package/src/renderers/webgpu/utils/WebGPUUtils.js +131 -3
  667. package/src/renderers/webxr/WebXRDepthSensing.js +1 -1
  668. package/src/renderers/webxr/WebXRManager.js +54 -32
  669. package/src/scenes/Fog.js +60 -0
  670. package/src/scenes/FogExp2.js +51 -0
  671. package/src/scenes/Scene.js +87 -0
  672. package/src/textures/Data3DTexture.js +2 -2
  673. package/src/textures/DepthTexture.js +2 -0
  674. package/src/textures/Source.js +2 -2
  675. package/src/textures/Texture.js +368 -5
  676. package/src/textures/VideoFrameTexture.js +35 -0
  677. package/src/utils.js +33 -1
  678. package/examples/jsm/animation/MMDAnimationHelper.js +0 -1207
  679. package/examples/jsm/animation/MMDPhysics.js +0 -1406
  680. package/examples/jsm/cameras/CinematicCamera.js +0 -208
  681. package/examples/jsm/controls/Controls.js +0 -32
  682. package/examples/jsm/exporters/MMDExporter.js +0 -217
  683. package/examples/jsm/geometries/InstancedPointsGeometry.js +0 -174
  684. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  685. package/examples/jsm/libs/mmdparser.module.js +0 -11530
  686. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  687. package/examples/jsm/loaders/MMDLoader.js +0 -2295
  688. package/examples/jsm/loaders/TiltLoader.js +0 -520
  689. package/examples/jsm/objects/InstancedPoints.js +0 -21
  690. package/examples/jsm/shaders/MMDToonShader.js +0 -134
  691. package/examples/jsm/utils/GPUStatsPanel.js +0 -95
  692. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  693. package/src/nodes/accessors/BitangentNode.js +0 -13
  694. package/src/nodes/accessors/CameraNode.js +0 -19
  695. package/src/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  696. package/src/nodes/accessors/NormalNode.js +0 -14
  697. package/src/nodes/accessors/PositionNode.js +0 -10
  698. package/src/nodes/accessors/ReflectVectorNode.js +0 -10
  699. package/src/nodes/accessors/TangentNode.js +0 -23
  700. package/src/nodes/accessors/UVNode.js +0 -3
  701. package/src/nodes/core/NodeKeywords.js +0 -80
  702. package/src/nodes/core/UniformGroup.js +0 -13
  703. package/src/nodes/display/AfterImageNode.js +0 -152
  704. package/src/nodes/display/AnamorphicNode.js +0 -145
  705. package/src/nodes/display/BlendModeNode.js +0 -128
  706. package/src/nodes/display/ColorAdjustmentNode.js +0 -104
  707. package/src/nodes/display/DenoiseNode.js +0 -198
  708. package/src/nodes/display/DotScreenNode.js +0 -75
  709. package/src/nodes/display/FXAANode.js +0 -327
  710. package/src/nodes/display/FilmNode.js +0 -52
  711. package/src/nodes/display/GTAONode.js +0 -324
  712. package/src/nodes/display/GaussianBlurNode.js +0 -207
  713. package/src/nodes/display/Lut3DNode.js +0 -53
  714. package/src/nodes/display/RGBShiftNode.js +0 -49
  715. package/src/nodes/display/SepiaNode.js +0 -18
  716. package/src/nodes/display/TransitionNode.js +0 -76
  717. package/src/nodes/display/ViewportNode.js +0 -137
  718. package/src/nodes/fog/FogExp2Node.js +0 -34
  719. package/src/nodes/fog/FogNode.js +0 -48
  720. package/src/nodes/fog/FogRangeNode.js +0 -35
  721. package/src/nodes/lighting/LightNode.js +0 -57
  722. package/src/nodes/loaders/NodeLoader.js +0 -110
  723. package/src/nodes/loaders/NodeMaterialLoader.js +0 -60
  724. package/src/nodes/loaders/NodeObjectLoader.js +0 -71
  725. package/src/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  726. package/src/nodes/materials/LineBasicNodeMaterial.js +0 -28
  727. package/src/nodes/materials/LineDashedNodeMaterial.js +0 -55
  728. package/src/nodes/materials/MeshBasicNodeMaterial.js +0 -73
  729. package/src/nodes/materials/MeshLambertNodeMaterial.js +0 -43
  730. package/src/nodes/materials/MeshMatcapNodeMaterial.js +0 -53
  731. package/src/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  732. package/src/nodes/materials/MeshPhongNodeMaterial.js +0 -74
  733. package/src/nodes/materials/MeshPhysicalNodeMaterial.js +0 -244
  734. package/src/nodes/materials/MeshSSSNodeMaterial.js +0 -84
  735. package/src/nodes/materials/MeshStandardNodeMaterial.js +0 -104
  736. package/src/nodes/materials/MeshToonNodeMaterial.js +0 -34
  737. package/src/nodes/materials/NodeMaterial.js +0 -680
  738. package/src/nodes/materials/PointsNodeMaterial.js +0 -39
  739. package/src/nodes/materials/ShadowNodeMaterial.js +0 -34
  740. package/src/nodes/materials/SpriteNodeMaterial.js +0 -90
  741. package/src/nodes/materials/VolumeNodeMaterial.js +0 -106
  742. package/src/nodes/math/CondNode.js +0 -139
  743. package/src/nodes/math/HashNode.js +0 -34
  744. package/src/nodes/procedural/CheckerNode.js +0 -42
  745. package/src/nodes/utils/DiscardNode.js +0 -28
  746. package/src/nodes/utils/OscNode.js +0 -81
  747. package/src/nodes/utils/PackingNode.js +0 -55
  748. package/src/nodes/utils/TimerNode.js +0 -94
@@ -1,12 +1,84 @@
1
1
  import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../constants.js';
2
2
  import { Vector3 } from './Vector3.js';
3
3
 
4
+ /**
5
+ * Represents a 4x4 matrix.
6
+ *
7
+ * The most common use of a 4x4 matrix in 3D computer graphics is as a transformation matrix.
8
+ * For an introduction to transformation matrices as used in WebGL, check out [this tutorial]{@link https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices}
9
+ *
10
+ * This allows a 3D vector representing a point in 3D space to undergo
11
+ * transformations such as translation, rotation, shear, scale, reflection,
12
+ * orthogonal or perspective projection and so on, by being multiplied by the
13
+ * matrix. This is known as `applying` the matrix to the vector.
14
+ *
15
+ * A Note on Row-Major and Column-Major Ordering:
16
+ *
17
+ * The constructor and {@link Matrix3#set} method take arguments in
18
+ * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}
19
+ * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.
20
+ * This means that calling:
21
+ * ```js
22
+ * const m = new THREE.Matrix4();
23
+ * m.set( 11, 12, 13, 14,
24
+ * 21, 22, 23, 24,
25
+ * 31, 32, 33, 34,
26
+ * 41, 42, 43, 44 );
27
+ * ```
28
+ * will result in the elements array containing:
29
+ * ```js
30
+ * m.elements = [ 11, 21, 31, 41,
31
+ * 12, 22, 32, 42,
32
+ * 13, 23, 33, 43,
33
+ * 14, 24, 34, 44 ];
34
+ * ```
35
+ * and internally all calculations are performed using column-major ordering.
36
+ * However, as the actual ordering makes no difference mathematically and
37
+ * most people are used to thinking about matrices in row-major order, the
38
+ * three.js documentation shows matrices in row-major order. Just bear in
39
+ * mind that if you are reading the source code, you'll have to take the
40
+ * transpose of any matrices outlined here to make sense of the calculations.
41
+ */
4
42
  class Matrix4 {
5
43
 
44
+ /**
45
+ * Constructs a new 4x4 matrix. The arguments are supposed to be
46
+ * in row-major order. If no arguments are provided, the constructor
47
+ * initializes the matrix as an identity matrix.
48
+ *
49
+ * @param {number} [n11] - 1-1 matrix element.
50
+ * @param {number} [n12] - 1-2 matrix element.
51
+ * @param {number} [n13] - 1-3 matrix element.
52
+ * @param {number} [n14] - 1-4 matrix element.
53
+ * @param {number} [n21] - 2-1 matrix element.
54
+ * @param {number} [n22] - 2-2 matrix element.
55
+ * @param {number} [n23] - 2-3 matrix element.
56
+ * @param {number} [n24] - 2-4 matrix element.
57
+ * @param {number} [n31] - 3-1 matrix element.
58
+ * @param {number} [n32] - 3-2 matrix element.
59
+ * @param {number} [n33] - 3-3 matrix element.
60
+ * @param {number} [n34] - 3-4 matrix element.
61
+ * @param {number} [n41] - 4-1 matrix element.
62
+ * @param {number} [n42] - 4-2 matrix element.
63
+ * @param {number} [n43] - 4-3 matrix element.
64
+ * @param {number} [n44] - 4-4 matrix element.
65
+ */
6
66
  constructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {
7
67
 
68
+ /**
69
+ * This flag can be used for type testing.
70
+ *
71
+ * @type {boolean}
72
+ * @readonly
73
+ * @default true
74
+ */
8
75
  Matrix4.prototype.isMatrix4 = true;
9
76
 
77
+ /**
78
+ * A column-major list of matrix values.
79
+ *
80
+ * @type {Array<number>}
81
+ */
10
82
  this.elements = [
11
83
 
12
84
  1, 0, 0, 0,
@@ -24,6 +96,28 @@ class Matrix4 {
24
96
 
25
97
  }
26
98
 
99
+ /**
100
+ * Sets the elements of the matrix.The arguments are supposed to be
101
+ * in row-major order.
102
+ *
103
+ * @param {number} [n11] - 1-1 matrix element.
104
+ * @param {number} [n12] - 1-2 matrix element.
105
+ * @param {number} [n13] - 1-3 matrix element.
106
+ * @param {number} [n14] - 1-4 matrix element.
107
+ * @param {number} [n21] - 2-1 matrix element.
108
+ * @param {number} [n22] - 2-2 matrix element.
109
+ * @param {number} [n23] - 2-3 matrix element.
110
+ * @param {number} [n24] - 2-4 matrix element.
111
+ * @param {number} [n31] - 3-1 matrix element.
112
+ * @param {number} [n32] - 3-2 matrix element.
113
+ * @param {number} [n33] - 3-3 matrix element.
114
+ * @param {number} [n34] - 3-4 matrix element.
115
+ * @param {number} [n41] - 4-1 matrix element.
116
+ * @param {number} [n42] - 4-2 matrix element.
117
+ * @param {number} [n43] - 4-3 matrix element.
118
+ * @param {number} [n44] - 4-4 matrix element.
119
+ * @return {Matrix4} A reference to this matrix.
120
+ */
27
121
  set( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {
28
122
 
29
123
  const te = this.elements;
@@ -37,6 +131,11 @@ class Matrix4 {
37
131
 
38
132
  }
39
133
 
134
+ /**
135
+ * Sets this matrix to the 4x4 identity matrix.
136
+ *
137
+ * @return {Matrix4} A reference to this matrix.
138
+ */
40
139
  identity() {
41
140
 
42
141
  this.set(
@@ -52,12 +151,23 @@ class Matrix4 {
52
151
 
53
152
  }
54
153
 
154
+ /**
155
+ * Returns a matrix with copied values from this instance.
156
+ *
157
+ * @return {Matrix4} A clone of this instance.
158
+ */
55
159
  clone() {
56
160
 
57
161
  return new Matrix4().fromArray( this.elements );
58
162
 
59
163
  }
60
164
 
165
+ /**
166
+ * Copies the values of the given matrix to this instance.
167
+ *
168
+ * @param {Matrix4} m - The matrix to copy.
169
+ * @return {Matrix4} A reference to this matrix.
170
+ */
61
171
  copy( m ) {
62
172
 
63
173
  const te = this.elements;
@@ -72,6 +182,13 @@ class Matrix4 {
72
182
 
73
183
  }
74
184
 
185
+ /**
186
+ * Copies the translation component of the given matrix
187
+ * into this matrix's translation component.
188
+ *
189
+ * @param {Matrix4} m - The matrix to copy the translation component.
190
+ * @return {Matrix4} A reference to this matrix.
191
+ */
75
192
  copyPosition( m ) {
76
193
 
77
194
  const te = this.elements, me = m.elements;
@@ -84,6 +201,12 @@ class Matrix4 {
84
201
 
85
202
  }
86
203
 
204
+ /**
205
+ * Set the upper 3x3 elements of this matrix to the values of given 3x3 matrix.
206
+ *
207
+ * @param {Matrix3} m - The 3x3 matrix.
208
+ * @return {Matrix4} A reference to this matrix.
209
+ */
87
210
  setFromMatrix3( m ) {
88
211
 
89
212
  const me = m.elements;
@@ -101,6 +224,14 @@ class Matrix4 {
101
224
 
102
225
  }
103
226
 
227
+ /**
228
+ * Extracts the basis of this matrix into the three axis vectors provided.
229
+ *
230
+ * @param {Vector3} xAxis - The basis's x axis.
231
+ * @param {Vector3} yAxis - The basis's y axis.
232
+ * @param {Vector3} zAxis - The basis's z axis.
233
+ * @return {Matrix4} A reference to this matrix.
234
+ */
104
235
  extractBasis( xAxis, yAxis, zAxis ) {
105
236
 
106
237
  xAxis.setFromMatrixColumn( this, 0 );
@@ -111,6 +242,14 @@ class Matrix4 {
111
242
 
112
243
  }
113
244
 
245
+ /**
246
+ * Sets the given basis vectors to this matrix.
247
+ *
248
+ * @param {Vector3} xAxis - The basis's x axis.
249
+ * @param {Vector3} yAxis - The basis's y axis.
250
+ * @param {Vector3} zAxis - The basis's z axis.
251
+ * @return {Matrix4} A reference to this matrix.
252
+ */
114
253
  makeBasis( xAxis, yAxis, zAxis ) {
115
254
 
116
255
  this.set(
@@ -124,10 +263,17 @@ class Matrix4 {
124
263
 
125
264
  }
126
265
 
266
+ /**
267
+ * Extracts the rotation component of the given matrix
268
+ * into this matrix's rotation component.
269
+ *
270
+ * Note: This method does not support reflection matrices.
271
+ *
272
+ * @param {Matrix4} m - The matrix.
273
+ * @return {Matrix4} A reference to this matrix.
274
+ */
127
275
  extractRotation( m ) {
128
276
 
129
- // this method does not support reflection matrices
130
-
131
277
  const te = this.elements;
132
278
  const me = m.elements;
133
279
 
@@ -159,6 +305,16 @@ class Matrix4 {
159
305
 
160
306
  }
161
307
 
308
+ /**
309
+ * Sets the rotation component (the upper left 3x3 matrix) of this matrix to
310
+ * the rotation specified by the given Euler angles. The rest of
311
+ * the matrix is set to the identity. Depending on the {@link Euler#order},
312
+ * there are six possible outcomes. See [this page]{@link https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix}
313
+ * for a complete list.
314
+ *
315
+ * @param {Euler} euler - The Euler angles.
316
+ * @return {Matrix4} A reference to this matrix.
317
+ */
162
318
  makeRotationFromEuler( euler ) {
163
319
 
164
320
  const te = this.elements;
@@ -281,12 +437,29 @@ class Matrix4 {
281
437
 
282
438
  }
283
439
 
440
+ /**
441
+ * Sets the rotation component of this matrix to the rotation specified by
442
+ * the given Quaternion as outlined [here]{@link https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion}
443
+ * The rest of the matrix is set to the identity.
444
+ *
445
+ * @param {Quaternion} q - The Quaternion.
446
+ * @return {Matrix4} A reference to this matrix.
447
+ */
284
448
  makeRotationFromQuaternion( q ) {
285
449
 
286
450
  return this.compose( _zero, q, _one );
287
451
 
288
452
  }
289
453
 
454
+ /**
455
+ * Sets the rotation component of the transformation matrix, looking from `eye` towards
456
+ * `target`, and oriented by the up-direction.
457
+ *
458
+ * @param {Vector3} eye - The eye vector.
459
+ * @param {Vector3} target - The target vector.
460
+ * @param {Vector3} up - The up vector.
461
+ * @return {Matrix4} A reference to this matrix.
462
+ */
290
463
  lookAt( eye, target, up ) {
291
464
 
292
465
  const te = this.elements;
@@ -334,18 +507,38 @@ class Matrix4 {
334
507
 
335
508
  }
336
509
 
510
+ /**
511
+ * Post-multiplies this matrix by the given 4x4 matrix.
512
+ *
513
+ * @param {Matrix4} m - The matrix to multiply with.
514
+ * @return {Matrix4} A reference to this matrix.
515
+ */
337
516
  multiply( m ) {
338
517
 
339
518
  return this.multiplyMatrices( this, m );
340
519
 
341
520
  }
342
521
 
522
+ /**
523
+ * Pre-multiplies this matrix by the given 4x4 matrix.
524
+ *
525
+ * @param {Matrix4} m - The matrix to multiply with.
526
+ * @return {Matrix4} A reference to this matrix.
527
+ */
343
528
  premultiply( m ) {
344
529
 
345
530
  return this.multiplyMatrices( m, this );
346
531
 
347
532
  }
348
533
 
534
+ /**
535
+ * Multiples the given 4x4 matrices and stores the result
536
+ * in this matrix.
537
+ *
538
+ * @param {Matrix4} a - The first matrix.
539
+ * @param {Matrix4} b - The second matrix.
540
+ * @return {Matrix4} A reference to this matrix.
541
+ */
349
542
  multiplyMatrices( a, b ) {
350
543
 
351
544
  const ae = a.elements;
@@ -386,6 +579,12 @@ class Matrix4 {
386
579
 
387
580
  }
388
581
 
582
+ /**
583
+ * Multiplies every component of the matrix by the given scalar.
584
+ *
585
+ * @param {number} s - The scalar.
586
+ * @return {Matrix4} A reference to this matrix.
587
+ */
389
588
  multiplyScalar( s ) {
390
589
 
391
590
  const te = this.elements;
@@ -399,6 +598,13 @@ class Matrix4 {
399
598
 
400
599
  }
401
600
 
601
+ /**
602
+ * Computes and returns the determinant of this matrix.
603
+ *
604
+ * Based on the method outlined [here]{@link http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html}.
605
+ *
606
+ * @return {number} The determinant.
607
+ */
402
608
  determinant() {
403
609
 
404
610
  const te = this.elements;
@@ -409,7 +615,6 @@ class Matrix4 {
409
615
  const n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];
410
616
 
411
617
  //TODO: make this more efficient
412
- //( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )
413
618
 
414
619
  return (
415
620
  n41 * (
@@ -449,6 +654,11 @@ class Matrix4 {
449
654
 
450
655
  }
451
656
 
657
+ /**
658
+ * Transposes this matrix in place.
659
+ *
660
+ * @return {Matrix4} A reference to this matrix.
661
+ */
452
662
  transpose() {
453
663
 
454
664
  const te = this.elements;
@@ -466,6 +676,15 @@ class Matrix4 {
466
676
 
467
677
  }
468
678
 
679
+ /**
680
+ * Sets the position component for this matrix from the given vector,
681
+ * without affecting the rest of the matrix.
682
+ *
683
+ * @param {number|Vector3} x - The x component of the vector or alternatively the vector object.
684
+ * @param {number} y - The y component of the vector.
685
+ * @param {number} z - The z component of the vector.
686
+ * @return {Matrix4} A reference to this matrix.
687
+ */
469
688
  setPosition( x, y, z ) {
470
689
 
471
690
  const te = this.elements;
@@ -488,6 +707,13 @@ class Matrix4 {
488
707
 
489
708
  }
490
709
 
710
+ /**
711
+ * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.
712
+ * You can not invert with a determinant of zero. If you attempt this, the method produces
713
+ * a zero matrix instead.
714
+ *
715
+ * @return {Matrix4} A reference to this matrix.
716
+ */
491
717
  invert() {
492
718
 
493
719
  // based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm
@@ -533,6 +759,12 @@ class Matrix4 {
533
759
 
534
760
  }
535
761
 
762
+ /**
763
+ * Multiplies the columns of this matrix by the given vector.
764
+ *
765
+ * @param {Vector3} v - The scale vector.
766
+ * @return {Matrix4} A reference to this matrix.
767
+ */
536
768
  scale( v ) {
537
769
 
538
770
  const te = this.elements;
@@ -547,6 +779,11 @@ class Matrix4 {
547
779
 
548
780
  }
549
781
 
782
+ /**
783
+ * Gets the maximum scale value of the three axes.
784
+ *
785
+ * @return {number} The maximum scale.
786
+ */
550
787
  getMaxScaleOnAxis() {
551
788
 
552
789
  const te = this.elements;
@@ -559,6 +796,14 @@ class Matrix4 {
559
796
 
560
797
  }
561
798
 
799
+ /**
800
+ * Sets this matrix as a translation transform from the given vector.
801
+ *
802
+ * @param {number|Vector3} x - The amount to translate in the X axis or alternatively a translation vector.
803
+ * @param {number} y - The amount to translate in the Y axis.
804
+ * @param {number} z - The amount to translate in the z axis.
805
+ * @return {Matrix4} A reference to this matrix.
806
+ */
562
807
  makeTranslation( x, y, z ) {
563
808
 
564
809
  if ( x.isVector3 ) {
@@ -589,6 +834,13 @@ class Matrix4 {
589
834
 
590
835
  }
591
836
 
837
+ /**
838
+ * Sets this matrix as a rotational transformation around the X axis by
839
+ * the given angle.
840
+ *
841
+ * @param {number} theta - The rotation in radians.
842
+ * @return {Matrix4} A reference to this matrix.
843
+ */
592
844
  makeRotationX( theta ) {
593
845
 
594
846
  const c = Math.cos( theta ), s = Math.sin( theta );
@@ -606,6 +858,13 @@ class Matrix4 {
606
858
 
607
859
  }
608
860
 
861
+ /**
862
+ * Sets this matrix as a rotational transformation around the Y axis by
863
+ * the given angle.
864
+ *
865
+ * @param {number} theta - The rotation in radians.
866
+ * @return {Matrix4} A reference to this matrix.
867
+ */
609
868
  makeRotationY( theta ) {
610
869
 
611
870
  const c = Math.cos( theta ), s = Math.sin( theta );
@@ -623,6 +882,13 @@ class Matrix4 {
623
882
 
624
883
  }
625
884
 
885
+ /**
886
+ * Sets this matrix as a rotational transformation around the Z axis by
887
+ * the given angle.
888
+ *
889
+ * @param {number} theta - The rotation in radians.
890
+ * @return {Matrix4} A reference to this matrix.
891
+ */
626
892
  makeRotationZ( theta ) {
627
893
 
628
894
  const c = Math.cos( theta ), s = Math.sin( theta );
@@ -640,6 +906,17 @@ class Matrix4 {
640
906
 
641
907
  }
642
908
 
909
+ /**
910
+ * Sets this matrix as a rotational transformation around the given axis by
911
+ * the given angle.
912
+ *
913
+ * This is a somewhat controversial but mathematically sound alternative to
914
+ * rotating via Quaternions. See the discussion [here]{@link https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199}.
915
+ *
916
+ * @param {Vector3} axis - The normalized rotation axis.
917
+ * @param {number} angle - The rotation in radians.
918
+ * @return {Matrix4} A reference to this matrix.
919
+ */
643
920
  makeRotationAxis( axis, angle ) {
644
921
 
645
922
  // Based on http://www.gamedev.net/reference/articles/article1199.asp
@@ -663,6 +940,14 @@ class Matrix4 {
663
940
 
664
941
  }
665
942
 
943
+ /**
944
+ * Sets this matrix as a scale transformation.
945
+ *
946
+ * @param {number} x - The amount to scale in the X axis.
947
+ * @param {number} y - The amount to scale in the Y axis.
948
+ * @param {number} z - The amount to scale in the Z axis.
949
+ * @return {Matrix4} A reference to this matrix.
950
+ */
666
951
  makeScale( x, y, z ) {
667
952
 
668
953
  this.set(
@@ -678,6 +963,17 @@ class Matrix4 {
678
963
 
679
964
  }
680
965
 
966
+ /**
967
+ * Sets this matrix as a shear transformation.
968
+ *
969
+ * @param {number} xy - The amount to shear X by Y.
970
+ * @param {number} xz - The amount to shear X by Z.
971
+ * @param {number} yx - The amount to shear Y by X.
972
+ * @param {number} yz - The amount to shear Y by Z.
973
+ * @param {number} zx - The amount to shear Z by X.
974
+ * @param {number} zy - The amount to shear Z by Y.
975
+ * @return {Matrix4} A reference to this matrix.
976
+ */
681
977
  makeShear( xy, xz, yx, yz, zx, zy ) {
682
978
 
683
979
  this.set(
@@ -693,6 +989,15 @@ class Matrix4 {
693
989
 
694
990
  }
695
991
 
992
+ /**
993
+ * Sets this matrix to the transformation composed of the given position,
994
+ * rotation (Quaternion) and scale.
995
+ *
996
+ * @param {Vector3} position - The position vector.
997
+ * @param {Quaternion} quaternion - The rotation as a Quaternion.
998
+ * @param {Vector3} scale - The scale vector.
999
+ * @return {Matrix4} A reference to this matrix.
1000
+ */
696
1001
  compose( position, quaternion, scale ) {
697
1002
 
698
1003
  const te = this.elements;
@@ -729,6 +1034,19 @@ class Matrix4 {
729
1034
 
730
1035
  }
731
1036
 
1037
+ /**
1038
+ * Decomposes this matrix into its position, rotation and scale components
1039
+ * and provides the result in the given objects.
1040
+ *
1041
+ * Note: Not all matrices are decomposable in this way. For example, if an
1042
+ * object has a non-uniformly scaled parent, then the object's world matrix
1043
+ * may not be decomposable, and this method may not be appropriate.
1044
+ *
1045
+ * @param {Vector3} position - The position vector.
1046
+ * @param {Quaternion} quaternion - The rotation as a Quaternion.
1047
+ * @param {Vector3} scale - The scale vector.
1048
+ * @return {Matrix4} A reference to this matrix.
1049
+ */
732
1050
  decompose( position, quaternion, scale ) {
733
1051
 
734
1052
  const te = this.elements;
@@ -774,6 +1092,19 @@ class Matrix4 {
774
1092
 
775
1093
  }
776
1094
 
1095
+ /**
1096
+ * Creates a perspective projection matrix. This is used internally by
1097
+ * {@link PerspectiveCamera#updateProjectionMatrix}.
1098
+
1099
+ * @param {number} left - Left boundary of the viewing frustum at the near plane.
1100
+ * @param {number} right - Right boundary of the viewing frustum at the near plane.
1101
+ * @param {number} top - Top boundary of the viewing frustum at the near plane.
1102
+ * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.
1103
+ * @param {number} near - The distance from the camera to the near plane.
1104
+ * @param {number} far - The distance from the camera to the far plane.
1105
+ * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.
1106
+ * @return {Matrix4} A reference to this matrix.
1107
+ */
777
1108
  makePerspective( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {
778
1109
 
779
1110
  const te = this.elements;
@@ -810,6 +1141,19 @@ class Matrix4 {
810
1141
 
811
1142
  }
812
1143
 
1144
+ /**
1145
+ * Creates a orthographic projection matrix. This is used internally by
1146
+ * {@link OrthographicCamera#updateProjectionMatrix}.
1147
+
1148
+ * @param {number} left - Left boundary of the viewing frustum at the near plane.
1149
+ * @param {number} right - Right boundary of the viewing frustum at the near plane.
1150
+ * @param {number} top - Top boundary of the viewing frustum at the near plane.
1151
+ * @param {number} bottom - Bottom boundary of the viewing frustum at the near plane.
1152
+ * @param {number} near - The distance from the camera to the near plane.
1153
+ * @param {number} far - The distance from the camera to the far plane.
1154
+ * @param {(WebGLCoordinateSystem|WebGPUCoordinateSystem)} [coordinateSystem=WebGLCoordinateSystem] - The coordinate system.
1155
+ * @return {Matrix4} A reference to this matrix.
1156
+ */
813
1157
  makeOrthographic( left, right, top, bottom, near, far, coordinateSystem = WebGLCoordinateSystem ) {
814
1158
 
815
1159
  const te = this.elements;
@@ -847,6 +1191,12 @@ class Matrix4 {
847
1191
 
848
1192
  }
849
1193
 
1194
+ /**
1195
+ * Returns `true` if this matrix is equal with the given one.
1196
+ *
1197
+ * @param {Matrix4} matrix - The matrix to test for equality.
1198
+ * @return {boolean} Whether this matrix is equal with the given one.
1199
+ */
850
1200
  equals( matrix ) {
851
1201
 
852
1202
  const te = this.elements;
@@ -862,6 +1212,13 @@ class Matrix4 {
862
1212
 
863
1213
  }
864
1214
 
1215
+ /**
1216
+ * Sets the elements of the matrix from the given array.
1217
+ *
1218
+ * @param {Array<number>} array - The matrix elements in column-major order.
1219
+ * @param {number} [offset=0] - Index of the first element in the array.
1220
+ * @return {Matrix4} A reference to this matrix.
1221
+ */
865
1222
  fromArray( array, offset = 0 ) {
866
1223
 
867
1224
  for ( let i = 0; i < 16; i ++ ) {
@@ -874,6 +1231,14 @@ class Matrix4 {
874
1231
 
875
1232
  }
876
1233
 
1234
+ /**
1235
+ * Writes the elements of this matrix to the given array. If no array is provided,
1236
+ * the method returns a new instance.
1237
+ *
1238
+ * @param {Array<number>} [array=[]] - The target array holding the matrix elements in column-major order.
1239
+ * @param {number} [offset=0] - Index of the first element in the array.
1240
+ * @return {Array<number>} The matrix elements in column-major order.
1241
+ */
877
1242
  toArray( array = [], offset = 0 ) {
878
1243
 
879
1244
  const te = this.elements;