@plastic-software/three 0.183.4 → 0.184.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 (277) hide show
  1. package/build/three.cjs +773 -286
  2. package/build/three.core.js +372 -110
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +426 -180
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +7 -1
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +2979 -1281
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +2942 -1281
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/jsm/Addons.js +11 -0
  13. package/examples/jsm/animation/CCDIKSolver.js +5 -1
  14. package/examples/jsm/controls/ArcballControls.js +4 -1
  15. package/examples/jsm/controls/DragControls.js +2 -2
  16. package/examples/jsm/controls/FirstPersonControls.js +58 -54
  17. package/examples/jsm/controls/FlyControls.js +4 -0
  18. package/examples/jsm/controls/OrbitControls.js +2 -2
  19. package/examples/jsm/controls/TrackballControls.js +2 -2
  20. package/examples/jsm/controls/TransformControls.js +34 -2
  21. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  22. package/examples/jsm/exporters/GLTFExporter.js +21 -5
  23. package/examples/jsm/geometries/TextGeometry.js +18 -0
  24. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  25. package/examples/jsm/inspector/Extension.js +13 -0
  26. package/examples/jsm/inspector/Inspector.js +169 -114
  27. package/examples/jsm/inspector/RendererInspector.js +2 -2
  28. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  29. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  30. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  31. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  32. package/examples/jsm/inspector/tabs/Parameters.js +34 -2
  33. package/examples/jsm/inspector/tabs/Performance.js +2 -2
  34. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  35. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  36. package/examples/jsm/inspector/tabs/Viewer.js +105 -3
  37. package/examples/jsm/inspector/ui/Graph.js +2 -2
  38. package/examples/jsm/inspector/ui/List.js +1 -1
  39. package/examples/jsm/inspector/ui/Profiler.js +273 -176
  40. package/examples/jsm/inspector/ui/Style.js +64 -10
  41. package/examples/jsm/inspector/ui/Tab.js +39 -7
  42. package/examples/jsm/inspector/ui/Values.js +39 -2
  43. package/examples/jsm/inspector/ui/utils.js +13 -0
  44. package/examples/jsm/interaction/InteractionManager.js +226 -0
  45. package/examples/jsm/libs/meshopt_decoder.module.js +8 -8
  46. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  47. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  48. package/examples/jsm/lines/LineMaterial.js +1 -1
  49. package/examples/jsm/loaders/EXRLoader.js +682 -43
  50. package/examples/jsm/loaders/FBXLoader.js +233 -33
  51. package/examples/jsm/loaders/GLTFLoader.js +24 -7
  52. package/examples/jsm/loaders/HDRLoader.js +1 -1
  53. package/examples/jsm/loaders/KTX2Loader.js +8 -2
  54. package/examples/jsm/loaders/LDrawLoader.js +39 -47
  55. package/examples/jsm/loaders/SVGLoader.js +1 -1
  56. package/examples/jsm/loaders/VTKLoader.js +5 -1
  57. package/examples/jsm/loaders/collada/ColladaComposer.js +101 -7
  58. package/examples/jsm/loaders/collada/ColladaParser.js +19 -4
  59. package/examples/jsm/loaders/usd/USDAParser.js +6 -0
  60. package/examples/jsm/loaders/usd/USDCParser.js +26 -0
  61. package/examples/jsm/loaders/usd/USDComposer.js +656 -103
  62. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  63. package/examples/jsm/misc/RollerCoaster.js +42 -4
  64. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  65. package/examples/jsm/objects/Reflector.js +73 -25
  66. package/examples/jsm/objects/Sky.js +14 -2
  67. package/examples/jsm/objects/SkyMesh.js +23 -6
  68. package/examples/jsm/renderers/Projector.js +18 -38
  69. package/examples/jsm/renderers/SVGRenderer.js +6 -25
  70. package/examples/jsm/transpiler/GLSLDecoder.js +2 -2
  71. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  72. package/examples/jsm/tsl/display/AfterImageNode.js +10 -0
  73. package/examples/jsm/tsl/display/AnamorphicNode.js +11 -0
  74. package/examples/jsm/tsl/display/BilateralBlurNode.js +10 -0
  75. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  76. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  77. package/examples/jsm/tsl/display/GTAONode.js +2 -1
  78. package/examples/jsm/tsl/display/GaussianBlurNode.js +10 -0
  79. package/examples/jsm/tsl/display/GodraysNode.js +2 -11
  80. package/examples/jsm/tsl/display/OutlineNode.js +66 -16
  81. package/examples/jsm/tsl/display/SSGINode.js +0 -4
  82. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  83. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  84. package/examples/jsm/tsl/display/TRAANode.js +48 -7
  85. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  86. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  87. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  88. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  89. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  90. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  91. package/examples/jsm/tsl/math/Bayer.js +13 -2
  92. package/examples/jsm/utils/BufferGeometryUtils.js +2 -3
  93. package/examples/jsm/utils/ColorUtils.js +76 -0
  94. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  95. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  96. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  97. package/package.json +4 -4
  98. package/src/Three.Core.js +1 -0
  99. package/src/Three.TSL.js +6 -0
  100. package/src/Three.WebGPU.Nodes.js +3 -0
  101. package/src/Three.WebGPU.js +6 -0
  102. package/src/animation/AnimationAction.js +11 -1
  103. package/src/audio/AudioContext.js +2 -2
  104. package/src/constants.js +1 -1
  105. package/src/core/BufferAttribute.js +13 -1
  106. package/src/core/Clock.js +1 -1
  107. package/src/core/Object3D.js +1 -5
  108. package/src/core/RenderTarget.js +1 -0
  109. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  110. package/src/loaders/AudioLoader.js +11 -1
  111. package/src/loaders/DataTextureLoader.js +6 -4
  112. package/src/loaders/FileLoader.js +1 -2
  113. package/src/loaders/ImageBitmapLoader.js +4 -6
  114. package/src/loaders/MaterialLoader.js +1 -1
  115. package/src/loaders/ObjectLoader.js +25 -4
  116. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  117. package/src/materials/MeshToonMaterial.js +1 -1
  118. package/src/materials/nodes/Line2NodeMaterial.js +27 -0
  119. package/src/materials/nodes/NodeMaterial.js +0 -27
  120. package/src/materials/nodes/manager/NodeMaterialObserver.js +188 -89
  121. package/src/math/Line3.js +3 -0
  122. package/src/math/Matrix2.js +13 -9
  123. package/src/math/Matrix3.js +13 -9
  124. package/src/math/Matrix4.js +13 -9
  125. package/src/math/Plane.js +4 -3
  126. package/src/math/Triangle.js +1 -1
  127. package/src/math/Vector2.js +11 -7
  128. package/src/math/Vector3.js +12 -8
  129. package/src/math/Vector4.js +13 -9
  130. package/src/nodes/Nodes.js +0 -1
  131. package/src/nodes/TSL.js +1 -1
  132. package/src/nodes/accessors/BufferAttributeNode.js +9 -3
  133. package/src/nodes/accessors/CubeTextureNode.js +7 -1
  134. package/src/nodes/accessors/MaterialProperties.js +2 -5
  135. package/src/nodes/accessors/Object3DNode.js +1 -1
  136. package/src/nodes/accessors/ReferenceBaseNode.js +2 -2
  137. package/src/nodes/accessors/ReferenceNode.js +4 -4
  138. package/src/nodes/accessors/SceneProperties.js +2 -8
  139. package/src/nodes/accessors/StorageBufferNode.js +10 -4
  140. package/src/nodes/accessors/StorageTextureNode.js +4 -9
  141. package/src/nodes/accessors/TextureNode.js +10 -2
  142. package/src/nodes/accessors/UniformArrayNode.js +2 -2
  143. package/src/nodes/code/FunctionCallNode.js +1 -1
  144. package/src/nodes/code/FunctionNode.js +1 -1
  145. package/src/nodes/core/ArrayNode.js +1 -1
  146. package/src/nodes/core/AssignNode.js +1 -1
  147. package/src/nodes/core/AttributeNode.js +1 -1
  148. package/src/nodes/core/BypassNode.js +1 -1
  149. package/src/nodes/core/ContextNode.js +1 -1
  150. package/src/nodes/core/IndexNode.js +2 -1
  151. package/src/nodes/core/InputNode.js +1 -1
  152. package/src/nodes/core/InspectorNode.js +1 -1
  153. package/src/nodes/core/IsolateNode.js +1 -1
  154. package/src/nodes/core/Node.js +83 -12
  155. package/src/nodes/core/NodeBuilder.js +117 -16
  156. package/src/nodes/core/NodeUtils.js +1 -1
  157. package/src/nodes/core/OutputStructNode.js +1 -1
  158. package/src/nodes/core/ParameterNode.js +1 -1
  159. package/src/nodes/core/StackNode.js +1 -1
  160. package/src/nodes/core/StructNode.js +1 -1
  161. package/src/nodes/core/StructTypeNode.js +1 -1
  162. package/src/nodes/core/SubBuildNode.js +1 -1
  163. package/src/nodes/core/UniformGroupNode.js +36 -6
  164. package/src/nodes/core/VarNode.js +1 -1
  165. package/src/nodes/core/VaryingNode.js +1 -1
  166. package/src/nodes/display/NormalMapNode.js +2 -2
  167. package/src/nodes/display/PassNode.js +27 -7
  168. package/src/nodes/display/RenderOutputNode.js +4 -4
  169. package/src/nodes/display/ScreenNode.js +1 -1
  170. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  171. package/src/nodes/display/ViewportTextureNode.js +18 -7
  172. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  173. package/src/nodes/geometry/RangeNode.js +1 -1
  174. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  175. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  176. package/src/nodes/gpgpu/ComputeBuiltinNode.js +1 -1
  177. package/src/nodes/gpgpu/ComputeNode.js +69 -44
  178. package/src/nodes/gpgpu/SubgroupFunctionNode.js +1 -1
  179. package/src/nodes/lighting/LightsNode.js +6 -27
  180. package/src/nodes/lighting/ShadowNode.js +24 -2
  181. package/src/nodes/math/BitcastNode.js +1 -1
  182. package/src/nodes/math/ConditionalNode.js +1 -1
  183. package/src/nodes/math/MathNode.js +73 -1
  184. package/src/nodes/math/OperatorNode.js +1 -1
  185. package/src/nodes/math/PackFloatNode.js +1 -1
  186. package/src/nodes/math/UnpackFloatNode.js +1 -1
  187. package/src/nodes/tsl/TSLBase.js +1 -1
  188. package/src/nodes/tsl/TSLCore.js +21 -3
  189. package/src/nodes/utils/ArrayElementNode.js +1 -1
  190. package/src/nodes/utils/ConvertNode.js +1 -1
  191. package/src/nodes/utils/DebugNode.js +1 -1
  192. package/src/nodes/utils/EventNode.js +30 -0
  193. package/src/nodes/utils/FlipNode.js +1 -1
  194. package/src/nodes/utils/FunctionOverloadingNode.js +1 -1
  195. package/src/nodes/utils/JoinNode.js +1 -1
  196. package/src/nodes/utils/MemberNode.js +1 -1
  197. package/src/nodes/utils/Remap.js +48 -0
  198. package/src/nodes/utils/RotateNode.js +1 -1
  199. package/src/nodes/utils/SetNode.js +1 -1
  200. package/src/nodes/utils/SplitNode.js +1 -1
  201. package/src/objects/BatchedMesh.js +17 -2
  202. package/src/objects/InstancedMesh.js +19 -3
  203. package/src/objects/SkinnedMesh.js +26 -9
  204. package/src/renderers/WebGLRenderer.js +147 -48
  205. package/src/renderers/common/Animation.js +3 -3
  206. package/src/renderers/common/Attributes.js +15 -1
  207. package/src/renderers/common/Backend.js +0 -8
  208. package/src/renderers/common/Background.js +2 -2
  209. package/src/renderers/common/BindGroup.js +1 -8
  210. package/src/renderers/common/Bindings.js +2 -2
  211. package/src/renderers/common/ComputePipeline.js +1 -1
  212. package/src/renderers/common/CubeRenderTarget.js +1 -1
  213. package/src/renderers/common/Info.js +333 -4
  214. package/src/renderers/common/InspectorBase.js +6 -1
  215. package/src/renderers/common/Pipelines.js +36 -3
  216. package/src/renderers/common/ReadbackBuffer.js +78 -0
  217. package/src/renderers/common/RenderBundle.js +3 -1
  218. package/src/renderers/common/RenderBundles.js +5 -2
  219. package/src/renderers/common/RenderObject.js +2 -2
  220. package/src/renderers/common/RenderObjects.js +3 -3
  221. package/src/renderers/common/RenderPipeline.js +35 -6
  222. package/src/renderers/common/Renderer.js +232 -53
  223. package/src/renderers/common/Textures.js +72 -3
  224. package/src/renderers/common/UniformsGroup.js +1 -1
  225. package/src/renderers/common/XRManager.js +34 -27
  226. package/src/renderers/common/extras/PMREMGenerator.js +23 -15
  227. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  228. package/src/renderers/common/nodes/NodeManager.js +230 -99
  229. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  230. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +1 -1
  231. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  232. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +8 -0
  233. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  234. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -3
  235. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  236. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  237. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  238. package/src/renderers/shaders/ShaderChunk.js +2 -0
  239. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  240. package/src/renderers/shaders/ShaderLib.js +0 -1
  241. package/src/renderers/shaders/UniformsLib.js +7 -2
  242. package/src/renderers/shaders/UniformsUtils.js +27 -5
  243. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  244. package/src/renderers/webgl/WebGLBackground.js +13 -13
  245. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  246. package/src/renderers/webgl/WebGLCapabilities.js +6 -0
  247. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  248. package/src/renderers/webgl/WebGLMaterials.js +12 -13
  249. package/src/renderers/webgl/WebGLOutput.js +4 -1
  250. package/src/renderers/webgl/WebGLProgram.js +4 -0
  251. package/src/renderers/webgl/WebGLPrograms.js +19 -3
  252. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  253. package/src/renderers/webgl/WebGLState.js +43 -0
  254. package/src/renderers/webgl/WebGLTextures.js +129 -26
  255. package/src/renderers/webgl/WebGLUniformsGroups.js +19 -0
  256. package/src/renderers/webgl-fallback/WebGLBackend.js +106 -65
  257. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  258. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +29 -51
  259. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  260. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  261. package/src/renderers/webgl-fallback/utils/WebGLState.js +42 -1
  262. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +63 -50
  263. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +1 -1
  264. package/src/renderers/webgpu/WebGPUBackend.js +160 -146
  265. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +55 -33
  266. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +103 -17
  267. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
  268. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  269. package/src/renderers/webgpu/utils/WebGPUConstants.js +8 -0
  270. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +91 -17
  271. package/src/renderers/webgpu/utils/WebGPUUtils.js +18 -2
  272. package/src/renderers/webxr/WebXRController.js +12 -0
  273. package/src/textures/HTMLTexture.js +74 -0
  274. package/src/textures/Source.js +1 -1
  275. package/src/textures/Texture.js +13 -2
  276. package/src/utils.js +23 -1
  277. package/src/nodes/utils/RemapNode.js +0 -125
