super-three 0.173.4 → 0.175.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 +22198 -1564
  2. package/build/three.core.js +21287 -1346
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +882 -189
  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 +19358 -17482
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +19342 -17482
  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 +187 -11
  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
@@ -183,29 +183,29 @@ class WGSLNodeBuilder extends NodeBuilder {
183
183
  * A dictionary that holds for each shader stage ('vertex', 'fragment', 'compute')
184
184
  * another dictionary which manages UBOs per group ('render','frame','object').
185
185
  *
186
- * @type {Object<String,Object<String,NodeUniformsGroup>>}
186
+ * @type {Object<string,Object<string,NodeUniformsGroup>>}
187
187
  */
188
188
  this.uniformGroups = {};
189
189
 
190
190
  /**
191
191
  * A dictionary that holds for each shader stage a Map of builtins.
192
192
  *
193
- * @type {Object<String,Map<String,Object>>}
193
+ * @type {Object<string,Map<string,Object>>}
194
194
  */
195
195
  this.builtins = {};
196
196
 
197
197
  /**
198
198
  * A dictionary that holds for each shader stage a Set of directives.
199
199
  *
200
- * @type {Object<String,Set<String>>}
200
+ * @type {Object<string,Set<string>>}
201
201
  */
202
202
  this.directives = {};
203
203
 
204
204
  /**
205
205
  * A map for managing scope arrays. Only relevant for when using
206
- * {@link module:WorkgroupInfoNode} in context of compute shaders.
206
+ * {@link WorkgroupInfoNode} in context of compute shaders.
207
207
  *
208
- * @type {Map<String,Object>}
208
+ * @type {Map<string,Object>}
209
209
  */
210
210
  this.scopedArrays = new Map();
211
211
 
@@ -215,7 +215,7 @@ class WGSLNodeBuilder extends NodeBuilder {
215
215
  * Checks if the given texture requires a manual conversion to the working color space.
216
216
  *
217
217
  * @param {Texture} texture - The texture to check.
218
- * @return {Boolean} Whether the given texture requires a conversion to working color space or not.
218
+ * @return {boolean} Whether the given texture requires a conversion to working color space or not.
219
219
  */
220
220
  needsToWorkingColorSpace( texture ) {
221
221
 
@@ -228,11 +228,11 @@ class WGSLNodeBuilder extends NodeBuilder {
228
228
  *
229
229
  * @private
230
230
  * @param {Texture} texture - The texture.
231
- * @param {String} textureProperty - The name of the texture uniform in the shader.
232
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
233
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
234
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
235
- * @return {String} The WGSL snippet.
231
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
232
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
233
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
234
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
235
+ * @return {string} The WGSL snippet.
236
236
  */
237
237
  _generateTextureSample( texture, textureProperty, uvSnippet, depthSnippet, shaderStage = this.shaderStage ) {
238
238
 
@@ -264,10 +264,10 @@ class WGSLNodeBuilder extends NodeBuilder {
264
264
  * Generates the WGSL snippet when sampling video textures.
265
265
  *
266
266
  * @private
267
- * @param {String} textureProperty - The name of the video texture uniform in the shader.
268
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
269
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
270
- * @return {String} The WGSL snippet.
267
+ * @param {string} textureProperty - The name of the video texture uniform in the shader.
268
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
269
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
270
+ * @return {string} The WGSL snippet.
271
271
  */
272
272
  _generateVideoSample( textureProperty, uvSnippet, shaderStage = this.shaderStage ) {
273
273
 
@@ -288,12 +288,12 @@ class WGSLNodeBuilder extends NodeBuilder {
288
288
  *
289
289
  * @private
290
290
  * @param {Texture} texture - The texture.
291
- * @param {String} textureProperty - The name of the texture uniform in the shader.
292
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
293
- * @param {String} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
294
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
295
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
296
- * @return {String} The WGSL snippet.
291
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
292
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
293
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
294
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
295
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
296
+ * @return {string} The WGSL snippet.
297
297
  */
298
298
  _generateTextureSampleLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, shaderStage = this.shaderStage ) {
299
299
 
@@ -317,11 +317,11 @@ class WGSLNodeBuilder extends NodeBuilder {
317
317
  * Generates a wrap function used in context of textures.
318
318
  *
319
319
  * @param {Texture} texture - The texture to generate the function for.
320
- * @return {String} The name of the generated function.
320
+ * @return {string} The name of the generated function.
321
321
  */
322
322
  generateWrapFunction( texture ) {
323
323
 
324
- const functionName = `tsl_coord_${ wrapNames[ texture.wrapS ] }S_${ wrapNames[ texture.wrapT ] }_${texture.isData3DTexture ? '3d' : '2d'}T`;
324
+ const functionName = `tsl_coord_${ wrapNames[ texture.wrapS ] }S_${ wrapNames[ texture.wrapT ] }_${ texture.isData3DTexture ? '3d' : '2d' }T`;
325
325
 
326
326
  let nodeCode = wgslCodeCache[ functionName ];
327
327
 
@@ -331,7 +331,7 @@ class WGSLNodeBuilder extends NodeBuilder {
331
331
 
332
332
  // For 3D textures, use vec3f; for texture arrays, keep vec2f since array index is separate
333
333
  const coordType = texture.isData3DTexture ? 'vec3f' : 'vec2f';
334
- let code = `fn ${functionName}( coord : ${coordType} ) -> ${coordType} {\n\n\treturn ${coordType}(\n`;
334
+ let code = `fn ${ functionName }( coord : ${ coordType } ) -> ${ coordType } {\n\n\treturn ${ coordType }(\n`;
335
335
 
336
336
  const addWrapSnippet = ( wrap, axis ) => {
337
337
 
@@ -391,9 +391,9 @@ class WGSLNodeBuilder extends NodeBuilder {
391
391
  /**
392
392
  * Generates the array declaration string.
393
393
  *
394
- * @param {String} type - The type.
395
- * @param {Number?} [count] - The count.
396
- * @return {String} The generated value as a shader string.
394
+ * @param {string} type - The type.
395
+ * @param {?number} [count] - The count.
396
+ * @return {string} The generated value as a shader string.
397
397
  */
398
398
  generateArrayDeclaration( type, count ) {
399
399
 
@@ -403,13 +403,13 @@ class WGSLNodeBuilder extends NodeBuilder {
403
403
 
404
404
  /**
405
405
  * Generates a WGSL variable that holds the texture dimension of the given texture.
406
- * It also returns information about the the number of layers (elements) of an arrayed
406
+ * It also returns information about the number of layers (elements) of an arrayed
407
407
  * texture as well as the cube face count of cube textures.
408
408
  *
409
409
  * @param {Texture} texture - The texture to generate the function for.
410
- * @param {String} textureProperty - The name of the video texture uniform in the shader.
411
- * @param {String} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
412
- * @return {String} The name of the dimension variable.
410
+ * @param {string} textureProperty - The name of the video texture uniform in the shader.
411
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
412
+ * @return {string} The name of the dimension variable.
413
413
  */
414
414
  generateTextureDimension( texture, textureProperty, levelSnippet ) {
415
415
 
@@ -483,10 +483,10 @@ class WGSLNodeBuilder extends NodeBuilder {
483
483
  * Generates the WGSL snippet for a manual filtered texture.
484
484
  *
485
485
  * @param {Texture} texture - The texture.
486
- * @param {String} textureProperty - The name of the texture uniform in the shader.
487
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
488
- * @param {String} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
489
- * @return {String} The WGSL snippet.
486
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
487
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
488
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
489
+ * @return {string} The WGSL snippet.
490
490
  */
491
491
  generateFilteredTexture( texture, textureProperty, uvSnippet, levelSnippet = '0u' ) {
492
492
 
@@ -504,11 +504,11 @@ class WGSLNodeBuilder extends NodeBuilder {
504
504
  * Since it's a lookup, no sampling or filtering is applied.
505
505
  *
506
506
  * @param {Texture} texture - The texture.
507
- * @param {String} textureProperty - The name of the texture uniform in the shader.
508
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
509
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
510
- * @param {String} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
511
- * @return {String} The WGSL snippet.
507
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
508
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
509
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
510
+ * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
511
+ * @return {string} The WGSL snippet.
512
512
  */
513
513
  generateTextureLod( texture, textureProperty, uvSnippet, depthSnippet, levelSnippet = '0u' ) {
514
514
 
@@ -516,7 +516,7 @@ class WGSLNodeBuilder extends NodeBuilder {
516
516
  const textureDimension = this.generateTextureDimension( texture, textureProperty, levelSnippet );
517
517
 
518
518
  const vecType = texture.isData3DTexture ? 'vec3' : 'vec2';
519
- const coordSnippet = `${vecType}<u32>(${wrapFunction}(${uvSnippet}) * ${vecType}<f32>(${textureDimension}))`;
519
+ const coordSnippet = `${ vecType }<u32>(${ wrapFunction }(${ uvSnippet }) * ${ vecType }<f32>(${ textureDimension }))`;
520
520
 
521
521
  return this.generateTextureLoad( texture, textureProperty, coordSnippet, depthSnippet, levelSnippet );
522
522
 
@@ -526,11 +526,11 @@ class WGSLNodeBuilder extends NodeBuilder {
526
526
  * Generates the WGSL snippet that reads a single texel from a texture without sampling or filtering.
527
527
  *
528
528
  * @param {Texture} texture - The texture.
529
- * @param {String} textureProperty - The name of the texture uniform in the shader.
530
- * @param {String} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
531
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
532
- * @param {String} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
533
- * @return {String} The WGSL snippet.
529
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
530
+ * @param {string} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
531
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
532
+ * @param {string} [levelSnippet='0u'] - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
533
+ * @return {string} The WGSL snippet.
534
534
  */
535
535
  generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet, levelSnippet = '0u' ) {
536
536
 
@@ -554,10 +554,10 @@ class WGSLNodeBuilder extends NodeBuilder {
554
554
  * Generates the WGSL snippet that writes a single texel to a texture.
555
555
  *
556
556
  * @param {Texture} texture - The texture.
557
- * @param {String} textureProperty - The name of the texture uniform in the shader.
558
- * @param {String} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
559
- * @param {String} valueSnippet - A WGSL snippet that represent the new texel value.
560
- * @return {String} The WGSL snippet.
557
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
558
+ * @param {string} uvIndexSnippet - A WGSL snippet that represents texture coordinates used for sampling.
559
+ * @param {string} valueSnippet - A WGSL snippet that represent the new texel value.
560
+ * @return {string} The WGSL snippet.
561
561
  */
562
562
  generateTextureStore( texture, textureProperty, uvIndexSnippet, valueSnippet ) {
563
563
 
@@ -569,7 +569,7 @@ class WGSLNodeBuilder extends NodeBuilder {
569
569
  * Returns `true` if the sampled values of the given texture should be compared against a reference value.
570
570
  *
571
571
  * @param {Texture} texture - The texture.
572
- * @return {Boolean} Whether the sampled values of the given texture should be compared against a reference value or not.
572
+ * @return {boolean} Whether the sampled values of the given texture should be compared against a reference value or not.
573
573
  */
574
574
  isSampleCompare( texture ) {
575
575
 
@@ -581,7 +581,7 @@ class WGSLNodeBuilder extends NodeBuilder {
581
581
  * Returns `true` if the given texture is unfilterable.
582
582
  *
583
583
  * @param {Texture} texture - The texture.
584
- * @return {Boolean} Whether the given texture is unfilterable or not.
584
+ * @return {boolean} Whether the given texture is unfilterable or not.
585
585
  */
586
586
  isUnfilterable( texture ) {
587
587
 
@@ -596,11 +596,11 @@ class WGSLNodeBuilder extends NodeBuilder {
596
596
  * Generates the WGSL snippet for sampling/loading the given texture.
597
597
  *
598
598
  * @param {Texture} texture - The texture.
599
- * @param {String} textureProperty - The name of the texture uniform in the shader.
600
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
601
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
602
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
603
- * @return {String} The WGSL snippet.
599
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
600
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
601
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
602
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
603
+ * @return {string} The WGSL snippet.
604
604
  */
605
605
  generateTexture( texture, textureProperty, uvSnippet, depthSnippet, shaderStage = this.shaderStage ) {
606
606
 
@@ -628,12 +628,12 @@ class WGSLNodeBuilder extends NodeBuilder {
628
628
  * Generates the WGSL snippet for sampling/loading the given texture using explicit gradients.
629
629
  *
630
630
  * @param {Texture} texture - The texture.
631
- * @param {String} textureProperty - The name of the texture uniform in the shader.
632
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
633
- * @param {Array<String>} gradSnippet - An array holding both gradient WGSL snippets.
634
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
635
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
636
- * @return {String} The WGSL snippet.
631
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
632
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
633
+ * @param {Array<string>} gradSnippet - An array holding both gradient WGSL snippets.
634
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
635
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
636
+ * @return {string} The WGSL snippet.
637
637
  */
638
638
  generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet, depthSnippet, shaderStage = this.shaderStage ) {
639
639
 
@@ -655,12 +655,12 @@ class WGSLNodeBuilder extends NodeBuilder {
655
655
  * against a reference value.
656
656
  *
657
657
  * @param {Texture} texture - The texture.
658
- * @param {String} textureProperty - The name of the texture uniform in the shader.
659
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
660
- * @param {String} compareSnippet - A WGSL snippet that represents the reference value.
661
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
662
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
663
- * @return {String} The WGSL snippet.
658
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
659
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
660
+ * @param {string} compareSnippet - A WGSL snippet that represents the reference value.
661
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
662
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
663
+ * @return {string} The WGSL snippet.
664
664
  */
665
665
  generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, shaderStage = this.shaderStage ) {
666
666
 
@@ -680,12 +680,12 @@ class WGSLNodeBuilder extends NodeBuilder {
680
680
  * Generates the WGSL snippet when sampling textures with explicit mip level.
681
681
  *
682
682
  * @param {Texture} texture - The texture.
683
- * @param {String} textureProperty - The name of the texture uniform in the shader.
684
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
685
- * @param {String} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
686
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
687
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
688
- * @return {String} The WGSL snippet.
683
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
684
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
685
+ * @param {string} levelSnippet - A WGSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
686
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
687
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
688
+ * @return {string} The WGSL snippet.
689
689
  */
690
690
  generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet, depthSnippet, shaderStage = this.shaderStage ) {
691
691
 
@@ -709,12 +709,12 @@ class WGSLNodeBuilder extends NodeBuilder {
709
709
  * Generates the WGSL snippet when sampling textures with a bias to the mip level.
710
710
  *
711
711
  * @param {Texture} texture - The texture.
712
- * @param {String} textureProperty - The name of the texture uniform in the shader.
713
- * @param {String} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
714
- * @param {String} biasSnippet - A WGSL snippet that represents the bias to apply to the mip level before sampling.
715
- * @param {String?} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
716
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
717
- * @return {String} The WGSL snippet.
712
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
713
+ * @param {string} uvSnippet - A WGSL snippet that represents texture coordinates used for sampling.
714
+ * @param {string} biasSnippet - A WGSL snippet that represents the bias to apply to the mip level before sampling.
715
+ * @param {?string} depthSnippet - A WGSL snippet that represents 0-based texture array index to sample.
716
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
717
+ * @return {string} The WGSL snippet.
718
718
  */
719
719
  generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet, depthSnippet, shaderStage = this.shaderStage ) {
720
720
 
@@ -734,8 +734,8 @@ class WGSLNodeBuilder extends NodeBuilder {
734
734
  * Returns a WGSL snippet that represents the property name of the given node.
735
735
  *
736
736
  * @param {Node} node - The node.
737
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
738
- * @return {String} The property name.
737
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
738
+ * @return {string} The property name.
739
739
  */
740
740
  getPropertyName( node, shaderStage = this.shaderStage ) {
741
741
 
@@ -781,7 +781,7 @@ class WGSLNodeBuilder extends NodeBuilder {
781
781
  /**
782
782
  * Returns the output struct name.
783
783
  *
784
- * @return {String} The name of the output struct.
784
+ * @return {string} The name of the output struct.
785
785
  */
786
786
  getOutputStructName() {
787
787
 
@@ -789,24 +789,11 @@ class WGSLNodeBuilder extends NodeBuilder {
789
789
 
790
790
  }
791
791
 
792
- /**
793
- * Returns uniforms group count for the given shader stage.
794
- *
795
- * @private
796
- * @param {String} shaderStage - The shader stage.
797
- * @return {Number} The uniforms group count for the given shader stage.
798
- */
799
- _getUniformGroupCount( shaderStage ) {
800
-
801
- return Object.keys( this.uniforms[ shaderStage ] ).length;
802
-
803
- }
804
-
805
792
  /**
806
793
  * Returns the native shader operator name for a given generic name.
807
794
  *
808
- * @param {String} op - The operator name to resolve.
809
- * @return {String} The resolved operator name.
795
+ * @param {string} op - The operator name to resolve.
796
+ * @return {?string} The resolved operator name.
810
797
  */
811
798
  getFunctionOperator( op ) {
812
799
 
@@ -828,8 +815,8 @@ class WGSLNodeBuilder extends NodeBuilder {
828
815
  * Returns the node access for the given node and shader stage.
829
816
  *
830
817
  * @param {StorageTextureNode|StorageBufferNode} node - The storage node.
831
- * @param {String} shaderStage - The shader stage.
832
- * @return {String} The node access.
818
+ * @param {string} shaderStage - The shader stage.
819
+ * @return {string} The node access.
833
820
  */
834
821
  getNodeAccess( node, shaderStage ) {
835
822
 
@@ -844,8 +831,8 @@ class WGSLNodeBuilder extends NodeBuilder {
844
831
  * Returns A WGSL snippet representing the storage access.
845
832
  *
846
833
  * @param {StorageTextureNode|StorageBufferNode} node - The storage node.
847
- * @param {String} shaderStage - The shader stage.
848
- * @return {String} The WGSL snippet representing the storage access.
834
+ * @param {string} shaderStage - The shader stage.
835
+ * @return {string} The WGSL snippet representing the storage access.
849
836
  */
850
837
  getStorageAccess( node, shaderStage ) {
851
838
 
@@ -861,9 +848,9 @@ class WGSLNodeBuilder extends NodeBuilder {
861
848
  * and layouts.
862
849
  *
863
850
  * @param {UniformNode} node - The uniform node.
864
- * @param {String} type - The node data type.
865
- * @param {String} shaderStage - The shader stage.
866
- * @param {String?} [name=null] - An optional uniform name.
851
+ * @param {string} type - The node data type.
852
+ * @param {string} shaderStage - The shader stage.
853
+ * @param {?string} [name=null] - An optional uniform name.
867
854
  * @return {NodeUniform} The node uniform object.
868
855
  */
869
856
  getUniformFromNode( node, type, shaderStage, name = null ) {
@@ -969,11 +956,11 @@ class WGSLNodeBuilder extends NodeBuilder {
969
956
  * The internal builtins data structure will make sure builtins are
970
957
  * defined in the WGSL source.
971
958
  *
972
- * @param {String} name - The builtin name.
973
- * @param {String} property - The property name.
974
- * @param {String} type - The node data type.
975
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
976
- * @return {String} The property name.
959
+ * @param {string} name - The builtin name.
960
+ * @param {string} property - The property name.
961
+ * @param {string} type - The node data type.
962
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
963
+ * @return {string} The property name.
977
964
  */
978
965
  getBuiltin( name, property, type, shaderStage = this.shaderStage ) {
979
966
 
@@ -996,9 +983,9 @@ class WGSLNodeBuilder extends NodeBuilder {
996
983
  /**
997
984
  * Returns `true` if the given builtin is defined in the given shader stage.
998
985
  *
999
- * @param {String} name - The builtin name.
1000
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
1001
- * @return {String} Whether the given builtin is defined in the given shader stage or not.
986
+ * @param {string} name - The builtin name.
987
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
988
+ * @return {boolean} Whether the given builtin is defined in the given shader stage or not.
1002
989
  */
1003
990
  hasBuiltin( name, shaderStage = this.shaderStage ) {
1004
991
 
@@ -1009,7 +996,7 @@ class WGSLNodeBuilder extends NodeBuilder {
1009
996
  /**
1010
997
  * Returns the vertex index builtin.
1011
998
  *
1012
- * @return {String} The vertex index.
999
+ * @return {string} The vertex index.
1013
1000
  */
1014
1001
  getVertexIndex() {
1015
1002
 
@@ -1027,7 +1014,7 @@ class WGSLNodeBuilder extends NodeBuilder {
1027
1014
  * Builds the given shader node.
1028
1015
  *
1029
1016
  * @param {ShaderNodeInternal} shaderNode - The shader node.
1030
- * @return {String} The WGSL function code.
1017
+ * @return {string} The WGSL function code.
1031
1018
  */
1032
1019
  buildFunctionCode( shaderNode ) {
1033
1020
 
@@ -1066,7 +1053,7 @@ ${ flowData.code }
1066
1053
  /**
1067
1054
  * Returns the instance index builtin.
1068
1055
  *
1069
- * @return {String} The instance index.
1056
+ * @return {string} The instance index.
1070
1057
  */
1071
1058
  getInstanceIndex() {
1072
1059
 
@@ -1083,7 +1070,7 @@ ${ flowData.code }
1083
1070
  /**
1084
1071
  * Returns the invocation local index builtin.
1085
1072
  *
1086
- * @return {String} The invocation local index.
1073
+ * @return {string} The invocation local index.
1087
1074
  */
1088
1075
  getInvocationLocalIndex() {
1089
1076
 
@@ -1094,7 +1081,7 @@ ${ flowData.code }
1094
1081
  /**
1095
1082
  * Returns the subgroup size builtin.
1096
1083
  *
1097
- * @return {String} The subgroup size.
1084
+ * @return {string} The subgroup size.
1098
1085
  */
1099
1086
  getSubgroupSize() {
1100
1087
 
@@ -1107,7 +1094,7 @@ ${ flowData.code }
1107
1094
  /**
1108
1095
  * Returns the invocation subgroup index builtin.
1109
1096
  *
1110
- * @return {String} The invocation subgroup index.
1097
+ * @return {string} The invocation subgroup index.
1111
1098
  */
1112
1099
  getInvocationSubgroupIndex() {
1113
1100
 
@@ -1120,7 +1107,7 @@ ${ flowData.code }
1120
1107
  /**
1121
1108
  * Returns the subgroup index builtin.
1122
1109
  *
1123
- * @return {String} The subgroup index.
1110
+ * @return {string} The subgroup index.
1124
1111
  */
1125
1112
  getSubgroupIndex() {
1126
1113
 
@@ -1144,7 +1131,7 @@ ${ flowData.code }
1144
1131
  /**
1145
1132
  * Returns the front facing builtin.
1146
1133
  *
1147
- * @return {String} The front facing builtin.
1134
+ * @return {string} The front facing builtin.
1148
1135
  */
1149
1136
  getFrontFacing() {
1150
1137
 
@@ -1155,7 +1142,7 @@ ${ flowData.code }
1155
1142
  /**
1156
1143
  * Returns the frag coord builtin.
1157
1144
  *
1158
- * @return {String} The frag coord builtin.
1145
+ * @return {string} The frag coord builtin.
1159
1146
  */
1160
1147
  getFragCoord() {
1161
1148
 
@@ -1166,7 +1153,7 @@ ${ flowData.code }
1166
1153
  /**
1167
1154
  * Returns the frag depth builtin.
1168
1155
  *
1169
- * @return {String} The frag depth builtin.
1156
+ * @return {string} The frag depth builtin.
1170
1157
  */
1171
1158
  getFragDepth() {
1172
1159
 
@@ -1177,7 +1164,7 @@ ${ flowData.code }
1177
1164
  /**
1178
1165
  * Returns the clip distances builtin.
1179
1166
  *
1180
- * @return {String} The clip distances builtin.
1167
+ * @return {string} The clip distances builtin.
1181
1168
  */
1182
1169
  getClipDistance() {
1183
1170
 
@@ -1188,7 +1175,7 @@ ${ flowData.code }
1188
1175
  /**
1189
1176
  * Whether to flip texture data along its vertical axis or not.
1190
1177
  *
1191
- * @return {Boolean} Returns always `false` in context of WGSL.
1178
+ * @return {boolean} Returns always `false` in context of WGSL.
1192
1179
  */
1193
1180
  isFlipY() {
1194
1181
 
@@ -1199,8 +1186,8 @@ ${ flowData.code }
1199
1186
  /**
1200
1187
  * Enables the given directive for the given shader stage.
1201
1188
  *
1202
- * @param {String} name - The directive name.
1203
- * @param {String} [shaderStage=this.shaderStage] - The shader stage to enable the directive for.
1189
+ * @param {string} name - The directive name.
1190
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage to enable the directive for.
1204
1191
  */
1205
1192
  enableDirective( name, shaderStage = this.shaderStage ) {
1206
1193
 
@@ -1212,8 +1199,8 @@ ${ flowData.code }
1212
1199
  /**
1213
1200
  * Returns the directives of the given shader stage as a WGSL string.
1214
1201
  *
1215
- * @param {String} shaderStage - The shader stage.
1216
- * @return {String} A WGSL snippet that enables the directives of the given stage.
1202
+ * @param {string} shaderStage - The shader stage.
1203
+ * @return {string} A WGSL snippet that enables the directives of the given stage.
1217
1204
  */
1218
1205
  getDirectives( shaderStage ) {
1219
1206
 
@@ -1282,7 +1269,7 @@ ${ flowData.code }
1282
1269
  /**
1283
1270
  * Enables hardware clipping.
1284
1271
  *
1285
- * @param {String} planeCount - The clipping plane count.
1272
+ * @param {string} planeCount - The clipping plane count.
1286
1273
  */
1287
1274
  enableHardwareClipping( planeCount ) {
1288
1275
 
@@ -1294,8 +1281,8 @@ ${ flowData.code }
1294
1281
  /**
1295
1282
  * Returns the builtins of the given shader stage as a WGSL string.
1296
1283
  *
1297
- * @param {String} shaderStage - The shader stage.
1298
- * @return {String} A WGSL snippet that represents the builtins of the given stage.
1284
+ * @param {string} shaderStage - The shader stage.
1285
+ * @return {string} A WGSL snippet that represents the builtins of the given stage.
1299
1286
  */
1300
1287
  getBuiltins( shaderStage ) {
1301
1288
 
@@ -1321,11 +1308,11 @@ ${ flowData.code }
1321
1308
  * compute shaders. It adds the array to the internal data structure which is
1322
1309
  * later used to generate the respective WGSL.
1323
1310
  *
1324
- * @param {String} name - The array name.
1325
- * @param {String} scope - The scope.
1326
- * @param {String} bufferType - The buffer type.
1327
- * @param {String} bufferCount - The buffer count.
1328
- * @return {String} The array name.
1311
+ * @param {string} name - The array name.
1312
+ * @param {string} scope - The scope.
1313
+ * @param {string} bufferType - The buffer type.
1314
+ * @param {string} bufferCount - The buffer count.
1315
+ * @return {string} The array name.
1329
1316
  */
1330
1317
  getScopedArray( name, scope, bufferType, bufferCount ) {
1331
1318
 
@@ -1347,8 +1334,8 @@ ${ flowData.code }
1347
1334
  /**
1348
1335
  * Returns the scoped arrays of the given shader stage as a WGSL string.
1349
1336
  *
1350
- * @param {String} shaderStage - The shader stage.
1351
- * @return {String|undefined} The WGSL snippet that defines the scoped arrays.
1337
+ * @param {string} shaderStage - The shader stage.
1338
+ * @return {string|undefined} The WGSL snippet that defines the scoped arrays.
1352
1339
  * Returns `undefined` when used in the vertex or fragment stage.
1353
1340
  */
1354
1341
  getScopedArrays( shaderStage ) {
@@ -1376,8 +1363,8 @@ ${ flowData.code }
1376
1363
  /**
1377
1364
  * Returns the shader attributes of the given shader stage as a WGSL string.
1378
1365
  *
1379
- * @param {String} shaderStage - The shader stage.
1380
- * @return {String} The WGSL snippet that defines the shader attributes.
1366
+ * @param {string} shaderStage - The shader stage.
1367
+ * @return {string} The WGSL snippet that defines the shader attributes.
1381
1368
  */
1382
1369
  getAttributes( shaderStage ) {
1383
1370
 
@@ -1427,7 +1414,7 @@ ${ flowData.code }
1427
1414
  * Returns the members of the given struct type node as a WGSL string.
1428
1415
  *
1429
1416
  * @param {StructTypeNode} struct - The struct type node.
1430
- * @return {String} The WGSL snippet that defines the struct members.
1417
+ * @return {string} The WGSL snippet that defines the struct members.
1431
1418
  */
1432
1419
  getStructMembers( struct ) {
1433
1420
 
@@ -1449,6 +1436,12 @@ ${ flowData.code }
1449
1436
 
1450
1437
  }
1451
1438
 
1439
+ if ( struct.output ) {
1440
+
1441
+ snippets.push( `\t${ this.getBuiltins( 'output' ) }` );
1442
+
1443
+ }
1444
+
1452
1445
  return snippets.join( ',\n' );
1453
1446
 
1454
1447
  }
@@ -1456,8 +1449,8 @@ ${ flowData.code }
1456
1449
  /**
1457
1450
  * Returns the structs of the given shader stage as a WGSL string.
1458
1451
  *
1459
- * @param {String} shaderStage - The shader stage.
1460
- * @return {String} The WGSL snippet that defines the structs.
1452
+ * @param {string} shaderStage - The shader stage.
1453
+ * @return {string} The WGSL snippet that defines the structs.
1461
1454
  */
1462
1455
  getStructs( shaderStage ) {
1463
1456
 
@@ -1490,10 +1483,10 @@ ${ flowData.code }
1490
1483
  /**
1491
1484
  * Returns a WGSL string representing a variable.
1492
1485
  *
1493
- * @param {String} type - The variable's type.
1494
- * @param {String} name - The variable's name.
1495
- * @param {Number?} [count=null] - The array length.
1496
- * @return {String} The WGSL snippet that defines a variable.
1486
+ * @param {string} type - The variable's type.
1487
+ * @param {string} name - The variable's name.
1488
+ * @param {?number} [count=null] - The array length.
1489
+ * @return {string} The WGSL snippet that defines a variable.
1497
1490
  */
1498
1491
  getVar( type, name, count = null ) {
1499
1492
 
@@ -1516,8 +1509,8 @@ ${ flowData.code }
1516
1509
  /**
1517
1510
  * Returns the variables of the given shader stage as a WGSL string.
1518
1511
  *
1519
- * @param {String} shaderStage - The shader stage.
1520
- * @return {String} The WGSL snippet that defines the variables.
1512
+ * @param {string} shaderStage - The shader stage.
1513
+ * @return {string} The WGSL snippet that defines the variables.
1521
1514
  */
1522
1515
  getVars( shaderStage ) {
1523
1516
 
@@ -1541,8 +1534,8 @@ ${ flowData.code }
1541
1534
  /**
1542
1535
  * Returns the varyings of the given shader stage as a WGSL string.
1543
1536
  *
1544
- * @param {String} shaderStage - The shader stage.
1545
- * @return {String} The WGSL snippet that defines the varyings.
1537
+ * @param {string} shaderStage - The shader stage.
1538
+ * @return {string} The WGSL snippet that defines the varyings.
1546
1539
  */
1547
1540
  getVaryings( shaderStage ) {
1548
1541
 
@@ -1605,8 +1598,8 @@ ${ flowData.code }
1605
1598
  /**
1606
1599
  * Returns the uniforms of the given shader stage as a WGSL string.
1607
1600
  *
1608
- * @param {String} shaderStage - The shader stage.
1609
- * @return {String} The WGSL snippet that defines the uniforms.
1601
+ * @param {string} shaderStage - The shader stage.
1602
+ * @return {string} The WGSL snippet that defines the uniforms.
1610
1603
  */
1611
1604
  getUniforms( shaderStage ) {
1612
1605
 
@@ -1853,9 +1846,9 @@ ${ flowData.code }
1853
1846
  /**
1854
1847
  * Returns the native shader method name for a given generic name.
1855
1848
  *
1856
- * @param {String} method - The method name to resolve.
1857
- * @param {String} [output=null] - An optional output.
1858
- * @return {String} The resolved WGSL method name.
1849
+ * @param {string} method - The method name to resolve.
1850
+ * @param {?string} [output=null] - An optional output.
1851
+ * @return {string} The resolved WGSL method name.
1859
1852
  */
1860
1853
  getMethod( method, output = null ) {
1861
1854
 
@@ -1880,8 +1873,8 @@ ${ flowData.code }
1880
1873
  /**
1881
1874
  * Returns the WGSL type of the given node data type.
1882
1875
  *
1883
- * @param {String} type - The node data type.
1884
- * @return {String} The WGSL type.
1876
+ * @param {string} type - The node data type.
1877
+ * @return {string} The WGSL type.
1885
1878
  */
1886
1879
  getType( type ) {
1887
1880
 
@@ -1892,8 +1885,8 @@ ${ flowData.code }
1892
1885
  /**
1893
1886
  * Whether the requested feature is available or not.
1894
1887
  *
1895
- * @param {String} name - The requested feature.
1896
- * @return {Boolean} Whether the requested feature is supported or not.
1888
+ * @param {string} name - The requested feature.
1889
+ * @return {boolean} Whether the requested feature is supported or not.
1897
1890
  */
1898
1891
  isAvailable( name ) {
1899
1892
 
@@ -1923,8 +1916,8 @@ ${ flowData.code }
1923
1916
  * Returns the native shader method name for a given generic name.
1924
1917
  *
1925
1918
  * @private
1926
- * @param {String} method - The method name to resolve.
1927
- * @return {String} The resolved WGSL method name.
1919
+ * @param {string} method - The method name to resolve.
1920
+ * @return {string} The resolved WGSL method name.
1928
1921
  */
1929
1922
  _getWGSLMethod( method ) {
1930
1923
 
@@ -1943,7 +1936,7 @@ ${ flowData.code }
1943
1936
  * function node.
1944
1937
  *
1945
1938
  * @private
1946
- * @param {String} name - The method name to include.
1939
+ * @param {string} name - The method name to include.
1947
1940
  * @return {CodeNode} The respective code node.
1948
1941
  */
1949
1942
  _include( name ) {
@@ -1966,7 +1959,7 @@ ${ flowData.code }
1966
1959
  *
1967
1960
  * @private
1968
1961
  * @param {Object} shaderData - The shader data.
1969
- * @return {String} The vertex shader.
1962
+ * @return {string} The vertex shader.
1970
1963
  */
1971
1964
  _getWGSLVertexCode( shaderData ) {
1972
1965
 
@@ -2008,7 +2001,7 @@ fn main( ${shaderData.attributes} ) -> VaryingsStruct {
2008
2001
  *
2009
2002
  * @private
2010
2003
  * @param {Object} shaderData - The shader data.
2011
- * @return {String} The vertex shader.
2004
+ * @return {string} The vertex shader.
2012
2005
  */
2013
2006
  _getWGSLFragmentCode( shaderData ) {
2014
2007
 
@@ -2044,8 +2037,8 @@ fn main( ${shaderData.varyings} ) -> ${shaderData.returnType} {
2044
2037
  *
2045
2038
  * @private
2046
2039
  * @param {Object} shaderData - The shader data.
2047
- * @param {String} workgroupSize - The workgroup size.
2048
- * @return {String} The vertex shader.
2040
+ * @param {string} workgroupSize - The workgroup size.
2041
+ * @return {string} The vertex shader.
2049
2042
  */
2050
2043
  _getWGSLComputeCode( shaderData, workgroupSize ) {
2051
2044
 
@@ -2089,9 +2082,9 @@ fn main( ${shaderData.attributes} ) {
2089
2082
  * Returns a WGSL struct based on the given name and variables.
2090
2083
  *
2091
2084
  * @private
2092
- * @param {String} name - The struct name.
2093
- * @param {String} vars - The struct variables.
2094
- * @return {String} The WGSL snippet representing a struct.
2085
+ * @param {string} name - The struct name.
2086
+ * @param {string} vars - The struct variables.
2087
+ * @return {string} The WGSL snippet representing a struct.
2095
2088
  */
2096
2089
  _getWGSLStruct( name, vars ) {
2097
2090
 
@@ -2106,12 +2099,12 @@ ${vars}
2106
2099
  * Returns a WGSL struct binding.
2107
2100
  *
2108
2101
  * @private
2109
- * @param {String} name - The struct name.
2110
- * @param {String} vars - The struct variables.
2111
- * @param {String} access - The access.
2112
- * @param {Number} [binding=0] - The binding index.
2113
- * @param {Number} [group=0] - The group index.
2114
- * @return {String} The WGSL snippet representing a struct binding.
2102
+ * @param {string} name - The struct name.
2103
+ * @param {string} vars - The struct variables.
2104
+ * @param {string} access - The access.
2105
+ * @param {number} [binding=0] - The binding index.
2106
+ * @param {number} [group=0] - The group index.
2107
+ * @return {string} The WGSL snippet representing a struct binding.
2115
2108
  */
2116
2109
  _getWGSLStructBinding( name, vars, access, binding = 0, group = 0 ) {
2117
2110