@plastic-software/three 0.179.0 → 0.181.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/build/three.cjs +1108 -591
  2. package/build/three.core.js +616 -345
  3. package/build/three.core.min.js +1 -1
  4. package/build/three.module.js +488 -250
  5. package/build/three.module.min.js +1 -1
  6. package/build/three.tsl.js +37 -6
  7. package/build/three.tsl.min.js +1 -1
  8. package/build/three.webgpu.js +6576 -2152
  9. package/build/three.webgpu.min.js +1 -1
  10. package/build/three.webgpu.nodes.js +6575 -2151
  11. package/build/three.webgpu.nodes.min.js +1 -1
  12. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  13. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  14. package/examples/jsm/Addons.js +1 -1
  15. package/examples/jsm/animation/CCDIKSolver.js +1 -1
  16. package/examples/jsm/controls/ArcballControls.js +8 -8
  17. package/examples/jsm/controls/DragControls.js +7 -57
  18. package/examples/jsm/controls/FirstPersonControls.js +3 -3
  19. package/examples/jsm/controls/FlyControls.js +1 -1
  20. package/examples/jsm/controls/OrbitControls.js +2 -2
  21. package/examples/jsm/controls/PointerLockControls.js +2 -10
  22. package/examples/jsm/controls/TrackballControls.js +1 -1
  23. package/examples/jsm/controls/TransformControls.js +1 -1
  24. package/examples/jsm/effects/AsciiEffect.js +8 -8
  25. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  26. package/examples/jsm/exporters/EXRExporter.js +1 -1
  27. package/examples/jsm/exporters/GLTFExporter.js +33 -25
  28. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  29. package/examples/jsm/exporters/PLYExporter.js +1 -1
  30. package/examples/jsm/exporters/USDZExporter.js +9 -2
  31. package/examples/jsm/geometries/DecalGeometry.js +2 -2
  32. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  33. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  34. package/examples/jsm/geometries/TextGeometry.js +3 -2
  35. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  36. package/examples/jsm/helpers/ViewHelper.js +43 -5
  37. package/examples/jsm/inspector/Inspector.js +427 -0
  38. package/examples/jsm/inspector/RendererInspector.js +415 -0
  39. package/examples/jsm/inspector/tabs/Console.js +204 -0
  40. package/examples/jsm/inspector/tabs/Parameters.js +332 -0
  41. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  42. package/examples/jsm/inspector/tabs/Viewer.js +166 -0
  43. package/examples/jsm/inspector/ui/Graph.js +95 -0
  44. package/examples/jsm/inspector/ui/Item.js +170 -0
  45. package/examples/jsm/inspector/ui/List.js +75 -0
  46. package/examples/jsm/inspector/ui/Profiler.js +170 -0
  47. package/examples/jsm/inspector/ui/Style.js +654 -0
  48. package/examples/jsm/inspector/ui/Tab.js +46 -0
  49. package/examples/jsm/inspector/ui/Values.js +423 -0
  50. package/examples/jsm/inspector/ui/utils.js +56 -0
  51. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  52. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  53. package/examples/jsm/interactive/SelectionBox.js +30 -0
  54. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  55. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  56. package/examples/jsm/lines/Line2.js +3 -3
  57. package/examples/jsm/lines/LineGeometry.js +1 -1
  58. package/examples/jsm/lines/LineSegments2.js +2 -2
  59. package/examples/jsm/lines/Wireframe.js +2 -2
  60. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  61. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  62. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  63. package/examples/jsm/loaders/3MFLoader.js +1 -1
  64. package/examples/jsm/loaders/ColladaLoader.js +3 -3
  65. package/examples/jsm/loaders/DDSLoader.js +1 -1
  66. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  67. package/examples/jsm/loaders/EXRLoader.js +5 -5
  68. package/examples/jsm/loaders/FBXLoader.js +2 -2
  69. package/examples/jsm/loaders/FontLoader.js +23 -5
  70. package/examples/jsm/loaders/GLTFLoader.js +14 -8
  71. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  72. package/examples/jsm/loaders/HDRLoader.js +486 -0
  73. package/examples/jsm/loaders/KTX2Loader.js +136 -49
  74. package/examples/jsm/loaders/KTXLoader.js +2 -2
  75. package/examples/jsm/loaders/LDrawLoader.js +1 -1
  76. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  77. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  78. package/examples/jsm/loaders/LWOLoader.js +2 -2
  79. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  80. package/examples/jsm/loaders/OBJLoader.js +1 -1
  81. package/examples/jsm/loaders/PDBLoader.js +1 -1
  82. package/examples/jsm/loaders/RGBELoader.js +7 -473
  83. package/examples/jsm/loaders/SVGLoader.js +2 -2
  84. package/examples/jsm/loaders/TTFLoader.js +4 -4
  85. package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
  86. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  87. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  88. package/examples/jsm/math/ColorSpaces.js +19 -1
  89. package/examples/jsm/math/ConvexHull.js +3 -3
  90. package/examples/jsm/math/ImprovedNoise.js +1 -1
  91. package/examples/jsm/math/Lut.js +2 -2
  92. package/examples/jsm/math/SimplexNoise.js +1 -1
  93. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  94. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  95. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  96. package/examples/jsm/misc/TubePainter.js +383 -40
  97. package/examples/jsm/misc/Volume.js +1 -1
  98. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  99. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  100. package/examples/jsm/objects/Sky.js +1 -1
  101. package/examples/jsm/objects/SkyMesh.js +1 -1
  102. package/examples/jsm/objects/Water.js +3 -3
  103. package/examples/jsm/objects/WaterMesh.js +6 -6
  104. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  105. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  106. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  107. package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
  108. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  109. package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
  110. package/examples/jsm/renderers/SVGRenderer.js +1 -1
  111. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  112. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  113. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  114. package/examples/jsm/shaders/BokehShader.js +1 -1
  115. package/examples/jsm/shaders/BokehShader2.js +1 -1
  116. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  117. package/examples/jsm/shaders/FocusShader.js +1 -1
  118. package/examples/jsm/shaders/GTAOShader.js +2 -2
  119. package/examples/jsm/shaders/GodRaysShader.js +1 -1
  120. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  121. package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
  122. package/examples/jsm/shaders/SSRShader.js +1 -1
  123. package/examples/jsm/shaders/SepiaShader.js +1 -1
  124. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  125. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  126. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +1 -1
  127. package/examples/jsm/shaders/VignetteShader.js +1 -1
  128. package/examples/jsm/transpiler/GLSLDecoder.js +22 -19
  129. package/examples/jsm/transpiler/TSLEncoder.js +9 -10
  130. package/examples/jsm/transpiler/WGSLEncoder.js +24 -0
  131. package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
  132. package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
  133. package/examples/jsm/tsl/display/BloomNode.js +7 -3
  134. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +2 -1
  135. package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
  136. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  137. package/examples/jsm/tsl/display/GTAONode.js +53 -5
  138. package/examples/jsm/tsl/display/GaussianBlurNode.js +49 -35
  139. package/examples/jsm/tsl/display/OutlineNode.js +13 -2
  140. package/examples/jsm/tsl/display/SSGINode.js +654 -0
  141. package/examples/jsm/tsl/display/SSRNode.js +182 -65
  142. package/examples/jsm/tsl/display/SSSNode.js +488 -0
  143. package/examples/jsm/tsl/display/TRAANode.js +124 -7
  144. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  145. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  146. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  147. package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
  148. package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
  149. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  150. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  151. package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
  152. package/package.json +5 -10
  153. package/src/Three.Core.js +4 -2
  154. package/src/Three.TSL.js +36 -5
  155. package/src/Three.WebGPU.Nodes.js +2 -0
  156. package/src/Three.WebGPU.js +2 -0
  157. package/src/animation/AnimationClip.js +20 -4
  158. package/src/animation/AnimationMixer.js +3 -3
  159. package/src/animation/AnimationObjectGroup.js +2 -1
  160. package/src/animation/KeyframeTrack.js +7 -6
  161. package/src/animation/PropertyBinding.js +12 -11
  162. package/src/audio/Audio.js +10 -9
  163. package/src/audio/PositionalAudio.js +1 -1
  164. package/src/cameras/OrthographicCamera.js +1 -1
  165. package/src/cameras/PerspectiveCamera.js +1 -1
  166. package/src/cameras/StereoCamera.js +2 -2
  167. package/src/constants.js +11 -3
  168. package/src/core/BufferGeometry.js +10 -10
  169. package/src/core/EventDispatcher.js +1 -1
  170. package/src/core/InterleavedBuffer.js +1 -1
  171. package/src/core/InterleavedBufferAttribute.js +3 -2
  172. package/src/core/Object3D.js +3 -2
  173. package/src/core/Raycaster.js +2 -1
  174. package/src/core/RenderTarget.js +10 -1
  175. package/src/extras/Controls.js +5 -4
  176. package/src/extras/DataUtils.js +2 -1
  177. package/src/extras/Earcut.js +6 -0
  178. package/src/extras/ImageUtils.js +2 -2
  179. package/src/extras/PMREMGenerator.js +268 -55
  180. package/src/extras/TextureUtils.js +2 -1
  181. package/src/extras/core/Curve.js +2 -1
  182. package/src/extras/core/Interpolations.js +7 -1
  183. package/src/extras/core/ShapePath.js +4 -4
  184. package/src/extras/lib/earcut.js +8 -8
  185. package/src/geometries/BoxGeometry.js +1 -0
  186. package/src/geometries/CapsuleGeometry.js +1 -0
  187. package/src/geometries/CircleGeometry.js +1 -0
  188. package/src/geometries/ConeGeometry.js +1 -0
  189. package/src/geometries/CylinderGeometry.js +1 -0
  190. package/src/geometries/DodecahedronGeometry.js +1 -0
  191. package/src/geometries/ExtrudeGeometry.js +8 -6
  192. package/src/geometries/IcosahedronGeometry.js +1 -0
  193. package/src/geometries/LatheGeometry.js +1 -0
  194. package/src/geometries/OctahedronGeometry.js +1 -0
  195. package/src/geometries/PlaneGeometry.js +1 -0
  196. package/src/geometries/RingGeometry.js +1 -0
  197. package/src/geometries/ShapeGeometry.js +1 -0
  198. package/src/geometries/SphereGeometry.js +1 -0
  199. package/src/geometries/TetrahedronGeometry.js +1 -0
  200. package/src/geometries/TorusGeometry.js +1 -0
  201. package/src/geometries/TorusKnotGeometry.js +1 -0
  202. package/src/geometries/TubeGeometry.js +1 -0
  203. package/src/helpers/CameraHelper.js +1 -1
  204. package/src/lights/webgpu/ProjectorLight.js +1 -1
  205. package/src/loaders/AnimationLoader.js +2 -1
  206. package/src/loaders/AudioLoader.js +2 -1
  207. package/src/loaders/BufferGeometryLoader.js +2 -2
  208. package/src/loaders/Cache.js +2 -2
  209. package/src/loaders/DataTextureLoader.js +1 -1
  210. package/src/loaders/FileLoader.js +3 -2
  211. package/src/loaders/ImageBitmapLoader.js +5 -4
  212. package/src/loaders/ImageLoader.js +1 -1
  213. package/src/loaders/Loader.js +3 -3
  214. package/src/loaders/LoadingManager.js +25 -3
  215. package/src/loaders/MaterialLoader.js +3 -2
  216. package/src/loaders/ObjectLoader.js +13 -13
  217. package/src/loaders/TextureLoader.js +1 -1
  218. package/src/loaders/nodes/NodeLoader.js +3 -2
  219. package/src/materials/Material.js +16 -3
  220. package/src/materials/MeshBasicMaterial.js +1 -0
  221. package/src/materials/MeshDepthMaterial.js +1 -0
  222. package/src/materials/MeshDistanceMaterial.js +1 -1
  223. package/src/materials/MeshLambertMaterial.js +2 -1
  224. package/src/materials/MeshMatcapMaterial.js +22 -0
  225. package/src/materials/MeshNormalMaterial.js +1 -0
  226. package/src/materials/MeshPhongMaterial.js +2 -1
  227. package/src/materials/MeshPhysicalMaterial.js +2 -1
  228. package/src/materials/MeshStandardMaterial.js +8 -7
  229. package/src/materials/MeshToonMaterial.js +1 -0
  230. package/src/materials/PointsMaterial.js +1 -1
  231. package/src/materials/ShaderMaterial.js +2 -2
  232. package/src/materials/nodes/Line2NodeMaterial.js +2 -2
  233. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  234. package/src/materials/nodes/NodeMaterial.js +62 -22
  235. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  236. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  237. package/src/materials/nodes/manager/NodeMaterialObserver.js +3 -2
  238. package/src/math/Color.js +6 -5
  239. package/src/math/ColorManagement.js +9 -3
  240. package/src/math/Cylindrical.js +1 -1
  241. package/src/math/Euler.js +2 -1
  242. package/src/math/MathUtils.js +13 -11
  243. package/src/math/Matrix2.js +1 -1
  244. package/src/math/Matrix3.js +2 -2
  245. package/src/math/Matrix4.js +7 -7
  246. package/src/math/Plane.js +1 -1
  247. package/src/math/Quaternion.js +68 -66
  248. package/src/math/Spherical.js +1 -1
  249. package/src/nodes/Nodes.js +4 -1
  250. package/src/nodes/TSL.js +4 -1
  251. package/src/nodes/accessors/BufferNode.js +1 -1
  252. package/src/nodes/accessors/Camera.js +133 -7
  253. package/src/nodes/accessors/ClippingNode.js +6 -5
  254. package/src/nodes/accessors/CubeTextureNode.js +5 -4
  255. package/src/nodes/accessors/InstanceNode.js +25 -5
  256. package/src/nodes/accessors/Lights.js +10 -0
  257. package/src/nodes/accessors/Normal.js +5 -4
  258. package/src/nodes/accessors/Object3DNode.js +1 -1
  259. package/src/nodes/accessors/Position.js +18 -2
  260. package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
  261. package/src/nodes/accessors/ReferenceNode.js +3 -2
  262. package/src/nodes/accessors/SceneNode.js +2 -1
  263. package/src/nodes/accessors/StorageBufferNode.js +2 -1
  264. package/src/nodes/accessors/StorageTextureNode.js +22 -0
  265. package/src/nodes/accessors/Texture3DNode.js +14 -1
  266. package/src/nodes/accessors/TextureNode.js +130 -44
  267. package/src/nodes/code/FunctionCallNode.js +24 -4
  268. package/src/nodes/code/FunctionNode.js +23 -0
  269. package/src/nodes/core/ArrayNode.js +1 -0
  270. package/src/nodes/core/AssignNode.js +4 -3
  271. package/src/nodes/core/AttributeNode.js +2 -1
  272. package/src/nodes/core/ContextNode.js +29 -10
  273. package/src/nodes/core/IndexNode.js +2 -2
  274. package/src/nodes/core/InputNode.js +2 -1
  275. package/src/nodes/core/InspectorNode.js +128 -0
  276. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +40 -7
  277. package/src/nodes/core/Node.js +152 -31
  278. package/src/nodes/core/NodeBuilder.js +183 -35
  279. package/src/nodes/core/NodeFrame.js +21 -21
  280. package/src/nodes/core/NodeFunction.js +2 -1
  281. package/src/nodes/core/NodeParser.js +2 -1
  282. package/src/nodes/core/NodeUniform.js +1 -1
  283. package/src/nodes/core/NodeUtils.js +17 -91
  284. package/src/nodes/core/ParameterNode.js +31 -0
  285. package/src/nodes/core/PropertyNode.js +7 -0
  286. package/src/nodes/core/StackNode.js +43 -16
  287. package/src/nodes/core/StructNode.js +5 -5
  288. package/src/nodes/core/StructTypeNode.js +1 -0
  289. package/src/nodes/core/SubBuildNode.js +2 -2
  290. package/src/nodes/core/UniformNode.js +18 -10
  291. package/src/nodes/core/VarNode.js +70 -33
  292. package/src/nodes/core/VaryingNode.js +3 -2
  293. package/src/nodes/display/BlendModes.js +5 -4
  294. package/src/nodes/display/BumpMapNode.js +1 -1
  295. package/src/nodes/display/ColorAdjustment.js +1 -1
  296. package/src/nodes/display/FrontFacingNode.js +4 -8
  297. package/src/nodes/display/NormalMapNode.js +2 -1
  298. package/src/nodes/display/PassNode.js +52 -11
  299. package/src/nodes/display/RenderOutputNode.js +28 -2
  300. package/src/nodes/display/ScreenNode.js +44 -14
  301. package/src/nodes/display/ToneMappingNode.js +31 -4
  302. package/src/nodes/display/ToonOutlinePassNode.js +8 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
  304. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  305. package/src/nodes/display/ViewportTextureNode.js +42 -12
  306. package/src/nodes/fog/Fog.js +3 -2
  307. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  308. package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
  309. package/src/nodes/functions/BasicLightingModel.js +2 -1
  310. package/src/nodes/functions/PhysicalLightingModel.js +3 -2
  311. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  312. package/src/nodes/geometry/RangeNode.js +40 -4
  313. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
  314. package/src/nodes/gpgpu/ComputeNode.js +17 -5
  315. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  316. package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
  317. package/src/nodes/lighting/EnvironmentNode.js +6 -6
  318. package/src/nodes/lighting/LightsNode.js +3 -4
  319. package/src/nodes/lighting/PointShadowNode.js +6 -0
  320. package/src/nodes/lighting/ShadowFilterNode.js +2 -0
  321. package/src/nodes/lighting/ShadowNode.js +75 -8
  322. package/src/nodes/math/BitcastNode.js +156 -0
  323. package/src/nodes/math/ConditionalNode.js +24 -7
  324. package/src/nodes/math/MathNode.js +25 -19
  325. package/src/nodes/math/OperatorNode.js +7 -5
  326. package/src/nodes/pmrem/PMREMUtils.js +117 -2
  327. package/src/nodes/shapes/Shapes.js +1 -1
  328. package/src/nodes/tsl/TSLBase.js +5 -2
  329. package/src/nodes/tsl/TSLCore.js +460 -159
  330. package/src/nodes/utils/DebugNode.js +2 -1
  331. package/src/nodes/utils/EventNode.js +36 -0
  332. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  333. package/src/nodes/utils/JoinNode.js +6 -3
  334. package/src/nodes/utils/LoopNode.js +20 -24
  335. package/src/nodes/utils/MemberNode.js +59 -7
  336. package/src/nodes/utils/PostProcessingUtils.js +28 -1
  337. package/src/nodes/utils/RTTNode.js +13 -3
  338. package/src/nodes/utils/ReflectorNode.js +58 -7
  339. package/src/nodes/utils/SampleNode.js +12 -2
  340. package/src/nodes/utils/SplitNode.js +11 -0
  341. package/src/nodes/utils/Timer.js +0 -47
  342. package/src/objects/BatchedMesh.js +2 -2
  343. package/src/objects/LOD.js +1 -1
  344. package/src/objects/Line.js +2 -1
  345. package/src/objects/LineSegments.js +2 -1
  346. package/src/objects/Skeleton.js +3 -2
  347. package/src/objects/SkinnedMesh.js +3 -1
  348. package/src/objects/Sprite.js +4 -3
  349. package/src/renderers/WebGLRenderer.js +48 -41
  350. package/src/renderers/common/Animation.js +13 -1
  351. package/src/renderers/common/Attributes.js +1 -1
  352. package/src/renderers/common/Backend.js +108 -27
  353. package/src/renderers/common/Background.js +2 -1
  354. package/src/renderers/common/Bindings.js +58 -2
  355. package/src/renderers/common/CanvasTarget.js +341 -0
  356. package/src/renderers/common/ChainMap.js +1 -1
  357. package/src/renderers/common/DataMap.js +1 -1
  358. package/src/renderers/common/Geometries.js +26 -0
  359. package/src/renderers/common/Info.js +4 -2
  360. package/src/renderers/common/InspectorBase.js +146 -0
  361. package/src/renderers/common/Pipelines.js +1 -1
  362. package/src/renderers/common/PostProcessing.js +6 -25
  363. package/src/renderers/common/QuadMesh.js +7 -1
  364. package/src/renderers/common/RenderContext.js +2 -2
  365. package/src/renderers/common/RenderList.js +7 -3
  366. package/src/renderers/common/RenderObject.js +16 -2
  367. package/src/renderers/common/RenderObjects.js +1 -1
  368. package/src/renderers/common/Renderer.js +473 -245
  369. package/src/renderers/common/RendererUtils.js +9 -0
  370. package/src/renderers/common/SampledTexture.js +9 -1
  371. package/src/renderers/common/Sampler.js +50 -12
  372. package/src/renderers/common/StorageTexture.js +9 -1
  373. package/src/renderers/common/Textures.js +121 -45
  374. package/src/renderers/common/TimestampQueryPool.js +65 -3
  375. package/src/renderers/common/UniformsGroup.js +2 -1
  376. package/src/renderers/common/XRManager.js +42 -22
  377. package/src/renderers/common/extras/PMREMGenerator.js +160 -65
  378. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  379. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  380. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  381. package/src/renderers/common/nodes/Nodes.js +38 -16
  382. package/src/renderers/shaders/DFGLUTData.js +64 -0
  383. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  384. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
  385. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  386. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
  387. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  388. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  389. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  390. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  391. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +7 -15
  392. package/src/renderers/shaders/ShaderLib/depth.glsl.js +1 -1
  393. package/src/renderers/shaders/UniformsLib.js +1 -0
  394. package/src/renderers/shaders/UniformsUtils.js +25 -4
  395. package/src/renderers/webgl/WebGLCapabilities.js +2 -1
  396. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  397. package/src/renderers/webgl/WebGLInfo.js +3 -1
  398. package/src/renderers/webgl/WebGLProgram.js +15 -14
  399. package/src/renderers/webgl/WebGLPrograms.js +2 -1
  400. package/src/renderers/webgl/WebGLShadowMap.js +3 -2
  401. package/src/renderers/webgl/WebGLState.js +15 -14
  402. package/src/renderers/webgl/WebGLTextures.js +19 -14
  403. package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
  404. package/src/renderers/webgl/WebGLUtils.js +3 -2
  405. package/src/renderers/webgl-fallback/WebGLBackend.js +199 -167
  406. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +181 -25
  407. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  408. package/src/renderers/webgl-fallback/utils/WebGLState.js +7 -6
  409. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +169 -19
  410. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
  411. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
  412. package/src/renderers/webgpu/WebGPUBackend.js +153 -123
  413. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  414. package/src/renderers/webgpu/WebGPURenderer.js +3 -2
  415. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +142 -50
  416. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +2 -1
  417. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +5 -3
  418. package/src/renderers/webgpu/utils/WebGPUConstants.js +7 -2
  419. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +53 -34
  420. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
  421. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +260 -99
  422. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
  423. package/src/renderers/webgpu/utils/WebGPUUtils.js +22 -2
  424. package/src/renderers/webxr/WebXRManager.js +42 -26
  425. package/src/textures/ExternalTexture.js +15 -4
  426. package/src/textures/Source.js +3 -2
  427. package/src/textures/Texture.js +3 -2
  428. package/src/textures/VideoTexture.js +2 -3
  429. package/src/utils.js +67 -3
  430. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