@@ -3,7 +3,7 @@
3
3
  * Copyright 2010-2026 Three.js Authors
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- const REVISION = '183';
6
+ const REVISION = '184';
7
7
 
8
8
  /**
9
9
  * Represents mouse buttons and interaction types in context of controls.
@@ -2068,6 +2068,28 @@ function warnOnce( ...params ) {
2068
2068
 
2069
2069
  }
2070
2070
 
2071
+ /**
2072
+ * Yields execution to the main thread to allow rendering and other tasks.
2073
+ * Uses scheduler.yield() when available (Chrome 115+), falls back to requestAnimationFrame.
2074
+ *
2075
+ * @return {Promise<void>}
2076
+ */
2077
+ function yieldToMain() {
2078
+
2079
+ if ( typeof self !== 'undefined' && typeof self.scheduler !== 'undefined' && typeof self.scheduler.yield !== 'undefined' ) {
2080
+
2081
+ return self.scheduler.yield();
2082
+
2083
+ }
2084
+
2085
+ return new Promise( resolve => {
2086
+
2087
+ requestAnimationFrame( resolve );
2088
+
2089
+ } );
2090
+
2091
+ }
2092
+
2071
2093
  /**
2072
2094
  * Asynchronously probes for WebGL sync object completion.
2073
2095
  *
@@ -3008,13 +3030,7 @@ const MathUtils = {
3008
3030
  */
