@plastic-software/three 0.179.0 → 0.181.1

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 (430) hide show
  1. package/build/three.cjs +1108 -591
  2. package/build/three.core.js +616 -345
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +488 -250
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +37 -6
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +6576 -2152
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +6575 -2151
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  13. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  14. package/examples/jsm/Addons.js +1 -1
  15. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  16. package/examples/jsm/controls/ArcballControls.js +8 -8
  17. package/examples/jsm/controls/DragControls.js +7 -57
  18. package/examples/jsm/controls/FirstPersonControls.js +3 -3
  19. package/examples/jsm/controls/FlyControls.js +1 -1
  20. package/examples/jsm/controls/OrbitControls.js +2 -2
  21. package/examples/jsm/controls/PointerLockControls.js +2 -10
  22. package/examples/jsm/controls/TrackballControls.js +1 -1
  23. package/examples/jsm/controls/TransformControls.js +1 -1
  24. package/examples/jsm/effects/AsciiEffect.js +8 -8
  25. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  26. package/examples/jsm/exporters/EXRExporter.js +1 -1
  27. package/examples/jsm/exporters/GLTFExporter.js +33 -25
  28. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  29. package/examples/jsm/exporters/PLYExporter.js +1 -1
  30. package/examples/jsm/exporters/USDZExporter.js +9 -2
  31. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  32. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  33. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  34. package/examples/jsm/geometries/TextGeometry.js +3 -2
  35. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  36. package/examples/jsm/helpers/ViewHelper.js +43 -5
  37. package/examples/jsm/inspector/Inspector.js +427 -0
  38. package/examples/jsm/inspector/RendererInspector.js +415 -0
  39. package/examples/jsm/inspector/tabs/Console.js +204 -0
  40. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  41. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  42. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  43. package/examples/jsm/inspector/ui/Graph.js +95 -0
  44. package/examples/jsm/inspector/ui/Item.js +170 -0
  45. package/examples/jsm/inspector/ui/List.js +75 -0
  46. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  47. package/examples/jsm/inspector/ui/Style.js +654 -0
  48. package/examples/jsm/inspector/ui/Tab.js +46 -0
  49. package/examples/jsm/inspector/ui/Values.js +423 -0
  50. package/examples/jsm/inspector/ui/utils.js +56 -0
  51. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  52. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  53. package/examples/jsm/interactive/SelectionBox.js +30 -0
  54. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  55. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  56. package/examples/jsm/lines/Line2.js +3 -3
  57. package/examples/jsm/lines/LineGeometry.js +1 -1
  58. package/examples/jsm/lines/LineSegments2.js +2 -2
  59. package/examples/jsm/lines/Wireframe.js +2 -2
  60. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  61. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  62. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  63. package/examples/jsm/loaders/3MFLoader.js +1 -1
  64. package/examples/jsm/loaders/ColladaLoader.js +3 -3
  65. package/examples/jsm/loaders/DDSLoader.js +1 -1
  66. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  67. package/examples/jsm/loaders/EXRLoader.js +5 -5
  68. package/examples/jsm/loaders/FBXLoader.js +2 -2
  69. package/examples/jsm/loaders/FontLoader.js +23 -5
  70. package/examples/jsm/loaders/GLTFLoader.js +14 -8
  71. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  72. package/examples/jsm/loaders/HDRLoader.js +486 -0
  73. package/examples/jsm/loaders/KTX2Loader.js +136 -49
  74. package/examples/jsm/loaders/KTXLoader.js +2 -2
  75. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  76. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  77. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  78. package/examples/jsm/loaders/LWOLoader.js +2 -2
  79. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  80. package/examples/jsm/loaders/OBJLoader.js +1 -1
  81. package/examples/jsm/loaders/PDBLoader.js +1 -1
  82. package/examples/jsm/loaders/RGBELoader.js +7 -473
  83. package/examples/jsm/loaders/SVGLoader.js +2 -2
  84. package/examples/jsm/loaders/TTFLoader.js +4 -4
  85. package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
  86. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  87. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  88. package/examples/jsm/math/ColorSpaces.js +19 -1
  89. package/examples/jsm/math/ConvexHull.js +3 -3
  90. package/examples/jsm/math/ImprovedNoise.js +1 -1
  91. package/examples/jsm/math/Lut.js +2 -2
  92. package/examples/jsm/math/SimplexNoise.js +1 -1
  93. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  94. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  95. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  96. package/examples/jsm/misc/TubePainter.js +383 -40
  97. package/examples/jsm/misc/Volume.js +1 -1
  98. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  99. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  100. package/examples/jsm/objects/Sky.js +1 -1
  101. package/examples/jsm/objects/SkyMesh.js +1 -1
  102. package/examples/jsm/objects/Water.js +3 -3
  103. package/examples/jsm/objects/WaterMesh.js +6 -6
  104. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  105. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  106. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  107. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  108. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  109. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  110. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  111. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  112. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  113. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  114. package/examples/jsm/shaders/BokehShader.js +1 -1
  115. package/examples/jsm/shaders/BokehShader2.js +1 -1
  116. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  117. package/examples/jsm/shaders/FocusShader.js +1 -1
  118. package/examples/jsm/shaders/GTAOShader.js +2 -2
  119. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  120. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  121. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  122. package/examples/jsm/shaders/SSRShader.js +1 -1
  123. package/examples/jsm/shaders/SepiaShader.js +1 -1
  124. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  125. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  126. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +1 -1
  127. package/examples/jsm/shaders/VignetteShader.js +1 -1
  128. package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
  129. package/examples/jsm/transpiler/TSLEncoder.js +9 -10
  130. package/examples/jsm/transpiler/WGSLEncoder.js +24 -0
  131. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  132. package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
  133. package/examples/jsm/tsl/display/BloomNode.js +7 -3
  134. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
  135. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  136. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  137. package/examples/jsm/tsl/display/GTAONode.js +53 -5
  138. package/examples/jsm/tsl/display/GaussianBlurNode.js +49 -35
  139. package/examples/jsm/tsl/display/OutlineNode.js +13 -2
  140. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  141. package/examples/jsm/tsl/display/SSRNode.js +182 -65
  142. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  143. package/examples/jsm/tsl/display/TRAANode.js +124 -7
  144. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  145. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  146. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  147. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  148. package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
  149. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  150. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  151. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  152. package/package.json +5 -10
  153. package/src/Three.Core.js +4 -2
  154. package/src/Three.TSL.js +36 -5
  155. package/src/Three.WebGPU.Nodes.js +2 -0
  156. package/src/Three.WebGPU.js +2 -0
  157. package/src/animation/AnimationClip.js +20 -4
  158. package/src/animation/AnimationMixer.js +3 -3
  159. package/src/animation/AnimationObjectGroup.js +2 -1
  160. package/src/animation/KeyframeTrack.js +7 -6
  161. package/src/animation/PropertyBinding.js +12 -11
  162. package/src/audio/Audio.js +10 -9
  163. package/src/audio/PositionalAudio.js +1 -1
  164. package/src/cameras/OrthographicCamera.js +1 -1
  165. package/src/cameras/PerspectiveCamera.js +1 -1
  166. package/src/cameras/StereoCamera.js +2 -2
  167. package/src/constants.js +11 -3
  168. package/src/core/BufferGeometry.js +10 -10
  169. package/src/core/EventDispatcher.js +1 -1
  170. package/src/core/InterleavedBuffer.js +1 -1
  171. package/src/core/InterleavedBufferAttribute.js +3 -2
  172. package/src/core/Object3D.js +3 -2
  173. package/src/core/Raycaster.js +2 -1
  174. package/src/core/RenderTarget.js +10 -1
  175. package/src/extras/Controls.js +5 -4
  176. package/src/extras/DataUtils.js +2 -1
  177. package/src/extras/Earcut.js +6 -0
  178. package/src/extras/ImageUtils.js +2 -2
  179. package/src/extras/PMREMGenerator.js +268 -55
  180. package/src/extras/TextureUtils.js +2 -1
  181. package/src/extras/core/Curve.js +2 -1
  182. package/src/extras/core/Interpolations.js +7 -1
  183. package/src/extras/core/ShapePath.js +4 -4
  184. package/src/extras/lib/earcut.js +8 -8
  185. package/src/geometries/BoxGeometry.js +1 -0
  186. package/src/geometries/CapsuleGeometry.js +1 -0
  187. package/src/geometries/CircleGeometry.js +1 -0
  188. package/src/geometries/ConeGeometry.js +1 -0
  189. package/src/geometries/CylinderGeometry.js +1 -0
  190. package/src/geometries/DodecahedronGeometry.js +1 -0
  191. package/src/geometries/ExtrudeGeometry.js +8 -6
  192. package/src/geometries/IcosahedronGeometry.js +1 -0
  193. package/src/geometries/LatheGeometry.js +1 -0
  194. package/src/geometries/OctahedronGeometry.js +1 -0
  195. package/src/geometries/PlaneGeometry.js +1 -0
  196. package/src/geometries/RingGeometry.js +1 -0
  197. package/src/geometries/ShapeGeometry.js +1 -0
  198. package/src/geometries/SphereGeometry.js +1 -0
  199. package/src/geometries/TetrahedronGeometry.js +1 -0
  200. package/src/geometries/TorusGeometry.js +1 -0
  201. package/src/geometries/TorusKnotGeometry.js +1 -0
  202. package/src/geometries/TubeGeometry.js +1 -0
  203. package/src/helpers/CameraHelper.js +1 -1
  204. package/src/lights/webgpu/ProjectorLight.js +1 -1
  205. package/src/loaders/AnimationLoader.js +2 -1
  206. package/src/loaders/AudioLoader.js +2 -1
  207. package/src/loaders/BufferGeometryLoader.js +2 -2
  208. package/src/loaders/Cache.js +2 -2
  209. package/src/loaders/DataTextureLoader.js +1 -1
  210. package/src/loaders/FileLoader.js +3 -2
  211. package/src/loaders/ImageBitmapLoader.js +5 -4
  212. package/src/loaders/ImageLoader.js +1 -1
  213. package/src/loaders/Loader.js +3 -3
  214. package/src/loaders/LoadingManager.js +25 -3
  215. package/src/loaders/MaterialLoader.js +3 -2
  216. package/src/loaders/ObjectLoader.js +13 -13
  217. package/src/loaders/TextureLoader.js +1 -1
  218. package/src/loaders/nodes/NodeLoader.js +3 -2
  219. package/src/materials/Material.js +16 -3
  220. package/src/materials/MeshBasicMaterial.js +1 -0
  221. package/src/materials/MeshDepthMaterial.js +1 -0
  222. package/src/materials/MeshDistanceMaterial.js +1 -1
  223. package/src/materials/MeshLambertMaterial.js +2 -1
  224. package/src/materials/MeshMatcapMaterial.js +22 -0
  225. package/src/materials/MeshNormalMaterial.js +1 -0
  226. package/src/materials/MeshPhongMaterial.js +2 -1
  227. package/src/materials/MeshPhysicalMaterial.js +2 -1
  228. package/src/materials/MeshStandardMaterial.js +8 -7
  229. package/src/materials/MeshToonMaterial.js +1 -0
  230. package/src/materials/PointsMaterial.js +1 -1
  231. package/src/materials/ShaderMaterial.js +2 -2
  232. package/src/materials/nodes/Line2NodeMaterial.js +2 -2
  233. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  234. package/src/materials/nodes/NodeMaterial.js +62 -22
  235. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  236. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  237. package/src/materials/nodes/manager/NodeMaterialObserver.js +3 -2
  238. package/src/math/Color.js +6 -5
  239. package/src/math/ColorManagement.js +9 -3
  240. package/src/math/Cylindrical.js +1 -1
  241. package/src/math/Euler.js +2 -1
  242. package/src/math/MathUtils.js +13 -11
  243. package/src/math/Matrix2.js +1 -1
  244. package/src/math/Matrix3.js +2 -2
  245. package/src/math/Matrix4.js +7 -7
  246. package/src/math/Plane.js +1 -1
  247. package/src/math/Quaternion.js +68 -66
  248. package/src/math/Spherical.js +1 -1
  249. package/src/nodes/Nodes.js +4 -1
  250. package/src/nodes/TSL.js +4 -1
  251. package/src/nodes/accessors/BufferNode.js +1 -1
  252. package/src/nodes/accessors/Camera.js +133 -7
  253. package/src/nodes/accessors/ClippingNode.js +6 -5
  254. package/src/nodes/accessors/CubeTextureNode.js +5 -4
  255. package/src/nodes/accessors/InstanceNode.js +25 -5
  256. package/src/nodes/accessors/Lights.js +10 -0
  257. package/src/nodes/accessors/Normal.js +5 -4
  258. package/src/nodes/accessors/Object3DNode.js +1 -1
  259. package/src/nodes/accessors/Position.js +18 -2
  260. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  261. package/src/nodes/accessors/ReferenceNode.js +3 -2
  262. package/src/nodes/accessors/SceneNode.js +2 -1
  263. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  264. package/src/nodes/accessors/StorageTextureNode.js +22 -0
  265. package/src/nodes/accessors/Texture3DNode.js +14 -1
  266. package/src/nodes/accessors/TextureNode.js +130 -44
  267. package/src/nodes/code/FunctionCallNode.js +24 -4
  268. package/src/nodes/code/FunctionNode.js +23 -0
  269. package/src/nodes/core/ArrayNode.js +1 -0
  270. package/src/nodes/core/AssignNode.js +4 -3
  271. package/src/nodes/core/AttributeNode.js +2 -1
  272. package/src/nodes/core/ContextNode.js +29 -10
  273. package/src/nodes/core/IndexNode.js +2 -2
  274. package/src/nodes/core/InputNode.js +2 -1
  275. package/src/nodes/core/InspectorNode.js +128 -0
  276. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +40 -7
  277. package/src/nodes/core/Node.js +152 -31
  278. package/src/nodes/core/NodeBuilder.js +183 -35
  279. package/src/nodes/core/NodeFrame.js +21 -21
  280. package/src/nodes/core/NodeFunction.js +2 -1
  281. package/src/nodes/core/NodeParser.js +2 -1
  282. package/src/nodes/core/NodeUniform.js +1 -1
  283. package/src/nodes/core/NodeUtils.js +17 -91
  284. package/src/nodes/core/ParameterNode.js +31 -0
  285. package/src/nodes/core/PropertyNode.js +7 -0
  286. package/src/nodes/core/StackNode.js +43 -16
  287. package/src/nodes/core/StructNode.js +5 -5
  288. package/src/nodes/core/StructTypeNode.js +1 -0
  289. package/src/nodes/core/SubBuildNode.js +2 -2
  290. package/src/nodes/core/UniformNode.js +18 -10
  291. package/src/nodes/core/VarNode.js +70 -33
  292. package/src/nodes/core/VaryingNode.js +3 -2
  293. package/src/nodes/display/BlendModes.js +5 -4
  294. package/src/nodes/display/BumpMapNode.js +1 -1
  295. package/src/nodes/display/ColorAdjustment.js +1 -1
  296. package/src/nodes/display/FrontFacingNode.js +4 -8
  297. package/src/nodes/display/NormalMapNode.js +2 -1
  298. package/src/nodes/display/PassNode.js +52 -11
  299. package/src/nodes/display/RenderOutputNode.js +28 -2
  300. package/src/nodes/display/ScreenNode.js +44 -14
  301. package/src/nodes/display/ToneMappingNode.js +31 -4
  302. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
  304. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  305. package/src/nodes/display/ViewportTextureNode.js +42 -12
  306. package/src/nodes/fog/Fog.js +3 -2
  307. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  308. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  309. package/src/nodes/functions/BasicLightingModel.js +2 -1
  310. package/src/nodes/functions/PhysicalLightingModel.js +3 -2
  311. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  312. package/src/nodes/geometry/RangeNode.js +40 -4
  313. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  314. package/src/nodes/gpgpu/ComputeNode.js +17 -5
  315. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  316. package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
  317. package/src/nodes/lighting/EnvironmentNode.js +6 -6
  318. package/src/nodes/lighting/LightsNode.js +3 -4
  319. package/src/nodes/lighting/PointShadowNode.js +6 -0
  320. package/src/nodes/lighting/ShadowFilterNode.js +2 -0
  321. package/src/nodes/lighting/ShadowNode.js +75 -8
  322. package/src/nodes/math/BitcastNode.js +156 -0
  323. package/src/nodes/math/ConditionalNode.js +24 -7
  324. package/src/nodes/math/MathNode.js +25 -19
  325. package/src/nodes/math/OperatorNode.js +7 -5
  326. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  327. package/src/nodes/shapes/Shapes.js +1 -1
  328. package/src/nodes/tsl/TSLBase.js +5 -2
  329. package/src/nodes/tsl/TSLCore.js +460 -159
  330. package/src/nodes/utils/DebugNode.js +2 -1
  331. package/src/nodes/utils/EventNode.js +36 -0
  332. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  333. package/src/nodes/utils/JoinNode.js +6 -3
  334. package/src/nodes/utils/LoopNode.js +20 -24
  335. package/src/nodes/utils/MemberNode.js +59 -7
  336. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  337. package/src/nodes/utils/RTTNode.js +13 -3
  338. package/src/nodes/utils/ReflectorNode.js +58 -7
  339. package/src/nodes/utils/SampleNode.js +12 -2
  340. package/src/nodes/utils/SplitNode.js +11 -0
  341. package/src/nodes/utils/Timer.js +0 -47
  342. package/src/objects/BatchedMesh.js +2 -2
  343. package/src/objects/LOD.js +1 -1
  344. package/src/objects/Line.js +2 -1
  345. package/src/objects/LineSegments.js +2 -1
  346. package/src/objects/Skeleton.js +3 -2
  347. package/src/objects/SkinnedMesh.js +3 -1
  348. package/src/objects/Sprite.js +4 -3
  349. package/src/renderers/WebGLRenderer.js +48 -41
  350. package/src/renderers/common/Animation.js +13 -1
  351. package/src/renderers/common/Attributes.js +1 -1
  352. package/src/renderers/common/Backend.js +108 -27
  353. package/src/renderers/common/Background.js +2 -1
  354. package/src/renderers/common/Bindings.js +58 -2
  355. package/src/renderers/common/CanvasTarget.js +341 -0
  356. package/src/renderers/common/ChainMap.js +1 -1
  357. package/src/renderers/common/DataMap.js +1 -1
  358. package/src/renderers/common/Geometries.js +26 -0
  359. package/src/renderers/common/Info.js +4 -2
  360. package/src/renderers/common/InspectorBase.js +146 -0
  361. package/src/renderers/common/Pipelines.js +1 -1
  362. package/src/renderers/common/PostProcessing.js +6 -25
  363. package/src/renderers/common/QuadMesh.js +7 -1
  364. package/src/renderers/common/RenderContext.js +2 -2
  365. package/src/renderers/common/RenderList.js +7 -3
  366. package/src/renderers/common/RenderObject.js +16 -2
  367. package/src/renderers/common/RenderObjects.js +1 -1
  368. package/src/renderers/common/Renderer.js +473 -245
  369. package/src/renderers/common/RendererUtils.js +9 -0
  370. package/src/renderers/common/SampledTexture.js +9 -1
  371. package/src/renderers/common/Sampler.js +50 -12
  372. package/src/renderers/common/StorageTexture.js +9 -1
  373. package/src/renderers/common/Textures.js +121 -45
  374. package/src/renderers/common/TimestampQueryPool.js +65 -3
  375. package/src/renderers/common/UniformsGroup.js +2 -1
  376. package/src/renderers/common/XRManager.js +42 -22
  377. package/src/renderers/common/extras/PMREMGenerator.js +160 -65
  378. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  379. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  380. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  381. package/src/renderers/common/nodes/Nodes.js +38 -16
  382. package/src/renderers/shaders/DFGLUTData.js +64 -0
  383. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  384. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  385. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  386. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  387. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  388. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  389. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  390. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  391. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -15
  392. package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
  393. package/src/renderers/shaders/UniformsLib.js +1 -0
  394. package/src/renderers/shaders/UniformsUtils.js +25 -4
  395. package/src/renderers/webgl/WebGLCapabilities.js +2 -1
  396. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  397. package/src/renderers/webgl/WebGLInfo.js +3 -1
  398. package/src/renderers/webgl/WebGLProgram.js +15 -14
  399. package/src/renderers/webgl/WebGLPrograms.js +2 -1
  400. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  401. package/src/renderers/webgl/WebGLState.js +15 -14
  402. package/src/renderers/webgl/WebGLTextures.js +19 -14
  403. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  404. package/src/renderers/webgl/WebGLUtils.js +3 -2
  405. package/src/renderers/webgl-fallback/WebGLBackend.js +199 -167
  406. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +181 -25
  407. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  408. package/src/renderers/webgl-fallback/utils/WebGLState.js +7 -6
  409. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +169 -19
  410. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
  411. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
  412. package/src/renderers/webgpu/WebGPUBackend.js +153 -123
  413. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  414. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  415. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +142 -50
  416. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  417. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
  418. package/src/renderers/webgpu/utils/WebGPUConstants.js +7 -2
  419. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +53 -34
  420. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  421. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +260 -99
  422. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
  423. package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
  424. package/src/renderers/webxr/WebXRManager.js +42 -26
  425. package/src/textures/ExternalTexture.js +15 -4
  426. package/src/textures/Source.js +3 -2
  427. package/src/textures/Texture.js +3 -2
  428. package/src/textures/VideoTexture.js +2 -3
  429. package/src/utils.js +67 -3
  430. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
