super-three 0.175.0 → 0.177.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 (477) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +7631 -6743
  3. package/build/three.core.js +7496 -6758
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +172 -22
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +14 -6
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +3948 -1678
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +3941 -1678
  12. package/build/three.webgpu.nodes.min.js +1 -1
  13. package/examples/jsm/Addons.js +0 -1
  14. package/examples/jsm/animation/AnimationClipCreator.js +1 -0
  15. package/examples/jsm/animation/CCDIKSolver.js +6 -3
  16. package/examples/jsm/capabilities/WebGL.js +1 -0
  17. package/examples/jsm/capabilities/WebGPU.js +1 -0
  18. package/examples/jsm/controls/ArcballControls.js +14 -3
  19. package/examples/jsm/controls/DragControls.js +1 -0
  20. package/examples/jsm/controls/FirstPersonControls.js +1 -0
  21. package/examples/jsm/controls/FlyControls.js +1 -0
  22. package/examples/jsm/controls/MapControls.js +1 -0
  23. package/examples/jsm/controls/OrbitControls.js +1 -0
  24. package/examples/jsm/controls/PointerLockControls.js +5 -3
  25. package/examples/jsm/controls/TrackballControls.js +1 -0
  26. package/examples/jsm/controls/TransformControls.js +1 -0
  27. package/examples/jsm/csm/CSM.js +2 -0
  28. package/examples/jsm/csm/CSMFrustum.js +2 -0
  29. package/examples/jsm/csm/CSMHelper.js +1 -0
  30. package/examples/jsm/csm/CSMShader.js +4 -1
  31. package/examples/jsm/csm/CSMShadowNode.js +18 -4
  32. package/examples/jsm/curves/CurveExtras.js +14 -0
  33. package/examples/jsm/curves/NURBSCurve.js +1 -0
  34. package/examples/jsm/curves/NURBSSurface.js +2 -0
  35. package/examples/jsm/curves/NURBSUtils.js +4 -1
  36. package/examples/jsm/curves/NURBSVolume.js +2 -0
  37. package/examples/jsm/effects/AnaglyphEffect.js +2 -0
  38. package/examples/jsm/effects/AsciiEffect.js +2 -0
  39. package/examples/jsm/effects/OutlineEffect.js +2 -0
  40. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -0
  41. package/examples/jsm/effects/StereoEffect.js +2 -0
  42. package/examples/jsm/environments/DebugEnvironment.js +1 -0
  43. package/examples/jsm/environments/RoomEnvironment.js +49 -35
  44. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  45. package/examples/jsm/exporters/EXRExporter.js +2 -0
  46. package/examples/jsm/exporters/GLTFExporter.js +7 -4
  47. package/examples/jsm/exporters/KTX2Exporter.js +2 -0
  48. package/examples/jsm/exporters/OBJExporter.js +3 -1
  49. package/examples/jsm/exporters/PLYExporter.js +4 -2
  50. package/examples/jsm/exporters/STLExporter.js +2 -0
  51. package/examples/jsm/exporters/USDZExporter.js +12 -10
  52. package/examples/jsm/geometries/BoxLineGeometry.js +1 -0
  53. package/examples/jsm/geometries/ConvexGeometry.js +1 -0
  54. package/examples/jsm/geometries/DecalGeometry.js +1 -0
  55. package/examples/jsm/geometries/ParametricFunctions.js +4 -1
  56. package/examples/jsm/geometries/ParametricGeometry.js +1 -0
  57. package/examples/jsm/geometries/RoundedBoxGeometry.js +1 -0
  58. package/examples/jsm/geometries/TeapotGeometry.js +1 -0
  59. package/examples/jsm/geometries/TextGeometry.js +1 -0
  60. package/examples/jsm/helpers/LightProbeHelper.js +1 -0
  61. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -0
  62. package/examples/jsm/helpers/OctreeHelper.js +1 -0
  63. package/examples/jsm/helpers/PositionalAudioHelper.js +1 -0
  64. package/examples/jsm/helpers/RapierHelper.js +59 -0
  65. package/examples/jsm/helpers/RectAreaLightHelper.js +1 -0
  66. package/examples/jsm/helpers/TextureHelper.js +1 -0
  67. package/examples/jsm/helpers/TextureHelperGPU.js +5 -4
  68. package/examples/jsm/helpers/VertexNormalsHelper.js +1 -0
  69. package/examples/jsm/helpers/VertexTangentsHelper.js +1 -0
  70. package/examples/jsm/helpers/ViewHelper.js +1 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +7 -0
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -0
  73. package/examples/jsm/interactive/SelectionBox.js +2 -0
  74. package/examples/jsm/interactive/SelectionHelper.js +2 -0
  75. package/examples/jsm/lighting/TiledLighting.js +1 -0
  76. package/examples/jsm/lights/LightProbeGenerator.js +1 -0
  77. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -0
  78. package/examples/jsm/lights/RectAreaLightUniformsLib.js +1 -0
  79. package/examples/jsm/lines/Line2.js +1 -0
  80. package/examples/jsm/lines/LineGeometry.js +1 -0
  81. package/examples/jsm/lines/LineMaterial.js +4 -4
  82. package/examples/jsm/lines/LineSegments2.js +1 -0
  83. package/examples/jsm/lines/LineSegmentsGeometry.js +1 -0
  84. package/examples/jsm/lines/Wireframe.js +1 -0
  85. package/examples/jsm/lines/WireframeGeometry2.js +1 -0
  86. package/examples/jsm/lines/webgpu/Line2.js +1 -0
  87. package/examples/jsm/lines/webgpu/LineSegments2.js +3 -1
  88. package/examples/jsm/lines/webgpu/Wireframe.js +1 -0
  89. package/examples/jsm/loaders/3DMLoader.js +1 -0
  90. package/examples/jsm/loaders/3MFLoader.js +1 -0
  91. package/examples/jsm/loaders/AMFLoader.js +1 -0
  92. package/examples/jsm/loaders/BVHLoader.js +1 -0
  93. package/examples/jsm/loaders/ColladaLoader.js +5 -4
  94. package/examples/jsm/loaders/DDSLoader.js +1 -0
  95. package/examples/jsm/loaders/DRACOLoader.js +2 -1
  96. package/examples/jsm/loaders/EXRLoader.js +1 -0
  97. package/examples/jsm/loaders/FBXLoader.js +24 -22
  98. package/examples/jsm/loaders/FontLoader.js +1 -0
  99. package/examples/jsm/loaders/GCodeLoader.js +1 -0
  100. package/examples/jsm/loaders/GLTFLoader.js +10 -82
  101. package/examples/jsm/loaders/HDRCubeTextureLoader.js +1 -0
  102. package/examples/jsm/loaders/IESLoader.js +1 -0
  103. package/examples/jsm/loaders/KMZLoader.js +1 -0
  104. package/examples/jsm/loaders/KTX2Loader.js +67 -26
  105. package/examples/jsm/loaders/KTXLoader.js +1 -0
  106. package/examples/jsm/loaders/LDrawLoader.js +55 -3
  107. package/examples/jsm/loaders/LUT3dlLoader.js +1 -0
  108. package/examples/jsm/loaders/LUTCubeLoader.js +1 -0
  109. package/examples/jsm/loaders/LUTImageLoader.js +1 -0
  110. package/examples/jsm/loaders/LWOLoader.js +1 -13
  111. package/examples/jsm/loaders/LottieLoader.js +15 -0
  112. package/examples/jsm/loaders/MD2Loader.js +1 -0
  113. package/examples/jsm/loaders/MDDLoader.js +1 -0
  114. package/examples/jsm/loaders/MTLLoader.js +4 -3
  115. package/examples/jsm/loaders/MaterialXLoader.js +1 -0
  116. package/examples/jsm/loaders/NRRDLoader.js +1 -0
  117. package/examples/jsm/loaders/OBJLoader.js +1 -0
  118. package/examples/jsm/loaders/PCDLoader.js +122 -19
  119. package/examples/jsm/loaders/PDBLoader.js +1 -0
  120. package/examples/jsm/loaders/PLYLoader.js +1 -0
  121. package/examples/jsm/loaders/PVRLoader.js +1 -0
  122. package/examples/jsm/loaders/RGBELoader.js +1 -0
  123. package/examples/jsm/loaders/RGBMLoader.js +1 -0
  124. package/examples/jsm/loaders/STLLoader.js +1 -0
  125. package/examples/jsm/loaders/SVGLoader.js +1 -0
  126. package/examples/jsm/loaders/TDSLoader.js +1 -0
  127. package/examples/jsm/loaders/TGALoader.js +1 -0
  128. package/examples/jsm/loaders/TIFFLoader.js +1 -0
  129. package/examples/jsm/loaders/TTFLoader.js +1 -0
  130. package/examples/jsm/loaders/USDZLoader.js +1 -0
  131. package/examples/jsm/loaders/UltraHDRLoader.js +1 -0
  132. package/examples/jsm/loaders/VOXLoader.js +1 -0
  133. package/examples/jsm/loaders/VRMLLoader.js +3 -2
  134. package/examples/jsm/loaders/VTKLoader.js +1 -0
  135. package/examples/jsm/loaders/XYZLoader.js +1 -0
  136. package/examples/jsm/loaders/lwo/IFFParser.js +74 -74
  137. package/examples/jsm/materials/LDrawConditionalLineMaterial.js +1 -0
  138. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  139. package/examples/jsm/materials/MeshPostProcessingMaterial.js +1 -0
  140. package/examples/jsm/math/Capsule.js +2 -0
  141. package/examples/jsm/math/ColorConverter.js +1 -0
  142. package/examples/jsm/math/ConvexHull.js +2 -0
  143. package/examples/jsm/math/ImprovedNoise.js +19 -14
  144. package/examples/jsm/math/Lut.js +2 -0
  145. package/examples/jsm/math/MeshSurfaceSampler.js +2 -0
  146. package/examples/jsm/math/OBB.js +2 -0
  147. package/examples/jsm/math/Octree.js +20 -1
  148. package/examples/jsm/math/SimplexNoise.js +2 -0
  149. package/examples/jsm/misc/ConvexObjectBreaker.js +3 -1
  150. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  151. package/examples/jsm/misc/Gyroscope.js +1 -0
  152. package/examples/jsm/misc/MD2Character.js +2 -0
  153. package/examples/jsm/misc/MD2CharacterComplex.js +5 -3
  154. package/examples/jsm/misc/MorphAnimMesh.js +1 -0
  155. package/examples/jsm/misc/MorphBlendMesh.js +1 -0
  156. package/examples/jsm/misc/ProgressiveLightMap.js +2 -0
  157. package/examples/jsm/misc/ProgressiveLightMapGPU.js +2 -0
  158. package/examples/jsm/misc/RollerCoaster.js +5 -0
  159. package/examples/jsm/misc/Timer.js +2 -0
  160. package/examples/jsm/misc/TubePainter.js +1 -0
  161. package/examples/jsm/misc/Volume.js +2 -0
  162. package/examples/jsm/misc/VolumeSlice.js +1 -0
  163. package/examples/jsm/modifiers/CurveModifier.js +3 -0
  164. package/examples/jsm/modifiers/CurveModifierGPU.js +2 -0
  165. package/examples/jsm/modifiers/EdgeSplitModifier.js +2 -0
  166. package/examples/jsm/modifiers/SimplifyModifier.js +2 -0
  167. package/examples/jsm/modifiers/TessellateModifier.js +2 -0
  168. package/examples/jsm/objects/GroundedSkybox.js +1 -0
  169. package/examples/jsm/objects/Lensflare.js +3 -0
  170. package/examples/jsm/objects/LensflareMesh.js +1 -0
  171. package/examples/jsm/objects/MarchingCubes.js +2 -0
  172. package/examples/jsm/objects/Reflector.js +1 -0
  173. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  174. package/examples/jsm/objects/Refractor.js +1 -0
  175. package/examples/jsm/objects/ShadowMesh.js +1 -0
  176. package/examples/jsm/objects/Sky.js +2 -1
  177. package/examples/jsm/objects/SkyMesh.js +20 -17
  178. package/examples/jsm/objects/Water.js +1 -0
  179. package/examples/jsm/objects/Water2.js +1 -0
  180. package/examples/jsm/objects/Water2Mesh.js +3 -1
  181. package/examples/jsm/objects/WaterMesh.js +2 -1
  182. package/examples/jsm/physics/AmmoPhysics.js +1 -0
  183. package/examples/jsm/physics/JoltPhysics.js +1 -0
  184. package/examples/jsm/physics/RapierPhysics.js +58 -1
  185. package/examples/jsm/postprocessing/AfterimagePass.js +20 -2
  186. package/examples/jsm/postprocessing/BloomPass.js +2 -1
  187. package/examples/jsm/postprocessing/BokehPass.js +2 -1
  188. package/examples/jsm/postprocessing/ClearPass.js +1 -0
  189. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -0
  190. package/examples/jsm/postprocessing/DotScreenPass.js +1 -0
  191. package/examples/jsm/postprocessing/EffectComposer.js +5 -6
  192. package/examples/jsm/postprocessing/FXAAPass.js +40 -0
  193. package/examples/jsm/postprocessing/FilmPass.js +1 -0
  194. package/examples/jsm/postprocessing/GTAOPass.js +4 -3
  195. package/examples/jsm/postprocessing/GlitchPass.js +2 -1
  196. package/examples/jsm/postprocessing/HalftonePass.js +2 -1
  197. package/examples/jsm/postprocessing/LUTPass.js +1 -0
  198. package/examples/jsm/postprocessing/MaskPass.js +1 -0
  199. package/examples/jsm/postprocessing/OutlinePass.js +5 -2
  200. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  201. package/examples/jsm/postprocessing/Pass.js +3 -1
  202. package/examples/jsm/postprocessing/RenderPass.js +1 -0
  203. package/examples/jsm/postprocessing/RenderPixelatedPass.js +2 -1
  204. package/examples/jsm/postprocessing/RenderTransitionPass.js +4 -3
  205. package/examples/jsm/postprocessing/SAOPass.js +3 -2
  206. package/examples/jsm/postprocessing/SMAAPass.js +3 -2
  207. package/examples/jsm/postprocessing/SSAARenderPass.js +2 -1
  208. package/examples/jsm/postprocessing/SSAOPass.js +2 -1
  209. package/examples/jsm/postprocessing/SSRPass.js +4 -3
  210. package/examples/jsm/postprocessing/SavePass.js +2 -1
  211. package/examples/jsm/postprocessing/ShaderPass.js +1 -0
  212. package/examples/jsm/postprocessing/TAARenderPass.js +1 -0
  213. package/examples/jsm/postprocessing/TexturePass.js +1 -0
  214. package/examples/jsm/postprocessing/UnrealBloomPass.js +2 -1
  215. package/examples/jsm/renderers/CSS2DRenderer.js +3 -0
  216. package/examples/jsm/renderers/CSS3DRenderer.js +4 -0
  217. package/examples/jsm/renderers/Projector.js +2 -0
  218. package/examples/jsm/renderers/SVGRenderer.js +3 -0
  219. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +4 -1
  220. package/examples/jsm/shaders/AfterimageShader.js +4 -1
  221. package/examples/jsm/shaders/BasicShader.js +4 -1
  222. package/examples/jsm/shaders/BleachBypassShader.js +4 -1
  223. package/examples/jsm/shaders/BlendShader.js +4 -1
  224. package/examples/jsm/shaders/BokehShader.js +4 -1
  225. package/examples/jsm/shaders/BokehShader2.js +4 -1
  226. package/examples/jsm/shaders/BrightnessContrastShader.js +4 -1
  227. package/examples/jsm/shaders/ColorCorrectionShader.js +4 -1
  228. package/examples/jsm/shaders/ColorifyShader.js +4 -1
  229. package/examples/jsm/shaders/ConvolutionShader.js +4 -1
  230. package/examples/jsm/shaders/CopyShader.js +4 -1
  231. package/examples/jsm/shaders/DOFMipMapShader.js +4 -1
  232. package/examples/jsm/shaders/DepthLimitedBlurShader.js +4 -1
  233. package/examples/jsm/shaders/DigitalGlitch.js +4 -1
  234. package/examples/jsm/shaders/DotScreenShader.js +4 -1
  235. package/examples/jsm/shaders/ExposureShader.js +4 -1
  236. package/examples/jsm/shaders/FXAAShader.js +4 -1
  237. package/examples/jsm/shaders/FilmShader.js +4 -1
  238. package/examples/jsm/shaders/FocusShader.js +4 -1
  239. package/examples/jsm/shaders/FreiChenShader.js +4 -1
  240. package/examples/jsm/shaders/GTAOShader.js +4 -1
  241. package/examples/jsm/shaders/GammaCorrectionShader.js +4 -1
  242. package/examples/jsm/shaders/GodRaysShader.js +4 -1
  243. package/examples/jsm/shaders/HalftoneShader.js +4 -1
  244. package/examples/jsm/shaders/HorizontalBlurShader.js +4 -1
  245. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +4 -1
  246. package/examples/jsm/shaders/HueSaturationShader.js +4 -1
  247. package/examples/jsm/shaders/KaleidoShader.js +4 -1
  248. package/examples/jsm/shaders/LuminosityHighPassShader.js +4 -1
  249. package/examples/jsm/shaders/LuminosityShader.js +4 -1
  250. package/examples/jsm/shaders/MirrorShader.js +4 -1
  251. package/examples/jsm/shaders/NormalMapShader.js +4 -1
  252. package/examples/jsm/shaders/OutputShader.js +4 -1
  253. package/examples/jsm/shaders/PoissonDenoiseShader.js +4 -1
  254. package/examples/jsm/shaders/RGBShiftShader.js +4 -1
  255. package/examples/jsm/shaders/SAOShader.js +4 -1
  256. package/examples/jsm/shaders/SMAAShader.js +1 -0
  257. package/examples/jsm/shaders/SSAOShader.js +4 -1
  258. package/examples/jsm/shaders/SSRShader.js +1 -0
  259. package/examples/jsm/shaders/SepiaShader.js +4 -1
  260. package/examples/jsm/shaders/SobelOperatorShader.js +4 -1
  261. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +4 -1
  262. package/examples/jsm/shaders/TechnicolorShader.js +4 -1
  263. package/examples/jsm/shaders/ToonShader.js +2 -1
  264. package/examples/jsm/shaders/TriangleBlurShader.js +4 -1
  265. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +4 -1
  266. package/examples/jsm/shaders/VelocityShader.js +4 -1
  267. package/examples/jsm/shaders/VerticalBlurShader.js +4 -1
  268. package/examples/jsm/shaders/VerticalTiltShiftShader.js +4 -1
  269. package/examples/jsm/shaders/VignetteShader.js +4 -1
  270. package/examples/jsm/shaders/VolumeShader.js +5 -2
  271. package/examples/jsm/shaders/WaterRefractionShader.js +4 -1
  272. package/examples/jsm/textures/FlakesTexture.js +2 -0
  273. package/examples/jsm/transpiler/GLSLDecoder.js +1 -2
  274. package/examples/jsm/transpiler/TSLEncoder.js +52 -8
  275. package/examples/jsm/transpiler/Transpiler.js +2 -0
  276. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  277. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  278. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  279. package/examples/jsm/tsl/display/BloomNode.js +1 -0
  280. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  281. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  282. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  283. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  284. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  285. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  286. package/examples/jsm/tsl/display/GaussianBlurNode.js +2 -27
  287. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  288. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  289. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  290. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  291. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  292. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  293. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  294. package/examples/jsm/tsl/display/SSAAPassNode.js +3 -2
  295. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  296. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  297. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  298. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  299. package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
  300. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  301. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  302. package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
  303. package/examples/jsm/tsl/math/Bayer.js +4 -1
  304. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  305. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  306. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  307. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  308. package/examples/jsm/utils/CameraUtils.js +4 -1
  309. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  310. package/examples/jsm/utils/GeometryUtils.js +4 -1
  311. package/examples/jsm/utils/LDrawUtils.js +2 -0
  312. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  313. package/examples/jsm/utils/SceneUtils.js +4 -1
  314. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  315. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  316. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  317. package/examples/jsm/utils/SortUtils.js +4 -1
  318. package/examples/jsm/utils/UVsDebug.js +4 -1
  319. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  320. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  321. package/examples/jsm/utils/WorkerPool.js +2 -0
  322. package/examples/jsm/webxr/ARButton.js +1 -0
  323. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  324. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  325. package/examples/jsm/webxr/Text2D.js +4 -1
  326. package/examples/jsm/webxr/VRButton.js +1 -0
  327. package/examples/jsm/webxr/XRButton.js +1 -0
  328. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  329. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  330. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  331. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  332. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  333. package/examples/jsm/webxr/XRPlanes.js +1 -0
  334. package/package.json +6 -4
  335. package/src/Three.Core.js +1 -1
  336. package/src/Three.TSL.js +13 -5
  337. package/src/Three.WebGPU.Nodes.js +1 -0
  338. package/src/Three.WebGPU.js +1 -0
  339. package/src/audio/AudioListener.js +13 -10
  340. package/src/cameras/ArrayCamera.js +9 -1
  341. package/src/constants.js +47 -20
  342. package/src/core/BufferAttribute.js +1 -1
  343. package/src/core/BufferGeometry.js +2 -5
  344. package/src/core/Object3D.js +22 -21
  345. package/src/core/RenderTarget.js +65 -21
  346. package/src/core/RenderTarget3D.js +1 -0
  347. package/src/extras/TextureUtils.js +1 -5
  348. package/src/extras/core/Curve.js +1 -1
  349. package/src/geometries/CapsuleGeometry.js +167 -17
  350. package/src/geometries/ExtrudeGeometry.js +39 -29
  351. package/src/helpers/ArrowHelper.js +2 -2
  352. package/src/helpers/SkeletonHelper.js +1 -1
  353. package/src/lights/LightShadow.js +14 -0
  354. package/src/lights/SpotLightShadow.js +9 -1
  355. package/src/lights/webgpu/ProjectorLight.js +46 -0
  356. package/src/loaders/BufferGeometryLoader.js +1 -10
  357. package/src/loaders/ImageBitmapLoader.js +21 -5
  358. package/src/loaders/ObjectLoader.js +44 -16
  359. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  360. package/src/materials/Material.js +1 -7
  361. package/src/materials/nodes/NodeMaterial.js +81 -18
  362. package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
  363. package/src/math/Box3.js +28 -0
  364. package/src/math/Color.js +7 -7
  365. package/src/math/ColorManagement.js +22 -3
  366. package/src/math/FrustumArray.js +253 -0
  367. package/src/math/Ray.js +2 -0
  368. package/src/math/Sphere.js +28 -0
  369. package/src/nodes/Nodes.js +1 -0
  370. package/src/nodes/TSL.js +1 -0
  371. package/src/nodes/accessors/Bitangent.js +31 -9
  372. package/src/nodes/accessors/Camera.js +31 -4
  373. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  374. package/src/nodes/accessors/InstanceNode.js +5 -4
  375. package/src/nodes/accessors/Lights.js +2 -2
  376. package/src/nodes/accessors/MaterialNode.js +4 -0
  377. package/src/nodes/accessors/ModelNode.js +1 -1
  378. package/src/nodes/accessors/Normal.js +26 -6
  379. package/src/nodes/accessors/Object3DNode.js +6 -7
  380. package/src/nodes/accessors/Position.js +14 -4
  381. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  382. package/src/nodes/accessors/ReferenceNode.js +1 -1
  383. package/src/nodes/accessors/SkinningNode.js +3 -2
  384. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  385. package/src/nodes/accessors/StorageTextureNode.js +14 -3
  386. package/src/nodes/accessors/TextureNode.js +59 -8
  387. package/src/nodes/accessors/VelocityNode.js +1 -0
  388. package/src/nodes/accessors/VertexColorNode.js +4 -4
  389. package/src/nodes/code/CodeNode.js +8 -11
  390. package/src/nodes/core/AssignNode.js +27 -5
  391. package/src/nodes/core/AttributeNode.js +2 -2
  392. package/src/nodes/core/CacheNode.js +14 -0
  393. package/src/nodes/core/ContextNode.js +7 -3
  394. package/src/nodes/core/Node.js +68 -19
  395. package/src/nodes/core/NodeBuilder.js +100 -12
  396. package/src/nodes/core/NodeUtils.js +42 -0
  397. package/src/nodes/core/NodeVarying.js +19 -1
  398. package/src/nodes/core/PropertyNode.js +8 -12
  399. package/src/nodes/core/StackNode.js +127 -2
  400. package/src/nodes/core/StructTypeNode.js +26 -4
  401. package/src/nodes/core/VarNode.js +11 -2
  402. package/src/nodes/core/VaryingNode.js +40 -21
  403. package/src/nodes/display/BlendModes.js +42 -1
  404. package/src/nodes/display/ColorSpaceNode.js +4 -27
  405. package/src/nodes/display/PassNode.js +8 -11
  406. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  407. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  408. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  409. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  410. package/src/nodes/gpgpu/ComputeNode.js +1 -1
  411. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  412. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  413. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  414. package/src/nodes/lighting/LightsNode.js +25 -7
  415. package/src/nodes/lighting/ProjectorLightNode.js +78 -0
  416. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  417. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  418. package/src/nodes/lighting/ShadowNode.js +172 -240
  419. package/src/nodes/lighting/SpotLightNode.js +44 -7
  420. package/src/nodes/materialx/lib/mx_noise.js +1 -1
  421. package/src/nodes/math/MathNode.js +56 -20
  422. package/src/nodes/math/OperatorNode.js +109 -82
  423. package/src/nodes/shapes/Shapes.js +5 -4
  424. package/src/nodes/tsl/TSLCore.js +140 -49
  425. package/src/nodes/utils/DebugNode.js +15 -3
  426. package/src/nodes/utils/Discard.js +2 -2
  427. package/src/nodes/utils/LoopNode.js +64 -17
  428. package/src/nodes/utils/ReflectorNode.js +67 -4
  429. package/src/objects/BatchedMesh.js +16 -4
  430. package/src/objects/Mesh.js +9 -0
  431. package/src/objects/Skeleton.js +1 -1
  432. package/src/objects/Sprite.js +9 -0
  433. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  434. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  435. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  436. package/src/renderers/WebGLRenderer.js +21 -10
  437. package/src/renderers/common/Animation.js +2 -2
  438. package/src/renderers/common/Background.js +11 -0
  439. package/src/renderers/common/RenderList.js +0 -4
  440. package/src/renderers/common/RenderObject.js +12 -1
  441. package/src/renderers/common/Renderer.js +116 -8
  442. package/src/renderers/common/Textures.js +15 -21
  443. package/src/renderers/common/TimestampQueryPool.js +1 -0
  444. package/src/renderers/common/Uniform.js +1 -1
  445. package/src/renderers/common/UniformsGroup.js +14 -18
  446. package/src/renderers/common/XRManager.js +154 -25
  447. package/src/renderers/common/extras/PMREMGenerator.js +29 -22
  448. package/src/renderers/common/nodes/Nodes.js +13 -3
  449. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  450. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  451. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  452. package/src/renderers/webgl/WebGLTextures.js +143 -4
  453. package/src/renderers/webgl/WebGLUtils.js +1 -3
  454. package/src/renderers/webgl-fallback/WebGLBackend.js +170 -34
  455. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +75 -7
  456. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  457. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +42 -29
  458. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  459. package/src/renderers/webgpu/WebGPUBackend.js +442 -127
  460. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  461. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  462. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  463. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +75 -27
  464. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  465. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +3 -1
  466. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +18 -5
  467. package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
  468. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +34 -4
  469. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +44 -49
  470. package/src/renderers/webxr/WebXRController.js +1 -1
  471. package/src/renderers/webxr/WebXRManager.js +2 -1
  472. package/src/textures/DepthTexture.js +6 -10
  473. package/src/textures/Source.js +22 -0
  474. package/src/textures/Texture.js +118 -1
  475. package/src/textures/VideoTexture.js +1 -1
  476. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  477. package/src/core/RenderTargetArray.js +0 -40
