@plastic-software/three 0.174.0 → 0.175.1

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 (567) hide show
  1. package/build/three.cjs +10744 -1476
  2. package/build/three.core.js +9633 -1096
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +918 -189
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +4 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +2658 -1697
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +2654 -1709
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +1 -1
  13. package/examples/jsm/animation/AnimationClipCreator.js +57 -6
  14. package/examples/jsm/animation/CCDIKSolver.js +93 -39
  15. package/examples/jsm/capabilities/WebGL.js +28 -3
  16. package/examples/jsm/capabilities/WebGPU.js +16 -6
  17. package/examples/jsm/controls/ArcballControls.js +424 -154
  18. package/examples/jsm/controls/DragControls.js +93 -2
  19. package/examples/jsm/controls/FirstPersonControls.js +113 -4
  20. package/examples/jsm/controls/FlyControls.js +49 -2
  21. package/examples/jsm/controls/MapControls.js +42 -9
  22. package/examples/jsm/controls/OrbitControls.js +345 -42
  23. package/examples/jsm/controls/PointerLockControls.js +111 -9
  24. package/examples/jsm/controls/TrackballControls.js +159 -8
  25. package/examples/jsm/controls/TransformControls.js +252 -6
  26. package/examples/jsm/csm/CSM.js +226 -15
  27. package/examples/jsm/csm/CSMFrustum.js +52 -0
  28. package/examples/jsm/csm/CSMHelper.js +47 -0
  29. package/examples/jsm/csm/CSMShader.js +10 -1
  30. package/examples/jsm/csm/CSMShadowNode.js +156 -13
  31. package/examples/jsm/curves/CurveExtras.js +289 -31
  32. package/examples/jsm/curves/NURBSCurve.js +57 -14
  33. package/examples/jsm/curves/NURBSSurface.js +50 -6
  34. package/examples/jsm/curves/NURBSUtils.js +96 -112
  35. package/examples/jsm/curves/NURBSVolume.js +22 -4
  36. package/examples/jsm/effects/AnaglyphEffect.js +30 -0
  37. package/examples/jsm/effects/AsciiEffect.js +60 -15
  38. package/examples/jsm/effects/OutlineEffect.js +59 -111
  39. package/examples/jsm/effects/ParallaxBarrierEffect.js +28 -0
  40. package/examples/jsm/effects/PeppersGhostEffect.js +21 -2
  41. package/examples/jsm/effects/StereoEffect.js +29 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +49 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +23 -4
  44. package/examples/jsm/exporters/DRACOExporter.js +53 -13
  45. package/examples/jsm/exporters/EXRExporter.js +37 -8
  46. package/examples/jsm/exporters/GLTFExporter.js +171 -48
  47. package/examples/jsm/exporters/KTX2Exporter.js +20 -0
  48. package/examples/jsm/exporters/OBJExporter.js +18 -0
  49. package/examples/jsm/exporters/PLYExporter.js +39 -9
  50. package/examples/jsm/exporters/STLExporter.js +25 -5
  51. package/examples/jsm/exporters/USDZExporter.js +70 -3
  52. package/examples/jsm/geometries/BoxLineGeometry.js +22 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +18 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +20 -9
  55. package/examples/jsm/geometries/ParametricFunctions.js +97 -0
  56. package/examples/jsm/geometries/ParametricGeometry.js +37 -5
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +21 -0
  58. package/examples/jsm/geometries/TeapotGeometry.js +22 -38
  59. package/examples/jsm/geometries/TextGeometry.js +44 -16
  60. package/examples/jsm/helpers/LightProbeHelper.js +35 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +36 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +35 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +59 -0
  64. package/examples/jsm/helpers/RectAreaLightHelper.js +35 -3
  65. package/examples/jsm/helpers/TextureHelper.js +27 -0
  66. package/examples/jsm/helpers/TextureHelperGPU.js +28 -0
  67. package/examples/jsm/helpers/VertexNormalsHelper.js +58 -2
  68. package/examples/jsm/helpers/VertexTangentsHelper.js +46 -2
  69. package/examples/jsm/helpers/ViewHelper.js +75 -1
  70. package/examples/jsm/interactive/HTMLMesh.js +25 -0
  71. package/examples/jsm/interactive/InteractiveGroup.js +65 -5
  72. package/examples/jsm/interactive/SelectionBox.js +74 -9
  73. package/examples/jsm/interactive/SelectionHelper.js +71 -29
  74. package/examples/jsm/libs/motion-controllers.module.js +1 -1
  75. package/examples/jsm/lighting/TiledLighting.js +23 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +26 -1
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +48 -13
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +15 -0
  79. package/examples/jsm/lines/Line2.js +36 -0
  80. package/examples/jsm/lines/LineGeometry.js +52 -0
  81. package/examples/jsm/lines/LineMaterial.js +95 -0
  82. package/examples/jsm/lines/LineSegments2.js +51 -2
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +62 -8
  84. package/examples/jsm/lines/Wireframe.js +38 -2
  85. package/examples/jsm/lines/WireframeGeometry2.js +24 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +25 -1
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +44 -6
  88. package/examples/jsm/lines/webgpu/Wireframe.js +30 -2
  89. package/examples/jsm/loaders/3DMLoader.js +71 -2
  90. package/examples/jsm/loaders/3MFLoader.js +41 -3
  91. package/examples/jsm/loaders/AMFLoader.js +31 -12
  92. package/examples/jsm/loaders/BVHLoader.js +57 -11
  93. package/examples/jsm/loaders/ColladaLoader.js +35 -0
  94. package/examples/jsm/loaders/DDSLoader.js +24 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +73 -1
  96. package/examples/jsm/loaders/EXRLoader.js +40 -8
  97. package/examples/jsm/loaders/FBXLoader.js +42 -14
  98. package/examples/jsm/loaders/FontLoader.js +60 -2
  99. package/examples/jsm/loaders/GCodeLoader.js +33 -5
  100. package/examples/jsm/loaders/GLTFLoader.js +218 -5
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +48 -0
  102. package/examples/jsm/loaders/IESLoader.js +41 -0
  103. package/examples/jsm/loaders/KMZLoader.js +32 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +86 -18
  105. package/examples/jsm/loaders/KTXLoader.js +26 -6
  106. package/examples/jsm/loaders/LDrawLoader.js +115 -5
  107. package/examples/jsm/loaders/LUT3dlLoader.js +46 -10
  108. package/examples/jsm/loaders/LUTCubeLoader.js +45 -9
  109. package/examples/jsm/loaders/LUTImageLoader.js +78 -38
  110. package/examples/jsm/loaders/LWOLoader.js +46 -7
  111. package/examples/jsm/loaders/LottieLoader.js +37 -0
  112. package/examples/jsm/loaders/MD2Loader.js +36 -1
  113. package/examples/jsm/loaders/MDDLoader.js +56 -12
  114. package/examples/jsm/loaders/MTLLoader.js +38 -33
  115. package/examples/jsm/loaders/MaterialXLoader.js +33 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +36 -5
  117. package/examples/jsm/loaders/OBJLoader.js +48 -1
  118. package/examples/jsm/loaders/PCDLoader.js +47 -0
  119. package/examples/jsm/loaders/PDBLoader.js +40 -2
  120. package/examples/jsm/loaders/PLYLoader.js +62 -32
  121. package/examples/jsm/loaders/PVRLoader.js +23 -5
  122. package/examples/jsm/loaders/RGBELoader.js +38 -5
  123. package/examples/jsm/loaders/RGBMLoader.js +67 -1
  124. package/examples/jsm/loaders/STLLoader.js +47 -38
  125. package/examples/jsm/loaders/SVGLoader.js +113 -20
  126. package/examples/jsm/loaders/TDSLoader.js +81 -61
  127. package/examples/jsm/loaders/TGALoader.js +22 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +22 -0
  129. package/examples/jsm/loaders/TTFLoader.js +36 -2
  130. package/examples/jsm/loaders/USDZLoader.js +34 -1
  131. package/examples/jsm/loaders/UltraHDRLoader.js +58 -12
  132. package/examples/jsm/loaders/VOXLoader.js +57 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +32 -1
  134. package/examples/jsm/loaders/VTKLoader.js +38 -0
  135. package/examples/jsm/loaders/XYZLoader.js +35 -0
  136. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +39 -0
  137. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +39 -0
  138. package/examples/jsm/materials/MeshPostProcessingMaterial.js +24 -2
  139. package/examples/jsm/math/Capsule.js +89 -14
  140. package/examples/jsm/math/ColorConverter.js +21 -0
  141. package/examples/jsm/math/ColorSpaces.js +53 -0
  142. package/examples/jsm/math/ConvexHull.js +514 -92
  143. package/examples/jsm/math/ImprovedNoise.js +14 -2
  144. package/examples/jsm/math/Lut.js +111 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +76 -13
  146. package/examples/jsm/math/OBB.js +139 -46
  147. package/examples/jsm/math/Octree.js +132 -5
  148. package/examples/jsm/math/SimplexNoise.js +66 -42
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +43 -25
  150. package/examples/jsm/misc/GPUComputationRenderer.js +92 -17
  151. package/examples/jsm/misc/Gyroscope.js +11 -0
  152. package/examples/jsm/misc/MD2Character.js +115 -2
  153. package/examples/jsm/misc/MD2CharacterComplex.js +170 -8
  154. package/examples/jsm/misc/MorphAnimMesh.js +43 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +102 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +40 -15
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +33 -13
  158. package/examples/jsm/misc/RollerCoaster.js +52 -0
  159. package/examples/jsm/misc/Timer.js +79 -2
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +108 -72
  162. package/examples/jsm/misc/VolumeSlice.js +88 -45
  163. package/examples/jsm/modifiers/CurveModifier.js +57 -34
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +36 -17
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +18 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +20 -8
  167. package/examples/jsm/modifiers/TessellateModifier.js +33 -2
  168. package/examples/jsm/objects/GroundedSkybox.js +23 -5
  169. package/examples/jsm/objects/Lensflare.js +91 -2
  170. package/examples/jsm/objects/LensflareMesh.js +53 -2
  171. package/examples/jsm/objects/MarchingCubes.js +88 -5
  172. package/examples/jsm/objects/Reflector.js +70 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +39 -0
  174. package/examples/jsm/objects/Refractor.js +61 -0
  175. package/examples/jsm/objects/ShadowMesh.js +53 -4
  176. package/examples/jsm/objects/Sky.js +26 -9
  177. package/examples/jsm/objects/SkyMesh.js +60 -9
  178. package/examples/jsm/objects/Water.js +44 -5
  179. package/examples/jsm/objects/Water2.js +42 -3
  180. package/examples/jsm/objects/Water2Mesh.js +38 -3
  181. package/examples/jsm/objects/WaterMesh.js +94 -7
  182. package/examples/jsm/physics/AmmoPhysics.js +47 -0
  183. package/examples/jsm/physics/JoltPhysics.js +48 -0
  184. package/examples/jsm/physics/RapierPhysics.js +56 -0
  185. package/examples/jsm/postprocessing/AfterimagePass.js +90 -38
  186. package/examples/jsm/postprocessing/BloomPass.js +125 -24
  187. package/examples/jsm/postprocessing/BokehPass.js +98 -22
  188. package/examples/jsm/postprocessing/ClearPass.js +53 -3
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +81 -21
  190. package/examples/jsm/postprocessing/DotScreenPass.js +58 -10
  191. package/examples/jsm/postprocessing/EffectComposer.js +131 -0
  192. package/examples/jsm/postprocessing/FilmPass.js +53 -5
  193. package/examples/jsm/postprocessing/GTAOPass.js +191 -48
  194. package/examples/jsm/postprocessing/GlitchPass.js +84 -33
  195. package/examples/jsm/postprocessing/HalftonePass.js +64 -10
  196. package/examples/jsm/postprocessing/LUTPass.js +37 -8
  197. package/examples/jsm/postprocessing/MaskPass.js +90 -0
  198. package/examples/jsm/postprocessing/OutlinePass.js +266 -133
  199. package/examples/jsm/postprocessing/OutputPass.js +53 -14
  200. package/examples/jsm/postprocessing/Pass.js +98 -4
  201. package/examples/jsm/postprocessing/RenderPass.js +83 -0
  202. package/examples/jsm/postprocessing/RenderPixelatedPass.js +123 -45
  203. package/examples/jsm/postprocessing/RenderTransitionPass.js +119 -21
  204. package/examples/jsm/postprocessing/SAOPass.js +126 -53
  205. package/examples/jsm/postprocessing/SMAAPass.js +103 -71
  206. package/examples/jsm/postprocessing/SSAARenderPass.js +117 -35
  207. package/examples/jsm/postprocessing/SSAOPass.js +160 -47
  208. package/examples/jsm/postprocessing/SSRPass.js +230 -49
  209. package/examples/jsm/postprocessing/SavePass.js +68 -16
  210. package/examples/jsm/postprocessing/ShaderPass.js +64 -7
  211. package/examples/jsm/postprocessing/TAARenderPass.js +78 -24
  212. package/examples/jsm/postprocessing/TexturePass.js +71 -8
  213. package/examples/jsm/postprocessing/UnrealBloomPass.js +113 -37
  214. package/examples/jsm/renderers/CSS2DRenderer.js +77 -1
  215. package/examples/jsm/renderers/CSS3DRenderer.js +99 -3
  216. package/examples/jsm/renderers/Projector.js +18 -2
  217. package/examples/jsm/renderers/SVGRenderer.js +124 -0
  218. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +9 -5
  219. package/examples/jsm/shaders/AfterimageShader.js +6 -4
  220. package/examples/jsm/shaders/BasicShader.js +6 -2
  221. package/examples/jsm/shaders/BleachBypassShader.js +8 -4
  222. package/examples/jsm/shaders/BlendShader.js +6 -2
  223. package/examples/jsm/shaders/BokehShader.js +7 -4
  224. package/examples/jsm/shaders/BokehShader2.js +7 -3
  225. package/examples/jsm/shaders/BrightnessContrastShader.js +8 -5
  226. package/examples/jsm/shaders/ColorCorrectionShader.js +6 -2
  227. package/examples/jsm/shaders/ColorifyShader.js +6 -2
  228. package/examples/jsm/shaders/ConvolutionShader.js +7 -39
  229. package/examples/jsm/shaders/CopyShader.js +6 -2
  230. package/examples/jsm/shaders/DOFMipMapShader.js +8 -4
  231. package/examples/jsm/shaders/DepthLimitedBlurShader.js +7 -1
  232. package/examples/jsm/shaders/DigitalGlitch.js +7 -7
  233. package/examples/jsm/shaders/DotScreenShader.js +6 -4
  234. package/examples/jsm/shaders/ExposureShader.js +6 -2
  235. package/examples/jsm/shaders/FXAAShader.js +15 -7
  236. package/examples/jsm/shaders/FilmShader.js +10 -0
  237. package/examples/jsm/shaders/FocusShader.js +6 -4
  238. package/examples/jsm/shaders/FreiChenShader.js +7 -3
  239. package/examples/jsm/shaders/GTAOShader.js +33 -39
  240. package/examples/jsm/shaders/GammaCorrectionShader.js +8 -2
  241. package/examples/jsm/shaders/GodRaysShader.js +14 -5
  242. package/examples/jsm/shaders/HalftoneShader.js +11 -5
  243. package/examples/jsm/shaders/HorizontalBlurShader.js +9 -3
  244. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +6 -2
  245. package/examples/jsm/shaders/HueSaturationShader.js +7 -3
  246. package/examples/jsm/shaders/KaleidoShader.js +8 -4
  247. package/examples/jsm/shaders/LuminosityHighPassShader.js +6 -5
  248. package/examples/jsm/shaders/LuminosityShader.js +6 -3
  249. package/examples/jsm/shaders/MirrorShader.js +7 -4
  250. package/examples/jsm/shaders/NormalMapShader.js +5 -3
  251. package/examples/jsm/shaders/OutputShader.js +11 -0
  252. package/examples/jsm/shaders/PoissonDenoiseShader.js +21 -15
  253. package/examples/jsm/shaders/RGBShiftShader.js +5 -1
  254. package/examples/jsm/shaders/SAOShader.js +8 -2
  255. package/examples/jsm/shaders/SMAAShader.js +23 -1
  256. package/examples/jsm/shaders/SSAOShader.js +23 -5
  257. package/examples/jsm/shaders/SSRShader.js +25 -1
  258. package/examples/jsm/shaders/SepiaShader.js +6 -4
  259. package/examples/jsm/shaders/SobelOperatorShader.js +5 -2
  260. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +10 -8
  261. package/examples/jsm/shaders/TechnicolorShader.js +7 -4
  262. package/examples/jsm/shaders/ToonShader.js +29 -7
  263. package/examples/jsm/shaders/TriangleBlurShader.js +6 -4
  264. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +6 -3
  265. package/examples/jsm/shaders/VelocityShader.js +6 -2
  266. package/examples/jsm/shaders/VerticalBlurShader.js +6 -2
  267. package/examples/jsm/shaders/VerticalTiltShiftShader.js +5 -1
  268. package/examples/jsm/shaders/VignetteShader.js +6 -4
  269. package/examples/jsm/shaders/VolumeShader.js +7 -1
  270. package/examples/jsm/shaders/WaterRefractionShader.js +8 -0
  271. package/examples/jsm/textures/FlakesTexture.js +12 -0
  272. package/examples/jsm/transpiler/Transpiler.js +31 -0
  273. package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
  274. package/examples/jsm/tsl/display/BloomNode.js +1 -1
  275. package/examples/jsm/tsl/display/PixelationPassNode.js +4 -4
  276. package/examples/jsm/tsl/display/SSRNode.js +1 -1
  277. package/examples/jsm/tsl/lighting/TiledLightsNode.js +29 -3
  278. package/examples/jsm/tsl/math/Bayer.js +14 -1
  279. package/examples/jsm/tsl/utils/Raymarching.js +4 -2
  280. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  281. package/examples/jsm/utils/CameraUtils.js +10 -7
  282. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  283. package/examples/jsm/utils/GeometryUtils.js +12 -13
  284. package/examples/jsm/utils/LDrawUtils.js +11 -4
  285. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  286. package/examples/jsm/utils/SceneUtils.js +50 -3
  287. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  288. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  289. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  290. package/examples/jsm/utils/SortUtils.js +14 -5
  291. package/examples/jsm/utils/UVsDebug.js +9 -4
  292. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  293. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  294. package/examples/jsm/utils/WorkerPool.js +65 -2
  295. package/examples/jsm/webxr/ARButton.js +18 -0
  296. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  297. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  298. package/examples/jsm/webxr/Text2D.js +11 -0
  299. package/examples/jsm/webxr/VRButton.js +30 -0
  300. package/examples/jsm/webxr/XRButton.js +22 -0
  301. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  302. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  303. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  304. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  305. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  306. package/examples/jsm/webxr/XRPlanes.js +17 -0
  307. package/package.json +1 -1
  308. package/src/Three.TSL.js +3 -1
  309. package/src/animation/AnimationAction.js +262 -30
  310. package/src/animation/AnimationClip.js +141 -2
  311. package/src/animation/AnimationMixer.js +99 -15
  312. package/src/animation/AnimationObjectGroup.js +41 -18
  313. package/src/animation/AnimationUtils.js +168 -18
  314. package/src/animation/KeyframeTrack.js +144 -10
  315. package/src/animation/PropertyBinding.js +77 -3
  316. package/src/animation/PropertyMixer.js +72 -5
  317. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  318. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  319. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  320. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  321. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  322. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  323. package/src/audio/AudioAnalyser.js +1 -1
  324. package/src/audio/AudioListener.js +2 -2
  325. package/src/audio/PositionalAudio.js +5 -5
  326. package/src/constants.js +1432 -5
  327. package/src/core/BufferAttribute.js +413 -3
  328. package/src/core/BufferGeometry.js +337 -1
  329. package/src/core/Clock.js +60 -0
  330. package/src/core/GLBufferAttribute.js +99 -0
  331. package/src/core/InstancedBufferAttribute.js +29 -0
  332. package/src/core/InstancedBufferGeometry.js +20 -0
  333. package/src/core/InstancedInterleavedBuffer.js +26 -0
  334. package/src/core/InterleavedBuffer.js +137 -3
  335. package/src/core/InterleavedBufferAttribute.js +197 -0
  336. package/src/core/Layers.js +71 -10
  337. package/src/core/Object3D.js +23 -0
  338. package/src/core/Raycaster.js +134 -1
  339. package/src/core/RenderTarget.js +166 -7
  340. package/src/core/RenderTarget3D.js +25 -0
  341. package/src/core/RenderTargetArray.js +18 -0
  342. package/src/core/Uniform.js +29 -0
  343. package/src/core/UniformsGroup.js +84 -2
  344. package/src/extras/Controls.js +16 -1
  345. package/src/extras/Earcut.js +3 -781
  346. package/src/extras/ImageUtils.js +3 -2
  347. package/src/extras/PMREMGenerator.js +22 -17
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/extras/core/Path.js +1 -1
  350. package/src/extras/lib/earcut.js +685 -0
  351. package/src/geometries/ConeGeometry.js +2 -2
  352. package/src/geometries/CylinderGeometry.js +2 -2
  353. package/src/geometries/ExtrudeGeometry.js +71 -39
  354. package/src/geometries/LatheGeometry.js +1 -1
  355. package/src/lights/LightShadow.js +1 -1
  356. package/src/lights/webgpu/IESSpotLight.js +1 -1
  357. package/src/loaders/AnimationLoader.js +31 -0
  358. package/src/loaders/AudioLoader.js +31 -0
  359. package/src/loaders/BufferGeometryLoader.js +34 -0
  360. package/src/loaders/Cache.js +45 -0
  361. package/src/loaders/CompressedTextureLoader.js +36 -3
  362. package/src/loaders/CubeTextureLoader.js +45 -0
  363. package/src/loaders/DataTextureLoader.js +44 -3
  364. package/src/loaders/FileLoader.js +57 -1
  365. package/src/loaders/ImageBitmapLoader.js +57 -0
  366. package/src/loaders/ImageLoader.js +30 -0
  367. package/src/loaders/Loader.js +4 -6
  368. package/src/loaders/LoaderUtils.js +18 -36
  369. package/src/loaders/LoadingManager.js +142 -0
  370. package/src/loaders/MaterialLoader.js +57 -0
  371. package/src/loaders/ObjectLoader.js +58 -1
  372. package/src/loaders/TextureLoader.js +33 -0
  373. package/src/loaders/nodes/NodeLoader.js +6 -2
  374. package/src/loaders/nodes/NodeMaterialLoader.js +1 -1
  375. package/src/loaders/nodes/NodeObjectLoader.js +3 -3
  376. package/src/materials/LineBasicMaterial.js +74 -1
  377. package/src/materials/LineDashedMaterial.js +52 -0
  378. package/src/materials/Material.js +18 -3
  379. package/src/materials/MeshBasicMaterial.js +165 -0
  380. package/src/materials/MeshDepthMaterial.js +93 -0
  381. package/src/materials/MeshDistanceMaterial.js +76 -0
  382. package/src/materials/MeshLambertMaterial.js +273 -0
  383. package/src/materials/MeshMatcapMaterial.js +142 -0
  384. package/src/materials/MeshNormalMaterial.js +113 -0
  385. package/src/materials/MeshPhongMaterial.js +288 -0
  386. package/src/materials/MeshPhysicalMaterial.js +292 -1
  387. package/src/materials/MeshStandardMaterial.js +297 -0
  388. package/src/materials/MeshToonMaterial.js +218 -0
  389. package/src/materials/PointsMaterial.js +89 -0
  390. package/src/materials/RawShaderMaterial.js +25 -0
  391. package/src/materials/ShaderMaterial.js +215 -6
  392. package/src/materials/ShadowMaterial.js +54 -0
  393. package/src/materials/SpriteMaterial.js +82 -0
  394. package/src/materials/nodes/Line2NodeMaterial.js +1 -1
  395. package/src/materials/nodes/LineBasicNodeMaterial.js +2 -2
  396. package/src/materials/nodes/LineDashedNodeMaterial.js +2 -2
  397. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  398. package/src/materials/nodes/MeshLambertNodeMaterial.js +2 -2
  399. package/src/materials/nodes/MeshMatcapNodeMaterial.js +2 -2
  400. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  401. package/src/materials/nodes/MeshPhongNodeMaterial.js +2 -2
  402. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -2
  403. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  404. package/src/materials/nodes/MeshStandardNodeMaterial.js +2 -2
  405. package/src/materials/nodes/MeshToonNodeMaterial.js +2 -2
  406. package/src/materials/nodes/NodeMaterial.js +7 -3
  407. package/src/materials/nodes/PointsNodeMaterial.js +1 -1
  408. package/src/materials/nodes/ShadowNodeMaterial.js +11 -2
  409. package/src/materials/nodes/SpriteNodeMaterial.js +1 -1
  410. package/src/materials/nodes/VolumeNodeMaterial.js +10 -1
  411. package/src/math/Color.js +1 -1
  412. package/src/math/MathUtils.js +223 -0
  413. package/src/nodes/Nodes.js +1 -0
  414. package/src/nodes/accessors/BatchNode.js +8 -8
  415. package/src/nodes/accessors/BuiltinNode.js +1 -1
  416. package/src/nodes/accessors/CubeTextureNode.js +1 -1
  417. package/src/nodes/accessors/InstanceNode.js +5 -5
  418. package/src/nodes/accessors/InstancedMeshNode.js +1 -1
  419. package/src/nodes/accessors/MorphNode.js +27 -23
  420. package/src/nodes/accessors/Normal.js +1 -1
  421. package/src/nodes/accessors/Object3DNode.js +12 -12
  422. package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
  423. package/src/nodes/accessors/ReferenceNode.js +1 -1
  424. package/src/nodes/accessors/SkinningNode.js +46 -37
  425. package/src/nodes/accessors/StorageBufferNode.js +1 -1
  426. package/src/nodes/accessors/StorageTextureNode.js +3 -3
  427. package/src/nodes/accessors/Texture3DNode.js +1 -1
  428. package/src/nodes/accessors/TextureNode.js +25 -5
  429. package/src/nodes/accessors/TextureSizeNode.js +1 -1
  430. package/src/nodes/accessors/UniformArrayNode.js +2 -2
  431. package/src/nodes/code/CodeNode.js +4 -4
  432. package/src/nodes/code/ExpressionNode.js +4 -4
  433. package/src/nodes/code/FunctionCallNode.js +23 -3
  434. package/src/nodes/code/ScriptableNode.js +4 -4
  435. package/src/nodes/code/ScriptableValueNode.js +2 -2
  436. package/src/nodes/core/AssignNode.js +1 -1
  437. package/src/nodes/core/AttributeNode.js +1 -1
  438. package/src/nodes/core/BypassNode.js +1 -1
  439. package/src/nodes/core/CacheNode.js +1 -1
  440. package/src/nodes/core/ContextNode.js +1 -1
  441. package/src/nodes/core/InputNode.js +2 -2
  442. package/src/nodes/core/Node.js +14 -2
  443. package/src/nodes/core/NodeBuilder.js +86 -14
  444. package/src/nodes/core/StackNode.js +5 -5
  445. package/src/nodes/core/StructNode.js +1 -1
  446. package/src/nodes/core/StructTypeNode.js +2 -2
  447. package/src/nodes/core/VarNode.js +2 -8
  448. package/src/nodes/core/VaryingNode.js +3 -3
  449. package/src/nodes/display/BlendModes.js +4 -4
  450. package/src/nodes/display/BumpMapNode.js +1 -1
  451. package/src/nodes/display/NormalMapNode.js +1 -1
  452. package/src/nodes/display/PosterizeNode.js +1 -1
  453. package/src/nodes/display/ScreenNode.js +3 -3
  454. package/src/nodes/display/ViewportDepthNode.js +2 -2
  455. package/src/nodes/display/ViewportDepthTextureNode.js +2 -2
  456. package/src/nodes/display/ViewportSharedTextureNode.js +2 -2
  457. package/src/nodes/display/ViewportTextureNode.js +4 -4
  458. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  459. package/src/nodes/functions/material/getParallaxCorrectNormal.js +6 -6
  460. package/src/nodes/geometry/RangeNode.js +1 -1
  461. package/src/nodes/gpgpu/AtomicFunctionNode.js +16 -40
  462. package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
  463. package/src/nodes/gpgpu/ComputeNode.js +30 -2
  464. package/src/nodes/lighting/AnalyticLightNode.js +9 -1
  465. package/src/nodes/lighting/LightsNode.js +3 -3
  466. package/src/nodes/lighting/ShadowNode.js +1 -1
  467. package/src/nodes/math/ConditionalNode.js +20 -3
  468. package/src/nodes/math/MathNode.js +83 -78
  469. package/src/nodes/math/OperatorNode.js +171 -82
  470. package/src/nodes/pmrem/PMREMNode.js +4 -4
  471. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  472. package/src/nodes/tsl/TSLBase.js +2 -1
  473. package/src/nodes/tsl/TSLCore.js +115 -12
  474. package/src/nodes/utils/ArrayElementNode.js +3 -1
  475. package/src/nodes/utils/CubeMapNode.js +3 -3
  476. package/src/nodes/utils/DebugNode.js +70 -0
  477. package/src/nodes/utils/EquirectUVNode.js +2 -2
  478. package/src/nodes/utils/JoinNode.js +27 -2
  479. package/src/nodes/utils/LoopNode.js +58 -28
  480. package/src/nodes/utils/MaxMipLevelNode.js +1 -1
  481. package/src/nodes/utils/ReflectorNode.js +2 -2
  482. package/src/nodes/utils/RemapNode.js +6 -6
  483. package/src/nodes/utils/RotateNode.js +1 -1
  484. package/src/nodes/utils/SpriteSheetUVNode.js +3 -3
  485. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  486. package/src/nodes/utils/TriplanarTexturesNode.js +3 -3
  487. package/src/objects/BatchedMesh.js +4 -4
  488. package/src/objects/InstancedMesh.js +2 -2
  489. package/src/objects/LOD.js +1 -1
  490. package/src/objects/Skeleton.js +1 -1
  491. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  492. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  493. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  494. package/src/renderers/WebGLRenderTarget.js +19 -0
  495. package/src/renderers/WebGLRenderer.js +617 -79
  496. package/src/renderers/common/Animation.js +2 -2
  497. package/src/renderers/common/Attributes.js +2 -2
  498. package/src/renderers/common/Backend.js +12 -3
  499. package/src/renderers/common/Background.js +1 -0
  500. package/src/renderers/common/Color4.js +1 -1
  501. package/src/renderers/common/CubeRenderTarget.js +13 -0
  502. package/src/renderers/common/PostProcessing.js +2 -0
  503. package/src/renderers/common/QuadMesh.js +2 -0
  504. package/src/renderers/common/RenderList.js +2 -2
  505. package/src/renderers/common/RenderObject.js +1 -1
  506. package/src/renderers/common/RenderObjects.js +2 -2
  507. package/src/renderers/common/Renderer.js +52 -31
  508. package/src/renderers/common/XRManager.js +333 -10
  509. package/src/renderers/common/extras/PMREMGenerator.js +6 -0
  510. package/src/renderers/common/nodes/NodeBuilderState.js +3 -3
  511. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +10 -1
  512. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -1
  513. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +5 -1
  514. package/src/renderers/shaders/ShaderChunk/common.glsl.js +82 -0
  515. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +22 -2
  516. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +12 -1
  517. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +8 -2
  518. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +31 -11
  519. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +5 -1
  520. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +1 -1
  521. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +1 -1
  522. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -1
  523. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -1
  524. package/src/renderers/shaders/ShaderChunk/triplanar_fragment.glsl.js +20 -0
  525. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +52 -7
  526. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +25 -6
  527. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +19 -7
  528. package/src/renderers/shaders/ShaderChunk.js +2 -0
  529. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +2 -0
  530. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -0
  531. package/src/renderers/shaders/UniformsLib.js +6 -5
  532. package/src/renderers/shaders/UniformsUtils.js +1 -3
  533. package/src/renderers/webgl/WebGLBackground.js +4 -2
  534. package/src/renderers/webgl/WebGLMaterials.js +12 -0
  535. package/src/renderers/webgl/WebGLProgram.js +25 -5
  536. package/src/renderers/webgl/WebGLPrograms.js +21 -7
  537. package/src/renderers/webgl/WebGLState.js +9 -9
  538. package/src/renderers/webgl-fallback/WebGLBackend.js +25 -26
  539. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +3 -12
  540. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +67 -19
  541. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +1 -1
  542. package/src/renderers/webgpu/WebGPUBackend.js +128 -87
  543. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +1 -11
  544. package/src/renderers/webgpu/WebGPURenderer.js +17 -11
  545. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +4 -4
  546. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +5 -3
  547. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  548. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +1 -1
  549. package/src/renderers/webxr/WebXRController.js +87 -2
  550. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  551. package/src/renderers/webxr/WebXRManager.js +173 -1
  552. package/src/scenes/Scene.js +2 -1
  553. package/src/textures/CanvasTexture.js +28 -0
  554. package/src/textures/CompressedArrayTexture.js +57 -0
  555. package/src/textures/CompressedCubeTexture.js +29 -0
  556. package/src/textures/CompressedTexture.js +64 -6
  557. package/src/textures/CubeTexture.js +52 -4
  558. package/src/textures/Data3DTexture.js +77 -0
  559. package/src/textures/DataArrayTexture.js +93 -0
  560. package/src/textures/DataTexture.js +65 -0
  561. package/src/textures/DepthTexture.js +59 -9
  562. package/src/textures/FramebufferTexture.js +62 -0
  563. package/src/textures/Source.js +69 -0
  564. package/src/textures/Texture.js +5 -5
  565. package/src/textures/VideoFrameTexture.js +43 -6
  566. package/src/textures/VideoTexture.js +49 -4
  567. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -1,5 +1,6 @@
