@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
@@ -5,6 +5,17 @@ import {
5
5
  Fn, If, Return, textureLoad, instanceIndex, screenCoordinate, directPointLight
6
6
  } from 'three/tsl';
7
7
 
8
+ /**
9
+ * TSL function that checks if a circle intersects with an axis-aligned bounding box (AABB).
10
+ *
11
+ * @tsl
12
+ * @function
13
+ * @param {Node<vec2>} circleCenter - The center of the circle.
14
+ * @param {Node<float>} radius - The radius of the circle.
15
+ * @param {Node<vec2>} minBounds - The minimum bounds of the AABB.
16
+ * @param {Node<vec2>} maxBounds - The maximum bounds of the AABB.
17
+ * @return {Node<bool>} True if the circle intersects the AABB.
18
+ */
8
19
  export const circleIntersectsAABB = /*@__PURE__*/ Fn( ( [ circleCenter, radius, minBounds, maxBounds ] ) => {
9
20
 
10
21
  // Find the closest point on the AABB to the circle's center using method chaining
@@ -392,7 +403,7 @@ class TiledLightsNode extends LightsNode {
392
403
 
393
404
  } );
394
405
 
395
- } )().compute( count );
406
+ } )().compute( count ).setName( 'Update Tiled Lights' );
396
407
 
397
408
  // screen coordinate lighting indexes
398
409
 
