@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,22 +1,85 @@
1
1
  import TempNode from '../core/TempNode.js';
2
2
  import { sub, mul, div } from './OperatorNode.js';
3
- import { addNodeClass } from '../core/Node.js';
4
- import { addNodeElement, nodeObject, nodeProxy, float, vec2, vec3, vec4, Fn } from '../shadernode/ShaderNode.js';
5
-
3
+ import { addMethodChaining, nodeObject, nodeProxy, float, vec2, vec3, vec4, Fn } from '../tsl/TSLCore.js';
4
+ import { WebGLCoordinateSystem, WebGPUCoordinateSystem } from '../../constants.js';
5
+
6
+ /**
7
+ * This node represents a variety of mathematical methods available in shaders.
8
+ * They are divided into three categories:
9
+ *
10
+ * - Methods with one input like `sin`, `cos` or `normalize`.
11
+ * - Methods with two inputs like `dot`, `cross` or `pow`.
12
+ * - Methods with three inputs like `mix`, `clamp` or `smoothstep`.
13
+ *
14
+ * @augments TempNode
15
+ */
6
16
  class MathNode extends TempNode {
7
17
 
18
+ static get type() {
19
+
20
+ return 'MathNode';
21
+
22
+ }
23
+
24
+ /**
25
+ * Constructs a new math node.
26
+ *
27
+ * @param {string} method - The method name.
28
+ * @param {Node} aNode - The first input.
29
+ * @param {?Node} [bNode=null] - The second input.
30
+ * @param {?Node} [cNode=null] - The third input.
31
+ */
8
32
  constructor( method, aNode, bNode = null, cNode = null ) {
9
33
 
10
34
  super();
11
35
 
36
+ /**
37
+ * The method name.
38
+ *
39
+ * @type {string}
40
+ */
12
41
  this.method = method;
13
42
 
43
+ /**
44
+ * The first input.
45
+ *
46
+ * @type {Node}
47
+ */
14
48
  this.aNode = aNode;
49
+
50
+ /**
51
+ * The second input.
52
+ *
53
+ * @type {?Node}
54
+ * @default null
55
+ */
15
56
  this.bNode = bNode;
57
+
58
+ /**
59
+ * The third input.
60
+ *
61
+ * @type {?Node}
62
+ * @default null
63
+ */
16
64
  this.cNode = cNode;
17
65
 
66
+ /**
67
+ * This flag can be used for type testing.
68
+ *
69
+ * @type {boolean}
70
+ * @readonly
71
+ * @default true
72
+ */
73
+ this.isMathNode = true;
74
+
18
75
  }
19
76
 
77
+ /**
78
+ * The input type is inferred from the node types of the input nodes.
79
+ *
80
+ * @param {NodeBuilder} builder - The current node builder.
81
+ * @return {string} The input type.
82
+ */
20
83
  getInputType( builder ) {
21
84
 
22
85
  const aType = this.aNode.getNodeType( builder );
@@ -45,6 +108,12 @@ class MathNode extends TempNode {
45
108
 
46
109
  }
47
110
 
111
+ /**
112
+ * The selected method as well as the input type determine the node type of this node.
113
+ *
114
+ * @param {NodeBuilder} builder - The current node builder.
115
+ * @return {string} The node type.
116
+ */
48
117
  getNodeType( builder ) {
49
118
 
50
119
  const method = this.method;
@@ -79,7 +148,7 @@ class MathNode extends TempNode {
79
148
 
80
149
  generate( builder, output ) {
81
150
 
82
- const method = this.method;
151
+ let method = this.method;
83
152
 
84
153
  const type = this.getNodeType( builder );
85
154
  const inputType = this.getInputType( builder );
@@ -88,7 +157,7 @@ class MathNode extends TempNode {
88
157
  const b = this.bNode;
89
158
  const c = this.cNode;
90
159
 
91
- const isWebGL = builder.renderer.isWebGLRenderer === true;
160
+ const coordinateSystem = builder.renderer.coordinateSystem;
92
161
 
93
162
  if ( method === MathNode.TRANSFORM_DIRECTION ) {
94
163
 
@@ -139,14 +208,14 @@ class MathNode extends TempNode {
139
208
  b.build( builder, type )
140
209
  );
141
210
 
142
- } else if ( method === MathNode.STEP ) {
211
+ } else if ( coordinateSystem === WebGLCoordinateSystem && method === MathNode.STEP ) {
143
212
 
144
213
  params.push(
145
214
  a.build( builder, builder.getTypeLength( a.getNodeType( builder ) ) === 1 ? 'float' : inputType ),
146
215
  b.build( builder, inputType )
147
216
  );
148
217
 
149
- } else if ( ( isWebGL && ( method === MathNode.MIN || method === MathNode.MAX ) ) || method === MathNode.MOD ) {
218
+ } else if ( ( coordinateSystem === WebGLCoordinateSystem && ( method === MathNode.MIN || method === MathNode.MAX ) ) || method === MathNode.MOD ) {
150
219
 
151
220
  params.push(
152
221
  a.build( builder, inputType ),
@@ -171,6 +240,12 @@ class MathNode extends TempNode {
171
240
 
172
241
  } else {
173
242
 
243
+ if ( coordinateSystem === WebGPUCoordinateSystem && method === MathNode.ATAN && b !== null ) {
244
+
245
+ method = 'atan2';
246
+
247
+ }
248
+
174
249
  params.push( a.build( builder, inputType ) );
175
250
  if ( b !== null ) params.push( b.build( builder, inputType ) );
176
251
  if ( c !== null ) params.push( c.build( builder, inputType ) );
@@ -205,7 +280,6 @@ class MathNode extends TempNode {
205
280
 
206
281
  MathNode.ALL = 'all';
207
282
  MathNode.ANY = 'any';
208
- MathNode.EQUALS = 'equals';
209
283
 
210
284
  MathNode.RADIANS = 'radians';
211
285
  MathNode.DEGREES = 'degrees';
@@ -236,12 +310,12 @@ MathNode.ROUND = 'round';
236
310
  MathNode.RECIPROCAL = 'reciprocal';
237
311
  MathNode.TRUNC = 'trunc';
238
312
  MathNode.FWIDTH = 'fwidth';
239
- MathNode.BITCAST = 'bitcast';
240
313
  MathNode.TRANSPOSE = 'transpose';
241
314
 
242
315
  // 2 inputs
243
316
 
244
- MathNode.ATAN2 = 'atan2';
317
+ MathNode.BITCAST = 'bitcast';
318
+ MathNode.EQUALS = 'equals';
245
319
  MathNode.MIN = 'min';
246
320
  MathNode.MAX = 'max';
247
321
  MathNode.MOD = 'mod';
@@ -264,73 +338,636 @@ MathNode.FACEFORWARD = 'faceforward';
264
338
 
265
339
  export default MathNode;
266
340
 
267
- export const EPSILON = float( 1e-6 );
268
- export const INFINITY = float( 1e6 );
269
- export const PI = float( Math.PI );
270
- export const PI2 = float( Math.PI * 2 );
271
-
272
- export const all = nodeProxy( MathNode, MathNode.ALL );
273
- export const any = nodeProxy( MathNode, MathNode.ANY );
274
- export const equals = nodeProxy( MathNode, MathNode.EQUALS );
275
-
276
- export const radians = nodeProxy( MathNode, MathNode.RADIANS );
277
- export const degrees = nodeProxy( MathNode, MathNode.DEGREES );
278
- export const exp = nodeProxy( MathNode, MathNode.EXP );
279
- export const exp2 = nodeProxy( MathNode, MathNode.EXP2 );
280
- export const log = nodeProxy( MathNode, MathNode.LOG );
281
- export const log2 = nodeProxy( MathNode, MathNode.LOG2 );
282
- export const sqrt = nodeProxy( MathNode, MathNode.SQRT );
283
- export const inverseSqrt = nodeProxy( MathNode, MathNode.INVERSE_SQRT );
284
- export const floor = nodeProxy( MathNode, MathNode.FLOOR );
285
- export const ceil = nodeProxy( MathNode, MathNode.CEIL );
286
- export const normalize = nodeProxy( MathNode, MathNode.NORMALIZE );
287
- export const fract = nodeProxy( MathNode, MathNode.FRACT );
288
- export const sin = nodeProxy( MathNode, MathNode.SIN );
289
- export const cos = nodeProxy( MathNode, MathNode.COS );
290
- export const tan = nodeProxy( MathNode, MathNode.TAN );
291
- export const asin = nodeProxy( MathNode, MathNode.ASIN );
292
- export const acos = nodeProxy( MathNode, MathNode.ACOS );
293
- export const atan = nodeProxy( MathNode, MathNode.ATAN );
294
- export const abs = nodeProxy( MathNode, MathNode.ABS );
295
- export const sign = nodeProxy( MathNode, MathNode.SIGN );
296
- export const length = nodeProxy( MathNode, MathNode.LENGTH );
297
- export const negate = nodeProxy( MathNode, MathNode.NEGATE );
298
- export const oneMinus = nodeProxy( MathNode, MathNode.ONE_MINUS );
299
- export const dFdx = nodeProxy( MathNode, MathNode.DFDX );
300
- export const dFdy = nodeProxy( MathNode, MathNode.DFDY );
301
- export const round = nodeProxy( MathNode, MathNode.ROUND );
302
- export const reciprocal = nodeProxy( MathNode, MathNode.RECIPROCAL );
303
- export const trunc = nodeProxy( MathNode, MathNode.TRUNC );
304
- export const fwidth = nodeProxy( MathNode, MathNode.FWIDTH );
305
- export const bitcast = nodeProxy( MathNode, MathNode.BITCAST );
306
- export const transpose = nodeProxy( MathNode, MathNode.TRANSPOSE );
307
-
308
- export const atan2 = nodeProxy( MathNode, MathNode.ATAN2 );
309
- export const min = nodeProxy( MathNode, MathNode.MIN );
310
- export const max = nodeProxy( MathNode, MathNode.MAX );
311
- export const mod = nodeProxy( MathNode, MathNode.MOD );
312
- export const step = nodeProxy( MathNode, MathNode.STEP );
313
- export const reflect = nodeProxy( MathNode, MathNode.REFLECT );
314
- export const distance = nodeProxy( MathNode, MathNode.DISTANCE );
315
- export const difference = nodeProxy( MathNode, MathNode.DIFFERENCE );
316
- export const dot = nodeProxy( MathNode, MathNode.DOT );
317
- export const cross = nodeProxy( MathNode, MathNode.CROSS );
318
- export const pow = nodeProxy( MathNode, MathNode.POW );
319
- export const pow2 = nodeProxy( MathNode, MathNode.POW, 2 );
320
- export const pow3 = nodeProxy( MathNode, MathNode.POW, 3 );
321
- export const pow4 = nodeProxy( MathNode, MathNode.POW, 4 );
322
- export const transformDirection = nodeProxy( MathNode, MathNode.TRANSFORM_DIRECTION );
341
+ // 1 inputs
342
+
343
+ /**
344
+ * A small value used to handle floating-point precision errors.
345
+ *
346
+ * @tsl
347
+ * @type {Node<float>}
348
+ */
349
+ export const EPSILON = /*@__PURE__*/ float( 1e-6 );
350
+
351
+ /**
352
+ * Represents infinity.
353
+ *
354
+ * @tsl
355
+ * @type {Node<float>}
356
+ */
357
+ export const INFINITY = /*@__PURE__*/ float( 1e6 );
358
+
359
+ /**
360
+ * Represents PI.
361
+ *
362
+ * @tsl
363
+ * @type {Node<float>}
364
+ */
365
+ export const PI = /*@__PURE__*/ float( Math.PI );
366
+
367
+ /**
368
+ * Represents PI * 2.
369
+ *
370
+ * @tsl
371
+ * @type {Node<float>}
372
+ */
373
+ export const PI2 = /*@__PURE__*/ float( Math.PI * 2 );
374
+
375
+ /**
376
+ * Returns `true` if all components of `x` are `true`.
377
+ *
378
+ * @tsl
379
+ * @function
380
+ * @param {Node | number} x - The parameter.
381
+ * @returns {Node<bool>}
382
+ */
383
+ export const all = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ALL );
384
+
385
+ /**
386
+ * Returns `true` if any components of `x` are `true`.
387
+ *
388
+ * @tsl
389
+ * @function
390
+ * @param {Node | number} x - The parameter.
391
+ * @returns {Node<bool>}
392
+ */
393
+ export const any = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ANY );
394
+
395
+ /**
396
+ * Converts a quantity in degrees to radians.
397
+ *
398
+ * @tsl
399
+ * @function
400
+ * @param {Node | number} x - The input in degrees.
401
+ * @returns {Node}
402
+ */
403
+ export const radians = /*@__PURE__*/ nodeProxy( MathNode, MathNode.RADIANS );
404
+
405
+ /**
406
+ * Convert a quantity in radians to degrees.
407
+ *
408
+ * @tsl
409
+ * @function
410
+ * @param {Node | number} x - The input in radians.
411
+ * @returns {Node}
412
+ */
413
+ export const degrees = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DEGREES );
414
+
415
+ /**
416
+ * Returns the natural exponentiation of the parameter.
417
+ *
418
+ * @tsl
419
+ * @function
420
+ * @param {Node | number} x - The parameter.
421
+ * @returns {Node}
422
+ */
423
+ export const exp = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EXP );
424
+
425
+ /**
426
+ * Returns 2 raised to the power of the parameter.
427
+ *
428
+ * @tsl
429
+ * @function
430
+ * @param {Node | number} x - The parameter.
431
+ * @returns {Node}
432
+ */
433
+ export const exp2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EXP2 );
434
+
435
+ /**
436
+ * Returns the natural logarithm of the parameter.
437
+ *
438
+ * @tsl
439
+ * @function
440
+ * @param {Node | number} x - The parameter.
441
+ * @returns {Node}
442
+ */
443
+ export const log = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LOG );
444
+
445
+ /**
446
+ * Returns the base 2 logarithm of the parameter.
447
+ *
448
+ * @tsl
449
+ * @function
450
+ * @param {Node | number} x - The parameter.
451
+ * @returns {Node}
452
+ */
453
+ export const log2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LOG2 );
454
+
455
+ /**
456
+ * Returns the square root of the parameter.
457
+ *
458
+ * @tsl
459
+ * @function
460
+ * @param {Node | number} x - The parameter.
461
+ * @returns {Node}
462
+ */
463
+ export const sqrt = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SQRT );
464
+
465
+ /**
466
+ * Returns the inverse of the square root of the parameter.
467
+ *
468
+ * @tsl
469
+ * @function
470
+ * @param {Node | number} x - The parameter.
471
+ * @returns {Node}
472
+ */
473
+ export const inverseSqrt = /*@__PURE__*/ nodeProxy( MathNode, MathNode.INVERSE_SQRT );
474
+
475
+ /**
476
+ * Finds the nearest integer less than or equal to the parameter.
477
+ *
478
+ * @tsl
479
+ * @function
480
+ * @param {Node | number} x - The parameter.
481
+ * @returns {Node}
482
+ */
483
+ export const floor = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FLOOR );
484
+
485
+ /**
486
+ * Finds the nearest integer that is greater than or equal to the parameter.
487
+ *
488
+ * @tsl
489
+ * @function
490
+ * @param {Node | number} x - The parameter.
491
+ * @returns {Node}
492
+ */
493
+ export const ceil = /*@__PURE__*/ nodeProxy( MathNode, MathNode.CEIL );
494
+
495
+ /**
496
+ * Calculates the unit vector in the same direction as the original vector.
497
+ *
498
+ * @tsl
499
+ * @function
500
+ * @param {Node} x - The input vector.
501
+ * @returns {Node}
502
+ */
503
+ export const normalize = /*@__PURE__*/ nodeProxy( MathNode, MathNode.NORMALIZE );
504
+
505
+ /**
506
+ * Computes the fractional part of the parameter.
507
+ *
508
+ * @tsl
509
+ * @function
510
+ * @param {Node | number} x - The parameter.
511
+ * @returns {Node}
512
+ */
513
+ export const fract = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FRACT );
514
+
515
+ /**
516
+ * Returns the sine of the parameter.
517
+ *
518
+ * @tsl
519
+ * @function
520
+ * @param {Node | number} x - The parameter.
521
+ * @returns {Node}
522
+ */
523
+ export const sin = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SIN );
524
+
525
+ /**
526
+ * Returns the cosine of the parameter.
527
+ *
528
+ * @tsl
529
+ * @function
530
+ * @param {Node | number} x - The parameter.
531
+ * @returns {Node}
532
+ */
533
+ export const cos = /*@__PURE__*/ nodeProxy( MathNode, MathNode.COS );
534
+
535
+ /**
536
+ * Returns the tangent of the parameter.
537
+ *
538
+ * @tsl
539
+ * @function
540
+ * @param {Node | number} x - The parameter.
541
+ * @returns {Node}
542
+ */
543
+ export const tan = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TAN );
544
+
545
+ /**
546
+ * Returns the arcsine of the parameter.
547
+ *
548
+ * @tsl
549
+ * @function
550
+ * @param {Node | number} x - The parameter.
551
+ * @returns {Node}
552
+ */
553
+ export const asin = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ASIN );
554
+
555
+ /**
556
+ * Returns the arccosine of the parameter.
557
+ *
558
+ * @tsl
559
+ * @function
560
+ * @param {Node | number} x - The parameter.
561
+ * @returns {Node}
562
+ */
563
+ export const acos = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ACOS );
564
+
565
+ /**
566
+ * Returns the arc-tangent of the parameter.
567
+ * If two parameters are provided, the result is `atan2(y/x)`.
568
+ *
569
+ * @tsl
570
+ * @function
571
+ * @param {Node | number} y - The y parameter.
572
+ * @param {?(Node | number)} x - The x parameter.
573
+ * @returns {Node}
574
+ */
575
+ export const atan = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ATAN );
576
+
577
+ /**
578
+ * Returns the absolute value of the parameter.
579
+ *
580
+ * @tsl
581
+ * @function
582
+ * @param {Node | number} x - The parameter.
583
+ * @returns {Node}
584
+ */
585
+ export const abs = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ABS );
586
+
587
+ /**
588
+ * Extracts the sign of the parameter.
589
+ *
590
+ * @tsl
591
+ * @function
592
+ * @param {Node | number} x - The parameter.
593
+ * @returns {Node}
594
+ */
595
+ export const sign = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SIGN );
596
+
597
+ /**
598
+ * Calculates the length of a vector.
599
+ *
600
+ * @tsl
601
+ * @function
602
+ * @param {Node} x - The parameter.
603
+ * @returns {Node<float>}
604
+ */
605
+ export const length = /*@__PURE__*/ nodeProxy( MathNode, MathNode.LENGTH );
606
+
607
+ /**
608
+ * Negates the value of the parameter (-x).
609
+ *
610
+ * @tsl
611
+ * @function
612
+ * @param {Node | number} x - The parameter.
613
+ * @returns {Node}
614
+ */
615
+ export const negate = /*@__PURE__*/ nodeProxy( MathNode, MathNode.NEGATE );
616
+
617
+ /**
618
+ * Return `1` minus the parameter.
619
+ *
620
+ * @tsl
621
+ * @function
622
+ * @param {Node | number} x - The parameter.
623
+ * @returns {Node}
624
+ */
625
+ export const oneMinus = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ONE_MINUS );
626
+
627
+ /**
628
+ * Returns the partial derivative of the parameter with respect to x.
629
+ *
630
+ * @tsl
631
+ * @function
632
+ * @param {Node | number} x - The parameter.
633
+ * @returns {Node}
634
+ */
635
+ export const dFdx = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DFDX );
636
+
637
+ /**
638
+ * Returns the partial derivative of the parameter with respect to y.
639
+ *
640
+ * @tsl
641
+ * @function
642
+ * @param {Node | number} x - The parameter.
643
+ * @returns {Node}
644
+ */
645
+ export const dFdy = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DFDY );
646
+
647
+ /**
648
+ * Rounds the parameter to the nearest integer.
649
+ *
650
+ * @tsl
651
+ * @function
652
+ * @param {Node | number} x - The parameter.
653
+ * @returns {Node}
654
+ */
655
+ export const round = /*@__PURE__*/ nodeProxy( MathNode, MathNode.ROUND );
656
+
657
+ /**
658
+ * Returns the reciprocal of the parameter `(1/x)`.
659
+ *
660
+ * @tsl
661
+ * @function
662
+ * @param {Node | number} x - The parameter.
663
+ * @returns {Node}
664
+ */
665
+ export const reciprocal = /*@__PURE__*/ nodeProxy( MathNode, MathNode.RECIPROCAL );
666
+
667
+ /**
668
+ * Truncates the parameter, removing the fractional part.
669
+ *
670
+ * @tsl
671
+ * @function
672
+ * @param {Node | number} x - The parameter.
673
+ * @returns {Node}
674
+ */
675
+ export const trunc = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRUNC );
676
+
677
+ /**
678
+ * Returns the sum of the absolute derivatives in x and y.
679
+ *
680
+ * @tsl
681
+ * @function
682
+ * @param {Node | number} x - The parameter.
683
+ * @returns {Node}
684
+ */
685
+ export const fwidth = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FWIDTH );
686
+
687
+ /**
688
+ * Returns the transpose of a matrix.
689
+ *
690
+ * @tsl
691
+ * @function
692
+ * @param {Node<mat2|mat3|mat4>} x - The parameter.
693
+ * @returns {Node}
694
+ */
695
+ export const transpose = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRANSPOSE );
323
696
 