@@ -5,8 +5,8 @@ import {
5
5
  Vector3,
6
6
  Vector4
7
7
  } from 'three';
8
- import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';
9
- import { LineMaterial } from '../lines/LineMaterial.js';
8
+ import { LineSegmentsGeometry } from './LineSegmentsGeometry.js';
9
+ import { LineMaterial } from './LineMaterial.js';
10
10
 
11
11
  const _start = new Vector3();
12
12
  const _end = new Vector3();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  WireframeGeometry
3
3
  } from 'three';
4
- import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';
4
+ import { LineSegmentsGeometry } from './LineSegmentsGeometry.js';
5
5
 
6
6
  /**
7
7
  * A special type of line segments geometry intended for wireframe rendering.
@@ -12,7 +12,7 @@ import {
12
12
  Line2NodeMaterial,
13
13
  Vector2
14
14
  } from 'three/webgpu';
15
- import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
15
+ import { LineSegmentsGeometry } from '../LineSegmentsGeometry.js';
16
16
 
17
17
  const _start = new Vector3();
18
18
  const _end = new Vector3();
@@ -6,7 +6,7 @@ import {
6
6
  Vector3
7
7
  } from 'three/webgpu';
8
8
 
9
- import { LineSegmentsGeometry } from '../../lines/LineSegmentsGeometry.js';
9
+ import { LineSegmentsGeometry } from '../LineSegmentsGeometry.js';
10
10
 
11
11
  const _start = new Vector3();
12
12
  const _end = new Vector3();
@@ -24,7 +24,7 @@ import * as fflate from '../libs/fflate.module.js';
24
24
  const COLOR_SPACE_3MF = SRGBColorSpace;
25
25
 
26
26
  /**
27
- * A loader for the [3D Manufacturing Format (3MF)]{@link https://3mf.io/specification/} format.
27
+ * A loader for the [3D Manufacturing Format (3MF)](https://3mf.io/specification/) format.
28
28
  *
29
29
  * The following features from the core specification are supported:
30
30
  *
@@ -45,7 +45,7 @@ import { TGALoader } from '../loaders/TGALoader.js';
45
45
  * A loader for the Collada format.
46
46
  *
47
47
  * The Collada format is very complex so this loader only supports a subset of what
48
- * is defined in the [official specification]{@link https://www.khronos.org/files/collada_spec_1_5.pdf}.
48
+ * is defined in the [official specification](https://www.khronos.org/files/collada_spec_1_5.pdf).
49
49
  *
50
50
  * Assets with a Z-UP coordinate system are transformed it into Y-UP by a simple rotation.
51
51
  * The vertex data are not converted.
@@ -112,8 +112,8 @@ class ColladaLoader extends Loader {
112
112
  * an array of animation clips and kinematics.
113
113
  *
114
114
  * @param {string} text - The raw Collada data as a string.
115
- * @param {string} path - The asset path.
116
- * @return {{scene:Group,animations:Array<AnimationClip>,kinematics:Object}} An object representing the parsed asset.
115
+ * @param {string} [path] - The asset path.
116
+ * @return {?{scene:Group,animations:Array<AnimationClip>,kinematics:Object}} An object representing the parsed asset.
117
117
  */