1
+ import { WebGLCoordinateSystem } from '../../constants.js';
1
2
  import TempNode from '../core/TempNode.js';
2
- import { addMethodChaining, nodeProxy } from '../tsl/TSLCore.js';
3
+ import { addMethodChaining, int, nodeProxy } from '../tsl/TSLCore.js';
3
4
 
4
5
  /**
5
6
  * This node represents basic mathematical and logical operations like addition,
@@ -104,7 +105,7 @@ class OperatorNode extends TempNode {
104
105
 
105
106
  return builder.getIntegerType( typeA );
106
107
 
107
- } else if ( op === '!' || op === '==' || op === '&&' || op === '||' || op === '^^' ) {
108
+ } else if ( op === '!' || op === '==' || op === '!=' || op === '&&' || op === '||' || op === '^^' ) {
108
109
 
109
110
  return 'bool';
110
111
 
@@ -117,6 +118,7 @@ class OperatorNode extends TempNode {
117
118
  } else {
118
119
 
119
120
  // Handle matrix operations
121
+
120
122
  if ( builder.isMatrix( typeA ) ) {
121
123
 
122
124
  if ( typeB === 'float' ) {
@@ -148,6 +150,7 @@ class OperatorNode extends TempNode {
148
150
  }
149
151
 
150
152
  // Handle non-matrix cases
153
+
151
154
  if ( builder.getTypeLength( typeB ) > builder.getTypeLength( typeA ) ) {
152
155
 
153
156
  // anytype x anytype: use the greater length vector
@@ -179,7 +182,7 @@ class OperatorNode extends TempNode {
179
182
  typeA = aNode.getNodeType( builder );
180
183
  typeB = typeof bNode !== 'undefined' ? bNode.getNodeType( builder ) : null;
181
184
 
182
- if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' ) {
185
+ if ( op === '<' || op === '>' || op === '<=' || op === '>=' || op === '==' || op === '!=' ) {
183
186
 
184
187
  if ( builder.isVector( typeA ) ) {
185
188
 
@@ -196,11 +199,17 @@ class OperatorNode extends TempNode {
196
199
  typeA = type;
197
200
  typeB = builder.changeComponentType( typeB, 'uint' );
198
201
 
202
+ } else if ( op === '%' ) {
203
+
204
+ typeA = type;
205
+ typeB = builder.isInteger( typeA ) && builder.isInteger( typeB ) ? typeB : typeA;
206
+
199
207
  } else if ( builder.isMatrix( typeA ) ) {
200
208
 
201
209
  if ( typeB === 'float' ) {
202
210
 
203
211
  // Keep matrix type for typeA, but ensure typeB stays float
212
+
204
213
  typeB = 'float';
205
214
 
206
215
  } else if ( builder.isVector( typeB ) ) {
@@ -209,7 +218,9 @@ class OperatorNode extends TempNode {
209
218
  typeB = builder.getVectorFromMatrix( typeA );
210
219
 
211
220
  } else if ( builder.isMatrix( typeB ) ) {
221
+
212
222
  // matrix x matrix - keep both types
223
+
213
224
  } else {
214
225
 
215
226
  typeA = typeB = type;
@@ -221,11 +232,13 @@ class OperatorNode extends TempNode {
221
232
  if ( typeA === 'float' ) {
222
233
 
223
234
  // Keep matrix type for typeB, but ensure typeA stays float
235
+
224
236
  typeA = 'float';
225
237
 
226
238
  } else if ( builder.isVector( typeA ) ) {
227
239
 
228
240
  // vector x matrix
241
+
229
242
  typeA = builder.getVectorFromMatrix( typeB );
230
243
 
231
244
  } else {
@@ -256,54 +269,106 @@ class OperatorNode extends TempNode {
256
269
 
257
270
  if ( output !== 'void' ) {
258
271
 
259
- if ( op === '<' && outputLength > 1 ) {
272
+ const isGLSL = builder.renderer.coordinateSystem === WebGLCoordinateSystem;
273
+
274
+ if ( op === '==' ) {
275
+
276
+ if ( isGLSL ) {
277
+
278
+ if ( outputLength > 1 ) {
279
+
280
+ return builder.format( `${ builder.getMethod( 'equal', output ) }( ${ a }, ${ b } )`, type, output );
281
+
282
+ } else {
260
283
 
261
- if ( builder.useComparisonMethod ) {
284
+ return builder.format( `( ${ a } ${ op } ${ b } )`, type, output );
285
+
286
+ }
287
+
288
+ } else {
289
+
290
+ // WGSL
291
+
292
+ if ( outputLength > 1 || ! builder.isVector( typeA ) ) {
293
+
294
+ return builder.format( `( ${ a } == ${ b } )`, type, output );
295
+
296
+ } else {
297
+
298
+ return builder.format( `all( ${ a } == ${ b } )`, type, output );
299
+
300
+ }
301
+
302
+ }
303
+
304
+ } else if ( op === '<' && outputLength > 1 ) {
305
+
306
+ if ( isGLSL ) {
262
307
 
263
308
  return builder.format( `${ builder.getMethod( 'lessThan', output ) }( ${ a }, ${ b } )`, type, output );
264
309
 
265
310
  } else {
266
311
 
312
+ // WGSL
313
+
267
314
  return builder.format( `( ${ a } < ${ b } )`, type, output );
268
315
 
269
316
  }
270
317
 
271
318
  } else if ( op === '<=' && outputLength > 1 ) {
272
319
 
273
- if ( builder.useComparisonMethod ) {
320
+ if ( isGLSL ) {
274
321
 
275
322
  return builder.format( `${ builder.getMethod( 'lessThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
276
323
 
277
324
  } else {
278
325
 
326
+ // WGSL
327
+
279
328
  return builder.format( `( ${ a } <= ${ b } )`, type, output );
280
329
 
281
330
  }
282
331
 
283
332
  } else if ( op === '>' && outputLength > 1 ) {
284
333
 
285
- if ( builder.useComparisonMethod ) {
334
+ if ( isGLSL ) {
286
335
 
287
336
  return builder.format( `${ builder.getMethod( 'greaterThan', output ) }( ${ a }, ${ b } )`, type, output );
288
337
 
289
338
  } else {
290
339
 
340
+ // WGSL
341
+
291
342
  return builder.format( `( ${ a } > ${ b } )`, type, output );
292
343
 
293
344
  }
294
345
 
295
346
  } else if ( op === '>=' && outputLength > 1 ) {
296
347
 
297
- if ( builder.useComparisonMethod ) {
348
+ if ( isGLSL ) {
298
349
 
299
350
  return builder.format( `${ builder.getMethod( 'greaterThanEqual', output ) }( ${ a }, ${ b } )`, type, output );
300
351
 
301
352
  } else {
302
353
 
354
+ // WGSL
355
+
303
356
  return builder.format( `( ${ a } >= ${ b } )`, type, output );
304
357
 
305
358
  }
306
359
 
360
+ } else if ( op === '%' ) {
361
+
362
+ if ( builder.isInteger( typeB ) ) {
363
+
364
+ return builder.format( `( ${ a } % ${ b } )`, type, output );
365
+
366
+ } else {
367
+
368
+ return builder.format( `${ builder.getMethod( 'mod', type ) }( ${ a }, ${ b } )`, type, output );
369
+
370
+ }
371
+
307
372
  } else if ( op === '!' || op === '~' ) {
308
373
 
309
374
  return builder.format( `(${op}${a})`, typeA, output );
@@ -315,6 +380,7 @@ class OperatorNode extends TempNode {
315
380
  } else {
316
381
 
317
382
  // Handle matrix operations
383
+
318
384
  if ( builder.isMatrix( typeA ) && typeB === 'float' ) {
319
385
 
320
386
  return builder.format( `( ${ b } ${ op } ${ a } )`, type, output );
@@ -325,7 +391,15 @@ class OperatorNode extends TempNode {
325
391
 
326
392
  } else {
327
393
 
328
- return builder.format( `( ${ a } ${ op } ${ b } )`, type, output );
394
+ let snippet = `( ${ a } ${ op } ${ b } )`;
395
+
396
+ if ( ! isGLSL && type === 'bool' && builder.isVector( typeA ) && builder.isVector( typeB ) ) {
397
+
398
+ snippet = `all${ snippet }`;
399
+
400
+ }
401
+
402
+ return builder.format( snippet, type, output );
329
403
 
330
404
  }
331
405
 
@@ -380,241 +454,238 @@ export default OperatorNode;
380
454
  *
381
455
  * @tsl
382
456
  * @function
383
- * @param {Node} aNode - The first input.
384
- * @param {Node} bNode - The second input.
457
+ * @param {Node} a - The first input.
458
+ * @param {Node} b - The second input.
385
459
  * @param {...Node} params - Additional input parameters.
386
460
  * @returns {OperatorNode}
387
461
  */
