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
@@ -26,7 +26,7 @@ class WebGLBufferRenderer {
26
26
 
27
27
  }
28
28
 
29
- info.update( object, count, mode, 1 );
29
+ info.update( object, count, 1 );
30
30
 
31
31
  }
32
32
 
@@ -46,7 +46,7 @@ class WebGLBufferRenderer {
46
46
 
47
47
  }
48
48
 
49
- info.update( object, count, mode, primcount );
49
+ info.update( object, count, primcount );
50
50
 
51
51
  }
52
52
 
@@ -85,7 +85,7 @@ class WebGLBufferRenderer {
85
85
 
86
86
  }
87
87
 
88
- info.update( object, elementCount, mode, 1 );
88
+ info.update( object, elementCount, 1 );
89
89
 
90
90
  }
91
91
 
@@ -126,7 +126,7 @@ class WebGLBufferRenderer {
126
126
 
127
127
  }
128
128
 
129
- info.update( object, elementCount, mode, 1 );
129
+ info.update( object, elementCount, 1 );
130
130
 
131
131
  }
132
132
 
@@ -71,7 +71,7 @@ class GLSLNodeBuilder extends NodeBuilder {
71
71
  * A dictionary holds for each shader stage ('vertex', 'fragment', 'compute')
72
72
  * another dictionary which manages UBOs per group ('render','frame','object').
73
73
  *
74
- * @type {Object<String,Object<String,NodeUniformsGroup>>}
74
+ * @type {Object<string,Object<string,NodeUniformsGroup>>}
75
75
  */
76
76
  this.uniformGroups = {};
77
77
 
@@ -79,39 +79,31 @@ class GLSLNodeBuilder extends NodeBuilder {
79
79
  * An array that holds objects defining the varying and attribute data in
80
80
  * context of Transform Feedback.
81
81
  *
82
- * @type {Object<String,Map<String,Object>>}
82
+ * @type {Array<Object<string,AttributeNode|string>>}
83
83
  */
84
84
  this.transforms = [];
85
85
 
86
86
  /**
87
87
  * A dictionary that holds for each shader stage a Map of used extensions.
88
88
  *
89
- * @type {Object<String,Map<String,Object>>}
89
+ * @type {Object<string,Map<string,Object>>}
90
90
  */
91
91
  this.extensions = {};
92
92
 
93
93
  /**
94
94
  * A dictionary that holds for each shader stage an Array of used builtins.
95
95
  *
96
- * @type {Object<String,Array<String>>}
96
+ * @type {Object<string,Array<string>>}
97
97
  */
98
98
  this.builtins = { vertex: [], fragment: [], compute: [] };
99
99
 
100
- /**
101
- * Whether comparison in shader code are generated with methods or not.
102
- *
103
- * @type {Boolean}
104
- * @default true
105
- */
106
- this.useComparisonMethod = true;
107
-
108
100
  }
109
101
 
110
102
  /**
111
103
  * Checks if the given texture requires a manual conversion to the working color space.
112
104
  *
113
105
  * @param {Texture} texture - The texture to check.
114
- * @return {Boolean} Whether the given texture requires a conversion to working color space or not.
106
+ * @return {boolean} Whether the given texture requires a conversion to working color space or not.
115
107
  */
116
108
  needsToWorkingColorSpace( texture ) {
117
109
 
@@ -122,8 +114,8 @@ class GLSLNodeBuilder extends NodeBuilder {
122
114
  /**
123
115
  * Returns the native shader method name for a given generic name.
124
116
  *
125
- * @param {String} method - The method name to resolve.
126
- * @return {String} The resolved GLSL method name.
117
+ * @param {string} method - The method name to resolve.
118
+ * @return {string} The resolved GLSL method name.
127
119
  */
128
120
  getMethod( method ) {
129
121
 
@@ -134,7 +126,7 @@ class GLSLNodeBuilder extends NodeBuilder {
134
126
  /**
135
127
  * Returns the output struct name. Not relevant for GLSL.
136
128
  *
137
- * @return {String}
129
+ * @return {string}
138
130
  */
139
131
  getOutputStructName() {
140
132
 
@@ -146,7 +138,7 @@ class GLSLNodeBuilder extends NodeBuilder {
146
138
  * Builds the given shader node.
147
139
  *
148
140
  * @param {ShaderNodeInternal} shaderNode - The shader node.
149
- * @return {String} The GLSL function code.
141
+ * @return {string} The GLSL function code.
150
142
  */
151
143
  buildFunctionCode( shaderNode ) {
152
144
 
@@ -256,8 +248,8 @@ ${ flowData.code }
256
248
  * Returns a GLSL snippet that represents the property name of the given node.
257
249
  *
258
250
  * @param {Node} node - The node.
259
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
260
- * @return {String} The property name.
251
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
252
+ * @return {string} The property name.
261
253
  */
262
254
  getPropertyName( node, shaderStage = this.shaderStage ) {
263
255
 
@@ -276,7 +268,7 @@ ${ flowData.code }
276
268
  * buffer node.
277
269
  *
278
270
  * @param {StorageArrayElementNode} storageArrayElementNode - The storage array element node.
279
- * @return {String} The property name.
271
+ * @return {string} The property name.
280
272
  */
281
273
  generatePBO( storageArrayElementNode ) {
282
274
 
@@ -364,11 +356,11 @@ ${ flowData.code }
364
356
  * Generates the GLSL snippet that reads a single texel from a texture without sampling or filtering.
365
357
  *
366
358
  * @param {Texture} texture - The texture.
367
- * @param {String} textureProperty - The name of the texture uniform in the shader.
368
- * @param {String} uvIndexSnippet - A GLSL snippet that represents texture coordinates used for sampling.
369
- * @param {String?} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
370
- * @param {String} [levelSnippet='0u'] - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
371
- * @return {String} The GLSL snippet.
359
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
360
+ * @param {string} uvIndexSnippet - A GLSL snippet that represents texture coordinates used for sampling.
361
+ * @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
362
+ * @param {string} [levelSnippet='0u'] - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
363
+ * @return {string} The GLSL snippet.
372
364
  */
373
365
  generateTextureLoad( texture, textureProperty, uvIndexSnippet, depthSnippet, levelSnippet = '0' ) {
374
366
 
@@ -388,10 +380,10 @@ ${ flowData.code }
388
380
  * Generates the GLSL snippet for sampling/loading the given texture.
389
381
  *
390
382
  * @param {Texture} texture - The texture.
391
- * @param {String} textureProperty - The name of the texture uniform in the shader.
392
- * @param {String} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
393
- * @param {String?} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
394
- * @return {String} The GLSL snippet.
383
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
384
+ * @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
385
+ * @param {?string} depthSnippet - A GLSL snippet that represents the 0-based texture array index to sample.
386
+ * @return {string} The GLSL snippet.
395
387
  */
396
388
  generateTexture( texture, textureProperty, uvSnippet, depthSnippet ) {
397
389
 
@@ -413,10 +405,10 @@ ${ flowData.code }
413
405
  * Generates the GLSL snippet when sampling textures with explicit mip level.
414
406
  *
415
407
  * @param {Texture} texture - The texture.
416
- * @param {String} textureProperty - The name of the texture uniform in the shader.
417
- * @param {String} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
418
- * @param {String} levelSnippet - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
419
- * @return {String} The GLSL snippet.
408
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
409
+ * @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
410
+ * @param {string} levelSnippet - A GLSL snippet that represents the mip level, with level 0 containing a full size version of the texture.
411
+ * @return {string} The GLSL snippet.
420
412
  */
421
413
  generateTextureLevel( texture, textureProperty, uvSnippet, levelSnippet ) {
422
414
 
@@ -428,10 +420,10 @@ ${ flowData.code }
428
420
  * Generates the GLSL snippet when sampling textures with a bias to the mip level.
429
421
  *
430
422
  * @param {Texture} texture - The texture.
431
- * @param {String} textureProperty - The name of the texture uniform in the shader.
432
- * @param {String} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
433
- * @param {String} biasSnippet - A GLSL snippet that represents the bias to apply to the mip level before sampling.
434
- * @return {String} The GLSL snippet.
423
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
424
+ * @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
425
+ * @param {string} biasSnippet - A GLSL snippet that represents the bias to apply to the mip level before sampling.
426
+ * @return {string} The GLSL snippet.
435
427
  */
436
428
  generateTextureBias( texture, textureProperty, uvSnippet, biasSnippet ) {
437
429
 
@@ -443,10 +435,10 @@ ${ flowData.code }
443
435
  * Generates the GLSL snippet for sampling/loading the given texture using explicit gradients.
444
436
  *
445
437
  * @param {Texture} texture - The texture.
446
- * @param {String} textureProperty - The name of the texture uniform in the shader.
447
- * @param {String} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
448
- * @param {Array<String>} gradSnippet - An array holding both gradient GLSL snippets.
449
- * @return {String} The GLSL snippet.
438
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
439
+ * @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
440
+ * @param {Array<string>} gradSnippet - An array holding both gradient GLSL snippets.
441
+ * @return {string} The GLSL snippet.
450
442
  */
451
443
  generateTextureGrad( texture, textureProperty, uvSnippet, gradSnippet ) {
452
444
 
@@ -459,12 +451,12 @@ ${ flowData.code }
459
451
  * against a reference value.
460
452
  *
461
453
  * @param {Texture} texture - The texture.
462
- * @param {String} textureProperty - The name of the texture uniform in the shader.
463
- * @param {String} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
464
- * @param {String} compareSnippet - A GLSL snippet that represents the reference value.
465
- * @param {String?} depthSnippet - A GLSL snippet that represents 0-based texture array index to sample.
466
- * @param {String} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
467
- * @return {String} The GLSL snippet.
454
+ * @param {string} textureProperty - The name of the texture uniform in the shader.
455
+ * @param {string} uvSnippet - A GLSL snippet that represents texture coordinates used for sampling.
456
+ * @param {string} compareSnippet - A GLSL snippet that represents the reference value.
457
+ * @param {?string} depthSnippet - A GLSL snippet that represents 0-based texture array index to sample.
458
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage this code snippet is generated for.
459
+ * @return {string} The GLSL snippet.
468
460
  */
469
461
  generateTextureCompare( texture, textureProperty, uvSnippet, compareSnippet, depthSnippet, shaderStage = this.shaderStage ) {
470
462
 
@@ -483,8 +475,8 @@ ${ flowData.code }
483
475
  /**
484
476
  * Returns the variables of the given shader stage as a GLSL string.
485
477
  *
486
- * @param {String} shaderStage - The shader stage.
487
- * @return {String} The GLSL snippet that defines the variables.
478
+ * @param {string} shaderStage - The shader stage.
479
+ * @return {string} The GLSL snippet that defines the variables.
488
480
  */
489
481
  getVars( shaderStage ) {
490
482
 
@@ -509,8 +501,8 @@ ${ flowData.code }
509
501
  /**
510
502
  * Returns the uniforms of the given shader stage as a GLSL string.
511
503
  *
512
- * @param {String} shaderStage - The shader stage.
513
- * @return {String} The GLSL snippet that defines the uniforms.
504
+ * @param {string} shaderStage - The shader stage.
505
+ * @return {string} The GLSL snippet that defines the uniforms.
514
506
  */
515
507
  getUniforms( shaderStage ) {
516
508
 
@@ -524,14 +516,13 @@ ${ flowData.code }
524
516
  let snippet = null;
525
517
  let group = false;
526
518
 
527
- if ( uniform.type === 'texture' ) {
519
+ if ( uniform.type === 'texture' || uniform.type === 'texture3D' ) {
528
520
 
529
521
  const texture = uniform.node.value;
530
522
 
531
523
  let typePrefix = '';
532
524
 
533
- if ( texture.isDataTexture === true ) {
534
-
525
+ if ( texture.isDataTexture === true || texture.isData3DTexture === true ) {
535
526
 
536
527
  if ( texture.type === UnsignedIntType ) {
537
528
 
@@ -545,7 +536,11 @@ ${ flowData.code }
545
536
 
546
537
  }
547
538
 
548
- if ( texture.compareFunction ) {
539
+ if ( uniform.type === 'texture3D' ) {
540
+
541
+ snippet = `${typePrefix}sampler3D ${ uniform.name };`;
542
+
543
+ } else if ( texture.compareFunction ) {
549
544
 
550
545
  snippet = `sampler2DShadow ${ uniform.name };`;
551
546
 
@@ -563,10 +558,6 @@ ${ flowData.code }
563
558
 
564
559
  snippet = `samplerCube ${ uniform.name };`;
565
560
 
566
- } else if ( uniform.type === 'texture3D' ) {
567
-
568
- snippet = `sampler3D ${ uniform.name };`;
569
-
570
561
  } else if ( uniform.type === 'buffer' ) {
571
562
 
572
563
  const bufferNode = uniform.node;
@@ -633,7 +624,7 @@ ${ flowData.code }
633
624
  * Returns the type for a given buffer attribute.
634
625
  *
635
626
  * @param {BufferAttribute} attribute - The buffer attribute.
636
- * @return {String} The type.
627
+ * @return {string} The type.
637
628
  */
638
629
  getTypeFromAttribute( attribute ) {
639
630
 
@@ -662,8 +653,8 @@ ${ flowData.code }
662
653
  /**
663
654
  * Returns the shader attributes of the given shader stage as a GLSL string.
664
655
  *
665
- * @param {String} shaderStage - The shader stage.
666
- * @return {String} The GLSL snippet that defines the shader attributes.
656
+ * @param {string} shaderStage - The shader stage.
657
+ * @return {string} The GLSL snippet that defines the shader attributes.
667
658
  */
668
659
  getAttributes( shaderStage ) {
669
660
 
@@ -691,7 +682,7 @@ ${ flowData.code }
691
682
  * Returns the members of the given struct type node as a GLSL string.
692
683
  *
693
684
  * @param {StructTypeNode} struct - The struct type node.
694
- * @return {String} The GLSL snippet that defines the struct members.
685
+ * @return {string} The GLSL snippet that defines the struct members.
695
686
  */
696
687
  getStructMembers( struct ) {
697
688
 
@@ -710,8 +701,8 @@ ${ flowData.code }
710
701
  /**
711
702
  * Returns the structs of the given shader stage as a GLSL string.
712
703
  *
713
- * @param {String} shaderStage - The shader stage.
714
- * @return {String} The GLSL snippet that defines the structs.
704
+ * @param {string} shaderStage - The shader stage.
705
+ * @return {string} The GLSL snippet that defines the structs.
715
706
  */
716
707
  getStructs( shaderStage ) {
717
708
 
@@ -755,8 +746,8 @@ ${ flowData.code }
755
746
  /**
756
747
  * Returns the varyings of the given shader stage as a GLSL string.
757
748
  *
758
- * @param {String} shaderStage - The shader stage.
759
- * @return {String} The GLSL snippet that defines the varyings.
749
+ * @param {string} shaderStage - The shader stage.
750
+ * @return {string} The GLSL snippet that defines the varyings.
760
751
  */
761
752
  getVaryings( shaderStage ) {
762
753
 
@@ -776,7 +767,7 @@ ${ flowData.code }
776
767
 
777
768
  const flat = type.includes( 'int' ) || type.includes( 'uv' ) || type.includes( 'iv' ) ? 'flat ' : '';
778
769
 
779
- snippet += `${flat} out ${type} ${varying.name};\n`;
770
+ snippet += `${flat}out ${type} ${varying.name};\n`;
780
771
 
781
772
  } else {
782
773
 
@@ -816,7 +807,7 @@ ${ flowData.code }
816
807
  /**
817
808
  * Returns the vertex index builtin.
818
809
  *
819
- * @return {String} The vertex index.
810
+ * @return {string} The vertex index.
820
811
  */
821
812
  getVertexIndex() {
822
813
 
@@ -827,7 +818,7 @@ ${ flowData.code }
827
818
  /**
828
819
  * Returns the instance index builtin.
829
820
  *
830
- * @return {String} The instance index.
821
+ * @return {string} The instance index.
831
822
  */
832
823
  getInstanceIndex() {
833
824
 
@@ -838,7 +829,7 @@ ${ flowData.code }
838
829
  /**
839
830
  * Returns the invocation local index builtin.
840
831
  *
841
- * @return {String} The invocation local index.
832
+ * @return {string} The invocation local index.
842
833
  */
843
834
  getInvocationLocalIndex() {
844
835
 
@@ -853,7 +844,7 @@ ${ flowData.code }
853
844
  /**
854
845
  * Returns the draw index builtin.
855
846
  *
856
- * @return {String?} The drawIndex shader string. Returns `null` if `WEBGL_multi_draw` isn't supported by the device.
847
+ * @return {?string} The drawIndex shader string. Returns `null` if `WEBGL_multi_draw` isn't supported by the device.
857
848
  */
858
849
  getDrawIndex() {
859
850
 
@@ -872,7 +863,7 @@ ${ flowData.code }
872
863
  /**
873
864
  * Returns the front facing builtin.
874
865
  *
875
- * @return {String} The front facing builtin.
866
+ * @return {string} The front facing builtin.
876
867
  */
877
868
  getFrontFacing() {
878
869
 
@@ -883,7 +874,7 @@ ${ flowData.code }
883
874
  /**
884
875
  * Returns the frag coord builtin.
885
876
  *
886
- * @return {String} The frag coord builtin.
877
+ * @return {string} The frag coord builtin.
887
878
  */
888
879
  getFragCoord() {
889
880
 
@@ -894,7 +885,7 @@ ${ flowData.code }
894
885
  /**
895
886
  * Returns the frag depth builtin.
896
887
  *
897
- * @return {String} The frag depth builtin.
888
+ * @return {string} The frag depth builtin.
898
889
  */
899
890
  getFragDepth() {
900
891
 
@@ -905,9 +896,9 @@ ${ flowData.code }
905
896
  /**
906
897
  * Enables the given extension.
907
898
  *
908
- * @param {String} name - The extension name.
909
- * @param {String} behavior - The extension behavior.
910
- * @param {String} [shaderStage=this.shaderStage] - The shader stage.
899
+ * @param {string} name - The extension name.
900
+ * @param {string} behavior - The extension behavior.
901
+ * @param {string} [shaderStage=this.shaderStage] - The shader stage.
911
902
  */
912
903
  enableExtension( name, behavior, shaderStage = this.shaderStage ) {
913
904
 
@@ -927,8 +918,8 @@ ${ flowData.code }
927
918
  /**
928
919
  * Returns the enabled extensions of the given shader stage as a GLSL string.
929
920
  *
930
- * @param {String} shaderStage - The shader stage.
931
- * @return {String} The GLSL snippet that defines the enabled extensions.
921
+ * @param {string} shaderStage - The shader stage.
922
+ * @return {string} The GLSL snippet that defines the enabled extensions.
932
923
  */
933
924
  getExtensions( shaderStage ) {
934
925
 
@@ -966,7 +957,7 @@ ${ flowData.code }
966
957
  /**
967
958
  * Returns the clip distances builtin.
968
959
  *
969
- * @return {String} The clip distances builtin.
960
+ * @return {string} The clip distances builtin.
970
961
  */
971
962
  getClipDistance() {
972
963
 
@@ -977,8 +968,8 @@ ${ flowData.code }
977
968
  /**
978
969
  * Whether the requested feature is available or not.
979
970
  *
980
- * @param {String} name - The requested feature.
981
- * @return {Boolean} Whether the requested feature is supported or not.
971
+ * @param {string} name - The requested feature.
972
+ * @return {boolean} Whether the requested feature is supported or not.
982
973
  */
983
974
  isAvailable( name ) {
984
975
 
@@ -1026,7 +1017,7 @@ ${ flowData.code }
1026
1017
  /**
1027
1018
  * Whether to flip texture data along its vertical axis or not.
1028
1019
  *
1029
- * @return {Boolean} Returns always `true` in context of GLSL.
1020
+ * @return {boolean} Returns always `true` in context of GLSL.
1030
1021
  */
1031
1022
  isFlipY() {
1032
1023
 
@@ -1037,7 +1028,7 @@ ${ flowData.code }
1037
1028
  /**
1038
1029
  * Enables hardware clipping.
1039
1030
  *
1040
- * @param {String} planeCount - The clipping plane count.
1031
+ * @param {string} planeCount - The clipping plane count.
1041
1032
  */
1042
1033
  enableHardwareClipping( planeCount ) {
1043
1034
 
@@ -1050,7 +1041,7 @@ ${ flowData.code }
1050
1041
  /**
1051
1042
  * Registers a transform in context of Transform Feedback.
1052
1043
  *
1053
- * @param {String} varyingName - The varying name.
1044
+ * @param {string} varyingName - The varying name.
1054
1045
  * @param {AttributeNode} attributeNode - The attribute node.
1055
1046
  */
1056
1047
  registerTransform( varyingName, attributeNode ) {
@@ -1062,8 +1053,8 @@ ${ flowData.code }
1062
1053
  /**
1063
1054
  * Returns the transforms of the given shader stage as a GLSL string.
1064
1055
  *
1065
- * @param {String} shaderStage - The shader stage.
1066
- * @return {String} The GLSL snippet that defines the transforms.
1056
+ * @param {string} shaderStage - The shader stage.
1057
+ * @return {string} The GLSL snippet that defines the transforms.
1067
1058
  */
1068
1059
  getTransforms( /* shaderStage */ ) {
1069
1060
 
@@ -1074,10 +1065,9 @@ ${ flowData.code }
1074
1065
  for ( let i = 0; i < transforms.length; i ++ ) {
1075
1066
 
1076
1067
  const transform = transforms[ i ];
1077
-
1078
1068
  const attributeName = this.getPropertyName( transform.attributeNode );
1079
1069
 
1080
- snippet += `${ transform.varyingName } = ${ attributeName };\n\t`;
1070
+ if ( attributeName ) snippet += `${ transform.varyingName } = ${ attributeName };\n\t`;
1081
1071
 
1082
1072
  }
1083
1073
 
@@ -1089,9 +1079,9 @@ ${ flowData.code }
1089
1079
  * Returns a GLSL struct based on the given name and variables.
1090
1080
  *
1091
1081
  * @private
1092
- * @param {String} name - The struct name.
1093
- * @param {String} vars - The struct variables.
1094
- * @return {String} The GLSL snippet representing a struct.
1082
+ * @param {string} name - The struct name.
1083
+ * @param {string} vars - The struct variables.
1084
+ * @return {string} The GLSL snippet representing a struct.
1095
1085
  */
1096
1086
  _getGLSLUniformStruct( name, vars ) {
1097
1087
 
@@ -1107,7 +1097,7 @@ ${vars}
1107
1097
  *
1108
1098
  * @private
1109
1099
  * @param {Object} shaderData - The shader data.
1110
- * @return {String} The vertex shader.
1100
+ * @return {string} The vertex shader.
1111
1101
  */
1112
1102
  _getGLSLVertexCode( shaderData ) {
1113
1103
 
@@ -1115,7 +1105,7 @@ ${vars}
1115
1105
 
1116
1106
  ${ this.getSignature() }
1117
1107
 
1118
- // extensions
1108
+ // extensions
1119
1109
  ${shaderData.extensions}
1120
1110
 
1121
1111
  // precision
@@ -1156,7 +1146,7 @@ void main() {
1156
1146
  *
1157
1147
  * @private
1158
1148
  * @param {Object} shaderData - The shader data.
1159
- * @return {String} The vertex shader.
1149
+ * @return {string} The vertex shader.
1160
1150
  */
1161
1151
  _getGLSLFragmentCode( shaderData ) {
1162
1152
 
@@ -1283,9 +1273,9 @@ void main() {
1283
1273
  * and layouts.
1284
1274
  *
1285
1275
  * @param {UniformNode} node - The uniform node.
1286
- * @param {String} type - The node data type.
1287
- * @param {String} shaderStage - The shader stage.
1288
- * @param {String?} [name=null] - An optional uniform name.
1276
+ * @param {string} type - The node data type.
1277
+ * @param {string} shaderStage - The shader stage.
1278
+ * @param {?string} [name=null] - An optional uniform name.
1289
1279
  * @return {NodeUniform} The node uniform object.
1290
1280
  */
1291
1281
  getUniformFromNode( node, type, shaderStage, name = null ) {
@@ -22,7 +22,7 @@ class WebGLCapabilities {
22
22
  /**
23
23
  * This value holds the cached max anisotropy value.
24
24
  *
25
- * @type {Number?}
25
+ * @type {?number}
26
26
  * @default null
27
27
  */
28
28
  this.maxAnisotropy = null;
@@ -34,7 +34,7 @@ class WebGLCapabilities {
34
34
  * depends on the device and is reported by the `EXT_texture_filter_anisotropic`
35
35
  * WebGL extension.
36
36
  *
37
- * @return {Number} The maximum anisotropy texture filtering value.
37
+ * @return {number} The maximum anisotropy texture filtering value.
38
38
  */
39
39
  getMaxAnisotropy() {
40
40
 
@@ -29,7 +29,7 @@ class WebGLExtensions {
29
29
  /**
30
30
  * A list with all the supported WebGL extensions.
31
31
  *
32
- * @type {Array<String>}
32
+ * @type {Array<string>}
33
33
  */
34
34
  this.availableExtensions = this.gl.getSupportedExtensions();
35
35
 
@@ -38,7 +38,7 @@ class WebGLExtensions {
38
38
  * The key is the name of the extension, the value
39
39
  * the requested extension object.
40
40
  *
41
- * @type {Object<String,Object>}
41
+ * @type {Object<string,Object>}
42
42
  */
43
43
  this.extensions = {};
44
44
 
@@ -47,7 +47,7 @@ class WebGLExtensions {
47
47
  /**
48
48
  * Returns the extension object for the given extension name.
49
49
  *
50
- * @param {String} name - The extension name.
50
+ * @param {string} name - The extension name.
51
51
  * @return {Object} The extension object.
52
52
  */
53
53
  get( name ) {
@@ -69,8 +69,8 @@ class WebGLExtensions {
69
69
  /**
70
70
  * Returns `true` if the requested extension is available.
71
71
  *
72
- * @param {String} name - The extension name.
73
- * @return {Boolean} Whether the given extension is available or not.
72
+ * @param {string} name - The extension name.
73
+ * @return {boolean} Whether the given extension is available or not.
74
74
  */
75
75
  has( name ) {
76
76