@plastic-software/three 0.180.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 (357) hide show
  1. package/build/three.cjs +943 -486
  2. package/build/three.core.js +506 -327
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +435 -163
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +8 -2
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +3753 -1177
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +3752 -1176
  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/animation/CCDIKSolver.js +1 -1
  15. package/examples/jsm/controls/ArcballControls.js +1 -1
  16. package/examples/jsm/controls/DragControls.js +1 -1
  17. package/examples/jsm/controls/FirstPersonControls.js +1 -1
  18. package/examples/jsm/controls/FlyControls.js +1 -1
  19. package/examples/jsm/controls/OrbitControls.js +2 -2
  20. package/examples/jsm/controls/PointerLockControls.js +2 -2
  21. package/examples/jsm/controls/TrackballControls.js +1 -1
  22. package/examples/jsm/controls/TransformControls.js +1 -1
  23. package/examples/jsm/effects/AsciiEffect.js +8 -8
  24. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  25. package/examples/jsm/exporters/EXRExporter.js +1 -1
  26. package/examples/jsm/exporters/GLTFExporter.js +3 -3
  27. package/examples/jsm/exporters/USDZExporter.js +9 -2
  28. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  29. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  30. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  31. package/examples/jsm/geometries/TextGeometry.js +3 -2
  32. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  33. package/examples/jsm/helpers/ViewHelper.js +43 -5
  34. package/examples/jsm/inspector/Inspector.js +427 -0
  35. package/examples/jsm/inspector/RendererInspector.js +415 -0
  36. package/examples/jsm/inspector/tabs/Console.js +204 -0
  37. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  38. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  39. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  40. package/examples/jsm/inspector/ui/Graph.js +95 -0
  41. package/examples/jsm/inspector/ui/Item.js +170 -0
  42. package/examples/jsm/inspector/ui/List.js +75 -0
  43. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  44. package/examples/jsm/inspector/ui/Style.js +654 -0
  45. package/examples/jsm/inspector/ui/Tab.js +46 -0
  46. package/examples/jsm/inspector/ui/Values.js +423 -0
  47. package/examples/jsm/inspector/ui/utils.js +56 -0
  48. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  49. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  50. package/examples/jsm/interactive/SelectionBox.js +30 -0
  51. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  52. package/examples/jsm/loaders/3MFLoader.js +1 -1
  53. package/examples/jsm/loaders/ColladaLoader.js +2 -2
  54. package/examples/jsm/loaders/DDSLoader.js +1 -1
  55. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  56. package/examples/jsm/loaders/FBXLoader.js +2 -2
  57. package/examples/jsm/loaders/FontLoader.js +23 -5
  58. package/examples/jsm/loaders/GLTFLoader.js +5 -3
  59. package/examples/jsm/loaders/KTX2Loader.js +28 -21
  60. package/examples/jsm/loaders/KTXLoader.js +2 -2
  61. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  62. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  63. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  64. package/examples/jsm/loaders/LWOLoader.js +2 -2
  65. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  66. package/examples/jsm/loaders/OBJLoader.js +1 -1
  67. package/examples/jsm/loaders/PDBLoader.js +1 -1
  68. package/examples/jsm/loaders/SVGLoader.js +2 -2
  69. package/examples/jsm/loaders/UltraHDRLoader.js +1 -1
  70. package/examples/jsm/math/ConvexHull.js +1 -1
  71. package/examples/jsm/math/ImprovedNoise.js +1 -1
  72. package/examples/jsm/math/SimplexNoise.js +1 -1
  73. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  74. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  75. package/examples/jsm/misc/TubePainter.js +383 -40
  76. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  77. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  78. package/examples/jsm/objects/Sky.js +1 -1
  79. package/examples/jsm/objects/SkyMesh.js +1 -1
  80. package/examples/jsm/objects/Water.js +3 -3
  81. package/examples/jsm/objects/WaterMesh.js +6 -6
  82. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  83. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  84. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  85. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  86. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  87. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  88. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  89. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  90. package/examples/jsm/shaders/BokehShader.js +1 -1
  91. package/examples/jsm/shaders/BokehShader2.js +1 -1
  92. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  93. package/examples/jsm/shaders/FocusShader.js +1 -1
  94. package/examples/jsm/shaders/GTAOShader.js +2 -2
  95. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  96. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  97. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  98. package/examples/jsm/shaders/SSRShader.js +1 -1
  99. package/examples/jsm/shaders/SepiaShader.js +1 -1
  100. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  101. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  102. package/examples/jsm/shaders/VignetteShader.js +1 -1
  103. package/examples/jsm/transpiler/TSLEncoder.js +7 -0
  104. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  105. package/examples/jsm/tsl/display/AnamorphicNode.js +2 -1
  106. package/examples/jsm/tsl/display/BloomNode.js +4 -0
  107. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  108. package/examples/jsm/tsl/display/DepthOfFieldNode.js +7 -0
  109. package/examples/jsm/tsl/display/GTAONode.js +45 -5
  110. package/examples/jsm/tsl/display/GaussianBlurNode.js +5 -3
  111. package/examples/jsm/tsl/display/OutlineNode.js +11 -0
  112. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  113. package/examples/jsm/tsl/display/SSRNode.js +2 -0
  114. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  115. package/examples/jsm/tsl/display/TRAANode.js +123 -6
  116. package/examples/jsm/tsl/display/boxBlur.js +1 -0
  117. package/examples/jsm/tsl/display/hashBlur.js +1 -0
  118. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  119. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  120. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  121. package/package.json +5 -10
  122. package/src/Three.Core.js +3 -2
  123. package/src/Three.TSL.js +7 -1
  124. package/src/Three.WebGPU.Nodes.js +2 -0
  125. package/src/Three.WebGPU.js +2 -0
  126. package/src/animation/AnimationClip.js +3 -2
  127. package/src/animation/AnimationMixer.js +3 -3
  128. package/src/animation/AnimationObjectGroup.js +2 -1
  129. package/src/animation/KeyframeTrack.js +7 -6
  130. package/src/animation/PropertyBinding.js +12 -11
  131. package/src/audio/Audio.js +10 -9
  132. package/src/audio/PositionalAudio.js +1 -1
  133. package/src/cameras/OrthographicCamera.js +1 -1
  134. package/src/cameras/PerspectiveCamera.js +1 -1
  135. package/src/cameras/StereoCamera.js +2 -2
  136. package/src/constants.js +1 -1
  137. package/src/core/BufferGeometry.js +8 -8
  138. package/src/core/EventDispatcher.js +1 -1
  139. package/src/core/InterleavedBuffer.js +1 -1
  140. package/src/core/InterleavedBufferAttribute.js +3 -2
  141. package/src/core/Object3D.js +3 -2
  142. package/src/core/Raycaster.js +2 -1
  143. package/src/core/RenderTarget.js +10 -1
  144. package/src/extras/Controls.js +5 -4
  145. package/src/extras/DataUtils.js +2 -1
  146. package/src/extras/Earcut.js +6 -0
  147. package/src/extras/ImageUtils.js +2 -2
  148. package/src/extras/PMREMGenerator.js +268 -55
  149. package/src/extras/core/Curve.js +2 -1
  150. package/src/extras/core/Interpolations.js +7 -1
  151. package/src/extras/core/ShapePath.js +4 -4
  152. package/src/extras/lib/earcut.js +7 -7
  153. package/src/geometries/BoxGeometry.js +1 -0
  154. package/src/geometries/CapsuleGeometry.js +1 -0
  155. package/src/geometries/CircleGeometry.js +1 -0
  156. package/src/geometries/ConeGeometry.js +1 -0
  157. package/src/geometries/CylinderGeometry.js +1 -0
  158. package/src/geometries/DodecahedronGeometry.js +1 -0
  159. package/src/geometries/ExtrudeGeometry.js +8 -6
  160. package/src/geometries/IcosahedronGeometry.js +1 -0
  161. package/src/geometries/LatheGeometry.js +1 -0
  162. package/src/geometries/OctahedronGeometry.js +1 -0
  163. package/src/geometries/PlaneGeometry.js +1 -0
  164. package/src/geometries/RingGeometry.js +1 -0
  165. package/src/geometries/ShapeGeometry.js +1 -0
  166. package/src/geometries/SphereGeometry.js +1 -0
  167. package/src/geometries/TetrahedronGeometry.js +1 -0
  168. package/src/geometries/TorusGeometry.js +1 -0
  169. package/src/geometries/TorusKnotGeometry.js +1 -0
  170. package/src/geometries/TubeGeometry.js +1 -0
  171. package/src/helpers/CameraHelper.js +1 -1
  172. package/src/loaders/AnimationLoader.js +2 -1
  173. package/src/loaders/AudioLoader.js +2 -1
  174. package/src/loaders/BufferGeometryLoader.js +2 -2
  175. package/src/loaders/Cache.js +2 -2
  176. package/src/loaders/DataTextureLoader.js +1 -1
  177. package/src/loaders/FileLoader.js +3 -2
  178. package/src/loaders/ImageBitmapLoader.js +5 -4
  179. package/src/loaders/ImageLoader.js +1 -1
  180. package/src/loaders/Loader.js +3 -3
  181. package/src/loaders/LoadingManager.js +25 -3
  182. package/src/loaders/MaterialLoader.js +3 -2
  183. package/src/loaders/ObjectLoader.js +13 -13
  184. package/src/loaders/TextureLoader.js +1 -1
  185. package/src/loaders/nodes/NodeLoader.js +3 -2
  186. package/src/materials/Material.js +4 -3
  187. package/src/materials/MeshBasicMaterial.js +1 -0
  188. package/src/materials/MeshDepthMaterial.js +1 -0
  189. package/src/materials/MeshLambertMaterial.js +2 -1
  190. package/src/materials/MeshMatcapMaterial.js +22 -0
  191. package/src/materials/MeshNormalMaterial.js +1 -0
  192. package/src/materials/MeshPhongMaterial.js +2 -1
  193. package/src/materials/MeshPhysicalMaterial.js +2 -1
  194. package/src/materials/MeshStandardMaterial.js +8 -7
  195. package/src/materials/MeshToonMaterial.js +1 -0
  196. package/src/materials/PointsMaterial.js +1 -1
  197. package/src/materials/ShaderMaterial.js +2 -2
  198. package/src/materials/nodes/Line2NodeMaterial.js +2 -2
  199. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  200. package/src/materials/nodes/NodeMaterial.js +62 -22
  201. package/src/materials/nodes/manager/NodeMaterialObserver.js +2 -1
  202. package/src/math/Color.js +6 -5
  203. package/src/math/ColorManagement.js +2 -2
  204. package/src/math/Cylindrical.js +1 -1
  205. package/src/math/Euler.js +2 -1
  206. package/src/math/MathUtils.js +13 -11
  207. package/src/math/Matrix2.js +1 -1
  208. package/src/math/Matrix3.js +2 -2
  209. package/src/math/Matrix4.js +7 -7
  210. package/src/math/Plane.js +1 -1
  211. package/src/math/Quaternion.js +68 -66
  212. package/src/math/Spherical.js +1 -1
  213. package/src/nodes/Nodes.js +1 -1
  214. package/src/nodes/TSL.js +1 -1
  215. package/src/nodes/accessors/CubeTextureNode.js +3 -2
  216. package/src/nodes/accessors/InstanceNode.js +22 -4
  217. package/src/nodes/accessors/Lights.js +10 -0
  218. package/src/nodes/accessors/Normal.js +5 -4
  219. package/src/nodes/accessors/Position.js +18 -2
  220. package/src/nodes/accessors/ReferenceNode.js +2 -1
  221. package/src/nodes/accessors/SceneNode.js +2 -1
  222. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  223. package/src/nodes/accessors/StorageTextureNode.js +22 -0
  224. package/src/nodes/accessors/Texture3DNode.js +1 -1
  225. package/src/nodes/accessors/TextureNode.js +61 -27
  226. package/src/nodes/code/FunctionCallNode.js +5 -4
  227. package/src/nodes/core/ArrayNode.js +1 -0
  228. package/src/nodes/core/AttributeNode.js +2 -1
  229. package/src/nodes/core/ContextNode.js +5 -10
  230. package/src/nodes/core/IndexNode.js +2 -2
  231. package/src/nodes/core/InputNode.js +2 -1
  232. package/src/nodes/core/InspectorNode.js +128 -0
  233. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +40 -7
  234. package/src/nodes/core/Node.js +137 -12
  235. package/src/nodes/core/NodeBuilder.js +135 -21
  236. package/src/nodes/core/NodeFrame.js +20 -20
  237. package/src/nodes/core/NodeFunction.js +2 -1
  238. package/src/nodes/core/NodeParser.js +2 -1
  239. package/src/nodes/core/NodeUtils.js +17 -90
  240. package/src/nodes/core/ParameterNode.js +31 -0
  241. package/src/nodes/core/PropertyNode.js +7 -0
  242. package/src/nodes/core/StackNode.js +16 -14
  243. package/src/nodes/core/UniformNode.js +2 -1
  244. package/src/nodes/core/VarNode.js +70 -12
  245. package/src/nodes/core/VaryingNode.js +3 -2
  246. package/src/nodes/display/BlendModes.js +5 -4
  247. package/src/nodes/display/BumpMapNode.js +1 -1
  248. package/src/nodes/display/ColorAdjustment.js +1 -1
  249. package/src/nodes/display/NormalMapNode.js +2 -1
  250. package/src/nodes/display/PassNode.js +51 -10
  251. package/src/nodes/display/RenderOutputNode.js +28 -2
  252. package/src/nodes/display/ScreenNode.js +2 -1
  253. package/src/nodes/display/ToneMappingNode.js +31 -4
  254. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  255. package/src/nodes/fog/Fog.js +3 -2
  256. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  257. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  258. package/src/nodes/functions/BasicLightingModel.js +2 -1
  259. package/src/nodes/functions/PhysicalLightingModel.js +3 -2
  260. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  261. package/src/nodes/geometry/RangeNode.js +40 -4
  262. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  263. package/src/nodes/gpgpu/ComputeNode.js +17 -5
  264. package/src/nodes/gpgpu/SubgroupFunctionNode.js +25 -0
  265. package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
  266. package/src/nodes/lighting/EnvironmentNode.js +6 -6
  267. package/src/nodes/lighting/LightsNode.js +2 -3
  268. package/src/nodes/lighting/PointShadowNode.js +6 -0
  269. package/src/nodes/lighting/ShadowFilterNode.js +2 -0
  270. package/src/nodes/lighting/ShadowNode.js +75 -8
  271. package/src/nodes/math/ConditionalNode.js +6 -5
  272. package/src/nodes/math/MathNode.js +22 -4
  273. package/src/nodes/math/OperatorNode.js +3 -2
  274. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  275. package/src/nodes/shapes/Shapes.js +1 -1
  276. package/src/nodes/tsl/TSLBase.js +5 -2
  277. package/src/nodes/tsl/TSLCore.js +36 -15
  278. package/src/nodes/utils/DebugNode.js +2 -1
  279. package/src/nodes/utils/EventNode.js +36 -0
  280. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  281. package/src/nodes/utils/JoinNode.js +3 -2
  282. package/src/nodes/utils/LoopNode.js +20 -24
  283. package/src/nodes/utils/MemberNode.js +2 -1
  284. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  285. package/src/nodes/utils/RTTNode.js +12 -2
  286. package/src/nodes/utils/ReflectorNode.js +10 -3
  287. package/src/objects/Line.js +2 -1
  288. package/src/objects/LineSegments.js +2 -1
  289. package/src/objects/Skeleton.js +3 -2
  290. package/src/objects/SkinnedMesh.js +3 -1
  291. package/src/objects/Sprite.js +2 -1
  292. package/src/renderers/WebGLRenderer.js +48 -32
  293. package/src/renderers/common/Animation.js +13 -1
  294. package/src/renderers/common/Backend.js +93 -30
  295. package/src/renderers/common/Background.js +2 -1
  296. package/src/renderers/common/Bindings.js +56 -2
  297. package/src/renderers/common/CanvasTarget.js +341 -0
  298. package/src/renderers/common/Geometries.js +26 -0
  299. package/src/renderers/common/Info.js +4 -2
  300. package/src/renderers/common/InspectorBase.js +146 -0
  301. package/src/renderers/common/PostProcessing.js +6 -25
  302. package/src/renderers/common/QuadMesh.js +7 -1
  303. package/src/renderers/common/RenderList.js +7 -3
  304. package/src/renderers/common/RenderObject.js +3 -1
  305. package/src/renderers/common/RenderObjects.js +1 -1
  306. package/src/renderers/common/Renderer.js +436 -228
  307. package/src/renderers/common/RendererUtils.js +9 -0
  308. package/src/renderers/common/SampledTexture.js +8 -0
  309. package/src/renderers/common/Sampler.js +37 -11
  310. package/src/renderers/common/StorageTexture.js +9 -1
  311. package/src/renderers/common/Textures.js +89 -35
  312. package/src/renderers/common/TimestampQueryPool.js +63 -1
  313. package/src/renderers/common/UniformsGroup.js +2 -1
  314. package/src/renderers/common/XRManager.js +7 -3
  315. package/src/renderers/common/extras/PMREMGenerator.js +160 -65
  316. package/src/renderers/common/nodes/NodeLibrary.js +4 -2
  317. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  318. package/src/renderers/common/nodes/Nodes.js +38 -16
  319. package/src/renderers/shaders/DFGLUTData.js +64 -0
  320. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  321. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  322. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  323. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  324. package/src/renderers/shaders/UniformsLib.js +1 -0
  325. package/src/renderers/shaders/UniformsUtils.js +25 -4
  326. package/src/renderers/webgl/WebGLCapabilities.js +2 -1
  327. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  328. package/src/renderers/webgl/WebGLInfo.js +3 -1
  329. package/src/renderers/webgl/WebGLProgram.js +11 -10
  330. package/src/renderers/webgl/WebGLPrograms.js +2 -1
  331. package/src/renderers/webgl/WebGLShadowMap.js +2 -1
  332. package/src/renderers/webgl/WebGLState.js +15 -14
  333. package/src/renderers/webgl/WebGLTextures.js +18 -14
  334. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  335. package/src/renderers/webgl-fallback/WebGLBackend.js +22 -41
  336. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +74 -11
  337. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  338. package/src/renderers/webgl-fallback/utils/WebGLState.js +6 -5
  339. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +117 -16
  340. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +42 -12
  341. package/src/renderers/webgpu/WebGPUBackend.js +134 -108
  342. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  343. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  344. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +21 -19
  345. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  346. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
  347. package/src/renderers/webgpu/utils/WebGPUConstants.js +5 -0
  348. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +44 -16
  349. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  350. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +146 -74
  351. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +29 -6
  352. package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
  353. package/src/renderers/webxr/WebXRManager.js +3 -2
  354. package/src/textures/Source.js +2 -1
  355. package/src/textures/Texture.js +3 -2
  356. package/src/textures/VideoTexture.js +2 -0
  357. package/src/utils.js +67 -3