388
- export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' );
462
+ export const add = /*@__PURE__*/ nodeProxy( OperatorNode, '+' ).setParameterLength( 2, Infinity ).setName( 'add' );
389
463
 
390
464
  /**
391
465
  * Returns the subtraction of two or more value.
392
466
  *
393
467
  * @tsl
394
468
  * @function
395
- * @param {Node} aNode - The first input.
396
- * @param {Node} bNode - The second input.
469
+ * @param {Node} a - The first input.
470
+ * @param {Node} b - The second input.
397
471
  * @param {...Node} params - Additional input parameters.
398
472
  * @returns {OperatorNode}
399
473
  */
400
- export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' );
474
+ export const sub = /*@__PURE__*/ nodeProxy( OperatorNode, '-' ).setParameterLength( 2, Infinity ).setName( 'sub' );
401
475
 
402
476
  /**
403
477
  * Returns the multiplication of two or more value.
404
478
  *
405
479
  * @tsl
406
480
  * @function
407
- * @param {Node} aNode - The first input.
408
- * @param {Node} bNode - The second input.
481
+ * @param {Node} a - The first input.
482
+ * @param {Node} b - The second input.
409
483
  * @param {...Node} params - Additional input parameters.
410
484
  * @returns {OperatorNode}
411
485
  */