697
+ // 2 inputs
698
+
699
+ /**
700
+ * Reinterpret the bit representation of a value in one type as a value in another type.
701
+ *
702
+ * @tsl
703
+ * @function
704
+ * @param {Node | number} x - The parameter.
705
+ * @param {string} y - The new type.
706
+ * @returns {Node}
707
+ */
708
+ export const bitcast = /*@__PURE__*/ nodeProxy( MathNode, MathNode.BITCAST );
709
+
710
+ /**
711
+ * Returns `true` if `x` equals `y`.
712
+ *
713
+ * @tsl
714
+ * @function
715
+ * @param {Node | number} x - The first parameter.
716
+ * @param {Node | number} y - The second parameter.
717
+ * @returns {Node<bool>}
718
+ */
719
+ export const equals = /*@__PURE__*/ nodeProxy( MathNode, MathNode.EQUALS );
720
+
721
+ /**
722
+ * Returns the lesser of two values.
723
+ *
724
+ * @tsl
725
+ * @function
726
+ * @param {Node | number} x - The y parameter.
727
+ * @param {Node | number} y - The x parameter.
728
+ * @returns {Node}
729
+ */
730
+ export const min = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MIN );
731
+
732
+ /**
733
+ * Returns the greater of two values.
734
+ *
735
+ * @tsl
736
+ * @function
737
+ * @param {Node | number} x - The y parameter.
738
+ * @param {Node | number} y - The x parameter.
739
+ * @returns {Node}
740
+ */
741
+ export const max = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MAX );
742
+
743
+ /**
744
+ * Computes the remainder of dividing the first node by the second one.
745
+ *
746
+ * @tsl
747
+ * @function
748
+ * @param {Node | number} x - The y parameter.
749
+ * @param {Node | number} y - The x parameter.
750
+ * @returns {Node}
751
+ */
752
+ export const mod = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MOD );
753
+
754
+ /**
755
+ * Generate a step function by comparing two values.
756
+ *
757
+ * @tsl
758
+ * @function
759
+ * @param {Node | number} x - The y parameter.
760
+ * @param {Node | number} y - The x parameter.
761
+ * @returns {Node}
762
+ */
763
+ export const step = /*@__PURE__*/ nodeProxy( MathNode, MathNode.STEP );
764
+
765
+ /**
766
+ * Calculates the reflection direction for an incident vector.
767
+ *
768
+ * @tsl
769
+ * @function
770
+ * @param {Node<vec2|vec3|vec4>} I - The incident vector.
771
+ * @param {Node<vec2|vec3|vec4>} N - The normal vector.
772
+ * @returns {Node<vec2|vec3|vec4>}
773
+ */
774
+ export const reflect = /*@__PURE__*/ nodeProxy( MathNode, MathNode.REFLECT );
775
+
776
+ /**
777
+ * Calculates the distance between two points.
778
+ *
779
+ * @tsl
780
+ * @function
781
+ * @param {Node<vec2|vec3|vec4>} x - The first point.
782
+ * @param {Node<vec2|vec3|vec4>} y - The second point.
783
+ * @returns {Node<float>}
784
+ */
785
+ export const distance = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DISTANCE );
786
+
787
+ /**
788
+ * Calculates the absolute difference between two values.
789
+ *
790
+ * @tsl
791
+ * @function
792
+ * @param {Node | number} x - The first parameter.
793
+ * @param {Node | number} y - The second parameter.
794
+ * @returns {Node}
795
+ */
796
+ export const difference = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DIFFERENCE );
797
+
798
+ /**
799
+ * Calculates the dot product of two vectors.
800
+ *
801
+ * @tsl
802
+ * @function
803
+ * @param {Node<vec2|vec3|vec4>} x - The first vector.
804
+ * @param {Node<vec2|vec3|vec4>} y - The second vector.
805
+ * @returns {Node<float>}
806
+ */
807
+ export const dot = /*@__PURE__*/ nodeProxy( MathNode, MathNode.DOT );
808
+
809
+ /**
810
+ * Calculates the cross product of two vectors.
811
+ *
812
+ * @tsl
813
+ * @function
814
+ * @param {Node<vec2|vec3|vec4>} x - The first vector.
815
+ * @param {Node<vec2|vec3|vec4>} y - The second vector.
816
+ * @returns {Node<vec2|vec3|vec4>}
817
+ */
818
+ export const cross = /*@__PURE__*/ nodeProxy( MathNode, MathNode.CROSS );
819
+
820
+ /**
821
+ * Return the value of the first parameter raised to the power of the second one.
822
+ *
823
+ * @tsl
824
+ * @function
825
+ * @param {Node | number} x - The first parameter.
826
+ * @param {Node | number} y - The second parameter.
827
+ * @returns {Node}
828
+ */
829
+ export const pow = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW );
830
+
831
+ /**
832
+ * Returns the square of the parameter.
833
+ *
834
+ * @tsl
835
+ * @function
836
+ * @param {Node | number} x - The first parameter.
837
+ * @returns {Node}
838
+ */
839
+ export const pow2 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 2 );
840
+
841
+ /**
842
+ * Returns the cube of the parameter.
843
+ *
844
+ * @tsl
845
+ * @function
846
+ * @param {Node | number} x - The first parameter.
847
+ * @returns {Node}
848
+ */
849
+ export const pow3 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 3 );
850
+
851
+ /**
852
+ * Returns the fourth power of the parameter.
853
+ *
854
+ * @tsl
855
+ * @function
856
+ * @param {Node | number} x - The first parameter.
857
+ * @returns {Node}
858
+ */
859
+ export const pow4 = /*@__PURE__*/ nodeProxy( MathNode, MathNode.POW, 4 );
860
+
861
+ /**
862
+ * Transforms the direction of a vector by a matrix and then normalizes the result.
863
+ *
864
+ * @tsl
865
+ * @function
866
+ * @param {Node<vec2|vec3|vec4>} direction - The direction vector.
867
+ * @param {Node<mat2|mat3|mat4>} matrix - The transformation matrix.
868
+ * @returns {Node}
869
+ */
870
+ export const transformDirection = /*@__PURE__*/ nodeProxy( MathNode, MathNode.TRANSFORM_DIRECTION );
871
+
872
+ /**
873
+ * Returns the cube root of a number.
874
+ *
875
+ * @tsl
876
+ * @function
877
+ * @param {Node | number} a - The first parameter.
878
+ * @returns {Node}
879
+ */
324
880
  export const cbrt = ( a ) => mul( sign( a ), pow( abs( a ), 1.0 / 3.0 ) );
