@plastic-software/three 0.179.0 → 0.181.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/build/three.cjs +1108 -591
  2. package/build/three.core.js +616 -345
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +488 -250
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +37 -6
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +6576 -2152
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +6575 -2151
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  13. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  14. package/examples/jsm/Addons.js +1 -1
  15. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  16. package/examples/jsm/controls/ArcballControls.js +8 -8
  17. package/examples/jsm/controls/DragControls.js +7 -57
  18. package/examples/jsm/controls/FirstPersonControls.js +3 -3
  19. package/examples/jsm/controls/FlyControls.js +1 -1
  20. package/examples/jsm/controls/OrbitControls.js +2 -2
  21. package/examples/jsm/controls/PointerLockControls.js +2 -10
  22. package/examples/jsm/controls/TrackballControls.js +1 -1
  23. package/examples/jsm/controls/TransformControls.js +1 -1
  24. package/examples/jsm/effects/AsciiEffect.js +8 -8
  25. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  26. package/examples/jsm/exporters/EXRExporter.js +1 -1
  27. package/examples/jsm/exporters/GLTFExporter.js +33 -25
  28. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  29. package/examples/jsm/exporters/PLYExporter.js +1 -1
  30. package/examples/jsm/exporters/USDZExporter.js +9 -2
  31. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  32. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  33. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  34. package/examples/jsm/geometries/TextGeometry.js +3 -2
  35. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  36. package/examples/jsm/helpers/ViewHelper.js +43 -5
  37. package/examples/jsm/inspector/Inspector.js +427 -0
  38. package/examples/jsm/inspector/RendererInspector.js +415 -0
  39. package/examples/jsm/inspector/tabs/Console.js +204 -0
  40. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  41. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  42. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  43. package/examples/jsm/inspector/ui/Graph.js +95 -0
  44. package/examples/jsm/inspector/ui/Item.js +170 -0
  45. package/examples/jsm/inspector/ui/List.js +75 -0
  46. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  47. package/examples/jsm/inspector/ui/Style.js +654 -0
  48. package/examples/jsm/inspector/ui/Tab.js +46 -0
  49. package/examples/jsm/inspector/ui/Values.js +423 -0
  50. package/examples/jsm/inspector/ui/utils.js +56 -0
  51. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  52. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  53. package/examples/jsm/interactive/SelectionBox.js +30 -0
  54. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  55. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  56. package/examples/jsm/lines/Line2.js +3 -3
  57. package/examples/jsm/lines/LineGeometry.js +1 -1
  58. package/examples/jsm/lines/LineSegments2.js +2 -2
  59. package/examples/jsm/lines/Wireframe.js +2 -2
  60. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  61. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  62. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  63. package/examples/jsm/loaders/3MFLoader.js +1 -1
  64. package/examples/jsm/loaders/ColladaLoader.js +3 -3
  65. package/examples/jsm/loaders/DDSLoader.js +1 -1
  66. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  67. package/examples/jsm/loaders/EXRLoader.js +5 -5
  68. package/examples/jsm/loaders/FBXLoader.js +2 -2
  69. package/examples/jsm/loaders/FontLoader.js +23 -5
  70. package/examples/jsm/loaders/GLTFLoader.js +14 -8
  71. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  72. package/examples/jsm/loaders/HDRLoader.js +486 -0
  73. package/examples/jsm/loaders/KTX2Loader.js +136 -49
  74. package/examples/jsm/loaders/KTXLoader.js +2 -2
  75. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  76. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  77. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  78. package/examples/jsm/loaders/LWOLoader.js +2 -2
  79. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  80. package/examples/jsm/loaders/OBJLoader.js +1 -1
  81. package/examples/jsm/loaders/PDBLoader.js +1 -1
  82. package/examples/jsm/loaders/RGBELoader.js +7 -473
  83. package/examples/jsm/loaders/SVGLoader.js +2 -2
  84. package/examples/jsm/loaders/TTFLoader.js +4 -4
  85. package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
  86. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  87. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  88. package/examples/jsm/math/ColorSpaces.js +19 -1
  89. package/examples/jsm/math/ConvexHull.js +3 -3
  90. package/examples/jsm/math/ImprovedNoise.js +1 -1
  91. package/examples/jsm/math/Lut.js +2 -2
  92. package/examples/jsm/math/SimplexNoise.js +1 -1
  93. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  94. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  95. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  96. package/examples/jsm/misc/TubePainter.js +383 -40
  97. package/examples/jsm/misc/Volume.js +1 -1
  98. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  99. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  100. package/examples/jsm/objects/Sky.js +1 -1
  101. package/examples/jsm/objects/SkyMesh.js +1 -1
  102. package/examples/jsm/objects/Water.js +3 -3
  103. package/examples/jsm/objects/WaterMesh.js +6 -6
  104. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  105. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  106. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  107. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  108. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  109. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  110. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  111. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  112. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  113. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  114. package/examples/jsm/shaders/BokehShader.js +1 -1
  115. package/examples/jsm/shaders/BokehShader2.js +1 -1
  116. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  117. package/examples/jsm/shaders/FocusShader.js +1 -1
  118. package/examples/jsm/shaders/GTAOShader.js +2 -2
  119. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  120. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  121. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  122. package/examples/jsm/shaders/SSRShader.js +1 -1
  123. package/examples/jsm/shaders/SepiaShader.js +1 -1
  124. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  125. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  126. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +1 -1
  127. package/examples/jsm/shaders/VignetteShader.js +1 -1
  128. package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
  129. package/examples/jsm/transpiler/TSLEncoder.js +9 -10
  130. package/examples/jsm/transpiler/WGSLEncoder.js +24 -0
  131. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  132. package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
  133. package/examples/jsm/tsl/display/BloomNode.js +7 -3
  134. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
  135. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  136. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  137. package/examples/jsm/tsl/display/GTAONode.js +53 -5
  138. package/examples/jsm/tsl/display/GaussianBlurNode.js +49 -35
  139. package/examples/jsm/tsl/display/OutlineNode.js +13 -2
  140. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  141. package/examples/jsm/tsl/display/SSRNode.js +182 -65
  142. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  143. package/examples/jsm/tsl/display/TRAANode.js +124 -7
  144. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  145. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  146. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  147. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  148. package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
  149. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  150. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  151. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  152. package/package.json +5 -10
  153. package/src/Three.Core.js +4 -2
  154. package/src/Three.TSL.js +36 -5
  155. package/src/Three.WebGPU.Nodes.js +2 -0
  156. package/src/Three.WebGPU.js +2 -0
  157. package/src/animation/AnimationClip.js +20 -4
  158. package/src/animation/AnimationMixer.js +3 -3
  159. package/src/animation/AnimationObjectGroup.js +2 -1
  160. package/src/animation/KeyframeTrack.js +7 -6
  161. package/src/animation/PropertyBinding.js +12 -11
  162. package/src/audio/Audio.js +10 -9
  163. package/src/audio/PositionalAudio.js +1 -1
  164. package/src/cameras/OrthographicCamera.js +1 -1
  165. package/src/cameras/PerspectiveCamera.js +1 -1
  166. package/src/cameras/StereoCamera.js +2 -2
  167. package/src/constants.js +11 -3
  168. package/src/core/BufferGeometry.js +10 -10
  169. package/src/core/EventDispatcher.js +1 -1
  170. package/src/core/InterleavedBuffer.js +1 -1
  171. package/src/core/InterleavedBufferAttribute.js +3 -2
  172. package/src/core/Object3D.js +3 -2
  173. package/src/core/Raycaster.js +2 -1
  174. package/src/core/RenderTarget.js +10 -1
  175. package/src/extras/Controls.js +5 -4
  176. package/src/extras/DataUtils.js +2 -1
  177. package/src/extras/Earcut.js +6 -0
  178. package/src/extras/ImageUtils.js +2 -2
  179. package/src/extras/PMREMGenerator.js +268 -55
  180. package/src/extras/TextureUtils.js +2 -1
  181. package/src/extras/core/Curve.js +2 -1
  182. package/src/extras/core/Interpolations.js +7 -1
  183. package/src/extras/core/ShapePath.js +4 -4
  184. package/src/extras/lib/earcut.js +8 -8
  185. package/src/geometries/BoxGeometry.js +1 -0
  186. package/src/geometries/CapsuleGeometry.js +1 -0
  187. package/src/geometries/CircleGeometry.js +1 -0
  188. package/src/geometries/ConeGeometry.js +1 -0
  189. package/src/geometries/CylinderGeometry.js +1 -0
  190. package/src/geometries/DodecahedronGeometry.js +1 -0
  191. package/src/geometries/ExtrudeGeometry.js +8 -6
  192. package/src/geometries/IcosahedronGeometry.js +1 -0
  193. package/src/geometries/LatheGeometry.js +1 -0
  194. package/src/geometries/OctahedronGeometry.js +1 -0
  195. package/src/geometries/PlaneGeometry.js +1 -0
  196. package/src/geometries/RingGeometry.js +1 -0
  197. package/src/geometries/ShapeGeometry.js +1 -0
  198. package/src/geometries/SphereGeometry.js +1 -0
  199. package/src/geometries/TetrahedronGeometry.js +1 -0
  200. package/src/geometries/TorusGeometry.js +1 -0
  201. package/src/geometries/TorusKnotGeometry.js +1 -0
  202. package/src/geometries/TubeGeometry.js +1 -0
  203. package/src/helpers/CameraHelper.js +1 -1
  204. package/src/lights/webgpu/ProjectorLight.js +1 -1
  205. package/src/loaders/AnimationLoader.js +2 -1
  206. package/src/loaders/AudioLoader.js +2 -1
  207. package/src/loaders/BufferGeometryLoader.js +2 -2
  208. package/src/loaders/Cache.js +2 -2
  209. package/src/loaders/DataTextureLoader.js +1 -1
  210. package/src/loaders/FileLoader.js +3 -2
  211. package/src/loaders/ImageBitmapLoader.js +5 -4
  212. package/src/loaders/ImageLoader.js +1 -1
  213. package/src/loaders/Loader.js +3 -3
  214. package/src/loaders/LoadingManager.js +25 -3
  215. package/src/loaders/MaterialLoader.js +3 -2
  216. package/src/loaders/ObjectLoader.js +13 -13
  217. package/src/loaders/TextureLoader.js +1 -1
  218. package/src/loaders/nodes/NodeLoader.js +3 -2
  219. package/src/materials/Material.js +16 -3
  220. package/src/materials/MeshBasicMaterial.js +1 -0
  221. package/src/materials/MeshDepthMaterial.js +1 -0
  222. package/src/materials/MeshDistanceMaterial.js +1 -1
  223. package/src/materials/MeshLambertMaterial.js +2 -1
  224. package/src/materials/MeshMatcapMaterial.js +22 -0
  225. package/src/materials/MeshNormalMaterial.js +1 -0
  226. package/src/materials/MeshPhongMaterial.js +2 -1
  227. package/src/materials/MeshPhysicalMaterial.js +2 -1
  228. package/src/materials/MeshStandardMaterial.js +8 -7
  229. package/src/materials/MeshToonMaterial.js +1 -0
  230. package/src/materials/PointsMaterial.js +1 -1
  231. package/src/materials/ShaderMaterial.js +2 -2
  232. package/src/materials/nodes/Line2NodeMaterial.js +2 -2
  233. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  234. package/src/materials/nodes/NodeMaterial.js +62 -22
  235. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  236. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  237. package/src/materials/nodes/manager/NodeMaterialObserver.js +3 -2
  238. package/src/math/Color.js +6 -5
  239. package/src/math/ColorManagement.js +9 -3
  240. package/src/math/Cylindrical.js +1 -1
  241. package/src/math/Euler.js +2 -1
  242. package/src/math/MathUtils.js +13 -11
  243. package/src/math/Matrix2.js +1 -1
  244. package/src/math/Matrix3.js +2 -2
  245. package/src/math/Matrix4.js +7 -7
  246. package/src/math/Plane.js +1 -1
  247. package/src/math/Quaternion.js +68 -66
  248. package/src/math/Spherical.js +1 -1
  249. package/src/nodes/Nodes.js +4 -1
  250. package/src/nodes/TSL.js +4 -1
  251. package/src/nodes/accessors/BufferNode.js +1 -1
  252. package/src/nodes/accessors/Camera.js +133 -7
  253. package/src/nodes/accessors/ClippingNode.js +6 -5
  254. package/src/nodes/accessors/CubeTextureNode.js +5 -4
  255. package/src/nodes/accessors/InstanceNode.js +25 -5
  256. package/src/nodes/accessors/Lights.js +10 -0
  257. package/src/nodes/accessors/Normal.js +5 -4
  258. package/src/nodes/accessors/Object3DNode.js +1 -1
  259. package/src/nodes/accessors/Position.js +18 -2
  260. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  261. package/src/nodes/accessors/ReferenceNode.js +3 -2
  262. package/src/nodes/accessors/SceneNode.js +2 -1
  263. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  264. package/src/nodes/accessors/StorageTextureNode.js +22 -0
  265. package/src/nodes/accessors/Texture3DNode.js +14 -1
  266. package/src/nodes/accessors/TextureNode.js +130 -44
  267. package/src/nodes/code/FunctionCallNode.js +24 -4
  268. package/src/nodes/code/FunctionNode.js +23 -0
  269. package/src/nodes/core/ArrayNode.js +1 -0
  270. package/src/nodes/core/AssignNode.js +4 -3
  271. package/src/nodes/core/AttributeNode.js +2 -1
  272. package/src/nodes/core/ContextNode.js +29 -10
  273. package/src/nodes/core/IndexNode.js +2 -2
  274. package/src/nodes/core/InputNode.js +2 -1
  275. package/src/nodes/core/InspectorNode.js +128 -0
  276. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +40 -7
  277. package/src/nodes/core/Node.js +152 -31
  278. package/src/nodes/core/NodeBuilder.js +183 -35
  279. package/src/nodes/core/NodeFrame.js +21 -21
  280. package/src/nodes/core/NodeFunction.js +2 -1
  281. package/src/nodes/core/NodeParser.js +2 -1
  282. package/src/nodes/core/NodeUniform.js +1 -1
  283. package/src/nodes/core/NodeUtils.js +17 -91
  284. package/src/nodes/core/ParameterNode.js +31 -0
  285. package/src/nodes/core/PropertyNode.js +7 -0
  286. package/src/nodes/core/StackNode.js +43 -16
  287. package/src/nodes/core/StructNode.js +5 -5
  288. package/src/nodes/core/StructTypeNode.js +1 -0
  289. package/src/nodes/core/SubBuildNode.js +2 -2
  290. package/src/nodes/core/UniformNode.js +18 -10
  291. package/src/nodes/core/VarNode.js +70 -33
  292. package/src/nodes/core/VaryingNode.js +3 -2
  293. package/src/nodes/display/BlendModes.js +5 -4
  294. package/src/nodes/display/BumpMapNode.js +1 -1
  295. package/src/nodes/display/ColorAdjustment.js +1 -1
  296. package/src/nodes/display/FrontFacingNode.js +4 -8
  297. package/src/nodes/display/NormalMapNode.js +2 -1
  298. package/src/nodes/display/PassNode.js +52 -11
  299. package/src/nodes/display/RenderOutputNode.js +28 -2
  300. package/src/nodes/display/ScreenNode.js +44 -14
  301. package/src/nodes/display/ToneMappingNode.js +31 -4
  302. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
  304. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  305. package/src/nodes/display/ViewportTextureNode.js +42 -12
  306. package/src/nodes/fog/Fog.js +3 -2
  307. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  308. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  309. package/src/nodes/functions/BasicLightingModel.js +2 -1
  310. package/src/nodes/functions/PhysicalLightingModel.js +3 -2
  311. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  312. package/src/nodes/geometry/RangeNode.js +40 -4
  313. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  314. package/src/nodes/gpgpu/ComputeNode.js +17 -5
  315. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  316. package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
  317. package/src/nodes/lighting/EnvironmentNode.js +6 -6
  318. package/src/nodes/lighting/LightsNode.js +3 -4
  319. package/src/nodes/lighting/PointShadowNode.js +6 -0
  320. package/src/nodes/lighting/ShadowFilterNode.js +2 -0
  321. package/src/nodes/lighting/ShadowNode.js +75 -8
  322. package/src/nodes/math/BitcastNode.js +156 -0
  323. package/src/nodes/math/ConditionalNode.js +24 -7
  324. package/src/nodes/math/MathNode.js +25 -19
  325. package/src/nodes/math/OperatorNode.js +7 -5
  326. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  327. package/src/nodes/shapes/Shapes.js +1 -1
  328. package/src/nodes/tsl/TSLBase.js +5 -2
  329. package/src/nodes/tsl/TSLCore.js +460 -159
  330. package/src/nodes/utils/DebugNode.js +2 -1
  331. package/src/nodes/utils/EventNode.js +36 -0
  332. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  333. package/src/nodes/utils/JoinNode.js +6 -3
  334. package/src/nodes/utils/LoopNode.js +20 -24
  335. package/src/nodes/utils/MemberNode.js +59 -7
  336. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  337. package/src/nodes/utils/RTTNode.js +13 -3
  338. package/src/nodes/utils/ReflectorNode.js +58 -7
  339. package/src/nodes/utils/SampleNode.js +12 -2
  340. package/src/nodes/utils/SplitNode.js +11 -0
  341. package/src/nodes/utils/Timer.js +0 -47
  342. package/src/objects/BatchedMesh.js +2 -2
  343. package/src/objects/LOD.js +1 -1
  344. package/src/objects/Line.js +2 -1
  345. package/src/objects/LineSegments.js +2 -1
  346. package/src/objects/Skeleton.js +3 -2
  347. package/src/objects/SkinnedMesh.js +3 -1
  348. package/src/objects/Sprite.js +4 -3
  349. package/src/renderers/WebGLRenderer.js +48 -41
  350. package/src/renderers/common/Animation.js +13 -1
  351. package/src/renderers/common/Attributes.js +1 -1
  352. package/src/renderers/common/Backend.js +108 -27
  353. package/src/renderers/common/Background.js +2 -1
  354. package/src/renderers/common/Bindings.js +58 -2
  355. package/src/renderers/common/CanvasTarget.js +341 -0
  356. package/src/renderers/common/ChainMap.js +1 -1
  357. package/src/renderers/common/DataMap.js +1 -1
  358. package/src/renderers/common/Geometries.js +26 -0
  359. package/src/renderers/common/Info.js +4 -2
  360. package/src/renderers/common/InspectorBase.js +146 -0
  361. package/src/renderers/common/Pipelines.js +1 -1
  362. package/src/renderers/common/PostProcessing.js +6 -25
  363. package/src/renderers/common/QuadMesh.js +7 -1
  364. package/src/renderers/common/RenderContext.js +2 -2
  365. package/src/renderers/common/RenderList.js +7 -3
  366. package/src/renderers/common/RenderObject.js +16 -2
  367. package/src/renderers/common/RenderObjects.js +1 -1
  368. package/src/renderers/common/Renderer.js +473 -245
  369. package/src/renderers/common/RendererUtils.js +9 -0
  370. package/src/renderers/common/SampledTexture.js +9 -1
  371. package/src/renderers/common/Sampler.js +50 -12
  372. package/src/renderers/common/StorageTexture.js +9 -1
  373. package/src/renderers/common/Textures.js +121 -45
  374. package/src/renderers/common/TimestampQueryPool.js +65 -3
  375. package/src/renderers/common/UniformsGroup.js +2 -1
  376. package/src/renderers/common/XRManager.js +42 -22
  377. package/src/renderers/common/extras/PMREMGenerator.js +160 -65
  378. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  379. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  380. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  381. package/src/renderers/common/nodes/Nodes.js +38 -16
  382. package/src/renderers/shaders/DFGLUTData.js +64 -0
  383. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  384. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  385. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  386. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  387. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  388. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  389. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  390. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  391. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -15
  392. package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
  393. package/src/renderers/shaders/UniformsLib.js +1 -0
  394. package/src/renderers/shaders/UniformsUtils.js +25 -4
  395. package/src/renderers/webgl/WebGLCapabilities.js +2 -1
  396. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  397. package/src/renderers/webgl/WebGLInfo.js +3 -1
  398. package/src/renderers/webgl/WebGLProgram.js +15 -14
  399. package/src/renderers/webgl/WebGLPrograms.js +2 -1
  400. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  401. package/src/renderers/webgl/WebGLState.js +15 -14
  402. package/src/renderers/webgl/WebGLTextures.js +19 -14
  403. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  404. package/src/renderers/webgl/WebGLUtils.js +3 -2
  405. package/src/renderers/webgl-fallback/WebGLBackend.js +199 -167
  406. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +181 -25
  407. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  408. package/src/renderers/webgl-fallback/utils/WebGLState.js +7 -6
  409. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +169 -19
  410. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
  411. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
  412. package/src/renderers/webgpu/WebGPUBackend.js +153 -123
  413. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  414. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  415. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +142 -50
  416. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  417. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
  418. package/src/renderers/webgpu/utils/WebGPUConstants.js +7 -2
  419. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +53 -34
  420. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  421. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +260 -99
  422. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
  423. package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
  424. package/src/renderers/webxr/WebXRManager.js +42 -26
  425. package/src/textures/ExternalTexture.js +15 -4
  426. package/src/textures/Source.js +3 -2
  427. package/src/textures/Texture.js +3 -2
  428. package/src/textures/VideoTexture.js +2 -3
  429. package/src/utils.js +67 -3
  430. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