412
- export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' );
486
+ export const mul = /*@__PURE__*/ nodeProxy( OperatorNode, '*' ).setParameterLength( 2, Infinity ).setName( 'mul' );
413
487
 
414
488
  /**
415
489
  * Returns the division of two or more value.
416
490
  *
417
491
  * @tsl
418
492
  * @function
419
- * @param {Node} aNode - The first input.
420
- * @param {Node} bNode - The second input.
493
+ * @param {Node} a - The first input.
494
+ * @param {Node} b - The second input.
421
495
  * @param {...Node} params - Additional input parameters.
422
496
  * @returns {OperatorNode}
423
497
  */
424
- export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' );
498
+ export const div = /*@__PURE__*/ nodeProxy( OperatorNode, '/' ).setParameterLength( 2, Infinity ).setName( 'div' );
425
499
 
426
500
  /**
427
- * Computes the remainder of dividing the first node by the second, for integer values.
501
+ * Computes the remainder of dividing the first node by the second one.
428
502
  *
429
503
  * @tsl
430
504
  * @function
431
- * @param {Node} aNode - The first input.
432
- * @param {Node} bNode - The second input.
505
+ * @param {Node} a - The first input.
506
+ * @param {Node} b - The second input.
433
507
  * @returns {OperatorNode}
434
508
  */
