super-three 0.173.5 → 0.176.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 (832) hide show
  1. package/build/three.cjs +21993 -1359
  2. package/build/three.core.js +21129 -1188
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +835 -142
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +8 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +19493 -17617
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +19477 -17617
  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 +144 -42
  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 +194 -71
  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 +74 -30
  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 +51 -5
  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 +36 -1
  94. package/examples/jsm/loaders/DDSLoader.js +25 -1
  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 +71 -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 +222 -9
  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 +87 -19
  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 +56 -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 +90 -70
  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 +105 -13
  160. package/examples/jsm/misc/TubePainter.js +53 -0
  161. package/examples/jsm/misc/Volume.js +109 -73
  162. package/examples/jsm/misc/VolumeSlice.js +91 -48
  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 +75 -2
  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 +134 -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 +268 -134
  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/AST.js +10 -0
  273. package/examples/jsm/transpiler/GLSLDecoder.js +17 -3
  274. package/examples/jsm/transpiler/TSLEncoder.js +83 -15
  275. package/examples/jsm/transpiler/Transpiler.js +31 -0
  276. package/examples/jsm/tsl/display/AfterImageNode.js +24 -25
  277. package/examples/jsm/tsl/display/AnaglyphPassNode.js +2 -3
  278. package/examples/jsm/tsl/display/AnamorphicNode.js +8 -9
  279. package/examples/jsm/tsl/display/BleachBypass.js +1 -2
  280. package/examples/jsm/tsl/display/BloomNode.js +15 -16
  281. package/examples/jsm/tsl/display/DenoiseNode.js +9 -10
  282. package/examples/jsm/tsl/display/DepthOfFieldNode.js +5 -6
  283. package/examples/jsm/tsl/display/DotScreenNode.js +5 -6
  284. package/examples/jsm/tsl/display/FXAANode.js +2 -3
  285. package/examples/jsm/tsl/display/FilmNode.js +9 -8
  286. package/examples/jsm/tsl/display/GTAONode.js +11 -12
  287. package/examples/jsm/tsl/display/GaussianBlurNode.js +14 -14
  288. package/examples/jsm/tsl/display/LensflareNode.js +15 -16
  289. package/examples/jsm/tsl/display/Lut3DNode.js +4 -5
  290. package/examples/jsm/tsl/display/MotionBlur.js +1 -2
  291. package/examples/jsm/tsl/display/OutlineNode.js +7 -8
  292. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -3
  293. package/examples/jsm/tsl/display/PixelationPassNode.js +14 -15
  294. package/examples/jsm/tsl/display/RGBShiftNode.js +5 -6
  295. package/examples/jsm/tsl/display/SMAANode.js +13 -7
  296. package/examples/jsm/tsl/display/SSAAPassNode.js +7 -7
  297. package/examples/jsm/tsl/display/SSRNode.js +6 -7
  298. package/examples/jsm/tsl/display/Sepia.js +1 -2
  299. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -3
  300. package/examples/jsm/tsl/display/StereoCompositePassNode.js +4 -4
  301. package/examples/jsm/tsl/display/StereoPassNode.js +2 -3
  302. package/examples/jsm/tsl/display/TRAAPassNode.js +11 -10
  303. package/examples/jsm/tsl/display/TransitionNode.js +4 -5
  304. package/examples/jsm/tsl/display/hashBlur.js +1 -2
  305. package/examples/jsm/tsl/lighting/TiledLightsNode.js +33 -7
  306. package/examples/jsm/tsl/math/Bayer.js +31 -0
  307. package/examples/jsm/tsl/utils/Raymarching.js +67 -0
  308. package/examples/jsm/utils/BufferGeometryUtils.js +88 -29
  309. package/examples/jsm/utils/CameraUtils.js +10 -7
  310. package/examples/jsm/utils/GeometryCompressionUtils.js +20 -30
  311. package/examples/jsm/utils/GeometryUtils.js +12 -13
  312. package/examples/jsm/utils/LDrawUtils.js +11 -4
  313. package/examples/jsm/utils/SceneOptimizer.js +66 -20
  314. package/examples/jsm/utils/SceneUtils.js +50 -3
  315. package/examples/jsm/utils/ShadowMapViewer.js +47 -24
  316. package/examples/jsm/utils/ShadowMapViewerGPU.js +47 -24
  317. package/examples/jsm/utils/SkeletonUtils.js +45 -0
  318. package/examples/jsm/utils/SortUtils.js +14 -5
  319. package/examples/jsm/utils/UVsDebug.js +9 -4
  320. package/examples/jsm/utils/WebGLTextureUtils.js +13 -0
  321. package/examples/jsm/utils/WebGPUTextureUtils.js +14 -0
  322. package/examples/jsm/utils/WorkerPool.js +65 -2
  323. package/examples/jsm/webxr/ARButton.js +18 -0
  324. package/examples/jsm/webxr/OculusHandModel.js +83 -0
  325. package/examples/jsm/webxr/OculusHandPointerModel.js +125 -0
  326. package/examples/jsm/webxr/Text2D.js +11 -0
  327. package/examples/jsm/webxr/VRButton.js +30 -0
  328. package/examples/jsm/webxr/XRButton.js +22 -0
  329. package/examples/jsm/webxr/XRControllerModelFactory.js +87 -3
  330. package/examples/jsm/webxr/XREstimatedLight.js +33 -3
  331. package/examples/jsm/webxr/XRHandMeshModel.js +35 -0
  332. package/examples/jsm/webxr/XRHandModelFactory.js +92 -0
  333. package/examples/jsm/webxr/XRHandPrimitiveModel.js +42 -0
  334. package/examples/jsm/webxr/XRPlanes.js +17 -0
  335. package/package.json +3 -4
  336. package/src/Three.TSL.js +7 -1
  337. package/src/animation/AnimationAction.js +262 -30
  338. package/src/animation/AnimationClip.js +141 -2
  339. package/src/animation/AnimationMixer.js +99 -15
  340. package/src/animation/AnimationObjectGroup.js +41 -18
  341. package/src/animation/AnimationUtils.js +169 -19
  342. package/src/animation/KeyframeTrack.js +144 -10
  343. package/src/animation/PropertyBinding.js +77 -3
  344. package/src/animation/PropertyMixer.js +72 -5
  345. package/src/animation/tracks/BooleanKeyframeTrack.js +33 -6
  346. package/src/animation/tracks/ColorKeyframeTrack.js +26 -5
  347. package/src/animation/tracks/NumberKeyframeTrack.js +26 -2
  348. package/src/animation/tracks/QuaternionKeyframeTrack.js +30 -1
  349. package/src/animation/tracks/StringKeyframeTrack.js +33 -2
  350. package/src/animation/tracks/VectorKeyframeTrack.js +26 -2
  351. package/src/audio/Audio.js +339 -0
  352. package/src/audio/AudioAnalyser.js +58 -1
  353. package/src/audio/AudioContext.js +15 -0
  354. package/src/audio/AudioListener.js +76 -0
  355. package/src/audio/PositionalAudio.js +107 -0
  356. package/src/cameras/ArrayCamera.js +28 -0
  357. package/src/cameras/Camera.js +47 -0
  358. package/src/cameras/CubeCamera.js +66 -0
  359. package/src/cameras/OrthographicCamera.js +109 -0
  360. package/src/cameras/PerspectiveCamera.js +163 -40
  361. package/src/cameras/StereoCamera.js +46 -0
  362. package/src/constants.js +1429 -5
  363. package/src/core/BufferAttribute.js +413 -3
  364. package/src/core/BufferGeometry.js +337 -1
  365. package/src/core/Clock.js +60 -0
  366. package/src/core/EventDispatcher.js +44 -2
  367. package/src/core/GLBufferAttribute.js +99 -0
  368. package/src/core/InstancedBufferAttribute.js +29 -0
  369. package/src/core/InstancedBufferGeometry.js +20 -0
  370. package/src/core/InstancedInterleavedBuffer.js +26 -0
  371. package/src/core/InterleavedBuffer.js +137 -3
  372. package/src/core/InterleavedBufferAttribute.js +197 -0
  373. package/src/core/Layers.js +71 -10
  374. package/src/core/Object3D.js +593 -0
  375. package/src/core/Raycaster.js +134 -1
  376. package/src/core/RenderTarget.js +170 -11
  377. package/src/core/RenderTarget3D.js +25 -0
  378. package/src/core/RenderTargetArray.js +18 -0
  379. package/src/core/Uniform.js +29 -0
  380. package/src/core/UniformsGroup.js +84 -2
  381. package/src/extras/Controls.js +88 -1
  382. package/src/extras/DataUtils.js +48 -8
  383. package/src/extras/Earcut.js +13 -780
  384. package/src/extras/ImageUtils.js +20 -2
  385. package/src/extras/PMREMGenerator.js +41 -25
  386. package/src/extras/ShapeUtils.js +24 -2
  387. package/src/extras/TextureUtils.js +95 -15
  388. package/src/extras/core/Curve.js +150 -50
  389. package/src/extras/core/CurvePath.js +63 -22
  390. package/src/extras/core/Interpolations.js +29 -3
  391. package/src/extras/core/Path.js +134 -1
  392. package/src/extras/core/Shape.js +63 -0
  393. package/src/extras/core/ShapePath.js +76 -0
  394. package/src/extras/curves/ArcCurve.js +22 -0
  395. package/src/extras/curves/CatmullRomCurve3.js +89 -18
  396. package/src/extras/curves/CubicBezierCurve.js +67 -0
  397. package/src/extras/curves/CubicBezierCurve3.js +50 -0
  398. package/src/extras/curves/EllipseCurve.js +102 -0
  399. package/src/extras/curves/LineCurve.js +36 -0
  400. package/src/extras/curves/LineCurve3.js +36 -0
  401. package/src/extras/curves/QuadraticBezierCurve.js +59 -0
  402. package/src/extras/curves/QuadraticBezierCurve3.js +43 -0
  403. package/src/extras/curves/SplineCurve.js +48 -0
  404. package/src/extras/lib/earcut.js +685 -0
  405. package/src/geometries/BoxGeometry.js +38 -0
  406. package/src/geometries/CapsuleGeometry.js +34 -0
  407. package/src/geometries/CircleGeometry.js +40 -0
  408. package/src/geometries/ConeGeometry.js +38 -0
  409. package/src/geometries/CylinderGeometry.js +39 -0
  410. package/src/geometries/DodecahedronGeometry.js +32 -0
  411. package/src/geometries/EdgesGeometry.js +28 -0
  412. package/src/geometries/ExtrudeGeometry.js +112 -28
  413. package/src/geometries/IcosahedronGeometry.js +32 -0
  414. package/src/geometries/LatheGeometry.js +40 -0
  415. package/src/geometries/OctahedronGeometry.js +32 -0
  416. package/src/geometries/PlaneGeometry.js +34 -0
  417. package/src/geometries/PolyhedronGeometry.js +29 -0
  418. package/src/geometries/RingGeometry.js +36 -0
  419. package/src/geometries/ShapeGeometry.js +37 -0
  420. package/src/geometries/SphereGeometry.js +37 -0
  421. package/src/geometries/TetrahedronGeometry.js +32 -0
  422. package/src/geometries/TorusGeometry.js +35 -0
  423. package/src/geometries/TorusKnotGeometry.js +38 -0
  424. package/src/geometries/TubeGeometry.js +49 -0
  425. package/src/geometries/WireframeGeometry.js +32 -0
  426. package/src/helpers/ArrowHelper.js +60 -3
  427. package/src/helpers/AxesHelper.js +28 -0
  428. package/src/helpers/Box3Helper.js +28 -0
  429. package/src/helpers/BoxHelper.js +43 -7
  430. package/src/helpers/CameraHelper.js +45 -5
  431. package/src/helpers/DirectionalLightHelper.js +52 -0
  432. package/src/helpers/GridHelper.js +26 -0
  433. package/src/helpers/HemisphereLightHelper.js +39 -0
  434. package/src/helpers/PlaneHelper.js +33 -0
  435. package/src/helpers/PointLightHelper.js +43 -0
  436. package/src/helpers/PolarGridHelper.js +30 -0
  437. package/src/helpers/SkeletonHelper.js +39 -2
  438. package/src/helpers/SpotLightHelper.js +40 -0
  439. package/src/lights/AmbientLight.js +25 -0
  440. package/src/lights/DirectionalLight.js +57 -0
  441. package/src/lights/DirectionalLightShadow.js +15 -0
  442. package/src/lights/HemisphereLight.js +32 -0
  443. package/src/lights/Light.js +36 -0
  444. package/src/lights/LightProbe.js +43 -0
  445. package/src/lights/LightShadow.js +159 -0
  446. package/src/lights/PointLight.js +59 -0
  447. package/src/lights/PointLightShadow.js +21 -0
  448. package/src/lights/RectAreaLight.js +59 -0
  449. package/src/lights/SpotLight.js +102 -0
  450. package/src/lights/SpotLightShadow.js +22 -0
  451. package/src/lights/webgpu/IESSpotLight.js +21 -0
  452. package/src/loaders/AnimationLoader.js +31 -0
  453. package/src/loaders/AudioLoader.js +31 -0
  454. package/src/loaders/BufferGeometryLoader.js +34 -0
  455. package/src/loaders/Cache.js +45 -0
  456. package/src/loaders/CompressedTextureLoader.js +36 -3
  457. package/src/loaders/CubeTextureLoader.js +45 -0
  458. package/src/loaders/DataTextureLoader.js +44 -3
  459. package/src/loaders/FileLoader.js +57 -1
  460. package/src/loaders/ImageBitmapLoader.js +57 -0
  461. package/src/loaders/ImageLoader.js +30 -0
  462. package/src/loaders/Loader.js +130 -0
  463. package/src/loaders/LoaderUtils.js +18 -36
  464. package/src/loaders/LoadingManager.js +142 -0
  465. package/src/loaders/MaterialLoader.js +57 -0
  466. package/src/loaders/ObjectLoader.js +53 -0
  467. package/src/loaders/TextureLoader.js +33 -0
  468. package/src/loaders/nodes/NodeLoader.js +13 -9
  469. package/src/loaders/nodes/NodeMaterialLoader.js +6 -6
  470. package/src/loaders/nodes/NodeObjectLoader.js +12 -12
  471. package/src/materials/LineBasicMaterial.js +74 -1
  472. package/src/materials/LineDashedMaterial.js +52 -0
  473. package/src/materials/Material.js +481 -4
  474. package/src/materials/MeshBasicMaterial.js +165 -0
  475. package/src/materials/MeshDepthMaterial.js +93 -0
  476. package/src/materials/MeshDistanceMaterial.js +76 -0
  477. package/src/materials/MeshLambertMaterial.js +273 -0
  478. package/src/materials/MeshMatcapMaterial.js +142 -0
  479. package/src/materials/MeshNormalMaterial.js +113 -0
  480. package/src/materials/MeshPhongMaterial.js +288 -0
  481. package/src/materials/MeshPhysicalMaterial.js +292 -1
  482. package/src/materials/MeshStandardMaterial.js +297 -0
  483. package/src/materials/MeshToonMaterial.js +218 -0
  484. package/src/materials/PointsMaterial.js +89 -0
  485. package/src/materials/RawShaderMaterial.js +25 -0
  486. package/src/materials/ShaderMaterial.js +215 -6
  487. package/src/materials/ShadowMaterial.js +54 -0
  488. package/src/materials/SpriteMaterial.js +82 -0
  489. package/src/materials/nodes/Line2NodeMaterial.js +14 -14
  490. package/src/materials/nodes/LineBasicNodeMaterial.js +3 -3
  491. package/src/materials/nodes/LineDashedNodeMaterial.js +12 -12
  492. package/src/materials/nodes/MeshBasicNodeMaterial.js +7 -7
  493. package/src/materials/nodes/MeshLambertNodeMaterial.js +5 -5
  494. package/src/materials/nodes/MeshMatcapNodeMaterial.js +3 -3
  495. package/src/materials/nodes/MeshNormalNodeMaterial.js +8 -4
  496. package/src/materials/nodes/MeshPhongNodeMaterial.js +9 -9
  497. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +43 -43
  498. package/src/materials/nodes/MeshSSSNodeMaterial.js +18 -21
  499. package/src/materials/nodes/MeshStandardNodeMaterial.js +11 -11
  500. package/src/materials/nodes/MeshToonNodeMaterial.js +4 -4
  501. package/src/materials/nodes/NodeMaterial.js +66 -47
  502. package/src/materials/nodes/PointsNodeMaterial.js +6 -6
  503. package/src/materials/nodes/ShadowNodeMaterial.js +13 -4
  504. package/src/materials/nodes/SpriteNodeMaterial.js +17 -9
  505. package/src/materials/nodes/VolumeNodeMaterial.js +25 -128
  506. package/src/materials/nodes/manager/NodeMaterialObserver.js +8 -8
  507. package/src/math/Box2.js +177 -0
  508. package/src/math/Box3.js +243 -0
  509. package/src/math/Color.js +343 -0
  510. package/src/math/Cylindrical.js +65 -6
  511. package/src/math/Euler.js +137 -4
  512. package/src/math/Frustum.js +83 -0
  513. package/src/math/Interpolant.js +87 -8
  514. package/src/math/Line3.js +94 -0
  515. package/src/math/MathUtils.js +405 -19
  516. package/src/math/Matrix2.js +70 -0
  517. package/src/math/Matrix3.js +229 -4
  518. package/src/math/Matrix4.js +368 -3
  519. package/src/math/Plane.js +164 -2
  520. package/src/math/Quaternion.js +262 -6
  521. package/src/math/Ray.js +160 -0
  522. package/src/math/Sphere.js +147 -0
  523. package/src/math/Spherical.js +70 -8
  524. package/src/math/SphericalHarmonics3.js +112 -14
  525. package/src/math/Triangle.js +206 -2
  526. package/src/math/Vector2.js +388 -2
  527. package/src/math/Vector3.js +541 -4
  528. package/src/math/Vector4.js +393 -0
  529. package/src/math/interpolants/CubicInterpolant.js +10 -1
  530. package/src/math/interpolants/DiscreteInterpolant.js +10 -2
  531. package/src/math/interpolants/LinearInterpolant.js +13 -0
  532. package/src/math/interpolants/QuaternionLinearInterpolant.js +10 -1
  533. package/src/nodes/Nodes.js +1 -0
  534. package/src/nodes/TSL.js +1 -0
  535. package/src/nodes/accessors/AccessorsUtils.js +4 -2
  536. package/src/nodes/accessors/Arrays.js +6 -6
  537. package/src/nodes/accessors/BatchNode.js +10 -11
  538. package/src/nodes/accessors/Bitangent.js +6 -2
  539. package/src/nodes/accessors/BufferAttributeNode.js +33 -31
  540. package/src/nodes/accessors/BufferNode.js +12 -13
  541. package/src/nodes/accessors/BuiltinNode.js +7 -8
  542. package/src/nodes/accessors/Camera.js +9 -2
  543. package/src/nodes/accessors/ClippingNode.js +4 -4
  544. package/src/nodes/accessors/CubeTextureNode.js +17 -19
  545. package/src/nodes/accessors/InstanceNode.js +10 -11
  546. package/src/nodes/accessors/InstancedMeshNode.js +3 -4
  547. package/src/nodes/accessors/Lights.js +12 -15
  548. package/src/nodes/accessors/MaterialNode.js +45 -9
  549. package/src/nodes/accessors/MaterialProperties.js +51 -2
  550. package/src/nodes/accessors/MaterialReferenceNode.js +11 -12
  551. package/src/nodes/accessors/ModelNode.js +20 -3
  552. package/src/nodes/accessors/ModelViewProjectionNode.js +1 -2
  553. package/src/nodes/accessors/MorphNode.js +29 -26
  554. package/src/nodes/accessors/Normal.js +11 -3
  555. package/src/nodes/accessors/Object3DNode.js +51 -16
  556. package/src/nodes/accessors/PointUVNode.js +2 -3
  557. package/src/nodes/accessors/Position.js +8 -3
  558. package/src/nodes/accessors/ReferenceBaseNode.js +29 -29
  559. package/src/nodes/accessors/ReferenceNode.js +31 -31
  560. package/src/nodes/accessors/ReflectVector.js +4 -2
  561. package/src/nodes/accessors/RendererReferenceNode.js +9 -10
  562. package/src/nodes/accessors/SceneNode.js +5 -4
  563. package/src/nodes/accessors/SkinningNode.js +53 -44
  564. package/src/nodes/accessors/StorageBufferNode.js +24 -24
  565. package/src/nodes/accessors/StorageTextureNode.js +17 -17
  566. package/src/nodes/accessors/Tangent.js +6 -2
  567. package/src/nodes/accessors/Texture3DNode.js +11 -12
  568. package/src/nodes/accessors/TextureBicubic.js +2 -3
  569. package/src/nodes/accessors/TextureNode.js +68 -47
  570. package/src/nodes/accessors/TextureSizeNode.js +5 -6
  571. package/src/nodes/accessors/UV.js +2 -3
  572. package/src/nodes/accessors/UniformArrayNode.js +24 -24
  573. package/src/nodes/accessors/UserDataNode.js +11 -12
  574. package/src/nodes/accessors/VelocityNode.js +4 -5
  575. package/src/nodes/accessors/VertexColorNode.js +7 -8
  576. package/src/nodes/code/CodeNode.js +15 -13
  577. package/src/nodes/code/ExpressionNode.js +8 -9
  578. package/src/nodes/code/FunctionCallNode.js +29 -9
  579. package/src/nodes/code/FunctionNode.js +1 -1
  580. package/src/nodes/code/ScriptableNode.js +27 -28
  581. package/src/nodes/code/ScriptableValueNode.js +11 -12
  582. package/src/nodes/core/ArrayNode.js +29 -12
  583. package/src/nodes/core/AssignNode.js +4 -5
  584. package/src/nodes/core/AttributeNode.js +8 -9
  585. package/src/nodes/core/BypassNode.js +3 -4
  586. package/src/nodes/core/CacheNode.js +5 -6
  587. package/src/nodes/core/ConstNode.js +4 -4
  588. package/src/nodes/core/ContextNode.js +9 -9
  589. package/src/nodes/core/IndexNode.js +8 -4
  590. package/src/nodes/core/InputNode.js +7 -7
  591. package/src/nodes/core/LightingModel.js +17 -17
  592. package/src/nodes/core/MRTNode.js +9 -10
  593. package/src/nodes/core/Node.js +49 -37
  594. package/src/nodes/core/NodeAttribute.js +7 -7
  595. package/src/nodes/core/NodeBuilder.js +248 -175
  596. package/src/nodes/core/NodeCache.js +4 -4
  597. package/src/nodes/core/NodeCode.js +6 -6
  598. package/src/nodes/core/NodeFrame.js +10 -10
  599. package/src/nodes/core/NodeFunction.js +8 -8
  600. package/src/nodes/core/NodeFunctionInput.js +8 -8
  601. package/src/nodes/core/NodeParser.js +1 -1
  602. package/src/nodes/core/NodeUniform.js +7 -7
  603. package/src/nodes/core/NodeUtils.js +22 -24
  604. package/src/nodes/core/NodeVar.js +9 -9
  605. package/src/nodes/core/NodeVarying.js +4 -4
  606. package/src/nodes/core/OutputStructNode.js +2 -3
  607. package/src/nodes/core/ParameterNode.js +6 -7
  608. package/src/nodes/core/PropertyNode.js +41 -13
  609. package/src/nodes/core/StackNode.js +11 -12
  610. package/src/nodes/core/StructNode.js +2 -3
  611. package/src/nodes/core/StructTypeNode.js +10 -6
  612. package/src/nodes/core/TempNode.js +3 -3
  613. package/src/nodes/core/UniformGroupNode.js +15 -12
  614. package/src/nodes/core/UniformNode.js +9 -10
  615. package/src/nodes/core/VarNode.js +14 -18
  616. package/src/nodes/core/VaryingNode.js +10 -10
  617. package/src/nodes/core/constants.js +0 -2
  618. package/src/nodes/display/BlendModes.js +21 -14
  619. package/src/nodes/display/BumpMapNode.js +5 -6
  620. package/src/nodes/display/ColorAdjustment.js +13 -9
  621. package/src/nodes/display/ColorSpaceFunctions.js +4 -4
  622. package/src/nodes/display/ColorSpaceNode.js +15 -12
  623. package/src/nodes/display/FrontFacingNode.js +3 -3
  624. package/src/nodes/display/NormalMapNode.js +5 -6
  625. package/src/nodes/display/PassNode.js +122 -35
  626. package/src/nodes/display/PosterizeNode.js +2 -3
  627. package/src/nodes/display/RenderOutputNode.js +8 -9
  628. package/src/nodes/display/ScreenNode.js +16 -7
  629. package/src/nodes/display/ToneMappingFunctions.js +12 -8
  630. package/src/nodes/display/ToneMappingNode.js +8 -8
  631. package/src/nodes/display/ToonOutlinePassNode.js +3 -4
  632. package/src/nodes/display/ViewportDepthNode.js +15 -7
  633. package/src/nodes/display/ViewportDepthTextureNode.js +6 -7
  634. package/src/nodes/display/ViewportSharedTextureNode.js +6 -7
  635. package/src/nodes/display/ViewportTextureNode.js +16 -16
  636. package/src/nodes/fog/Fog.js +5 -2
  637. package/src/nodes/functions/BSDF/LTC.js +45 -1
  638. package/src/nodes/functions/BasicLightingModel.js +5 -8
  639. package/src/nodes/functions/PhongLightingModel.js +6 -8
  640. package/src/nodes/functions/PhysicalLightingModel.js +40 -42
  641. package/src/nodes/functions/ShadowMaskModel.js +4 -4
  642. package/src/nodes/functions/ToonLightingModel.js +5 -6
  643. package/src/nodes/functions/VolumetricLightingModel.js +183 -0
  644. package/src/nodes/functions/material/getParallaxCorrectNormal.js +8 -8
  645. package/src/nodes/geometry/RangeNode.js +4 -5
  646. package/src/nodes/gpgpu/AtomicFunctionNode.js +33 -48
  647. package/src/nodes/gpgpu/BarrierNode.js +6 -4
  648. package/src/nodes/gpgpu/ComputeBuiltinNode.js +26 -31
  649. package/src/nodes/gpgpu/ComputeNode.js +43 -16
  650. package/src/nodes/gpgpu/WorkgroupInfoNode.js +16 -17
  651. package/src/nodes/lighting/AONode.js +2 -2
  652. package/src/nodes/lighting/AmbientLightNode.js +1 -1
  653. package/src/nodes/lighting/AnalyticLightNode.js +50 -9
  654. package/src/nodes/lighting/BasicLightMapNode.js +2 -2
  655. package/src/nodes/lighting/DirectionalLightNode.js +3 -12
  656. package/src/nodes/lighting/EnvironmentNode.js +5 -8
  657. package/src/nodes/lighting/HemisphereLightNode.js +1 -1
  658. package/src/nodes/lighting/LightProbeNode.js +1 -1
  659. package/src/nodes/lighting/LightUtils.js +1 -5
  660. package/src/nodes/lighting/LightingContextNode.js +10 -10
  661. package/src/nodes/lighting/LightingNode.js +1 -1
  662. package/src/nodes/lighting/LightsNode.js +68 -25
  663. package/src/nodes/lighting/PointLightNode.js +12 -27
  664. package/src/nodes/lighting/PointShadowNode.js +5 -6
  665. package/src/nodes/lighting/RectAreaLightNode.js +5 -10
  666. package/src/nodes/lighting/ShadowBaseNode.js +8 -9
  667. package/src/nodes/lighting/ShadowNode.js +28 -15
  668. package/src/nodes/lighting/SpotLightNode.js +8 -19
  669. package/src/nodes/math/ConditionalNode.js +26 -9
  670. package/src/nodes/math/Hash.js +2 -3
  671. package/src/nodes/math/MathNode.js +217 -150
  672. package/src/nodes/math/MathUtils.js +8 -6
  673. package/src/nodes/math/OperatorNode.js +198 -89
  674. package/src/nodes/math/TriNoise3D.js +2 -3
  675. package/src/nodes/parsers/GLSLNodeFunction.js +3 -3
  676. package/src/nodes/parsers/GLSLNodeParser.js +1 -1
  677. package/src/nodes/pmrem/PMREMNode.js +61 -37
  678. package/src/nodes/pmrem/PMREMUtils.js +2 -2
  679. package/src/nodes/procedural/Checker.js +2 -3
  680. package/src/nodes/shapes/Shapes.js +2 -3
  681. package/src/nodes/tsl/TSLBase.js +2 -1
  682. package/src/nodes/tsl/TSLCore.js +117 -19
  683. package/src/nodes/utils/ArrayElementNode.js +5 -3
  684. package/src/nodes/utils/ConvertNode.js +3 -3
  685. package/src/nodes/utils/CubeMapNode.js +7 -8
  686. package/src/nodes/utils/DebugNode.js +70 -0
  687. package/src/nodes/utils/Discard.js +5 -5
  688. package/src/nodes/utils/EquirectUVNode.js +3 -4
  689. package/src/nodes/utils/FlipNode.js +3 -3
  690. package/src/nodes/utils/FunctionOverloadingNode.js +3 -4
  691. package/src/nodes/utils/JoinNode.js +29 -4
  692. package/src/nodes/utils/LoopNode.js +67 -35
  693. package/src/nodes/utils/MatcapUVNode.js +1 -2
  694. package/src/nodes/utils/MaxMipLevelNode.js +4 -5
  695. package/src/nodes/utils/MemberNode.js +2 -2
  696. package/src/nodes/utils/Oscillators.js +8 -6
  697. package/src/nodes/utils/Packing.js +4 -4
  698. package/src/nodes/utils/PostProcessingUtils.js +6 -5
  699. package/src/nodes/utils/RTTNode.js +19 -19
  700. package/src/nodes/utils/ReflectorNode.js +35 -25
  701. package/src/nodes/utils/RemapNode.js +9 -9
  702. package/src/nodes/utils/RotateNode.js +3 -4
  703. package/src/nodes/utils/SetNode.js +3 -3
  704. package/src/nodes/utils/SplitNode.js +5 -5
  705. package/src/nodes/utils/SpriteSheetUVNode.js +4 -5
  706. package/src/nodes/utils/SpriteUtils.js +5 -6
  707. package/src/nodes/utils/StorageArrayElementNode.js +3 -4
  708. package/src/nodes/utils/Timer.js +9 -5
  709. package/src/nodes/utils/TriplanarTexturesNode.js +20 -20
  710. package/src/nodes/utils/UVUtils.js +4 -4
  711. package/src/nodes/utils/ViewportUtils.js +3 -4
  712. package/src/objects/BatchedMesh.js +319 -32
  713. package/src/objects/Bone.js +24 -0
  714. package/src/objects/ClippingGroup.js +4 -4
  715. package/src/objects/Group.js +24 -0
  716. package/src/objects/InstancedMesh.js +120 -2
  717. package/src/objects/LOD.js +99 -5
  718. package/src/objects/Line.js +82 -0
  719. package/src/objects/LineLoop.js +20 -0
  720. package/src/objects/LineSegments.js +18 -0
  721. package/src/objects/Mesh.js +75 -0
  722. package/src/objects/Points.js +60 -0
  723. package/src/objects/Skeleton.js +105 -0
  724. package/src/objects/SkinnedMesh.js +99 -5
  725. package/src/objects/Sprite.js +54 -0
  726. package/src/renderers/WebGL3DRenderTarget.js +25 -0
  727. package/src/renderers/WebGLArrayRenderTarget.js +25 -0
  728. package/src/renderers/WebGLCubeRenderTarget.js +39 -1
  729. package/src/renderers/WebGLRenderTarget.js +19 -0
  730. package/src/renderers/WebGLRenderer.js +622 -83
  731. package/src/renderers/common/Animation.js +6 -6
  732. package/src/renderers/common/Attributes.js +3 -3
  733. package/src/renderers/common/Backend.js +40 -31
  734. package/src/renderers/common/Background.js +4 -3
  735. package/src/renderers/common/BindGroup.js +5 -5
  736. package/src/renderers/common/Binding.js +4 -4
  737. package/src/renderers/common/Bindings.js +10 -0
  738. package/src/renderers/common/Buffer.js +5 -5
  739. package/src/renderers/common/BufferUtils.js +7 -9
  740. package/src/renderers/common/BundleGroup.js +6 -6
  741. package/src/renderers/common/ChainMap.js +3 -3
  742. package/src/renderers/common/ClippingContext.js +8 -8
  743. package/src/renderers/common/Color4.js +8 -8
  744. package/src/renderers/common/ComputePipeline.js +2 -2
  745. package/src/renderers/common/CubeRenderTarget.js +13 -0
  746. package/src/renderers/common/DataMap.js +2 -2
  747. package/src/renderers/common/Geometries.js +6 -6
  748. package/src/renderers/common/IndirectStorageBufferAttribute.js +3 -3
  749. package/src/renderers/common/Info.js +17 -17
  750. package/src/renderers/common/Pipeline.js +3 -3
  751. package/src/renderers/common/Pipelines.js +12 -12
  752. package/src/renderers/common/PostProcessing.js +13 -1
  753. package/src/renderers/common/ProgrammableStage.js +11 -11
  754. package/src/renderers/common/QuadMesh.js +5 -3
  755. package/src/renderers/common/RenderContext.js +24 -24
  756. package/src/renderers/common/RenderContexts.js +4 -4
  757. package/src/renderers/common/RenderList.js +16 -16
  758. package/src/renderers/common/RenderObject.js +27 -27
  759. package/src/renderers/common/RenderObjects.js +4 -4
  760. package/src/renderers/common/RenderPipeline.js +1 -1
  761. package/src/renderers/common/Renderer.js +272 -200
  762. package/src/renderers/common/RendererUtils.js +0 -2
  763. package/src/renderers/common/SampledTexture.js +20 -20
  764. package/src/renderers/common/Sampler.js +5 -5
  765. package/src/renderers/common/StorageBuffer.js +2 -2
  766. package/src/renderers/common/StorageBufferAttribute.js +4 -4
  767. package/src/renderers/common/StorageInstancedBufferAttribute.js +4 -4
  768. package/src/renderers/common/StorageTexture.js +6 -6
  769. package/src/renderers/common/Textures.js +6 -6
  770. package/src/renderers/common/TimestampQueryPool.js +66 -7
  771. package/src/renderers/common/Uniform.js +26 -26
  772. package/src/renderers/common/UniformBuffer.js +2 -2
  773. package/src/renderers/common/UniformsGroup.js +18 -18
  774. package/src/renderers/common/XRManager.js +369 -54
  775. package/src/renderers/common/XRRenderTarget.js +5 -5
  776. package/src/renderers/common/extras/PMREMGenerator.js +62 -37
  777. package/src/renderers/common/nodes/NodeBuilderState.js +7 -7
  778. package/src/renderers/common/nodes/NodeLibrary.js +13 -13
  779. package/src/renderers/common/nodes/NodeSampledTexture.js +12 -12
  780. package/src/renderers/common/nodes/NodeSampler.js +1 -1
  781. package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
  782. package/src/renderers/common/nodes/NodeUniform.js +9 -9
  783. package/src/renderers/common/nodes/NodeUniformsGroup.js +3 -3
  784. package/src/renderers/common/nodes/Nodes.js +13 -13
  785. package/src/renderers/shaders/UniformsLib.js +1 -4
  786. package/src/renderers/shaders/UniformsUtils.js +1 -3
  787. package/src/renderers/webgl/WebGLBackground.js +4 -2
  788. package/src/renderers/webgl/WebGLState.js +19 -19
  789. package/src/renderers/webgl-fallback/WebGLBackend.js +163 -146
  790. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +4 -4
  791. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +89 -99
  792. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +2 -2
  793. package/src/renderers/webgl-fallback/utils/WebGLExtensions.js +5 -5
  794. package/src/renderers/webgl-fallback/utils/WebGLState.js +97 -47
  795. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +79 -31
  796. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +37 -29
  797. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -3
  798. package/src/renderers/webgpu/WebGPUBackend.js +200 -119
  799. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +3 -13
  800. package/src/renderers/webgpu/WebGPURenderer.js +19 -13
  801. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +171 -178
  802. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -3
  803. package/src/renderers/webgpu/nodes/WGSLNodeParser.js +1 -1
  804. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +43 -9
  805. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +2 -2
  806. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  807. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +18 -10
  808. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +9 -9
  809. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +37 -37
  810. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +31 -18
  811. package/src/renderers/webgpu/utils/WebGPUUtils.js +9 -9
  812. package/src/renderers/webxr/WebXRController.js +87 -2
  813. package/src/renderers/webxr/WebXRDepthSensing.js +49 -0
  814. package/src/renderers/webxr/WebXRManager.js +185 -9
  815. package/src/scenes/Fog.js +60 -0
  816. package/src/scenes/FogExp2.js +51 -0
  817. package/src/scenes/Scene.js +88 -0
  818. package/src/textures/CanvasTexture.js +28 -0
  819. package/src/textures/CompressedArrayTexture.js +57 -0
  820. package/src/textures/CompressedCubeTexture.js +29 -0
  821. package/src/textures/CompressedTexture.js +64 -6
  822. package/src/textures/CubeTexture.js +52 -4
  823. package/src/textures/Data3DTexture.js +77 -0
  824. package/src/textures/DataArrayTexture.js +93 -0
  825. package/src/textures/DataTexture.js +65 -0
  826. package/src/textures/DepthTexture.js +61 -9
  827. package/src/textures/FramebufferTexture.js +62 -0
  828. package/src/textures/Source.js +69 -0
  829. package/src/textures/Texture.js +362 -3
  830. package/src/textures/VideoFrameTexture.js +43 -6
  831. package/src/textures/VideoTexture.js +49 -4
  832. package/examples/jsm/geometries/ParametricGeometries.js +0 -254