881
+
882
+ /**
883
+ * Calculate the squared length of a vector.
884
+ *
885
+ * @tsl
886
+ * @function
887
+ * @param {Node<vec2|vec3|vec4>} a - The vector.
888
+ * @returns {Node<float>}
889
+ */
325
890
  export const lengthSq = ( a ) => dot( a, a );
326
- export const mix = nodeProxy( MathNode, MathNode.MIX );
891
+
892
+ /**
893
+ * Linearly interpolates between two values.
894
+ *
895
+ * @tsl
896
+ * @function
897
+ * @param {Node | number} a - The first parameter.
898
+ * @param {Node | number} b - The second parameter.
899
+ * @param {Node | number} t - The interpolation value.
900
+ * @returns {Node}
901
+ */
902
+ export const mix = /*@__PURE__*/ nodeProxy( MathNode, MathNode.MIX );
903
+
904
+ /**
905
+ * Constrains a value to lie between two further values.
906
+ *
907
+ * @tsl
908
+ * @function
909
+ * @param {Node | number} value - The value to constrain.
910
+ * @param {Node | number} [low=0] - The lower bound.
911
+ * @param {Node | number} [high=1] - The upper bound.
912
+ * @returns {Node}
913
+ */
327
914
  export const clamp = ( value, low = 0, high = 1 ) => nodeObject( new MathNode( MathNode.CLAMP, nodeObject( value ), nodeObject( low ), nodeObject( high ) ) );