435
- export const modInt = /*@__PURE__*/ nodeProxy( OperatorNode, '%' );
509
+ export const mod = /*@__PURE__*/ nodeProxy( OperatorNode, '%' ).setParameterLength( 2 ).setName( 'mod' );
436
510
 
437
511
  /**
438
512
  * Checks if two nodes are equal.
439
513
  *
440
514
  * @tsl
441
515
  * @function
442
- * @param {Node} aNode - The first input.
443
- * @param {Node} bNode - The second input.
516
+ * @param {Node} a - The first input.
517
+ * @param {Node} b - The second input.
444
518
  * @returns {OperatorNode}
445
519
  */
446
- export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' );
520
+ export const equal = /*@__PURE__*/ nodeProxy( OperatorNode, '==' ).setParameterLength( 2 ).setName( 'equal' );
447
521
 
448
522
  /**
449
523
  * Checks if two nodes are not equal.
450
524
  *
451
525
  * @tsl
452
526
  * @function
453
- * @param {Node} aNode - The first input.
454
- * @param {Node} bNode - The second input.
527
+ * @param {Node} a - The first input.
528
+ * @param {Node} b - The second input.
455
529
  * @returns {OperatorNode}
456
530
  */
457
- export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' );
531
+ export const notEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '!=' ).setParameterLength( 2 ).setName( 'notEqual' );
458
532
 
