@plastic-software/three 0.175.13 → 0.178.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 (529) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +7747 -6792
  3. package/build/three.core.js +7371 -6576
  4. package/build/three.core.min.js +1 -1
  5. package/build/three.module.js +190 -30
  6. package/build/three.module.min.js +1 -1
  7. package/build/three.tsl.js +19 -11
  8. package/build/three.tsl.min.js +1 -1
  9. package/build/three.webgpu.js +4989 -2235
  10. package/build/three.webgpu.min.js +1 -1
  11. package/build/three.webgpu.nodes.js +5082 -2469
  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 -27
  17. package/examples/jsm/capabilities/WebGPU.js +1 -0
  18. package/examples/jsm/controls/ArcballControls.js +15 -4
  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 +62 -14
  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 +2 -1
  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 +6 -5
  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 +25 -23
  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 +139 -12
  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 +4 -2
  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/AST.js +381 -30
  274. package/examples/jsm/transpiler/GLSLDecoder.js +226 -87
  275. package/examples/jsm/transpiler/Linker.js +327 -0
  276. package/examples/jsm/transpiler/TSLEncoder.js +234 -85
  277. package/examples/jsm/transpiler/Transpiler.js +19 -1
  278. package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
  279. package/examples/jsm/transpiler/WGSLEncoder.js +788 -0
  280. package/examples/jsm/tsl/display/AfterImageNode.js +2 -3
  281. package/examples/jsm/tsl/display/AnaglyphPassNode.js +1 -0
  282. package/examples/jsm/tsl/display/AnamorphicNode.js +5 -4
  283. package/examples/jsm/tsl/display/BloomNode.js +1 -0
  284. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +206 -0
  285. package/examples/jsm/tsl/display/DenoiseNode.js +33 -33
  286. package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -0
  287. package/examples/jsm/tsl/display/DotScreenNode.js +1 -0
  288. package/examples/jsm/tsl/display/FXAANode.js +3 -2
  289. package/examples/jsm/tsl/display/FilmNode.js +1 -0
  290. package/examples/jsm/tsl/display/GTAONode.js +1 -0
  291. package/examples/jsm/tsl/display/GaussianBlurNode.js +4 -29
  292. package/examples/jsm/tsl/display/LensflareNode.js +1 -0
  293. package/examples/jsm/tsl/display/Lut3DNode.js +1 -0
  294. package/examples/jsm/tsl/display/OutlineNode.js +1 -0
  295. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +1 -0
  296. package/examples/jsm/tsl/display/PixelationPassNode.js +1 -0
  297. package/examples/jsm/tsl/display/RGBShiftNode.js +1 -0
  298. package/examples/jsm/tsl/display/SMAANode.js +9 -8
  299. package/examples/jsm/tsl/display/SSAAPassNode.js +5 -4
  300. package/examples/jsm/tsl/display/SSRNode.js +1 -0
  301. package/examples/jsm/tsl/display/SobelOperatorNode.js +1 -0
  302. package/examples/jsm/tsl/display/StereoCompositePassNode.js +1 -0
  303. package/examples/jsm/tsl/display/StereoPassNode.js +1 -0
  304. package/examples/jsm/tsl/display/TRAAPassNode.js +5 -4
  305. package/examples/jsm/tsl/display/TransitionNode.js +1 -0
  306. package/examples/jsm/tsl/display/hashBlur.js +28 -6
  307. package/examples/jsm/tsl/lighting/TiledLightsNode.js +4 -3
  308. package/examples/jsm/tsl/math/Bayer.js +4 -1
  309. package/examples/jsm/tsl/shadows/TileShadowNode.js +456 -0
  310. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +212 -0
  311. package/examples/jsm/tsl/utils/Raymarching.js +6 -3
  312. package/examples/jsm/utils/BufferGeometryUtils.js +4 -1
  313. package/examples/jsm/utils/CameraUtils.js +4 -1
  314. package/examples/jsm/utils/GeometryCompressionUtils.js +4 -1
  315. package/examples/jsm/utils/GeometryUtils.js +4 -1
  316. package/examples/jsm/utils/LDrawUtils.js +2 -0
  317. package/examples/jsm/utils/SceneOptimizer.js +2 -0
  318. package/examples/jsm/utils/SceneUtils.js +4 -1
  319. package/examples/jsm/utils/ShadowMapViewer.js +2 -0
  320. package/examples/jsm/utils/ShadowMapViewerGPU.js +2 -0
  321. package/examples/jsm/utils/SkeletonUtils.js +4 -1
  322. package/examples/jsm/utils/SortUtils.js +4 -1
  323. package/examples/jsm/utils/UVsDebug.js +4 -1
  324. package/examples/jsm/utils/WebGLTextureUtils.js +4 -1
  325. package/examples/jsm/utils/WebGPUTextureUtils.js +4 -1
  326. package/examples/jsm/utils/WorkerPool.js +2 -0
  327. package/examples/jsm/webxr/ARButton.js +1 -0
  328. package/examples/jsm/webxr/OculusHandModel.js +1 -0
  329. package/examples/jsm/webxr/OculusHandPointerModel.js +1 -0
  330. package/examples/jsm/webxr/Text2D.js +4 -1
  331. package/examples/jsm/webxr/VRButton.js +1 -0
  332. package/examples/jsm/webxr/XRButton.js +1 -0
  333. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -0
  334. package/examples/jsm/webxr/XREstimatedLight.js +1 -0
  335. package/examples/jsm/webxr/XRHandMeshModel.js +2 -0
  336. package/examples/jsm/webxr/XRHandModelFactory.js +2 -0
  337. package/examples/jsm/webxr/XRHandPrimitiveModel.js +2 -0
  338. package/examples/jsm/webxr/XRPlanes.js +1 -0
  339. package/package.json +6 -4
  340. package/src/Three.Core.js +1 -1
  341. package/src/Three.TSL.js +18 -10
  342. package/src/Three.WebGPU.Nodes.js +1 -0
  343. package/src/Three.WebGPU.js +3 -0
  344. package/src/audio/AudioListener.js +13 -10
  345. package/src/cameras/ArrayCamera.js +9 -1
  346. package/src/constants.js +47 -20
  347. package/src/core/BufferAttribute.js +3 -3
  348. package/src/core/BufferGeometry.js +2 -5
  349. package/src/core/Clock.js +2 -8
  350. package/src/core/GLBufferAttribute.js +13 -1
  351. package/src/core/Object3D.js +23 -22
  352. package/src/core/RenderTarget.js +65 -21
  353. package/src/core/RenderTarget3D.js +1 -0
  354. package/src/extras/TextureUtils.js +1 -5
  355. package/src/extras/core/Curve.js +1 -1
  356. package/src/extras/core/Path.js +22 -22
  357. package/src/geometries/CapsuleGeometry.js +167 -17
  358. package/src/geometries/ExtrudeGeometry.js +39 -29
  359. package/src/helpers/ArrowHelper.js +2 -2
  360. package/src/helpers/SkeletonHelper.js +1 -1
  361. package/src/lights/LightShadow.js +14 -0
  362. package/src/lights/SpotLightShadow.js +9 -1
  363. package/src/lights/webgpu/ProjectorLight.js +46 -0
  364. package/src/loaders/BufferGeometryLoader.js +1 -10
  365. package/src/loaders/FileLoader.js +2 -2
  366. package/src/loaders/ImageBitmapLoader.js +25 -9
  367. package/src/loaders/ImageLoader.js +55 -8
  368. package/src/loaders/ObjectLoader.js +44 -16
  369. package/src/loaders/nodes/NodeObjectLoader.js +2 -2
  370. package/src/materials/Material.js +1 -7
  371. package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
  372. package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
  373. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  374. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
  375. package/src/materials/nodes/MeshSSSNodeMaterial.js +2 -2
  376. package/src/materials/nodes/NodeMaterial.js +105 -19
  377. package/src/materials/nodes/manager/NodeMaterialObserver.js +20 -2
  378. package/src/math/Box3.js +28 -0
  379. package/src/math/Color.js +7 -7
  380. package/src/math/ColorManagement.js +22 -3
  381. package/src/math/Frustum.js +6 -1
  382. package/src/math/FrustumArray.js +253 -0
  383. package/src/math/Quaternion.js +1 -1
  384. package/src/math/Ray.js +2 -0
  385. package/src/math/Sphere.js +28 -0
  386. package/src/nodes/Nodes.js +2 -3
  387. package/src/nodes/TSL.js +5 -3
  388. package/src/nodes/accessors/AccessorsUtils.js +7 -8
  389. package/src/nodes/accessors/Bitangent.js +54 -26
  390. package/src/nodes/accessors/Camera.js +31 -4
  391. package/src/nodes/accessors/CubeTextureNode.js +50 -2
  392. package/src/nodes/accessors/InstanceNode.js +5 -4
  393. package/src/nodes/accessors/Lights.js +2 -2
  394. package/src/nodes/accessors/MaterialNode.js +4 -0
  395. package/src/nodes/accessors/ModelNode.js +1 -1
  396. package/src/nodes/accessors/Normal.js +102 -16
  397. package/src/nodes/accessors/Object3DNode.js +7 -8
  398. package/src/nodes/accessors/Position.js +14 -4
  399. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  400. package/src/nodes/accessors/ReferenceNode.js +1 -1
  401. package/src/nodes/accessors/ReflectVector.js +3 -3
  402. package/src/nodes/accessors/SkinningNode.js +3 -2
  403. package/src/nodes/accessors/StorageBufferNode.js +25 -0
  404. package/src/nodes/accessors/StorageTextureNode.js +14 -3
  405. package/src/nodes/accessors/Tangent.js +25 -17
  406. package/src/nodes/accessors/TangentUtils.js +46 -0
  407. package/src/nodes/accessors/TextureBicubic.js +21 -3
  408. package/src/nodes/accessors/TextureNode.js +59 -8
  409. package/src/nodes/accessors/UniformArrayNode.js +0 -16
  410. package/src/nodes/accessors/VelocityNode.js +1 -0
  411. package/src/nodes/accessors/VertexColorNode.js +4 -4
  412. package/src/nodes/code/CodeNode.js +8 -11
  413. package/src/nodes/core/AssignNode.js +27 -5
  414. package/src/nodes/core/AttributeNode.js +2 -2
  415. package/src/nodes/core/ContextNode.js +7 -3
  416. package/src/nodes/core/Node.js +69 -20
  417. package/src/nodes/core/NodeBuilder.js +248 -29
  418. package/src/nodes/core/NodeUtils.js +42 -0
  419. package/src/nodes/core/NodeVarying.js +19 -1
  420. package/src/nodes/core/PropertyNode.js +8 -12
  421. package/src/nodes/core/StackNode.js +129 -26
  422. package/src/nodes/core/StructTypeNode.js +26 -4
  423. package/src/nodes/core/SubBuildNode.js +89 -0
  424. package/src/nodes/core/VarNode.js +11 -2
  425. package/src/nodes/core/VaryingNode.js +45 -24
  426. package/src/nodes/display/BlendModes.js +42 -1
  427. package/src/nodes/display/ColorSpaceNode.js +4 -27
  428. package/src/nodes/display/FrontFacingNode.js +34 -2
  429. package/src/nodes/display/NormalMapNode.js +19 -50
  430. package/src/nodes/display/PassNode.js +18 -19
  431. package/src/nodes/display/ScreenNode.js +0 -26
  432. package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
  433. package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
  434. package/src/nodes/functions/PhongLightingModel.js +3 -3
  435. package/src/nodes/functions/PhysicalLightingModel.js +14 -14
  436. package/src/nodes/functions/ShadowMaskModel.js +5 -1
  437. package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
  438. package/src/nodes/functions/material/getParallaxCorrectNormal.js +1 -1
  439. package/src/nodes/gpgpu/AtomicFunctionNode.js +28 -10
  440. package/src/nodes/gpgpu/BarrierNode.js +3 -3
  441. package/src/nodes/gpgpu/ComputeNode.js +1 -1
  442. package/src/nodes/lighting/AnalyticLightNode.js +7 -13
  443. package/src/nodes/lighting/EnvironmentNode.js +5 -5
  444. package/src/nodes/lighting/HemisphereLightNode.js +2 -2
  445. package/src/nodes/lighting/IESSpotLightNode.js +2 -1
  446. package/src/nodes/lighting/LightsNode.js +29 -11
  447. package/src/nodes/lighting/ProjectorLightNode.js +78 -0
  448. package/src/nodes/lighting/ShadowBaseNode.js +1 -12
  449. package/src/nodes/lighting/ShadowFilterNode.js +274 -0
  450. package/src/nodes/lighting/ShadowNode.js +174 -242
  451. package/src/nodes/lighting/SpotLightNode.js +44 -7
  452. package/src/nodes/materialx/lib/mx_noise.js +1 -1
  453. package/src/nodes/math/ConditionalNode.js +0 -19
  454. package/src/nodes/math/MathNode.js +68 -21
  455. package/src/nodes/math/OperatorNode.js +108 -98
  456. package/src/nodes/shapes/Shapes.js +5 -4
  457. package/src/nodes/tsl/TSLBase.js +1 -0
  458. package/src/nodes/tsl/TSLCore.js +160 -65
  459. package/src/nodes/utils/DebugNode.js +15 -3
  460. package/src/nodes/utils/Discard.js +2 -2
  461. package/src/nodes/utils/EquirectUV.js +27 -0
  462. package/src/nodes/utils/LoopNode.js +64 -34
  463. package/src/nodes/utils/MatcapUV.js +22 -0
  464. package/src/nodes/utils/RTTNode.js +13 -5
  465. package/src/nodes/utils/ReflectorNode.js +77 -7
  466. package/src/nodes/utils/SampleNode.js +81 -0
  467. package/src/nodes/utils/TriplanarTextures.js +65 -0
  468. package/src/objects/BatchedMesh.js +16 -4
  469. package/src/objects/Mesh.js +9 -0
  470. package/src/objects/Skeleton.js +1 -1
  471. package/src/objects/Sprite.js +9 -0
  472. package/src/renderers/WebGL3DRenderTarget.js +1 -0
  473. package/src/renderers/WebGLArrayRenderTarget.js +1 -0
  474. package/src/renderers/WebGLCubeRenderTarget.js +2 -4
  475. package/src/renderers/WebGLRenderer.js +25 -11
  476. package/src/renderers/common/Animation.js +2 -2
  477. package/src/renderers/common/Background.js +13 -2
  478. package/src/renderers/common/CubeRenderTarget.js +1 -1
  479. package/src/renderers/common/RenderList.js +0 -4
  480. package/src/renderers/common/RenderObject.js +80 -4
  481. package/src/renderers/common/Renderer.js +116 -8
  482. package/src/renderers/common/Storage3DTexture.js +79 -0
  483. package/src/renderers/common/StorageArrayTexture.js +63 -0
  484. package/src/renderers/common/Textures.js +15 -21
  485. package/src/renderers/common/TimestampQueryPool.js +1 -0
  486. package/src/renderers/common/Uniform.js +1 -1
  487. package/src/renderers/common/UniformsGroup.js +14 -18
  488. package/src/renderers/common/XRManager.js +157 -27
  489. package/src/renderers/common/XRRenderTarget.js +21 -4
  490. package/src/renderers/common/extras/PMREMGenerator.js +30 -23
  491. package/src/renderers/common/nodes/Nodes.js +13 -3
  492. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +1 -1
  493. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +1 -1
  494. package/src/renderers/shaders/ShaderLib/background.glsl.js +1 -1
  495. package/src/renderers/webgl/WebGLAttributes.js +4 -0
  496. package/src/renderers/webgl/WebGLPrograms.js +4 -2
  497. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  498. package/src/renderers/webgl/WebGLState.js +4 -4
  499. package/src/renderers/webgl/WebGLTextures.js +144 -4
  500. package/src/renderers/webgl/WebGLUtils.js +1 -3
  501. package/src/renderers/webgl-fallback/WebGLBackend.js +244 -87
  502. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +73 -7
  503. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
  504. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +1 -0
  505. package/src/renderers/webgl-fallback/utils/WebGLState.js +4 -4
  506. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +44 -29
  507. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +22 -21
  508. package/src/renderers/webgpu/WebGPUBackend.js +451 -128
  509. package/src/renderers/webgpu/WebGPURenderer.js +7 -0
  510. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +4 -1
  511. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +4 -1
  512. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +86 -33
  513. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +3 -0
  514. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +9 -1
  515. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +28 -5
  516. package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -2
  517. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +38 -8
  518. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +45 -50
  519. package/src/renderers/webxr/WebXRController.js +1 -1
  520. package/src/renderers/webxr/WebXRManager.js +2 -1
  521. package/src/textures/DepthTexture.js +6 -10
  522. package/src/textures/Source.js +22 -0
  523. package/src/textures/Texture.js +118 -1
  524. package/src/textures/VideoTexture.js +1 -1
  525. package/examples/jsm/effects/PeppersGhostEffect.js +0 -172
  526. package/src/core/RenderTargetArray.js +0 -40
  527. package/src/nodes/utils/EquirectUVNode.js +0 -65
  528. package/src/nodes/utils/MatcapUVNode.js +0 -49
  529. package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
