super-three 0.179.0 → 0.181.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/build/three.cjs +1112 -595
  2. package/build/three.core.js +616 -345
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +492 -254
  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 +6573 -2150
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +6572 -2149
  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 +52 -43
  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 +3 -2
  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 +41 -27
  425. package/src/textures/ExternalTexture.js +15 -4
  426. package/src/textures/Source.js +3 -2
  427. package/src/textures/Texture.js +3 -2
  428. package/src/textures/VideoTexture.js +2 -3
  429. package/src/utils.js +67 -3
  430. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
@@ -5,6 +5,7 @@ import { Vector2 } from '../math/Vector2.js';
5
5
  import { Vector3 } from '../math/Vector3.js';
6
6
  import { Shape } from '../extras/core/Shape.js';
7
7
  import { ShapeUtils } from '../extras/ShapeUtils.js';
8
+ import { error } from '../utils.js';
8
9
 
9
10
  /**
10
11
  * Creates extruded geometry from a path shape.
@@ -26,6 +27,7 @@ import { ShapeUtils } from '../extras/ShapeUtils.js';
26
27
  * ```
27
28
  *
28
29
  * @augments BufferGeometry
30
+ * @demo scenes/geometry-browser.html#ExtrudeGeometry
29
31
  */
30
32
  class ExtrudeGeometry extends BufferGeometry {
31
33
 
@@ -114,7 +116,7 @@ class ExtrudeGeometry extends BufferGeometry {
114
116
 
115
117
  splineTube = extrudePath.computeFrenetFrames( steps, false );
116
118
 
117
- // console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
119
+ // log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);
118
120
 
119
121
  binormal = new Vector3();
120
122
  normal = new Vector3();
@@ -219,7 +221,7 @@ class ExtrudeGeometry extends BufferGeometry {
219
221
 
220
222
  function scalePt2( pt, vec, size ) {
221
223
 
222
- if ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );
224
+ if ( ! vec ) error( 'ExtrudeGeometry: vec does not exist' );
223
225
 
224
226
  return pt.clone().addScaledVector( vec, size );
225
227
 
@@ -334,14 +336,14 @@ class ExtrudeGeometry extends BufferGeometry {
334
336
 
335
337
  if ( direction_eq ) {
336
338
 
337
- // console.log("Warning: lines are a straight sequence");
339
+ // log("Warning: lines are a straight sequence");
338
340
  v_trans_x = - v_prev_y;
339
341
  v_trans_y = v_prev_x;
340
342
  shrink_by = Math.sqrt( v_prev_lensq );
341
343
 
342
344
  } else {
343
345
 
344
- // console.log("Warning: lines are a straight spike");
346
+ // log("Warning: lines are a straight spike");
345
347
  v_trans_x = v_prev_x;
346
348
  v_trans_y = v_prev_y;
347
349
  shrink_by = Math.sqrt( v_prev_lensq / 2 );
@@ -363,7 +365,7 @@ class ExtrudeGeometry extends BufferGeometry {
363
365
  if ( k === il ) k = 0;
364
366
 
365
367
  // (j)---(i)---(k)
366
- // console.log('i,j,k', i, j , k)
368
+ // log('i,j,k', i, j , k)
367
369
 
368
370
  contourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );
369
371
 
@@ -660,7 +662,7 @@ class ExtrudeGeometry extends BufferGeometry {
660
662
  let k = i - 1;
661
663
  if ( k < 0 ) k = contour.length - 1;
662
664
 
663
- //console.log('b', i,j, i-1, k,vertices.length);
665
+ //log('b', i,j, i-1, k,vertices.length);
664
666
 
665
667
  for ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {
666
668
 
@@ -11,6 +11,7 @@ import { PolyhedronGeometry } from './PolyhedronGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments PolyhedronGeometry
14
+ * @demo scenes/geometry-browser.html#IcosahedronGeometry
14
15
  */
15
16
  class IcosahedronGeometry extends PolyhedronGeometry {
16
17
 
@@ -19,6 +19,7 @@ import { clamp } from '../math/MathUtils.js';
19
19
  * ```
20
20
  *
21
21
  * @augments BufferGeometry
22
+ * @demo scenes/geometry-browser.html#LatheGeometry
22
23
  */
23
24
  class LatheGeometry extends BufferGeometry {
24
25
 
@@ -11,6 +11,7 @@ import { PolyhedronGeometry } from './PolyhedronGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments PolyhedronGeometry
14
+ * @demo scenes/geometry-browser.html#OctahedronGeometry
14
15
  */
15
16
  class OctahedronGeometry extends PolyhedronGeometry {
16
17
 
@@ -12,6 +12,7 @@ import { Float32BufferAttribute } from '../core/BufferAttribute.js';
12
12
  * ```
13
13
  *
14
14
  * @augments BufferGeometry
15
+ * @demo scenes/geometry-browser.html#PlaneGeometry
15
16
  */
16
17
  class PlaneGeometry extends BufferGeometry {
17
18
 
@@ -14,6 +14,7 @@ import { Vector3 } from '../math/Vector3.js';
14
14
  * ```
15
15
  *
16
16
  * @augments BufferGeometry
17
+ * @demo scenes/geometry-browser.html#RingGeometry
17
18
  */
18
19
  class RingGeometry extends BufferGeometry {
19
20
 
@@ -19,6 +19,7 @@ import { Vector2 } from '../math/Vector2.js';
19
19
  * ```
20
20
  *
21
21
  * @augments BufferGeometry
22
+ * @demo scenes/geometry-browser.html#ShapeGeometry
22
23
  */
23
24
  class ShapeGeometry extends BufferGeometry {
24
25
 
@@ -13,6 +13,7 @@ import { Vector3 } from '../math/Vector3.js';
13
13
  * ```
14
14
  *
15
15
  * @augments BufferGeometry
16
+ * @demo scenes/geometry-browser.html#SphereGeometry
16
17
  */
17
18
  class SphereGeometry extends BufferGeometry {
18
19
 
@@ -11,6 +11,7 @@ import { PolyhedronGeometry } from './PolyhedronGeometry.js';
11
11
  * ```
12
12
  *
13
13
  * @augments PolyhedronGeometry
14
+ * @demo scenes/geometry-browser.html#TetrahedronGeometry
14
15
  */
15
16
  class TetrahedronGeometry extends PolyhedronGeometry {
16
17
 
@@ -13,6 +13,7 @@ import { Vector3 } from '../math/Vector3.js';
13
13
  * ```
14
14
  *
15
15
  * @augments BufferGeometry
16
+ * @demo scenes/geometry-browser.html#TorusGeometry
16
17
  */
17
18
  class TorusGeometry extends BufferGeometry {
18
19
 
@@ -15,6 +15,7 @@ import { Vector3 } from '../math/Vector3.js';
15
15
  * ```
16
16
  *
17
17
  * @augments BufferGeometry
18
+ * @demo scenes/geometry-browser.html#TorusKnotGeometry
18
19
  */
19
20
  class TorusKnotGeometry extends BufferGeometry {
20
21
 
@@ -29,6 +29,7 @@ import { Vector3 } from '../math/Vector3.js';
29
29
  * ```
30
30
  *
31
31
  * @augments BufferGeometry
32
+ * @demo scenes/geometry-browser.html#TubeGeometry
32
33
  */
33
34
  class TubeGeometry extends BufferGeometry {
34
35
 
@@ -14,7 +14,7 @@ const _camera = /*@__PURE__*/ new Camera();
14
14
  * This helps with visualizing what a camera contains in its frustum. It
15
15
  * visualizes the frustum of a camera using a line segments.
16
16
  *
17
- * Based on frustum visualization in [lightgl.js shadowmap example]{@link https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html}.
17
+ * Based on frustum visualization in [lightgl.js shadowmap example](https://github.com/evanw/lightgl.js/blob/master/tests/shadowmap.html).
18
18
  *
19
19
  * `CameraHelper` must be a child of the scene.
20
20
  *
@@ -24,7 +24,7 @@ class ProjectorLight extends SpotLight {
24
24
  /**
25
25
  * Aspect ratio of the light. Set to `null` to use the texture aspect ratio.
26
26
  *
27
- * @type {number}
27
+ * @type {?number}
28
28
  * @default null
29
29
  */
30
30
  this.aspect = null;
@@ -1,6 +1,7 @@
1
1
  import { AnimationClip } from '../animation/AnimationClip.js';
2
2
  import { FileLoader } from './FileLoader.js';
3
3
  import { Loader } from './Loader.js';
4
+ import { error } from '../utils.js';
4
5
 
5
6
  /**
6
7
  * Class for loading animation clips in the JSON format. The files are internally
@@ -57,7 +58,7 @@ class AnimationLoader extends Loader {
57
58
 
58
59
  } else {
59
60
 
60
- console.error( e );
61
+ error( e );
61
62
 
62
63
  }
63
64
 
@@ -1,6 +1,7 @@
1
1
  import { AudioContext } from '../audio/AudioContext.js';
2
2
  import { FileLoader } from './FileLoader.js';
3
3
  import { Loader } from './Loader.js';
4
+ import { error } from '../utils.js';
4
5
 
5
6
  /**
6
7
  * Class for loading audio buffers. Audios are internally
@@ -81,7 +82,7 @@ class AudioLoader extends Loader {
81
82
 
82
83
  } else {
83
84
 
84
- console.error( e );
85
+ error( e );
85
86
 
86
87
  }
87
88
 
@@ -7,7 +7,7 @@ import { InstancedBufferGeometry } from '../core/InstancedBufferGeometry.js';
7
7
  import { InstancedBufferAttribute } from '../core/InstancedBufferAttribute.js';
8
8
  import { InterleavedBufferAttribute } from '../core/InterleavedBufferAttribute.js';
9
9
  import { InterleavedBuffer } from '../core/InterleavedBuffer.js';
10
- import { getTypedArray } from '../utils.js';
10
+ import { getTypedArray, error } from '../utils.js';
11
11
 
12
12
  /**
13
13
  * Class for loading geometries. The files are internally
@@ -67,7 +67,7 @@ class BufferGeometryLoader extends Loader {
67
67
 
68
68
  } else {
69
69
 
70
- console.error( e );
70
+ error( e );
71
71
 
72
72
  }
73
73
 
@@ -35,7 +35,7 @@ const Cache = {
35
35
 
36
36
  if ( this.enabled === false ) return;
37
37
 
38
- // console.log( 'THREE.Cache', 'Adding key:', key );
38
+ // log( 'Cache', 'Adding key:', key );
39
39
 
40
40
  this.files[ key ] = file;
41
41
 
@@ -52,7 +52,7 @@ const Cache = {
52
52
 
53
53
  if ( this.enabled === false ) return;
54
54
 
55
- // console.log( 'THREE.Cache', 'Checking key:', key );
55
+ // log( 'Cache', 'Checking key:', key );
56
56
 
57
57
  return this.files[ key ];
58
58
 
@@ -65,7 +65,7 @@ class DataTextureLoader extends Loader {
65
65
 
66
66
  } else {
67
67
 
68
- console.error( error );
68
+ error( error );
69
69
  return;
70
70
 
71
71
  }
@@ -1,5 +1,6 @@
1
1
  import { Cache } from './Cache.js';
2
2
  import { Loader } from './Loader.js';
3
+ import { warn } from '../utils.js';
3
4
 
4
5
  const loading = {};
5
6
 
@@ -42,7 +43,7 @@ class FileLoader extends Loader {
42
43
 
43
44
  /**
44
45
  * The expected mime type. Valid values can be found
45
- * [here]{@link hhttps://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype}
46
+ * [here](hhttps://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#mimetype)
46
47
  *
47
48
  * @type {string}
48
49
  */
@@ -148,7 +149,7 @@ class FileLoader extends Loader {
148
149
 
149
150
  if ( response.status === 0 ) {
150
151
 
151
- console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );
152
+ warn( 'FileLoader: HTTP Status 0 received.' );
152
153
 
153
154
  }
154
155
 
@@ -1,10 +1,11 @@
1
1
  import { Cache } from './Cache.js';
2
2
  import { Loader } from './Loader.js';
3
+ import { warn } from '../utils.js';
3
4
 
4
5
  const _errorMap = new WeakMap();
5
6
 
6
7
  /**
7
- * A loader for loading images as an [ImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap}.
8
+ * A loader for loading images as an [ImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/ImageBitmap).
8
9
  * An `ImageBitmap` provides an asynchronous and resource efficient pathway to prepare
9
10
  * textures for rendering.
10
11
  *
@@ -48,13 +49,13 @@ class ImageBitmapLoader extends Loader {
48
49
 
49
50
  if ( typeof createImageBitmap === 'undefined' ) {
50
51
 
51
- console.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );
52
+ warn( 'ImageBitmapLoader: createImageBitmap() not supported.' );
52
53
 
53
54
  }
54
55
 
55
56
  if ( typeof fetch === 'undefined' ) {
56
57
 
57
- console.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );
58
+ warn( 'ImageBitmapLoader: fetch() not supported.' );
58
59
 
59
60
  }
60
61
 
@@ -78,7 +79,7 @@ class ImageBitmapLoader extends Loader {
78
79
 
79
80
  /**
80
81
  * Sets the given loader options. The structure of the object must match the `options` parameter of
81
- * [createImageBitmap]{@link https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap}.
82
+ * [createImageBitmap](https://developer.mozilla.org/en-US/docs/Web/API/Window/createImageBitmap).
82
83
  *
83
84
  * @param {Object} options - The loader options to set.
84
85
  * @return {ImageBitmapLoader} A reference to this image bitmap loader.
@@ -13,7 +13,7 @@ const _loading = new WeakMap();
13
13
  * ```
14
14
  * Please note that `ImageLoader` has dropped support for progress
15
15
  * events in `r84`. For an `ImageLoader` that supports progress events, see
16
- * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639}.
16
+ * [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-275785639).
17
17
  *
18
18
  * @augments Loader
19
19
  */
@@ -54,7 +54,7 @@ class Loader {
54
54
  this.resourcePath = '';
55
55
 
56
56
  /**
57
- * The [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}
57
+ * The [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
58
58
  * used in HTTP request.
59
59
  *
60
60
  * @type {Object<string, any>}
@@ -119,7 +119,7 @@ class Loader {
119
119
 
120
120
  /**
121
121
  * Whether the XMLHttpRequest uses credentials such as cookies, authorization
122
- * headers or TLS client certificates, see [XMLHttpRequest.withCredentials]{@link https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials}.
122
+ * headers or TLS client certificates, see [XMLHttpRequest.withCredentials](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials).
123
123
  *
124
124
  * Note: This setting has no effect if you are loading files locally or from the same domain.
125
125
  *
@@ -162,7 +162,7 @@ class Loader {
162
162
  /**
163
163
  * Sets the given request header.
164
164
  *
165
- * @param {Object} requestHeader - A [request header]{@link https://developer.mozilla.org/en-US/docs/Glossary/Request_header}
165
+ * @param {Object} requestHeader - A [request header](https://developer.mozilla.org/en-US/docs/Glossary/Request_header)
166
166
  * for configuring the HTTP request.
167
167
  * @return {Loader} A reference to this instance.
168
168
  */
@@ -72,9 +72,10 @@ class LoadingManager {
72
72
  /**
73
73
  * Used for aborting ongoing requests in loaders using this manager.
74
74
  *
75
- * @type {AbortController}
75
+ * @private
76
+ * @type {AbortController | null}
76
77
  */
77
- this.abortController = new AbortController();
78
+ this._abortController = null;
78
79
 
79
80
  /**
80
81
  * This should be called by any loader using the manager when the loader
@@ -285,8 +286,9 @@ class LoadingManager {
285
286
  */
286
287
  this.abort = function () {
287
288
 
289
+
288
290
  this.abortController.abort();
289
- this.abortController = new AbortController();
291
+ this._abortController = null;
290
292
 
291
293
  return this;
292
294
 
@@ -294,6 +296,26 @@ class LoadingManager {
294
296
 
295
297
  }
296
298
 
299
+ // TODO: Revert this back to a single member variable once this issue has been fixed
300
+ // https://github.com/cloudflare/workerd/issues/3657
301
+
302
+ /**
303
+ * Used for aborting ongoing requests in loaders using this manager.
304
+ *
305
+ * @type {AbortController}
306
+ */
307
+ get abortController() {
308
+
309
+ if ( ! this._abortController ) {
310
+
311
+ this._abortController = new AbortController();
312
+
313
+ }
314
+
315
+ return this._abortController;
316
+
317
+ }
318
+
297
319
  }
298
320
 
299
321
  /**
@@ -26,6 +26,7 @@ import {
26
26
  LineBasicMaterial,
27
27
  Material,
28
28
  } from '../materials/Materials.js';
29
+ import { error, warn } from '../utils.js';
29
30
 
30
31
  /**
31
32
  * Class for loading geometries. The files are internally
@@ -89,7 +90,7 @@ class MaterialLoader extends Loader {
89
90
 
90
91
  } else {
91
92
 
92
- console.error( e );
93
+ error( e );
93
94
 
94
95
  }
95
96
 
@@ -115,7 +116,7 @@ class MaterialLoader extends Loader {
115
116
 
116
117
  if ( textures[ name ] === undefined ) {
117
118
 
118
- console.warn( 'THREE.MaterialLoader: Undefined texture', name );
119
+ warn( 'MaterialLoader: Undefined texture', name );
119
120
 
120
121
  }
121
122
 
@@ -59,12 +59,12 @@ import { BufferGeometryLoader } from './BufferGeometryLoader.js';
59
59
  import { Loader } from './Loader.js';
60
60
  import { FileLoader } from './FileLoader.js';
61
61
  import * as Geometries from '../geometries/Geometries.js';
62
- import { getTypedArray } from '../utils.js';
62
+ import { getTypedArray, error, warn } from '../utils.js';
63
63
  import { Box3 } from '../math/Box3.js';
64
64
  import { Sphere } from '../math/Sphere.js';
65
65
 
66
66
  /**
67
- * A loader for loading a JSON resource in the [JSON Object/Scene format]{@link https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4}.
67
+ * A loader for loading a JSON resource in the [JSON Object/Scene format](https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4).
68
68
  * The files are internally loaded via {@link FileLoader}.
69
69
  *
70
70
  * ```js
@@ -123,7 +123,7 @@ class ObjectLoader extends Loader {
123
123
 
124
124
  if ( onError !== undefined ) onError( error );
125
125
 
126
- console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message );
126
+ error( 'ObjectLoader: Can\'t parse ' + url + '.', error.message );
127
127
 
128
128
  return;
129
129
 
@@ -135,7 +135,7 @@ class ObjectLoader extends Loader {
135
135
 
136
136
  if ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\'t load ' + url ) );
137
137
 
138
- console.error( 'THREE.ObjectLoader: Can\'t load ' + url );
138
+ error( 'ObjectLoader: Can\'t load ' + url );
139
139
  return;
140
140
 
141
141
  }
@@ -360,7 +360,7 @@ class ObjectLoader extends Loader {
360
360
 
361
361
  } else {
362
362
 
363
- console.warn( `THREE.ObjectLoader: Unsupported geometry type "${ data.type }"` );
363
+ warn( `ObjectLoader: Unsupported geometry type "${ data.type }"` );
364
364
 
365
365
  }
366
366
 
@@ -651,7 +651,7 @@ class ObjectLoader extends Loader {
651
651
 
652
652
  if ( typeof value === 'number' ) return value;
653
653
 
654
- console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );
654
+ warn( 'ObjectLoader.parseTexture: Constant should be in numeric form.', value );
655
655
 
656
656
  return type[ value ];
657
657
 
@@ -667,13 +667,13 @@ class ObjectLoader extends Loader {
667
667
 
668
668
  if ( data.image === undefined ) {
669
669
 
670
- console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid );
670
+ warn( 'ObjectLoader: No "image" specified for', data.uuid );
671
671
 
672
672
  }
673
673
 
674
674
  if ( images[ data.image ] === undefined ) {
675
675
 
676
- console.warn( 'THREE.ObjectLoader: Undefined image', data.image );
676
+ warn( 'ObjectLoader: Undefined image', data.image );
677
677
 
678
678
  }
679
679
 
@@ -761,7 +761,7 @@ class ObjectLoader extends Loader {
761
761
 
762
762
  if ( geometries[ name ] === undefined ) {
763
763
 
764
- console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
764
+ warn( 'ObjectLoader: Undefined geometry', name );
765
765
 
766
766
  }
767
767
 
@@ -783,7 +783,7 @@ class ObjectLoader extends Loader {
783
783
 
784
784
  if ( materials[ uuid ] === undefined ) {
785
785
 
786
- console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
786
+ warn( 'ObjectLoader: Undefined material', uuid );
787
787
 
788
788
  }
789
789
 
@@ -797,7 +797,7 @@ class ObjectLoader extends Loader {
797
797
 
798
798
  if ( materials[ name ] === undefined ) {
799
799
 
800
- console.warn( 'THREE.ObjectLoader: Undefined material', name );
800
+ warn( 'ObjectLoader: Undefined material', name );
801
801
 
802
802
  }
803
803
 
@@ -809,7 +809,7 @@ class ObjectLoader extends Loader {
809
809
 
810
810
  if ( textures[ uuid ] === undefined ) {
811
811
 
812
- console.warn( 'THREE.ObjectLoader: Undefined texture', uuid );
812
+ warn( 'ObjectLoader: Undefined texture', uuid );
813
813
 
814
814
  }
815
815
 
@@ -1210,7 +1210,7 @@ class ObjectLoader extends Loader {
1210
1210
 
1211
1211
  if ( skeleton === undefined ) {
1212
1212
 
1213
- console.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );
1213
+ warn( 'ObjectLoader: No skeleton found with UUID:', child.skeleton );
1214
1214
 
1215
1215
  } else {
1216
1216
 
@@ -14,7 +14,7 @@ import { Loader } from './Loader.js';
14
14
  * ```
15
15
  * Please note that `TextureLoader` has dropped support for progress
16
16
  * events in `r84`. For a `TextureLoader` that supports progress events, see
17
- * [this thread]{@link https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145}.
17
+ * [this thread](https://github.com/mrdoob/three.js/issues/10439#issuecomment-293260145).
18
18
  *
19
19
  * @augments Loader
20
20
  */
@@ -2,6 +2,7 @@ import { nodeObject, float } from '../../nodes/tsl/TSLBase.js';
2
2
 
3
3
  import { Loader } from '../Loader.js';
4
4
  import { FileLoader } from '../../loaders/FileLoader.js';
5
+ import { error } from '../../utils.js';
5
6
 
6
7
  /**
7
8
  * A loader for loading node objects in the three.js JSON Object/Scene format.
@@ -63,7 +64,7 @@ class NodeLoader extends Loader {
63
64
 
64
65
  } else {
65
66
 
66
- console.error( e );
67
+ error( e );
67
68
 
68
69
  }
69
70
 
@@ -179,7 +180,7 @@ class NodeLoader extends Loader {
179
180
 
180
181
  if ( this.nodes[ type ] === undefined ) {
181
182
 
182
- console.error( 'THREE.NodeLoader: Node type not found:', type );
183
+ error( 'NodeLoader: Node type not found:', type );
183
184
  return float();
184
185
 
185
186
  }
@@ -2,6 +2,7 @@ import { Color } from '../math/Color.js';
2
2
  import { EventDispatcher } from '../core/EventDispatcher.js';
3
3
  import { FrontSide, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor, AlwaysStencilFunc, KeepStencilOp } from '../constants.js';
4
4
  import { generateUUID } from '../math/MathUtils.js';
5
+ import { warn } from '../utils.js';
5
6
 
6
7
  let _materialId = 0;
7
8
 
@@ -522,7 +523,7 @@ class Material extends EventDispatcher {
522
523
  *
523
524
  * This method can only be used when rendering with {@link WebGLRenderer}. The
524
525
  * recommended approach when customizing materials is to use `WebGPURenderer` with the new
525
- * Node Material system and [TSL]{@link https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language}.
526
+ * Node Material system and [TSL](https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language).
526
527
  *
527
528
  * @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source.
528
529
  * @param {WebGLRenderer} renderer - A reference to the renderer.
@@ -561,7 +562,7 @@ class Material extends EventDispatcher {
561
562
 
562
563
  if ( newValue === undefined ) {
563
564
 
564
- console.warn( `THREE.Material: parameter '${ key }' has value of undefined.` );
565
+ warn( `Material: parameter '${ key }' has value of undefined.` );
565
566
  continue;
566
567
 
567
568
  }
@@ -570,7 +571,7 @@ class Material extends EventDispatcher {
570
571
 
571
572
  if ( currentValue === undefined ) {
572
573
 
573
- console.warn( `THREE.Material: '${ key }' is not a property of THREE.${ this.type }.` );
574
+ warn( `Material: '${ key }' is not a property of THREE.${ this.type }.` );
574
575
  continue;
575
576
 
576
577
  }
@@ -664,6 +665,18 @@ class Material extends EventDispatcher {
664
665
 
665
666
  }
666
667
 
668
+ if ( this.sheenColorMap && this.sheenColorMap.isTexture ) {
669
+
670
+ data.sheenColorMap = this.sheenColorMap.toJSON( meta ).uuid;
671
+
672
+ }
673
+
674
+ if ( this.sheenRoughnessMap && this.sheenRoughnessMap.isTexture ) {
675
+
676
+ data.sheenRoughnessMap = this.sheenRoughnessMap.toJSON( meta ).uuid;
677
+
678
+ }
679
+
667
680
  if ( this.dispersion !== undefined ) data.dispersion = this.dispersion;
668
681
 
669
682
  if ( this.iridescence !== undefined ) data.iridescence = this.iridescence;
@@ -9,6 +9,7 @@ import { Euler } from '../math/Euler.js';
9
9
  * This material is not affected by lights.
10
10
  *
11
11
  * @augments Material
12
+ * @demo scenes/material-browser.html#MeshBasicMaterial
12
13
  */
13
14
  class MeshBasicMaterial extends Material {
14
15
 
@@ -6,6 +6,7 @@ import { BasicDepthPacking } from '../constants.js';
6
6
  * near and far plane. White is nearest, black is farthest.
7
7
  *
8
8
  * @augments Material
9
+ * @demo scenes/material-browser.html#MeshDepthMaterial
9
10
  */
10
11
  class MeshDepthMaterial extends Material {
11
12