@@ -3,7 +3,7 @@
3
3
  * Copyright 2010-2025 Three.js Authors
4
4
  * SPDX-License-Identifier: MIT
5
5
  */
6
- const REVISION = '180';
6
+ const REVISION = '181';
7
7
 
8
8
  /**
9
9
  * Represents mouse buttons and interaction types in context of controls.
@@ -1682,10 +1682,161 @@ const InterpolationSamplingMode = {
1682
1682
  * @property {string} EITHER - Flat interpolation using either vertex.
1683
1683
  */
1684
1684
 
1685
+ function arrayNeedsUint32( array ) {
1686
+
1687
+ // assumes larger values usually on last
1688
+
1689
+ for ( let i = array.length - 1; i >= 0; -- i ) {
1690
+
1691
+ if ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565
1692
+
1693
+ }
1694
+
1695
+ return false;
1696
+
1697
+ }
1698
+
1699
+ const TYPED_ARRAYS = {
1700
+ Int8Array: Int8Array,
1701
+ Uint8Array: Uint8Array,
1702
+ Uint8ClampedArray: Uint8ClampedArray,
1703
+ Int16Array: Int16Array,
1704
+ Uint16Array: Uint16Array,
1705
+ Int32Array: Int32Array,
1706
+ Uint32Array: Uint32Array,
1707
+ Float32Array: Float32Array,
1708
+ Float64Array: Float64Array
1709
+ };
1710
+
1711
+ function getTypedArray( type, buffer ) {
1712
+
1713
+ return new TYPED_ARRAYS[ type ]( buffer );
1714
+
1715
+ }
1716
+
1717
+ function createElementNS( name ) {
1718
+
1719
+ return document.createElementNS( 'http://www.w3.org/1999/xhtml', name );
1720
+
1721
+ }
1722
+
1723
+ function createCanvasElement() {
1724
+
1725
+ const canvas = createElementNS( 'canvas' );
1726
+ canvas.style.display = 'block';
1727
+ return canvas;
1728
+
1729
+ }
1730
+
1731
+ const _cache = {};
1732
+
1733
+ let _setConsoleFunction = null;
1734
+
1735
+ function setConsoleFunction( fn ) {
1736
+
1737
+ _setConsoleFunction = fn;
1738
+
1739
+ }
1740
+
1741
+ function getConsoleFunction() {
1742
+
1743
+ return _setConsoleFunction;
1744
+
1745
+ }
1746
+
1747
+ function log( ...params ) {
1748
+
1749
+ const message = 'THREE.' + params.shift();
1750
+
1751
+ if ( _setConsoleFunction ) {
1752
+
1753
+ _setConsoleFunction( 'log', message, ...params );
1754
+
1755
+ } else {
1756
+
1757
+ console.log( message, ...params );
1758
+
1759
+ }
1760
+
1761
+ }
1762
+
1763
+ function warn( ...params ) {
1764
+
1765
+ const message = 'THREE.' + params.shift();
1766
+
1767
+ if ( _setConsoleFunction ) {
1768
+
1769
+ _setConsoleFunction( 'warn', message, ...params );
1770
+
1771
+ } else {
1772
+
1773
+ console.warn( message, ...params );
1774
+
1775
+ }
1776
+
1777
+ }
1778
+
1779
+ function error( ...params ) {
1780
+
1781
+ const message = 'THREE.' + params.shift();
1782
+
1783
+ if ( _setConsoleFunction ) {
1784
+
1785
+ _setConsoleFunction( 'error', message, ...params );
1786
+
1787
+ } else {
1788
+
1789
+ console.error( message, ...params );
1790
+
1791
+ }
1792
+
1793
+ }
1794
+
1795
+ function warnOnce( ...params ) {
1796
+
1797
+ const message = params.join( ' ' );
1798
+
1799
+ if ( message in _cache ) return;
1800
+
1801
+ _cache[ message ] = true;
1802
+
1803
+ warn( ...params );
1804
+
1805
+ }
1806
+
1807
+ function probeAsync( gl, sync, interval ) {
1808
+
1809
+ return new Promise( function ( resolve, reject ) {
1810
+
1811
+ function probe() {
1812
+
1813
+ switch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {
1814
+
1815
+ case gl.WAIT_FAILED:
1816
+ reject();
1817
+ break;
1818
+
1819
+ case gl.TIMEOUT_EXPIRED:
1820
+ setTimeout( probe, interval );
1821
+ break;
1822
+
1823
+ default:
1824
+ resolve();
1825
+
1826
+ }
1827
+
1828
+ }
1829
+
1830
+ setTimeout( probe, interval );
1831
+
1832
+ } );
1833
+
1834
+ }
1835
+
1685
1836
  /**
1686
1837
  * This modules allows to dispatch event objects on custom JavaScript objects.
1687
1838
  *
1688
- * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}
1839
+ * Main repository: [eventdispatcher.js](https://github.com/mrdoob/eventdispatcher.js/)
1689
1840
  *
1690
1841
  * Code Example:
1691
1842
  * ```js
@@ -1820,7 +1971,7 @@ const DEG2RAD = Math.PI / 180;
1820
1971
  const RAD2DEG = 180 / Math.PI;
1821
1972
 
1822
1973
  /**
1823
- * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}
1974
+ * Generate a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
1824
1975
  * (universally unique identifier).
1825
1976
  *
1826
1977
  * @return {string} The UUID.
@@ -1933,7 +2084,7 @@ function lerp( x, y, t ) {
1933
2084
  /**
1934
2085
  * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta
1935
2086
  * time to maintain frame rate independent movement. For details, see
1936
- * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.
2087
+ * [Frame rate independent damping using lerp](http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/).
1937
2088
  *
1938
2089
  * @param {number} x - The current point.
1939
2090
  * @param {number} y - The target point.
@@ -1968,7 +2119,7 @@ function pingpong( x, length = 1 ) {
1968
2119
  * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to
1969
2120
  * the `min` and `max`.
1970
2121
  *
1971
- * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.
2122
+ * See [Smoothstep](http://en.wikipedia.org/wiki/Smoothstep) for more details.
1972
2123
  *
1973
2124
  * @param {number} x - The value to evaluate based on its position between min and max.
1974
2125
  * @param {number} min - The min value. Any x value below min will be `0`.
@@ -1987,7 +2138,7 @@ function smoothstep( x, min, max ) {
1987
2138
  }
1988
2139
 
1989
2140
  /**
1990
- * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}
2141
+ * A [variation on smoothstep](https://en.wikipedia.org/wiki/Smoothstep#Variations)
1991
2142
  * that has zero 1st and 2nd order derivatives at x=0 and x=1.
1992
2143
  *
1993
2144
  * @param {number} x - The value to evaluate based on its position between min and max.
@@ -2127,7 +2278,7 @@ function floorPowerOfTwo( value ) {
2127
2278
  }
2128
2279
 
2129
2280
  /**
2130
- * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}
2281
+ * Sets the given quaternion from the [Intrinsic Proper Euler Angles](https://en.wikipedia.org/wiki/Euler_angles)
2131
2282
  * defined by the given angles and order.
2132
2283
  *
2133
2284
  * Rotations are applied to the axes in the order specified by order:
@@ -2183,7 +2334,7 @@ function setQuaternionFromProperEuler( q, a, b, c, order ) {
2183
2334
  break;
2184
2335
 
2185
2336
  default:
2186
- console.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );
2337
+ warn( 'MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );
2187
2338
 
2188
2339
  }
2189
2340
 
@@ -2292,7 +2443,7 @@ const MathUtils = {
2292
2443
  DEG2RAD: DEG2RAD,
2293
2444
  RAD2DEG: RAD2DEG,
2294
2445
  /**
2295
- * Generate a [UUID]{@link https://en.wikipedia.org/wiki/Universally_unique_identifier}
2446
+ * Generate a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier)
2296
2447
  * (universally unique identifier).
2297
2448
  *
2298
2449
  * @static
@@ -2363,7 +2514,7 @@ const MathUtils = {
2363
2514
  /**
2364
2515
  * Smoothly interpolate a number from `x` to `y` in a spring-like manner using a delta
2365
2516
  * time to maintain frame rate independent movement. For details, see
2366
- * [Frame rate independent damping using lerp]{@link http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/}.
2517
+ * [Frame rate independent damping using lerp](http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/).
2367
2518
  *
2368
2519
  * @static
2369
2520
  * @method
@@ -2390,7 +2541,7 @@ const MathUtils = {
2390
2541
  * moved between `min` and `max`, but smoothed or slowed down the closer `x` is to
2391
2542
  * the `min` and `max`.
2392
2543
  *
2393
- * See [Smoothstep]{@link http://en.wikipedia.org/wiki/Smoothstep} for more details.
2544
+ * See [Smoothstep](http://en.wikipedia.org/wiki/Smoothstep) for more details.
2394
2545
  *
2395
2546
  * @static
2396
2547
  * @method
@@ -2401,7 +2552,7 @@ const MathUtils = {
2401
2552
  */
2402
2553
  smoothstep: smoothstep,
2403
2554
  /**
2404
- * A [variation on smoothstep]{@link https://en.wikipedia.org/wiki/Smoothstep#Variations}
2555
+ * A [variation on smoothstep](https://en.wikipedia.org/wiki/Smoothstep#Variations)
2405
2556
  * that has zero 1st and 2nd order derivatives at x=0 and x=1.
2406
2557
  *
2407
2558
  * @static
@@ -2496,7 +2647,7 @@ const MathUtils = {
2496
2647
  */
2497
2648
  floorPowerOfTwo: floorPowerOfTwo,