@@ -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
 
@@ -61,12 +61,12 @@ import { BufferGeometryLoader } from './BufferGeometryLoader.js';
61
61
  import { Loader } from './Loader.js';
62
62
  import { FileLoader } from './FileLoader.js';
63
63
  import * as Geometries from '../geometries/Geometries.js';
64
- import { getTypedArray } from '../utils.js';
64
+ import { getTypedArray, error, warn } from '../utils.js';
65
65
  import { Box3 } from '../math/Box3.js';
66
66
  import { Sphere } from '../math/Sphere.js';
67
67
 
68
68
  /**
69
- * 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}.
69
+ * 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).
70
70
  * The files are internally loaded via {@link FileLoader}.
71
71
  *
72
72
  * ```js
@@ -125,7 +125,7 @@ class ObjectLoader extends Loader {
125
125
 
126
126
  if ( onError !== undefined ) onError( error );
127
127
 
128
- console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message );
128
+ error( 'ObjectLoader: Can\'t parse ' + url + '.', error.message );
129
129
 
130
130
  return;
131
131
 
@@ -137,7 +137,7 @@ class ObjectLoader extends Loader {
137
137
 
138
138
  if ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\'t load ' + url ) );
139
139
 
140
- console.error( 'THREE.ObjectLoader: Can\'t load ' + url );
140
+ error( 'ObjectLoader: Can\'t load ' + url );
141
141
  return;
142
142
 
143
143
  }
@@ -347,7 +347,7 @@ class ObjectLoader extends Loader {
347
347
 
348
348
  } else {
349
349
 
350
- console.warn( `THREE.ObjectLoader: Unsupported geometry type "${ data.type }"` );
350
+ warn( `ObjectLoader: Unsupported geometry type "${ data.type }"` );
351
351
 
352
352
  }
353
353
 
@@ -638,7 +638,7 @@ class ObjectLoader extends Loader {
638
638
 
639
639
  if ( typeof value === 'number' ) return value;
640
640
 
641
- console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );
641
+ warn( 'ObjectLoader.parseTexture: Constant should be in numeric form.', value );
642
642
 
643
643
  return type[ value ];
644
644
 
@@ -654,13 +654,13 @@ class ObjectLoader extends Loader {
654
654
 
655
655
  if ( data.image === undefined ) {
656
656
 
657
- console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid );
657
+ warn( 'ObjectLoader: No "image" specified for', data.uuid );
658
658
 
659
659
  }
660
660
 
661
661
  if ( images[ data.image ] === undefined ) {
662
662
 
663
- console.warn( 'THREE.ObjectLoader: Undefined image', data.image );
663
+ warn( 'ObjectLoader: Undefined image', data.image );
664
664
 
665
665
  }
666
666
 
@@ -748,7 +748,7 @@ class ObjectLoader extends Loader {
748
748
 
749
749
  if ( geometries[ name ] === undefined ) {
750
750
 
751
- console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
751
+ warn( 'ObjectLoader: Undefined geometry', name );
752
752
 
753
753
  }
754
754
 
@@ -770,7 +770,7 @@ class ObjectLoader extends Loader {
770
770
 
771
771
  if ( materials[ uuid ] === undefined ) {
772
772
 
773
- console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
773
+ warn( 'ObjectLoader: Undefined material', uuid );
774
774
 
775
775
  }
776
776
 
@@ -784,7 +784,7 @@ class ObjectLoader extends Loader {
784
784
 
785
785
  if ( materials[ name ] === undefined ) {
786
786
 
787
- console.warn( 'THREE.ObjectLoader: Undefined material', name );
787
+ warn( 'ObjectLoader: Undefined material', name );
788
788
 
789
789
  }
790
790
 
@@ -796,7 +796,7 @@ class ObjectLoader extends Loader {
796
796
 
797
797
  if ( textures[ uuid ] === undefined ) {
798
798
 
799
- console.warn( 'THREE.ObjectLoader: Undefined texture', uuid );
799
+ warn( 'ObjectLoader: Undefined texture', uuid );
800
800
 
801
801
  }
802
802
 
@@ -1197,7 +1197,7 @@ class ObjectLoader extends Loader {
1197
1197
 
1198
1198
  if ( skeleton === undefined ) {
1199
1199
 
1200
- console.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );
1200
+ warn( 'ObjectLoader: No skeleton found with UUID:', child.skeleton );
1201
1201
 
1202
1202
  } else {
1203
1203
 
@@ -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