459
533
  /**
460
534
  * Checks if the first node is less than the second.
461
535
  *
462
536
  * @tsl
463
537
  * @function
464
- * @param {Node} aNode - The first input.
465
- * @param {Node} bNode - The second input.
538
+ * @param {Node} a - The first input.
539
+ * @param {Node} b - The second input.
466
540
  * @returns {OperatorNode}
467
541
  */
468
- export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' );
542
+ export const lessThan = /*@__PURE__*/ nodeProxy( OperatorNode, '<' ).setParameterLength( 2 ).setName( 'lessThan' );
469
543
 
470
544
  /**
471
545
  * Checks if the first node is greater than the second.
472
546
  *
473
547
  * @tsl
474
548
  * @function
475
- * @param {Node} aNode - The first input.
476
- * @param {Node} bNode - The second input.
549
+ * @param {Node} a - The first input.
550
+ * @param {Node} b - The second input.
477
551
  * @returns {OperatorNode}
478
552
  */
479
- export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' );
553
+ export const greaterThan = /*@__PURE__*/ nodeProxy( OperatorNode, '>' ).setParameterLength( 2 ).setName( 'greaterThan' );
480
554
 
481
555
  /**
482
556
  * Checks if the first node is less than or equal to the second.
483
557
  *
484
558
  * @tsl
485
559
  * @function
486
- * @param {Node} aNode - The first input.
487
- * @param {Node} bNode - The second input.
560
+ * @param {Node} a - The first input.
561
+ * @param {Node} b - The second input.
488
562
  * @returns {OperatorNode}
489
563
  */