@@ -1,7 +1,5 @@
1
1
  import { RenderTarget, Vector2, QuadMesh, NodeMaterial, RendererUtils, TempNode, NodeUpdateType } from 'three/webgpu';
2
- import { nodeObject, Fn, float, vec4, uv, texture, passTexture, uniform, sign, max, convertToTexture } from 'three/tsl';
3
-
4
- /** @module AfterImageNode **/
2
+ import { nodeObject, Fn, float, uv, texture, passTexture, uniform, sign, max, convertToTexture } from 'three/tsl';
5
3
 
6
4
  const _size = /*@__PURE__*/ new Vector2();
7
5
  const _quadMeshComp = /*@__PURE__*/ new QuadMesh();
@@ -25,7 +23,7 @@ class AfterImageNode extends TempNode {
25
23
  * Constructs a new after image node.
26
24
  *
27
25
  * @param {TextureNode} textureNode - The texture node that represents the input of the effect.
28
- * @param {Number} [damp=0.96] - The damping intensity. A higher value means a stronger after image effect.
26
+ * @param {number} [damp=0.96] - The damping intensity. A higher value means a stronger after image effect.
29
27
  */
30
28
  constructor( textureNode, damp = 0.96 ) {
31
29
 
@@ -43,10 +41,12 @@ class AfterImageNode extends TempNode {
43
41
  *
44
42
  * @type {TextureNode}
45
43
  */
46
- this.textureNodeOld = texture();
44
+ this.textureNodeOld = texture( null );
47
45
 
48
46
  /**
49
- * The damping intensity as a uniform node.
47
+ * How quickly the after-image fades. A higher value means the after-image
48
+ * persists longer, while a lower value means it fades faster. Should be in
49
+ * the range `[0, 1]`.
50
50
  *
51
51
  * @type {UniformNode<float>}
52
52
  */
@@ -82,7 +82,7 @@ class AfterImageNode extends TempNode {
82
82
  * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
83
83
  * its effect once per frame in `updateBefore()`.
84
84
  *
85
- * @type {String}
85
+ * @type {string}
86
86
  * @default 'frame'
87
87
  */
88
88
  this.updateBeforeType = NodeUpdateType.FRAME;
@@ -103,8 +103,8 @@ class AfterImageNode extends TempNode {
103
103
  /**
104
104
  * Sets the size of the effect.
105
105
  *
106
- * @param {Number} width - The width of the effect.
107
- * @param {Number} height - The height of the effect.
106
+ * @param {number} width - The width of the effect.
107
+ * @param {number} height - The height of the effect.
108
108
  */
109
109
  setSize( width, height ) {
110
110
 
@@ -174,27 +174,25 @@ class AfterImageNode extends TempNode {
174
174
 
175
175
  //
176
176
 
177
- const uvNode = textureNode.uvNode || uv();
178
-
179
- textureNodeOld.uvNode = uvNode;
180
-
181
- const sampleTexture = ( uv ) => textureNode.sample( uv );
182
-
183
- const when_gt = Fn( ( [ x_immutable, y_immutable ] ) => {
177
+ textureNodeOld.uvNode = textureNode.uvNode || uv();
184
178
 
185
- const y = float( y_immutable ).toVar();
186
- const x = vec4( x_immutable ).toVar();
179
+ const afterImg = Fn( () => {
187
180
 
188
- return max( sign( x.sub( y ) ), 0.0 );
181
+ const texelOld = textureNodeOld.sample().toVar();
182
+ const texelNew = textureNode.sample().toVar();
189
183
 
190
- } );
184
+ const threshold = float( 0.1 ).toConst();
191
185
 
192
- const afterImg = Fn( () => {
186
+ // m acts as a mask. It's 1 if the previous pixel was "bright enough" (above the threshold) and 0 if it wasn't.
187
+ const m = max( sign( texelOld.sub( threshold ) ), 0.0 );
193
188
 
194
- const texelOld = vec4( textureNodeOld );
195
- const texelNew = vec4( sampleTexture( uvNode ) );
189
+ // This is where the after-image fades:
190
+ //
191
+ // - If m is 0, texelOld is multiplied by 0, effectively clearing the after-image for that pixel.
192
+ // - If m is 1, texelOld is multiplied by "damp". Since "damp" is between 0 and 1, this reduces the color value of
193
+ // texelOld, making it darker and causing it to fade.
194
+ texelOld.mulAssign( this.damp.mul( m ) );
196
195
 
197
- texelOld.mulAssign( this.damp.mul( when_gt( texelOld, 0.1 ) ) );
198
196
  return max( texelNew, texelOld );
199
197
 
200
198
  } );
@@ -234,9 +232,10 @@ class AfterImageNode extends TempNode {
234
232
  /**
235
233
  * TSL function for creating an after image node for post processing.
236
234
  *
235
+ * @tsl
237
236
  * @function
238
237
  * @param {Node<vec4>} node - The node that represents the input of the effect.
239
- * @param {Number} [damp=0.96] - The damping intensity. A higher value means a stronger after image effect.
238
+ * @param {number} [damp=0.96] - The damping intensity. A higher value means a stronger after image effect.
240
239
  * @returns {AfterImageNode}
241
240
  */
242
241
  export const afterImage = ( node, damp ) => nodeObject( new AfterImageNode( convertToTexture( node ), damp ) );
@@ -2,8 +2,6 @@ import { Matrix3, NodeMaterial } from 'three/webgpu';
2
2
  import { clamp, nodeObject, Fn, vec4, uv, uniform, max } from 'three/tsl';
3
3
  import StereoCompositePassNode from './StereoCompositePassNode.js';
4
4
 
5
- /** @module AnaglyphPassNode **/
6
-
7
5
  /**
8
6
  * A render pass node that creates an anaglyph effect.
9
7
  *
@@ -30,7 +28,7 @@ class AnaglyphPassNode extends StereoCompositePassNode {
30
28
  /**
31
29
  * This flag can be used for type testing.
32
30
  *
33
- * @type {Boolean}
31
+ * @type {boolean}
34
32
  * @readonly
35
33
  * @default true
36
34
  */
@@ -99,6 +97,7 @@ export default AnaglyphPassNode;
99
97
  /**
100
98
  * TSL function for creating an anaglyph pass node.
101
99
  *
100
+ * @tsl
102
101
  * @function
103
102
  * @param {Scene} scene - The scene to render.
104
103
  * @param {Camera} camera - The camera to render the scene with.
@@ -1,8 +1,6 @@
1
1
  import { RenderTarget, Vector2, TempNode, QuadMesh, NodeMaterial, RendererUtils } from 'three/webgpu';
2
2
  import { nodeObject, Fn, float, NodeUpdateType, uv, passTexture, uniform, convertToTexture, vec2, vec3, Loop, mix, luminance } from 'three/tsl';
3
3
 
4
- /** @module AnamorphicNode **/
5
-
6
4
  const _quadMesh = /*@__PURE__*/ new QuadMesh();
7
5
 
8
6
  let _rendererState;
@@ -26,7 +24,7 @@ class AnamorphicNode extends TempNode {
26
24
  * @param {TextureNode} textureNode - The texture node that represents the input of the effect.
27
25
  * @param {Node<float>} tresholdNode - The threshold is one option to control the intensity and size of the effect.
28
26
  * @param {Node<float>} scaleNode - Defines the vertical scale of the flares.
29
- * @param {Number} samples - More samples result in larger flares and a more expensive runtime behavior.
27
+ * @param {number} samples - More samples result in larger flares and a more expensive runtime behavior.
30
28
  */
31
29
  constructor( textureNode, tresholdNode, scaleNode, samples ) {
32
30
 
@@ -103,7 +101,7 @@ class AnamorphicNode extends TempNode {
103
101
  * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
104
102
  * its effect once per frame in `updateBefore()`.
105
103
  *
106
- * @type {String}
104
+ * @type {string}
107
105
  * @default 'frame'
108
106
  */
109
107
  this.updateBeforeType = NodeUpdateType.FRAME;
@@ -124,8 +122,8 @@ class AnamorphicNode extends TempNode {
124
122
  /**
125
123
  * Sets the size of the effect.
126
124
  *
127
- * @param {Number} width - The width of the effect.
128
- * @param {Number} height - The height of the effect.
125
+ * @param {number} width - The width of the effect.
126
+ * @param {number} height - The height of the effect.
129
127
  */
130
128
  setSize( width, height ) {
131
129
 
@@ -246,11 +244,12 @@ class AnamorphicNode extends TempNode {
246
244
  /**
247
245
  * TSL function for creating an anamorphic flare effect.
248
246
  *
247
+ * @tsl
249
248
  * @function
250
249
  * @param {TextureNode} node - The node that represents the input of the effect.
251
- * @param {Node<float> | Number} [threshold=0.9] - The threshold is one option to control the intensity and size of the effect.
252
- * @param {Node<float> | Number} [scale=3] - Defines the vertical scale of the flares.
253
- * @param {Number} [samples=32] - More samples result in larger flares and a more expensive runtime behavior.
250
+ * @param {Node<float> | number} [threshold=0.9] - The threshold is one option to control the intensity and size of the effect.
251
+ * @param {Node<float> | number} [scale=3] - Defines the vertical scale of the flares.
252
+ * @param {number} [samples=32] - More samples result in larger flares and a more expensive runtime behavior.
254
253
  * @returns {AnamorphicNode}
255
254
  */
256
255
  export const anamorphic = ( node, threshold = .9, scale = 3, samples = 32 ) => nodeObject( new AnamorphicNode( convertToTexture( node ), nodeObject( threshold ), nodeObject( scale ), samples ) );
@@ -1,10 +1,9 @@
1
1
  import { float, Fn, vec3, vec4, min, max, mix, luminance } from 'three/tsl';
2
2
 
3
- /** @module BleachBypass **/
4
-
5
3
  /**
6
4
  * Applies a bleach bypass effect to the given color node.
7
5
  *
6
+ * @tsl
8
7
  * @function
9
8
  * @param {Node<vec4>} color - The color node to apply the sepia for.
10
9
  * @param {Node<float>} [opacity=1] - Influences how strong the effect is blended with the original color.
@@ -1,8 +1,6 @@
1
1
  import { HalfFloatType, RenderTarget, Vector2, Vector3, TempNode, QuadMesh, NodeMaterial, RendererUtils, NodeUpdateType } from 'three/webgpu';
2
2
  import { nodeObject, Fn, float, uv, passTexture, uniform, Loop, texture, luminance, smoothstep, mix, vec4, uniformArray, add, int } from 'three/tsl';
3
3
 
4
- /** @module BloomNode **/
5
-
6
4
  const _quadMesh = /*@__PURE__*/ new QuadMesh();
7
5
  const _size = /*@__PURE__*/ new Vector2();
8
6
 
@@ -55,9 +53,9 @@ class BloomNode extends TempNode {
55
53
  * Constructs a new bloom node.
56
54
  *
57
55
  * @param {Node<vec4>} inputNode - The node that represents the input of the effect.
58
- * @param {Number} [strength=1] - The strength of the bloom.
59
- * @param {Number} [radius=0] - The radius of the bloom.
60
- * @param {Number} [threshold=0] - The luminance threshold limits which bright areas contribute to the bloom effect.
56
+ * @param {number} [strength=1] - The strength of the bloom.
57
+ * @param {number} [radius=0] - The radius of the bloom.
58
+ * @param {number} [threshold=0] - The luminance threshold limits which bright areas contribute to the bloom effect.
61
59
  */
62
60
  constructor( inputNode, strength = 1, radius = 0, threshold = 0 ) {
63
61
 
@@ -118,7 +116,7 @@ class BloomNode extends TempNode {
118
116
  * The number if blur mips.
119
117
  *
120
118
  * @private
121
- * @type {Number}
119
+ * @type {number}
122
120
  */
123
121
  this._nMips = 5;
124
122
 
@@ -156,7 +154,7 @@ class BloomNode extends TempNode {
156
154
  * The material for the composite pass.
157
155
  *
158
156
  * @private
159
- * @type {NodeMaterial?}
157
+ * @type {?NodeMaterial}
160
158
  */
161
159
  this._compositeMaterial = null;
162
160
 
@@ -164,7 +162,7 @@ class BloomNode extends TempNode {
164
162
  * The material for the luminance pass.
165
163
  *
166
164
  * @private
167
- * @type {NodeMaterial?}
165
+ * @type {?NodeMaterial}
168
166
  */
169
167
  this._highPassFilterMaterial = null;
170
168
 
@@ -236,7 +234,7 @@ class BloomNode extends TempNode {
236
234
  * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
237
235
  * its effect once per frame in `updateBefore()`.
238
236
  *
239
- * @type {String}
237
+ * @type {string}
240
238
  * @default 'frame'
241
239
  */
242
240
  this.updateBeforeType = NodeUpdateType.FRAME;
@@ -257,8 +255,8 @@ class BloomNode extends TempNode {
257
255
  /**
258
256
  * Sets the size of the effect.
259
257
  *
260
- * @param {Number} width - The width of the effect.
261
- * @param {Number} height - The height of the effect.
258
+ * @param {number} width - The width of the effect.
259
+ * @param {number} height - The height of the effect.
262
260
  */
263
261
  setSize( width, height ) {
264
262
 
@@ -444,7 +442,7 @@ class BloomNode extends TempNode {
444
442
  * Create a separable blur material for the given kernel radius.
445
443
  *
446
444
  * @param {NodeBuilder} builder - The current node builder.
447
- * @param {Number} kernelRadius - The kernel radius.
445
+ * @param {number} kernelRadius - The kernel radius.
448
446
  * @return {NodeMaterial}
449
447
  */
450
448
  _getSeparableBlurMaterial( builder, kernelRadius ) {
@@ -459,7 +457,7 @@ class BloomNode extends TempNode {
459
457
 
460
458
  //
461
459
 
462
- const colorTexture = texture();
460
+ const colorTexture = texture( null );
463
461
  const gaussianCoefficients = uniformArray( coefficients );
464
462
  const invSize = uniform( new Vector2() );
465
463
  const direction = uniform( new Vector2( 0.5, 0.5 ) );
@@ -507,11 +505,12 @@ class BloomNode extends TempNode {
507
505
  /**
508
506
  * TSL function for creating a bloom effect.
509
507
  *
508
+ * @tsl
510
509
  * @function
511
510
  * @param {Node<vec4>} node - The node that represents the input of the effect.
512
- * @param {Number} [strength=1] - The strength of the bloom.
513
- * @param {Number} [radius=0] - The radius of the bloom.
514
- * @param {Number} [threshold=0] - The luminance threshold limits which bright areas contribute to the bloom effect.
511
+ * @param {number} [strength=1] - The strength of the bloom.
512
+ * @param {number} [radius=0] - The radius of the bloom.
513
+ * @param {number} [threshold=0] - The luminance threshold limits which bright areas contribute to the bloom effect.
515
514
  * @returns {BloomNode}
516
515
  */
517
516
  export const bloom = ( node, strength, radius, threshold ) => nodeObject( new BloomNode( nodeObject( node ), strength, radius, threshold ) );
@@ -2,8 +2,6 @@ import { DataTexture, RepeatWrapping, Vector2, Vector3, TempNode } from 'three/w
2
2
  import { texture, getNormalFromDepth, getViewPosition, convertToTexture, nodeObject, Fn, float, NodeUpdateType, uv, uniform, Loop, luminance, vec2, vec3, vec4, uniformArray, int, dot, max, pow, abs, If, textureSize, sin, cos, mat2, PI } from 'three/tsl';
3
3
  import { SimplexNoise } from '../../math/SimplexNoise.js';
4
4
 
5
- /** @module DenoiseNode **/
6
-
7
5
  /**
8
6
  * Post processing node for denoising data like raw screen-space ambient occlusion output.
9
7
  * Denoise can noticeably improve the quality of ambient occlusion but also add quite some
@@ -27,7 +25,7 @@ class DenoiseNode extends TempNode {
27
25
  *
28
26
  * @param {TextureNode} textureNode - The texture node that represents the input of the effect (e.g. AO).
29
27
  * @param {Node<float>} depthNode - A node that represents the scene's depth.
30
- * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
28
+ * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
31
29
  * @param {Camera} camera - The camera the scene is rendered with.
32
30
  */
33
31
  constructor( textureNode, depthNode, normalNode, camera ) {
@@ -53,7 +51,7 @@ class DenoiseNode extends TempNode {
53
51
  * constructor (because MRT is not available), normals can be automatically
54
52
  * reconstructed from depth values in the shader.
55
53
  *
56
- * @type {Node<vec3>?}
54
+ * @type {?Node<vec3>}
57
55
  */
58
56
  this.normalNode = normalNode;
59
57
 
@@ -103,7 +101,7 @@ class DenoiseNode extends TempNode {
103
101
  * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
104
102
  * its internal uniforms once per frame in `updateBefore()`.
105
103
  *
106
- * @type {String}
104
+ * @type {string}
107
105
  * @default 'frame'
108
106
  */
109
107
  this.updateBeforeType = NodeUpdateType.FRAME;
@@ -261,9 +259,9 @@ export default DenoiseNode;
261
259
  /**
262
260
  * Generates denoise samples based on the given parameters.
263
261
  *
264
- * @param {Number} numSamples - The number of samples.
265
- * @param {Number} numRings - The number of rings.
266
- * @param {Number} radiusExponent - The radius exponent.
262
+ * @param {number} numSamples - The number of samples.
263
+ * @param {number} numRings - The number of rings.
264
+ * @param {number} radiusExponent - The radius exponent.
267
265
  * @return {Array<Vector3>} The denoise samples.
268
266
  */
269
267
  function generateDenoiseSamples( numSamples, numRings, radiusExponent ) {
@@ -285,7 +283,7 @@ function generateDenoiseSamples( numSamples, numRings, radiusExponent ) {
285
283
  /**
286
284
  * Generates a default noise texture for the given size.
287
285
  *
288
- * @param {Number} [size=64] - The texture size.
286
+ * @param {number} [size=64] - The texture size.
289
287
  * @return {DataTexture} The generated noise texture.
290
288
  */
291
289
  function generateDefaultNoise( size = 64 ) {
@@ -323,10 +321,11 @@ function generateDefaultNoise( size = 64 ) {
323
321
  /**
324
322
  * TSL function for creating a denoise effect.
325
323
  *
324
+ * @tsl
326
325
  * @function
327
326
  * @param {Node} node - The node that represents the input of the effect (e.g. AO).
328
327
  * @param {Node<float>} depthNode - A node that represents the scene's depth.
329
- * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
328
+ * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
330
329
  * @param {Camera} camera - The camera the scene is rendered with.
331
330
  * @returns {DenoiseNode}
332
331
  */
@@ -1,8 +1,6 @@
1
1
  import { TempNode, NodeUpdateType } from 'three/webgpu';
2
2
  import { convertToTexture, nodeObject, Fn, uv, uniform, vec2, vec4, clamp } from 'three/tsl';
3
3
 
4
- /** @module DepthOfFieldNode **/
5
-
6
4
  /**
7
5
  * Post processing node for creating depth of field (DOF) effect.
8
6
  *
@@ -76,7 +74,7 @@ class DepthOfFieldNode extends TempNode {
76
74
  * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
77
75
  * its internal uniforms once per frame in `updateBefore()`.
78
76
  *
79
- * @type {String}
77
+ * @type {string}
80
78
  * @default 'frame'
81
79
  */
82
80
  this.updateBeforeType = NodeUpdateType.FRAME;
@@ -187,12 +185,13 @@ export default DepthOfFieldNode;
187
185
  /**
188
186
  * TSL function for creating a depth-of-field effect (DOF) for post processing.
189
187
  *
188
+ * @tsl
190
189
  * @function
191
190
  * @param {Node<vec4>} node - The node that represents the input of the effect.
192
191
  * @param {Node<float>} viewZNode - Represents the viewZ depth values of the scene.
193
- * @param {Node<float> | Number} focus - Defines the effect's focus which is the distance along the camera's look direction in world units.
194
- * @param {Node<float> | Number} aperture - Defines the effect's aperture.
195
- * @param {Node<float> | Number} maxblur - Defines the effect's maximum blur.
192
+ * @param {Node<float> | number} focus - Defines the effect's focus which is the distance along the camera's look direction in world units.
193
+ * @param {Node<float> | number} aperture - Defines the effect's aperture.
194
+ * @param {Node<float> | number} maxblur - Defines the effect's maximum blur.
196
195
  * @returns {DepthOfFieldNode}
197
196
  */
198
197
  export const dof = ( node, viewZNode, focus = 1, aperture = 0.025, maxblur = 1 ) => nodeObject( new DepthOfFieldNode( convertToTexture( node ), nodeObject( viewZNode ), nodeObject( focus ), nodeObject( aperture ), nodeObject( maxblur ) ) );
@@ -1,8 +1,6 @@
1
1
  import { TempNode } from 'three/webgpu';
2
2
  import { nodeObject, Fn, uv, uniform, vec2, vec3, sin, cos, add, vec4, screenSize } from 'three/tsl';
3
3
 
4
- /** @module DotScreenNode **/
5
-
6
4
  /**
7
5
  * Post processing node for creating dot-screen effect.
8
6
  *
@@ -20,8 +18,8 @@ class DotScreenNode extends TempNode {
20
18
  * Constructs a new dot screen node.
21
19
  *
22
20
  * @param {Node} inputNode - The node that represents the input of the effect.
23
- * @param {Number} [angle=1.57] - The rotation of the effect in radians.
24
- * @param {Number} [scale=1] - The scale of the effect. A higher value means smaller dots.
21
+ * @param {number} [angle=1.57] - The rotation of the effect in radians.
22
+ * @param {number} [scale=1] - The scale of the effect. A higher value means smaller dots.
25
23
  */
26
24
  constructor( inputNode, angle = 1.57, scale = 1 ) {
27
25
 
@@ -95,10 +93,11 @@ export default DotScreenNode;
95
93
  /**
96
94
  * TSL function for creating a dot-screen node for post processing.
97
95
  *
96
+ * @tsl
98
97
  * @function
99
98
  * @param {Node<vec4>} node - The node that represents the input of the effect.
100
- * @param {Number} [angle=1.57] - The rotation of the effect in radians.
101
- * @param {Number} [scale=1] - The scale of the effect. A higher value means smaller dots.
99
+ * @param {number} [angle=1.57] - The rotation of the effect in radians.
100
+ * @param {number} [scale=1] - The scale of the effect. A higher value means smaller dots.
102
101
  * @returns {DotScreenNode}
103
102
  */
104
103
  export const dotScreen = ( node, angle, scale ) => nodeObject( new DotScreenNode( nodeObject( node ), angle, scale ) );
@@ -1,8 +1,6 @@
1
1
  import { Vector2, TempNode } from 'three/webgpu';
2
2
  import { nodeObject, Fn, uniformArray, select, float, NodeUpdateType, uv, dot, clamp, uniform, convertToTexture, smoothstep, bool, vec2, vec3, If, Loop, max, min, Break, abs } from 'three/tsl';
3
3
 
4
- /** @module FXAANode **/
5
-
6
4
  /**
7
5
  * Post processing node for applying FXAA. This node requires sRGB input
8
6
  * so tone mapping and color space conversion must happen before the anti-aliasing.
@@ -37,7 +35,7 @@ class FXAANode extends TempNode {
37
35
  * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node updates
38
36
  * its internal uniforms once per frame in `updateBefore()`.
39
37
  *
40
- * @type {String}
38
+ * @type {string}
41
39
  * @default 'frame'
42
40
  */
43
41
  this.updateBeforeType = NodeUpdateType.FRAME;
@@ -358,6 +356,7 @@ export default FXAANode;
358
356
  /**
359
357
  * TSL function for creating a FXAA node for anti-aliasing via post processing.
360
358
  *
359
+ * @tsl
361
360
  * @function
362
361
  * @param {Node<vec4>} node - The node that represents the input of the effect.
363
362
  * @returns {FXAANode}
@@ -1,8 +1,6 @@
1
1
  import { TempNode } from 'three/webgpu';
2
2
  import { rand, Fn, fract, time, uv, clamp, mix, vec4, nodeProxy } from 'three/tsl';
3
3
 
4
- /** @module FilmNode **/
5
-
6
4
  /**
7
5
  * Post processing node for creating a film grain effect.
8
6
  *
@@ -20,8 +18,8 @@ class FilmNode extends TempNode {
20
18
  * Constructs a new film node.
21
19
  *
22
20
  * @param {Node} inputNode - The node that represents the input of the effect.
23
- * @param {Node<float>?} [intensityNode=null] - A node that represents the effect's intensity.
24
- * @param {Node<vec2>?} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
21
+ * @param {?Node<float>} [intensityNode=null] - A node that represents the effect's intensity.
22
+ * @param {?Node<vec2>} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
25
23
  */
26
24
  constructor( inputNode, intensityNode = null, uvNode = null ) {
27
25
 
@@ -37,14 +35,16 @@ class FilmNode extends TempNode {
37
35
  /**
38
36
  * A node that represents the effect's intensity.
39
37
  *
40
- * @type {Node<float>}
38
+ * @type {?Node<float>}
39
+ * @default null
41
40
  */
42
41
  this.intensityNode = intensityNode;
43
42
 
44
43
  /**
45
44
  * A node that allows to pass custom (e.g. animated) uv data.
46
45
  *
47
- * @type {Node<vec2>}
46
+ * @type {?Node<vec2>}
47
+ * @default null
48
48
  */
49
49
  this.uvNode = uvNode;
50
50
 
@@ -90,10 +90,11 @@ export default FilmNode;
90
90
  /**
91
91
  * TSL function for creating a film node for post processing.
92
92
  *
93
+ * @tsl
93
94
  * @function
94
95
  * @param {Node<vec4>} inputNode - The node that represents the input of the effect.
95
- * @param {Node<float>?} [intensityNode=null] - A node that represents the effect's intensity.
96
- * @param {Node<vec2>?} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
96
+ * @param {?Node<float>} [intensityNode=null] - A node that represents the effect's intensity.
97
+ * @param {?Node<vec2>} [uvNode=null] - A node that allows to pass custom (e.g. animated) uv data.
97
98
  * @returns {FilmNode}
98
99
  */
99
100
  export const film = /*@__PURE__*/ nodeProxy( FilmNode );
@@ -1,8 +1,6 @@
1
1
  import { DataTexture, RenderTarget, RepeatWrapping, Vector2, Vector3, TempNode, QuadMesh, NodeMaterial, RendererUtils } from 'three/webgpu';
2
2
  import { reference, logarithmicDepthToViewZ, viewZToPerspectiveDepth, getNormalFromDepth, getScreenPosition, getViewPosition, nodeObject, Fn, float, NodeUpdateType, uv, uniform, Loop, vec2, vec3, vec4, int, dot, max, pow, abs, If, textureSize, sin, cos, PI, texture, passTexture, mat3, add, normalize, mul, cross, div, mix, sqrt, sub, acos, clamp } from 'three/tsl';
3
3
 
4
- /** @module GTAONode **/
5
-
6
4
  const _quadMesh = /*@__PURE__*/ new QuadMesh();
7
5
  const _size = /*@__PURE__*/ new Vector2();
8
6
 
@@ -44,7 +42,7 @@ class GTAONode extends TempNode {
44
42
  * Constructs a new GTAO node.
45
43
  *
46
44
  * @param {Node<float>} depthNode - A node that represents the scene's depth.
47
- * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
45
+ * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
48
46
  * @param {Camera} camera - The camera the scene is rendered with.
49
47
  */
50
48
  constructor( depthNode, normalNode, camera ) {
@@ -63,7 +61,7 @@ class GTAONode extends TempNode {
63
61
  * constructor (because MRT is not available), normals can be automatically
64
62
  * reconstructed from depth values in the shader.
65
63
  *
66
- * @type {Node<vec3>?}
64
+ * @type {?Node<vec3>}
67
65
  */
68
66
  this.normalNode = normalNode;
69
67
 
@@ -71,7 +69,7 @@ class GTAONode extends TempNode {
71
69
  * The resolution scale. By default the effect is rendered in full resolution
72
70
  * for best quality but a value of `0.5` should be sufficient for most scenes.
73
71
  *
74
- * @type {Number}
72
+ * @type {number}
75
73
  * @default 1
76
74
  */
77
75
  this.resolutionScale = 1;
@@ -80,7 +78,7 @@ class GTAONode extends TempNode {
80
78
  * The `updateBeforeType` is set to `NodeUpdateType.FRAME` since the node renders
81
79
  * its effect once per frame in `updateBefore()`.
82
80
  *
83
- * @type {String}
81
+ * @type {string}
84
82
  * @default 'frame'
85
83
  */
86
84
  this.updateBeforeType = NodeUpdateType.FRAME;
@@ -224,8 +222,8 @@ class GTAONode extends TempNode {
224
222
  /**
225
223
  * Sets the size of the effect.
226
224
  *
227
- * @param {Number} width - The width of the effect.
228
- * @param {Number} height - The height of the effect.
225
+ * @param {number} width - The width of the effect.
226
+ * @param {number} height - The height of the effect.
229
227
  */
230
228
  setSize( width, height ) {
231
229
 
@@ -417,7 +415,7 @@ export default GTAONode;
417
415
  /**
418
416
  * Generates the AO's noise texture for the given size.
419
417
  *
420
- * @param {Number} [size=5] - The noise size.
418
+ * @param {number} [size=5] - The noise size.
421
419
  * @return {DataTexture} The generated noise texture.
422
420
  */
423
421
  function generateMagicSquareNoise( size = 5 ) {
@@ -455,8 +453,8 @@ function generateMagicSquareNoise( size = 5 ) {
455
453
  /**
456
454
  * Computes an array of magic square values required to generate the noise texture.
457
455
  *
458
- * @param {Number} size - The noise size.
459
- * @return {Array<Number>} The magic square values.
456
+ * @param {number} size - The noise size.
457
+ * @return {Array<number>} The magic square values.
460
458
  */
461
459
  function generateMagicSquare( size ) {
462
460
 
@@ -513,9 +511,10 @@ function generateMagicSquare( size ) {
513
511
  /**
514
512
  * TSL function for creating a Ground Truth Ambient Occlusion (GTAO) effect.
515
513
  *
514
+ * @tsl
516
515
  * @function
517
516
  * @param {Node<float>} depthNode - A node that represents the scene's depth.
518
- * @param {Node<vec3>?} normalNode - A node that represents the scene's normals.
517
+ * @param {?Node<vec3>} normalNode - A node that represents the scene's normals.
519
518
  * @param {Camera} camera - The camera the scene is rendered with.
520
519
  * @returns {GTAONode}
521
520
  */