@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
@@ -1,16 +1,85 @@
1
+ import { clamp } from './MathUtils.js';
2
+
3
+ /**
4
+ * Class representing a 4D vector. A 4D vector is an ordered quadruplet of numbers
5
+ * (labeled x, y, z and w), which can be used to represent a number of things, such as:
6
+ *
7
+ * - A point in 4D space.
8
+ * - A direction and length in 4D space. In three.js the length will
9
+ * always be the Euclidean distance(straight-line distance) from `(0, 0, 0, 0)` to `(x, y, z, w)`
10
+ * and the direction is also measured from `(0, 0, 0, 0)` towards `(x, y, z, w)`.
11
+ * - Any arbitrary ordered quadruplet of numbers.
12
+ *
13
+ * There are other things a 4D vector can be used to represent, however these
14
+ * are the most common uses in *three.js*.
15
+ *
16
+ * Iterating through a vector instance will yield its components `(x, y, z, w)` in
17
+ * the corresponding order.
18
+ * ```js
19
+ * const a = new THREE.Vector4( 0, 1, 0, 0 );
20
+ *
21
+ * //no arguments; will be initialised to (0, 0, 0, 1)
22
+ * const b = new THREE.Vector4( );
23
+ *
24
+ * const d = a.dot( b );
25
+ * ```
26
+ */
1
27
  class Vector4 {
2
28
 
29
+ /**
30
+ * Constructs a new 4D vector.
31
+ *
32
+ * @param {number} [x=0] - The x value of this vector.
33
+ * @param {number} [y=0] - The y value of this vector.
34
+ * @param {number} [z=0] - The z value of this vector.
35
+ * @param {number} [w=1] - The w value of this vector.
36
+ */
3
37
  constructor( x = 0, y = 0, z = 0, w = 1 ) {
4
38
 
39
+ /**
40
+ * This flag can be used for type testing.
41
+ *
42
+ * @type {boolean}
43
+ * @readonly
44
+ * @default true
45
+ */
5
46
  Vector4.prototype.isVector4 = true;
6
47
 
48
+ /**
49
+ * The x value of this vector.
50
+ *
51
+ * @type {number}
52
+ */
7
53
  this.x = x;
54
+
55
+ /**
56
+ * The y value of this vector.
57
+ *
58
+ * @type {number}
59
+ */
8
60
  this.y = y;
61
+
62
+ /**
63
+ * The z value of this vector.
64
+ *
65
+ * @type {number}
66
+ */
9
67
  this.z = z;
68
+
69
+ /**
70
+ * The w value of this vector.
71
+ *
72
+ * @type {number}
73
+ */
10
74
  this.w = w;
11
75
 
12
76
  }
13
77
 
78
+ /**
79
+ * Alias for {@link Vector4#z}.
80
+ *
81
+ * @type {number}
82
+ */
14
83
  get width() {
15
84
 
16
85
  return this.z;
@@ -23,6 +92,11 @@ class Vector4 {
23
92
 
24
93
  }
25
94
 
95
+ /**
96
+ * Alias for {@link Vector4#w}.
97
+ *
98
+ * @type {number}
99
+ */
26
100
  get height() {
27
101
 
28
102
  return this.w;
@@ -35,6 +109,15 @@ class Vector4 {
35
109
 
36
110
  }
37
111
 
112
+ /**
113
+ * Sets the vector components.
114
+ *
115
+ * @param {number} x - The value of the x component.
116
+ * @param {number} y - The value of the y component.
117
+ * @param {number} z - The value of the z component.
118
+ * @param {number} w - The value of the w component.
119
+ * @return {Vector4} A reference to this vector.
120
+ */
38
121
  set( x, y, z, w ) {
39
122
 
40
123
  this.x = x;
@@ -46,6 +129,12 @@ class Vector4 {
46
129
 
47
130
  }
48
131
 
132
+ /**
133
+ * Sets the vector components to the same value.
134
+ *
135
+ * @param {number} scalar - The value to set for all vector components.
136
+ * @return {Vector4} A reference to this vector.
137
+ */
49
138
  setScalar( scalar ) {
50
139
 
51
140
  this.x = scalar;
@@ -57,6 +146,12 @@ class Vector4 {
57
146
 
58
147
  }
59
148
 
149
+ /**
150
+ * Sets the vector's x component to the given value
151
+ *
152
+ * @param {number} x - The value to set.
153
+ * @return {Vector4} A reference to this vector.
154
+ */
60
155
  setX( x ) {
61
156
 
62
157
  this.x = x;
@@ -65,6 +160,12 @@ class Vector4 {
65
160
 
66
161
  }
67
162
 
163
+ /**
164
+ * Sets the vector's y component to the given value
165
+ *
166
+ * @param {number} y - The value to set.
167
+ * @return {Vector4} A reference to this vector.
168
+ */
68
169
  setY( y ) {
69
170
 
70
171
  this.y = y;
@@ -73,6 +174,12 @@ class Vector4 {
73
174
 
74
175
  }
75
176
 
177
+ /**
178
+ * Sets the vector's z component to the given value
179
+ *
180
+ * @param {number} z - The value to set.
181
+ * @return {Vector4} A reference to this vector.
182
+ */
76
183
  setZ( z ) {
77
184
 
78
185
  this.z = z;
@@ -81,6 +188,12 @@ class Vector4 {
81
188
 
82
189
  }
83
190
 
191
+ /**
192
+ * Sets the vector's w component to the given value
193
+ *
194
+ * @param {number} w - The value to set.
195
+ * @return {Vector4} A reference to this vector.
196
+ */
84
197
  setW( w ) {
85
198
 
86
199
  this.w = w;
@@ -89,6 +202,14 @@ class Vector4 {
89
202
 
90
203
  }
91
204
 
205
+ /**
206
+ * Allows to set a vector component with an index.
207
+ *
208
+ * @param {number} index - The component index. `0` equals to x, `1` equals to y,
209
+ * `2` equals to z, `3` equals to w.
210
+ * @param {number} value - The value to set.
211
+ * @return {Vector4} A reference to this vector.
212
+ */
92
213
  setComponent( index, value ) {
93
214
 
94
215
  switch ( index ) {
@@ -105,6 +226,13 @@ class Vector4 {
105
226
 
106
227
  }
107
228
 
229
+ /**
230
+ * Returns the value of the vector component which matches the given index.
231
+ *
232
+ * @param {number} index - The component index. `0` equals to x, `1` equals to y,
233
+ * `2` equals to z, `3` equals to w.
234
+ * @return {number} A vector component value.
235
+ */
108
236
  getComponent( index ) {
109
237
 
110
238
  switch ( index ) {
@@ -119,12 +247,23 @@ class Vector4 {
119
247
 
120
248
  }
121
249
 
250
+ /**
251
+ * Returns a new vector with copied values from this instance.
252
+ *
253
+ * @return {Vector4} A clone of this instance.
254
+ */
122
255
  clone() {
123
256
 
124
257
  return new this.constructor( this.x, this.y, this.z, this.w );
125
258
 
126
259
  }
127
260
 
261
+ /**
262
+ * Copies the values of the given vector to this instance.
263
+ *
264
+ * @param {Vector3|Vector4} v - The vector to copy.
265
+ * @return {Vector4} A reference to this vector.
266
+ */
128
267
  copy( v ) {
129
268
 
130
269
  this.x = v.x;
@@ -136,6 +275,12 @@ class Vector4 {
136
275
 
137
276
  }
138
277
 
278
+ /**
279
+ * Adds the given vector to this instance.
280
+ *
281
+ * @param {Vector4} v - The vector to add.
282
+ * @return {Vector4} A reference to this vector.
283
+ */
139
284
  add( v ) {
140
285
 
141
286
  this.x += v.x;
@@ -147,6 +292,12 @@ class Vector4 {
147
292
 
148
293
  }
149
294
 
295
+ /**
296
+ * Adds the given scalar value to all components of this instance.
297
+ *
298
+ * @param {number} s - The scalar to add.
299
+ * @return {Vector4} A reference to this vector.
300
+ */
150
301
  addScalar( s ) {
151
302
 
152
303
  this.x += s;
@@ -158,6 +309,13 @@ class Vector4 {
158
309
 
159
310
  }
160
311
 
312
+ /**
313
+ * Adds the given vectors and stores the result in this instance.
314
+ *
315
+ * @param {Vector4} a - The first vector.
316
+ * @param {Vector4} b - The second vector.
317
+ * @return {Vector4} A reference to this vector.
318
+ */
161
319
  addVectors( a, b ) {
162
320
 
163
321
  this.x = a.x + b.x;
@@ -169,6 +327,13 @@ class Vector4 {
169
327
 
170
328
  }
171
329
 
330
+ /**
331
+ * Adds the given vector scaled by the given factor to this instance.
332
+ *
333
+ * @param {Vector4} v - The vector.
334
+ * @param {number} s - The factor that scales `v`.
335
+ * @return {Vector4} A reference to this vector.
336
+ */
172
337
  addScaledVector( v, s ) {
173
338
 
174
339
  this.x += v.x * s;
@@ -180,6 +345,12 @@ class Vector4 {
180
345
 
181
346
  }
182
347
 
348
+ /**
349
+ * Subtracts the given vector from this instance.
350
+ *
351
+ * @param {Vector4} v - The vector to subtract.
352
+ * @return {Vector4} A reference to this vector.
353
+ */
183
354
  sub( v ) {
184
355
 
185
356
  this.x -= v.x;
@@ -191,6 +362,12 @@ class Vector4 {
191
362
 
192
363
  }
193
364
 
365
+ /**
366
+ * Subtracts the given scalar value from all components of this instance.
367
+ *
368
+ * @param {number} s - The scalar to subtract.
369
+ * @return {Vector4} A reference to this vector.
370
+ */
194
371
  subScalar( s ) {
195
372
 
196
373
  this.x -= s;
@@ -202,6 +379,13 @@ class Vector4 {
202
379
 
203
380
  }
204
381
 
382
+ /**
383
+ * Subtracts the given vectors and stores the result in this instance.
384
+ *
385
+ * @param {Vector4} a - The first vector.
386
+ * @param {Vector4} b - The second vector.
387
+ * @return {Vector4} A reference to this vector.
388
+ */
205
389
  subVectors( a, b ) {
206
390
 
207
391
  this.x = a.x - b.x;
@@ -213,6 +397,12 @@ class Vector4 {
213
397
 
214
398
  }
215
399
 
400
+ /**
401
+ * Multiplies the given vector with this instance.
402
+ *
403
+ * @param {Vector4} v - The vector to multiply.
404
+ * @return {Vector4} A reference to this vector.
405
+ */
216
406
  multiply( v ) {
217
407
 
218
408
  this.x *= v.x;
@@ -224,6 +414,12 @@ class Vector4 {
224
414
 
225
415
  }
226
416
 
417
+ /**
418
+ * Multiplies the given scalar value with all components of this instance.
419
+ *
420
+ * @param {number} scalar - The scalar to multiply.
421
+ * @return {Vector4} A reference to this vector.
422
+ */
227
423
  multiplyScalar( scalar ) {
228
424
 
229
425
  this.x *= scalar;
@@ -235,6 +431,12 @@ class Vector4 {
235
431
 
236
432
  }
237
433
 
434
+ /**
435
+ * Multiplies this vector with the given 4x4 matrix.
436
+ *
437
+ * @param {Matrix4} m - The 4x4 matrix.
438
+ * @return {Vector4} A reference to this vector.
439
+ */
238
440
  applyMatrix4( m ) {
239
441
 
240
442
  const x = this.x, y = this.y, z = this.z, w = this.w;
@@ -249,12 +451,42 @@ class Vector4 {
249
451
 
250
452
  }
251
453
 
454
+ /**
455
+ * Divides this instance by the given vector.
456
+ *
457
+ * @param {Vector4} v - The vector to divide.
458
+ * @return {Vector4} A reference to this vector.
459
+ */
460
+ divide( v ) {
461
+
462
+ this.x /= v.x;
463
+ this.y /= v.y;
464
+ this.z /= v.z;
465
+ this.w /= v.w;
466
+
467
+ return this;
468
+
469
+ }
470
+
471
+ /**
472
+ * Divides this vector by the given scalar.
473
+ *
474
+ * @param {number} scalar - The scalar to divide.
475
+ * @return {Vector4} A reference to this vector.
476
+ */
252
477
  divideScalar( scalar ) {
253
478
 
254
479
  return this.multiplyScalar( 1 / scalar );
255
480
 
256
481
  }
257
482
 
483
+ /**
484
+ * Sets the x, y and z components of this
485
+ * vector to the quaternion's axis and w to the angle.
486
+ *
487
+ * @param {Quaternion} q - The Quaternion to set.
488
+ * @return {Vector4} A reference to this vector.
489
+ */
258
490
  setAxisAngleFromQuaternion( q ) {
259
491
 
260
492
  // http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm
@@ -283,6 +515,13 @@ class Vector4 {
283
515
 
284
516
  }
285
517
 
518
+ /**
519
+ * Sets the x, y and z components of this
520
+ * vector to the axis of rotation and w to the angle.
521
+ *
522
+ * @param {Matrix4} m - A 4x4 matrix of which the upper left 3x3 matrix is a pure rotation matrix.
523
+ * @return {Vector4} A reference to this vector.
524
+ */
286
525
  setAxisAngleFromRotationMatrix( m ) {
287
526
 
288
527
  // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm
@@ -413,6 +652,13 @@ class Vector4 {
413
652
 
414
653
  }
415
654
 
655
+ /**
656
+ * Sets the vector components to the position elements of the
657
+ * given transformation matrix.
658
+ *
659
+ * @param {Matrix4} m - The 4x4 matrix.
660
+ * @return {Vector4} A reference to this vector.
661
+ */
416
662
  setFromMatrixPosition( m ) {
417
663
 
418
664
  const e = m.elements;
@@ -426,6 +672,13 @@ class Vector4 {
426
672
 
427
673
  }
428
674
 
675
+ /**
676
+ * If this vector's x, y, z or w value is greater than the given vector's x, y, z or w
677
+ * value, replace that value with the corresponding min value.
678
+ *
679
+ * @param {Vector4} v - The vector.
680
+ * @return {Vector4} A reference to this vector.
681
+ */
429
682
  min( v ) {
430
683
 
431
684
  this.x = Math.min( this.x, v.x );
@@ -437,6 +690,13 @@ class Vector4 {
437
690
 
438
691
  }
439
692
 
693
+ /**
694
+ * If this vector's x, y, z or w value is less than the given vector's x, y, z or w
695
+ * value, replace that value with the corresponding max value.
696
+ *
697
+ * @param {Vector4} v - The vector.
698
+ * @return {Vector4} A reference to this vector.
699
+ */
440
700
  max( v ) {
441
701
 
442
702
  this.x = Math.max( this.x, v.x );
@@ -448,38 +708,73 @@ class Vector4 {
448
708
 
449
709
  }
450
710
 
711
+ /**
712
+ * If this vector's x, y, z or w value is greater than the max vector's x, y, z or w
713
+ * value, it is replaced by the corresponding value.
714
+ * If this vector's x, y, z or w value is less than the min vector's x, y, z or w value,
715
+ * it is replaced by the corresponding value.
716
+ *
717
+ * @param {Vector4} min - The minimum x, y and z values.
718
+ * @param {Vector4} max - The maximum x, y and z values in the desired range.
719
+ * @return {Vector4} A reference to this vector.
720
+ */
451
721
  clamp( min, max ) {
452
722
 
453
723
  // assumes min < max, componentwise
454
724
 
455
- this.x = Math.max( min.x, Math.min( max.x, this.x ) );
456
- this.y = Math.max( min.y, Math.min( max.y, this.y ) );
457
- this.z = Math.max( min.z, Math.min( max.z, this.z ) );
458
- this.w = Math.max( min.w, Math.min( max.w, this.w ) );
725
+ this.x = clamp( this.x, min.x, max.x );
726
+ this.y = clamp( this.y, min.y, max.y );
727
+ this.z = clamp( this.z, min.z, max.z );
728
+ this.w = clamp( this.w, min.w, max.w );
459
729
 
460
730
  return this;
461
731
 
462
732
  }
463
733
 
734
+ /**
735
+ * If this vector's x, y, z or w values are greater than the max value, they are
736
+ * replaced by the max value.
737
+ * If this vector's x, y, z or w values are less than the min value, they are
738
+ * replaced by the min value.
739
+ *
740
+ * @param {number} minVal - The minimum value the components will be clamped to.
741
+ * @param {number} maxVal - The maximum value the components will be clamped to.
742
+ * @return {Vector4} A reference to this vector.
743
+ */
464
744
  clampScalar( minVal, maxVal ) {
465
745
 
466
- this.x = Math.max( minVal, Math.min( maxVal, this.x ) );
467
- this.y = Math.max( minVal, Math.min( maxVal, this.y ) );
468
- this.z = Math.max( minVal, Math.min( maxVal, this.z ) );
469
- this.w = Math.max( minVal, Math.min( maxVal, this.w ) );
746
+ this.x = clamp( this.x, minVal, maxVal );
747
+ this.y = clamp( this.y, minVal, maxVal );
748
+ this.z = clamp( this.z, minVal, maxVal );
749
+ this.w = clamp( this.w, minVal, maxVal );
470
750
 
471
751
  return this;
472
752
 
473
753
  }
474
754
 
755
+ /**
756
+ * If this vector's length is greater than the max value, it is replaced by
757
+ * the max value.
758
+ * If this vector's length is less than the min value, it is replaced by the
759
+ * min value.
760
+ *
761
+ * @param {number} min - The minimum value the vector length will be clamped to.
762
+ * @param {number} max - The maximum value the vector length will be clamped to.
763
+ * @return {Vector4} A reference to this vector.
764
+ */
475
765
  clampLength( min, max ) {
476
766
 
477
767
  const length = this.length();
478
768
 
479
- return this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );
769
+ return this.divideScalar( length || 1 ).multiplyScalar( clamp( length, min, max ) );
480
770
 
481
771
  }
482
772
 
773
+ /**
774
+ * The components of this vector are rounded down to the nearest integer value.
775
+ *
776
+ * @return {Vector4} A reference to this vector.
777
+ */
483
778
  floor() {
484
779
 
485
780
  this.x = Math.floor( this.x );
@@ -491,6 +786,11 @@ class Vector4 {
491
786
 
492
787
  }
493
788
 
789
+ /**
790
+ * The components of this vector are rounded up to the nearest integer value.
791
+ *
792
+ * @return {Vector4} A reference to this vector.
793
+ */
494
794
  ceil() {
495
795
 
496
796
  this.x = Math.ceil( this.x );
@@ -502,6 +802,11 @@ class Vector4 {
502
802
 
503
803
  }
504
804
 
805
+ /**
806
+ * The components of this vector are rounded to the nearest integer value
807
+ *
808
+ * @return {Vector4} A reference to this vector.
809
+ */
505
810
  round() {
506
811
 
507
812
  this.x = Math.round( this.x );
@@ -513,6 +818,12 @@ class Vector4 {
513
818
 
514
819
  }
515
820
 
821
+ /**
822
+ * The components of this vector are rounded towards zero (up if negative,
823
+ * down if positive) to an integer value.
824
+ *
825
+ * @return {Vector4} A reference to this vector.
826
+ */
516
827
  roundToZero() {
517
828
 
518
829
  this.x = Math.trunc( this.x );
@@ -524,6 +835,11 @@ class Vector4 {
524
835
 
525
836
  }
526
837
 
838
+ /**
839
+ * Inverts this vector - i.e. sets x = -x, y = -y, z = -z, w = -w.
840
+ *
841
+ * @return {Vector4} A reference to this vector.
842
+ */
527
843
  negate() {
528
844
 
529
845
  this.x = - this.x;
@@ -535,42 +851,87 @@ class Vector4 {
535
851
 
536
852
  }
537
853
 
854
+ /**
855
+ * Calculates the dot product of the given vector with this instance.
856
+ *
857
+ * @param {Vector4} v - The vector to compute the dot product with.
858
+ * @return {number} The result of the dot product.
859
+ */
538
860
  dot( v ) {
539
861
 
540
862
  return this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;
541
863
 
542
864
  }
543
865
 
866
+ /**
867
+ * Computes the square of the Euclidean length (straight-line length) from
868
+ * (0, 0, 0, 0) to (x, y, z, w). If you are comparing the lengths of vectors, you should
869
+ * compare the length squared instead as it is slightly more efficient to calculate.
870
+ *
871
+ * @return {number} The square length of this vector.
872
+ */
544
873
  lengthSq() {
545
874
 
546
875
  return this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;
547
876
 
548
877
  }
549
878
 
879
+ /**
880
+ * Computes the Euclidean length (straight-line length) from (0, 0, 0, 0) to (x, y, z, w).
881
+ *
882
+ * @return {number} The length of this vector.
883
+ */
550
884
  length() {
551
885
 
552
886
  return Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );
553
887
 
554
888
  }
555
889
 
890
+ /**
891
+ * Computes the Manhattan length of this vector.
892
+ *
893
+ * @return {number} The length of this vector.
894
+ */
556
895
  manhattanLength() {
557
896
 
558
897
  return Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );
559
898
 
560
899
  }
561
900
 
901
+ /**
902
+ * Converts this vector to a unit vector - that is, sets it equal to a vector
903
+ * with the same direction as this one, but with a vector length of `1`.
904
+ *
905
+ * @return {Vector4} A reference to this vector.
906
+ */
562
907
  normalize() {
563
908
 
564
909
  return this.divideScalar( this.length() || 1 );
565
910
 
566
911
  }
567
912
 
913
+ /**
914
+ * Sets this vector to a vector with the same direction as this one, but
915
+ * with the specified length.
916
+ *
917
+ * @param {number} length - The new length of this vector.
918
+ * @return {Vector4} A reference to this vector.
919
+ */
568
920
  setLength( length ) {
569
921
 
570
922
  return this.normalize().multiplyScalar( length );
571
923
 
572
924
  }
573
925
 
926
+ /**
927
+ * Linearly interpolates between the given vector and this instance, where
928
+ * alpha is the percent distance along the line - alpha = 0 will be this
929
+ * vector, and alpha = 1 will be the given one.
930
+ *
931
+ * @param {Vector4} v - The vector to interpolate towards.
932
+ * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.
933
+ * @return {Vector4} A reference to this vector.
934
+ */
574
935
  lerp( v, alpha ) {
575
936
 
576
937
  this.x += ( v.x - this.x ) * alpha;
@@ -582,6 +943,16 @@ class Vector4 {
582
943
 
583
944
  }
584
945
 
946
+ /**
947
+ * Linearly interpolates between the given vectors, where alpha is the percent
948
+ * distance along the line - alpha = 0 will be first vector, and alpha = 1 will
949
+ * be the second one. The result is stored in this instance.
950
+ *
951
+ * @param {Vector4} v1 - The first vector.
952
+ * @param {Vector4} v2 - The second vector.
953
+ * @param {number} alpha - The interpolation factor, typically in the closed interval `[0, 1]`.
954
+ * @return {Vector4} A reference to this vector.
955
+ */
585
956
  lerpVectors( v1, v2, alpha ) {
586
957
 
587
958
  this.x = v1.x + ( v2.x - v1.x ) * alpha;
@@ -593,12 +964,26 @@ class Vector4 {
593
964
 
594
965
  }
595
966
 
967
+ /**
968
+ * Returns `true` if this vector is equal with the given one.
969
+ *
970
+ * @param {Vector4} v - The vector to test for equality.
971
+ * @return {boolean} Whether this vector is equal with the given one.
972
+ */
596
973
  equals( v ) {
597
974
 
598
975
  return ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );
599
976
 
600
977
  }
601
978
 
979
+ /**
980
+ * Sets this vector's x value to be `array[ offset ]`, y value to be `array[ offset + 1 ]`,
981
+ * z value to be `array[ offset + 2 ]`, w value to be `array[ offset + 3 ]`.
982
+ *
983
+ * @param {Array<number>} array - An array holding the vector component values.
984
+ * @param {number} [offset=0] - The offset into the array.
985
+ * @return {Vector4} A reference to this vector.
986
+ */
602
987
  fromArray( array, offset = 0 ) {
603
988
 
604
989
  this.x = array[ offset ];
@@ -610,6 +995,14 @@ class Vector4 {
610
995
 
611
996
  }
612
997
 
998
+ /**
999
+ * Writes the components of this vector to the given array. If no array is provided,
1000
+ * the method returns a new instance.
1001
+ *
1002
+ * @param {Array<number>} [array=[]] - The target array holding the vector components.
1003
+ * @param {number} [offset=0] - Index of the first element in the array.
1004
+ * @return {Array<number>} The vector components.
1005
+ */
613
1006
  toArray( array = [], offset = 0 ) {
614
1007
 
615
1008
  array[ offset ] = this.x;
@@ -621,6 +1014,13 @@ class Vector4 {
621
1014
 
622
1015
  }
623
1016
 
1017
+ /**
1018
+ * Sets the components of this vector from the given buffer attribute.
1019
+ *
1020
+ * @param {BufferAttribute} attribute - The buffer attribute holding vector data.
1021
+ * @param {number} index - The index into the attribute.
1022
+ * @return {Vector4} A reference to this vector.
1023
+ */
624
1024
  fromBufferAttribute( attribute, index ) {
625
1025
 
626
1026
  this.x = attribute.getX( index );
@@ -632,6 +1032,12 @@ class Vector4 {
632
1032
 
633
1033
  }
634
1034
 
1035
+ /**
1036
+ * Sets each component of this vector to a pseudo-random value between `0` and
1037
+ * `1`, excluding `1`.
1038
+ *
1039
+ * @return {Vector4} A reference to this vector.
1040
+ */
635
1041
  random() {
636
1042
 
637
1043
  this.x = Math.random();