490
- export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' );
564
+ export const lessThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '<=' ).setParameterLength( 2 ).setName( 'lessThanEqual' );
491
565
 
492
566
  /**
493
567
  * Checks if the first node is greater than or equal to the second.
494
568
  *
495
569
  * @tsl
496
570
  * @function
497
- * @param {Node} aNode - The first input.
498
- * @param {Node} bNode - The second input.
571
+ * @param {Node} a - The first input.
572
+ * @param {Node} b - The second input.
499
573
  * @returns {OperatorNode}
500
574
  */
501
- export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' );
575
+ export const greaterThanEqual = /*@__PURE__*/ nodeProxy( OperatorNode, '>=' ).setParameterLength( 2 ).setName( 'greaterThanEqual' );
502
576
 
503
577
  /**
504
- * Performs logical AND on two nodes.
578
+ * Performs a logical AND operation on multiple nodes.
505
579
  *
506
580
  * @tsl
507
581
  * @function
508
- * @param {Node} aNode - The first input.
509
- * @param {Node} bNode - The second input.
582
+ * @param {...Node} nodes - The input nodes to be combined using AND.
510
583
  * @returns {OperatorNode}
511
584
  */
512
- export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' );
585
+ export const and = /*@__PURE__*/ nodeProxy( OperatorNode, '&&' ).setParameterLength( 2, Infinity ).setName( 'and' );
513
586
 
514
587
  /**
515
- * Performs logical OR on two nodes.
588
+ * Performs a logical OR operation on multiple nodes.
516
589
  *
517
590
  * @tsl
518
591
  * @function
519
- * @param {Node} aNode - The first input.
520
- * @param {Node} bNode - The second input.
592
+ * @param {...Node} nodes - The input nodes to be combined using OR.
521
593
  * @returns {OperatorNode}
522
594
  */
523
- export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' );
595
+ export const or = /*@__PURE__*/ nodeProxy( OperatorNode, '||' ).setParameterLength( 2, Infinity ).setName( 'or' );
524
596
 
525
597
  /**
526
598
  * Performs logical NOT on a node.
527
599
  *
528
600
  * @tsl
529
601
  * @function
530
- * @param {Node} aNode - The first input.
531
- * @param {Node} bNode - The second input.
602
+ * @param {Node} value - The value.
532
603
  * @returns {OperatorNode}
533
604
  */
534
- export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' );
605
+ export const not = /*@__PURE__*/ nodeProxy( OperatorNode, '!' ).setParameterLength( 1 ).setName( 'not' );
535
606
 
536
607
  /**
537
608
  * Performs logical XOR on two nodes.
538
609
  *
539
610
  * @tsl
540
611
  * @function
541
- * @param {Node} aNode - The first input.
542
- * @param {Node} bNode - The second input.
612
+ * @param {Node} a - The first input.
613
+ * @param {Node} b - The second input.
543
614
  * @returns {OperatorNode}
544
615
  */
545
- export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' );
616
+ export const xor = /*@__PURE__*/ nodeProxy( OperatorNode, '^^' ).setParameterLength( 2 ).setName( 'xor' );
546
617
 
547
618
  /**
548
619
  * Performs bitwise AND on two nodes.
549
620
  *
550
621
  * @tsl
551
622
  * @function
552
- * @param {Node} aNode - The first input.
553
- * @param {Node} bNode - The second input.
623
+ * @param {Node} a - The first input.
624
+ * @param {Node} b - The second input.
554
625
  * @returns {OperatorNode}
555
626
  */
556
- export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' );
627
+ export const bitAnd = /*@__PURE__*/ nodeProxy( OperatorNode, '&' ).setParameterLength( 2 ).setName( 'bitAnd' );
557
628
 
558
629
  /**
559
630
  * Performs bitwise NOT on a node.
560
631
  *
561
632
  * @tsl
562
633
  * @function
563
- * @param {Node} aNode - The first input.
564
- * @param {Node} bNode - The second input.
634
+ * @param {Node} a - The first input.
635
+ * @param {Node} b - The second input.
565
636
  * @returns {OperatorNode}
566
637
  */
567
- export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' );
638
+ export const bitNot = /*@__PURE__*/ nodeProxy( OperatorNode, '~' ).setParameterLength( 2 ).setName( 'bitNot' );
568
639
 
569
640
  /**
570
641
  * Performs bitwise OR on two nodes.
571
642
  *
572
643
  * @tsl
573
644
  * @function
574
- * @param {Node} aNode - The first input.
575
- * @param {Node} bNode - The second input.
645
+ * @param {Node} a - The first input.
646
+ * @param {Node} b - The second input.
576
647
  * @returns {OperatorNode}
577
648
  */