@@ -7,6 +7,7 @@ import { CubicInterpolant } from '../math/interpolants/CubicInterpolant.js';
7
7
  import { LinearInterpolant } from '../math/interpolants/LinearInterpolant.js';
8
8
  import { DiscreteInterpolant } from '../math/interpolants/DiscreteInterpolant.js';
9
9
  import * as AnimationUtils from './AnimationUtils.js';
10
+ import { warn, error } from '../utils.js';
10
11
 
11
12
  /**
12
13
  * Represents s a timed sequence of keyframes, which are composed of lists of
@@ -191,7 +192,7 @@ class KeyframeTrack {
191
192
 
192
193
  }
193
194
 
194
- console.warn( 'THREE.KeyframeTrack:', message );
195
+ warn( 'KeyframeTrack:', message );
195
196
  return this;
196
197
 
197
198
  }
@@ -351,7 +352,7 @@ class KeyframeTrack {
351
352
  const valueSize = this.getValueSize();
352
353
  if ( valueSize - Math.floor( valueSize ) !== 0 ) {
353
354
 
354
- console.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );
355
+ error( 'KeyframeTrack: Invalid value size in track.', this );
355
356
  valid = false;
356
357
 
357
358
  }
@@ -363,7 +364,7 @@ class KeyframeTrack {
363
364
 
364
365
  if ( nKeys === 0 ) {
365
366
 
366
- console.error( 'THREE.KeyframeTrack: Track is empty.', this );
367
+ error( 'KeyframeTrack: Track is empty.', this );
367
368
  valid = false;
368
369
 
369
370
  }
@@ -376,7 +377,7 @@ class KeyframeTrack {
376
377
 
377
378
  if ( typeof currTime === 'number' && isNaN( currTime ) ) {
378
379
 
379
- console.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );
380
+ error( 'KeyframeTrack: Time is not a valid number.', this, i, currTime );
380
381
  valid = false;
381
382
  break;
382
383
 
@@ -384,7 +385,7 @@ class KeyframeTrack {
384
385
 
385
386
  if ( prevTime !== null && prevTime > currTime ) {
386
387
 
387
- console.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );
388
+ error( 'KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );
388
389
  valid = false;
389
390
  break;
390
391
 
@@ -404,7 +405,7 @@ class KeyframeTrack {
404
405
 
405
406
  if ( isNaN( value ) ) {
406
407
 
407
- console.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );
408
+ error( 'KeyframeTrack: Value is not a valid number.', this, i, value );
408
409
  valid = false;
409
410
  break;
410
411
 
@@ -1,3 +1,4 @@
1
+ import { warn, error } from '../utils.js';
1
2
  // Characters [].:/ are reserved for track binding syntax.
2
3
  const _RESERVED_CHARS_RE = '\\[\\]\\.:\\/';
3
4
  const _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );
@@ -507,7 +508,7 @@ class PropertyBinding {
507
508
  // ensure there is a value node
508
509
  if ( ! targetObject ) {
509
510
 
510
- console.warn( 'THREE.PropertyBinding: No target node found for track: ' + this.path + '.' );
511
+ warn( 'PropertyBinding: No target node found for track: ' + this.path + '.' );
511
512
  return;
512
513
 
513
514
  }
@@ -523,14 +524,14 @@ class PropertyBinding {
523
524
 
524
525
  if ( ! targetObject.material ) {
525
526
 
526
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
527
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
527
528
  return;
528
529
 
529
530
  }
530
531
 
531
532
  if ( ! targetObject.material.materials ) {
532
533
 
533
- console.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
534
+ error( 'PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );
534
535
  return;
535
536
 
536
537
  }
@@ -543,7 +544,7 @@ class PropertyBinding {
543
544
 
544
545
  if ( ! targetObject.skeleton ) {
545
546
 
546
- console.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
547
+ error( 'PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );
547
548
  return;
548
549
 
549
550
  }
@@ -578,14 +579,14 @@ class PropertyBinding {
578
579
 
579
580
  if ( ! targetObject.material ) {
580
581
 
581
- console.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );
582
+ error( 'PropertyBinding: Can not bind to material as node does not have a material.', this );
582
583
  return;
583
584
 
584
585
  }
585
586
 
586
587
  if ( ! targetObject.material.map ) {
587
588
 
588
- console.error( 'THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
589
+ error( 'PropertyBinding: Can not bind to material.map as node.material does not have a map.', this );
589
590
  return;
590
591
 
591
592
  }
@@ -597,7 +598,7 @@ class PropertyBinding {
597
598
 
598
599
  if ( targetObject[ objectName ] === undefined ) {
599
600
 
600
- console.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );
601
+ error( 'PropertyBinding: Can not bind to objectName of node undefined.', this );
601
602
  return;
602
603
 
603
604
  }
@@ -611,7 +612,7 @@ class PropertyBinding {
611
612
 
612
613
  if ( targetObject[ objectIndex ] === undefined ) {
613
614
 
614
- console.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
615
+ error( 'PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );
615
616
  return;
616
617
 
617
618
  }
@@ -629,7 +630,7 @@ class PropertyBinding {
629
630
 
630
631
  const nodeName = parsedPath.nodeName;
631
632
 
632
- console.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +
633
+ error( 'PropertyBinding: Trying to update property for track: ' + nodeName +
633
634
  '.' + propertyName + ' but it wasn\'t found.', targetObject );
634
635
  return;
635
636
 
@@ -664,14 +665,14 @@ class PropertyBinding {
664
665
  // support resolving morphTarget names into indices.
665
666
  if ( ! targetObject.geometry ) {
666
667
 
667
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
668
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );
668
669
  return;
669
670
 
670
671
  }
671
672
 
672
673
  if ( ! targetObject.geometry.morphAttributes ) {
673
674
 
674
- console.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
675
+ error( 'PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );
675
676
  return;
676
677
 
677
678
  }
@@ -1,9 +1,10 @@
1
1
  import { Object3D } from '../core/Object3D.js';
2
+ import { warn } from '../utils.js';
2
3
 
3
4
  /**
4
5
  * Represents a non-positional ( global ) audio object.
5
6
  *
6
- * This and related audio modules make use of the [Web Audio API]{@link https://www.w3.org/TR/webaudio-1.1/}.
7
+ * This and related audio modules make use of the [Web Audio API](https://www.w3.org/TR/webaudio-1.1/).
7
8
  *
8
9
  * ```js
9
10
  * // create an AudioListener and add it to the camera
@@ -314,14 +315,14 @@ class Audio extends Object3D {
314
315
 
315
316
  if ( this.isPlaying === true ) {
316
317
 
317
- console.warn( 'THREE.Audio: Audio is already playing.' );
318
+ warn( 'Audio: Audio is already playing.' );
318
319
  return;
319
320
 
320
321
  }
321
322
 
322
323
  if ( this.hasPlaybackControl === false ) {
323
324
 
324
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
325
+ warn( 'Audio: this Audio has no playback control.' );
325
326
  return;
326
327
 
327
328
  }
@@ -358,7 +359,7 @@ class Audio extends Object3D {
358
359
 
359
360
  if ( this.hasPlaybackControl === false ) {
360
361
 
361
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
362
+ warn( 'Audio: this Audio has no playback control.' );
362
363
  return;
363
364
 
364
365
  }
@@ -400,7 +401,7 @@ class Audio extends Object3D {
400
401
 
401
402
  if ( this.hasPlaybackControl === false ) {
402
403
 
403
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
404
+ warn( 'Audio: this Audio has no playback control.' );
404
405
  return;
405
406
 
406
407
  }
@@ -593,7 +594,7 @@ class Audio extends Object3D {
593
594
 
594
595
  if ( this.hasPlaybackControl === false ) {
595
596
 
596
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
597
+ warn( 'Audio: this Audio has no playback control.' );
597
598
  return;
598
599
 
599
600
  }
@@ -642,7 +643,7 @@ class Audio extends Object3D {
642
643
 
643
644
  if ( this.hasPlaybackControl === false ) {
644
645
 
645
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
646
+ warn( 'Audio: this Audio has no playback control.' );
646
647
  return false;
647
648
 
648
649
  }
@@ -663,7 +664,7 @@ class Audio extends Object3D {
663
664
 
664
665
  if ( this.hasPlaybackControl === false ) {
665
666
 
666
- console.warn( 'THREE.Audio: this Audio has no playback control.' );
667
+ warn( 'Audio: this Audio has no playback control.' );
667
668
  return;
668
669
 
669
670
  }
@@ -741,7 +742,7 @@ class Audio extends Object3D {
741
742
 
742
743
  if ( source.sourceType !== 'buffer' ) {
743
744
 
744
- console.warn( 'THREE.Audio: Audio source type cannot be copied.' );
745
+ warn( 'Audio: Audio source type cannot be copied.' );
745
746
 
746
747
  return this;
747
748
 
@@ -154,7 +154,7 @@ class PositionalAudio extends Audio {
154
154
  * Defines which algorithm to use to reduce the volume of the audio source
155
155
  * as it moves away from the listener.
156
156
  *
157
- * Read [the spec]{@link https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype}
157
+ * Read [the spec](https://www.w3.org/TR/webaudio-1.1/#enumdef-distancemodeltype)
158
158
  * for more details.
159
159
  *
160
160
  * @param {('linear'|'inverse'|'exponential')} value - The distance model to set.
@@ -1,7 +1,7 @@
1
1
  import { Camera } from './Camera.js';
2
2
 
3
3
  /**
4
- * Camera that uses [orthographic projection]{@link https://en.wikipedia.org/wiki/Orthographic_projection}.
4
+ * Camera that uses [orthographic projection](https://en.wikipedia.org/wiki/Orthographic_projection).
5
5
  *
6
6
  * In this projection mode, an object's size in the rendered image stays
7
7
  * constant regardless of its distance from the camera. This can be useful
@@ -8,7 +8,7 @@ const _minTarget = /*@__PURE__*/ new Vector2();
8
8
  const _maxTarget = /*@__PURE__*/ new Vector2();