@@ -18,6 +18,7 @@ const _end = new Vector3();
18
18
  * import the class from `lines/Wireframe.js`.
19
19
  *
20
20
  * @augments Mesh
21
+ * @three_import import { Wireframe } from 'three/addons/lines/webgpu/Wireframe.js';
21
22
  */
22
23
  class Wireframe extends Mesh {
23
24
 
@@ -48,6 +48,7 @@ const _taskCache = new WeakMap();
48
48
  * ```
49
49
  *
50
50
  * @augments Loader
51
+ * @three_import import { Rhino3dmLoader } from 'three/addons/loaders/3DMLoader.js';
51
52
  */
52
53
  class Rhino3dmLoader extends Loader {
53
54
 
@@ -48,6 +48,7 @@ const COLOR_SPACE_3MF = SRGBColorSpace;
48
48
  * ```
49
49
  *
50
50
  * @augments Loader
51
+ * @three_import import { ThreeMFLoader } from 'three/addons/loaders/3MFLoader.js';
51
52
  */
52
53
  class ThreeMFLoader extends Loader {
53
54
 
@@ -24,6 +24,7 @@ import * as fflate from '../libs/fflate.module.js';
24
24
  * ```
25
25
  *
26
26
  * @augments Loader
27
+ * @three_import import { AMFLoader } from 'three/addons/loaders/AMFLoader.js';
27
28
  */
28
29
  class AMFLoader extends Loader {
29
30
 
@@ -31,6 +31,7 @@ import {
31
31
  * ```
32
32
  *
33
33
  * @augments Loader
34
+ * @three_import import { BVHLoader } from 'three/addons/loaders/BVHLoader.js';
34
35
  */
35
36
  class BVHLoader extends Loader {
36
37
 
@@ -58,6 +58,7 @@ import { TGALoader } from '../loaders/TGALoader.js';
58
58
  * ```
59
59
  *
60
60
  * @augments Loader
61
+ * @three_import import { ColladaLoader } from 'three/addons/loaders/ColladaLoader.js';
61
62
  */
62
63
  class ColladaLoader extends Loader {
63
64
 
@@ -1717,9 +1718,9 @@ class ColladaLoader extends Loader {
1717
1718
 
1718
1719
  }
1719
1720
 
1720
- ColorManagement.toWorkingColorSpace( material.color, SRGBColorSpace );
1721
- if ( material.specular ) ColorManagement.toWorkingColorSpace( material.specular, SRGBColorSpace );
1722
- if ( material.emissive ) ColorManagement.toWorkingColorSpace( material.emissive, SRGBColorSpace );
1721
+ ColorManagement.colorSpaceToWorking( material.color, SRGBColorSpace );
1722
+ if ( material.specular ) ColorManagement.colorSpaceToWorking( material.specular, SRGBColorSpace );
1723
+ if ( material.emissive ) ColorManagement.colorSpaceToWorking( material.emissive, SRGBColorSpace );
1723
1724
 
1724
1725
  //
1725
1726
 
@@ -2056,7 +2057,7 @@ class ColladaLoader extends Loader {
2056
2057
  case 'color':
2057
2058
  const array = parseFloats( child.textContent );
2058
2059
  data.color = new Color().fromArray( array );
2059
- ColorManagement.toWorkingColorSpace( data.color, SRGBColorSpace );
2060
+ ColorManagement.colorSpaceToWorking( data.color, SRGBColorSpace );
2060
2061
  break;
2061
2062
 
2062
2063
  case 'falloff_angle':
@@ -20,6 +20,7 @@ import {
20
20
  * ```
21
21
  *
22
22
  * @augments CompressedTextureLoader
23
+ * @three_import import { DDSLoader } from 'three/addons/loaders/DDSLoader.js';
23
24
  */
24
25
  class DDSLoader extends CompressedTextureLoader {
25
26
 
@@ -41,6 +41,7 @@ const _taskCache = new WeakMap();
41
41
  * ```
42
42
  *
43
43
  * @augments Loader
44
+ * @three_import import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
44
45
  */
45
46
  class DRACOLoader extends Loader {
46
47
 
@@ -309,7 +310,7 @@ class DRACOLoader extends Loader {
309
310
  for ( let i = 0, il = attribute.count; i < il; i ++ ) {
310
311
 
311
312
  _color.fromBufferAttribute( attribute, i );
312
- ColorManagement.toWorkingColorSpace( _color, SRGBColorSpace );
313
+ ColorManagement.colorSpaceToWorking( _color, SRGBColorSpace );
313
314
  attribute.setXYZ( i, _color.r, _color.g, _color.b );
314
315
 
315
316
  }
@@ -92,6 +92,7 @@ import * as fflate from '../libs/fflate.module.js';
92
92
  * ```
93
93
  *
94
94
  * @augments DataTextureLoader
95
+ * @three_import import { EXRLoader } from 'three/addons/loaders/EXRLoader.js';
95
96
  */
96
97
  class EXRLoader extends DataTextureLoader {
97
98
 
@@ -73,6 +73,7 @@ let sceneGraph;
73
73
  * ```
74
74
  *
75
75
  * @augments Loader
76
+ * @three_import import { FBXLoader } from 'three/addons/loaders/FBXLoader.js';
76
77
  */
77
78
  class FBXLoader extends Loader {
78
79
 
@@ -137,7 +138,7 @@ class FBXLoader extends Loader {
137
138
  /**
138
139
  * Parses the given FBX data and returns the resulting group.
139
140
  *
140
- * @param {Array} FBXBuffer - The raw FBX data as an array buffer.
141
+ * @param {ArrayBuffer} FBXBuffer - The raw FBX data as an array buffer.
141
142
  * @param {string} path - The URL base path.
142
143
  * @return {Group} An object representing the parsed asset.
143
144
  */
@@ -347,6 +348,11 @@ class FBXTreeParser {
347
348
  type = 'image/tga';
348
349
  break;
349
350
 
351
+ case 'webp':
352
+
353
+ type = 'image/webp';
354
+ break;
355
+
350
356
  default:
351
357
 
352
358
  console.warn( 'FBXLoader: Image type "' + extension + '" is not supported.' );
@@ -436,21 +442,10 @@ class FBXTreeParser {
436
442
  // load a texture specified as a blob or data URI, or via an external URL using TextureLoader
437
443
  loadTexture( textureNode, images ) {
438
444
 
439
- const nonNativeExtensions = new Set( [ 'tga', 'tif', 'tiff', 'exr', 'dds', 'hdr', 'ktx2' ] );
440
-
441
445
  const extension = textureNode.FileName.split( '.' ).pop().toLowerCase();
442
446
 
443
- const loader = nonNativeExtensions.has( extension ) ? this.manager.getHandler( `.${extension}` ) : this.textureLoader;
444
-
445
- if ( ! loader ) {
446
-
447
- console.warn(
448
- `FBXLoader: ${extension.toUpperCase()} loader not found, creating placeholder texture for`,
449
- textureNode.RelativeFilename
450
- );
451
- return new Texture();
452
-
453
- }
447
+ let loader = this.manager.getHandler( `.${extension}` );
448
+ if ( loader === null) loader = this.textureLoader;
454
449
 
455
450
  const loaderPath = loader.path;
456
451
 
@@ -476,6 +471,13 @@ class FBXTreeParser {
476
471
 
477
472
  }
478
473
 
474
+ if ( fileName === undefined ) {
475
+
476
+ console.warn( 'FBXLoader: Undefined filename, creating placeholder texture.' );
477
+ return new Texture();
478
+
479
+ }
480
+
479
481
  const texture = loader.load( fileName );
480
482
 
481
483
  // revert to initial path
@@ -567,12 +569,12 @@ class FBXTreeParser {
567
569
 
568
570
  if ( materialNode.Diffuse ) {
569
571
 
570
- parameters.color = ColorManagement.toWorkingColorSpace( new Color().fromArray( materialNode.Diffuse.value ), SRGBColorSpace );
572
+ parameters.color = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.Diffuse.value ), SRGBColorSpace );
571
573
 
572
574
  } else if ( materialNode.DiffuseColor && ( materialNode.DiffuseColor.type === 'Color' || materialNode.DiffuseColor.type === 'ColorRGB' ) ) {
573
575
 
574
576
  // The blender exporter exports diffuse here instead of in materialNode.Diffuse
575
- parameters.color = ColorManagement.toWorkingColorSpace( new Color().fromArray( materialNode.DiffuseColor.value ), SRGBColorSpace );
577
+ parameters.color = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.DiffuseColor.value ), SRGBColorSpace );
576
578
 
577
579
  }
578
580
 
@@ -584,12 +586,12 @@ class FBXTreeParser {
584
586
 
585
587
  if ( materialNode.Emissive ) {
586
588
 
587
- parameters.emissive = ColorManagement.toWorkingColorSpace( new Color().fromArray( materialNode.Emissive.value ), SRGBColorSpace );
589
+ parameters.emissive = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.Emissive.value ), SRGBColorSpace );
588
590
 
589
591
  } else if ( materialNode.EmissiveColor && ( materialNode.EmissiveColor.type === 'Color' || materialNode.EmissiveColor.type === 'ColorRGB' ) ) {
590
592
 
591
593
  // The blender exporter exports emissive color here instead of in materialNode.Emissive
592
- parameters.emissive = ColorManagement.toWorkingColorSpace( new Color().fromArray( materialNode.EmissiveColor.value ), SRGBColorSpace );
594
+ parameters.emissive = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.EmissiveColor.value ), SRGBColorSpace );
593
595
 
594
596
  }
595
597
 
@@ -635,12 +637,12 @@ class FBXTreeParser {
635
637
 
636
638
  if ( materialNode.Specular ) {
637
639
 
638
- parameters.specular = ColorManagement.toWorkingColorSpace( new Color().fromArray( materialNode.Specular.value ), SRGBColorSpace );
640
+ parameters.specular = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.Specular.value ), SRGBColorSpace );
639
641
 
640
642
  } else if ( materialNode.SpecularColor && materialNode.SpecularColor.type === 'Color' ) {
641
643
 
642
644
  // The blender exporter exports specular color here instead of in materialNode.Specular
643
- parameters.specular = ColorManagement.toWorkingColorSpace( new Color().fromArray( materialNode.SpecularColor.value ), SRGBColorSpace );
645
+ parameters.specular = ColorManagement.colorSpaceToWorking( new Color().fromArray( materialNode.SpecularColor.value ), SRGBColorSpace );
644
646
 
645
647
  }
646
648
 
@@ -1191,7 +1193,7 @@ class FBXTreeParser {
1191
1193
 
1192
1194
  if ( lightAttribute.Color !== undefined ) {
1193
1195
 
1194
- color = ColorManagement.toWorkingColorSpace( new Color().fromArray( lightAttribute.Color.value ), SRGBColorSpace );
1196
+ color = ColorManagement.colorSpaceToWorking( new Color().fromArray( lightAttribute.Color.value ), SRGBColorSpace );
1195
1197
 
1196
1198
  }
1197
1199
 
@@ -2389,7 +2391,7 @@ class GeometryParser {
2389
2391
  for ( let i = 0, c = new Color(); i < buffer.length; i += 4 ) {
2390
2392
 
2391
2393
  c.fromArray( buffer, i );
2392
- ColorManagement.toWorkingColorSpace( c, SRGBColorSpace );
2394
+ ColorManagement.colorSpaceToWorking( c, SRGBColorSpace );
2393
2395
  c.toArray( buffer, i );
2394
2396
 
2395
2397
  }
@@ -15,6 +15,7 @@ import {
15
15
  * ```
16
16
  *
17
17
  * @augments Loader
18
+ * @three_import import { FontLoader } from 'three/addons/loaders/FontLoader.js';
18
19
  */
19
20
  class FontLoader extends Loader {
20
21
 
@@ -20,6 +20,7 @@ import {
20
20
  * ```
21
21
  *
22
22
  * @augments Loader
23
+ * @three_import import { GCodeLoader } from 'three/addons/loaders/GCodeLoader.js';
23
24
  */
24
25
  class GCodeLoader extends Loader {
25
26
 
@@ -115,6 +115,7 @@ import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
115
115
  * ```
116
116
  *
117
117
  * @augments Loader
118
+ * @three_import import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
118
119
  */
119
120
  class GLTFLoader extends Loader {
120
121
 
@@ -1580,7 +1581,6 @@ class GLTFTextureWebPExtension {
1580
1581
 
1581
1582
  this.parser = parser;
1582
1583
  this.name = EXTENSIONS.EXT_TEXTURE_WEBP;
1583
- this.isSupported = null;
1584
1584
 
1585
1585
  }
1586
1586
 
@@ -1609,46 +1609,7 @@ class GLTFTextureWebPExtension {
1609
1609
 
1610
1610
  }
1611
1611
 
1612
- return this.detectSupport().then( function ( isSupported ) {
1613
-
1614
- if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );
1615
-
1616
- if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {
1617
-
1618
- throw new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );
1619
-
1620
- }
1621
-
1622
- // Fall back to PNG or JPEG.
1623
- return parser.loadTexture( textureIndex );
1624
-
1625
- } );
1626
-
1627
- }
1628
-
1629
- detectSupport() {
1630
-
1631
- if ( ! this.isSupported ) {
1632
-
1633
- this.isSupported = new Promise( function ( resolve ) {
1634
-
1635
- const image = new Image();
1636
-
1637
- // Lossy test image. Support for lossy images doesn't guarantee support for all
1638
- // WebP images, unfortunately.
1639
- image.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';
1640
-
1641
- image.onload = image.onerror = function () {
1642
-
1643
- resolve( image.height === 1 );
1644
-
1645
- };
1646
-
1647
- } );
1648
-
1649
- }
1650
-
1651
- return this.isSupported;
1612
+ return parser.loadTextureImage( textureIndex, extension.source, loader );
1652
1613
 
1653
1614
  }
1654
1615
 
@@ -1667,7 +1628,6 @@ class GLTFTextureAVIFExtension {
1667
1628
 
1668
1629
  this.parser = parser;
1669
1630
  this.name = EXTENSIONS.EXT_TEXTURE_AVIF;
1670
- this.isSupported = null;
1671
1631
 
1672
1632
  }
1673
1633
 
@@ -1696,44 +1656,7 @@ class GLTFTextureAVIFExtension {
1696
1656
 
1697
1657
  }
1698
1658
 
1699
- return this.detectSupport().then( function ( isSupported ) {
1700
-
1701
- if ( isSupported ) return parser.loadTextureImage( textureIndex, extension.source, loader );
1702
-
1703
- if ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {
1704
-
1705
- throw new Error( 'THREE.GLTFLoader: AVIF required by asset but unsupported.' );
1706
-
1707
- }
1708
-
1709
- // Fall back to PNG or JPEG.
1710
- return parser.loadTexture( textureIndex );
1711
-
1712
- } );
1713
-
1714
- }
1715
-
1716
- detectSupport() {
1717
-
1718
- if ( ! this.isSupported ) {
1719
-
1720
- this.isSupported = new Promise( function ( resolve ) {
1721
-
1722
- const image = new Image();
1723
-
1724
- // Lossy test image.
1725
- image.src = 'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=';
1726
- image.onload = image.onerror = function () {
1727
-
1728
- resolve( image.height === 1 );
1729
-
1730
- };
1731
-
1732
- } );
1733
-
1734
- }
1735
-
1736
- return this.isSupported;
1659
+ return parser.loadTextureImage( textureIndex, extension.source, loader );
1737
1660
 
1738
1661
  }
1739
1662
 
@@ -2294,7 +2217,7 @@ class GLTFCubicSplineInterpolant extends Interpolant {
2294
2217
 
2295
2218
  }
2296
2219
 
2297
- const _q = new Quaternion();
2220
+ const _quaternion = new Quaternion();
2298
2221
 
2299
2222
  class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {
2300
2223
 
@@ -2302,7 +2225,7 @@ class GLTFCubicSplineQuaternionInterpolant extends GLTFCubicSplineInterpolant {
2302
2225
 
2303
2226
  const result = super.interpolate_( i1, t0, t, t1 );
2304
2227
 
2305
- _q.fromArray( result ).normalize().toArray( result );
2228
+ _quaternion.fromArray( result ).normalize().toArray( result );
2306
2229
 
2307
2230
  return result;
2308
2231
 
@@ -4528,6 +4451,11 @@ class GLTFParser {
4528
4451
 
4529
4452
  parser.associations.set( node, {} );
4530
4453
 
4454
+ } else if ( nodeDef.mesh !== undefined && parser.meshCache.refs[ nodeDef.mesh ] > 1 ) {
4455
+
4456
+ const mapping = parser.associations.get( node );
4457
+ parser.associations.set( node, { ...mapping } );
4458
+
4531
4459
  }
4532
4460
 
4533
4461
  parser.associations.get( node ).nodes = nodeIndex;
@@ -23,6 +23,7 @@ import { RGBELoader } from '../loaders/RGBELoader.js';
23
23
  * ```
24
24
  *
25
25
  * @augments Loader
26
+ * @three_import import { HDRCubeTextureLoader } from 'three/addons/loaders/HDRCubeTextureLoader.js';
26
27
  */
27
28
  class HDRCubeTextureLoader extends Loader {
28
29
 
@@ -25,6 +25,7 @@ import {
25
25
  * ```
26
26
  *
27
27
  * @augments Loader
28
+ * @three_import import { IESLoader } from 'three/addons/loaders/IESLoader.js';
28
29
  */
29
30
  class IESLoader extends Loader {
30
31
 
@@ -18,6 +18,7 @@ import * as fflate from '../libs/fflate.module.js';
18
18
  * ```
19
19
  *
20
20
  * @augments Loader
21
+ * @three_import import { KMZLoader } from 'three/addons/loaders/KMZLoader.js';
21
22
  */
22
23
  class KMZLoader extends Loader {
23
24
 
@@ -1,60 +1,76 @@
1
1
  import {
2
- CompressedTexture,
3
2
  CompressedArrayTexture,
4
3
  CompressedCubeTexture,
4
+ CompressedTexture,
5
5
  Data3DTexture,
6
6
  DataTexture,
7
7
  FileLoader,
8
8
  FloatType,
9
9
  HalfFloatType,
10
- NoColorSpace,
11
10
  LinearFilter,
12
11
  LinearMipmapLinearFilter,
13
12
  LinearSRGBColorSpace,
14
13
  Loader,
15
- RedFormat,
16
- RGB_BPTC_UNSIGNED_Format,
17
- RGB_ETC1_Format,
18
- RGB_ETC2_Format,
19
- RGB_PVRTC_4BPPV1_Format,
14
+ NoColorSpace,
15
+ RGBAFormat,
20
16
  RGBA_ASTC_4x4_Format,
21
17
  RGBA_ASTC_6x6_Format,
22
18
  RGBA_BPTC_Format,
19
+ RGBA_S3TC_DXT3_Format,
23
20
  RGBA_ETC2_EAC_Format,
24
21
  RGBA_PVRTC_4BPPV1_Format,
25
- RGBA_S3TC_DXT5_Format,
26
22
  RGBA_S3TC_DXT1_Format,
27
- RGBAFormat,
23
+ RGBA_S3TC_DXT5_Format,
24
+ RGB_BPTC_UNSIGNED_Format,
25
+ RGB_ETC1_Format,
26
+ RGB_ETC2_Format,
27
+ RGB_PVRTC_4BPPV1_Format,
28
+ RGB_S3TC_DXT1_Format,
28
29
  RGFormat,
30
+ RedFormat,
29
31
  SRGBColorSpace,
30
- UnsignedByteType,
32
+ UnsignedByteType
31
33
  } from 'three';
32
34
  import { WorkerPool } from '../utils/WorkerPool.js';
33
35
  import {
34
36
  read,
35
37
  KHR_DF_FLAG_ALPHA_PREMULTIPLIED,
38
+ KHR_DF_PRIMARIES_BT709,
39
+ KHR_DF_PRIMARIES_DISPLAYP3,
40
+ KHR_DF_PRIMARIES_UNSPECIFIED,
36
41
  KHR_DF_TRANSFER_SRGB,
37
42
  KHR_SUPERCOMPRESSION_NONE,
38
43
  KHR_SUPERCOMPRESSION_ZSTD,
39
- VK_FORMAT_UNDEFINED,
40
- VK_FORMAT_R16_SFLOAT,
41
- VK_FORMAT_R16G16_SFLOAT,
44
+ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,
45
+ VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
46
+ VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
47
+ VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
48
+ VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
49
+ VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
50
+ VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
51
+ VK_FORMAT_BC1_RGB_SRGB_BLOCK,
52
+ VK_FORMAT_BC1_RGB_UNORM_BLOCK,
53
+ VK_FORMAT_BC3_SRGB_BLOCK,
54
+ VK_FORMAT_BC3_UNORM_BLOCK,
55
+ VK_FORMAT_BC5_SNORM_BLOCK,
56
+ VK_FORMAT_BC5_UNORM_BLOCK,
57
+ VK_FORMAT_BC7_SRGB_BLOCK,
58
+ VK_FORMAT_BC7_UNORM_BLOCK,
59
+ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
60
+ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
42
61
  VK_FORMAT_R16G16B16A16_SFLOAT,
43
- VK_FORMAT_R32_SFLOAT,
44
- VK_FORMAT_R32G32_SFLOAT,
62
+ VK_FORMAT_R16G16_SFLOAT,
63
+ VK_FORMAT_R16_SFLOAT,
45
64
  VK_FORMAT_R32G32B32A32_SFLOAT,
46
- VK_FORMAT_R8_SRGB,
47
- VK_FORMAT_R8_UNORM,
48
- VK_FORMAT_R8G8_SRGB,
49
- VK_FORMAT_R8G8_UNORM,
65
+ VK_FORMAT_R32G32_SFLOAT,
66
+ VK_FORMAT_R32_SFLOAT,
50
67
  VK_FORMAT_R8G8B8A8_SRGB,
51
68
  VK_FORMAT_R8G8B8A8_UNORM,
52
- VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT,
53
- VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
54
- VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
55
- KHR_DF_PRIMARIES_UNSPECIFIED,
56
- KHR_DF_PRIMARIES_BT709,
57
- KHR_DF_PRIMARIES_DISPLAYP3
69
+ VK_FORMAT_R8G8_SRGB,
70
+ VK_FORMAT_R8G8_UNORM,
71
+ VK_FORMAT_R8_SRGB,
72
+ VK_FORMAT_R8_UNORM,
73
+ VK_FORMAT_UNDEFINED
58
74
  } from '../libs/ktx-parse.module.js';
59
75
  import { ZSTDDecoder } from '../libs/zstddec.module.js';
60
76
  import { DisplayP3ColorSpace, LinearDisplayP3ColorSpace } from '../math/ColorSpaces.js';
@@ -90,6 +106,7 @@ let _zstd;
90
106
  * ```
91
107
  *
92
108
  * @augments Loader
109
+ * @three_import import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';
93
110
  */
94
111
  class KTX2Loader extends Loader {
95
112
 
@@ -310,8 +327,10 @@ class KTX2Loader extends Loader {
310
327
 
311
328
  const loader = new FileLoader( this.manager );
312
329
 
313
- loader.setResponseType( 'arraybuffer' );
330
+ loader.setPath( this.path );
331
+ loader.setCrossOrigin( this.crossOrigin );
314
332
  loader.setWithCredentials( this.withCredentials );
333
+ loader.setResponseType( 'arraybuffer' );
315
334
 
316
335
  loader.load( url, ( buffer ) => {
317
336
 
@@ -918,10 +937,29 @@ const FORMAT_MAP = {
918
937
  [ VK_FORMAT_R8_SRGB ]: RedFormat,
919
938
  [ VK_FORMAT_R8_UNORM ]: RedFormat,
920
939
 
940
+ [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: RGB_ETC2_Format,
941
+ [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: RGBA_ETC2_EAC_Format,
942
+
921
943
  [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: RGBA_ASTC_4x4_Format,
944
+ [ VK_FORMAT_ASTC_4x4_SRGB_BLOCK ]: RGBA_ASTC_4x4_Format,
945
+ [ VK_FORMAT_ASTC_4x4_UNORM_BLOCK ]: RGBA_ASTC_4x4_Format,
922
946
  [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: RGBA_ASTC_6x6_Format,
923
947
  [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: RGBA_ASTC_6x6_Format,
924
948
 
949
+ [ VK_FORMAT_BC1_RGBA_UNORM_BLOCK ]: RGBA_S3TC_DXT1_Format,
950
+ [ VK_FORMAT_BC1_RGBA_SRGB_BLOCK ]: RGBA_S3TC_DXT1_Format,
951
+ [ VK_FORMAT_BC1_RGB_UNORM_BLOCK ]: RGB_S3TC_DXT1_Format,
952
+ [ VK_FORMAT_BC1_RGB_SRGB_BLOCK ]: RGB_S3TC_DXT1_Format,
953
+
954
+ [ VK_FORMAT_BC3_SRGB_BLOCK ]: RGBA_S3TC_DXT3_Format,
955
+ [ VK_FORMAT_BC3_UNORM_BLOCK ]: RGBA_S3TC_DXT3_Format,
956
+
957
+ [ VK_FORMAT_BC5_SNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
958
+ [ VK_FORMAT_BC5_UNORM_BLOCK ]: RGBA_S3TC_DXT5_Format,
959
+
960
+ [ VK_FORMAT_BC7_SRGB_BLOCK ]: RGBA_BPTC_Format,
961
+ [ VK_FORMAT_BC7_UNORM_BLOCK ]: RGBA_BPTC_Format,
962
+
925
963
  };
926
964
 
927
965
  const TYPE_MAP = {
@@ -941,6 +979,9 @@ const TYPE_MAP = {
941
979
  [ VK_FORMAT_R8_SRGB ]: UnsignedByteType,
942
980
  [ VK_FORMAT_R8_UNORM ]: UnsignedByteType,
943
981
 
982
+ [ VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK ]: UnsignedByteType,
983
+ [ VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK ]: UnsignedByteType,
984
+
944
985
  [ VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT ]: HalfFloatType,
945
986
  [ VK_FORMAT_ASTC_6x6_SRGB_BLOCK ]: UnsignedByteType,
946
987
  [ VK_FORMAT_ASTC_6x6_UNORM_BLOCK ]: UnsignedByteType,
@@ -17,6 +17,7 @@ import {
17
17
  * ```
18
18
  *
19
19
  * @augments CompressedTextureLoader
20
+ * @three_import import { KTXLoader } from 'three/addons/loaders/KTXLoader.js';
20
21
  */
21
22
  class KTXLoader extends CompressedTextureLoader {
22
23