118
118
  parse( text, path ) {
119
119
 
@@ -44,7 +44,7 @@ class DDSLoader extends CompressedTextureLoader {
44
44
  */
45
45
  parse( buffer, loadMipmaps ) {
46
46
 
47
- const dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1 };
47
+ const dds = { mipmaps: [], width: 0, height: 0, format: null, mipmapCount: 1, isCubemap: false };
48
48
 
49
49
  // Adapted from @toji's DDS utils
50
50
  // https://github.com/toji/webgl-texture-utils/blob/master/texture-util/dds.js
@@ -6,7 +6,9 @@ import {
6
6
  FileLoader,
7
7
  Loader,
8
8
  LinearSRGBColorSpace,
9
- SRGBColorSpace
9
+ SRGBColorSpace,
10
+ InterleavedBuffer,
11
+ InterleavedBufferAttribute
10
12
  } from 'three';
11
13
 
12
14
  const _taskCache = new WeakMap();
@@ -14,14 +16,14 @@ const _taskCache = new WeakMap();
14
16
  /**
15
17
  * A loader for the Draco format.
16
18
  *
17
- * [Draco]{@link https://google.github.io/draco/} is an open source library for compressing
19
+ * [Draco](https://google.github.io/draco/) is an open source library for compressing
18
20
  * and decompressing 3D meshes and point clouds. Compressed geometry can be significantly smaller,
19
21
  * at the cost of additional decoding time on the client device.
20
22
  *
21
23
  * Standalone Draco files have a `.drc` extension, and contain vertex positions, normals, colors,
22
24
  * and other attributes. Draco files do not contain materials, textures, animation, or node hierarchies –
23
25
  * to use these features, embed Draco geometry inside of a glTF file. A normal glTF file can be converted
24
- * to a Draco-compressed glTF file using [glTF-Pipeline]{@link https://github.com/CesiumGS/gltf-pipeline}.
26
+ * to a Draco-compressed glTF file using [glTF-Pipeline](https://github.com/CesiumGS/gltf-pipeline).
25
27
  * When using Draco with glTF, an instance of `DRACOLoader` will be used internally by {@link GLTFLoader}.
26
28
  *
27
29
  * It is recommended to create one DRACOLoader instance and reuse it to avoid loading and creating
@@ -273,16 +275,25 @@ class DRACOLoader extends Loader {
273
275
 
274
276
  for ( let i = 0; i < geometryData.attributes.length; i ++ ) {
275
277
 
276
- const result = geometryData.attributes[ i ];
277
- const name = result.name;
278
- const array = result.array;
279
- const itemSize = result.itemSize;
278
+ const { name, array, itemSize, stride, vertexColorSpace } = geometryData.attributes[ i ];
280
279
 
281
- const attribute = new BufferAttribute( array, itemSize );
280
+ let attribute;
281
+
282
+ if ( itemSize === stride ) {
283
+
284
+ attribute = new BufferAttribute( array, itemSize );
285
+
286
+ } else {
287
+
288
+ const buffer = new InterleavedBuffer( array, stride );
289
+
290
+ attribute = new InterleavedBufferAttribute( buffer, itemSize, 0 );
291
+
292
+ }
282
293
 
283
294
  if ( name === 'color' ) {
284
295
 
285
- this._assignVertexColorSpace( attribute, result.vertexColorSpace );
296
+ this._assignVertexColorSpace( attribute, vertexColorSpace );
286
297
 
287
298
  attribute.normalized = ( array instanceof Float32Array ) === false;
288
299
 
@@ -646,30 +657,70 @@ function DRACOWorker() {
646
657
 
647
658
  }
648
659
 
649
- function decodeAttribute( draco, decoder, dracoGeometry, attributeName, attributeType, attribute ) {
660
+ function decodeAttribute( draco, decoder, dracoGeometry, attributeName, TypedArray, attribute ) {
650
661
 
651
- const numComponents = attribute.num_components();
652
- const numPoints = dracoGeometry.num_points();
653
- const numValues = numPoints * numComponents;
654
- const byteLength = numValues * attributeType.BYTES_PER_ELEMENT;
655
- const dataType = getDracoDataType( draco, attributeType );
662
+ const count = dracoGeometry.num_points();
663
+ const itemSize = attribute.num_components();
664
+ const dracoDataType = getDracoDataType( draco, TypedArray );
665
+
666
+ // Reference: https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#data-alignment
667
+ const srcByteStride = itemSize * TypedArray.BYTES_PER_ELEMENT;
668
+ const dstByteStride = Math.ceil( srcByteStride / 4 ) * 4;
669
+
670
+ const dstStride = dstByteStride / TypedArray.BYTES_PER_ELEMENT
671
+
672
+ const srcByteLength = count * srcByteStride;
673
+ const dstByteLength = count * dstByteStride;
674
+
675
+ const ptr = draco._malloc( srcByteLength );
676
+ decoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dracoDataType, srcByteLength, ptr );
677
+
678
+ const srcArray = new TypedArray( draco.HEAPF32.buffer, ptr, srcByteLength / TypedArray.BYTES_PER_ELEMENT );
679
+ let dstArray;
680
+
681
+ if ( srcByteStride === dstByteStride ) {
682
+
683
+ // THREE.BufferAttribute
684
+
685
+ dstArray = srcArray.slice();
686
+
687
+ } else {
688
+
689
+ // THREE.InterleavedBufferAttribute
690
+
691
+ dstArray = new TypedArray( dstByteLength / TypedArray.BYTES_PER_ELEMENT );
692
+
693
+ let dstOffset = 0
694
+
695
+ for ( let i = 0, il = srcArray.length; i < il; i++ ) {
696
+
697
+ for ( let j = 0; j < itemSize; j++ ) {
698
+
699
+ dstArray[ dstOffset + j ] = srcArray[ i * itemSize + j ]
700
+
701
+ }
702
+
703
+ dstOffset += dstStride;
704
+
705
+ }
706
+
707
+ }
656
708
 
657
- const ptr = draco._malloc( byteLength );
658
- decoder.GetAttributeDataArrayForAllPoints( dracoGeometry, attribute, dataType, byteLength, ptr );
659
- const array = new attributeType( draco.HEAPF32.buffer, ptr, numValues ).slice();
660
709
  draco._free( ptr );
661
710
 
662
711
  return {
663
712
  name: attributeName,
664
- array: array,
665
- itemSize: numComponents
713
+ count: count,
714
+ itemSize: itemSize,
715
+ array: dstArray,
716
+ stride: dstStride
666
717
  };
667
718
 
668
719
  }
669
720
 
670
- function getDracoDataType( draco, attributeType ) {
721
+ function getDracoDataType( draco, TypedArray ) {
671
722
 
672
- switch ( attributeType ) {
723
+ switch ( TypedArray ) {
673
724
 
674
725
  case Float32Array: return draco.DT_FLOAT32;
675
726
  case Int8Array: return draco.DT_INT8;
@@ -2515,7 +2515,7 @@ class EXRLoader extends DataTextureLoader {
2515
2515
  EXRDecoder.outputChannels = 1;
2516
2516
  EXRDecoder.decodeChannels = { R: 0 };
2517
2517
 
2518
- } else {
2518
+ } else {
2519
2519
 
2520
2520
  invalidOutput = true;
2521
2521
 
@@ -2549,7 +2549,7 @@ class EXRLoader extends DataTextureLoader {
2549
2549
  EXRDecoder.outputChannels = 1;
2550
2550
  EXRDecoder.decodeChannels = { Y: 0 };
2551
2551
 
2552
- } else {
2552
+ } else {
2553
2553
 
2554
2554
  invalidOutput = true;
2555
2555
 
@@ -2563,7 +2563,7 @@ class EXRLoader extends DataTextureLoader {
2563
2563
 
2564
2564
  }
2565
2565
 
2566
- if (invalidOutput) throw new Error( 'EXRLoader.parse: invalid output format for specified file.' );
2566
+ if ( invalidOutput ) throw new Error( 'EXRLoader.parse: invalid output format for specified file.' );
2567
2567
 
2568
2568
  if ( EXRDecoder.type == 1 ) {
2569
2569
 
@@ -2712,12 +2712,12 @@ class EXRLoader extends DataTextureLoader {
2712
2712
  if ( this.outputFormat == RGBAFormat ) {
2713
2713
 
2714
2714
  for ( let i = 0; i < byteArray.length; i += 4 )
2715
- byteArray [i + 2 ] = ( byteArray [ i + 1 ] = byteArray[ i ] );
2715
+ byteArray[ i + 2 ] = ( byteArray[ i + 1 ] = byteArray[ i ] );
2716
2716
 
2717
2717
  } else if ( this.outputFormat == RGFormat ) {
2718
2718
 
2719
2719
  for ( let i = 0; i < byteArray.length; i += 2 )
2720
- byteArray [ i + 1 ] = byteArray[ i ] ;
2720
+ byteArray[ i + 1 ] = byteArray[ i ];
2721
2721
 
2722
2722
  }
2723
2723
 
@@ -61,10 +61,10 @@ let sceneGraph;
61
61
  * - Morph normals / blend shape normals
62
62
  *
63
63
  * FBX format references:
64
- * - [C++ SDK reference]{@link https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html}
64
+ * - [C++ SDK reference](https://help.autodesk.com/view/FBX/2017/ENU/?guid=__cpp_ref_index_html)
65
65
  *
66
66
  * Binary format specification:
67
- * - [FBX binary file format specification]{@link https://code.blender.org/2013/08/fbx-binary-file-format-specification/}
67
+ * - [FBX binary file format specification](https://code.blender.org/2013/08/fbx-binary-file-format-specification/)
68
68
  *
69
69
  * ```js
70
70
  * const loader = new FBXLoader();
@@ -7,7 +7,7 @@ import {
7
7
  /**
8
8
  * A loader for loading fonts.
9
9
  *
10
- * You can convert fonts online using [facetype.js]{@link https://gero3.github.io/facetype.js/}.
10
+ * You can convert fonts online using [facetype.js](https://gero3.github.io/facetype.js/).
11
11
  *
12
12
  * ```js
13
13
  * const loader = new FontLoader();
@@ -109,12 +109,13 @@ class Font {
109
109
  *
110
110
  * @param {string} text - The text.
111
111
  * @param {number} [size=100] - The text size.
112
+ * @param {string} [direction='ltr'] - Char direction: ltr(left to right), rtl(right to left) & tb(top bottom).
112
113
  * @return {Array<Shape>} An array of shapes representing the text.
113
114
  */
114
- generateShapes( text, size = 100 ) {
115
+ generateShapes( text, size = 100, direction = 'ltr' ) {
115
116
 
116
117
  const shapes = [];
117
- const paths = createPaths( text, size, this.data );
118
+ const paths = createPaths( text, size, this.data, direction );
118
119
 
119
120
  for ( let p = 0, pl = paths.length; p < pl; p ++ ) {
120
121
 
@@ -128,7 +129,7 @@ class Font {
128
129
 
129
130
  }
130
131
 
131
- function createPaths( text, size, data ) {
132
+ function createPaths( text, size, data, direction ) {
132
133
 
133
134
  const chars = Array.from( text );
134
135
  const scale = size / data.resolution;
@@ -138,6 +139,12 @@ function createPaths( text, size, data ) {
138
139
 
139
140
  let offsetX = 0, offsetY = 0;
140
141
 
142
+ if ( direction == 'rtl' || direction == 'tb' ) {
143
+
144
+ chars.reverse();
145
+
146
+ }
147
+
141
148
  for ( let i = 0; i < chars.length; i ++ ) {
142
149
 
143
150
  const char = chars[ i ];
@@ -150,7 +157,18 @@ function createPaths( text, size, data ) {
150
157
  } else {
151
158
 
152
159
  const ret = createPath( char, scale, offsetX, offsetY, data );
153
- offsetX += ret.offsetX;
160
+
161
+ if ( direction == 'tb' ) {
162
+
163
+ offsetX = 0;
164
+ offsetY += data.ascender * scale;
165
+
166
+ } else {
167
+
168
+ offsetX += ret.offsetX;
169
+
170
+ }
171
+
154
172
  paths.push( ret.path );
155
173
 
156
174
  }
@@ -70,7 +70,7 @@ import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
70
70
  /**
71
71
  * A loader for the glTF 2.0 format.
72
72
  *
73
- * [glTF]{@link https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0}
73
+ * [glTF](https://www.khronos.org/gltf/} (GL Transmission Format) is an [open format specification]{@link https://github.com/KhronosGroup/glTF/tree/main/specification/2.0)
74
74
  * for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf) or binary (.glb)
75
75
  * format. External files store textures (.jpg, .png) and additional binary data (.bin). A glTF asset may deliver
76
76
  * one or more scenes, including meshes, materials, textures, skins, skeletons, morph targets, animations, lights,
@@ -99,8 +99,10 @@ import { toTrianglesDrawMode } from '../utils/BufferGeometryUtils.js';
99
99
  * - EXT_mesh_gpu_instancing
100
100
  *
101
101
  * The following glTF 2.0 extension is supported by an external user plugin:
102
- * - [KHR_materials_variants]{@link https://github.com/takahirox/three-gltf-extensions}
103
- * - [MSFT_texture_dds]{@link https://github.com/takahirox/three-gltf-extensions}
102
+ * - [KHR_materials_variants](https://github.com/takahirox/three-gltf-extensions)
103
+ * - [MSFT_texture_dds](https://github.com/takahirox/three-gltf-extensions)
104
+ * - [KHR_animation_pointer](https://github.com/needle-tools/three-animation-pointer)
105
+ * - [NEEDLE_progressive](https://github.com/needle-tools/gltf-progressive)
104
106
  *
105
107
  * ```js
106
108
  * const loader = new GLTFLoader();
@@ -2376,7 +2378,7 @@ function addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {
2376
2378
  /**
2377
2379
  *
2378
2380
  * @private
2379
- * @param {Object3D|Material|BufferGeometry|Object} object
2381
+ * @param {Object3D|Material|BufferGeometry|Object|AnimationClip} object
2380
2382
  * @param {GLTF.definition} gltfDef
2381
2383
  */
2382
2384
  function assignExtrasToUserData( object, gltfDef ) {
@@ -2943,7 +2945,7 @@ class GLTFParser {
2943
2945
  * @private
2944
2946
  * @param {string} type
2945
2947
  * @param {number} index
2946
- * @return {Promise<Object3D|Material|THREE.Texture|AnimationClip|ArrayBuffer|Object>}
2948
+ * @return {Promise<Object3D|Material|Texture|AnimationClip|ArrayBuffer|Object>}
2947
2949
  */
2948
2950
  getDependency( type, index ) {
2949
2951
 
@@ -3283,7 +3285,7 @@ class GLTFParser {
3283
3285
  *
3284
3286
  * @private
3285
3287
  * @param {number} textureIndex
3286
- * @return {Promise<THREE.Texture|null>}
3288
+ * @return {Promise<?Texture>}
3287
3289
  */
3288
3290
  loadTexture( textureIndex ) {
3289
3291
 
@@ -4020,7 +4022,7 @@ class GLTFParser {
4020
4022
  *
4021
4023
  * @private
4022
4024
  * @param {number} cameraIndex
4023
- * @return {Promise<THREE.Camera>}
4025
+ * @return {Promise<Camera>|undefined}
4024
4026
  */
4025
4027
  loadCamera( cameraIndex ) {
4026
4028
 
@@ -4213,7 +4215,11 @@ class GLTFParser {
4213
4215
 
4214
4216
  }
4215
4217
 
4216
- return new AnimationClip( animationName, undefined, tracks );
4218
+ const animation = new AnimationClip( animationName, undefined, tracks );
4219
+
4220
+ assignExtrasToUserData( animation, animationDef );
4221
+
4222
+ return animation;
4217
4223
 
4218
4224
  } );
4219
4225
 
@@ -8,7 +8,7 @@ import {
8
8
  LinearSRGBColorSpace,
9
9
  Loader
10
10
  } from 'three';
11
- import { RGBELoader } from '../loaders/RGBELoader.js';
11
+ import { HDRLoader } from '../loaders/HDRLoader.js';
12
12
 
13
13
  /**
14
14
  * A loader for loading HDR cube textures.
@@ -40,9 +40,9 @@ class HDRCubeTextureLoader extends Loader {
40
40
  * The internal HDR loader that loads the
41
41
  * individual textures for each cube face.
42
42
  *
43
- * @type {RGBELoader}
43
+ * @type {HDRLoader}
44
44
  */
45
- this.hdrLoader = new RGBELoader();
45
+ this.hdrLoader = new HDRLoader();
46
46
 
47
47
  /**
48
48
  * The texture type.
@@ -147,8 +147,8 @@ class HDRCubeTextureLoader extends Loader {
147
147
  /**
148
148
  * Sets the texture type.
149
149
  *
150
- * @param {(HalfFloatType|FloatType)} value - The texture type to set.
151
- * @return {RGBELoader} A reference to this loader.
150
+ * @param {(HalfFloatType|FloatType)} value - The texture type to set.
151
+ * @return {HDRCubeTextureLoader} A reference to this loader.
152
152
  */
153
153
  setDataType( value ) {
154
154