9
9
 
10
10
  /**
11
- * Camera that uses [perspective projection]{@link https://en.wikipedia.org/wiki/Perspective_(graphical)}.
11
+ * Camera that uses [perspective projection](https://en.wikipedia.org/wiki/Perspective_(graphical)).
12
12
  *
13
13
  * This projection mode is designed to mimic the way the human eye sees. It
14
14
  * is the most common projection mode used for rendering a 3D scene.
@@ -9,8 +9,8 @@ const _projectionMatrix = /*@__PURE__*/ new Matrix4();
9
9
  /**
10
10
  * A special type of camera that uses two perspective cameras with
11
11
  * stereoscopic projection. Can be used for rendering stereo effects
12
- * like [3D Anaglyph]{@link https://en.wikipedia.org/wiki/Anaglyph_3D} or
13
- * [Parallax Barrier]{@link https://en.wikipedia.org/wiki/parallax_barrier}.
12
+ * like [3D Anaglyph](https://en.wikipedia.org/wiki/Anaglyph_3D) or
13
+ * [Parallax Barrier](https://en.wikipedia.org/wiki/parallax_barrier).
14
14
  */
15
15
  class StereoCamera {
16
16
 
package/src/constants.js CHANGED
@@ -1,4 +1,4 @@
1
- export const REVISION = '179';
1
+ export const REVISION = '181';
2
2
 
3
3
  /**
4
4
  * Represents mouse buttons and interaction types in context of controls.
@@ -724,6 +724,14 @@ export const UnsignedInt248Type = 1020;
724
724
  */
725
725
  export const UnsignedInt5999Type = 35902;
726
726
 
727
+ /**
728
+ * An unsigned int 10_11_11 (packed) data type for textures.
729
+ *
730
+ * @type {number}
731
+ * @constant
732
+ */
733
+ export const UnsignedInt101111Type = 35899;
734
+
727
735
  /**
728
736
  * Discards the red, green and blue components and reads just the alpha component.
729
737
  *
@@ -1665,6 +1673,6 @@ export const InterpolationSamplingMode = {
1665
1673
  * @property {string} NORMAL - Normal sampling mode.
1666
1674
  * @property {string} CENTROID - Centroid sampling mode.
1667
1675
  * @property {string} SAMPLE - Sample-specific sampling mode.
1668
- * @property {string} FLAT_FIRST - Flat interpolation using the first vertex.
1669
- * @property {string} FLAT_EITHER - Flat interpolation using either vertex.
1676
+ * @property {string} FIRST - Flat interpolation using the first vertex.
1677
+ * @property {string} EITHER - Flat interpolation using either vertex.
1670
1678
  */
@@ -8,7 +8,7 @@ import { Object3D } from './Object3D.js';
8
8
  import { Matrix4 } from '../math/Matrix4.js';
9
9
  import { Matrix3 } from '../math/Matrix3.js';
10
10
  import { generateUUID } from '../math/MathUtils.js';
11
- import { arrayNeedsUint32 } from '../utils.js';
11
+ import { arrayNeedsUint32, warn, error } from '../utils.js';
12
12
 
13
13
  let _id = 0;
14
14
 
@@ -156,7 +156,7 @@ class BufferGeometry extends EventDispatcher {
156
156
  /**
157
157
  * Bounding box for the geometry which can be calculated with `computeBoundingBox()`.
158
158
  *
159
- * @type {Box3}
159
+ * @type {?Box3}
160
160
  * @default null
161
161
  */
162
162
  this.boundingBox = null;
@@ -164,7 +164,7 @@ class BufferGeometry extends EventDispatcher {
164
164
  /**
165
165
  * Bounding sphere for the geometry which can be calculated with `computeBoundingSphere()`.
166
166
  *
167
- * @type {Sphere}
167
+ * @type {?Sphere}
168
168
  * @default null
169
169
  */
170
170
  this.boundingSphere = null;
@@ -596,7 +596,7 @@ class BufferGeometry extends EventDispatcher {
596
596
 
597
597
  if ( points.length > positionAttribute.count ) {
598
598
 
599
- console.warn( 'THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
599
+ warn( 'BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry.' );
600
600
 
601
601
  }
602
602
 
@@ -626,7 +626,7 @@ class BufferGeometry extends EventDispatcher {
626
626
 
627
627
  if ( position && position.isGLBufferAttribute ) {
628
628
 
629
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
629
+ error( 'BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.', this );
630
630
 
631
631
  this.boundingBox.set(
632
632
  new Vector3( - Infinity, - Infinity, - Infinity ),
@@ -677,7 +677,7 @@ class BufferGeometry extends EventDispatcher {
677
677
 
678
678
  if ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {
679
679
 
680
- console.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
680
+ error( 'BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.', this );
681
681
 
682
682
  }
683
683
 
@@ -701,7 +701,7 @@ class BufferGeometry extends EventDispatcher {
701
701
 
702
702
  if ( position && position.isGLBufferAttribute ) {
703
703
 
704
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
704
+ error( 'BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.', this );
705
705
 
706
706
  this.boundingSphere.set( new Vector3(), Infinity );
707
707
 
@@ -792,7 +792,7 @@ class BufferGeometry extends EventDispatcher {
792
792
 
793
793
  if ( isNaN( this.boundingSphere.radius ) ) {
794
794
 
795
- console.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
795
+ error( 'BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.', this );
796
796
 
797
797
  }
798
798
 
@@ -820,7 +820,7 @@ class BufferGeometry extends EventDispatcher {
820
820
  attributes.normal === undefined ||
821
821
  attributes.uv === undefined ) {
822
822
 
823
- console.error( 'THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
823
+ error( 'BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)' );
824
824
  return;
825
825
 
826
826
  }
@@ -1130,7 +1130,7 @@ class BufferGeometry extends EventDispatcher {
1130
1130
 
1131
1131
  if ( this.index === null ) {
1132
1132
 
1133
- console.warn( 'THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
1133
+ warn( 'BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed.' );
1134
1134
  return this;
1135
1135
 
1136
1136
  }
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * This modules allows to dispatch event objects on custom JavaScript objects.
3
3
  *
4
- * Main repository: [eventdispatcher.js]{@link https://github.com/mrdoob/eventdispatcher.js/}
4
+ * Main repository: [eventdispatcher.js](https://github.com/mrdoob/eventdispatcher.js/)
5
5
  *
6
6
  * Code Example:
7
7
  * ```js
@@ -5,7 +5,7 @@ import { StaticDrawUsage } from '../constants.js';
5
5
  * "Interleaved" means that multiple attributes, possibly of different types,
6
6
  * (e.g., position, normal, uv, color) are packed into a single array buffer.
7
7
  *
8
- * An introduction into interleaved arrays can be found here: [Interleaved array basics]{@link https://blog.tojicode.com/2011/05/interleaved-array-basics.html}
8
+ * An introduction into interleaved arrays can be found here: [Interleaved array basics](https://blog.tojicode.com/2011/05/interleaved-array-basics.html)
9
9
  */
10
10
  class InterleavedBuffer {
11
11
 
@@ -1,6 +1,7 @@
1
1
  import { Vector3 } from '../math/Vector3.js';
2
2
  import { BufferAttribute } from './BufferAttribute.js';
3
3
  import { denormalize, normalize } from '../math/MathUtils.js';
4
+ import { log } from '../utils.js';
4
5
 
5
6
  const _vector = /*@__PURE__*/ new Vector3();
6
7
 
@@ -439,7 +440,7 @@ class InterleavedBufferAttribute {
439
440
 
440
441
  if ( data === undefined ) {
441
442
 
442
- console.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
443
+ log( 'InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.' );
443
444
 
444
445
  const array = [];
445
446
 
@@ -489,7 +490,7 @@ class InterleavedBufferAttribute {
489
490
 
490
491
  if ( data === undefined ) {
491
492
 
492
- console.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
493
+ log( 'InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.' );
493
494
 
494
495
  const array = [];
495
496
 
@@ -6,6 +6,7 @@ import { Euler } from '../math/Euler.js';
6
6
  import { Layers } from './Layers.js';
7
7
  import { Matrix3 } from '../math/Matrix3.js';
8
8
  import { generateUUID } from '../math/MathUtils.js';
9
+ import { error } from '../utils.js';
9
10
 
10
11
  let _object3DId = 0;
11
12
 
@@ -733,7 +734,7 @@ class Object3D extends EventDispatcher {
733
734
 
734
735
  if ( object === this ) {
735
736
 
736
- console.error( 'THREE.Object3D.add: object can\'t be added as a child of itself.', object );
737
+ error( 'Object3D.add: object can\'t be added as a child of itself.', object );
737
738
  return this;
738
739
 
739
740
  }
@@ -752,7 +753,7 @@ class Object3D extends EventDispatcher {
752
753
 
753
754
  } else {
754
755
 
755
- console.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );
756
+ error( 'Object3D.add: object not an instance of THREE.Object3D.', object );
756
757
 
757
758
  }
758
759
 
@@ -1,6 +1,7 @@
1
1
  import { Matrix4 } from '../math/Matrix4.js';
2
2
  import { Ray } from '../math/Ray.js';
3
3
  import { Layers } from './Layers.js';
4
+ import { error } from '../utils.js';
4
5
 
5
6
  const _matrix = /*@__PURE__*/ new Matrix4();
6
7
 
@@ -131,7 +132,7 @@ class Raycaster {
131
132
 
132
133
  } else {
133
134
 
134
- console.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );
135
+ error( 'Raycaster: Unsupported camera type: ' + camera.type );
135
136
 
136
137
  }
137
138
 
@@ -294,7 +294,16 @@ class RenderTarget extends EventDispatcher {
294
294
  this.textures[ i ].image.width = width;
295
295
  this.textures[ i ].image.height = height;
296
296
  this.textures[ i ].image.depth = depth;
297
- this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
297
+
298
+ if ( this.textures[ i ].isData3DTexture !== true ) { // Fix for #31693
299
+
300
+ // TODO: Reconsider setting isArrayTexture flag here and in the ctor of Texture.
301
+ // Maybe a method `isArrayTexture()` or just a getter could replace a flag since
302
+ // both are evaluated on each call?
303
+
304
+ this.textures[ i ].isArrayTexture = this.textures[ i ].image.depth > 1;
305
+
306
+ }
298
307
 
299
308
  }
300
309
 
@@ -1,4 +1,5 @@
1
1
  import { EventDispatcher } from '../core/EventDispatcher.js';
2
+ import { warn } from '../utils.js';
2
3
 
3
4
  /**
4
5
  * Abstract base class for controls.
@@ -12,7 +13,7 @@ class Controls extends EventDispatcher {
12
13
  * Constructs a new controls instance.
13
14
  *
14
15
  * @param {Object3D} object - The object that is managed by the controls.
15
- * @param {?HTMLDOMElement} domElement - The HTML element used for event listeners.
16
+ * @param {?HTMLElement} domElement - The HTML element used for event listeners.
16
17
  */
17
18
  constructor( object, domElement = null ) {
18
19
 
@@ -28,7 +29,7 @@ class Controls extends EventDispatcher {
28
29
  /**
29
30
  * The HTML element used for event listeners.
30
31
  *
31
- * @type {?HTMLDOMElement}
32
+ * @type {?HTMLElement}
32
33
  * @default null
33
34
  */
34
35
  this.domElement = domElement;
@@ -78,13 +79,13 @@ class Controls extends EventDispatcher {
78
79
  * Connects the controls to the DOM. This method has so called "side effects" since
79
80
  * it adds the module's event listeners to the DOM.
80
81
  *
81
- * @param {HTMLDOMElement} element - The DOM element to connect to.
82
+ * @param {HTMLElement} element - The DOM element to connect to.
82
83
  */
83
84
  connect( element ) {
84
85
 
85
86
  if ( element === undefined ) {
86
87
 
87
- console.warn( 'THREE.Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185
88
+ warn( 'Controls: connect() now requires an element.' ); // @deprecated, the warning can be removed with r185
88
89
  return;
89
90
 
90
91
  }
@@ -1,4 +1,5 @@
1
1
  import { clamp } from '../math/MathUtils.js';
2
+ import { warn } from '../utils.js';
2
3
 
3
4
  // Fast Half Float Conversions, http://www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf
4
5
 
@@ -148,7 +149,7 @@ function _generateTables() {
148
149
  */
149
150
  function toHalfFloat( val ) {
150
151
 
151
- if ( Math.abs( val ) > 65504 ) console.warn( 'THREE.DataUtils.toHalfFloat(): Value out of range.' );
152
+ if ( Math.abs( val ) > 65504 ) warn( 'DataUtils.toHalfFloat(): Value out of range.' );
152
153
 
153
154
  val = clamp( val, - 65504, 65504 );
154
155
 
@@ -1,5 +1,11 @@
1
1
  import earcut from './lib/earcut.js';
2
2
 
3
+ /**
4
+ * An implementation of the earcut polygon triangulation algorithm.
5
+ * The code is a port of [mapbox/earcut](https://github.com/mapbox/earcut).
6
+ *
7
+ * @see https://github.com/mapbox/earcut
8
+ */
3
9
  class Earcut {
4
10
 
5
11
  /**
@@ -1,4 +1,4 @@
1
- import { createElementNS } from '../utils.js';
1
+ import { createElementNS, warn } from '../utils.js';
2
2
  import { SRGBToLinear } from '../math/ColorManagement.js';
3
3
 
4
4
  let _canvas;
@@ -125,7 +125,7 @@ class ImageUtils {
125
125
 
126
126
  } else {
127
127
 
128
- console.warn( 'THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );
128
+ warn( 'ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied.' );
129
129
  return image;
130
130
 
131
131
  }