578
- export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' );
649
+ export const bitOr = /*@__PURE__*/ nodeProxy( OperatorNode, '|' ).setParameterLength( 2 ).setName( 'bitOr' );
579
650
 
580
651
  /**
581
652
  * Performs bitwise XOR on two nodes.
582
653
  *
583
654
  * @tsl
584
655
  * @function
585
- * @param {Node} aNode - The first input.
586
- * @param {Node} bNode - The second input.
656
+ * @param {Node} a - The first input.
657
+ * @param {Node} b - The second input.
587
658
  * @returns {OperatorNode}
588
659
  */
589
- export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' );
660
+ export const bitXor = /*@__PURE__*/ nodeProxy( OperatorNode, '^' ).setParameterLength( 2 ).setName( 'bitXor' );
590
661
 
591
662
  /**
592
663
  * Shifts a node to the left.
593
664
  *
594
665
  * @tsl
595
666
  * @function
596
- * @param {Node} aNode - The node to shift.
597
- * @param {Node} bNode - The value to shift.
667
+ * @param {Node} a - The node to shift.
668
+ * @param {Node} b - The value to shift.
598
669
  * @returns {OperatorNode}
599
670
  */
600
- export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' );
671
+ export const shiftLeft = /*@__PURE__*/ nodeProxy( OperatorNode, '<<' ).setParameterLength( 2 ).setName( 'shiftLeft' );
601
672
 
602
673
  /**
603
674
  * Shifts a node to the right.
604
675
  *
605
676
  * @tsl
606
677
  * @function
607
- * @param {Node} aNode - The node to shift.
608
- * @param {Node} bNode - The value to shift.
678
+ * @param {Node} a - The node to shift.
679
+ * @param {Node} b - The value to shift.
609
680
  * @returns {OperatorNode}
610
681
  */
611
- export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' );
682
+ export const shiftRight = /*@__PURE__*/ nodeProxy( OperatorNode, '>>' ).setParameterLength( 2 ).setName( 'shiftRight' );
612
683
 
613
684
  addMethodChaining( 'add', add );
614
685
  addMethodChaining( 'sub', sub );
615
686
  addMethodChaining( 'mul', mul );
616
687
  addMethodChaining( 'div', div );
617
- addMethodChaining( 'modInt', modInt );
688
+ addMethodChaining( 'mod', mod );
618
689
  addMethodChaining( 'equal', equal );
619
690
  addMethodChaining( 'notEqual', notEqual );
620
691
  addMethodChaining( 'lessThan', lessThan );
@@ -635,16 +706,34 @@ addMethodChaining( 'shiftRight', shiftRight );
635
706
  /**
636
707
  * @tsl
637
708
  * @function
638
- * @deprecated since r168. Use {@link modInt} instead.
709
+ * @deprecated since r168. Use {@link mod} instead.
710
+ *
711
+ * @param {Node} a - The first input.
712
+ * @param {Node} b - The second input.
713
+ * @returns {OperatorNode}
714
+ */
715
+ export const remainder = ( a, b ) => { // @deprecated, r168
716
+
717
+ console.warn( 'THREE.TSL: "remainder()" is deprecated. Use "mod( int( ... ) )" instead.' );
718
+ return mod( a, b );
719
+
720
+ };
721
+
722
+ /**
723
+ * @tsl
724
+ * @function
725
+ * @deprecated since r175. Use {@link mod} instead.
639
726
  *
640
- * @param {...any} params
641
- * @returns {Function}
727
+ * @param {Node} a - The first input.
728
+ * @param {Node} b - The second input.
729
+ * @returns {OperatorNode}
642
730
  */
643
- export const remainder = ( ...params ) => { // @deprecated, r168
731
+ export const modInt = ( a, b ) => { // @deprecated, r175
644
732
 
645
- console.warn( 'TSL.OperatorNode: .remainder() has been renamed to .modInt().' );
646
- return modInt( ...params );
733
+ console.warn( 'THREE.TSL: "modInt()" is deprecated. Use "mod( int( ... ) )" instead.' );
734
+ return mod( int( a ), int( b ) );
647
735
 
648
736
  };
649
737
 
650
738
  addMethodChaining( 'remainder', remainder );
739
+ addMethodChaining( 'modInt', modInt );
@@ -348,7 +348,7 @@ export default PMREMNode;
348
348
  * Returns `true` if the given cube map image has been fully loaded.
349
349
  *
350
350
  * @private
351
- * @param {Array<(Image|Object)>} image - The cube map image.
351
+ * @param {?Array<(Image|Object)>} [image] - The cube map image.
352
352
  * @return {boolean} Whether the given cube map is ready or not.
353
353
  */
354
354
  function isCubeMapReady( image ) {
@@ -390,8 +390,8 @@ function isEquirectangularMapReady( image ) {
390
390
  * @tsl
391
391
  * @function
392
392
  * @param {Texture} value - The input texture.
393
- * @param {Node<vec2>} [uvNode=null] - The uv node.
394
- * @param {Node<float>} [levelNode=null] - The level node.
393
+ * @param {?Node<vec2>} [uvNode=null] - The uv node.
394
+ * @param {?Node<float>} [levelNode=null] - The level node.
395
395
  * @returns {PMREMNode}
396
396
  */
397
- export const pmremTexture = /*@__PURE__*/ nodeProxy( PMREMNode );
397
+ export const pmremTexture = /*@__PURE__*/ nodeProxy( PMREMNode ).setParameterLength( 1, 3 );
@@ -1,5 +1,5 @@
1
1
  import { Fn, int, float, vec2, vec3, vec4, If } from '../tsl/TSLBase.js';
2
- import { cos, sin, abs, max, exp2, log2, clamp, fract, mix, floor, normalize, cross, all } from '../math/MathNode.js';
2
+ import { cos, sin, abs, max, exp2, log2, clamp, fract, mix, floor, normalize, cross } from '../math/MathNode.js';
3
3
  import { mul } from '../math/OperatorNode.js';
4
4
  import { select } from '../math/ConditionalNode.js';
5
5
  import { Loop, Break } from '../utils/LoopNode.js';
@@ -258,7 +258,7 @@ export const blur = /*@__PURE__*/ Fn( ( { n, latitudinal, poleAxis, outputDirect
258
258
 
259
259
  const axis = vec3( select( latitudinal, poleAxis, cross( poleAxis, outputDirection ) ) ).toVar();
260
260
 
261
- If( all( axis.equals( vec3( 0.0 ) ) ), () => {
261
+ If( axis.equal( vec3( 0.0 ) ), () => {
262
262
 
263
263
  axis.assign( vec3( outputDirection.z, 0.0, outputDirection.x.negate() ) );
264
264
 
@@ -23,9 +23,10 @@ export * from '../utils/RemapNode.js'; // .remap(), .remapClamp()
23
23
  export * from '../code/ExpressionNode.js'; // expression()
24
24
  export * from '../utils/Discard.js'; // Discard(), Return()
25
25
  export * from '../display/RenderOutputNode.js'; // .renderOutput()
26
+ export * from '../utils/DebugNode.js'; // debug()
26
27
 
27
28
  export function addNodeElement( name/*, nodeElement*/ ) {
28
29
 
29
- console.warn( 'THREE.TSLBase: AddNodeElement has been removed in favor of tree-shaking. Trying add', name );
30
+ console.warn( 'THREE.TSL: AddNodeElement has been removed in favor of tree-shaking. Trying add', name );
30
31
 
31
32
  }