@@ -419,4 +430,13 @@ class TiledLightsNode extends LightsNode {
419
430
 
420
431
  export default TiledLightsNode;
421
432
 
433
+ /**
434
+ * TSL function that creates a tiled lights node.
435
+ *
436
+ * @tsl
437
+ * @function
438
+ * @param {number} [maxLights=1024] - The maximum number of lights.
439
+ * @param {number} [tileSize=32] - The tile size.
440
+ * @return {TiledLightsNode} The tiled lights node.
441
+ */
422
442
  export const tiledLights = /*@__PURE__*/ nodeProxy( TiledLightsNode );
@@ -245,7 +245,7 @@ function addAssetSceneToControllerModel( controllerModel, scene ) {
245
245
  * attached to the object returned from getControllerGrip in order to match the orientation of
246
246
  * the held device.
247
247
  *
248
- * This module depends on the [motion-controllers]{@link https://github.com/immersive-web/webxr-input-profiles/blob/main/packages/motion-controllers/README.md}
248
+ * This module depends on the [motion-controllers](https://github.com/immersive-web/webxr-input-profiles/blob/main/packages/motion-controllers/README.md)
249
249
  * third-part library.
250
250
  *
251
251
  * ```js
@@ -179,16 +179,12 @@ class XRHandModelFactory {
179
179
 
180
180
  }
181
181
 
182
- controller.visible = true;
183
-
184
182
  } );
185
183
 
186
184
  controller.addEventListener( 'disconnected', () => {
187
185
 
188
- controller.visible = false;
189
- // handModel.motionController = null;
190
- // handModel.remove( scene );
191
- // scene = null;
186
+ handModel.clear();
187
+ handModel.motionController = null;
192
188
 
193
189
  } );
194
190
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plastic-software/three",
3
- "version": "0.180.0",
3
+ "version": "0.181.1",
4
4
  "description": "JavaScript 3D library",
5
5
  "type": "module",
6
6
  "main": "./build/three.cjs",
@@ -63,13 +63,12 @@
63
63
  "lint-utils": "eslint utils --ignore-pattern prettify --ignore-pattern fuse",
64
64
  "lint": "npm run lint-core",
65
65
  "lint-fix": "npm run lint-core -- --fix && npm run lint-addons -- --fix && npm run lint-examples -- --fix && npm run lint-docs -- --fix && npm run lint-editor -- --fix && npm run lint-playground -- --fix && npm run lint-manual -- --fix && npm run lint-test -- --fix && npm run lint-utils -- --fix",
66
- "test-unit": "qunit -r failonlyreporter -f !-webonly test/unit/three.source.unit.js",
67
- "test-unit-addons": "qunit -r failonlyreporter -f !-webonly test/unit/three.addons.unit.js",
66
+ "test-unit": "qunit test/unit/three.source.unit.js",
67
+ "test-unit-addons": "qunit test/unit/three.addons.unit.js",
68
68
  "test-e2e": "node test/e2e/puppeteer.js",
69
69
  "test-e2e-cov": "node test/e2e/check-coverage.js",
70
70
  "test-e2e-webgpu": "node test/e2e/puppeteer.js --webgpu",
71
71
  "test-treeshake": "rollup -c test/rollup.treeshake.config.js",
72
- "test-circular-deps": "dpdm --no-warning --no-tree --exit-code circular:1 src/nodes/Nodes.js",
73
72
  "make-screenshot": "node test/e2e/puppeteer.js --make"
74
73
  },
75
74
  "keywords": [
@@ -97,24 +96,20 @@
97
96
  "devDependencies": {
98
97
  "@rollup/plugin-node-resolve": "^16.0.0",
99
98
  "@rollup/plugin-terser": "^0.4.0",
100
- "chalk": "^5.2.0",
101
99
  "concurrently": "^9.0.0",
102
- "dpdm": "^3.14.0",
103
100
  "eslint": "^8.37.0",
104
101
  "eslint-config-mdcs": "^5.0.0",
105
102
  "eslint-plugin-compat": "^6.0.0",
106
103
  "eslint-plugin-html": "^8.0.0",
107
104
  "eslint-plugin-import": "^2.27.5",
108
- "failonlyreporter": "^1.0.0",
109
105
  "jimp": "^1.6.0",
110
- "jsdoc": "^4.0.4",
106
+ "jsdoc": "^4.0.5",
111
107
  "magic-string": "^0.30.0",
112
108
  "pixelmatch": "^7.0.0",
113
- "puppeteer": "^22.0.0",
109
+ "puppeteer": "^24.25.0",
114
110
  "qunit": "^2.19.4",
115
111
  "rollup": "^4.6.0",
116
112
  "rollup-plugin-filesize": "^10.0.0",
117
- "rollup-plugin-visualizer": "^6.0.0",
118
113
  "servez": "^2.2.4"
119
114
  },
120
115
  "overrides": {
package/src/Three.Core.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { REVISION } from './constants.js';
2
+ import { warn } from './utils.js';
2
3
 
3
4
  export { WebGLArrayRenderTarget } from './renderers/WebGLArrayRenderTarget.js';
4
5
  export { WebGL3DRenderTarget } from './renderers/WebGL3DRenderTarget.js';
@@ -157,7 +158,7 @@ export { DataUtils } from './extras/DataUtils.js';
157
158
  export { ImageUtils } from './extras/ImageUtils.js';
158
159
  export { ShapeUtils } from './extras/ShapeUtils.js';
159
160
  export { TextureUtils } from './extras/TextureUtils.js';
160
- export { createCanvasElement } from './utils.js';
161
+ export { createCanvasElement, setConsoleFunction, getConsoleFunction, log, warn, error, warnOnce } from './utils.js';
161
162
  export * from './constants.js';
162
163
  export * from './Three.Legacy.js';
163
164
 
@@ -173,7 +174,7 @@ if ( typeof window !== 'undefined' ) {
173
174
 
174
175
  if ( window.__THREE__ ) {
175
176
 
176
- console.warn( 'WARNING: Multiple instances of Three.js being imported.' );
177
+ warn( 'WARNING: Multiple instances of Three.js being imported.' );
177
178
 
178
179
  } else {
179
180
 
package/src/Three.TSL.js CHANGED
@@ -24,6 +24,8 @@ export const PCFShadowFilter = TSL.PCFShadowFilter;
24
24
  export const PCFSoftShadowFilter = TSL.PCFSoftShadowFilter;
25
25
  export const PI = TSL.PI;
26
26
  export const PI2 = TSL.PI2;
27
+ export const TWO_PI = TSL.TWO_PI;
28
+ export const HALF_PI = TSL.HALF_PI;
27
29
  export const PointShadowFilter = TSL.PointShadowFilter;
28
30
  export const Return = TSL.Return;
29
31
  export const Schlick_to_F0 = TSL.Schlick_to_F0;
@@ -196,6 +198,7 @@ export const getDirection = TSL.getDirection;
196
198
  export const getDistanceAttenuation = TSL.getDistanceAttenuation;
197
199
  export const getGeometryRoughness = TSL.getGeometryRoughness;
198
200
  export const getNormalFromDepth = TSL.getNormalFromDepth;
201
+ export const interleavedGradientNoise = TSL.interleavedGradientNoise;
199
202
  export const getParallaxCorrectNormal = TSL.getParallaxCorrectNormal;
200
203
  export const getRoughness = TSL.getRoughness;
201
204
  export const getScreenPosition = TSL.getScreenPosition;
@@ -396,6 +399,8 @@ export const objectRadius = TSL.objectRadius;
396
399
  export const objectScale = TSL.objectScale;
397
400
  export const objectViewPosition = TSL.objectViewPosition;
398
401
  export const objectWorldMatrix = TSL.objectWorldMatrix;
402
+ export const OnBeforeObjectUpdate = TSL.OnBeforeObjectUpdate;
403
+ export const OnBeforeMaterialUpdate = TSL.OnBeforeMaterialUpdate;
399
404
  export const OnObjectUpdate = TSL.OnObjectUpdate;
400
405
  export const OnMaterialUpdate = TSL.OnMaterialUpdate;
401
406
  export const oneMinus = TSL.oneMinus;
@@ -547,6 +552,7 @@ export const textureBicubicLevel = TSL.textureBicubicLevel;
547
552
  export const textureCubeUV = TSL.textureCubeUV;
548
553
  export const textureLoad = TSL.textureLoad;
549
554
  export const textureSize = TSL.textureSize;
555
+ export const textureLevel = TSL.textureLevel;
550
556
  export const textureStore = TSL.textureStore;
551
557
  export const thickness = TSL.thickness;
552
558
  export const time = TSL.time;
@@ -623,5 +629,5 @@ for ( const key of Object.keys( THREE.TSL ) ) {
623
629
 
624
630
  }
625
631
 
626
- console.log( code );
632
+ log( code );
627
633
  //*/
@@ -18,6 +18,8 @@ export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
18
18
  export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
19
19
  export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
20
20
  export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
21
+ export { default as InspectorBase } from './renderers/common/InspectorBase.js';
22
+ export { default as CanvasTarget } from './renderers/common/CanvasTarget.js';
21
23
  export { ClippingGroup } from './objects/ClippingGroup.js';
22
24
  export * from './nodes/Nodes.js';
23
25
  import * as TSL from './nodes/TSL.js';
@@ -20,6 +20,8 @@ export { default as ProjectorLight } from './lights/webgpu/ProjectorLight.js';
20
20
  export { default as NodeLoader } from './loaders/nodes/NodeLoader.js';
21
21
  export { default as NodeObjectLoader } from './loaders/nodes/NodeObjectLoader.js';
22
22
  export { default as NodeMaterialLoader } from './loaders/nodes/NodeMaterialLoader.js';
23
+ export { default as InspectorBase } from './renderers/common/InspectorBase.js';
24
+ export { default as CanvasTarget } from './renderers/common/CanvasTarget.js';
23
25
  export { ClippingGroup } from './objects/ClippingGroup.js';
24
26
  export * from './nodes/Nodes.js';
25
27
  import * as TSL from './nodes/TSL.js';
@@ -8,6 +8,7 @@ import { StringKeyframeTrack } from './tracks/StringKeyframeTrack.js';
8
8
  import { VectorKeyframeTrack } from './tracks/VectorKeyframeTrack.js';
9
9
  import { generateUUID } from '../math/MathUtils.js';
10
10
  import { NormalAnimationBlendMode } from '../constants.js';
11
+ import { warn, error } from '../utils.js';
11
12
 
12
13
  /**
13
14
  * A reusable set of keyframe tracks which represent an animation.
@@ -305,11 +306,11 @@ class AnimationClip {
305
306
  */
306
307
  static parseAnimation( animation, bones ) {
307
308
 
308
- console.warn( 'THREE.AnimationClip: parseAnimation() is deprecated and will be removed with r185' );
309
+ warn( 'AnimationClip: parseAnimation() is deprecated and will be removed with r185' );
309
310
 
310
311
  if ( ! animation ) {
311
312
 
312
- console.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );
313
+ error( 'AnimationClip: No animation in JSONLoader data.' );
313
314
  return null;
314
315
 
315
316
  }
@@ -641,7 +641,7 @@ class AnimationMixer extends EventDispatcher {
641
641
  /**
642
642
  * Deactivates all previously scheduled actions on this mixer.
643
643
  *
644
- * @return {AnimationMixer} A reference to thi animation mixer.
644
+ * @return {AnimationMixer} A reference to this animation mixer.
645
645
  */
646
646
  stopAllAction() {
647
647
 
@@ -665,7 +665,7 @@ class AnimationMixer extends EventDispatcher {
665
665
  * time from {@link Clock} or {@link Timer}.
666
666
  *
667
667
  * @param {number} deltaTime - The delta time in seconds.
668
- * @return {AnimationMixer} A reference to thi animation mixer.
668
+ * @return {AnimationMixer} A reference to this animation mixer.
669
669
  */
670
670
  update( deltaTime ) {
671
671
 
@@ -711,7 +711,7 @@ class AnimationMixer extends EventDispatcher {
711
711
  * input parameter will be scaled by {@link AnimationMixer#timeScale}
712
712
  *
713
713
  * @param {number} time - The time to set in seconds.
714
- * @return {AnimationMixer} A reference to thi animation mixer.
714
+ * @return {AnimationMixer} A reference to this animation mixer.
715
715
  */
716
716
  setTime( time ) {
717
717
 
@@ -1,5 +1,6 @@
1
1
  import { PropertyBinding } from './PropertyBinding.js';
2
2
  import { generateUUID } from '../math/MathUtils.js';
3
+ import { error } from '../utils.js';
3
4
 
4
5
  /**
5
6
  * A group of objects that receives a shared animation state.
@@ -175,7 +176,7 @@ class AnimationObjectGroup {
175
176
 
176
177
  } else if ( objects[ index ] !== knownObject ) {
177
178
 
178
- console.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +
179
+ error( 'AnimationObjectGroup: Different objects with the same UUID ' +
179
180
  'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );
180
181
 
181
182
  } // else the object is already where we want it to be
@@ -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 = '180';
1
+ export const REVISION = '181';
2
2
 
3
3
  /**
4
4
  * Represents mouse buttons and interaction types in context of controls.
@@ -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
 
@@ -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