@@ -37,6 +37,8 @@ const _scale = new Vector3();
37
37
  * const selectionBox = new SelectionBox( camera, scene );
38
38
  * const selectedObjects = selectionBox.select( startPoint, endPoint );
39
39
  * ```
40
+ *
41
+ * @three_import import { SelectionBox } from 'three/addons/interactive/SelectionBox.js';
40
42
  */
41
43
  class SelectionBox {
42
44
 
@@ -4,6 +4,8 @@ import { Vector2 } from 'three';
4
4
  * A helper for {@link SelectionBox}.
5
5
  *
6
6
  * It visualizes the current selection box with a `div` container element.
7
+ *
8
+ * @three_import import { SelectionHelper } from 'three/addons/interactive/SelectionHelper.js';
7
9
  */
8
10
  class SelectionHelper {
9
11
 
@@ -11,6 +11,7 @@ import { tiledLights } from '../tsl/lighting/TiledLightsNode.js';
11
11
  * ```
12
12
  *
13
13
  * @augments Lighting
14
+ * @three_import import { TiledLighting } from 'three/addons/lighting/TiledLighting.js';
14
15
  */
15
16
  export class TiledLighting extends Lighting {
16
17
 
@@ -15,6 +15,7 @@ import {
15
15
  * Utility class for creating instances of {@link LightProbe}.
16
16
  *
17
17
  * @hideconstructor
18
+ * @three_import import { LightProbeGenerator } from 'three/addons/lights/LightProbeGenerator.js';
18
19
  */
19
20
  class LightProbeGenerator {
20
21
 
@@ -25,6 +25,7 @@ import {
25
25
  * in the main build files.
26
26
  *
27
27
  * @hideconstructor
28
+ * @three_import import { RectAreaLightTexturesLib } from 'three/addons/lights/RectAreaLightTexturesLib.js';
28
29
  */
29
30
  class RectAreaLightTexturesLib {
30
31
 
@@ -12,6 +12,7 @@ import { RectAreaLightTexturesLib } from './RectAreaLightTexturesLib.js';
12
12
  * ```
13
13
  *
14
14
  * @hideconstructor
15
+ * @three_import import { RectAreaLightUniformsLib } from 'three/addons/lights/RectAreaLightUniformsLib.js';
15
16
  */
16
17
  class RectAreaLightUniformsLib {
17
18
 
@@ -24,6 +24,7 @@ import { LineMaterial } from '../lines/LineMaterial.js';
24
24
  * ```
25
25
  *
26
26
  * @augments LineSegments2
27
+ * @three_import import { Line2 } from 'three/addons/lines/Line2.js';
27
28
  */
28
29
  class Line2 extends LineSegments2 {
29
30
 
@@ -17,6 +17,7 @@ import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';
17
17
  * ```
18
18
  *
19
19
  * @augments LineSegmentsGeometry
20
+ * @three_import import { LineLineGeometry2 } from 'three/addons/lines/LineGeometry.js';
20
21
  */
21
22
  class LineGeometry extends LineSegmentsGeometry {
22
23
 
@@ -311,6 +311,9 @@ ShaderLib[ 'line' ] = {
311
311
 
312
312
  void main() {
313
313
 
314
+ float alpha = opacity;
315
+ vec4 diffuseColor = vec4( diffuse, alpha );
316
+
314
317
  #include <clipping_planes_fragment>
315
318
 
316
319
  #ifdef USE_DASH
@@ -321,8 +324,6 @@ ShaderLib[ 'line' ] = {
321
324
 
322
325
  #endif
323
326
 
324
- float alpha = opacity;
325
-
326
327
  #ifdef WORLD_UNITS
327
328
 
328
329
  // Find the closest points on the view ray and the line segment
@@ -387,8 +388,6 @@ ShaderLib[ 'line' ] = {
387
388
 
388
389
  #endif
389
390
 
390
- vec4 diffuseColor = vec4( diffuse, alpha );
391
-
392
391
  #include <logdepthbuf_fragment>
393
392
  #include <color_fragment>
394
393
 
@@ -413,6 +412,7 @@ ShaderLib[ 'line' ] = {
413
412
  * use {@link Line2NodeMaterial}.
414
413
  *
415
414
  * @augments ShaderMaterial
415
+ * @three_import import { LineMaterial } from 'three/addons/lines/LineMaterial.js';
416
416
  */
417
417
  class LineMaterial extends ShaderMaterial {
418
418
 
@@ -246,6 +246,7 @@ function raycastScreenSpace( lineSegments, camera, intersects ) {
246
246
  * ```
247
247
  *
248
248
  * @augments Mesh
249
+ * @three_import import { LineSegments2 } from 'three/addons/lines/LineSegments2.js';
249
250
  */
250
251
  class LineSegments2 extends Mesh {
251
252
 
@@ -18,6 +18,7 @@ const _vector = new Vector3();
18
18
  * This is used in {@link LineSegments2} to describe the shape.
19
19
  *
20
20
  * @augments InstancedBufferGeometry
21
+ * @three_import import { LineSegmentsGeometry } from 'three/addons/lines/LineSegmentsGeometry.js';
21
22
  */
22
23
  class LineSegmentsGeometry extends InstancedBufferGeometry {
23
24
 
@@ -27,6 +27,7 @@ const _viewport = new Vector4();
27
27
  * ```
28
28
  *
29
29
  * @augments Mesh
30
+ * @three_import import { Wireframe } from 'three/addons/lines/Wireframe.js';
30
31
  */
31
32
  class Wireframe extends Mesh {
32
33
 
@@ -14,6 +14,7 @@ import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';
14
14
  * ```
15
15
  *
16
16
  * @augments LineSegmentsGeometry
17
+ * @three_import import { WireframeGeometry2 } from 'three/addons/lines/WireframeGeometry2.js';
17
18
  */
18
19
  class WireframeGeometry2 extends LineSegmentsGeometry {
19
20
 
@@ -14,6 +14,7 @@ import { LineGeometry } from '../LineGeometry.js';
14
14
  * import the class from `lines/Line2.js`.
15
15
  *
16
16
  * @augments LineSegments2
17
+ * @three_import import { Line2 } from 'three/addons/lines/webgpu/Line2.js';
17
18
  */
18
19
  class Line2 extends LineSegments2 {
19
20
 
@@ -94,9 +94,10 @@ function raycastWorldUnits( lineSegments, intersects ) {
94
94
  function raycastScreenSpace( lineSegments, camera, intersects ) {
95
95
 
96
96
  const projectionMatrix = camera.projectionMatrix;
97
- const resolution = lineSegments.resolution;
98
97
  const matrixWorld = lineSegments.matrixWorld;
99
98
 
99
+ const resolution = lineSegments._resolution;
100
+
100
101
  const geometry = lineSegments.geometry;
101
102
  const instanceStart = geometry.attributes.instanceStart;
102
103
  const instanceEnd = geometry.attributes.instanceEnd;
@@ -234,6 +235,7 @@ function raycastScreenSpace( lineSegments, camera, intersects ) {
234
235
  * import the class from `lines/LineSegments2.js`.
235
236
  *
236
237
  * @augments Mesh
238
+ * @three_import import { LineSegments2 } from 'three/addons/lines/webgpu/LineSegments2.js';
237
239
  */
238
240
  class LineSegments2 extends Mesh {
239
241
 
@@ -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
 
@@ -107,7 +108,7 @@ class ColladaLoader extends Loader {
107
108
  }
108
109
 
109
110
  /**
110
- * Parses the given Collada data and returns a result oject holding the parsed scene,
111
+ * Parses the given Collada data and returns a result object holding the parsed scene,
111
112
  * an array of animation clips and kinematics.
112
113
  *
113
114
  * @param {string} text - The raw Collada data as a string.
@@ -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
 
@@ -1782,7 +1784,7 @@ class GeometryParser {
1782
1784
  geoInfo.vertexPositions = ( geoNode.Vertices !== undefined ) ? geoNode.Vertices.a : [];
1783
1785
  geoInfo.vertexIndices = ( geoNode.PolygonVertexIndex !== undefined ) ? geoNode.PolygonVertexIndex.a : [];
1784
1786
 
1785
- if ( geoNode.LayerElementColor ) {
1787
+ if ( geoNode.LayerElementColor && geoNode.LayerElementColor.Color ) {
1786
1788
 
1787
1789
  geoInfo.color = this.parseVertexColors( geoNode.LayerElementColor[ 0 ] );
1788
1790
 
@@ -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