3009
3031
  class Vector2 {
3010
3032
 
3011
- /**
3012
- * Constructs a new 2D vector.
3013
- *
3014
- * @param {number} [x=0] - The x value of this vector.
3015
- * @param {number} [y=0] - The y value of this vector.
3016
- */
3017
- constructor( x = 0, y = 0 ) {
3033
+ static {
3018
3034
 
3019
3035
  /**
3020
3036
  * This flag can be used for type testing.
@@ -3025,6 +3041,16 @@ class Vector2 {
3025
3041
  */
3026
3042
  Vector2.prototype.isVector2 = true;
3027
3043
 
3044
+ }
3045
+
3046
+ /**
3047
+ * Constructs a new 2D vector.
3048
+ *
3049
+ * @param {number} [x=0] - The x value of this vector.
3050
+ * @param {number} [y=0] - The y value of this vector.
3051
+ */
3052
+ constructor( x = 0, y = 0 ) {
3053
+
3028
3054
  /**
3029
3055
  * The x value of this vector.
3030
3056
  *
@@ -4785,14 +4811,7 @@ class Quaternion {
4785
4811
  */
4786
4812
  class Vector3 {
4787
4813
 
4788
- /**
4789
- * Constructs a new 3D vector.
4790
- *
4791
- * @param {number} [x=0] - The x value of this vector.
4792
- * @param {number} [y=0] - The y value of this vector.
4793
- * @param {number} [z=0] - The z value of this vector.
4794
- */
4795
- constructor( x = 0, y = 0, z = 0 ) {
4814
+ static {
4796
4815
 
4797
4816
  /**
4798
4817
  * This flag can be used for type testing.
@@ -4803,6 +4822,17 @@ class Vector3 {
4803
4822
  */
4804
4823
  Vector3.prototype.isVector3 = true;
4805
4824
 
4825
+ }
4826
+
4827
+ /**
4828
+ * Constructs a new 3D vector.
4829
+ *
4830
+ * @param {number} [x=0] - The x value of this vector.
4831
+ * @param {number} [y=0] - The y value of this vector.
4832
+ * @param {number} [z=0] - The z value of this vector.
4833
+ */
4834
+ constructor( x = 0, y = 0, z = 0 ) {
4835
+
4806
4836
  /**
4807
4837
  * The x value of this vector.
4808
4838
  *
@@ -6043,6 +6073,19 @@ const _quaternion$5 = /*@__PURE__*/ new Quaternion();
6043
6073
  */
6044
6074
  class Matrix3 {
6045
6075
 
6076
+ static {
6077
+
6078
+ /**
6079
+ * This flag can be used for type testing.
6080
+ *
6081
+ * @type {boolean}
6082
+ * @readonly
6083
+ * @default true
6084
+ */
6085
+ Matrix3.prototype.isMatrix3 = true;
6086
+
6087
+ }
6088
+
6046
6089
  /**
6047
6090
  * Constructs a new 3x3 matrix. The arguments are supposed to be
6048
6091
  * in row-major order. If no arguments are provided, the constructor
@@ -6060,15 +6103,6 @@ class Matrix3 {
6060
6103
  */
6061
6104
  constructor( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {
6062
6105
 
6063
- /**
6064
- * This flag can be used for type testing.
6065
- *
6066
- * @type {boolean}
6067
- * @readonly
6068
- * @default true
6069
- */
6070
- Matrix3.prototype.isMatrix3 = true;
6071
-
6072
6106
  /**
6073
6107
  * A column-major list of matrix values.
6074
6108
  *
@@ -7058,7 +7092,7 @@ class Source {
7058
7092
 
7059
7093
  } else if ( ( typeof VideoFrame !== 'undefined' ) && ( data instanceof VideoFrame ) ) {
7060
7094
 
7061
- target.set( data.displayHeight, data.displayWidth, 0 );
7095
+ target.set( data.displayWidth, data.displayHeight, 0 );
7062
7096
 
7063
7097
  } else if ( data !== null ) {
7064
7098
 
@@ -7546,6 +7580,15 @@ class Texture extends EventDispatcher {
7546
7580
  */
7547
7581
  this.pmremVersion = 0;
7548
7582
 
7583
+ /**
7584
+ * Whether the texture should use one of the 16 bit integer formats which are normalized
7585
+ * to [0, 1] or [-1, 1] (depending on signed/unsigned) when sampled.
7586
+ *
7587
+ * @type {boolean}
7588
+ * @default false
7589
+ */
7590
+ this.normalized = false;
7591
+
7549
7592
  }
7550
7593
 
7551
7594
  /**
@@ -7586,14 +7629,14 @@ class Texture extends EventDispatcher {
7586
7629
 
7587
7630
  }
7588
7631
 
7589
- set image( value = null ) {
7632
+ set image( value ) {
7590
7633
 
7591
7634
  this.source.data = value;
7592
7635
 
7593
7636
  }
7594
7637
 
7595
7638
  /**
7596
- * Updates the texture transformation matrix from the from the properties {@link Texture#offset},
7639
+ * Updates the texture transformation matrix from the properties {@link Texture#offset},
7597
7640
  * {@link Texture#repeat}, {@link Texture#rotation}, and {@link Texture#center}.
7598
7641
  */
7599
7642
  updateMatrix() {
@@ -7661,6 +7704,7 @@ class Texture extends EventDispatcher {
7661
7704
  this.format = source.format;
7662
7705
  this.internalFormat = source.internalFormat;
7663
7706
  this.type = source.type;
7707
+ this.normalized = source.normalized;
7664
7708
 
7665
7709
  this.offset.copy( source.offset );
7666
7710
  this.repeat.copy( source.repeat );
@@ -7779,6 +7823,7 @@ class Texture extends EventDispatcher {
7779
7823
  format: this.format,
7780
7824
  internalFormat: this.internalFormat,
7781
7825
  type: this.type,
7826
+ normalized: this.normalized,
7782
7827
  colorSpace: this.colorSpace,
7783
7828
 
7784
7829
  minFilter: this.minFilter,
@@ -8002,15 +8047,7 @@ Texture.DEFAULT_ANISOTROPY = 1;
8002
8047
  */
8003
8048
  class Vector4 {
8004
8049
 
8005
- /**
8006
- * Constructs a new 4D vector.
8007
- *
8008
- * @param {number} [x=0] - The x value of this vector.
8009
- * @param {number} [y=0] - The y value of this vector.
8010
- * @param {number} [z=0] - The z value of this vector.
8011
- * @param {number} [w=1] - The w value of this vector.
8012
- */
8013
- constructor( x = 0, y = 0, z = 0, w = 1 ) {
8050
+ static {
8014
8051
 
8015
8052
  /**
8016
8053
  * This flag can be used for type testing.
@@ -8021,6 +8058,18 @@ class Vector4 {
8021
8058
  */
8022
8059
  Vector4.prototype.isVector4 = true;
8023
8060
 
8061
+ }
8062
+
8063
+ /**
8064
+ * Constructs a new 4D vector.
8065
+ *
8066
+ * @param {number} [x=0] - The x value of this vector.
8067
+ * @param {number} [y=0] - The y value of this vector.
8068
+ * @param {number} [z=0] - The z value of this vector.
8069
+ * @param {number} [w=1] - The w value of this vector.
8070
+ */
8071
+ constructor( x = 0, y = 0, z = 0, w = 1 ) {
8072
+
8024
8073
  /**
8025
8074
  * The x value of this vector.
8026
8075
  *
@@ -9401,6 +9450,7 @@ class RenderTarget extends EventDispatcher {
9401
9450
  if ( source.depthTexture !== null ) this.depthTexture = source.depthTexture.clone();
9402
9451
 
9403
9452
  this.samples = source.samples;
9453
+ this.multiview = source.multiview;
9404
9454
 
9405
9455
  return this;
9406
9456
 
@@ -9817,6 +9867,19 @@ class WebGL3DRenderTarget extends WebGLRenderTarget {
9817
9867
  */
9818
9868
  class Matrix4 {
9819
9869
 
9870
+ static {
9871
+
9872
+ /**
9873
+ * This flag can be used for type testing.
9874
+ *
9875
+ * @type {boolean}
9876
+ * @readonly
9877
+ * @default true
9878
+ */
9879
+ Matrix4.prototype.isMatrix4 = true;
9880
+
9881
+ }
9882
+
9820
9883
  /**
9821
9884
  * Constructs a new 4x4 matrix. The arguments are supposed to be
9822
9885
  * in row-major order. If no arguments are provided, the constructor
@@ -9841,15 +9904,6 @@ class Matrix4 {
9841
9904
  */
9842
9905
  constructor( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {
9843
9906
 
9844
- /**
9845
- * This flag can be used for type testing.
9846
- *
9847
- * @type {boolean}
9848
- * @readonly
9849
- * @default true
9850
- */
9851
- Matrix4.prototype.isMatrix4 = true;
9852
-
9853
9907
  /**
9854
9908
  * A column-major list of matrix values.
9855
9909
  *
@@ -13229,11 +13283,7 @@ class Object3D extends EventDispatcher {
13229
13283
  this.quaternion.copy( source.quaternion );
13230
13284
  this.scale.copy( source.scale );
13231
13285
 
13232
- if ( source.pivot !== null ) {
13233
-
13234
- this.pivot = source.pivot.clone();
13235
-
13236
- }
13286
+ this.pivot = ( source.pivot !== null ) ? source.pivot.clone() : null;
13237
13287
 
13238
13288
  this.matrix.copy( source.matrix );
13239
13289
  this.matrixWorld.copy( source.matrixWorld );
@@ -13451,6 +13501,7 @@ class WebXRController {
13451
13501
  this._grip.linearVelocity = new Vector3();
13452
13502
  this._grip.hasAngularVelocity = false;
13453
13503
  this._grip.angularVelocity = new Vector3();
13504
+ this._grip.eventsEnabled = false;
13454
13505
 
13455
13506
  }
13456
13507
 
@@ -13663,6 +13714,17 @@ class WebXRController {
13663
13714
 
13664
13715
  }
13665
13716
 
13717
+ // grip update event if enabled
13718
+ if ( grip.eventsEnabled ) {
13719
+
13720
+ grip.dispatchEvent( {
13721
+ type: 'gripUpdated',
13722
+ data: inputSource,
13723
+ target: this
13724
+ } );
13725
+
13726
+ }
13727
+
13666
13728
  }
13667
13729
 
13668
13730
  }
@@ -15293,7 +15355,7 @@ class Triangle {
15293
15355
  _v1$5.subVectors( a, b );
15294
15356
 
15295
15357
  // strictly front facing
15296
- return ( _v0$2.cross( _v1$5 ).dot( direction ) < 0 ) ? true : false;
15358
+ return _v0$2.cross( _v1$5 ).dot( direction ) < 0;
15297
15359
 
15298
15360
  }
15299
15361
 
@@ -16625,7 +16687,7 @@ let _id$2 = 0;
16625
16687
  * When working with vector-like data, the `fromBufferAttribute( attribute, index )`
16626
16688
  * helper methods on vector and color class might be helpful. E.g. {@link Vector3#fromBufferAttribute}.
16627
16689
  */
16628
- class BufferAttribute {
16690
+ class BufferAttribute extends EventDispatcher {
16629
16691
 
16630
16692
  /**
16631
16693
  * Constructs a new buffer attribute.
@@ -16636,6 +16698,8 @@ class BufferAttribute {
16636
16698
  */
16637
16699
  constructor( array, itemSize, normalized = false ) {
16638
16700
 
16701
+ super();
16702
+
16639
16703
  if ( Array.isArray( array ) ) {
16640
16704
 
16641
16705
  throw new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );
@@ -17282,6 +17346,15 @@ class BufferAttribute {
17282
17346
 
17283
17347
  }
17284
17348
 
17349
+ /**
17350
+ * Disposes of the buffer attribute. Available only in {@link WebGPURenderer}.
17351
+ */
17352
+ dispose() {
17353
+
17354
+ this.dispatchEvent( { type: 'dispose' } );
17355
+
17356
+ }
17357
+
17285
17358
  }
17286
17359
 
17287
17360
  /**
@@ -23405,12 +23478,12 @@ function checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, n
23405
23478
 
23406
23479
  }
23407
23480
 
23408
- const _basePosition = /*@__PURE__*/ new Vector3();
23481
+ const _baseVector = /*@__PURE__*/ new Vector4();
23409
23482
 
23410
23483
  const _skinIndex = /*@__PURE__*/ new Vector4();
23411
23484
  const _skinWeight = /*@__PURE__*/ new Vector4();
23412
23485
 
23413
- const _vector3 = /*@__PURE__*/ new Vector3();
23486
+ const _vector4 = /*@__PURE__*/ new Vector4();
23414
23487
  const _matrix4 = /*@__PURE__*/ new Matrix4();
23415
23488
  const _vertex = /*@__PURE__*/ new Vector3();
23416
23489
 
@@ -23706,12 +23779,12 @@ class SkinnedMesh extends Mesh {
23706
23779
 
23707
23780
  /**
23708
23781
  * Applies the bone transform associated with the given index to the given
23709
- * vertex position. Returns the updated vector.
23782
+ * vector. Can be used to transform positions or direction vectors by providing
23783
+ * a Vector4 with 1 or 0 in the w component respectively. Returns the updated vector.
23710
23784
  *
23711
23785
  * @param {number} index - The vertex index.
23712
- * @param {Vector3} target - The target object that is used to store the method's result.
23713
- * the skinned mesh's world matrix will be used instead.
23714
- * @return {Vector3} The updated vertex position.
23786
+ * @param {Vector3|Vector4} target - The target object that is used to store the method's result.
23787
+ * @return {Vector3|Vector4} The updated vertex attribute data.
23715
23788
  */
23716
23789
  applyBoneTransform( index, target ) {
23717
23790
 
@@ -23721,9 +23794,19 @@ class SkinnedMesh extends Mesh {
23721
23794
  _skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );
23722
23795
  _skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );
23723
23796
 
23724
- _basePosition.copy( target ).applyMatrix4( this.bindMatrix );
23797
+ if ( target.isVector4 ) {
23798
+
23799
+ _baseVector.copy( target );
23800
+ target.set( 0, 0, 0, 0 );
23725
23801
 
23726
- target.set( 0, 0, 0 );
23802
+ } else {
23803
+
23804
+ _baseVector.set( ...target, 1 );
23805
+ target.set( 0, 0, 0 );
23806
+
23807
+ }
23808
+
23809
+ _baseVector.applyMatrix4( this.bindMatrix );
23727
23810
 
23728
23811
  for ( let i = 0; i < 4; i ++ ) {
23729
23812
 
@@ -23735,12 +23818,19 @@ class SkinnedMesh extends Mesh {
23735
23818
 
23736
23819
  _matrix4.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );
23737
23820
 
23738
- target.addScaledVector( _vector3.copy( _basePosition ).applyMatrix4( _matrix4 ), weight );
23821
+ target.addScaledVector( _vector4.copy( _baseVector ).applyMatrix4( _matrix4 ), weight );
23739
23822
 
23740
23823
  }
23741
23824
 
23742
23825
  }
23743
23826
 
23827
+ if ( target.isVector4 ) {
23828
+
23829
+ // ensure the homogenous coordinate remains unchanged after vector operations
23830
+ target.w = _baseVector.w;
23831
+
23832
+ }
23833
+
23744
23834
  return target.applyMatrix4( this.bindMatrixInverse );
23745
23835
 
23746
23836
  }
@@ -24521,10 +24611,19 @@ class InstancedMesh extends Mesh {
24521
24611
  *
24522
24612
  * @param {number} index - The instance index.
24523
24613
  * @param {Color} color - The target object that is used to store the method's result.
24614
+ * @return {Color} A reference to the target color.
24524
24615
  */
24525
24616
  getColorAt( index, color ) {
24526
24617
 
24527
- color.fromArray( this.instanceColor.array, index * 3 );
24618
+ if ( this.instanceColor === null ) {
24619
+
24620
+ return color.setRGB( 1, 1, 1 );
24621
+
24622
+ } else {
24623
+
24624
+ return color.fromArray( this.instanceColor.array, index * 3 );
24625
+
24626
+ }
24528
24627
 
24529
24628
  }
24530
24629
 
@@ -24533,10 +24632,11 @@ class InstancedMesh extends Mesh {
24533
24632
  *
24534
24633
  * @param {number} index - The instance index.
24535
24634
  * @param {Matrix4} matrix - The target object that is used to store the method's result.
24635
+ * @return {Matrix4} A reference to the target matrix.
24536
24636
  */
24537
24637
  getMatrixAt( index, matrix ) {
24538
24638
 
24539
- matrix.fromArray( this.instanceMatrix.array, index * 16 );
24639
+ return matrix.fromArray( this.instanceMatrix.array, index * 16 );
24540
24640
 
24541
24641
  }
24542
24642
 
@@ -24622,6 +24722,7 @@ class InstancedMesh extends Mesh {
24622
24722
  *
24623
24723
  * @param {number} index - The instance index.
24624
24724
  * @param {Color} color - The instance color.
24725
+ * @return {InstancedMesh} A reference to this instanced mesh.
24625
24726
  */
24626
24727
  setColorAt( index, color ) {
24627
24728
 
@@ -24632,19 +24733,22 @@ class InstancedMesh extends Mesh {
24632
24733
  }
24633
24734
 
24634
24735
  color.toArray( this.instanceColor.array, index * 3 );
24736
+ return this;
24635
24737
 
24636
24738
  }
24637
24739
 
24638
24740
  /**
24639
24741
  * Sets the given local transformation matrix to the defined instance. Make sure you set the `needsUpdate` flag of
24640
- * {@link InstancedMesh#instanceMatrix} to `true` after updating all the colors.
24742
+ * {@link InstancedMesh#instanceMatrix} to `true` after updating all the matrices.
24641
24743
  *
24642
24744
  * @param {number} index - The instance index.
24643
24745
  * @param {Matrix4} matrix - The local transformation.
24746
+ * @return {InstancedMesh} A reference to this instanced mesh.
24644
24747
  */
24645
24748
  setMatrixAt( index, matrix ) {
24646
24749
 
24647
24750
  matrix.toArray( this.instanceMatrix.array, index * 16 );
24751
+ return this;
24648
24752
 
24649
24753
  }
24650
24754
 
@@ -24655,6 +24759,7 @@ class InstancedMesh extends Mesh {
24655
24759
  * @param {number} index - The instance index.
24656
24760
  * @param {Mesh} object - A mesh which `morphTargetInfluences` property containing the morph target weights
24657
24761
  * of a single instance.
24762
+ * @return {InstancedMesh} A reference to this instanced mesh.
24658
24763
  */
24659
24764
  setMorphAt( index, object ) {
24660
24765
 
@@ -24685,6 +24790,7 @@ class InstancedMesh extends Mesh {
24685
24790
  array[ dataIndex ] = morphBaseInfluence;
24686
24791
 
24687
24792
  array.set( objectInfluences, dataIndex + 1 );
24793
+ return this;
24688
24794
 
24689
24795
  }
24690
24796
 
@@ -24920,9 +25026,10 @@ class Plane {
24920
25026
  *
24921
25027
  * @param {Line3} line - The line to compute the intersection for.
24922
25028
  * @param {Vector3} target - The target vector that is used to store the method's result.
24923
- * @return {?Vector3} The intersection point.
25029
+ * @param {boolean} [clampToLine=true] - Whether to clamp the intersection to the line segment.
25030
+ * @return {?Vector3} The intersection point. Returns `null` if no intersection is detected.
24924
25031
  */
24925
- intersectLine( line, target ) {
25032
+ intersectLine( line, target, clampToLine = true ) {
24926
25033
 
24927
25034
  const direction = line.delta( _vector1 );
24928
25035
 
@@ -24944,7 +25051,7 @@ class Plane {
24944
25051
 
24945
25052
  const t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;
24946
25053
 
24947
- if ( t < 0 || t > 1 ) {
25054
+ if ( ( clampToLine === true ) && ( t < 0 || t > 1 ) ) {
24948
25055
 
24949
25056
  return null;
24950
25057
 
@@ -25864,7 +25971,6 @@ class BatchedMesh extends Mesh {
25864
25971
  this._multiDrawCounts = new Int32Array( maxInstanceCount );
25865
25972
  this._multiDrawStarts = new Int32Array( maxInstanceCount );
25866
25973
  this._multiDrawCount = 0;
25867
- this._multiDrawInstances = null;
25868
25974
 
25869
25975
  // Local matrix per geometry by using data texture
25870
25976
  this._matricesTexture = null;
@@ -26725,7 +26831,23 @@ class BatchedMesh extends Mesh {
26725
26831
  getColorAt( instanceId, color ) {
26726
26832
 
26727
26833
  this.validateInstanceId( instanceId );
26728
- return color.fromArray( this._colorsTexture.image.data, instanceId * 4 );
26834
+ if ( this._colorsTexture === null ) {
26835
+
26836
+ if ( color.isVector4 ) {
26837
+
26838
+ return color.set( 1, 1, 1, 1 );
26839
+
26840
+ } else {
26841
+
26842
+ return color.setRGB( 1, 1, 1 );
26843
+
26844
+ }
26845
+
26846
+ } else {
26847
+
26848
+ return color.fromArray( this._colorsTexture.image.data, instanceId * 4 );
26849
+
26850
+ }
26729
26851
 
26730
26852
  }
26731
26853
 
@@ -28752,6 +28874,77 @@ class CanvasTexture extends Texture {
28752
28874
 
28753
28875
  }
28754
28876
 
28877
+ /**
28878
+ * Creates a texture from an HTML element.
28879
+ *
28880
+ * This is almost the same as the base texture class, except that it sets {@link Texture#needsUpdate}
28881
+ * to `true` immediately and listens for the parent canvas's paint events to trigger updates.
28882
+ *
28883
+ * @augments Texture
28884
+ */
28885
+ class HTMLTexture extends Texture {
28886
+
28887
+ /**
28888
+ * Constructs a new texture.
28889
+ *
28890
+ * @param {HTMLElement} [element] - The HTML element.
28891
+ * @param {number} [mapping=Texture.DEFAULT_MAPPING] - The texture mapping.
28892
+ * @param {number} [wrapS=ClampToEdgeWrapping] - The wrapS value.
28893
+ * @param {number} [wrapT=ClampToEdgeWrapping] - The wrapT value.
28894
+ * @param {number} [magFilter=LinearFilter] - The mag filter value.
28895
+ * @param {number} [minFilter=LinearMipmapLinearFilter] - The min filter value.
28896
+ * @param {number} [format=RGBAFormat] - The texture format.
28897
+ * @param {number} [type=UnsignedByteType] - The texture type.
28898
+ * @param {number} [anisotropy=Texture.DEFAULT_ANISOTROPY] - The anisotropy value.
28899
+ */
28900
+ constructor( element, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {
28901
+
28902
+ super( element, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );
28903
+
28904
+ /**
28905
+ * This flag can be used for type testing.
28906
+ *
28907
+ * @type {boolean}
28908
+ * @readonly
28909
+ * @default true
28910
+ */
28911
+ this.isHTMLTexture = true;
28912
+ this.generateMipmaps = false;
28913
+
28914
+ this.needsUpdate = true;
28915
+
28916
+ const parent = element ? element.parentNode : null;
28917
+
28918
+ if ( parent !== null && 'requestPaint' in parent ) {
28919
+
28920
+ parent.onpaint = () => {
28921
+
28922
+ this.needsUpdate = true;
28923
+
28924
+ };
28925
+
28926
+ parent.requestPaint();
28927
+
28928
+ }
28929
+
28930
+ }
28931
+
28932
+ dispose() {
28933
+
28934
+ const parent = this.image ? this.image.parentNode : null;
28935
+
28936
+ if ( parent !== null && 'onpaint' in parent ) {
28937
+
28938
+ parent.onpaint = null;
28939
+
28940
+ }
28941
+
28942
+ super.dispose();
28943
+
28944
+ }
28945
+
28946
+ }
28947
+
28755
28948
  /**
28756
28949
  * This class can be used to automatically save the depth information of a
28757
28950
  * rendering into a texture.
@@ -31417,6 +31610,7 @@ function CubicPoly() {
31417
31610
  //
31418
31611
 
31419
31612
  const tmp = /*@__PURE__*/ new Vector3();
31613
+ const tmp2 = /*@__PURE__*/ new Vector3();
31420
31614
  const px = /*@__PURE__*/ new CubicPoly();
31421
31615
  const py = /*@__PURE__*/ new CubicPoly();
31422
31616
  const pz = /*@__PURE__*/ new CubicPoly();
@@ -31541,8 +31735,8 @@ class CatmullRomCurve3 extends Curve {
31541
31735
  } else {
31542
31736
 
31543
31737
  // extrapolate first point
31544
- tmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );
31545
- p0 = tmp;
31738
+ tmp2.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );
31739
+ p0 = tmp2;
31546
31740
 
31547
31741
  }
31548
31742
 
@@ -37125,10 +37319,7 @@ function cloneUniforms( src ) {
37125
37319
 
37126
37320
  const property = src[ u ][ p ];
37127
37321
 
37128
- if ( property && ( property.isColor ||
37129
- property.isMatrix3 || property.isMatrix4 ||
37130
- property.isVector2 || property.isVector3 || property.isVector4 ||
37131
- property.isTexture || property.isQuaternion ) ) {
37322
+ if ( isThreeObject( property ) ) {
37132
37323
 
37133
37324
  if ( property.isRenderTargetTexture ) {
37134
37325
 
@@ -37143,7 +37334,23 @@ function cloneUniforms( src ) {
37143
37334
 
37144
37335
  } else if ( Array.isArray( property ) ) {
37145
37336
 
37146
- dst[ u ][ p ] = property.slice();
37337
+ if ( isThreeObject( property[ 0 ] ) ) {
37338
+
37339
+ const clonedProperty = [];
37340
+
37341
+ for ( let i = 0, l = property.length; i < l; i ++ ) {
37342
+
37343
+ clonedProperty[ i ] = property[ i ].clone();
37344
+
37345
+ }
37346
+
37347
+ dst[ u ][ p ] = clonedProperty;
37348
+
37349
+ } else {
37350
+
37351
+ dst[ u ][ p ] = property.slice();
37352
+
37353
+ }
37147
37354
 
37148
37355
  } else {
37149
37356
 
@@ -37187,6 +37394,15 @@ function mergeUniforms( uniforms ) {
37187
37394
 
37188
37395
  }
37189
37396
 
37397
+ function isThreeObject( property ) {
37398
+
37399
+ return ( property && ( property.isColor ||
37400
+ property.isMatrix3 || property.isMatrix4 ||
37401
+ property.isVector2 || property.isVector3 || property.isVector4 ||
37402
+ property.isTexture || property.isQuaternion ) );
37403
+
37404
+ }
37405
+
37190
37406
  function cloneUniformsGroups( src ) {
37191
37407
 
37192
37408
  const dst = [];
@@ -39081,7 +39297,7 @@ class MeshToonMaterial extends Material {
39081
39297
 
39082
39298
  /**
39083
39299
  * Gradient map for toon shading. It's required to set
39084
- * {@link Texture#minFilter} and {@link Texture#magFilter} to {@linkNearestFilter}
39300
+ * {@link Texture#minFilter} and {@link Texture#magFilter} to {@link NearestFilter}
39085
39301
  * when using this type of texture.
39086
39302
  *
39087
39303
  * @type {?Texture}
@@ -43881,7 +44097,6 @@ class FileLoader extends Loader {
43881
44097
  * @param {function(any)} onLoad - Executed when the loading process has been finished.
43882
44098
  * @param {onProgressCallback} [onProgress] - Executed while the loading is in progress.
43883
44099
  * @param {onErrorCallback} [onError] - Executed when errors occur.
43884
- * @return {any|undefined} The cached resource if available.
43885
44100
  */
43886
44101
  load( url, onLoad, onProgress, onError ) {
43887
44102
 
@@ -43905,7 +44120,7 @@ class FileLoader extends Loader {
43905
44120
 
43906
44121
  }, 0 );
43907
44122
 
43908
- return cached;
44123
+ return;
43909
44124
 
43910
44125
  }
43911
44126
 
@@ -44722,19 +44937,20 @@ class DataTextureLoader extends Loader {
44722
44937
 
44723
44938
  texData = scope.parse( buffer );
44724
44939
 
44725
- } catch ( error ) {
44940
+ } catch ( e ) {
44726
44941
 
44727
44942
  if ( onError !== undefined ) {
44728
44943
 
44729
- onError( error );
44944
+ onError( e );
44730
44945
 
44731
44946
  } else {
44732
44947
 
44733
- error( error );
44734
- return;
44948
+ error( e );
44735
44949
 
44736
44950
  }
44737
44951
 
44952
+ return;
44953
+
44738
44954
  }
44739
44955
 
44740
44956
  if ( texData.image !== undefined ) {
@@ -47468,7 +47684,7 @@ class MaterialLoader extends Loader {
47468
47684
 
47469
47685
  if ( typeof json.vertexColors === 'number' ) {
47470
47686
 
47471
- material.vertexColors = ( json.vertexColors > 0 ) ? true : false;
47687
+ material.vertexColors = json.vertexColors > 0;
47472
47688
 
47473
47689
  } else {
47474
47690
 
@@ -48034,6 +48250,8 @@ class BufferGeometryLoader extends Loader {
48034
48250
 
48035
48251
  }
48036
48252
 
48253
+ const _customGeometries = {};
48254
+
48037
48255
  /**
48038
48256
  * A loader for loading a JSON resource in the [JSON Object/Scene format](https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4).
48039
48257
  * The files are internally loaded via {@link FileLoader}.
@@ -48090,11 +48308,11 @@ class ObjectLoader extends Loader {
48090
48308
 
48091
48309
  json = JSON.parse( text );
48092
48310
 
48093
- } catch ( error ) {
48311
+ } catch ( e ) {
48094
48312
 
48095
- if ( onError !== undefined ) onError( error );
48313
+ if ( onError !== undefined ) onError( e );
48096
48314
 
48097
- error( 'ObjectLoader: Can\'t parse ' + url + '.', error.message );
48315
+ error( 'ObjectLoader: Can\'t parse ' + url + '.', e.message );
48098
48316
 
48099
48317
  return;
48100
48318
 
@@ -48244,6 +48462,20 @@ class ObjectLoader extends Loader {
48244
48462
 
48245
48463
  }
48246
48464
 
48465
+ /**
48466
+ * Registers the given geometry at the internal
48467
+ * geometry library.
48468
+ *
48469
+ * @static
48470
+ * @param {string} type - The geometry type.
48471
+ * @param {BufferGeometry.constructor} geometryClass - The geometry class.
48472
+ */
48473
+ static registerGeometry( type, geometryClass ) {
48474
+
48475
+ _customGeometries[ type ] = geometryClass;
48476
+
48477
+ }
48478
+
48247
48479
  // internals
48248
48480
 
48249
48481
  parseShapes( json ) {
@@ -48324,9 +48556,13 @@ class ObjectLoader extends Loader {
48324
48556
 
48325
48557
  geometry = Geometries[ data.type ].fromJSON( data, shapes );
48326
48558
 
48559
+ } else if ( data.type in _customGeometries ) {
48560
+
48561
+ geometry = _customGeometries[ data.type ].fromJSON( data, shapes );
48562
+
48327
48563
  } else {
48328
48564
 
48329
- warn( `ObjectLoader: Unsupported geometry type "${ data.type }"` );
48565
+ warn( `ObjectLoader: Unknown geometry type "${ data.type }". Use .registerGeometry() before starting the deserialization process.` );
48330
48566
 
48331
48567
  }
48332
48568
 
@@ -48706,6 +48942,7 @@ class ObjectLoader extends Loader {
48706
48942
  if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;
48707
48943
  if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;
48708
48944
  if ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;
48945
+ if ( data.normalized !== undefined ) texture.normalized = data.normalized;
48709
48946
 
48710
48947
  if ( data.userData !== undefined ) texture.userData = data.userData;
48711
48948
 
@@ -49335,6 +49572,9 @@ class ImageBitmapLoader extends Loader {
49335
49572
  * Sets the given loader options. The structure of the object must match the `options` parameter of
49336
49573
  * [createImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap).
49337
49574
  *
49575
+ * Note: When caching is enabled, the cache key is based on the URL only. Loading the same URL with
49576
+ * different options will return the cached result of the first request.
49577
+ *
49338
49578
  * @param {Object} options - The loader options to set.
49339
49579
  * @return {ImageBitmapLoader} A reference to this image bitmap loader.
49340
49580
  */
@@ -49353,7 +49593,6 @@ class ImageBitmapLoader extends Loader {
49353
49593
  * @param {function(ImageBitmap)} onLoad - Executed when the loading process has been finished.
49354
49594
  * @param {onProgressCallback} onProgress - Unsupported in this loader.
49355
49595
  * @param {onErrorCallback} onError - Executed when errors occur.
49356
- * @return {ImageBitmap|undefined} The image bitmap.
49357
49596
  */
49358
49597
  load( url, onLoad, onProgress, onError ) {
49359
49598
 
@@ -49391,8 +49630,6 @@ class ImageBitmapLoader extends Loader {
49391
49630
 
49392
49631
  scope.manager.itemEnd( url );
49393
49632
 
49394
- return imageBitmap;
49395
-
49396
49633
  }
49397
49634
 
49398
49635
  } );
@@ -49410,7 +49647,7 @@ class ImageBitmapLoader extends Loader {
49410
49647
 
49411
49648
  }, 0 );
49412
49649
 
49413
- return cached;
49650
+ return;
49414
49651
 
49415
49652
  }
49416
49653
 
@@ -49435,8 +49672,6 @@ class ImageBitmapLoader extends Loader {
49435
49672
 
49436
49673
  scope.manager.itemEnd( url );
49437
49674
 
49438
- return imageBitmap;
49439
-
49440
49675
  } ).catch( function ( e ) {
49441
49676
 
49442
49677
  if ( onError ) onError( e );
@@ -49483,7 +49718,7 @@ class AudioContext {
49483
49718
  /**
49484
49719
  * Returns the global native audio context.
49485
49720
  *
49486
- * @return {AudioContext} The native audio context.
49721
+ * @return {Window.AudioContext} The native audio context.
49487
49722
  */
49488
49723
  static getContext() {
49489
49724
 
@@ -49500,7 +49735,7 @@ class AudioContext {
49500
49735
  /**
49501
49736
  * Allows to set the global native audio context from outside.
49502
49737
  *
49503
- * @param {AudioContext} value - The native context to set.
49738
+ * @param {Window.AudioContext} value - The native context to set.
49504
49739
  */
49505
49740
  static setContext( value ) {
49506
49741
 
@@ -49567,11 +49802,21 @@ class AudioLoader extends Loader {
49567
49802
  const bufferCopy = buffer.slice( 0 );
49568
49803
 
49569
49804
  const context = AudioContext.getContext();
49805
+
49806
+ const decodeUrl = url + '#decode';
49807
+ scope.manager.itemStart( decodeUrl ); // prevent loading manager from completing too early, see #33378
49808
+
49570
49809
  context.decodeAudioData( bufferCopy, function ( audioBuffer ) {
49571
49810
 
49572
49811
  onLoad( audioBuffer );
49812
+ scope.manager.itemEnd( decodeUrl );
49813
+
49814
+ } ).catch( function ( e ) {
49573
49815
 
49574
- } ).catch( handleError );
49816
+ handleError( e );
49817
+ scope.manager.itemEnd( decodeUrl );
49818
+
49819
+ } );
49575
49820
 
49576
49821
  } catch ( e ) {
49577
49822
 
@@ -53178,6 +53423,15 @@ class AnimationAction {
53178
53423
 
53179
53424
  const interpolant = tracks[ i ].createInterpolant( null );
53180
53425
  interpolants[ i ] = interpolant;
53426
+
53427
+ // preserve interpolant settings (like tangent data from BezierInterpolant)
53428
+
53429
+ if ( interpolant.settings ) {
53430
+
53431
+ Object.assign( interpolantSettings, interpolant.settings );
53432
+
53433
+ }
53434
+
53181
53435
  interpolant.settings = interpolantSettings;
53182
53436
 
53183
53437
  }
@@ -53984,6 +54238,7 @@ class AnimationAction {
53984
54238
 
53985
54239
  } else {
53986
54240
 
54241
+ this._loopCount = loopCount;
53987
54242
  this.time = time;
53988
54243
 
53989
54244
  }
@@ -54031,7 +54286,7 @@ class AnimationAction {
54031
54286
 
54032
54287
  } else {
54033
54288
 
54034
- settings.endingEnd = WrapAroundEnding;
54289
+ settings.endingEnd = WrapAroundEnding;
54035
54290
 
54036
54291
  }
54037
54292
 
@@ -55736,7 +55991,7 @@ class Clock {
55736
55991
  */
55737
55992
  this.running = false;
55738
55993
 
55739
- warn( 'THREE.Clock: This module has been deprecated. Please use THREE.Timer instead.' ); // @deprecated, r183
55994
+ warn( 'Clock: This module has been deprecated. Please use THREE.Timer instead.' ); // @deprecated, r183
55740
55995
 
55741
55996
  }
55742
55997
 
@@ -56101,6 +56356,19 @@ class Cylindrical {
56101
56356
  */
56102
56357
  class Matrix2 {
56103
56358
 
56359
+ static {
56360
+
56361
+ /**
56362
+ * This flag can be used for type testing.
56363
+ *
56364
+ * @type {boolean}
56365
+ * @readonly
56366
+ * @default true
56367
+ */
56368
+ Matrix2.prototype.isMatrix2 = true;
56369
+
56370
+ }
56371
+
56104
56372
  /**
56105
56373
  * Constructs a new 2x2 matrix. The arguments are supposed to be
56106
56374
  * in row-major order. If no arguments are provided, the constructor
@@ -56113,15 +56381,6 @@ class Matrix2 {
56113
56381
  */
56114
56382
  constructor( n11, n12, n21, n22 ) {
56115
56383
 
56116
- /**
56117
- * This flag can be used for type testing.
56118
- *
56119
- * @type {boolean}
56120
- * @readonly
56121
- * @default true
56122
- */
56123
- Matrix2.prototype.isMatrix2 = true;
56124
-
56125
56384
  /**
56126
56385
  * A column-major list of matrix values.
56127
56386
  *
@@ -56717,6 +56976,9 @@ class Line3 {
56717
56976
  _startEnd.subVectors( this.end, this.start );
56718
56977
 
56719
56978
  const startEnd2 = _startEnd.dot( _startEnd );
56979
+
56980
+ if ( startEnd2 === 0 ) return 0;
56981
+
56720
56982
  const startEnd_startP = _startEnd.dot( _startP );
56721
56983
 
56722
56984
  let t = startEnd_startP / startEnd2;
@@ -59472,4 +59734,4 @@ if ( typeof window !== 'undefined' ) {
59472
59734
 
59473
59735
  }
59474
59736
 
59475
- export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, BezierInterpolant, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, Compatibility, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeDepthTexture, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, CylindricalMapping, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateBezier, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialBlending, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoNormalPacking, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NormalGAPacking, NormalRGPacking, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, R11_EAC_Format, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RG11_EAC_Format, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, ReversedDepthFuncs, RingGeometry, SIGNED_R11_EAC_Format, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SIGNED_RG11_EAC_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, TriPlanarMapping, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, cloneUniforms, createCanvasElement, createElementNS, error, getByteLength, getConsoleFunction, getUnlitUniformColorSpace, isTypedArray, log, mergeUniforms, probeAsync, setConsoleFunction, warn, warnOnce };
59737
+ export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, BezierInterpolant, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, Compatibility, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeDepthTexture, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, CylindricalMapping, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HTMLTexture, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateBezier, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialBlending, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoNormalPacking, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NormalGAPacking, NormalRGPacking, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, R11_EAC_Format, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RG11_EAC_Format, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, ReversedDepthFuncs, RingGeometry, SIGNED_R11_EAC_Format, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SIGNED_RG11_EAC_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, TriPlanarMapping, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, cloneUniforms, createCanvasElement, createElementNS, error, getByteLength, getConsoleFunction, getUnlitUniformColorSpace, isTypedArray, log, mergeUniforms, probeAsync, setConsoleFunction, warn, warnOnce, yieldToMain };