@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,21 +1,33 @@
1
1
  import { Vector3 } from './Vector3.js';
2
2
 
3
3
  /**
4
- * Primary reference:
5
- * https://graphics.stanford.edu/papers/envmap/envmap.pdf
4
+ * Represents a third-order spherical harmonics (SH). Light probes use this class
5
+ * to encode lighting information.
6
6
  *
7
- * Secondary reference:
8
- * https://www.ppsloan.org/publications/StupidSH36.pdf
7
+ * - Primary reference: {@link https://graphics.stanford.edu/papers/envmap/envmap.pdf}
8
+ * - Secondary reference: {@link https://www.ppsloan.org/publications/StupidSH36.pdf}
9
9
  */
10
-
11
- // 3-band SH defined by 9 coefficients
12
-
13
10
  class SphericalHarmonics3 {
14
11
 
12
+ /**
13
+ * Constructs a new spherical harmonics.
14
+ */
15
15
  constructor() {
16
16
 
17
+ /**
18
+ * This flag can be used for type testing.
19
+ *
20
+ * @type {boolean}
21
+ * @readonly
22
+ * @default true
23
+ */
17
24
  this.isSphericalHarmonics3 = true;
18
25
 
26
+ /**
27
+ * An array holding the (9) SH coefficients.
28
+ *
29
+ * @type {Array<Vector3>}
30
+ */
19
31
  this.coefficients = [];
20
32
 
21
33
  for ( let i = 0; i < 9; i ++ ) {
@@ -26,6 +38,13 @@ class SphericalHarmonics3 {
26
38
 
27
39
  }
28
40
 
41
+ /**
42
+ * Sets the given SH coefficients to this instance by copying
43
+ * the values.
44
+ *
45
+ * @param {Array<Vector3>} coefficients - The SH coefficients.
46
+ * @return {SphericalHarmonics3} A reference to this spherical harmonics.
47
+ */
29
48
  set( coefficients ) {
30
49
 
31
50
  for ( let i = 0; i < 9; i ++ ) {
@@ -38,6 +57,11 @@ class SphericalHarmonics3 {
38
57
 
39
58
  }
40
59
 
60
+ /**
61
+ * Sets all SH coefficients to `0`.
62
+ *
63
+ * @return {SphericalHarmonics3} A reference to this spherical harmonics.
64
+ */
41
65
  zero() {
42
66
 
43
67
  for ( let i = 0; i < 9; i ++ ) {
@@ -50,8 +74,13 @@ class SphericalHarmonics3 {
50
74
 
51
75
  }
52
76
 
53
- // get the radiance in the direction of the normal
54
- // target is a Vector3
77
+ /**
78
+ * Returns the radiance in the direction of the given normal.
79
+ *
80
+ * @param {Vector3} normal - The normal vector (assumed to be unit length)
81
+ * @param {Vector3} target - The target vector that is used to store the method's result.
82
+ * @return {Vector3} The radiance.
83
+ */
55
84
  getAt( normal, target ) {
56
85
 
57
86
  // normal is assumed to be unit length
@@ -79,9 +108,14 @@ class SphericalHarmonics3 {
79
108
 
80
109
  }
81
110
 
82
- // get the irradiance (radiance convolved with cosine lobe) in the direction of the normal
83
- // target is a Vector3
84
- // https://graphics.stanford.edu/papers/envmap/envmap.pdf
111
+ /**
112
+ * Returns the irradiance (radiance convolved with cosine lobe) in the
113
+ * direction of the given normal.
114
+ *
115
+ * @param {Vector3} normal - The normal vector (assumed to be unit length)
116
+ * @param {Vector3} target - The target vector that is used to store the method's result.
117
+ * @return {Vector3} The irradiance.
118
+ */
85
119
  getIrradianceAt( normal, target ) {
86
120
 
87
121
  // normal is assumed to be unit length
@@ -109,6 +143,12 @@ class SphericalHarmonics3 {
109
143
 
110
144
  }
111
145
 
146
+ /**
147
+ * Adds the given SH to this instance.
148
+ *
149
+ * @param {SphericalHarmonics3} sh - The SH to add.
150
+ * @return {SphericalHarmonics3} A reference to this spherical harmonics.
151
+ */
112
152
  add( sh ) {
113
153
 
114
154
  for ( let i = 0; i < 9; i ++ ) {
@@ -121,6 +161,14 @@ class SphericalHarmonics3 {
121
161
 
122
162
  }
123
163
 
164
+ /**
165
+ * A convenience method for performing {@link SphericalHarmonics3#add} and
166
+ * {@link SphericalHarmonics3#scale} at once.
167
+ *
168
+ * @param {SphericalHarmonics3} sh - The SH to add.
169
+ * @param {number} s - The scale factor.
170
+ * @return {SphericalHarmonics3} A reference to this spherical harmonics.
171
+ */
124
172
  addScaledSH( sh, s ) {
125
173
 
126
174
  for ( let i = 0; i < 9; i ++ ) {
@@ -133,6 +181,12 @@ class SphericalHarmonics3 {
133
181
 
134
182
  }
135
183
 
184
+ /**
185
+ * Scales this SH by the given scale factor.
186
+ *
187
+ * @param {number} s - The scale factor.
188
+ * @return {SphericalHarmonics3} A reference to this spherical harmonics.
189
+ */
136
190
  scale( s ) {
137
191
 
138
192
  for ( let i = 0; i < 9; i ++ ) {
@@ -145,6 +199,14 @@ class SphericalHarmonics3 {
145
199
 
146
200
  }
147
201
 
202
+ /**
203
+ * Linear interpolates between the given SH and this instance by the given
204
+ * alpha factor.
205
+ *
206
+ * @param {SphericalHarmonics3} sh - The SH to interpolate with.
207
+ * @param {number} alpha - The alpha factor.
208
+ * @return {SphericalHarmonics3} A reference to this spherical harmonics.
209
+ */
148
210
  lerp( sh, alpha ) {
149
211
 
150
212
  for ( let i = 0; i < 9; i ++ ) {
@@ -157,6 +219,12 @@ class SphericalHarmonics3 {
157
219
 
158
220
  }
159
221
 
222
+ /**
223
+ * Returns `true` if this spherical harmonics is equal with the given one.
224
+ *
225
+ * @param {SphericalHarmonics3} sh - The spherical harmonics to test for equality.
226
+ * @return {boolean} Whether this spherical harmonics is equal with the given one.
227
+ */
160
228
  equals( sh ) {
161
229
 
162
230
  for ( let i = 0; i < 9; i ++ ) {
@@ -173,18 +241,36 @@ class SphericalHarmonics3 {
173
241
 
174
242
  }
175
243
 
244
+ /**
245
+ * Copies the values of the given spherical harmonics to this instance.
246
+ *
247
+ * @param {SphericalHarmonics3} sh - The spherical harmonics to copy.
248
+ * @return {SphericalHarmonics3} A reference to this spherical harmonics.
249
+ */
176
250
  copy( sh ) {
177
251
 
178
252
  return this.set( sh.coefficients );
179
253
 
180
254
  }
181
255
 
256
+ /**
257
+ * Returns a new spherical harmonics with copied values from this instance.
258
+ *
259
+ * @return {SphericalHarmonics3} A clone of this instance.
260
+ */
182
261
  clone() {
183
262
 
184
263
  return new this.constructor().copy( this );
185
264
 
186
265
  }
187
266
 
267
+ /**
268
+ * Sets the SH coefficients of this instance from the given array.
269
+ *
270
+ * @param {Array<number>} array - An array holding the SH coefficients.
271
+ * @param {number} [offset=0] - The array offset where to start copying.
272
+ * @return {SphericalHarmonics3} A clone of this instance.
273
+ */
188
274
  fromArray( array, offset = 0 ) {
189
275
 
190
276
  const coefficients = this.coefficients;
@@ -199,6 +285,14 @@ class SphericalHarmonics3 {
199
285
 
200
286
  }
201
287
 
288
+ /**
289
+ * Returns an array with the SH coefficients, or copies them into the provided
290
+ * array. The coefficients are represented as numbers.
291
+ *
292
+ * @param {Array<number>} [array=[]] - The target array.
293
+ * @param {number} [offset=0] - The array offset where to start copying.
294
+ * @return {Array<number>} An array with flat SH coefficients.
295
+ */
202
296
  toArray( array = [], offset = 0 ) {
203
297
 
204
298
  const coefficients = this.coefficients;
@@ -213,8 +307,12 @@ class SphericalHarmonics3 {
213
307
 
214
308
  }
215
309
 
216
- // evaluate the basis functions
217
- // shBasis is an Array[ 9 ]
310
+ /**
311
+ * Computes the SH basis for the given normal vector.
312
+ *
313
+ * @param {Vector3} normal - The normal.
314
+ * @param {Array<number>} shBasis - The target array holding the SH basis.
315
+ */
218
316
  static getBasisAt( normal, shBasis ) {
219
317
 
220
318
  // normal is assumed to be unit length
@@ -1,4 +1,5 @@
1
1
  import { Vector3 } from './Vector3.js';
2
+ import { Vector4 } from './Vector4.js';
2
3
 
3
4
  const _v0 = /*@__PURE__*/ new Vector3();
4
5
  const _v1 = /*@__PURE__*/ new Vector3();
@@ -12,16 +13,56 @@ const _vap = /*@__PURE__*/ new Vector3();
12
13
  const _vbp = /*@__PURE__*/ new Vector3();
13
14
  const _vcp = /*@__PURE__*/ new Vector3();
14
15
 
16
+ const _v40 = /*@__PURE__*/ new Vector4();
17
+ const _v41 = /*@__PURE__*/ new Vector4();
18
+ const _v42 = /*@__PURE__*/ new Vector4();
19
+
20
+ /**
21
+ * A geometric triangle as defined by three vectors representing its three corners.
22
+ */
15
23
  class Triangle {
16
24
 
25
+ /**
26
+ * Constructs a new triangle.
27
+ *
28
+ * @param {Vector3} [a=(0,0,0)] - The first corner of the triangle.
29
+ * @param {Vector3} [b=(0,0,0)] - The second corner of the triangle.
30
+ * @param {Vector3} [c=(0,0,0)] - The third corner of the triangle.
31
+ */
17
32
  constructor( a = new Vector3(), b = new Vector3(), c = new Vector3() ) {
18
33
 
34
+ /**
35
+ * The first corner of the triangle.
36
+ *
37
+ * @type {Vector3}
38
+ */
19
39
  this.a = a;
40
+
41
+ /**
42
+ * The second corner of the triangle.
43
+ *
44
+ * @type {Vector3}
45
+ */
20
46
  this.b = b;
47
+
48
+ /**
49
+ * The third corner of the triangle.
50
+ *
51
+ * @type {Vector3}
52
+ */
21
53
  this.c = c;
22
54
 
23
55
  }
24
56
 
57
+ /**
58
+ * Computes the normal vector of a triangle.
59
+ *
60
+ * @param {Vector3} a - The first corner of the triangle.
61
+ * @param {Vector3} b - The second corner of the triangle.
62
+ * @param {Vector3} c - The third corner of the triangle.
63
+ * @param {Vector3} target - The target vector that is used to store the method's result.
64
+ * @return {Vector3} The triangle's normal.
65
+ */
25
66
  static getNormal( a, b, c, target ) {
26
67
 
27
68
  target.subVectors( c, b );
@@ -39,10 +80,21 @@ class Triangle {
39
80
 
40
81
  }
41
82
 
42
- // static/instance method to calculate barycentric coordinates
43
- // based on: http://www.blackpawn.com/texts/pointinpoly/default.html
83
+ /**
84
+ * Computes a barycentric coordinates from the given vector.
85
+ * Returns `null` if the triangle is degenerate.
86
+ *
87
+ * @param {Vector3} point - A point in 3D space.
88
+ * @param {Vector3} a - The first corner of the triangle.
89
+ * @param {Vector3} b - The second corner of the triangle.
90
+ * @param {Vector3} c - The third corner of the triangle.
91
+ * @param {Vector3} target - The target vector that is used to store the method's result.
92
+ * @return {?Vector3} The barycentric coordinates for the given point
93
+ */
44
94
  static getBarycoord( point, a, b, c, target ) {
45
95
 
96
+ // based on: http://www.blackpawn.com/texts/pointinpoly/default.html
97
+
46
98
  _v0.subVectors( c, a );
47
99
  _v1.subVectors( b, a );
48
100
  _v2.subVectors( point, a );
@@ -72,6 +124,17 @@ class Triangle {
72
124
 
73
125
  }
74
126
 
127
+ /**
128
+ * Returns `true` if the given point, when projected onto the plane of the
129
+ * triangle, lies within the triangle.
130
+ *
131
+ * @param {Vector3} point - The point in 3D space to test.
132
+ * @param {Vector3} a - The first corner of the triangle.
133
+ * @param {Vector3} b - The second corner of the triangle.
134
+ * @param {Vector3} c - The third corner of the triangle.
135
+ * @return {boolean} Whether the given point, when projected onto the plane of the
136
+ * triangle, lies within the triangle or not.
137
+ */
75
138
  static containsPoint( point, a, b, c ) {
76
139
 
77
140
  // if the triangle is degenerate then we can't contain a point
@@ -85,6 +148,20 @@ class Triangle {
85
148
 
86
149
  }
87
150
 
151
+ /**
152
+ * Computes the value barycentrically interpolated for the given point on the
153
+ * triangle. Returns `null` if the triangle is degenerate.
154
+ *
155
+ * @param {Vector3} point - Position of interpolated point.
156
+ * @param {Vector3} p1 - The first corner of the triangle.
157
+ * @param {Vector3} p2 - The second corner of the triangle.
158
+ * @param {Vector3} p3 - The third corner of the triangle.
159
+ * @param {Vector3} v1 - Value to interpolate of first vertex.
160
+ * @param {Vector3} v2 - Value to interpolate of second vertex.
161
+ * @param {Vector3} v3 - Value to interpolate of third vertex.
162
+ * @param {Vector3} target - The target vector that is used to store the method's result.
163
+ * @return {?Vector3} The interpolated value.
164
+ */
88
165
  static getInterpolation( point, p1, p2, p3, v1, v2, v3, target ) {
89
166
 
90
167
  if ( this.getBarycoord( point, p1, p2, p3, _v3 ) === null ) {
@@ -106,6 +183,45 @@ class Triangle {
106
183
 
107
184
  }
108
185
 
186
+ /**
187
+ * Computes the value barycentrically interpolated for the given attribute and indices.
188
+ *
189
+ * @param {BufferAttribute} attr - The attribute to interpolate.
190
+ * @param {number} i1 - Index of first vertex.
191
+ * @param {number} i2 - Index of second vertex.
192
+ * @param {number} i3 - Index of third vertex.
193
+ * @param {Vector3} barycoord - The barycoordinate value to use to interpolate.
194
+ * @param {Vector3} target - The target vector that is used to store the method's result.
195
+ * @return {Vector3} The interpolated attribute value.
196
+ */
197
+ static getInterpolatedAttribute( attr, i1, i2, i3, barycoord, target ) {
198
+
199
+ _v40.setScalar( 0 );
200
+ _v41.setScalar( 0 );
201
+ _v42.setScalar( 0 );
202
+
203
+ _v40.fromBufferAttribute( attr, i1 );
204
+ _v41.fromBufferAttribute( attr, i2 );
205
+ _v42.fromBufferAttribute( attr, i3 );
206
+
207
+ target.setScalar( 0 );
208
+ target.addScaledVector( _v40, barycoord.x );
209
+ target.addScaledVector( _v41, barycoord.y );
210
+ target.addScaledVector( _v42, barycoord.z );
211
+
212
+ return target;
213
+
214
+ }
215
+
216
+ /**
217
+ * Returns `true` if the triangle is oriented towards the given direction.
218
+ *
219
+ * @param {Vector3} a - The first corner of the triangle.
220
+ * @param {Vector3} b - The second corner of the triangle.
221
+ * @param {Vector3} c - The third corner of the triangle.
222
+ * @param {Vector3} direction - The (normalized) direction vector.
223
+ * @return {boolean} Whether the triangle is oriented towards the given direction or not.
224
+ */
109
225
  static isFrontFacing( a, b, c, direction ) {
110
226
 
111
227
  _v0.subVectors( c, b );
@@ -116,6 +232,14 @@ class Triangle {
116
232
 
117
233
  }
118
234
 
235
+ /**
236
+ * Sets the triangle's vertices by copying the given values.
237
+ *
238
+ * @param {Vector3} a - The first corner of the triangle.
239
+ * @param {Vector3} b - The second corner of the triangle.
240
+ * @param {Vector3} c - The third corner of the triangle.
241
+ * @return {Triangle} A reference to this triangle.
242
+ */
119
243
  set( a, b, c ) {
120
244
 
121
245
  this.a.copy( a );
@@ -126,6 +250,15 @@ class Triangle {
126
250
 
127
251
  }
128
252
 
253
+ /**
254
+ * Sets the triangle's vertices by copying the given array values.
255
+ *
256
+ * @param {Array<Vector3>} points - An array with 3D points.
257
+ * @param {number} i0 - The array index representing the first corner of the triangle.
258
+ * @param {number} i1 - The array index representing the second corner of the triangle.
259
+ * @param {number} i2 - The array index representing the third corner of the triangle.
260
+ * @return {Triangle} A reference to this triangle.
261
+ */
129
262
  setFromPointsAndIndices( points, i0, i1, i2 ) {
130
263
 
131
264
  this.a.copy( points[ i0 ] );
@@ -136,6 +269,15 @@ class Triangle {
136
269
 
137
270
  }
138
271
 
272
+ /**
273
+ * Sets the triangle's vertices by copying the given attribute values.
274
+ *
275
+ * @param {BufferAttribute} attribute - A buffer attribute with 3D points data.
276
+ * @param {number} i0 - The attribute index representing the first corner of the triangle.
277
+ * @param {number} i1 - The attribute index representing the second corner of the triangle.
278
+ * @param {number} i2 - The attribute index representing the third corner of the triangle.
279
+ * @return {Triangle} A reference to this triangle.
280
+ */
139
281
  setFromAttributeAndIndices( attribute, i0, i1, i2 ) {
140
282
 
141
283
  this.a.fromBufferAttribute( attribute, i0 );
@@ -146,12 +288,23 @@ class Triangle {
146
288
 
147
289
  }
148
290
 
291
+ /**
292
+ * Returns a new triangle with copied values from this instance.
293
+ *
294
+ * @return {Triangle} A clone of this instance.
295
+ */
149
296
  clone() {
150
297
 
151
298
  return new this.constructor().copy( this );
152
299
 
153
300
  }
154
301
 
302
+ /**
303
+ * Copies the values of the given triangle to this instance.
304
+ *
305
+ * @param {Triangle} triangle - The triangle to copy.
306
+ * @return {Triangle} A reference to this triangle.
307
+ */
155
308
  copy( triangle ) {
156
309
 
157
310
  this.a.copy( triangle.a );
@@ -162,6 +315,11 @@ class Triangle {
162
315
 
163
316
  }
164
317
 
318
+ /**
319
+ * Computes the area of the triangle.
320
+ *
321
+ * @return {number} The triangle's area.
322
+ */
165
323
  getArea() {
166
324
 
167
325
  _v0.subVectors( this.c, this.b );
@@ -171,54 +329,118 @@ class Triangle {
171
329
 
172
330
  }
173
331
 
332
+ /**
333
+ * Computes the midpoint of the triangle.
334
+ *
335
+ * @param {Vector3} target - The target vector that is used to store the method's result.
336
+ * @return {Vector3} The triangle's midpoint.
337
+ */
174
338
  getMidpoint( target ) {
175
339
 
176
340
  return target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );
177
341
 
178
342
  }
179
343
 
344
+ /**
345
+ * Computes the normal of the triangle.
346
+ *
347
+ * @param {Vector3} target - The target vector that is used to store the method's result.
348
+ * @return {Vector3} The triangle's normal.
349
+ */
180
350
  getNormal( target ) {
181
351
 
182
352
  return Triangle.getNormal( this.a, this.b, this.c, target );
183
353
 
184
354
  }
185
355
 
356
+ /**
357
+ * Computes a plane the triangle lies within.
358
+ *
359
+ * @param {Plane} target - The target vector that is used to store the method's result.
360
+ * @return {Plane} The plane the triangle lies within.
361
+ */
186
362
  getPlane( target ) {
187
363
 
188
364
  return target.setFromCoplanarPoints( this.a, this.b, this.c );
189
365
 
190
366
  }
191
367
 
368
+ /**
369
+ * Computes a barycentric coordinates from the given vector.
370
+ * Returns `null` if the triangle is degenerate.
371
+ *
372
+ * @param {Vector3} point - A point in 3D space.
373
+ * @param {Vector3} target - The target vector that is used to store the method's result.
374
+ * @return {?Vector3} The barycentric coordinates for the given point
375
+ */
192
376
  getBarycoord( point, target ) {
193
377
 
194
378
  return Triangle.getBarycoord( point, this.a, this.b, this.c, target );
195
379
 
196
380
  }
197
381
 
382
+ /**
383
+ * Computes the value barycentrically interpolated for the given point on the
384
+ * triangle. Returns `null` if the triangle is degenerate.
385
+ *
386
+ * @param {Vector3} point - Position of interpolated point.
387
+ * @param {Vector3} v1 - Value to interpolate of first vertex.
388
+ * @param {Vector3} v2 - Value to interpolate of second vertex.
389
+ * @param {Vector3} v3 - Value to interpolate of third vertex.
390
+ * @param {Vector3} target - The target vector that is used to store the method's result.
391
+ * @return {?Vector3} The interpolated value.
392
+ */
198
393
  getInterpolation( point, v1, v2, v3, target ) {
199
394
 
200
395
  return Triangle.getInterpolation( point, this.a, this.b, this.c, v1, v2, v3, target );
201
396
 
202
397
  }
203
398
 
399
+ /**
400
+ * Returns `true` if the given point, when projected onto the plane of the
401
+ * triangle, lies within the triangle.
402
+ *
403
+ * @param {Vector3} point - The point in 3D space to test.
404
+ * @return {boolean} Whether the given point, when projected onto the plane of the
405
+ * triangle, lies within the triangle or not.
406
+ */
204
407
  containsPoint( point ) {
205
408
 
206
409
  return Triangle.containsPoint( point, this.a, this.b, this.c );
207
410
 
208
411
  }
209
412
 
413
+ /**
414
+ * Returns `true` if the triangle is oriented towards the given direction.
415
+ *
416
+ * @param {Vector3} direction - The (normalized) direction vector.
417
+ * @return {boolean} Whether the triangle is oriented towards the given direction or not.
418
+ */
210
419
  isFrontFacing( direction ) {
211
420
 
212
421
  return Triangle.isFrontFacing( this.a, this.b, this.c, direction );
213
422
 
214
423
  }
215
424
 
425
+ /**
426
+ * Returns `true` if this triangle intersects with the given box.
427
+ *
428
+ * @param {Box3} box - The box to intersect.
429
+ * @return {boolean} Whether this triangle intersects with the given box or not.
430
+ */
216
431
  intersectsBox( box ) {
217
432
 
218
433
  return box.intersectsTriangle( this );
219
434
 
220
435
  }
221
436
 
437
+ /**
438
+ * Returns the closest point on the triangle to the given point.
439
+ *
440
+ * @param {Vector3} p - The point to compute the closest point for.
441
+ * @param {Vector3} target - The target vector that is used to store the method's result.
442
+ * @return {Vector3} The closest point on the triangle.
443
+ */
222
444
  closestPointToPoint( p, target ) {
223
445
 
224
446
  const a = this.a, b = this.b, c = this.c;
@@ -300,6 +522,12 @@ class Triangle {
300
522
 
301
523
  }
302
524
 
525
+ /**
526
+ * Returns `true` if this triangle is equal with the given one.
527
+ *
528
+ * @param {Triangle} triangle - The triangle to test for equality.
529
+ * @return {boolean} Whether this triangle is equal with the given one.
530
+ */
303
531
  equals( triangle ) {
304
532
 
305
533
  return triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );