super-three 0.179.0 → 0.184.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 (696) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +14522 -12207
  4. package/build/three.core.js +12005 -10954
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +2270 -1005
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +63 -18
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +16573 -7890
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +16533 -7888
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  15. package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
  16. package/examples/jsm/Addons.js +12 -4
  17. package/examples/jsm/animation/CCDIKSolver.js +8 -4
  18. package/examples/jsm/controls/ArcballControls.js +15 -12
  19. package/examples/jsm/controls/DragControls.js +9 -59
  20. package/examples/jsm/controls/FirstPersonControls.js +61 -57
  21. package/examples/jsm/controls/FlyControls.js +5 -1
  22. package/examples/jsm/controls/MapControls.js +55 -1
  23. package/examples/jsm/controls/OrbitControls.js +113 -10
  24. package/examples/jsm/controls/PointerLockControls.js +2 -10
  25. package/examples/jsm/controls/TrackballControls.js +9 -9
  26. package/examples/jsm/controls/TransformControls.js +35 -3
  27. package/examples/jsm/csm/CSM.js +2 -1
  28. package/examples/jsm/csm/CSMShadowNode.js +6 -2
  29. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  30. package/examples/jsm/effects/AsciiEffect.js +8 -8
  31. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  32. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  33. package/examples/jsm/exporters/DRACOExporter.js +2 -2
  34. package/examples/jsm/exporters/EXRExporter.js +2 -2
  35. package/examples/jsm/exporters/GLTFExporter.js +185 -34
  36. package/examples/jsm/exporters/KTX2Exporter.js +4 -2
  37. package/examples/jsm/exporters/PLYExporter.js +1 -1
  38. package/examples/jsm/exporters/USDZExporter.js +31 -5
  39. package/examples/jsm/geometries/DecalGeometry.js +3 -3
  40. package/examples/jsm/geometries/ParametricGeometry.js +1 -1
  41. package/examples/jsm/geometries/TeapotGeometry.js +2 -2
  42. package/examples/jsm/geometries/TextGeometry.js +21 -2
  43. package/examples/jsm/gpgpu/BitonicSort.js +715 -0
  44. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  45. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  46. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  47. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  48. package/examples/jsm/helpers/ViewHelper.js +110 -13
  49. package/examples/jsm/inspector/Extension.js +13 -0
  50. package/examples/jsm/inspector/Inspector.js +542 -0
  51. package/examples/jsm/inspector/RendererInspector.js +425 -0
  52. package/examples/jsm/inspector/extensions/extensions.json +6 -0
  53. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  55. package/examples/jsm/inspector/tabs/Console.js +238 -0
  56. package/examples/jsm/inspector/tabs/Memory.js +128 -0
  57. package/examples/jsm/inspector/tabs/Parameters.js +380 -0
  58. package/examples/jsm/inspector/tabs/Performance.js +268 -0
  59. package/examples/jsm/inspector/tabs/Settings.js +264 -0
  60. package/examples/jsm/inspector/tabs/Timeline.js +1611 -0
  61. package/examples/jsm/inspector/tabs/Viewer.js +268 -0
  62. package/examples/jsm/inspector/ui/Graph.js +95 -0
  63. package/examples/jsm/inspector/ui/Item.js +170 -0
  64. package/examples/jsm/inspector/ui/List.js +75 -0
  65. package/examples/jsm/inspector/ui/Profiler.js +2072 -0
  66. package/examples/jsm/inspector/ui/Style.js +1667 -0
  67. package/examples/jsm/inspector/ui/Tab.js +265 -0
  68. package/examples/jsm/inspector/ui/Values.js +476 -0
  69. package/examples/jsm/inspector/ui/utils.js +69 -0
  70. package/examples/jsm/interaction/InteractionManager.js +226 -0
  71. package/examples/jsm/interactive/HTMLMesh.js +6 -10
  72. package/examples/jsm/interactive/InteractiveGroup.js +1 -1
  73. package/examples/jsm/interactive/SelectionBox.js +30 -0
  74. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  75. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  76. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  77. package/examples/jsm/lighting/LightProbeGrid.js +651 -0
  78. package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
  79. package/examples/jsm/lines/Line2.js +3 -3
  80. package/examples/jsm/lines/LineGeometry.js +1 -1
  81. package/examples/jsm/lines/LineMaterial.js +7 -1
  82. package/examples/jsm/lines/LineSegments2.js +2 -2
  83. package/examples/jsm/lines/Wireframe.js +2 -2
  84. package/examples/jsm/lines/WireframeGeometry2.js +1 -1
  85. package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
  86. package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
  87. package/examples/jsm/loaders/3DMLoader.js +5 -4
  88. package/examples/jsm/loaders/3MFLoader.js +3 -3
  89. package/examples/jsm/loaders/AMFLoader.js +2 -2
  90. package/examples/jsm/loaders/ColladaLoader.js +27 -4029
  91. package/examples/jsm/loaders/DDSLoader.js +1 -1
  92. package/examples/jsm/loaders/DRACOLoader.js +73 -22
  93. package/examples/jsm/loaders/EXRLoader.js +692 -53
  94. package/examples/jsm/loaders/FBXLoader.js +237 -39
  95. package/examples/jsm/loaders/FontLoader.js +23 -5
  96. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  97. package/examples/jsm/loaders/GLTFLoader.js +159 -185
  98. package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
  99. package/examples/jsm/loaders/HDRLoader.js +485 -0
  100. package/examples/jsm/loaders/KMZLoader.js +5 -5
  101. package/examples/jsm/loaders/KTX2Loader.js +162 -53
  102. package/examples/jsm/loaders/KTXLoader.js +2 -2
  103. package/examples/jsm/loaders/LDrawLoader.js +41 -50
  104. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  105. package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
  106. package/examples/jsm/loaders/LWOLoader.js +9 -41
  107. package/examples/jsm/loaders/MaterialXLoader.js +22 -5
  108. package/examples/jsm/loaders/NRRDLoader.js +2 -2
  109. package/examples/jsm/loaders/OBJLoader.js +1 -1
  110. package/examples/jsm/loaders/PCDLoader.js +4 -2
  111. package/examples/jsm/loaders/PDBLoader.js +1 -1
  112. package/examples/jsm/loaders/RGBELoader.js +7 -473
  113. package/examples/jsm/loaders/SVGLoader.js +4 -4
  114. package/examples/jsm/loaders/TDSLoader.js +0 -2
  115. package/examples/jsm/loaders/TGALoader.js +0 -2
  116. package/examples/jsm/loaders/TTFLoader.js +4 -4
  117. package/examples/jsm/loaders/USDLoader.js +100 -40
  118. package/examples/jsm/loaders/UltraHDRLoader.js +287 -162
  119. package/examples/jsm/loaders/VOXLoader.js +660 -117
  120. package/examples/jsm/loaders/VRMLLoader.js +79 -2
  121. package/examples/jsm/loaders/VTKLoader.js +42 -25
  122. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  123. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  124. package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
  125. package/examples/jsm/loaders/usd/USDAParser.js +450 -363
  126. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  127. package/examples/jsm/loaders/usd/USDComposer.js +4594 -0
  128. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  129. package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
  130. package/examples/jsm/math/ColorSpaces.js +19 -1
  131. package/examples/jsm/math/ConvexHull.js +3 -3
  132. package/examples/jsm/math/ImprovedNoise.js +1 -1
  133. package/examples/jsm/math/Lut.js +2 -2
  134. package/examples/jsm/math/Octree.js +131 -1
  135. package/examples/jsm/math/SimplexNoise.js +1 -1
  136. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  137. package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
  138. package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
  139. package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
  140. package/examples/jsm/misc/RollerCoaster.js +42 -4
  141. package/examples/jsm/misc/TubePainter.js +383 -40
  142. package/examples/jsm/misc/Volume.js +1 -2
  143. package/examples/jsm/misc/VolumeSlice.js +0 -1
  144. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  145. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  146. package/examples/jsm/objects/LensflareMesh.js +1 -1
  147. package/examples/jsm/objects/Reflector.js +73 -25
  148. package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
  149. package/examples/jsm/objects/Sky.js +91 -7
  150. package/examples/jsm/objects/SkyMesh.js +151 -17
  151. package/examples/jsm/objects/Water.js +7 -6
  152. package/examples/jsm/objects/Water2.js +5 -3
  153. package/examples/jsm/objects/WaterMesh.js +11 -13
  154. package/examples/jsm/physics/AmmoPhysics.js +12 -7
  155. package/examples/jsm/physics/JoltPhysics.js +10 -6
  156. package/examples/jsm/physics/RapierPhysics.js +9 -5
  157. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  158. package/examples/jsm/postprocessing/GlitchPass.js +2 -2
  159. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  160. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  161. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  162. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  163. package/examples/jsm/postprocessing/SSRPass.js +37 -8
  164. package/examples/jsm/postprocessing/UnrealBloomPass.js +56 -24
  165. package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
  166. package/examples/jsm/renderers/CSS3DRenderer.js +8 -7
  167. package/examples/jsm/renderers/Projector.js +246 -28
  168. package/examples/jsm/renderers/SVGRenderer.js +175 -61
  169. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
  170. package/examples/jsm/shaders/AfterimageShader.js +1 -1
  171. package/examples/jsm/shaders/BleachBypassShader.js +1 -1
  172. package/examples/jsm/shaders/BokehShader.js +1 -1
  173. package/examples/jsm/shaders/BokehShader2.js +1 -1
  174. package/examples/jsm/shaders/DotScreenShader.js +1 -1
  175. package/examples/jsm/shaders/FocusShader.js +1 -1
  176. package/examples/jsm/shaders/GTAOShader.js +21 -8
  177. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  178. package/examples/jsm/shaders/KaleidoShader.js +1 -1
  179. package/examples/jsm/shaders/PoissonDenoiseShader.js +8 -4
  180. package/examples/jsm/shaders/SAOShader.js +17 -4
  181. package/examples/jsm/shaders/SSAOShader.js +11 -1
  182. package/examples/jsm/shaders/SSRShader.js +7 -6
  183. package/examples/jsm/shaders/SepiaShader.js +1 -1
  184. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
  185. package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
  186. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +3 -5
  187. package/examples/jsm/shaders/VignetteShader.js +1 -1
  188. package/examples/jsm/transpiler/AST.js +44 -0
  189. package/examples/jsm/transpiler/GLSLDecoder.js +85 -25
  190. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  191. package/examples/jsm/transpiler/TSLEncoder.js +52 -10
  192. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  193. package/examples/jsm/transpiler/WGSLEncoder.js +51 -0
  194. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  195. package/examples/jsm/tsl/display/AfterImageNode.js +36 -24
  196. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  197. package/examples/jsm/tsl/display/AnamorphicNode.js +40 -5
  198. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  199. package/examples/jsm/tsl/display/BloomNode.js +23 -9
  200. package/examples/jsm/tsl/display/CRT.js +150 -0
  201. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +5 -37
  202. package/examples/jsm/tsl/display/DenoiseNode.js +3 -1
  203. package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
  204. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  205. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  206. package/examples/jsm/tsl/display/FXAANode.js +2 -2
  207. package/examples/jsm/tsl/display/GTAONode.js +59 -9
  208. package/examples/jsm/tsl/display/GaussianBlurNode.js +68 -35
  209. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  210. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  211. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  212. package/examples/jsm/tsl/display/OutlineNode.js +81 -20
  213. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  214. package/examples/jsm/tsl/display/PixelationPassNode.js +7 -6
  215. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  216. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  217. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  218. package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
  219. package/examples/jsm/tsl/display/SSGINode.js +638 -0
  220. package/examples/jsm/tsl/display/SSRNode.js +186 -69
  221. package/examples/jsm/tsl/display/SSSNode.js +490 -0
  222. package/examples/jsm/tsl/display/Shape.js +29 -0
  223. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  224. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  225. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  226. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  227. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  228. package/examples/jsm/tsl/display/TRAANode.js +381 -75
  229. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  230. package/examples/jsm/tsl/display/boxBlur.js +65 -0
  231. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  232. package/examples/jsm/tsl/display/hashBlur.js +16 -18
  233. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  234. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  235. package/examples/jsm/tsl/lighting/TiledLightsNode.js +21 -1
  236. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  237. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  238. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  239. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  240. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  241. package/examples/jsm/tsl/math/Bayer.js +53 -3
  242. package/examples/jsm/utils/BufferGeometryUtils.js +3 -4
  243. package/examples/jsm/utils/ColorUtils.js +76 -0
  244. package/examples/jsm/utils/LDrawUtils.js +1 -1
  245. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  246. package/examples/jsm/utils/ShadowMapViewerGPU.js +13 -6
  247. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  248. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  249. package/examples/jsm/webxr/OculusHandModel.js +1 -1
  250. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  251. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  252. package/examples/jsm/webxr/XRHandModelFactory.js +4 -7
  253. package/package.json +27 -38
  254. package/src/Three.Core.js +7 -3
  255. package/src/Three.TSL.js +61 -16
  256. package/src/Three.WebGPU.Nodes.js +7 -0
  257. package/src/Three.WebGPU.js +11 -0
  258. package/src/Three.js +1 -0
  259. package/src/animation/AnimationAction.js +12 -2
  260. package/src/animation/AnimationClip.js +21 -5
  261. package/src/animation/AnimationMixer.js +9 -3
  262. package/src/animation/AnimationObjectGroup.js +2 -1
  263. package/src/animation/AnimationUtils.js +1 -12
  264. package/src/animation/KeyframeTrack.js +54 -14
  265. package/src/animation/PropertyBinding.js +12 -11
  266. package/src/animation/PropertyMixer.js +4 -4
  267. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  268. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  269. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  270. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  271. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  272. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  273. package/src/audio/Audio.js +11 -10
  274. package/src/audio/AudioContext.js +2 -2
  275. package/src/audio/AudioListener.js +5 -3
  276. package/src/audio/PositionalAudio.js +1 -1
  277. package/src/cameras/Camera.js +32 -2
  278. package/src/cameras/CubeCamera.js +20 -0
  279. package/src/cameras/OrthographicCamera.js +1 -1
  280. package/src/cameras/PerspectiveCamera.js +1 -1
  281. package/src/cameras/StereoCamera.js +2 -2
  282. package/src/constants.js +100 -7
  283. package/src/core/BufferAttribute.js +13 -1
  284. package/src/core/BufferGeometry.js +24 -12
  285. package/src/core/Clock.js +7 -0
  286. package/src/core/EventDispatcher.js +1 -1
  287. package/src/core/InterleavedBuffer.js +1 -1
  288. package/src/core/InterleavedBufferAttribute.js +3 -2
  289. package/src/core/Object3D.js +55 -6
  290. package/src/core/Raycaster.js +4 -3
  291. package/src/core/RenderTarget.js +14 -5
  292. package/src/extras/Controls.js +5 -4
  293. package/src/extras/DataUtils.js +2 -1
  294. package/src/extras/Earcut.js +6 -0
  295. package/src/extras/ImageUtils.js +2 -2
  296. package/src/extras/PMREMGenerator.js +259 -57
  297. package/src/extras/TextureUtils.js +6 -1
  298. package/src/extras/core/Curve.js +2 -1
  299. package/src/extras/core/Interpolations.js +7 -1
  300. package/src/extras/core/ShapePath.js +4 -4
  301. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  302. package/src/extras/lib/earcut.js +8 -8
  303. package/src/geometries/BoxGeometry.js +1 -0
  304. package/src/geometries/CapsuleGeometry.js +1 -0
  305. package/src/geometries/CircleGeometry.js +1 -0
  306. package/src/geometries/ConeGeometry.js +1 -0
  307. package/src/geometries/CylinderGeometry.js +1 -0
  308. package/src/geometries/DodecahedronGeometry.js +1 -0
  309. package/src/geometries/ExtrudeGeometry.js +10 -8
  310. package/src/geometries/IcosahedronGeometry.js +1 -0
  311. package/src/geometries/LatheGeometry.js +1 -0
  312. package/src/geometries/OctahedronGeometry.js +1 -0
  313. package/src/geometries/PlaneGeometry.js +1 -0
  314. package/src/geometries/PolyhedronGeometry.js +1 -1
  315. package/src/geometries/RingGeometry.js +1 -0
  316. package/src/geometries/ShapeGeometry.js +1 -0
  317. package/src/geometries/SphereGeometry.js +1 -0
  318. package/src/geometries/TetrahedronGeometry.js +1 -0
  319. package/src/geometries/TorusGeometry.js +9 -3
  320. package/src/geometries/TorusKnotGeometry.js +1 -0
  321. package/src/geometries/TubeGeometry.js +1 -0
  322. package/src/helpers/CameraHelper.js +4 -1
  323. package/src/helpers/DirectionalLightHelper.js +4 -1
  324. package/src/helpers/HemisphereLightHelper.js +3 -0
  325. package/src/helpers/PointLightHelper.js +1 -25
  326. package/src/helpers/SpotLightHelper.js +3 -0
  327. package/src/lights/DirectionalLight.js +13 -0
  328. package/src/lights/HemisphereLight.js +10 -0
  329. package/src/lights/Light.js +1 -11
  330. package/src/lights/LightProbe.js +0 -15
  331. package/src/lights/LightShadow.js +15 -6
  332. package/src/lights/PointLight.js +15 -0
  333. package/src/lights/PointLightShadow.js +0 -86
  334. package/src/lights/SpotLight.js +22 -1
  335. package/src/lights/webgpu/IESSpotLight.js +2 -1
  336. package/src/lights/webgpu/ProjectorLight.js +1 -1
  337. package/src/loaders/AnimationLoader.js +2 -1
  338. package/src/loaders/AudioLoader.js +13 -2
  339. package/src/loaders/BufferGeometryLoader.js +2 -2
  340. package/src/loaders/Cache.js +30 -2
  341. package/src/loaders/DataTextureLoader.js +6 -4
  342. package/src/loaders/FileLoader.js +4 -4
  343. package/src/loaders/ImageBitmapLoader.js +17 -13
  344. package/src/loaders/ImageLoader.js +1 -1
  345. package/src/loaders/Loader.js +9 -3
  346. package/src/loaders/LoadingManager.js +25 -3
  347. package/src/loaders/MaterialLoader.js +6 -4
  348. package/src/loaders/ObjectLoader.js +57 -17
  349. package/src/loaders/TextureLoader.js +1 -1
  350. package/src/loaders/nodes/NodeLoader.js +5 -4
  351. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  352. package/src/materials/Material.js +18 -3
  353. package/src/materials/MeshBasicMaterial.js +1 -0
  354. package/src/materials/MeshDepthMaterial.js +1 -0
  355. package/src/materials/MeshDistanceMaterial.js +1 -1
  356. package/src/materials/MeshLambertMaterial.js +11 -1
  357. package/src/materials/MeshMatcapMaterial.js +22 -0
  358. package/src/materials/MeshNormalMaterial.js +1 -0
  359. package/src/materials/MeshPhongMaterial.js +11 -1
  360. package/src/materials/MeshPhysicalMaterial.js +2 -1
  361. package/src/materials/MeshStandardMaterial.js +8 -7
  362. package/src/materials/MeshToonMaterial.js +2 -1
  363. package/src/materials/PointsMaterial.js +1 -1
  364. package/src/materials/ShaderMaterial.js +22 -3
  365. package/src/materials/nodes/Line2NodeMaterial.js +36 -9
  366. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +5 -2
  367. package/src/materials/nodes/MeshSSSNodeMaterial.js +1 -1
  368. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -4
  369. package/src/materials/nodes/NodeMaterial.js +95 -35
  370. package/src/materials/nodes/PointsNodeMaterial.js +81 -28
  371. package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
  372. package/src/materials/nodes/manager/NodeMaterialObserver.js +194 -88
  373. package/src/math/Color.js +6 -5
  374. package/src/math/ColorManagement.js +9 -3
  375. package/src/math/Cylindrical.js +1 -1
  376. package/src/math/Euler.js +2 -1
  377. package/src/math/Line3.js +6 -5
  378. package/src/math/MathUtils.js +23 -21
  379. package/src/math/Matrix2.js +14 -10
  380. package/src/math/Matrix3.js +15 -11
  381. package/src/math/Matrix4.js +94 -81
  382. package/src/math/Plane.js +5 -4
  383. package/src/math/Quaternion.js +60 -84
  384. package/src/math/Sphere.js +1 -1
  385. package/src/math/Spherical.js +1 -1
  386. package/src/math/Triangle.js +1 -1
  387. package/src/math/Vector2.js +11 -7
  388. package/src/math/Vector3.js +15 -13
  389. package/src/math/Vector4.js +13 -9
  390. package/src/math/interpolants/BezierInterpolant.js +108 -0
  391. package/src/nodes/Nodes.js +86 -65
  392. package/src/nodes/TSL.js +11 -8
  393. package/src/nodes/accessors/Arrays.js +1 -1
  394. package/src/nodes/accessors/BatchNode.js +10 -10
  395. package/src/nodes/accessors/Bitangent.js +5 -5
  396. package/src/nodes/accessors/BufferAttributeNode.js +107 -15
  397. package/src/nodes/accessors/BufferNode.js +30 -3
  398. package/src/nodes/accessors/Camera.js +260 -13
  399. package/src/nodes/accessors/ClippingNode.js +10 -9
  400. package/src/nodes/accessors/CubeTextureNode.js +32 -6
  401. package/src/nodes/accessors/InstanceNode.js +164 -39
  402. package/src/nodes/accessors/Lights.js +10 -0
  403. package/src/nodes/accessors/MaterialNode.js +9 -1
  404. package/src/nodes/accessors/MaterialProperties.js +2 -5
  405. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  406. package/src/nodes/accessors/ModelNode.js +1 -1
  407. package/src/nodes/accessors/Normal.js +16 -15
  408. package/src/nodes/accessors/Object3DNode.js +2 -2
  409. package/src/nodes/accessors/Position.js +51 -3
  410. package/src/nodes/accessors/ReferenceBaseNode.js +7 -7
  411. package/src/nodes/accessors/ReferenceNode.js +11 -10
  412. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  413. package/src/nodes/accessors/SceneProperties.js +47 -0
  414. package/src/nodes/accessors/SkinningNode.js +27 -26
  415. package/src/nodes/accessors/StorageBufferNode.js +14 -24
  416. package/src/nodes/accessors/StorageTextureNode.js +62 -9
  417. package/src/nodes/accessors/Tangent.js +4 -14
  418. package/src/nodes/accessors/Texture3DNode.js +41 -31
  419. package/src/nodes/accessors/TextureNode.js +193 -63
  420. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  421. package/src/nodes/accessors/UserDataNode.js +1 -2
  422. package/src/nodes/accessors/VertexColorNode.js +1 -2
  423. package/src/nodes/code/FunctionCallNode.js +25 -5
  424. package/src/nodes/code/FunctionNode.js +25 -3
  425. package/src/nodes/core/ArrayNode.js +22 -2
  426. package/src/nodes/core/AssignNode.js +6 -5
  427. package/src/nodes/core/AttributeNode.js +5 -4
  428. package/src/nodes/core/BypassNode.js +1 -1
  429. package/src/nodes/core/ContextNode.js +133 -15
  430. package/src/nodes/core/IndexNode.js +4 -3
  431. package/src/nodes/core/InputNode.js +3 -2
  432. package/src/nodes/core/InspectorNode.js +128 -0
  433. package/src/nodes/core/{CacheNode.js → IsolateNode.js} +41 -8
  434. package/src/nodes/core/MRTNode.js +48 -2
  435. package/src/nodes/core/Node.js +264 -46
  436. package/src/nodes/core/NodeBuilder.js +453 -87
  437. package/src/nodes/core/NodeError.js +28 -0
  438. package/src/nodes/core/NodeFrame.js +31 -23
  439. package/src/nodes/core/NodeFunction.js +2 -1
  440. package/src/nodes/core/NodeParser.js +2 -1
  441. package/src/nodes/core/NodeUniform.js +1 -1
  442. package/src/nodes/core/NodeUtils.js +25 -97
  443. package/src/nodes/core/OutputStructNode.js +12 -10
  444. package/src/nodes/core/ParameterNode.js +34 -3
  445. package/src/nodes/core/PropertyNode.js +26 -3
  446. package/src/nodes/core/StackNode.js +99 -23
  447. package/src/nodes/core/StackTrace.js +139 -0
  448. package/src/nodes/core/StructNode.js +22 -8
  449. package/src/nodes/core/StructTypeNode.js +13 -18
  450. package/src/nodes/core/SubBuildNode.js +4 -4
  451. package/src/nodes/core/UniformGroupNode.js +36 -6
  452. package/src/nodes/core/UniformNode.js +37 -13
  453. package/src/nodes/core/VarNode.js +96 -34
  454. package/src/nodes/core/VaryingNode.js +2 -18
  455. package/src/nodes/display/BlendModes.js +0 -63
  456. package/src/nodes/display/BumpMapNode.js +1 -1
  457. package/src/nodes/display/ColorAdjustment.js +18 -1
  458. package/src/nodes/display/ColorSpaceNode.js +3 -3
  459. package/src/nodes/display/FrontFacingNode.js +4 -8
  460. package/src/nodes/display/NormalMapNode.js +41 -5
  461. package/src/nodes/display/PassNode.js +175 -25
  462. package/src/nodes/display/RenderOutputNode.js +35 -9
  463. package/src/nodes/display/ScreenNode.js +47 -15
  464. package/src/nodes/display/ToneMappingNode.js +32 -5
  465. package/src/nodes/display/ToonOutlinePassNode.js +10 -2
  466. package/src/nodes/display/ViewportDepthNode.js +52 -4
  467. package/src/nodes/display/ViewportDepthTextureNode.js +14 -6
  468. package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
  469. package/src/nodes/display/ViewportTextureNode.js +72 -14
  470. package/src/nodes/fog/Fog.js +18 -34
  471. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
  472. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  473. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  474. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  475. package/src/nodes/functions/BasicLightingModel.js +2 -1
  476. package/src/nodes/functions/PhysicalLightingModel.js +128 -46
  477. package/src/nodes/functions/VolumetricLightingModel.js +5 -5
  478. package/src/nodes/geometry/RangeNode.js +44 -6
  479. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  480. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  481. package/src/nodes/gpgpu/ComputeBuiltinNode.js +4 -4
  482. package/src/nodes/gpgpu/ComputeNode.js +76 -38
  483. package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
  484. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -4
  485. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  486. package/src/nodes/lighting/EnvironmentNode.js +34 -9
  487. package/src/nodes/lighting/LightsNode.js +10 -32
  488. package/src/nodes/lighting/PointShadowNode.js +167 -148
  489. package/src/nodes/lighting/ShadowFilterNode.js +55 -65
  490. package/src/nodes/lighting/ShadowNode.js +189 -44
  491. package/src/nodes/math/BitcastNode.js +156 -0
  492. package/src/nodes/math/BitcountNode.js +433 -0
  493. package/src/nodes/math/ConditionalNode.js +25 -8
  494. package/src/nodes/math/MathNode.js +98 -57
  495. package/src/nodes/math/OperatorNode.js +8 -5
  496. package/src/nodes/math/PackFloatNode.js +98 -0
  497. package/src/nodes/math/UnpackFloatNode.js +96 -0
  498. package/src/nodes/pmrem/PMREMNode.js +1 -1
  499. package/src/nodes/pmrem/PMREMUtils.js +111 -2
  500. package/src/nodes/shapes/Shapes.js +1 -1
  501. package/src/nodes/tsl/TSLBase.js +6 -3
  502. package/src/nodes/tsl/TSLCore.js +488 -166
  503. package/src/nodes/utils/ArrayElementNode.js +14 -1
  504. package/src/nodes/utils/ConvertNode.js +1 -1
  505. package/src/nodes/utils/DebugNode.js +14 -13
  506. package/src/nodes/utils/EventNode.js +67 -2
  507. package/src/nodes/utils/FlipNode.js +1 -1
  508. package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
  509. package/src/nodes/utils/JoinNode.js +7 -4
  510. package/src/nodes/utils/LoopNode.js +20 -24
  511. package/src/nodes/utils/MemberNode.js +60 -8
  512. package/src/nodes/utils/Packing.js +13 -1
  513. package/src/nodes/utils/PostProcessingUtils.js +60 -1
  514. package/src/nodes/utils/RTTNode.js +14 -4
  515. package/src/nodes/utils/ReflectorNode.js +61 -11
  516. package/src/nodes/utils/Remap.js +48 -0
  517. package/src/nodes/utils/RotateNode.js +1 -1
  518. package/src/nodes/utils/SampleNode.js +12 -2
  519. package/src/nodes/utils/SetNode.js +1 -1
  520. package/src/nodes/utils/SplitNode.js +12 -1
  521. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  522. package/src/nodes/utils/Timer.js +0 -47
  523. package/src/nodes/utils/UVUtils.js +28 -0
  524. package/src/objects/BatchedMesh.js +46 -18
  525. package/src/objects/InstancedMesh.js +30 -3
  526. package/src/objects/LOD.js +1 -1
  527. package/src/objects/Line.js +3 -2
  528. package/src/objects/LineSegments.js +2 -1
  529. package/src/objects/Mesh.js +1 -1
  530. package/src/objects/Points.js +1 -1
  531. package/src/objects/Skeleton.js +12 -2
  532. package/src/objects/SkinnedMesh.js +29 -10
  533. package/src/objects/Sprite.js +4 -3
  534. package/src/renderers/WebGLRenderer.js +372 -179
  535. package/src/renderers/common/Animation.js +16 -4
  536. package/src/renderers/common/Attributes.js +16 -2
  537. package/src/renderers/common/Backend.js +137 -35
  538. package/src/renderers/common/Background.js +28 -14
  539. package/src/renderers/common/BindGroup.js +1 -16
  540. package/src/renderers/common/Binding.js +11 -0
  541. package/src/renderers/common/Bindings.js +83 -12
  542. package/src/renderers/common/BlendMode.js +143 -0
  543. package/src/renderers/common/Buffer.js +40 -0
  544. package/src/renderers/common/BundleGroup.js +1 -1
  545. package/src/renderers/common/CanvasTarget.js +341 -0
  546. package/src/renderers/common/ChainMap.js +30 -6
  547. package/src/renderers/common/ComputePipeline.js +1 -1
  548. package/src/renderers/common/CubeRenderTarget.js +51 -7
  549. package/src/renderers/common/DataMap.js +1 -1
  550. package/src/renderers/common/Geometries.js +55 -3
  551. package/src/renderers/common/Info.js +337 -6
  552. package/src/renderers/common/InspectorBase.js +151 -0
  553. package/src/renderers/common/Lighting.js +5 -21
  554. package/src/renderers/common/Pipelines.js +41 -8
  555. package/src/renderers/common/PostProcessing.js +9 -226
  556. package/src/renderers/common/QuadMesh.js +7 -1
  557. package/src/renderers/common/ReadbackBuffer.js +78 -0
  558. package/src/renderers/common/RenderBundle.js +3 -1
  559. package/src/renderers/common/RenderBundles.js +7 -3
  560. package/src/renderers/common/RenderContext.js +18 -2
  561. package/src/renderers/common/RenderContexts.js +33 -49
  562. package/src/renderers/common/RenderList.js +7 -3
  563. package/src/renderers/common/RenderLists.js +2 -1
  564. package/src/renderers/common/RenderObject.js +32 -6
  565. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  566. package/src/renderers/common/RenderObjects.js +22 -6
  567. package/src/renderers/common/RenderPipeline.js +232 -17
  568. package/src/renderers/common/Renderer.js +927 -335
  569. package/src/renderers/common/RendererUtils.js +9 -0
  570. package/src/renderers/common/SampledTexture.js +9 -1
  571. package/src/renderers/common/Sampler.js +52 -14
  572. package/src/renderers/common/StorageBuffer.js +13 -1
  573. package/src/renderers/common/StorageTexture.js +9 -1
  574. package/src/renderers/common/Textures.js +208 -47
  575. package/src/renderers/common/TimestampQueryPool.js +70 -6
  576. package/src/renderers/common/Uniform.js +8 -0
  577. package/src/renderers/common/UniformsGroup.js +64 -2
  578. package/src/renderers/common/XRManager.js +79 -51
  579. package/src/renderers/common/extras/PMREMGenerator.js +176 -79
  580. package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
  581. package/src/renderers/common/nodes/NodeLibrary.js +9 -7
  582. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +260 -95
  583. package/src/renderers/common/nodes/NodeSampler.js +13 -1
  584. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  585. package/src/renderers/common/nodes/NodeUniformBuffer.js +52 -0
  586. package/src/renderers/shaders/DFGLUTData.js +49 -0
  587. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  588. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  589. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  590. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  591. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  592. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
  593. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -2
  594. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +8 -12
  595. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
  596. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  597. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  598. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  599. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  600. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +2 -0
  601. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  602. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +152 -59
  603. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
  604. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  605. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
  606. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
  607. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  608. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  609. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  610. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +221 -190
  611. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  612. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  613. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  614. package/src/renderers/shaders/ShaderChunk.js +5 -3
  615. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  616. package/src/renderers/shaders/ShaderLib/depth.glsl.js +4 -1
  617. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +1 -2
  618. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  619. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  620. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  621. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  622. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  623. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  624. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  625. package/src/renderers/shaders/ShaderLib.js +7 -6
  626. package/src/renderers/shaders/UniformsLib.js +8 -5
  627. package/src/renderers/shaders/UniformsUtils.js +52 -9
  628. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  629. package/src/renderers/webgl/WebGLBackground.js +15 -15
  630. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  631. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  632. package/src/renderers/webgl/WebGLCapabilities.js +11 -5
  633. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  634. package/src/renderers/webgl/WebGLExtensions.js +2 -25
  635. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  636. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  637. package/src/renderers/webgl/WebGLInfo.js +3 -1
  638. package/src/renderers/webgl/WebGLLights.js +18 -1
  639. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  640. package/src/renderers/webgl/WebGLObjects.js +3 -1
  641. package/src/renderers/webgl/WebGLOutput.js +270 -0
  642. package/src/renderers/webgl/WebGLProgram.js +63 -122
  643. package/src/renderers/webgl/WebGLPrograms.js +65 -52
  644. package/src/renderers/webgl/WebGLRenderLists.js +15 -0
  645. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  646. package/src/renderers/webgl/WebGLShadowMap.js +191 -26
  647. package/src/renderers/webgl/WebGLState.js +79 -40
  648. package/src/renderers/webgl/WebGLTextures.js +234 -68
  649. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  650. package/src/renderers/webgl/WebGLUniformsGroups.js +24 -3
  651. package/src/renderers/webgl/WebGLUtils.js +8 -3
  652. package/src/renderers/webgl-fallback/WebGLBackend.js +438 -235
  653. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  654. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +339 -84
  655. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  656. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  657. package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
  658. package/src/renderers/webgl-fallback/utils/WebGLState.js +229 -11
  659. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +237 -72
  660. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +56 -27
  661. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +8 -3
  662. package/src/renderers/webgpu/WebGPUBackend.js +403 -253
  663. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
  664. package/src/renderers/webgpu/WebGPURenderer.js +5 -3
  665. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +491 -123
  666. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +108 -34
  667. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +360 -201
  668. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  669. package/src/renderers/webgpu/utils/WebGPUConstants.js +17 -2
  670. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +111 -54
  671. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +155 -205
  672. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +407 -149
  673. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +36 -13
  674. package/src/renderers/webgpu/utils/WebGPUUtils.js +55 -13
  675. package/src/renderers/webxr/WebXRController.js +12 -0
  676. package/src/renderers/webxr/WebXRManager.js +45 -29
  677. package/src/textures/CubeDepthTexture.js +76 -0
  678. package/src/textures/ExternalTexture.js +15 -4
  679. package/src/textures/HTMLTexture.js +74 -0
  680. package/src/textures/Source.js +5 -4
  681. package/src/textures/Texture.js +19 -7
  682. package/src/textures/VideoTexture.js +2 -3
  683. package/src/utils.js +344 -3
  684. package/examples/jsm/loaders/RGBMLoader.js +0 -1148
  685. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  686. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  687. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  688. package/src/nodes/accessors/SceneNode.js +0 -144
  689. package/src/nodes/code/ScriptableNode.js +0 -726
  690. package/src/nodes/code/ScriptableValueNode.js +0 -253
  691. package/src/nodes/display/PosterizeNode.js +0 -65
  692. package/src/nodes/functions/BSDF/DFGApprox.js +0 -30
  693. package/src/nodes/utils/RemapNode.js +0 -125
  694. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  695. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  696. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -19,6 +19,7 @@ import {
19
19
  } from '../constants.js';
20
20
  import { InstancedBufferAttribute } from '../core/InstancedBufferAttribute.js';
21
21
  import { Color } from '../math/Color.js';
22
+ import { Vector3 } from '../math/Vector3.js';
22
23
  import { Object3D } from '../core/Object3D.js';
23
24
  import { Group } from '../objects/Group.js';
24
25
  import { InstancedMesh } from '../objects/InstancedMesh.js';
@@ -59,12 +60,15 @@ import { BufferGeometryLoader } from './BufferGeometryLoader.js';
59
60
  import { Loader } from './Loader.js';
60
61
  import { FileLoader } from './FileLoader.js';
61
62
  import * as Geometries from '../geometries/Geometries.js';
62
- import { getTypedArray } from '../utils.js';
63
+ import { getTypedArray, error, warn } from '../utils.js';
63
64
  import { Box3 } from '../math/Box3.js';
64
65
  import { Sphere } from '../math/Sphere.js';
66
+ import { SphericalHarmonics3 } from '../math/SphericalHarmonics3.js';
67
+
68
+ const _customGeometries = {};
65
69
 
66
70
  /**
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}.
71
+ * 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
72
  * The files are internally loaded via {@link FileLoader}.
69
73
  *
70
74
  * ```js
@@ -119,11 +123,11 @@ class ObjectLoader extends Loader {
119
123
 
120
124
  json = JSON.parse( text );
121
125
 
122
- } catch ( error ) {
126
+ } catch ( e ) {
123
127
 
124
- if ( onError !== undefined ) onError( error );
128
+ if ( onError !== undefined ) onError( e );
125
129
 
126
- console.error( 'THREE:ObjectLoader: Can\'t parse ' + url + '.', error.message );
130
+ error( 'ObjectLoader: Can\'t parse ' + url + '.', e.message );
127
131
 
128
132
  return;
129
133
 
@@ -135,7 +139,7 @@ class ObjectLoader extends Loader {
135
139
 
136
140
  if ( onError !== undefined ) onError( new Error( 'THREE.ObjectLoader: Can\'t load ' + url ) );
137
141
 
138
- console.error( 'THREE.ObjectLoader: Can\'t load ' + url );
142
+ error( 'ObjectLoader: Can\'t load ' + url );
139
143
  return;
140
144
 
141
145
  }
@@ -168,7 +172,17 @@ class ObjectLoader extends Loader {
168
172
 
169
173
  const text = await loader.loadAsync( url, onProgress );
170
174
 
171
- const json = JSON.parse( text );
175
+ let json;
176
+
177
+ try {
178
+
179
+ json = JSON.parse( text );
180
+
181
+ } catch ( e ) {
182
+
183
+ throw new Error( 'ObjectLoader: Can\'t parse ' + url + '. ' + e.message );
184
+
185
+ }
172
186
 
173
187
  const metadata = json.metadata;
174
188
 
@@ -263,6 +277,20 @@ class ObjectLoader extends Loader {
263
277
 
264
278
  }
265
279
 
280
+ /**
281
+ * Registers the given geometry at the internal
282
+ * geometry library.
283
+ *
284
+ * @static
285
+ * @param {string} type - The geometry type.
286
+ * @param {BufferGeometry.constructor} geometryClass - The geometry class.
287
+ */
288
+ static registerGeometry( type, geometryClass ) {
289
+
290
+ _customGeometries[ type ] = geometryClass;
291
+
292
+ }
293
+
266
294
  // internals