2498
2649
  /**
2499
- * Sets the given quaternion from the [Intrinsic Proper Euler Angles]{@link https://en.wikipedia.org/wiki/Euler_angles}
2650
+ * Sets the given quaternion from the [Intrinsic Proper Euler Angles](https://en.wikipedia.org/wiki/Euler_angles)
2500
2651
  * defined by the given angles and order.
2501
2652
  *
2502
2653
  * Rotations are applied to the axes in the order specified by order:
@@ -3441,7 +3592,7 @@ class Quaternion {
3441
3592
 
3442
3593
  /**
3443
3594
  * Interpolates between two quaternions via SLERP. This implementation assumes the
3444
- * quaternion data are managed in flat arrays.
3595
+ * quaternion data are managed in flat arrays.
3445
3596
  *
3446
3597
  * @param {Array<number>} dst - The destination array.
3447
3598
  * @param {number} dstOffset - An offset into the destination array.
@@ -3454,65 +3605,78 @@ class Quaternion {
3454
3605
  */
3455
3606
  static slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {
3456
3607
 
3457
- // fuzz-free, array-based Quaternion SLERP operation
3458
-
3459
3608
  let x0 = src0[ srcOffset0 + 0 ],
3460
3609
  y0 = src0[ srcOffset0 + 1 ],
3461
3610
  z0 = src0[ srcOffset0 + 2 ],
3462
3611
  w0 = src0[ srcOffset0 + 3 ];
3463
3612
 
3464
- const x1 = src1[ srcOffset1 + 0 ],
3613
+ let x1 = src1[ srcOffset1 + 0 ],
3465
3614
  y1 = src1[ srcOffset1 + 1 ],
3466
3615
  z1 = src1[ srcOffset1 + 2 ],
3467
3616
  w1 = src1[ srcOffset1 + 3 ];
3468
3617
 
3469
- if ( t === 0 ) {
3618
+ if ( t <= 0 ) {
3470
3619
 
3471
3620
  dst[ dstOffset + 0 ] = x0;
3472
3621
  dst[ dstOffset + 1 ] = y0;
3473
3622
  dst[ dstOffset + 2 ] = z0;
3474
3623
  dst[ dstOffset + 3 ] = w0;
3624
+
3475
3625
  return;
3476
3626
 
3477
3627
  }
3478
3628
 
3479
- if ( t === 1 ) {
3629
+ if ( t >= 1 ) {
3480
3630
 
3481
3631
  dst[ dstOffset + 0 ] = x1;
3482
3632
  dst[ dstOffset + 1 ] = y1;
3483
3633
  dst[ dstOffset + 2 ] = z1;
3484
3634
  dst[ dstOffset + 3 ] = w1;
3635
+
3485
3636
  return;
3486
3637
 
3487
3638
  }
3488
3639
 
3489
3640
  if ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {
3490
3641
 
3491
- let s = 1 - t;
3492
- const cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,
3493
- dir = ( cos >= 0 ? 1 : -1 ),
3494
- sqrSin = 1 - cos * cos;
3642
+ let dot = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1;
3495
3643
 
3496
- // Skip the Slerp for tiny steps to avoid numeric problems:
3497
- if ( sqrSin > Number.EPSILON ) {
3644
+ if ( dot < 0 ) {
3498
3645
 
3499
- const sin = Math.sqrt( sqrSin ),
3500
- len = Math.atan2( sin, cos * dir );
3646
+ x1 = - x1;
3647
+ y1 = - y1;
3648
+ z1 = - z1;
3649
+ w1 = - w1;
3501
3650
 
3502
- s = Math.sin( s * len ) / sin;
3503
- t = Math.sin( t * len ) / sin;
3651
+ dot = - dot;
3504
3652
 
3505
3653
  }
3506
3654
 
3507
- const tDir = t * dir;
3655
+ let s = 1 - t;
3656
+
3657
+ if ( dot < 0.9995 ) {
3658
+
3659
+ // slerp
3660
+
3661
+ const theta = Math.acos( dot );
3662
+ const sin = Math.sin( theta );
3663
+
3664
+ s = Math.sin( s * theta ) / sin;
3665
+ t = Math.sin( t * theta ) / sin;
3666
+
3667
+ x0 = x0 * s + x1 * t;
3668
+ y0 = y0 * s + y1 * t;
3669
+ z0 = z0 * s + z1 * t;
3670
+ w0 = w0 * s + w1 * t;
3671
+
3672
+ } else {
3508
3673
 
3509
- x0 = x0 * s + x1 * tDir;
3510
- y0 = y0 * s + y1 * tDir;
3511
- z0 = z0 * s + z1 * tDir;
3512
- w0 = w0 * s + w1 * tDir;
3674
+ // for small angles, lerp then normalize
3513
3675
 
3514
- // Normalize in case we just did a lerp:
3515
- if ( s === 1 - t ) {
3676
+ x0 = x0 * s + x1 * t;
3677
+ y0 = y0 * s + y1 * t;
3678
+ z0 = z0 * s + z1 * t;
3679
+ w0 = w0 * s + w1 * t;
3516
3680
 
3517
3681
  const f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );
3518
3682
 
@@ -3766,7 +3930,7 @@ class Quaternion {
3766
3930
  break;
3767
3931
 
3768
3932
  default:
3769
- console.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );
3933
+ warn( 'Quaternion: .setFromEuler() encountered an unknown order: ' + order );
3770
3934
 
3771
3935
  }
3772
3936
 
@@ -4122,68 +4286,56 @@ class Quaternion {
4122
4286
  */
4123
4287
  slerp( qb, t ) {
4124
4288
 
4125
- if ( t === 0 ) return this;
4126
- if ( t === 1 ) return this.copy( qb );
4127
-
4128
- const x = this._x, y = this._y, z = this._z, w = this._w;
4289
+ if ( t <= 0 ) return this;
4129
4290
 
4130
- // http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/
4291
+ if ( t >= 1 ) return this.copy( qb ); // copy calls _onChangeCallback()
4131
4292
 
4132
- let cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;
4293
+ let x = qb._x, y = qb._y, z = qb._z, w = qb._w;
4133
4294
 
4134
- if ( cosHalfTheta < 0 ) {
4295
+ let dot = this.dot( qb );
4135
4296
 
4136
- this._w = - qb._w;
4137
- this._x = - qb._x;
4138
- this._y = - qb._y;
4139
- this._z = - qb._z;
4297
+ if ( dot < 0 ) {
4140
4298
 
4141
- cosHalfTheta = - cosHalfTheta;
4299
+ x = - x;
4300
+ y = - y;
4301
+ z = - z;
4302
+ w = - w;
4142
4303
 
4143
- } else {
4144
-
4145
- this.copy( qb );
4304
+ dot = - dot;
4146
4305
 
4147
4306
  }
4148
4307
 
4149
- if ( cosHalfTheta >= 1.0 ) {
4308
+ let s = 1 - t;
4150
4309
 
4151
- this._w = w;
4152
- this._x = x;
4153
- this._y = y;
4154
- this._z = z;
4310
+ if ( dot < 0.9995 ) {
4155
4311
 
4156
- return this;
4312
+ // slerp
4157
4313
 
4158
- }
4159
-
4160
- const sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;
4314
+ const theta = Math.acos( dot );
4315
+ const sin = Math.sin( theta );
4161
4316
 
4162
- if ( sqrSinHalfTheta <= Number.EPSILON ) {
4317
+ s = Math.sin( s * theta ) / sin;
4318
+ t = Math.sin( t * theta ) / sin;
4163
4319
 
4164
- const s = 1 - t;
4165
- this._w = s * w + t * this._w;
4166
- this._x = s * x + t * this._x;
4167
- this._y = s * y + t * this._y;
4168
- this._z = s * z + t * this._z;
4320
+ this._x = this._x * s + x * t;
4321
+ this._y = this._y * s + y * t;
4322
+ this._z = this._z * s + z * t;
4323
+ this._w = this._w * s + w * t;
4169
4324
 
4170
- this.normalize(); // normalize calls _onChangeCallback()
4325
+ this._onChangeCallback();
4171
4326
 
4172
- return this;
4327
+ } else {
4173
4328
 
4174
- }
4329
+ // for small angles, lerp then normalize
4175
4330
 
4176
- const sinHalfTheta = Math.sqrt( sqrSinHalfTheta );
4177
- const halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );
4178
- const ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,
4179
- ratioB = Math.sin( t * halfTheta ) / sinHalfTheta;
4331
+ this._x = this._x * s + x * t;
4332
+ this._y = this._y * s + y * t;
4333
+ this._z = this._z * s + z * t;
4334
+ this._w = this._w * s + w * t;
4180
4335
 
4181
- this._w = ( w * ratioA + this._w * ratioB );
4182
- this._x = ( x * ratioA + this._x * ratioB );
4183
- this._y = ( y * ratioA + this._y * ratioB );
4184
- this._z = ( z * ratioA + this._z * ratioB );
4336
+ this.normalize(); // normalize calls _onChangeCallback()
4185
4337
 
4186
- this._onChangeCallback();
4338
+ }
4187
4339
 
4188
4340
  return this;
4189
4341
 
@@ -5598,7 +5750,7 @@ const _quaternion$4 = /*@__PURE__*/ new Quaternion();
5598
5750
  * A Note on Row-Major and Column-Major Ordering:
5599
5751
  *
5600
5752
  * The constructor and {@link Matrix3#set} method take arguments in
5601
- * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}
5753
+ * [row-major](https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order)
5602
5754
  * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.
5603
5755
  * This means that calling:
5604
5756
  * ```js
@@ -5872,7 +6024,7 @@ class Matrix3 {
5872
6024
  }
5873
6025
 
5874
6026
  /**
5875
- * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.
6027
+ * Inverts this matrix, using the [analytic method](https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution).
5876
6028
  * You can not invert with a determinant of zero. If you attempt this, the method produces
5877
6029
  * a zero matrix instead.
5878
6030
  *
@@ -6204,93 +6356,6 @@ class Matrix3 {
6204
6356
 
6205
6357
  const _m3 = /*@__PURE__*/ new Matrix3();
6206
6358
 
6207
- function arrayNeedsUint32( array ) {
6208
-
6209
- // assumes larger values usually on last
6210
-
6211
- for ( let i = array.length - 1; i >= 0; -- i ) {
6212
-
6213
- if ( array[ i ] >= 65535 ) return true; // account for PRIMITIVE_RESTART_FIXED_INDEX, #24565
6214
-
6215
- }
6216
-
6217
- return false;
6218
-
6219
- }
6220
-
6221
- const TYPED_ARRAYS = {
6222
- Int8Array: Int8Array,
6223
- Uint8Array: Uint8Array,
6224
- Uint8ClampedArray: Uint8ClampedArray,
6225
- Int16Array: Int16Array,
6226
- Uint16Array: Uint16Array,
6227
- Int32Array: Int32Array,
6228
- Uint32Array: Uint32Array,
6229
- Float32Array: Float32Array,
6230
- Float64Array: Float64Array
6231
- };
6232
-
6233
- function getTypedArray( type, buffer ) {
6234
-
6235
- return new TYPED_ARRAYS[ type ]( buffer );
6236
-
6237
- }
6238
-
6239
- function createElementNS( name ) {
6240
-
6241
- return document.createElementNS( 'http://www.w3.org/1999/xhtml', name );
6242
-
6243
- }
6244
-
6245
- function createCanvasElement() {
6246
-
6247
- const canvas = createElementNS( 'canvas' );
6248
- canvas.style.display = 'block';
6249
- return canvas;
6250
-
6251
- }
6252
-
6253
- const _cache = {};
6254
-
6255
- function warnOnce( message ) {
6256
-
6257
- if ( message in _cache ) return;
6258
-
6259
- _cache[ message ] = true;
6260
-
6261
- console.warn( message );
6262
-
6263
- }
6264
-
6265
- function probeAsync( gl, sync, interval ) {
6266
-
6267
- return new Promise( function ( resolve, reject ) {
6268
-
6269
- function probe() {
6270
-
6271
- switch ( gl.clientWaitSync( sync, gl.SYNC_FLUSH_COMMANDS_BIT, 0 ) ) {
6272
-
6273
- case gl.WAIT_FAILED:
6274
- reject();
6275
- break;
6276
-
6277
- case gl.TIMEOUT_EXPIRED:
6278
- setTimeout( probe, interval );
6279
- break;
6280
-
6281
- default:
6282
- resolve();
6283
-
6284
- }
6285
-
6286
- }
6287
-
6288
- setTimeout( probe, interval );
6289
-
6290
- } );
6291
-
6292
- }
6293
-
6294
6359
  const LINEAR_REC709_TO_XYZ = /*@__PURE__*/ new Matrix3().set(
6295
6360
  0.4123908, 0.3575843, 0.1804808,
6296
6361
  0.2126390, 0.7151687, 0.0721923,
@@ -6436,7 +6501,7 @@ function createColorManagement() {
6436
6501
 
6437
6502
  fromWorkingColorSpace: function ( color, targetColorSpace ) {
6438
6503
 
6439
- warnOnce( 'THREE.ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().' ); // @deprecated, r177
6504
+ warnOnce( 'ColorManagement: .fromWorkingColorSpace() has been renamed to .workingToColorSpace().' ); // @deprecated, r177
6440
6505
 
6441
6506
  return ColorManagement.workingToColorSpace( color, targetColorSpace );
6442
6507
 
@@ -6444,7 +6509,7 @@ function createColorManagement() {
6444
6509
 
6445
6510
  toWorkingColorSpace: function ( color, sourceColorSpace ) {
6446
6511
 
6447
- warnOnce( 'THREE.ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().' ); // @deprecated, r177
6512
+ warnOnce( 'ColorManagement: .toWorkingColorSpace() has been renamed to .colorSpaceToWorking().' ); // @deprecated, r177
6448
6513
 
6449
6514
  return ColorManagement.colorSpaceToWorking( color, sourceColorSpace );
6450
6515
 
@@ -6627,7 +6692,7 @@ class ImageUtils {
6627
6692
 
6628
6693
  } else {
6629
6694
 
6630
- console.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );
6695
+ warn( 'ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );
6631
6696
  return image;
6632
6697
 
6633
6698
  }
@@ -6852,7 +6917,7 @@ function serializeImage( image ) {
6852
6917
 
6853
6918
  } else {
6854
6919
 
6855
- console.warn( 'THREE.Texture: Unable to serialize Texture.' );
6920
+ warn( 'Texture: Unable to serialize Texture.' );
6856
6921
  return {};
6857
6922
 
6858
6923
  }
@@ -7366,7 +7431,7 @@ class Texture extends EventDispatcher {
7366
7431
 
7367
7432
  if ( newValue === undefined ) {
7368
7433
 
7369
- console.warn( `THREE.Texture.setValues(): parameter '${ key }' has value of undefined.` );
7434
+ warn( `Texture.setValues(): parameter '${ key }' has value of undefined.` );
7370
7435
  continue;
7371
7436
 
7372
7437
  }
@@ -7375,7 +7440,7 @@ class Texture extends EventDispatcher {
7375
7440
 
7376
7441
  if ( currentValue === undefined ) {
7377
7442
 
7378
- console.warn( `THREE.Texture.setValues(): property '${ key }' does not exist.` );
7443
+ warn( `Texture.setValues(): property '${ key }' does not exist.` );
7379
7444
  continue;
7380
7445
 
7381
7446
  }
@@ -8992,7 +9057,16 @@ class RenderTarget extends EventDispatcher {
8992
9057
  this.textures[ i ].image.width = width;
8993
9058
  this.textures[ i ].image.height = height;
8994
9059
  this.textures[ i ].image.depth = depth;
8995
- this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
9060
+
9061
+ if ( this.textures[ i ].isData3DTexture !== true ) { // Fix for #31693
9062
+
9063
+ // TODO: Reconsider setting isArrayTexture flag here and in the ctor of Texture.
9064
+ // Maybe a method `isArrayTexture()` or just a getter could replace a flag since
9065
+ // both are evaluated on each call?
9066
+
9067
+ this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
9068
+
9069
+ }
8996
9070
 
8997
9071
  }
8998
9072
 
@@ -11309,7 +11383,7 @@ class Ray {
11309
11383
  * Represents a 4x4 matrix.
11310
11384
  *
11311
11385
  * The most common use of a 4x4 matrix in 3D computer graphics is as a transformation matrix.
11312
- * For an introduction to transformation matrices as used in WebGL, check out [this tutorial]{@link https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices}
11386
+ * For an introduction to transformation matrices as used in WebGL, check out [this tutorial](https://www.opengl-tutorial.org/beginners-tutorials/tutorial-3-matrices)
11313
11387
  *
11314
11388
  * This allows a 3D vector representing a point in 3D space to undergo
11315
11389
  * transformations such as translation, rotation, shear, scale, reflection,
@@ -11319,7 +11393,7 @@ class Ray {
11319
11393
  * A Note on Row-Major and Column-Major Ordering:
11320
11394
  *
11321
11395
  * The constructor and {@link Matrix3#set} method take arguments in
11322
- * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}
11396
+ * [row-major](https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order)
11323
11397
  * order, while internally they are stored in the {@link Matrix3#elements} array in column-major order.
11324
11398
  * This means that calling:
11325
11399
  * ```js
@@ -11613,7 +11687,7 @@ class Matrix4 {
11613
11687
  * Sets the rotation component (the upper left 3x3 matrix) of this matrix to
11614
11688
  * the rotation specified by the given Euler angles. The rest of
11615
11689
  * the matrix is set to the identity. Depending on the {@link Euler#order},
11616
- * there are six possible outcomes. See [this page]{@link https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix}
11690
+ * there are six possible outcomes. See [this page](https://en.wikipedia.org/wiki/Euler_angles#Rotation_matrix)
11617
11691
  * for a complete list.
11618
11692
  *
11619
11693
  * @param {Euler} euler - The Euler angles.
@@ -11743,7 +11817,7 @@ class Matrix4 {
11743
11817
 
11744
11818
  /**
11745
11819
  * Sets the rotation component of this matrix to the rotation specified by
11746
- * the given Quaternion as outlined [here]{@link https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion}
11820
+ * the given Quaternion as outlined [here](https://en.wikipedia.org/wiki/Rotation_matrix#Quaternion)
11747
11821
  * The rest of the matrix is set to the identity.
11748
11822
  *
11749
11823
  * @param {Quaternion} q - The Quaternion.
@@ -11905,7 +11979,7 @@ class Matrix4 {
11905
11979
  /**
11906
11980
  * Computes and returns the determinant of this matrix.
11907
11981
  *
11908
- * Based on the method outlined [here]{@link http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html}.
11982
+ * Based on the method outlined [here](http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.html).
11909
11983
  *
11910
11984
  * @return {number} The determinant.
11911
11985
  */
@@ -12012,7 +12086,7 @@ class Matrix4 {
12012
12086
  }
12013
12087
 
12014
12088
  /**
12015
- * Inverts this matrix, using the [analytic method]{@link https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution}.
12089
+ * Inverts this matrix, using the [analytic method](https://en.wikipedia.org/wiki/Invertible_matrix#Analytic_solution).
12016
12090
  * You can not invert with a determinant of zero. If you attempt this, the method produces
12017
12091
  * a zero matrix instead.
12018
12092
  *
@@ -12215,7 +12289,7 @@ class Matrix4 {
12215
12289
  * the given angle.
12216
12290
  *
12217
12291
  * This is a somewhat controversial but mathematically sound alternative to
12218
- * rotating via Quaternions. See the discussion [here]{@link https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199}.
12292
+ * rotating via Quaternions. See the discussion [here](https://www.gamedev.net/articles/programming/math-and-physics/do-we-really-need-quaternions-r1199).
12219
12293
  *
12220
12294
  * @param {Vector3} axis - The normalized rotation axis.
12221
12295
  * @param {number} angle - The rotation in radians.
@@ -12904,7 +12978,7 @@ class Euler {
12904
12978
 
12905
12979
  default:
12906
12980
 
12907
- console.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );
12981
+ warn( 'Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );
12908
12982
 
12909
12983
  }
12910
12984
 
@@ -13890,7 +13964,7 @@ class Object3D extends EventDispatcher {
13890
13964
 
13891
13965
  if ( object === this ) {
13892
13966
 
13893
- console.error( 'THREE.Object3D.add: object can\'t be added as a child of itself.', object );
13967
+ error( 'Object3D.add: object can\'t be added as a child of itself.', object );
13894
13968
  return this;
13895
13969
 
13896
13970
  }
@@ -13909,7 +13983,7 @@ class Object3D extends EventDispatcher {
13909
13983
 
13910
13984
  } else {
13911
13985
 
13912
- console.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );
13986
+ error( 'Object3D.add: object not an instance of THREE.Object3D.', object );
13913
13987
 
13914
13988
  }
13915
13989
 
@@ -15580,7 +15654,7 @@ class Color {
15580
15654
  /**
15581
15655
  * Sets this color from a CSS-style string. For example, `rgb(250, 0,0)`,
15582
15656
  * `rgb(100%, 0%, 0%)`, `hsl(0, 100%, 50%)`, `#ff0000`, `#f00`, or `red` ( or
15583
- * any [X11 color name]{@link https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart} -
15657
+ * any [X11 color name](https://en.wikipedia.org/wiki/X11_color_names#Color_name_chart) -
15584
15658
  * all 140 color names are supported).
15585
15659
  *
15586
15660
  * @param {string} style - Color as a CSS-style string.
@@ -15595,7 +15669,7 @@ class Color {
15595
15669
 
15596
15670
  if ( parseFloat( string ) < 1 ) {
15597
15671
 
15598
- console.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );
15672
+ warn( 'Color: Alpha component of ' + style + ' will be ignored.' );
15599
15673
 
15600
15674
  }
15601
15675
 
@@ -15671,7 +15745,7 @@ class Color {
15671
15745
 
15672
15746
  default:
15673
15747
 
15674
- console.warn( 'THREE.Color: Unknown color model ' + style );
15748
+ warn( 'Color: Unknown color model ' + style );
15675
15749
 
15676
15750
  }
15677
15751
 
@@ -15699,7 +15773,7 @@ class Color {
15699
15773
 
15700
15774
  } else {
15701
15775
 
15702
- console.warn( 'THREE.Color: Invalid hex color ' + style );
15776
+ warn( 'Color: Invalid hex color ' + style );
15703
15777
 
15704
15778
  }
15705
15779
 
@@ -15739,7 +15813,7 @@ class Color {
15739
15813
  } else {
15740
15814
 
15741
15815
  // unknown color
15742
- console.warn( 'THREE.Color: Unknown color ' + style );
15816
+ warn( 'Color: Unknown color ' + style );
15743
15817
 
15744
15818
  }
15745
15819
 
@@ -16787,7 +16861,7 @@ class Material extends EventDispatcher {
16787
16861
  *
16788
16862
  * This method can only be used when rendering with {@link WebGLRenderer}. The
16789
16863
  * recommended approach when customizing materials is to use `WebGPURenderer` with the new
16790
- * Node Material system and [TSL]{@link https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language}.
16864
+ * Node Material system and [TSL](https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language).
16791
16865
  *
16792
16866
  * @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source.
16793
16867
  * @param {WebGLRenderer} renderer - A reference to the renderer.
@@ -16826,7 +16900,7 @@ class Material extends EventDispatcher {
16826
16900
 
16827
16901
  if ( newValue === undefined ) {
16828
16902
 
16829
- console.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );
16903
+ warn( `Material: parameter '${ key }' has value of undefined.` );
16830
16904
  continue;
16831
16905
 
16832
16906
  }
@@ -16835,7 +16909,7 @@ class Material extends EventDispatcher {
16835
16909
 
16836
16910
  if ( currentValue === undefined ) {
16837
16911
 
16838
- console.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );
16912
+ warn( `Material: '${ key }' is not a property of THREE.${ this.type }.` );
16839
16913
  continue;
16840
16914
 
16841
16915
  }
@@ -17282,6 +17356,7 @@ class Material extends EventDispatcher {
17282
17356
  * This material is not affected by lights.
17283
17357
  *
17284
17358
  * @augments Material
17359
+ * @demo scenes/material-browser.html#MeshBasicMaterial
17285
17360
  */
17286
17361
  class MeshBasicMaterial extends Material {
17287
17362
 
@@ -17667,7 +17742,7 @@ function _generateTables() {
17667
17742
  */
17668
17743
  function toHalfFloat( val ) {
17669
17744
 
17670
- if ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );
17745
+ if ( Math.abs( val ) > 65504 ) warn( 'DataUtils.toHalfFloat(): Value out of range.' );
17671
17746
 
17672
17747
  val = clamp( val, -65504, 65504 );
17673
17748
 
@@ -19338,7 +19413,7 @@ class BufferGeometry extends EventDispatcher {
19338
19413
 
19339
19414
  if ( points.length > positionAttribute.count ) {
19340
19415
 
19341
- console.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
19416
+ warn( 'BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
19342
19417
 
19343
19418
  }
19344
19419
 
@@ -19368,7 +19443,7 @@ class BufferGeometry extends EventDispatcher {
19368
19443
 
19369
19444
  if ( position && position.isGLBufferAttribute ) {
19370
19445
 
19371
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
19446
+ error( 'BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
19372
19447
 
19373
19448
  this.boundingBox.set(
19374
19449
  new Vector3( - Infinity, - Infinity, - Infinity ),
@@ -19419,7 +19494,7 @@ class BufferGeometry extends EventDispatcher {
19419
19494
 
19420
19495
  if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {
19421
19496
 
19422
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
19497
+ error( 'BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
19423
19498
 
19424
19499
  }
19425
19500
 
@@ -19443,7 +19518,7 @@ class BufferGeometry extends EventDispatcher {
19443
19518
 
19444
19519
  if ( position && position.isGLBufferAttribute ) {
19445
19520
 
19446
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
19521
+ error( 'BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
19447
19522
 
19448
19523
  this.boundingSphere.set( new Vector3(), Infinity );
19449
19524
 
@@ -19534,7 +19609,7 @@ class BufferGeometry extends EventDispatcher {
19534
19609
 
19535
19610
  if ( isNaN( this.boundingSphere.radius ) ) {
19536
19611
 
19537
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
19612
+ error( 'BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
19538
19613
 
19539
19614
  }
19540
19615
 
@@ -19562,7 +19637,7 @@ class BufferGeometry extends EventDispatcher {
19562
19637
  attributes.normal === undefined ||
19563
19638
  attributes.uv === undefined ) {
19564
19639
 
19565
- console.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
19640
+ error( 'BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
19566
19641
  return;
19567
19642
 
19568
19643
  }
@@ -19872,7 +19947,7 @@ class BufferGeometry extends EventDispatcher {
19872
19947
 
19873
19948
  if ( this.index === null ) {
19874
19949
 
19875
- console.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
19950
+ warn( 'BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
19876
19951
  return this;
19877
19952
 
19878
19953
  }
@@ -20682,6 +20757,7 @@ function checkGeometryIntersection( object, material, raycaster, ray, uv, uv1, n
20682
20757
  * ```
20683
20758
  *
20684
20759
  * @augments BufferGeometry
20760
+ * @demo scenes/geometry-browser.html#BoxGeometry
20685
20761
  */
20686
20762
  class BoxGeometry extends BufferGeometry {
20687
20763
 
@@ -20882,8 +20958,20 @@ class BoxGeometry extends BufferGeometry {
20882
20958
 
20883
20959
  }
20884
20960
 
20885
- // Uniform Utilities
20961
+ /**
20962
+ * Provides utility functions for managing uniforms.
20963
+ *
20964
+ * @module UniformsUtils
20965
+ */
20886
20966
 
20967
+ /**
20968
+ * Clones the given uniform definitions by performing a deep-copy. That means
20969
+ * if the value of a uniform refers to an object like a Vector3 or Texture,
20970
+ * the cloned uniform will refer to a new object reference.
20971
+ *
20972
+ * @param {Object} src - An object representing uniform definitions.
20973
+ * @return {Object} The cloned uniforms.
20974
+ */
20887
20975
  function cloneUniforms( src ) {
20888
20976
 
20889
20977
  const dst = {};
@@ -20903,7 +20991,7 @@ function cloneUniforms( src ) {
20903
20991
 
20904
20992
  if ( property.isRenderTargetTexture ) {
20905
20993
 
20906
- console.warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );
20994
+ warn( 'UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms().' );
20907
20995
  dst[ u ][ p ] = null;
20908
20996
 
20909
20997
  } else {
@@ -20930,6 +21018,14 @@ function cloneUniforms( src ) {
20930
21018
 
20931
21019
  }
20932
21020
 
21021
+ /**
21022
+ * Merges the given uniform definitions into a single object. Since the
21023
+ * method internally uses cloneUniforms(), it performs a deep-copy when
21024
+ * producing the merged uniform definitions.
21025
+ *
21026
+ * @param {Array} uniforms - An array of objects containing uniform definitions.
21027
+ * @return {Object} The merged uniforms.
21028
+ */
20933
21029
  function mergeUniforms( uniforms ) {
20934
21030
 
20935
21031
  const merged = {};
@@ -21007,7 +21103,7 @@ var default_fragment = "void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0
21007
21103
  * - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`
21008
21104
  * in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has
21009
21105
  * to be placed right above the loop. The loop formatting has to correspond to a defined standard.
21010
- * - The loop has to be [normalized]{@link https://en.wikipedia.org/wiki/Normalized_loop}.
21106
+ * - The loop has to be [normalized](https://en.wikipedia.org/wiki/Normalized_loop).
21011
21107
  * - The loop variable has to be *i*.
21012
21108
  * - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly
21013
21109
  * value of *i* for the given iteration and can be used in preprocessor
@@ -21213,7 +21309,7 @@ class ShaderMaterial extends Material {
21213
21309
  };
21214
21310
 
21215
21311
  /**
21216
- * If set, this calls [gl.bindAttribLocation]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation}
21312
+ * If set, this calls [gl.bindAttribLocation](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation)
21217
21313
  * to bind a generic vertex index to an attribute variable.
21218
21314
  *
21219
21315
  * @type {string|undefined}
@@ -21500,7 +21596,7 @@ const _minTarget = /*@__PURE__*/ new Vector2();
21500
21596
  const _maxTarget = /*@__PURE__*/ new Vector2();
21501
21597
 
21502
21598
  /**
21503
- * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.
21599
+ * Camera that uses [perspective projection](https://en.wikipedia.org/wiki/Perspective_(graphical)).
21504
21600
  *
21505
21601
  * This projection mode is designed to mimic the way the human eye sees. It
21506
21602
  * is the most common projection mode used for rendering a 3D scene.
@@ -23183,7 +23279,7 @@ class Scene extends Object3D {
23183
23279
  * "Interleaved" means that multiple attributes, possibly of different types,
23184
23280
  * (e.g., position, normal, uv, color) are packed into a single array buffer.
23185
23281
  *
23186
- * An introduction into interleaved arrays can be found here: [Interleaved array basics]{@link https://blog.tojicode.com/2011/05/interleaved-array-basics.html}
23282
+ * An introduction into interleaved arrays can be found here: [Interleaved array basics](https://blog.tojicode.com/2011/05/interleaved-array-basics.html)
23187
23283
  */
23188
23284
  class InterleavedBuffer {
23189
23285
 
@@ -23903,7 +23999,7 @@ class InterleavedBufferAttribute {
23903
23999
 
23904
24000
  if ( data === undefined ) {
23905
24001
 
23906
- console.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
24002
+ log( 'InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
23907
24003
 
23908
24004
  const array = [];
23909
24005
 
@@ -23953,7 +24049,7 @@ class InterleavedBufferAttribute {
23953
24049
 
23954
24050
  if ( data === undefined ) {
23955
24051
 
23956
- console.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
24052
+ log( 'InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
23957
24053
 
23958
24054
  const array = [];
23959
24055
 
@@ -24261,7 +24357,7 @@ class Sprite extends Object3D {
24261
24357
 
24262
24358
  if ( raycaster.camera === null ) {
24263
24359
 
24264
- console.error( 'THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.' );
24360
+ error( 'Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.' );
24265
24361
 
24266
24362
  }
24267
24363
 
@@ -24722,6 +24818,7 @@ const _ray$2 = /*@__PURE__*/ new Ray();
24722
24818
  * or {@link FBXLoader } import respective models.
24723
24819
  *
24724
24820
  * @augments Mesh
24821
+ * @demo scenes/bones-browser.html
24725
24822
  */
24726
24823
  class SkinnedMesh extends Mesh {
24727
24824
 
@@ -24989,7 +25086,7 @@ class SkinnedMesh extends Mesh {
24989
25086
 
24990
25087
  } else {
24991
25088
 
24992
- console.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );
25089
+ warn( 'SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );
24993
25090
 
24994
25091
  }
24995
25092
 
@@ -25258,7 +25355,7 @@ class Skeleton {
25258
25355
 
25259
25356
  if ( bones.length !== boneInverses.length ) {
25260
25357
 
25261
- console.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );
25358
+ warn( 'Skeleton: Number of inverse bone matrices does not match amount of bones.' );
25262
25359
 
25263
25360
  this.boneInverses = [];
25264
25361
 
@@ -25476,7 +25573,7 @@ class Skeleton {
25476
25573
 
25477
25574
  if ( bone === undefined ) {
25478
25575
 
25479
- console.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );
25576
+ warn( 'Skeleton: No bone found with UUID:', uuid );
25480
25577
  bone = new Bone();
25481
25578
 
25482
25579
  }
@@ -25988,7 +26085,7 @@ const _normalMatrix = /*@__PURE__*/ new Matrix3();
25988
26085
 
25989
26086
  /**
25990
26087
  * A two dimensional surface that extends infinitely in 3D space, represented
25991
- * in [Hessian normal form]{@link http://mathworld.wolfram.com/HessianNormalForm.html}
26088
+ * in [Hessian normal form](http://mathworld.wolfram.com/HessianNormalForm.html)
25992
26089
  * by a unit length normal vector and a constant.
25993
26090
  */
25994
26091
  class Plane {
@@ -28767,7 +28864,7 @@ class Line extends Object3D {
28767
28864
 
28768
28865
  } else {
28769
28866
 
28770
- console.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
28867
+ warn( 'Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
28771
28868
 
28772
28869
  }
28773
28870
 
@@ -29008,7 +29105,7 @@ class LineSegments extends Line {
29008
29105
 
29009
29106
  } else {
29010
29107
 
29011
- console.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
29108
+ warn( 'LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );
29012
29109
 
29013
29110
  }
29014
29111
 
@@ -29139,7 +29236,7 @@ class PointsMaterial extends Material {
29139
29236
  /**
29140
29237
  * Defines the size of the points in pixels.
29141
29238
  *
29142
- * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete}.
29239
+ * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete).
29143
29240
  *
29144
29241
  * @type {number}
29145
29242
  * @default 1
@@ -29519,6 +29616,8 @@ class VideoTexture extends Texture {
29519
29616
 
29520
29617
  this.source.data.cancelVideoFrameCallback( this._requestVideoFrameCallbackId );
29521
29618
 
29619
+ this._requestVideoFrameCallbackId = 0;
29620
+
29522
29621
  }
29523
29622
 
29524
29623
  super.dispose();
@@ -30094,6 +30193,7 @@ class ExternalTexture extends Texture {
30094
30193
  * ```
30095
30194
  *
30096
30195
  * @augments BufferGeometry
30196
+ * @demo scenes/geometry-browser.html#CapsuleGeometry
30097
30197
  */
30098
30198
  class CapsuleGeometry extends BufferGeometry {
30099
30199
 
@@ -30311,6 +30411,7 @@ class CapsuleGeometry extends BufferGeometry {
30311
30411
  * ```
30312
30412
  *
30313
30413
  * @augments BufferGeometry
30414
+ * @demo scenes/geometry-browser.html#CircleGeometry
30314
30415
  */
30315
30416
  class CircleGeometry extends BufferGeometry {
30316
30417
 
@@ -30440,6 +30541,7 @@ class CircleGeometry extends BufferGeometry {
30440
30541
  * ```
30441
30542
  *
30442
30543
  * @augments BufferGeometry
30544
+ * @demo scenes/geometry-browser.html#CylinderGeometry
30443
30545
  */
30444
30546
  class CylinderGeometry extends BufferGeometry {
30445
30547
 
@@ -30765,6 +30867,7 @@ class CylinderGeometry extends BufferGeometry {
30765
30867
  * ```
30766
30868
  *
30767
30869
  * @augments CylinderGeometry
30870
+ * @demo scenes/geometry-browser.html#ConeGeometry
30768
30871
  */
30769
30872
  class ConeGeometry extends CylinderGeometry {
30770
30873
 
@@ -31173,6 +31276,7 @@ class PolyhedronGeometry extends BufferGeometry {
31173
31276
  * ```
31174
31277
  *
31175
31278
  * @augments PolyhedronGeometry
31279
+ * @demo scenes/geometry-browser.html#DodecahedronGeometry
31176
31280
  */
31177
31281
  class DodecahedronGeometry extends PolyhedronGeometry {
31178
31282
 
@@ -31492,7 +31596,7 @@ class Curve {
31492
31596
  */
31493
31597
  getPoint( /* t, optionalTarget */ ) {
31494
31598
 
31495
- console.warn( 'THREE.Curve: .getPoint() not implemented.' );
31599
+ warn( 'Curve: .getPoint() not implemented.' );
31496
31600
 
31497
31601
  }
31498
31602
 
@@ -32550,7 +32654,13 @@ class CatmullRomCurve3 extends Curve {
32550
32654
 
32551
32655
  }
32552
32656
 
32553
- // Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve
32657
+ /**
32658
+ * Interpolations contains spline and Bézier functions internally used by concrete curve classes.
32659
+ *
32660
+ * Bezier Curves formulas obtained from: https://en.wikipedia.org/wiki/B%C3%A9zier_curve
32661
+ *
32662
+ * @module Interpolations
32663
+ */
32554
32664
 
32555
32665
  /**
32556
32666
  * Computes a point on a Catmull-Rom spline.
@@ -34332,8 +34442,8 @@ class Shape extends Path {
34332
34442
  }
34333
34443
 
34334
34444
  /* eslint-disable */
34335
- // copy of mapbox/earcut version 3.0.1
34336
- // https://github.com/mapbox/earcut/tree/v3.0.1
34445
+ // copy of mapbox/earcut version 3.0.2
34446
+ // https://github.com/mapbox/earcut/tree/v3.0.2
34337
34447
 
34338
34448
  function earcut(data, holeIndices, dim = 2) {
34339
34449
 
@@ -34350,10 +34460,10 @@ function earcut(data, holeIndices, dim = 2) {
34350
34460
 
34351
34461
  // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox
34352
34462
  if (data.length > 80 * dim) {
34353
- minX = Infinity;
34354
- minY = Infinity;
34355
- let maxX = -Infinity;
34356
- let maxY = -Infinity;
34463
+ minX = data[0];
34464
+ minY = data[1];
34465
+ let maxX = minX;
34466
+ let maxY = minY;
34357
34467
 
34358
34468
  for (let i = dim; i < outerLen; i += dim) {
34359
34469
  const x = data[i];
@@ -34629,7 +34739,7 @@ function compareXYSlope(a, b) {
34629
34739
  return result;
34630
34740
  }
34631
34741
 
34632
- // find a bridge between vertices that connects hole with an outer ring and and link it
34742
+ // find a bridge between vertices that connects hole with an outer ring and link it
34633
34743
  function eliminateHole(hole, outerNode) {
34634
34744
  const bridge = findHoleBridge(hole, outerNode);
34635
34745
  if (!bridge) {
@@ -34967,6 +35077,12 @@ function signedArea(data, start, end, dim) {
34967
35077
  return sum;
34968
35078
  }
34969
35079
 
35080
+ /**
35081
+ * An implementation of the earcut polygon triangulation algorithm.
35082
+ * The code is a port of [mapbox/earcut](https://github.com/mapbox/earcut).
35083
+ *
35084
+ * @see https://github.com/mapbox/earcut
35085
+ */
34970
35086
  class Earcut {
34971
35087
 
34972
35088
  /**
@@ -35117,6 +35233,7 @@ function addContour( vertices, contour ) {
35117
35233
  * ```
35118
35234
  *
35119
35235
  * @augments BufferGeometry
35236
+ * @demo scenes/geometry-browser.html#ExtrudeGeometry
35120
35237
  */
35121
35238
  class ExtrudeGeometry extends BufferGeometry {
35122
35239
 
@@ -35205,7 +35322,7 @@ class ExtrudeGeometry extends BufferGeometry {
35205
35322
 
35206
35323
  splineTube = extrudePath.computeFrenetFrames( steps, false );
35207
35324
 
35208
- // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
35325
+ // log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
35209
35326
 
35210
35327
  binormal = new Vector3();
35211
35328
  normal = new Vector3();
@@ -35310,7 +35427,7 @@ class ExtrudeGeometry extends BufferGeometry {
35310
35427
 
35311
35428
  function scalePt2( pt, vec, size ) {
35312
35429
 
35313
- if ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );
35430
+ if ( ! vec ) error( 'ExtrudeGeometry: vec does not exist' );
35314
35431
 
35315
35432
  return pt.clone().addScaledVector( vec, size );
35316
35433
 
@@ -35425,14 +35542,14 @@ class ExtrudeGeometry extends BufferGeometry {
35425
35542
 
35426
35543
  if ( direction_eq ) {
35427
35544
 
35428
- // console.log("Warning: lines are a straight sequence");
35545
+ // log("Warning: lines are a straight sequence");
35429
35546
  v_trans_x = - v_prev_y;
35430
35547
  v_trans_y = v_prev_x;
35431
35548
  shrink_by = Math.sqrt( v_prev_lensq );
35432
35549
 
35433
35550
  } else {
35434
35551
 
35435
- // console.log("Warning: lines are a straight spike");
35552
+ // log("Warning: lines are a straight spike");
35436
35553
  v_trans_x = v_prev_x;
35437
35554
  v_trans_y = v_prev_y;
35438
35555
  shrink_by = Math.sqrt( v_prev_lensq / 2 );
@@ -35454,7 +35571,7 @@ class ExtrudeGeometry extends BufferGeometry {
35454
35571
  if ( k === il ) k = 0;
35455
35572
 
35456
35573
  // (j)---(i)---(k)
35457
- // console.log('i,j,k', i, j , k)
35574
+ // log('i,j,k', i, j , k)
35458
35575
 
35459
35576
  contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );
35460
35577
 
@@ -35751,7 +35868,7 @@ class ExtrudeGeometry extends BufferGeometry {
35751
35868
  let k = i - 1;
35752
35869
  if ( k < 0 ) k = contour.length - 1;
35753
35870
 
35754
- //console.log('b', i,j, i-1, k,vertices.length);
35871
+ //log('b', i,j, i-1, k,vertices.length);
35755
35872
 
35756
35873
  for ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {
35757
35874
 
@@ -35991,6 +36108,7 @@ function toJSON$1( shapes, options, data ) {
35991
36108
  * ```
35992
36109
  *
35993
36110
  * @augments PolyhedronGeometry
36111
+ * @demo scenes/geometry-browser.html#IcosahedronGeometry
35994
36112
  */
35995
36113
  class IcosahedronGeometry extends PolyhedronGeometry {
35996
36114
 
@@ -36065,6 +36183,7 @@ class IcosahedronGeometry extends PolyhedronGeometry {
36065
36183
  * ```
36066
36184
  *
36067
36185
  * @augments BufferGeometry
36186
+ * @demo scenes/geometry-browser.html#LatheGeometry
36068
36187
  */
36069
36188
  class LatheGeometry extends BufferGeometry {
36070
36189
 
@@ -36282,6 +36401,7 @@ class LatheGeometry extends BufferGeometry {
36282
36401
  * ```
36283
36402
  *
36284
36403
  * @augments PolyhedronGeometry
36404
+ * @demo scenes/geometry-browser.html#OctahedronGeometry
36285
36405
  */
36286
36406
  class OctahedronGeometry extends PolyhedronGeometry {
36287
36407
 
@@ -36348,6 +36468,7 @@ class OctahedronGeometry extends PolyhedronGeometry {
36348
36468
  * ```
36349
36469
  *
36350
36470
  * @augments BufferGeometry
36471
+ * @demo scenes/geometry-browser.html#PlaneGeometry
36351
36472
  */
36352
36473
  class PlaneGeometry extends BufferGeometry {
36353
36474
 
@@ -36476,6 +36597,7 @@ class PlaneGeometry extends BufferGeometry {
36476
36597
  * ```
36477
36598
  *
36478
36599
  * @augments BufferGeometry
36600
+ * @demo scenes/geometry-browser.html#RingGeometry
36479
36601
  */
36480
36602
  class RingGeometry extends BufferGeometry {
36481
36603
 
@@ -36637,6 +36759,7 @@ class RingGeometry extends BufferGeometry {
36637
36759
  * ```
36638
36760
  *
36639
36761
  * @augments BufferGeometry
36762
+ * @demo scenes/geometry-browser.html#ShapeGeometry
36640
36763
  */
36641
36764
  class ShapeGeometry extends BufferGeometry {
36642
36765
 
@@ -36858,6 +36981,7 @@ function toJSON( shapes, data ) {
36858
36981
  * ```
36859
36982
  *
36860
36983
  * @augments BufferGeometry
36984
+ * @demo scenes/geometry-browser.html#SphereGeometry
36861
36985
  */
36862
36986
  class SphereGeometry extends BufferGeometry {
36863
36987
 
@@ -37027,6 +37151,7 @@ class SphereGeometry extends BufferGeometry {
37027
37151
  * ```
37028
37152
  *
37029
37153
  * @augments PolyhedronGeometry
37154
+ * @demo scenes/geometry-browser.html#TetrahedronGeometry
37030
37155
  */
37031
37156
  class TetrahedronGeometry extends PolyhedronGeometry {
37032
37157
 
@@ -37090,6 +37215,7 @@ class TetrahedronGeometry extends PolyhedronGeometry {
37090
37215
  * ```
37091
37216
  *
37092
37217
  * @augments BufferGeometry
37218
+ * @demo scenes/geometry-browser.html#TorusGeometry
37093
37219
  */
37094
37220
  class TorusGeometry extends BufferGeometry {
37095
37221
 
@@ -37242,6 +37368,7 @@ class TorusGeometry extends BufferGeometry {
37242
37368
  * ```
37243
37369
  *
37244
37370
  * @augments BufferGeometry
37371
+ * @demo scenes/geometry-browser.html#TorusKnotGeometry
37245
37372
  */
37246
37373
  class TorusKnotGeometry extends BufferGeometry {
37247
37374
 
@@ -37454,6 +37581,7 @@ class TorusKnotGeometry extends BufferGeometry {
37454
37581
  * ```
37455
37582
  *
37456
37583
  * @augments BufferGeometry
37584
+ * @demo scenes/geometry-browser.html#TubeGeometry
37457
37585
  */
37458
37586
  class TubeGeometry extends BufferGeometry {
37459
37587
 
@@ -38001,9 +38129,9 @@ class RawShaderMaterial extends ShaderMaterial {
38001
38129
  * A standard physically based material, using Metallic-Roughness workflow.
38002
38130
  *
38003
38131
  * Physically based rendering (PBR) has recently become the standard in many
38004
- * 3D applications, such as [Unity]{@link https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/},
38005
- * [Unreal]{@link https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/} and
38006
- * [3D Studio Max]{@link http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017}.
38132
+ * 3D applications, such as [Unity](https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/),
38133
+ * [Unreal](https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/) and
38134
+ * [3D Studio Max](http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017).
38007
38135
  *
38008
38136
  * This approach differs from older approaches in that instead of using
38009
38137
  * approximations for the way in which light interacts with a surface, a
@@ -38019,16 +38147,17 @@ class RawShaderMaterial extends ShaderMaterial {
38019
38147
  * Note that for best results you should always specify an environment map when using this material.
38020
38148
  *
38021
38149
  * For a non-technical introduction to the concept of PBR and how to set up a
38022
- * PBR material, check out these articles by the people at [marmoset]{@link https://www.marmoset.co}:
38150
+ * PBR material, check out these articles by the people at [marmoset](https://www.marmoset.co):
38023
38151
  *
38024
- * - [Basic Theory of Physically Based Rendering]{@link https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/}
38025
- * - [Physically Based Rendering and You Can Too]{@link https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/}
38152
+ * - [Basic Theory of Physically Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)
38153
+ * - [Physically Based Rendering and You Can Too](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)
38026
38154
  *
38027
38155
  * Technical details of the approach used in three.js (and most other PBR systems) can be found is this
38028
- * [paper from Disney]{@link https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf}
38156
+ * [paper from Disney](https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf)
38029
38157
  * (pdf), by Brent Burley.
38030
38158
  *
38031
38159
  * @augments Material
38160
+ * @demo scenes/material-browser.html#MeshStandardMaterial
38032
38161
  */
38033
38162
  class MeshStandardMaterial extends Material {
38034
38163
 
@@ -38438,6 +38567,7 @@ class MeshStandardMaterial extends Material {
38438
38567
  * best results, always specify an environment map when using this material.
38439
38568
  *
38440
38569
  * @augments MeshStandardMaterial
38570
+ * @demo scenes/material-browser.html#MeshPhysicalMaterial
38441
38571
  */
38442
38572
  class MeshPhysicalMaterial extends MeshStandardMaterial {
38443
38573
 
@@ -38734,7 +38864,7 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
38734
38864
  }
38735
38865
 
38736
38866
  /**
38737
- * The anisotropy strength.
38867
+ * The anisotropy strength, from `0.0` to `1.0`.
38738
38868
  *
38739
38869
  * @type {number}
38740
38870
  * @default 0
@@ -38946,7 +39076,7 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
38946
39076
  /**
38947
39077
  * A material for shiny surfaces with specular highlights.
38948
39078
  *
38949
- * The material uses a non-physically based [Blinn-Phong]{@link https://en.wikipedia.org/wiki/Blinn-Phong_shading_model}
39079
+ * The material uses a non-physically based [Blinn-Phong](https://en.wikipedia.org/wiki/Blinn-Phong_shading_model)
38950
39080
  * model for calculating reflectance. Unlike the Lambertian model used in the
38951
39081
  * {@link MeshLambertMaterial} this can simulate shiny surfaces with specular
38952
39082
  * highlights (such as varnished wood). `MeshPhongMaterial` uses per-fragment shading.
@@ -38956,6 +39086,7 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
38956
39086
  * some graphical accuracy.
38957
39087
  *
38958
39088
  * @augments Material
39089
+ * @demo scenes/material-browser.html#MeshPhongMaterial
38959
39090
  */
38960
39091
  class MeshPhongMaterial extends Material {
38961
39092
 
@@ -39351,6 +39482,7 @@ class MeshPhongMaterial extends Material {
39351
39482
  * A material implementing toon shading.
39352
39483
  *
39353
39484
  * @augments Material
39485
+ * @demo scenes/material-browser.html#MeshToonMaterial
39354
39486
  */
39355
39487
  class MeshToonMaterial extends Material {
39356
39488
 
@@ -39665,6 +39797,7 @@ class MeshToonMaterial extends Material {
39665
39797
  * A material that maps the normal vectors to RGB colors.
39666
39798
  *
39667
39799
  * @augments Material
39800
+ * @demo scenes/material-browser.html#MeshNormalMaterial
39668
39801
  */
39669
39802
  class MeshNormalMaterial extends Material {
39670
39803
 
@@ -39833,7 +39966,7 @@ class MeshNormalMaterial extends Material {
39833
39966
  /**
39834
39967
  * A material for non-shiny surfaces, without specular highlights.
39835
39968
  *
39836
- * The material uses a non-physically based [Lambertian]{@link https://en.wikipedia.org/wiki/Lambertian_reflectance}
39969
+ * The material uses a non-physically based [Lambertian](https://en.wikipedia.org/wiki/Lambertian_reflectance)
39837
39970
  * model for calculating reflectance. This can simulate some surfaces (such
39838
39971
  * as untreated wood or stone) well, but cannot simulate shiny surfaces with
39839
39972
  * specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment
@@ -39845,6 +39978,7 @@ class MeshNormalMaterial extends Material {
39845
39978
  * {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy.
39846
39979
  *
39847
39980
  * @augments Material
39981
+ * @demo scenes/material-browser.html#MeshLambertMaterial
39848
39982
  */
39849
39983
  class MeshLambertMaterial extends Material {
39850
39984
 
@@ -40220,6 +40354,7 @@ class MeshLambertMaterial extends Material {
40220
40354
  * near and far plane. White is nearest, black is farthest.
40221
40355
  *
40222
40356
  * @augments Material
40357
+ * @demo scenes/material-browser.html#MeshDepthMaterial
40223
40358
  */
40224
40359
  class MeshDepthMaterial extends Material {
40225
40360
 
@@ -40484,6 +40619,7 @@ class MeshDistanceMaterial extends Material {
40484
40619
  * shadows.
40485
40620
  *
40486
40621
  * @augments Material
40622
+ * @demo scenes/material-browser.html#MeshMatcapMaterial
40487
40623
  */
40488
40624
  class MeshMatcapMaterial extends Material {
40489
40625
 
@@ -40635,6 +40771,24 @@ class MeshMatcapMaterial extends Material {
40635
40771
  */
40636
40772
  this.alphaMap = null;
40637
40773
 
40774
+ /**
40775
+ * Renders the geometry as a wireframe.
40776
+ *
40777
+ * @type {boolean}
40778
+ * @default false
40779
+ */
40780
+ this.wireframe = false;
40781
+
40782
+ /**
40783
+ * Controls the thickness of the wireframe.
40784
+ *
40785
+ * Can only be used with {@link SVGRenderer}.
40786
+ *
40787
+ * @type {number}
40788
+ * @default 1
40789
+ */
40790
+ this.wireframeLinewidth = 1;
40791
+
40638
40792
  /**
40639
40793
  * Whether the material is rendered with flat shading or not.
40640
40794
  *
@@ -40681,6 +40835,9 @@ class MeshMatcapMaterial extends Material {
40681
40835
 
40682
40836
  this.alphaMap = source.alphaMap;
40683
40837
 
40838
+ this.wireframe = source.wireframe;
40839
+ this.wireframeLinewidth = source.wireframeLinewidth;
40840
+
40684
40841
  this.flatShading = source.flatShading;
40685
40842
 
40686
40843
  this.fog = source.fog;
@@ -42001,7 +42158,7 @@ class KeyframeTrack {
42001
42158
 
42002
42159
  }
42003
42160
 
42004
- console.warn( 'THREE.KeyframeTrack:', message );
42161
+ warn( 'KeyframeTrack:', message );
42005
42162
  return this;
42006
42163
 
42007
42164
  }
@@ -42161,7 +42318,7 @@ class KeyframeTrack {
42161
42318
  const valueSize = this.getValueSize();
42162
42319
  if ( valueSize - Math.floor( valueSize ) !== 0 ) {
42163
42320
 
42164
- console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );
42321
+ error( 'KeyframeTrack: Invalid value size in track.', this );
42165
42322
  valid = false;
42166
42323
 
42167
42324
  }
@@ -42173,7 +42330,7 @@ class KeyframeTrack {
42173
42330
 
42174
42331
  if ( nKeys === 0 ) {
42175
42332
 
42176
- console.error( 'THREE.KeyframeTrack: Track is empty.', this );
42333
+ error( 'KeyframeTrack: Track is empty.', this );
42177
42334
  valid = false;
42178
42335
 
42179
42336
  }
@@ -42186,7 +42343,7 @@ class KeyframeTrack {
42186
42343
 
42187
42344
  if ( typeof currTime === 'number' && isNaN( currTime ) ) {
42188
42345
 
42189
- console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );
42346
+ error( 'KeyframeTrack: Time is not a valid number.', this, i, currTime );
42190
42347
  valid = false;
42191
42348
  break;
42192
42349
 
@@ -42194,7 +42351,7 @@ class KeyframeTrack {
42194
42351
 
42195
42352
  if ( prevTime !== null && prevTime > currTime ) {
42196
42353
 
42197
- console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );
42354
+ error( 'KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );
42198
42355
  valid = false;
42199
42356
  break;
42200
42357
 
@@ -42214,7 +42371,7 @@ class KeyframeTrack {
42214
42371
 
42215
42372
  if ( isNaN( value ) ) {
42216
42373
 
42217
- console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );
42374
+ error( 'KeyframeTrack: Value is not a valid number.', this, i, value );
42218
42375
  valid = false;
42219
42376
  break;
42220
42377
 
@@ -42984,11 +43141,11 @@ class AnimationClip {
42984
43141
  */
42985
43142
  static parseAnimation( animation, bones ) {
42986
43143
 
42987
- console.warn( 'THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185' );
43144
+ warn( 'AnimationClip: parseAnimation() is deprecated and will be removed with r185' );
42988
43145
 
42989
43146
  if ( ! animation ) {
42990
43147
 
42991
- console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );
43148
+ error( 'AnimationClip: No animation in JSONLoader data.' );
42992
43149
  return null;
42993
43150
 
42994
43151
  }
@@ -43340,7 +43497,7 @@ const Cache = {
43340
43497
 
43341
43498
  if ( this.enabled === false ) return;
43342
43499
 
43343
- // console.log( 'THREE.Cache', 'Adding key:', key );
43500
+ // log( 'Cache', 'Adding key:', key );
43344
43501
 
43345
43502
  this.files[ key ] = file;
43346
43503
 
@@ -43357,7 +43514,7 @@ const Cache = {
43357
43514
 
43358
43515
  if ( this.enabled === false ) return;
43359
43516
 
43360
- // console.log( 'THREE.Cache', 'Checking key:', key );
43517
+ // log( 'Cache', 'Checking key:', key );
43361
43518
 
43362
43519
  return this.files[ key ];
43363
43520
 
@@ -43462,9 +43619,10 @@ class LoadingManager {
43462
43619
  /**
43463
43620
  * Used for aborting ongoing requests in loaders using this manager.
43464
43621
  *
43465
- * @type {AbortController}
43622
+ * @private
43623
+ * @type {AbortController | null}
43466
43624
  */
43467
- this.abortController = new AbortController();
43625
+ this._abortController = null;
43468
43626
 
43469
43627
  /**
43470
43628
  * This should be called by any loader using the manager when the loader
@@ -43675,8 +43833,9 @@ class LoadingManager {
43675
43833
  */
43676
43834
  this.abort = function () {
43677
43835
 
43836
+
43678
43837
  this.abortController.abort();
43679
- this.abortController = new AbortController();
43838
+ this._abortController = null;
43680
43839
 
43681
43840
  return this;
43682
43841
 
@@ -43684,6 +43843,26 @@ class LoadingManager {
43684
43843
 
43685
43844
  }
43686
43845
 
43846
+ // TODO: Revert this back to a single member variable once this issue has been fixed
43847
+ // https://github.com/cloudflare/workerd/issues/3657
43848
+
43849
+ /**
43850
+ * Used for aborting ongoing requests in loaders using this manager.
43851
+ *
43852
+ * @type {AbortController}
43853
+ */
43854
+ get abortController() {
43855
+
43856
+ if ( ! this._abortController ) {
43857
+
43858
+ this._abortController = new AbortController();
43859
+
43860
+ }
43861
+
43862
+ return this._abortController;
43863
+
43864
+ }
43865
+
43687
43866
  }
43688
43867
 
43689
43868
  /**
@@ -43748,7 +43927,7 @@ class Loader {
43748
43927
  this.resourcePath = '';
43749
43928
 
43750
43929
  /**
43751
- * The [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}
43930
+ * The [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
43752
43931
  * used in HTTP request.
43753
43932
  *
43754
43933
  * @type {Object<string, any>}
@@ -43813,7 +43992,7 @@ class Loader {
43813
43992
 
43814
43993
  /**
43815
43994
  * Whether the XMLHttpRequest uses credentials such as cookies, authorization
43816
- * headers or TLS client certificates, see [XMLHttpRequest.withCredentials]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials}.
43995
+ * headers or TLS client certificates, see [XMLHttpRequest.withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials).
43817
43996
  *
43818
43997
  * Note: This setting has no effect if you are loading files locally or from the same domain.
43819
43998
  *
@@ -43856,7 +44035,7 @@ class Loader {
43856
44035
  /**
43857
44036
  * Sets the given request header.
43858
44037
  *
43859
- * @param {Object} requestHeader - A [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}
44038
+ * @param {Object} requestHeader - A [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
43860
44039
  * for configuring the HTTP request.
43861
44040
  * @return {Loader} A reference to this instance.
43862
44041
  */
@@ -43948,7 +44127,7 @@ class FileLoader extends Loader {
43948
44127
 
43949
44128
  /**
43950
44129
  * The expected mime type. Valid values can be found
43951
- * [here]{@link hhttps://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype}
44130
+ * [here](hhttps://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype)
43952
44131
  *
43953
44132
  * @type {string}
43954
44133
  */
@@ -44054,7 +44233,7 @@ class FileLoader extends Loader {
44054
44233
 
44055
44234
  if ( response.status === 0 ) {
44056
44235
 
44057
- console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );
44236
+ warn( 'FileLoader: HTTP Status 0 received.' );
44058
44237
 
44059
44238
  }
44060
44239
 
@@ -44324,7 +44503,7 @@ class AnimationLoader extends Loader {
44324
44503
 
44325
44504
  } else {
44326
44505
 
44327
- console.error( e );
44506
+ error( e );
44328
44507
 
44329
44508
  }
44330
44509
 
@@ -44519,7 +44698,7 @@ const _loading = new WeakMap();
44519
44698
  * ```
44520
44699
  * Please note that `ImageLoader` has dropped support for progress
44521
44700
  * events in `r84`. For an `ImageLoader` that supports progress events, see
44522
- * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639}.
44701
+ * [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639).
44523
44702
  *
44524
44703
  * @augments Loader
44525
44704
  */
@@ -44828,7 +45007,7 @@ class DataTextureLoader extends Loader {
44828
45007
 
44829
45008
  } else {
44830
45009
 
44831
- console.error( error );
45010
+ error( error );
44832
45011
  return;
44833
45012
 
44834
45013
  }
@@ -44923,7 +45102,7 @@ class DataTextureLoader extends Loader {
44923
45102
  * ```
44924
45103
  * Please note that `TextureLoader` has dropped support for progress
44925
45104
  * events in `r84`. For a `TextureLoader` that supports progress events, see
44926
- * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}.
45105
+ * [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145).
44927
45106
  *
44928
45107
  * @augments Loader
44929
45108
  */
@@ -45926,7 +46105,7 @@ class PointLight extends Light {
45926
46105
  }
45927
46106
 
45928
46107
  /**
45929
- * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.
46108
+ * Camera that uses [orthographic projection](https://en.wikipedia.org/wiki/Orthographic_projection).
45930
46109
  *
45931
46110
  * In this projection mode, an object's size in the rendered image stays
45932
46111
  * constant regardless of its distance from the camera. This can be useful
@@ -46926,7 +47105,7 @@ class MaterialLoader extends Loader {
46926
47105
 
46927
47106
  } else {
46928
47107
 
46929
- console.error( e );
47108
+ error( e );
46930
47109
 
46931
47110
  }
46932
47111
 
@@ -46952,7 +47131,7 @@ class MaterialLoader extends Loader {
46952
47131
 
46953
47132
  if ( textures[ name ] === undefined ) {
46954
47133
 
46955
- console.warn( 'THREE.MaterialLoader: Undefined texture', name );
47134
+ warn( 'MaterialLoader: Undefined texture', name );
46956
47135
 
46957
47136
  }
46958
47137
 
@@ -47444,7 +47623,7 @@ class BufferGeometryLoader extends Loader {
47444
47623
 
47445
47624
  } else {
47446
47625
 
47447
- console.error( e );
47626
+ error( e );
47448
47627
 
47449
47628
  }
47450
47629
 
@@ -47617,7 +47796,7 @@ class BufferGeometryLoader extends Loader {
47617
47796
  }
47618
47797
 
47619
47798
  /**
47620
- * A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}.
47799
+ * 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).
47621
47800
  * The files are internally loaded via {@link FileLoader}.
47622
47801
  *
47623
47802
  * ```js
@@ -47676,7 +47855,7 @@ class ObjectLoader extends Loader {
47676
47855
 
47677
47856
  if ( onError !== undefined ) onError( error );
47678
47857
 
47679
- console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message );
47858
+ error( 'ObjectLoader: Can\'t parse ' + url + '.', error.message );
47680
47859
 
47681
47860
  return;
47682
47861
 
@@ -47688,7 +47867,7 @@ class ObjectLoader extends Loader {
47688
47867
 
47689
47868
  if ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\'t load ' + url ) );
47690
47869
 
47691
- console.error( 'THREE.ObjectLoader: Can\'t load ' + url );
47870
+ error( 'ObjectLoader: Can\'t load ' + url );
47692
47871
  return;
47693
47872
 
47694
47873
  }
@@ -47898,7 +48077,7 @@ class ObjectLoader extends Loader {
47898
48077
 
47899
48078
  } else {
47900
48079
 
47901
- console.warn( `THREE.ObjectLoader: Unsupported geometry type "${ data.type }"` );
48080
+ warn( `ObjectLoader: Unsupported geometry type "${ data.type }"` );
47902
48081
 
47903
48082
  }
47904
48083
 
@@ -48189,7 +48368,7 @@ class ObjectLoader extends Loader {
48189
48368
 
48190
48369
  if ( typeof value === 'number' ) return value;
48191
48370
 
48192
- console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );
48371
+ warn( 'ObjectLoader.parseTexture: Constant should be in numeric form.', value );
48193
48372
 
48194
48373
  return type[ value ];
48195
48374
 
@@ -48205,13 +48384,13 @@ class ObjectLoader extends Loader {
48205
48384
 
48206
48385
  if ( data.image === undefined ) {
48207
48386
 
48208
- console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid );
48387
+ warn( 'ObjectLoader: No "image" specified for', data.uuid );
48209
48388
 
48210
48389
  }
48211
48390
 
48212
48391
  if ( images[ data.image ] === undefined ) {
48213
48392
 
48214
- console.warn( 'THREE.ObjectLoader: Undefined image', data.image );
48393
+ warn( 'ObjectLoader: Undefined image', data.image );
48215
48394
 
48216
48395
  }
48217
48396
 
@@ -48299,7 +48478,7 @@ class ObjectLoader extends Loader {
48299
48478
 
48300
48479
  if ( geometries[ name ] === undefined ) {
48301
48480
 
48302
- console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
48481
+ warn( 'ObjectLoader: Undefined geometry', name );
48303
48482
 
48304
48483
  }
48305
48484
 
@@ -48321,7 +48500,7 @@ class ObjectLoader extends Loader {
48321
48500
 
48322
48501
  if ( materials[ uuid ] === undefined ) {
48323
48502
 
48324
- console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
48503
+ warn( 'ObjectLoader: Undefined material', uuid );
48325
48504
 
48326
48505
  }
48327
48506
 
@@ -48335,7 +48514,7 @@ class ObjectLoader extends Loader {
48335
48514
 
48336
48515
  if ( materials[ name ] === undefined ) {
48337
48516
 
48338
- console.warn( 'THREE.ObjectLoader: Undefined material', name );
48517
+ warn( 'ObjectLoader: Undefined material', name );
48339
48518
 
48340
48519
  }
48341
48520
 
@@ -48347,7 +48526,7 @@ class ObjectLoader extends Loader {
48347
48526
 
48348
48527
  if ( textures[ uuid ] === undefined ) {
48349
48528
 
48350
- console.warn( 'THREE.ObjectLoader: Undefined texture', uuid );
48529
+ warn( 'ObjectLoader: Undefined texture', uuid );
48351
48530
 
48352
48531
  }
48353
48532
 
@@ -48748,7 +48927,7 @@ class ObjectLoader extends Loader {
48748
48927
 
48749
48928
  if ( skeleton === undefined ) {
48750
48929
 
48751
- console.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );
48930
+ warn( 'ObjectLoader: No skeleton found with UUID:', child.skeleton );
48752
48931
 
48753
48932
  } else {
48754
48933
 
@@ -48819,7 +48998,7 @@ const TEXTURE_FILTER = {
48819
48998
  const _errorMap = new WeakMap();
48820
48999
 
48821
49000
  /**
48822
- * A loader for loading images as an [ImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap}.
49001
+ * A loader for loading images as an [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap).
48823
49002
  * An `ImageBitmap` provides an asynchronous and resource efficient pathway to prepare
48824
49003
  * textures for rendering.
48825
49004
  *
@@ -48863,13 +49042,13 @@ class ImageBitmapLoader extends Loader {
48863
49042
 
48864
49043
  if ( typeof createImageBitmap === 'undefined' ) {
48865
49044
 
48866
- console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );
49045
+ warn( 'ImageBitmapLoader: createImageBitmap() not supported.' );
48867
49046
 
48868
49047
  }
48869
49048
 
48870
49049
  if ( typeof fetch === 'undefined' ) {
48871
49050
 
48872
- console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );
49051
+ warn( 'ImageBitmapLoader: fetch() not supported.' );
48873
49052
 
48874
49053
  }
48875
49054
 
@@ -48893,7 +49072,7 @@ class ImageBitmapLoader extends Loader {
48893
49072
 
48894
49073
  /**
48895
49074
  * Sets the given loader options. The structure of the object must match the `options` parameter of
48896
- * [createImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap}.
49075
+ * [createImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap).
48897
49076
  *
48898
49077
  * @param {Object} options - The loader options to set.
48899
49078
  * @return {ImageBitmapLoader} A reference to this image bitmap loader.
@@ -49149,7 +49328,7 @@ class AudioLoader extends Loader {
49149
49328
 
49150
49329
  } else {
49151
49330
 
49152
- console.error( e );
49331
+ error( e );
49153
49332
 
49154
49333
  }
49155
49334
 
@@ -49168,8 +49347,8 @@ const _projectionMatrix = /*@__PURE__*/ new Matrix4();
49168
49347
  /**
49169
49348
  * A special type of camera that uses two perspective cameras with
49170
49349
  * stereoscopic projection. Can be used for rendering stereo effects
49171
- * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or
49172
- * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.
49350
+ * like [3D Anaglyph](https://en.wikipedia.org/wiki/Anaglyph_3D) or
49351
+ * [Parallax Barrier](https://en.wikipedia.org/wiki/parallax_barrier).
49173
49352
  */
49174
49353
  class StereoCamera {
49175
49354
 
@@ -49692,7 +49871,7 @@ class AudioListener extends Object3D {
49692
49871
  /**
49693
49872
  * Represents a non-positional ( global ) audio object.
49694
49873
  *
49695
- * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.
49874
+ * This and related audio modules make use of the [Web Audio API](https://www.w3.org/TR/webaudio-1.1/).
49696
49875
  *
49697
49876
  * ```js
49698
49877
  * // create an AudioListener and add it to the camera
@@ -50003,14 +50182,14 @@ class Audio extends Object3D {
50003
50182
 
50004
50183
  if ( this.isPlaying === true ) {
50005
50184
 
50006
- console.warn( 'THREE.Audio: Audio is already playing.' );
50185
+ warn( 'Audio: Audio is already playing.' );
50007
50186
  return;
50008
50187
 
50009
50188
  }
50010
50189
 
50011
50190
  if ( this.hasPlaybackControl === false ) {
50012
50191
 
50013
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
50192
+ warn( 'Audio: this Audio has no playback control.' );
50014
50193
  return;
50015
50194
 
50016
50195
  }
@@ -50047,7 +50226,7 @@ class Audio extends Object3D {
50047
50226
 
50048
50227
  if ( this.hasPlaybackControl === false ) {
50049
50228
 
50050
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
50229
+ warn( 'Audio: this Audio has no playback control.' );
50051
50230
  return;
50052
50231
 
50053
50232
  }
@@ -50089,7 +50268,7 @@ class Audio extends Object3D {
50089
50268
 
50090
50269
  if ( this.hasPlaybackControl === false ) {
50091
50270
 
50092
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
50271
+ warn( 'Audio: this Audio has no playback control.' );
50093
50272
  return;
50094
50273
 
50095
50274
  }
@@ -50282,7 +50461,7 @@ class Audio extends Object3D {
50282
50461
 
50283
50462
  if ( this.hasPlaybackControl === false ) {
50284
50463
 
50285
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
50464
+ warn( 'Audio: this Audio has no playback control.' );
50286
50465
  return;
50287
50466
 
50288
50467
  }
@@ -50331,7 +50510,7 @@ class Audio extends Object3D {
50331
50510
 
50332
50511
  if ( this.hasPlaybackControl === false ) {
50333
50512
 
50334
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
50513
+ warn( 'Audio: this Audio has no playback control.' );
50335
50514
  return false;
50336
50515
 
50337
50516
  }
@@ -50352,7 +50531,7 @@ class Audio extends Object3D {
50352
50531
 
50353
50532
  if ( this.hasPlaybackControl === false ) {
50354
50533
 
50355
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
50534
+ warn( 'Audio: this Audio has no playback control.' );
50356
50535
  return;
50357
50536
 
50358
50537
  }
@@ -50430,7 +50609,7 @@ class Audio extends Object3D {
50430
50609
 
50431
50610
  if ( source.sourceType !== 'buffer' ) {
50432
50611
 
50433
- console.warn( 'THREE.Audio: Audio source type cannot be copied.' );
50612
+ warn( 'Audio: Audio source type cannot be copied.' );
50434
50613
 
50435
50614
  return this;
50436
50615
 
@@ -50615,7 +50794,7 @@ class PositionalAudio extends Audio {
50615
50794
  * Defines which algorithm to use to reduce the volume of the audio source
50616
50795
  * as it moves away from the listener.
50617
50796
  *
50618
- * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}
50797
+ * Read [the spec](https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype)
50619
50798
  * for more details.
50620
50799
  *
50621
50800
  * @param {('linear'|'inverse'|'exponential')} value - The distance model to set.
@@ -51697,7 +51876,7 @@ class PropertyBinding {
51697
51876
  // ensure there is a value node
51698
51877
  if ( ! targetObject ) {
51699
51878
 
51700
- console.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );
51879
+ warn( 'PropertyBinding: No target node found for track: ' + this.path + '.' );
51701
51880
  return;
51702
51881
 
51703
51882
  }
@@ -51713,14 +51892,14 @@ class PropertyBinding {
51713
51892
 
51714
51893
  if ( ! targetObject.material ) {
51715
51894
 
51716
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
51895
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
51717
51896
  return;
51718
51897
 
51719
51898
  }
51720
51899
 
51721
51900
  if ( ! targetObject.material.materials ) {
51722
51901
 
51723
- console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
51902
+ error( 'PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
51724
51903
  return;
51725
51904
 
51726
51905
  }
@@ -51733,7 +51912,7 @@ class PropertyBinding {
51733
51912
 
51734
51913
  if ( ! targetObject.skeleton ) {
51735
51914
 
51736
- console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
51915
+ error( 'PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
51737
51916
  return;
51738
51917
 
51739
51918
  }
@@ -51768,14 +51947,14 @@ class PropertyBinding {
51768
51947
 
51769
51948
  if ( ! targetObject.material ) {
51770
51949
 
51771
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
51950
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
51772
51951
  return;
51773
51952
 
51774
51953
  }
51775
51954
 
51776
51955
  if ( ! targetObject.material.map ) {
51777
51956
 
51778
- console.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
51957
+ error( 'PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
51779
51958
  return;
51780
51959
 
51781
51960
  }
@@ -51787,7 +51966,7 @@ class PropertyBinding {
51787
51966
 
51788
51967
  if ( targetObject[ objectName ] === undefined ) {
51789
51968
 
51790
- console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );
51969
+ error( 'PropertyBinding: Can not bind to objectName of node undefined.', this );
51791
51970
  return;
51792
51971
 
51793
51972
  }
@@ -51801,7 +51980,7 @@ class PropertyBinding {
51801
51980
 
51802
51981
  if ( targetObject[ objectIndex ] === undefined ) {
51803
51982
 
51804
- console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
51983
+ error( 'PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
51805
51984
  return;
51806
51985
 
51807
51986
  }
@@ -51819,7 +51998,7 @@ class PropertyBinding {
51819
51998
 
51820
51999
  const nodeName = parsedPath.nodeName;
51821
52000
 
51822
- console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +
52001
+ error( 'PropertyBinding: Trying to update property for track: ' + nodeName +
51823
52002
  '.' + propertyName + ' but it wasn\'t found.', targetObject );
51824
52003
  return;
51825
52004
 
@@ -51854,14 +52033,14 @@ class PropertyBinding {
51854
52033
  // support resolving morphTarget names into indices.
51855
52034
  if ( ! targetObject.geometry ) {
51856
52035
 
51857
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
52036
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
51858
52037
  return;
51859
52038
 
51860
52039
  }
51861
52040
 
51862
52041
  if ( ! targetObject.geometry.morphAttributes ) {
51863
52042
 
51864
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
52043
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
51865
52044
  return;
51866
52045
 
51867
52046
  }
@@ -52153,7 +52332,7 @@ class AnimationObjectGroup {
52153
52332
 
52154
52333
  } else if ( objects[ index ] !== knownObject ) {
52155
52334
 
52156
- console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +
52335
+ error( 'AnimationObjectGroup: Different objects with the same UUID ' +
52157
52336
  'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );
52158
52337
 
52159
52338
  } // else the object is already where we want it to be
@@ -53948,7 +54127,7 @@ class AnimationMixer extends EventDispatcher {
53948
54127
  /**
53949
54128
  * Deactivates all previously scheduled actions on this mixer.
53950
54129
  *
53951
- * @return {AnimationMixer} A reference to thi animation mixer.
54130
+ * @return {AnimationMixer} A reference to this animation mixer.
53952
54131
  */
53953
54132
  stopAllAction() {
53954
54133
 
@@ -53972,7 +54151,7 @@ class AnimationMixer extends EventDispatcher {
53972
54151
  * time from {@link Clock} or {@link Timer}.
53973
54152
  *
53974
54153
  * @param {number} deltaTime - The delta time in seconds.
53975
- * @return {AnimationMixer} A reference to thi animation mixer.
54154
+ * @return {AnimationMixer} A reference to this animation mixer.
53976
54155
  */
53977
54156
  update( deltaTime ) {
53978
54157
 
@@ -54018,7 +54197,7 @@ class AnimationMixer extends EventDispatcher {
54018
54197
  * input parameter will be scaled by {@link AnimationMixer#timeScale}
54019
54198
  *
54020
54199
  * @param {number} time - The time to set in seconds.
54021
- * @return {AnimationMixer} A reference to thi animation mixer.
54200
+ * @return {AnimationMixer} A reference to this animation mixer.
54022
54201
  */
54023
54202
  setTime( time ) {
54024
54203
 
@@ -54793,7 +54972,7 @@ class Raycaster {
54793
54972
 
54794
54973
  } else {
54795
54974
 
54796
- console.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );
54975
+ error( 'Raycaster: Unsupported camera type: ' + camera.type );
54797
54976
 
54798
54977
  }
54799
54978
 
@@ -55105,7 +55284,7 @@ function handleVisibilityChange() {
55105
55284
 
55106
55285
  /**
55107
55286
  * This class can be used to represent points in 3D space as
55108
- * [Spherical coordinates]{@link https://en.wikipedia.org/wiki/Spherical_coordinate_system}.
55287
+ * [Spherical coordinates](https://en.wikipedia.org/wiki/Spherical_coordinate_system).
55109
55288
  */
55110
55289
  class Spherical {
55111
55290
 
@@ -55249,7 +55428,7 @@ class Spherical {
55249
55428
 
55250
55429
  /**
55251
55430
  * This class can be used to represent points in 3D space as
55252
- * [Cylindrical coordinates]{@link https://en.wikipedia.org/wiki/Cylindrical_coordinate_system}.
55431
+ * [Cylindrical coordinates](https://en.wikipedia.org/wiki/Cylindrical_coordinate_system).
55253
55432
  */
55254
55433
  class Cylindrical {
55255
55434
 
@@ -55372,7 +55551,7 @@ class Cylindrical {
55372
55551
  * A Note on Row-Major and Column-Major Ordering:
55373
55552
  *
55374
55553
  * The constructor and {@link Matrix2#set} method take arguments in
55375
- * [row-major]{@link https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order}
55554
+ * [row-major](https://en.wikipedia.org/wiki/Row-_and_column-major_order#Column-major_order)
55376
55555
  * order, while internally they are stored in the {@link Matrix2#elements} array in column-major order.
55377
55556
  * This means that calling:
55378
55557
  * ```js
@@ -57108,7 +57287,7 @@ const _camera = /*@__PURE__*/ new Camera();
57108
57287
  * This helps with visualizing what a camera contains in its frustum. It
57109
57288
  * visualizes the frustum of a camera using a line segments.
57110
57289
  *
57111
- * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.
57290
+ * Based on frustum visualization in [lightgl.js shadowmap example](https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html).
57112
57291
  *
57113
57292
  * `CameraHelper` must be a child of the scene.
57114
57293
  *
@@ -58220,7 +58399,7 @@ class ShapePath {
58220
58399
  let holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );
58221
58400
  holesFirst = isCCW ? ! holesFirst : holesFirst;
58222
58401
 
58223
- // console.log("Holes first", holesFirst);
58402
+ // log("Holes first", holesFirst);
58224
58403
 
58225
58404
  const betterShapeHoles = [];
58226
58405
  const newShapes = [];
@@ -58248,13 +58427,13 @@ class ShapePath {
58248
58427
  if ( holesFirst ) mainIdx ++;
58249
58428
  newShapeHoles[ mainIdx ] = [];
58250
58429
 
58251
- //console.log('cw', i);
58430
+ //log('cw', i);
58252
58431
 
58253
58432
  } else {
58254
58433
 
58255
58434
  newShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );
58256
58435
 
58257
- //console.log('ccw', i);
58436
+ //log('ccw', i);
58258
58437
 
58259
58438
  }
58260
58439
 
@@ -58339,7 +58518,7 @@ class ShapePath {
58339
58518
 
58340
58519
  }
58341
58520
 
58342
- //console.log("shape", shapes);
58521
+ //log("shape", shapes);
58343
58522
 
58344
58523
  return shapes;
58345
58524
 
@@ -58359,7 +58538,7 @@ class Controls extends EventDispatcher {
58359
58538
  * Constructs a new controls instance.
58360
58539
  *
58361
58540
  * @param {Object3D} object - The object that is managed by the controls.
58362
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
58541
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
58363
58542
  */
58364
58543
  constructor( object, domElement = null ) {
58365
58544
 
@@ -58375,7 +58554,7 @@ class Controls extends EventDispatcher {
58375
58554
  /**
58376
58555
  * The HTML element used for event listeners.
58377
58556
  *
58378
- * @type {?HTMLDOMElement}
58557
+ * @type {?HTMLElement}
58379
58558
  * @default null
58380
58559
  */
58381
58560
  this.domElement = domElement;
@@ -58425,13 +58604,13 @@ class Controls extends EventDispatcher {
58425
58604
  * Connects the controls to the DOM. This method has so called "side effects" since
58426
58605
  * it adds the module's event listeners to the DOM.
58427
58606
  *
58428
- * @param {HTMLDOMElement} element - The DOM element to connect to.
58607
+ * @param {HTMLElement} element - The DOM element to connect to.
58429
58608
  */
58430
58609
  connect( element ) {
58431
58610
 
58432
58611
  if ( element === undefined ) {
58433
58612
 
58434
- console.warn( 'THREE.Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185
58613
+ warn( 'Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185
58435
58614
  return;
58436
58615
 
58437
58616
  }
@@ -58765,7 +58944,7 @@ if ( typeof window !== 'undefined' ) {
58765
58944
 
58766
58945
  if ( window.__THREE__ ) {
58767
58946
 
58768
- console.warn( 'WARNING: Multiple instances of Three.js being imported.' );
58947
+ warn( 'WARNING: Multiple instances of Three.js being imported.' );
58769
58948
 
58770
58949
  } else {
58771
58950
 
@@ -58775,4 +58954,4 @@ if ( typeof window !== 'undefined' ) {
58775
58954
 
58776
58955
  }
58777
58956
 
58778
- 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, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, 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, 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, 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, NoToneMapping, NormalAnimationBlendMode, NormalBlending, 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, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, 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, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_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, WebGLCubeRenderTarget, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, arrayNeedsUint32, cloneUniforms, createCanvasElement, createElementNS, getByteLength, getUnlitUniformColorSpace, mergeUniforms, probeAsync, warnOnce };
58957
+ 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, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, 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, 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, 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, NoToneMapping, NormalAnimationBlendMode, NormalBlending, 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, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, 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, RingGeometry, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_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, WebGLCubeRenderTarget, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, arrayNeedsUint32, cloneUniforms, createCanvasElement, createElementNS, error, getByteLength, getConsoleFunction, getUnlitUniformColorSpace, log, mergeUniforms, probeAsync, setConsoleFunction, warn, warnOnce };