915
+
916
+ /**
917
+ * Constrains a value between `0` and `1`.
918
+ *
919
+ * @tsl
920
+ * @function
921
+ * @param {Node | number} value - The value to constrain.
922
+ * @returns {Node}
923
+ */
328
924
  export const saturate = ( value ) => clamp( value );
329
- export const refract = nodeProxy( MathNode, MathNode.REFRACT );
330
- export const smoothstep = nodeProxy( MathNode, MathNode.SMOOTHSTEP );
331
- export const faceForward = nodeProxy( MathNode, MathNode.FACEFORWARD );
332
925
 
333
- export const rand = Fn( ( [ uv ] ) => {
926
+ /**
927
+ * Calculates the refraction direction for an incident vector.
928
+ *
929
+ * @tsl
930
+ * @function
931
+ * @param {Node<vec2|vec3|vec4>} I - The incident vector.
932
+ * @param {Node<vec2|vec3|vec4>} N - The normal vector.
933
+ * @param {Node<float>} eta - The the ratio of indices of refraction.
934
+ * @returns {Node<vec2|vec3|vec4>}
935
+ */
936
+ export const refract = /*@__PURE__*/ nodeProxy( MathNode, MathNode.REFRACT );
937
+
938
+ /**
939
+ * Performs a Hermite interpolation between two values.
940
+ *
941
+ * @tsl
942
+ * @function
943
+ * @param {Node | number} low - The value of the lower edge of the Hermite function.
944
+ * @param {Node | number} high - The value of the upper edge of the Hermite function.
945
+ * @param {Node | number} x - The source value for interpolation.
946
+ * @returns {Node}
947
+ */
948
+ export const smoothstep = /*@__PURE__*/ nodeProxy( MathNode, MathNode.SMOOTHSTEP );
949
+
950
+ /**
951
+ * Returns a vector pointing in the same direction as another.
952
+ *
953
+ * @tsl
954
+ * @function
955
+ * @param {Node<vec2|vec3|vec4>} N - The vector to orient.
956
+ * @param {Node<vec2|vec3|vec4>} I - The incident vector.
957
+ * @param {Node<vec2|vec3|vec4>} Nref - The reference vector.
958
+ * @returns {Node<vec2|vec3|vec4>}
959
+ */
960
+ export const faceForward = /*@__PURE__*/ nodeProxy( MathNode, MathNode.FACEFORWARD );
961
+
962
+ /**
963
+ * Returns a random value for the given uv.
964
+ *
965
+ * @tsl
966
+ * @function
967
+ * @param {Node<vec2>} uv - The uv node.
968
+ * @returns {Node<float>}
969
+ */
970
+ export const rand = /*@__PURE__*/ Fn( ( [ uv ] ) => {
334
971
 
335
972
  const a = 12.9898, b = 78.233, c = 43758.5453;
336
973
  const dt = dot( uv.xy, vec2( a, b ) ), sn = mod( dt, PI );
@@ -339,66 +976,110 @@ export const rand = Fn( ( [ uv ] ) => {
339
976
 
340
977
  } );
341
978
 
979
+ /**
980
+ * Alias for `mix()` with a different parameter order.
981
+ *
982
+ * @tsl
983
+ * @function
984
+ * @param {Node | number} t - The interpolation value.
985
+ * @param {Node | number} e1 - The first parameter.
986
+ * @param {Node | number} e2 - The second parameter.
987
+ * @returns {Node}
988
+ */
342
989
  export const mixElement = ( t, e1, e2 ) => mix( e1, e2, t );
990
+
991
+ /**
992
+ * Alias for `smoothstep()` with a different parameter order.
993
+ *
994
+ * @tsl
995
+ * @function
996
+ * @param {Node | number} x - The source value for interpolation.
997
+ * @param {Node | number} low - The value of the lower edge of the Hermite function.
998
+ * @param {Node | number} high - The value of the upper edge of the Hermite function.
999
+ * @returns {Node}
1000
+ */
343
1001
  export const smoothstepElement = ( x, low, high ) => smoothstep( low, high, x );
344
1002
 
345
- addNodeElement( 'all', all );
346
- addNodeElement( 'any', any );
347
- addNodeElement( 'equals', equals );
348
-
349
- addNodeElement( 'radians', radians );
350
- addNodeElement( 'degrees', degrees );
351
- addNodeElement( 'exp', exp );
352
- addNodeElement( 'exp2', exp2 );
353
- addNodeElement( 'log', log );
354
- addNodeElement( 'log2', log2 );
355
- addNodeElement( 'sqrt', sqrt );
356
- addNodeElement( 'inverseSqrt', inverseSqrt );
357
- addNodeElement( 'floor', floor );
358
- addNodeElement( 'ceil', ceil );
359
- addNodeElement( 'normalize', normalize );
360
- addNodeElement( 'fract', fract );
361
- addNodeElement( 'sin', sin );
362
- addNodeElement( 'cos', cos );
363
- addNodeElement( 'tan', tan );
364
- addNodeElement( 'asin', asin );
365
- addNodeElement( 'acos', acos );
366
- addNodeElement( 'atan', atan );
367
- addNodeElement( 'abs', abs );
368
- addNodeElement( 'sign', sign );
369
- addNodeElement( 'length', length );
370
- addNodeElement( 'lengthSq', lengthSq );
371
- addNodeElement( 'negate', negate );
372
- addNodeElement( 'oneMinus', oneMinus );
373
- addNodeElement( 'dFdx', dFdx );
374
- addNodeElement( 'dFdy', dFdy );
375
- addNodeElement( 'round', round );
376
- addNodeElement( 'reciprocal', reciprocal );
377
- addNodeElement( 'trunc', trunc );
378
- addNodeElement( 'fwidth', fwidth );
379
- addNodeElement( 'atan2', atan2 );
380
- addNodeElement( 'min', min );
381
- addNodeElement( 'max', max );
382
- addNodeElement( 'mod', mod );
383
- addNodeElement( 'step', step );
384
- addNodeElement( 'reflect', reflect );
385
- addNodeElement( 'distance', distance );
386
- addNodeElement( 'dot', dot );
387
- addNodeElement( 'cross', cross );
388
- addNodeElement( 'pow', pow );
389
- addNodeElement( 'pow2', pow2 );
390
- addNodeElement( 'pow3', pow3 );
391
- addNodeElement( 'pow4', pow4 );
392
- addNodeElement( 'transformDirection', transformDirection );
393
- addNodeElement( 'mix', mixElement );
394
- addNodeElement( 'clamp', clamp );
395
- addNodeElement( 'refract', refract );
396
- addNodeElement( 'smoothstep', smoothstepElement );
397
- addNodeElement( 'faceForward', faceForward );
398
- addNodeElement( 'difference', difference );
399
- addNodeElement( 'saturate', saturate );
400
- addNodeElement( 'cbrt', cbrt );
401
- addNodeElement( 'transpose', transpose );
402
- addNodeElement( 'rand', rand );
403
-
404
- addNodeClass( 'MathNode', MathNode );
1003
+ /**
1004
+ * Returns the arc-tangent of the quotient of its parameters.
1005
+ *
1006
+ * @tsl
1007
+ * @function
1008
+ * @deprecated since r172. Use {@link atan} instead.
1009
+ *
1010
+ * @param {Node | number} y - The y parameter.
1011
+ * @param {Node | number} x - The x parameter.
1012
+ * @returns {Node}
1013
+ */
1014
+ export const atan2 = ( y, x ) => { // @deprecated, r172
1015
+
1016
+ console.warn( 'THREE.TSL: "atan2" is overloaded. Use "atan" instead.' );
1017
+ return atan( y, x );
1018
+
1019
+ };
1020
+
1021
+ // GLSL alias function
1022
+
1023
+ export const faceforward = faceForward;
1024
+ export const inversesqrt = inverseSqrt;
1025
+
1026
+ // Method chaining
1027
+
1028
+ addMethodChaining( 'all', all );
1029
+ addMethodChaining( 'any', any );
1030
+ addMethodChaining( 'equals', equals );
1031
+
1032
+ addMethodChaining( 'radians', radians );
1033
+ addMethodChaining( 'degrees', degrees );
1034
+ addMethodChaining( 'exp', exp );
1035
+ addMethodChaining( 'exp2', exp2 );
1036
+ addMethodChaining( 'log', log );
1037
+ addMethodChaining( 'log2', log2 );
1038
+ addMethodChaining( 'sqrt', sqrt );
1039
+ addMethodChaining( 'inverseSqrt', inverseSqrt );
1040
+ addMethodChaining( 'floor', floor );
1041
+ addMethodChaining( 'ceil', ceil );
1042
+ addMethodChaining( 'normalize', normalize );
1043
+ addMethodChaining( 'fract', fract );
1044
+ addMethodChaining( 'sin', sin );
1045
+ addMethodChaining( 'cos', cos );
1046
+ addMethodChaining( 'tan', tan );
1047
+ addMethodChaining( 'asin', asin );
1048
+ addMethodChaining( 'acos', acos );
1049
+ addMethodChaining( 'atan', atan );
1050
+ addMethodChaining( 'abs', abs );
1051
+ addMethodChaining( 'sign', sign );
1052
+ addMethodChaining( 'length', length );
1053
+ addMethodChaining( 'lengthSq', lengthSq );
1054
+ addMethodChaining( 'negate', negate );
1055
+ addMethodChaining( 'oneMinus', oneMinus );
1056
+ addMethodChaining( 'dFdx', dFdx );
1057
+ addMethodChaining( 'dFdy', dFdy );
1058
+ addMethodChaining( 'round', round );
1059
+ addMethodChaining( 'reciprocal', reciprocal );
1060
+ addMethodChaining( 'trunc', trunc );
1061
+ addMethodChaining( 'fwidth', fwidth );
1062
+ addMethodChaining( 'atan2', atan2 );
1063
+ addMethodChaining( 'min', min );
1064
+ addMethodChaining( 'max', max );
1065
+ addMethodChaining( 'mod', mod );
1066
+ addMethodChaining( 'step', step );
1067
+ addMethodChaining( 'reflect', reflect );
1068
+ addMethodChaining( 'distance', distance );
1069
+ addMethodChaining( 'dot', dot );
1070
+ addMethodChaining( 'cross', cross );
1071
+ addMethodChaining( 'pow', pow );
1072
+ addMethodChaining( 'pow2', pow2 );
1073
+ addMethodChaining( 'pow3', pow3 );
1074
+ addMethodChaining( 'pow4', pow4 );
1075
+ addMethodChaining( 'transformDirection', transformDirection );
1076
+ addMethodChaining( 'mix', mixElement );
1077
+ addMethodChaining( 'clamp', clamp );
1078
+ addMethodChaining( 'refract', refract );
1079
+ addMethodChaining( 'smoothstep', smoothstepElement );
1080
+ addMethodChaining( 'faceForward', faceForward );
1081
+ addMethodChaining( 'difference', difference );
1082
+ addMethodChaining( 'saturate', saturate );
1083
+ addMethodChaining( 'cbrt', cbrt );
1084
+ addMethodChaining( 'transpose', transpose );
1085
+ addMethodChaining( 'rand', rand );