267
295
 
268
296
  parseShapes( json ) {
@@ -358,9 +386,13 @@ class ObjectLoader extends Loader {
358
386
 
359
387
  geometry = Geometries[ data.type ].fromJSON( data, shapes );
360
388
 
389
+ } else if ( data.type in _customGeometries ) {
390
+
391
+ geometry = _customGeometries[ data.type ].fromJSON( data, shapes );
392
+
361
393
  } else {
362
394
 
363
- console.warn( `THREE.ObjectLoader: Unsupported geometry type "${ data.type }"` );
395
+ warn( `ObjectLoader: Unknown geometry type "${ data.type }". Use .registerGeometry() before starting the deserialization process.` );
364
396
 
365
397
  }
366
398
 
@@ -651,7 +683,7 @@ class ObjectLoader extends Loader {
651
683
 
652
684
  if ( typeof value === 'number' ) return value;
653
685
 
654
- console.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );
686
+ warn( 'ObjectLoader.parseTexture: Constant should be in numeric form.', value );
655
687
 
656
688
  return type[ value ];
657
689
 
@@ -667,13 +699,13 @@ class ObjectLoader extends Loader {
667
699
 
668
700
  if ( data.image === undefined ) {
669
701
 
670
- console.warn( 'THREE.ObjectLoader: No "image" specified for', data.uuid );
702
+ warn( 'ObjectLoader: No "image" specified for', data.uuid );
671
703
 
672
704
  }
673
705
 
674
706
  if ( images[ data.image ] === undefined ) {
675
707
 
676
- console.warn( 'THREE.ObjectLoader: Undefined image', data.image );
708
+ warn( 'ObjectLoader: Undefined image', data.image );
677
709
 
678
710
  }
679
711
 
@@ -740,6 +772,7 @@ class ObjectLoader extends Loader {
740
772
  if ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;
741
773
  if ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;
742
774
  if ( data.compareFunction !== undefined ) texture.compareFunction = data.compareFunction;
775
+ if ( data.normalized !== undefined ) texture.normalized = data.normalized;
743
776
 
744
777
  if ( data.userData !== undefined ) texture.userData = data.userData;
745
778
 
@@ -761,7 +794,7 @@ class ObjectLoader extends Loader {
761
794
 
762
795
  if ( geometries[ name ] === undefined ) {
763
796
 
764
- console.warn( 'THREE.ObjectLoader: Undefined geometry', name );
797
+ warn( 'ObjectLoader: Undefined geometry', name );
765
798
 
766
799
  }
767
800
 
@@ -783,7 +816,7 @@ class ObjectLoader extends Loader {
783
816
 
784
817
  if ( materials[ uuid ] === undefined ) {
785
818
 
786
- console.warn( 'THREE.ObjectLoader: Undefined material', uuid );
819
+ warn( 'ObjectLoader: Undefined material', uuid );
787
820
 
788
821
  }
789
822
 
@@ -797,7 +830,7 @@ class ObjectLoader extends Loader {
797
830
 
798
831
  if ( materials[ name ] === undefined ) {
799
832
 
800
- console.warn( 'THREE.ObjectLoader: Undefined material', name );
833
+ warn( 'ObjectLoader: Undefined material', name );
801
834
 
802
835
  }
803
836
 
@@ -809,7 +842,7 @@ class ObjectLoader extends Loader {
809
842
 
810
843
  if ( textures[ uuid ] === undefined ) {
811
844
 
812
- console.warn( 'THREE.ObjectLoader: Undefined texture', uuid );
845
+ warn( 'ObjectLoader: Undefined texture', uuid );
813
846
 
814
847
  }
815
848
 
@@ -935,7 +968,8 @@ class ObjectLoader extends Loader {
935
968
 
936
969
  case 'LightProbe':
937
970
 
938
- object = new LightProbe().fromJSON( data );
971
+ const sh = new SphericalHarmonics3().fromArray( data.sh );
972
+ object = new LightProbe( sh, data.intensity );
939
973
 
940
974
  break;
941
975
 
@@ -1127,6 +1161,11 @@ class ObjectLoader extends Loader {
1127
1161
 
1128
1162
  if ( data.up !== undefined ) object.up.fromArray( data.up );
1129
1163
 
1164
+ if ( data.pivot !== undefined ) object.pivot = new Vector3().fromArray( data.pivot );
1165
+
1166
+ if ( data.morphTargetDictionary !== undefined ) object.morphTargetDictionary = Object.assign( {}, data.morphTargetDictionary );
1167
+ if ( data.morphTargetInfluences !== undefined ) object.morphTargetInfluences = data.morphTargetInfluences.slice();
1168
+
1130
1169
  if ( data.castShadow !== undefined ) object.castShadow = data.castShadow;
1131
1170
  if ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;
1132
1171
 
@@ -1144,6 +1183,7 @@ class ObjectLoader extends Loader {
1144
1183
  if ( data.visible !== undefined ) object.visible = data.visible;
1145
1184
  if ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;
1146
1185
  if ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;
1186
+ if ( data.static !== undefined ) object.static = data.static;
1147
1187
  if ( data.userData !== undefined ) object.userData = data.userData;
1148
1188
  if ( data.layers !== undefined ) object.layers.mask = data.layers;
1149
1189
 
@@ -1210,7 +1250,7 @@ class ObjectLoader extends Loader {
1210
1250
 
1211
1251
  if ( skeleton === undefined ) {
1212
1252
 
1213
- console.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );
1253
+ warn( 'ObjectLoader: No skeleton found with UUID:', child.skeleton );
1214
1254
 
1215
1255
  } else {
1216
1256
 
@@ -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
  */
@@ -1,7 +1,8 @@
1
- import { nodeObject, float } from '../../nodes/tsl/TSLBase.js';
1
+ import { 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,12 +180,12 @@ 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
  }
186
187
 
187
- return nodeObject( new this.nodes[ type ]() );
188
+ return new this.nodes[ type ]();
188
189
 
189
190
  }
190
191
 
@@ -89,6 +89,24 @@ class NodeObjectLoader extends ObjectLoader {
89
89
 
90
90
  }
91
91
 
92
+ /**
93
+ * Async version of {@link NodeObjectLoader#parse}.
94
+ *
95
+ * @param {Object} json - The JSON definition
96
+ * @return {Promise<Object3D>} A Promise that resolves with the parsed 3D object.
97
+ */
98
+ async parseAsync( json ) {
99
+
100
+ this._nodesJSON = json.nodes;
101
+
102
+ const data = await super.parseAsync( json );
103
+
104
+ this._nodesJSON = null; // dispose
105
+
106
+ return data;
107
+
108
+ }
109
+
92
110
  /**
93
111
  * Parses the node objects from the given JSON and textures.
94
112
  *
@@ -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;
@@ -819,6 +832,7 @@ class Material extends EventDispatcher {
819
832
  if ( this.alphaToCoverage === true ) data.alphaToCoverage = true;
820
833
  if ( this.premultipliedAlpha === true ) data.premultipliedAlpha = true;
821
834
  if ( this.forceSinglePass === true ) data.forceSinglePass = true;
835
+ if ( this.allowOverride === false ) data.allowOverride = false;
822
836
 
823
837
  if ( this.wireframe === true ) data.wireframe = true;
824
838
  if ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;
@@ -954,6 +968,7 @@ class Material extends EventDispatcher {
954
968
  this.alphaToCoverage = source.alphaToCoverage;
955
969
  this.premultipliedAlpha = source.premultipliedAlpha;
956
970
  this.forceSinglePass = source.forceSinglePass;
971
+ this.allowOverride = source.allowOverride;
957
972
 
958
973
  this.visible = source.visible;
959
974
 
@@ -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
 
@@ -7,7 +7,7 @@ import { Material } from './Material.js';
7
7
  * Can also be used to customize the shadow casting of an object by assigning
8
8
  * an instance of `MeshDistanceMaterial` to {@link Object3D#customDistanceMaterial}.
9
9
  * The following examples demonstrates this approach in order to ensure
10
- * transparent parts of objects do no cast shadows.
10
+ * transparent parts of objects do not cast shadows.
11
11
  *
12
12
  * @augments Material
13
13
  */
@@ -7,7 +7,7 @@ import { Euler } from '../math/Euler.js';
7
7
  /**
8
8
  * A material for non-shiny surfaces, without specular highlights.
9
9
  *
10
- * The material uses a non-physically based [Lambertian]{@link https://en.wikipedia.org/wiki/Lambertian_reflectance}
10
+ * The material uses a non-physically based [Lambertian](https://en.wikipedia.org/wiki/Lambertian_reflectance)
11
11
  * model for calculating reflectance. This can simulate some surfaces (such
12
12
  * as untreated wood or stone) well, but cannot simulate shiny surfaces with
13
13
  * specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment
@@ -19,6 +19,7 @@ import { Euler } from '../math/Euler.js';
19
19
  * {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy.
20
20
  *
21
21
  * @augments Material
22
+ * @demo scenes/material-browser.html#MeshLambertMaterial
22
23
  */
23
24
  class MeshLambertMaterial extends Material {
24
25
 
@@ -266,6 +267,14 @@ class MeshLambertMaterial extends Material {
266
267
  */
267
268
  this.reflectivity = 1;
268
269
 
270
+ /**
271
+ * Scales the effect of the environment map by multiplying its color.
272
+ *
273
+ * @type {number}
274
+ * @default 1
275
+ */
276
+ this.envMapIntensity = 1.0;
277
+
269
278
  /**
270
279
  * The index of refraction (IOR) of air (approximately 1) divided by the
271
280
  * index of refraction of the material. It is used with environment mapping
@@ -372,6 +381,7 @@ class MeshLambertMaterial extends Material {
372
381
  this.envMapRotation.copy( source.envMapRotation );
373
382
  this.combine = source.combine;
374
383
  this.reflectivity = source.reflectivity;
384
+ this.envMapIntensity = source.envMapIntensity;
375
385
  this.refractionRatio = source.refractionRatio;
376
386
 
377
387
  this.wireframe = source.wireframe;
@@ -13,6 +13,7 @@ import { Color } from '../math/Color.js';
13
13
  * shadows.
14
14
  *
15
15
  * @augments Material
16
+ * @demo scenes/material-browser.html#MeshMatcapMaterial
16
17
  */
17
18
  class MeshMatcapMaterial extends Material {
18
19
 
@@ -164,6 +165,24 @@ class MeshMatcapMaterial extends Material {
164
165
  */
165
166
  this.alphaMap = null;
166
167
 
168
+ /**
169
+ * Renders the geometry as a wireframe.
170
+ *
171
+ * @type {boolean}
172
+ * @default false
173
+ */
174
+ this.wireframe = false;
175
+
176
+ /**
177
+ * Controls the thickness of the wireframe.
178
+ *
179
+ * Can only be used with {@link SVGRenderer}.
180
+ *
181
+ * @type {number}
182
+ * @default 1
183
+ */
184
+ this.wireframeLinewidth = 1;
185
+
167
186
  /**
168
187
  * Whether the material is rendered with flat shading or not.
169
188
  *
@@ -210,6 +229,9 @@ class MeshMatcapMaterial extends Material {
210
229
 
211
230
  this.alphaMap = source.alphaMap;
212
231
 
232
+ this.wireframe = source.wireframe;
233
+ this.wireframeLinewidth = source.wireframeLinewidth;
234
+
213
235
  this.flatShading = source.flatShading;
214
236
 
215
237
  this.fog = source.fog;
@@ -6,6 +6,7 @@ import { Vector2 } from '../math/Vector2.js';
6
6
  * A material that maps the normal vectors to RGB colors.
7
7
  *
8
8
  * @augments Material
9
+ * @demo scenes/material-browser.html#MeshNormalMaterial
9
10
  */
10
11
  class MeshNormalMaterial extends Material {
11
12
 
@@ -7,7 +7,7 @@ import { Euler } from '../math/Euler.js';
7
7
  /**
8
8
  * A material for shiny surfaces with specular highlights.
9
9
  *
10
- * The material uses a non-physically based [Blinn-Phong]{@link https://en.wikipedia.org/wiki/Blinn-Phong_shading_model}
10
+ * The material uses a non-physically based [Blinn-Phong](https://en.wikipedia.org/wiki/Blinn-Phong_shading_model)
11
11
  * model for calculating reflectance. Unlike the Lambertian model used in the
12
12
  * {@link MeshLambertMaterial} this can simulate shiny surfaces with specular
13
13
  * highlights (such as varnished wood). `MeshPhongMaterial` uses per-fragment shading.
@@ -17,6 +17,7 @@ import { Euler } from '../math/Euler.js';
17
17
  * some graphical accuracy.
18
18
  *
19
19
  * @augments Material
20
+ * @demo scenes/material-browser.html#MeshPhongMaterial
20
21
  */
21
22
  class MeshPhongMaterial extends Material {
22
23
 
@@ -283,6 +284,14 @@ class MeshPhongMaterial extends Material {
283
284
  */
284
285
  this.reflectivity = 1;
285
286
 
287
+ /**
288
+ * Scales the effect of the environment map by multiplying its color.
289
+ *
290
+ * @type {number}
291
+ * @default 1
292
+ */
293
+ this.envMapIntensity = 1.0;
294
+
286
295
  /**
287
296
  * The index of refraction (IOR) of air (approximately 1) divided by the
288
297
  * index of refraction of the material. It is used with environment mapping
@@ -391,6 +400,7 @@ class MeshPhongMaterial extends Material {
391
400
  this.envMapRotation.copy( source.envMapRotation );
392
401
  this.combine = source.combine;
393
402
  this.reflectivity = source.reflectivity;
403
+ this.envMapIntensity = source.envMapIntensity;
394
404
  this.refractionRatio = source.refractionRatio;
395
405
 
396
406
  this.wireframe = source.wireframe;
@@ -27,6 +27,7 @@ import { clamp } from '../math/MathUtils.js';
27
27
  * best results, always specify an environment map when using this material.
28
28
  *
29
29
  * @augments MeshStandardMaterial
30
+ * @demo scenes/material-browser.html#MeshPhysicalMaterial
30
31
  */
31
32
  class MeshPhysicalMaterial extends MeshStandardMaterial {
32
33
 
@@ -323,7 +324,7 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
323
324
  }
324
325
 
325
326
  /**
326
- * The anisotropy strength.
327
+ * The anisotropy strength, from `0.0` to `1.0`.
327
328
  *
328
329
  * @type {number}
329
330
  * @default 0
@@ -8,9 +8,9 @@ import { Euler } from '../math/Euler.js';
8
8
  * A standard physically based material, using Metallic-Roughness workflow.
9
9
  *
10
10
  * Physically based rendering (PBR) has recently become the standard in many
11
- * 3D applications, such as [Unity]{@link https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/},
12
- * [Unreal]{@link https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/} and
13
- * [3D Studio Max]{@link http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017}.
11
+ * 3D applications, such as [Unity](https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/),
12
+ * [Unreal](https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/) and
13
+ * [3D Studio Max](http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017).
14
14
  *
15
15
  * This approach differs from older approaches in that instead of using
16
16
  * approximations for the way in which light interacts with a surface, a
@@ -26,16 +26,17 @@ import { Euler } from '../math/Euler.js';
26
26
  * Note that for best results you should always specify an environment map when using this material.
27
27
  *
28
28
  * For a non-technical introduction to the concept of PBR and how to set up a
29
- * PBR material, check out these articles by the people at [marmoset]{@link https://www.marmoset.co}:
29
+ * PBR material, check out these articles by the people at [marmoset](https://www.marmoset.co):
30
30
  *
31
- * - [Basic Theory of Physically Based Rendering]{@link https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/}
32
- * - [Physically Based Rendering and You Can Too]{@link https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/}
31
+ * - [Basic Theory of Physically Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)
32
+ * - [Physically Based Rendering and You Can Too](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)
33
33
  *
34
34
  * Technical details of the approach used in three.js (and most other PBR systems) can be found is this
35
- * [paper from Disney]{@link https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf}
35
+ * [paper from Disney](https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf)
36
36
  * (pdf), by Brent Burley.
37
37
  *
38
38
  * @augments Material
39
+ * @demo scenes/material-browser.html#MeshStandardMaterial
39
40
  */
40
41
  class MeshStandardMaterial extends Material {
41
42
 
@@ -7,6 +7,7 @@ import { Color } from '../math/Color.js';
7
7
  * A material implementing toon shading.
8
8
  *
9
9
  * @augments Material
10
+ * @demo scenes/material-browser.html#MeshToonMaterial
10
11
  */
11
12
  class MeshToonMaterial extends Material {
12
13
 
@@ -56,7 +57,7 @@ class MeshToonMaterial extends Material {
56
57
 
57
58
  /**
58
59
  * Gradient map for toon shading. It's required to set
59
- * {@link Texture#minFilter} and {@link Texture#magFilter} to {@linkNearestFilter}
60
+ * {@link Texture#minFilter} and {@link Texture#magFilter} to {@link NearestFilter}
60
61
  * when using this type of texture.
61
62
  *
62
63
  * @type {?Texture}
@@ -88,7 +88,7 @@ class PointsMaterial extends Material {
88
88
  /**
89
89
  * Defines the size of the points in pixels.
90
90
  *
91
- * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete}.
91
+ * Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete).
92
92
  *
93
93
  * @type {number}
94
94
  * @default 1
@@ -17,7 +17,7 @@ import default_fragment from '../renderers/shaders/ShaderChunk/default_fragment.
17
17
  * - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`
18
18
  * in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has
19
19
  * to be placed right above the loop. The loop formatting has to correspond to a defined standard.
20
- * - The loop has to be [normalized]{@link https://en.wikipedia.org/wiki/Normalized_loop}.
20
+ * - The loop has to be [normalized](https://en.wikipedia.org/wiki/Normalized_loop).
21
21
  * - The loop variable has to be *i*.
22
22
  * - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly
23
23
  * value of *i* for the given iteration and can be used in preprocessor
@@ -158,9 +158,22 @@ class ShaderMaterial extends Material {
158
158
  this.wireframeLinewidth = 1;
159
159
 
160
160
  /**
161
- * Define whether the material color is affected by global fog settings; `true`
161
+ * Defines whether the material color is affected by global fog settings; `true`
162
162
  * to pass fog uniforms to the shader.
163
163
  *
164
+ * Setting this property to `true` requires the definition of fog uniforms. It is
165
+ * recommended to use `UniformsUtils.merge()` to combine the custom shader uniforms
166
+ * with predefined fog uniforms.
167
+ *
168
+ * ```js
169
+ * const material = new ShaderMaterial( {
170
+ * uniforms: UniformsUtils.merge( [ UniformsLib[ 'fog' ], shaderUniforms ] );
171
+ * vertexShader: vertexShader,
172
+ * fragmentShader: fragmentShader,
173
+ * fog: true
174
+ * } );
175
+ * ```
176
+ *
164
177
  * @type {boolean}
165
178
  * @default false
166
179
  */
@@ -223,7 +236,7 @@ class ShaderMaterial extends Material {
223
236
  };
224
237
 
225
238
  /**
226
- * If set, this calls [gl.bindAttribLocation]{@link https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation}
239
+ * If set, this calls [gl.bindAttribLocation](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation)
227
240
  * to bind a generic vertex index to an attribute variable.
228
241
  *
229
242
  * @type {string|undefined}
@@ -279,6 +292,12 @@ class ShaderMaterial extends Material {
279
292
 
280
293
  this.glslVersion = source.glslVersion;
281
294
 
295
+ this.defaultAttributeValues = Object.assign( {}, source.defaultAttributeValues );
296
+
297
+ this.index0AttributeName = source.index0AttributeName;
298
+
299
+ this.uniformsNeedUpdate = source.uniformsNeedUpdate;
300
+
282
301
  return this;
283
302
 
284
303
  }