super-three 0.181.0 → 0.185.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 (693) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +3 -4
  3. package/build/three.cjs +21332 -19201
  4. package/build/three.core.js +20908 -19853
  5. package/build/three.core.min.js +2 -2
  6. package/build/three.module.js +1947 -862
  7. package/build/three.module.min.js +2 -2
  8. package/build/three.tsl.js +37 -16
  9. package/build/three.tsl.min.js +2 -2
  10. package/build/three.webgpu.js +33628 -25197
  11. package/build/three.webgpu.min.js +2 -2
  12. package/build/three.webgpu.nodes.js +33394 -25000
  13. package/build/three.webgpu.nodes.min.js +2 -2
  14. package/examples/jsm/Addons.js +14 -3
  15. package/examples/jsm/animation/CCDIKSolver.js +7 -3
  16. package/examples/jsm/controls/ArcballControls.js +13 -6
  17. package/examples/jsm/controls/DragControls.js +2 -2
  18. package/examples/jsm/controls/FirstPersonControls.js +127 -86
  19. package/examples/jsm/controls/FlyControls.js +4 -0
  20. package/examples/jsm/controls/MapControls.js +55 -1
  21. package/examples/jsm/controls/OrbitControls.js +111 -8
  22. package/examples/jsm/controls/TrackballControls.js +8 -8
  23. package/examples/jsm/controls/TransformControls.js +102 -17
  24. package/examples/jsm/csm/CSM.js +2 -1
  25. package/examples/jsm/csm/CSMFrustum.js +31 -6
  26. package/examples/jsm/csm/CSMShadowNode.js +10 -3
  27. package/examples/jsm/effects/AnaglyphEffect.js +102 -7
  28. package/examples/jsm/effects/AsciiEffect.js +14 -1
  29. package/examples/jsm/environments/ColorEnvironment.js +59 -0
  30. package/examples/jsm/environments/RoomEnvironment.js +3 -0
  31. package/examples/jsm/exporters/DRACOExporter.js +27 -6
  32. package/examples/jsm/exporters/EXRExporter.js +1 -1
  33. package/examples/jsm/exporters/GLTFExporter.js +266 -21
  34. package/examples/jsm/exporters/PLYExporter.js +286 -73
  35. package/examples/jsm/exporters/USDZExporter.js +353 -99
  36. package/examples/jsm/generators/CityGenerator.js +346 -0
  37. package/examples/jsm/generators/ForestGenerator.js +347 -0
  38. package/examples/jsm/generators/TerrainGenerator.js +504 -0
  39. package/examples/jsm/generators/TreeGenerator.js +377 -0
  40. package/examples/jsm/generators/city/SidewalkGenerator.js +253 -0
  41. package/examples/jsm/generators/city/SkyscraperGenerator.js +1357 -0
  42. package/examples/jsm/geometries/DecalGeometry.js +1 -1
  43. package/examples/jsm/geometries/LoftGeometry.js +355 -0
  44. package/examples/jsm/geometries/TextGeometry.js +18 -0
  45. package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
  46. package/examples/jsm/helpers/LightProbeGridHelper.js +221 -0
  47. package/examples/jsm/helpers/LightProbeHelper.js +5 -4
  48. package/examples/jsm/helpers/LightProbeHelperGPU.js +1 -1
  49. package/examples/jsm/helpers/TextureHelperGPU.js +1 -1
  50. package/examples/jsm/helpers/ViewHelper.js +83 -14
  51. package/examples/jsm/inspector/Extension.js +13 -0
  52. package/examples/jsm/inspector/Inspector.js +244 -91
  53. package/examples/jsm/inspector/RendererInspector.js +165 -39
  54. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphEditor.js +916 -0
  55. package/examples/jsm/inspector/extensions/tsl-graph/TSLGraphLoader.js +281 -0
  56. package/examples/jsm/inspector/tabs/Console.js +241 -25
  57. package/examples/jsm/inspector/tabs/Memory.js +136 -0
  58. package/examples/jsm/inspector/tabs/Parameters.js +115 -7
  59. package/examples/jsm/inspector/tabs/Performance.js +24 -9
  60. package/examples/jsm/inspector/tabs/Settings.js +306 -0
  61. package/examples/jsm/inspector/tabs/Timeline.js +1696 -0
  62. package/examples/jsm/inspector/tabs/Viewer.js +723 -9
  63. package/examples/jsm/inspector/ui/Graph.js +162 -25
  64. package/examples/jsm/inspector/ui/Item.js +92 -13
  65. package/examples/jsm/inspector/ui/List.js +2 -2
  66. package/examples/jsm/inspector/ui/Profiler.js +1991 -44
  67. package/examples/jsm/inspector/ui/Style.js +1943 -543
  68. package/examples/jsm/inspector/ui/Tab.js +226 -5
  69. package/examples/jsm/inspector/ui/Values.js +126 -8
  70. package/examples/jsm/inspector/ui/utils.js +143 -10
  71. package/examples/jsm/interaction/InteractionManager.js +226 -0
  72. package/examples/jsm/libs/basis/README.md +0 -1
  73. package/examples/jsm/libs/demuxer_mp4.js +3 -3
  74. package/examples/jsm/libs/draco/README.md +0 -1
  75. package/examples/jsm/libs/meshopt_clusterizer.module.js +421 -0
  76. package/examples/jsm/libs/meshopt_decoder.module.js +9 -8
  77. package/examples/jsm/libs/meshopt_simplifier.module.js +627 -0
  78. package/examples/jsm/libs/mikktspace.module.js +34 -9
  79. package/examples/jsm/lighting/ClusteredLighting.js +55 -0
  80. package/examples/jsm/lighting/DynamicLighting.js +82 -0
  81. package/examples/jsm/lighting/LightProbeGrid.js +681 -0
  82. package/examples/jsm/lines/LineMaterial.js +45 -16
  83. package/examples/jsm/lines/LineSegments2.js +8 -0
  84. package/examples/jsm/lines/webgpu/LineSegments2.js +8 -0
  85. package/examples/jsm/loaders/3DMLoader.js +6 -5
  86. package/examples/jsm/loaders/3MFLoader.js +2 -2
  87. package/examples/jsm/loaders/AMFLoader.js +2 -2
  88. package/examples/jsm/loaders/ColladaLoader.js +24 -4026
  89. package/examples/jsm/loaders/DRACOLoader.js +51 -18
  90. package/examples/jsm/loaders/EXRLoader.js +701 -90
  91. package/examples/jsm/loaders/FBXLoader.js +235 -37
  92. package/examples/jsm/loaders/GCodeLoader.js +34 -8
  93. package/examples/jsm/loaders/GLTFLoader.js +146 -178
  94. package/examples/jsm/loaders/HDRLoader.js +7 -30
  95. package/examples/jsm/loaders/KMZLoader.js +5 -5
  96. package/examples/jsm/loaders/KTX2Loader.js +58 -17
  97. package/examples/jsm/loaders/LDrawLoader.js +49 -58
  98. package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
  99. package/examples/jsm/loaders/LUTCubeLoader.js +2 -2
  100. package/examples/jsm/loaders/LWOLoader.js +11 -39
  101. package/examples/jsm/loaders/LottieLoader.js +1 -1
  102. package/examples/jsm/loaders/MaterialXLoader.js +31 -9
  103. package/examples/jsm/loaders/NRRDLoader.js +5 -5
  104. package/examples/jsm/loaders/PCDLoader.js +11 -9
  105. package/examples/jsm/loaders/PLYLoader.js +218 -55
  106. package/examples/jsm/loaders/SVGLoader.js +549 -497
  107. package/examples/jsm/loaders/TDSLoader.js +0 -2
  108. package/examples/jsm/loaders/TGALoader.js +0 -2
  109. package/examples/jsm/loaders/TTFLoader.js +1 -1
  110. package/examples/jsm/loaders/USDLoader.js +127 -43
  111. package/examples/jsm/loaders/UltraHDRLoader.js +285 -160
  112. package/examples/jsm/loaders/VOXLoader.js +660 -117
  113. package/examples/jsm/loaders/VRMLLoader.js +80 -3
  114. package/examples/jsm/loaders/VTKLoader.js +42 -25
  115. package/examples/jsm/loaders/collada/ColladaComposer.js +3044 -0
  116. package/examples/jsm/loaders/collada/ColladaParser.js +1977 -0
  117. package/examples/jsm/loaders/usd/USDAParser.js +504 -344
  118. package/examples/jsm/loaders/usd/USDCParser.js +1867 -6
  119. package/examples/jsm/loaders/usd/USDComposer.js +4627 -0
  120. package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
  121. package/examples/jsm/materials/WoodNodeMaterial.js +11 -11
  122. package/examples/jsm/math/Octree.js +131 -1
  123. package/examples/jsm/misc/GPUComputationRenderer.js +2 -0
  124. package/examples/jsm/misc/RollerCoaster.js +42 -4
  125. package/examples/jsm/misc/TileCreasedNormalsPlugin.js +270 -0
  126. package/examples/jsm/misc/Volume.js +2 -3
  127. package/examples/jsm/misc/VolumeSlice.js +0 -1
  128. package/examples/jsm/modifiers/TessellateModifier.js +1 -1
  129. package/examples/jsm/objects/GroundedSkybox.js +1 -1
  130. package/examples/jsm/objects/LensflareMesh.js +1 -1
  131. package/examples/jsm/objects/Reflector.js +72 -25
  132. package/examples/jsm/objects/Sky.js +90 -6
  133. package/examples/jsm/objects/SkyMesh.js +150 -16
  134. package/examples/jsm/objects/Water.js +4 -3
  135. package/examples/jsm/objects/Water2.js +5 -3
  136. package/examples/jsm/objects/Water2Mesh.js +1 -1
  137. package/examples/jsm/objects/WaterMesh.js +5 -7
  138. package/examples/jsm/physics/AmmoPhysics.js +27 -15
  139. package/examples/jsm/physics/JoltPhysics.js +10 -6
  140. package/examples/jsm/physics/RapierPhysics.js +36 -7
  141. package/examples/jsm/postprocessing/EffectComposer.js +7 -5
  142. package/examples/jsm/postprocessing/OutputPass.js +9 -0
  143. package/examples/jsm/postprocessing/RenderPass.js +10 -0
  144. package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
  145. package/examples/jsm/postprocessing/UnrealBloomPass.js +48 -18
  146. package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
  147. package/examples/jsm/renderers/Projector.js +246 -28
  148. package/examples/jsm/renderers/SVGRenderer.js +174 -60
  149. package/examples/jsm/shaders/GTAOShader.js +19 -6
  150. package/examples/jsm/shaders/HalftoneShader.js +12 -1
  151. package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
  152. package/examples/jsm/shaders/SAOShader.js +17 -4
  153. package/examples/jsm/shaders/SSAOShader.js +11 -1
  154. package/examples/jsm/shaders/SSRShader.js +6 -5
  155. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -4
  156. package/examples/jsm/shaders/VignetteShader.js +1 -1
  157. package/examples/jsm/shaders/VolumeShader.js +31 -44
  158. package/examples/jsm/transpiler/AST.js +44 -0
  159. package/examples/jsm/transpiler/GLSLDecoder.js +65 -8
  160. package/examples/jsm/transpiler/Linker.js +1 -1
  161. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -0
  162. package/examples/jsm/transpiler/TSLEncoder.js +46 -3
  163. package/examples/jsm/transpiler/TranspilerUtils.js +3 -3
  164. package/examples/jsm/transpiler/WGSLEncoder.js +27 -0
  165. package/examples/jsm/tsl/WebGLNodesHandler.js +605 -0
  166. package/examples/jsm/tsl/display/AfterImageNode.js +11 -1
  167. package/examples/jsm/tsl/display/AnaglyphPassNode.js +458 -16
  168. package/examples/jsm/tsl/display/BilateralBlurNode.js +374 -0
  169. package/examples/jsm/tsl/display/BloomNode.js +75 -25
  170. package/examples/jsm/tsl/display/CRT.js +150 -0
  171. package/examples/jsm/tsl/display/ChromaticAberrationNode.js +3 -36
  172. package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
  173. package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
  174. package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
  175. package/examples/jsm/tsl/display/FSR1Node.js +477 -0
  176. package/examples/jsm/tsl/display/FXAANode.js +13 -14
  177. package/examples/jsm/tsl/display/GTAONode.js +40 -17
  178. package/examples/jsm/tsl/display/GaussianBlurNode.js +21 -2
  179. package/examples/jsm/tsl/display/GodraysNode.js +615 -0
  180. package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +560 -0
  181. package/examples/jsm/tsl/display/LensflareNode.js +1 -1
  182. package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
  183. package/examples/jsm/tsl/display/OutlineNode.js +69 -19
  184. package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
  185. package/examples/jsm/tsl/display/PixelationPassNode.js +9 -8
  186. package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
  187. package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +912 -0
  188. package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
  189. package/examples/jsm/tsl/display/SMAANode.js +2 -2
  190. package/examples/jsm/tsl/display/SSAAPassNode.js +15 -27
  191. package/examples/jsm/tsl/display/SSGINode.js +96 -62
  192. package/examples/jsm/tsl/display/SSRNode.js +831 -134
  193. package/examples/jsm/tsl/display/SSSNode.js +8 -6
  194. package/examples/jsm/tsl/display/Shape.js +29 -0
  195. package/examples/jsm/tsl/display/SharpenNode.js +283 -0
  196. package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
  197. package/examples/jsm/tsl/display/StereoCompositePassNode.js +8 -1
  198. package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
  199. package/examples/jsm/tsl/display/TAAUNode.js +835 -0
  200. package/examples/jsm/tsl/display/TRAANode.js +315 -126
  201. package/examples/jsm/tsl/display/TemporalReprojectNode.js +1023 -0
  202. package/examples/jsm/tsl/display/TransitionNode.js +1 -1
  203. package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
  204. package/examples/jsm/tsl/display/radialBlur.js +68 -0
  205. package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +622 -0
  206. package/examples/jsm/tsl/lighting/DynamicLightsNode.js +300 -0
  207. package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +61 -0
  208. package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +111 -0
  209. package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +99 -0
  210. package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +134 -0
  211. package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +161 -0
  212. package/examples/jsm/tsl/math/Bayer.js +53 -3
  213. package/examples/jsm/tsl/math/curlNoise.js +107 -0
  214. package/examples/jsm/tsl/shadows/TileShadowNode.js +1 -1
  215. package/examples/jsm/tsl/shadows/TileShadowNodeHelper.js +3 -3
  216. package/examples/jsm/tsl/utils/GroundedSkybox.js +62 -0
  217. package/examples/jsm/tsl/utils/RNoise.js +51 -0
  218. package/examples/jsm/tsl/utils/SpecularHelpers.js +325 -0
  219. package/examples/jsm/utils/BufferGeometryUtils.js +128 -62
  220. package/examples/jsm/utils/ColorUtils.js +76 -0
  221. package/examples/jsm/utils/GeometryCompressionUtils.js +1 -1
  222. package/examples/jsm/utils/LDrawUtils.js +1 -1
  223. package/examples/jsm/utils/SceneOptimizer.js +1 -1
  224. package/examples/jsm/utils/ShadowMapViewer.js +24 -10
  225. package/examples/jsm/utils/ShadowMapViewerGPU.js +1 -1
  226. package/examples/jsm/utils/SkeletonUtils.js +14 -8
  227. package/examples/jsm/utils/WebGPUTextureUtils.js +1 -1
  228. package/examples/jsm/webxr/ARButton.js +1 -1
  229. package/examples/jsm/webxr/WebGLXRFallback.js +89 -0
  230. package/examples/jsm/webxr/XRControllerModelFactory.js +2 -2
  231. package/examples/jsm/webxr/XRHandMeshModel.js +36 -10
  232. package/examples/jsm/webxr/XRHandModelFactory.js +2 -1
  233. package/package.json +28 -34
  234. package/src/Three.Core.js +3 -1
  235. package/src/Three.TSL.js +35 -14
  236. package/src/Three.WebGPU.Nodes.js +5 -0
  237. package/src/Three.WebGPU.js +13 -0
  238. package/src/Three.js +1 -0
  239. package/src/animation/AnimationAction.js +18 -4
  240. package/src/animation/AnimationClip.js +0 -139
  241. package/src/animation/AnimationMixer.js +6 -0
  242. package/src/animation/AnimationUtils.js +1 -12
  243. package/src/animation/KeyframeTrack.js +47 -8
  244. package/src/animation/PropertyBinding.js +2 -2
  245. package/src/animation/PropertyMixer.js +4 -4
  246. package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
  247. package/src/animation/tracks/ColorKeyframeTrack.js +1 -1
  248. package/src/animation/tracks/NumberKeyframeTrack.js +1 -1
  249. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -1
  250. package/src/animation/tracks/StringKeyframeTrack.js +1 -1
  251. package/src/animation/tracks/VectorKeyframeTrack.js +1 -1
  252. package/src/audio/Audio.js +1 -1
  253. package/src/audio/AudioContext.js +2 -2
  254. package/src/audio/AudioListener.js +5 -3
  255. package/src/cameras/Camera.js +34 -4
  256. package/src/cameras/CubeCamera.js +20 -0
  257. package/src/cameras/StereoCamera.js +5 -2
  258. package/src/constants.js +90 -5
  259. package/src/core/BufferAttribute.js +13 -1
  260. package/src/core/BufferGeometry.js +43 -9
  261. package/src/core/Clock.js +7 -0
  262. package/src/core/Object3D.js +69 -11
  263. package/src/core/Raycaster.js +3 -3
  264. package/src/core/RenderTarget.js +19 -6
  265. package/src/extras/PMREMGenerator.js +13 -22
  266. package/src/extras/TextureUtils.js +6 -2
  267. package/src/extras/core/ShapePath.js +149 -160
  268. package/src/extras/curves/CatmullRomCurve3.js +3 -2
  269. package/src/geometries/ExtrudeGeometry.js +2 -2
  270. package/src/geometries/PolyhedronGeometry.js +1 -1
  271. package/src/geometries/SphereGeometry.js +8 -3
  272. package/src/geometries/TorusGeometry.js +8 -3
  273. package/src/helpers/CameraHelper.js +3 -0
  274. package/src/helpers/DirectionalLightHelper.js +6 -1
  275. package/src/helpers/HemisphereLightHelper.js +5 -0
  276. package/src/helpers/PointLightHelper.js +3 -25
  277. package/src/helpers/SpotLightHelper.js +4 -1
  278. package/src/lights/DirectionalLight.js +13 -0
  279. package/src/lights/HemisphereLight.js +10 -0
  280. package/src/lights/Light.js +1 -11
  281. package/src/lights/LightProbe.js +0 -15
  282. package/src/lights/LightShadow.js +15 -6
  283. package/src/lights/PointLight.js +15 -0
  284. package/src/lights/PointLightShadow.js +0 -86
  285. package/src/lights/SpotLight.js +22 -1
  286. package/src/lights/webgpu/IESSpotLight.js +2 -1
  287. package/src/loaders/AudioLoader.js +11 -1
  288. package/src/loaders/Cache.js +28 -0
  289. package/src/loaders/DataTextureLoader.js +75 -42
  290. package/src/loaders/FileLoader.js +2 -3
  291. package/src/loaders/ImageBitmapLoader.js +12 -9
  292. package/src/loaders/Loader.js +6 -0
  293. package/src/loaders/LoadingManager.js +5 -0
  294. package/src/loaders/MaterialLoader.js +37 -266
  295. package/src/loaders/ObjectLoader.js +48 -6
  296. package/src/loaders/nodes/NodeLoader.js +2 -2
  297. package/src/loaders/nodes/NodeObjectLoader.js +18 -0
  298. package/src/materials/LineBasicMaterial.js +4 -0
  299. package/src/materials/Material.js +198 -1
  300. package/src/materials/MeshBasicMaterial.js +24 -0
  301. package/src/materials/MeshDepthMaterial.js +10 -0
  302. package/src/materials/MeshDistanceMaterial.js +10 -0
  303. package/src/materials/MeshLambertMaterial.js +49 -1
  304. package/src/materials/MeshMatcapMaterial.js +25 -1
  305. package/src/materials/MeshNormalMaterial.js +9 -1
  306. package/src/materials/MeshPhongMaterial.js +49 -1
  307. package/src/materials/MeshPhysicalMaterial.js +38 -0
  308. package/src/materials/MeshStandardMaterial.js +42 -1
  309. package/src/materials/MeshToonMaterial.js +35 -2
  310. package/src/materials/PointsMaterial.js +7 -0
  311. package/src/materials/ShaderMaterial.js +106 -1
  312. package/src/materials/SpriteMaterial.js +7 -0
  313. package/src/materials/nodes/Line2NodeMaterial.js +380 -297
  314. package/src/materials/nodes/MeshBasicNodeMaterial.js +2 -2
  315. package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
  316. package/src/materials/nodes/MeshPhongNodeMaterial.js +0 -9
  317. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +3 -30
  318. package/src/materials/nodes/MeshSSSNodeMaterial.js +0 -13
  319. package/src/materials/nodes/MeshStandardNodeMaterial.js +5 -15
  320. package/src/materials/nodes/NodeMaterial.js +153 -89
  321. package/src/materials/nodes/SpriteNodeMaterial.js +0 -10
  322. package/src/materials/nodes/manager/NodeMaterialObserver.js +234 -100
  323. package/src/math/Box3.js +5 -0
  324. package/src/math/FrustumArray.js +103 -133
  325. package/src/math/Interpolant.js +1 -1
  326. package/src/math/Line3.js +6 -5
  327. package/src/math/MathUtils.js +12 -12
  328. package/src/math/Matrix2.js +13 -9
  329. package/src/math/Matrix3.js +24 -9
  330. package/src/math/Matrix4.js +112 -74
  331. package/src/math/Plane.js +4 -3
  332. package/src/math/Quaternion.js +3 -29
  333. package/src/math/Sphere.js +1 -1
  334. package/src/math/Triangle.js +1 -1
  335. package/src/math/Vector2.js +13 -9
  336. package/src/math/Vector3.js +17 -15
  337. package/src/math/Vector4.js +15 -11
  338. package/src/math/interpolants/BezierInterpolant.js +106 -0
  339. package/src/nodes/Nodes.js +86 -71
  340. package/src/nodes/TSL.js +15 -13
  341. package/src/nodes/accessors/Arrays.js +5 -5
  342. package/src/nodes/accessors/Batch.js +108 -0
  343. package/src/nodes/accessors/Bitangent.js +7 -7
  344. package/src/nodes/accessors/BufferAttributeNode.js +120 -17
  345. package/src/nodes/accessors/BufferNode.js +29 -2
  346. package/src/nodes/accessors/Camera.js +149 -28
  347. package/src/nodes/accessors/ClippingNode.js +5 -5
  348. package/src/nodes/accessors/CubeTextureNode.js +27 -2
  349. package/src/nodes/accessors/Instance.js +264 -0
  350. package/src/nodes/accessors/MaterialNode.js +27 -3
  351. package/src/nodes/accessors/MaterialProperties.js +6 -8
  352. package/src/nodes/accessors/MaterialReferenceNode.js +1 -2
  353. package/src/nodes/accessors/ModelNode.js +1 -1
  354. package/src/nodes/accessors/{MorphNode.js → Morph.js} +99 -112
  355. package/src/nodes/accessors/Normal.js +24 -24
  356. package/src/nodes/accessors/Object3DNode.js +1 -1
  357. package/src/nodes/accessors/Position.js +39 -3
  358. package/src/nodes/accessors/ReferenceBaseNode.js +6 -6
  359. package/src/nodes/accessors/ReferenceNode.js +9 -8
  360. package/src/nodes/accessors/ReflectVector.js +3 -3
  361. package/src/nodes/accessors/RendererReferenceNode.js +1 -2
  362. package/src/nodes/accessors/SceneProperties.js +47 -0
  363. package/src/nodes/accessors/Skinning.js +263 -0
  364. package/src/nodes/accessors/StorageBufferNode.js +16 -27
  365. package/src/nodes/accessors/StorageTexture3DNode.js +100 -0
  366. package/src/nodes/accessors/StorageTextureNode.js +74 -11
  367. package/src/nodes/accessors/Tangent.js +8 -18
  368. package/src/nodes/accessors/Texture3DNode.js +32 -35
  369. package/src/nodes/accessors/TextureNode.js +124 -25
  370. package/src/nodes/accessors/UniformArrayNode.js +6 -4
  371. package/src/nodes/accessors/UserDataNode.js +1 -2
  372. package/src/nodes/accessors/VertexColorNode.js +1 -2
  373. package/src/nodes/code/FunctionCallNode.js +1 -1
  374. package/src/nodes/code/FunctionNode.js +4 -19
  375. package/src/nodes/core/ArrayNode.js +21 -2
  376. package/src/nodes/core/AssignNode.js +3 -3
  377. package/src/nodes/core/AttributeNode.js +3 -3
  378. package/src/nodes/core/BypassNode.js +1 -1
  379. package/src/nodes/core/ContextNode.js +104 -5
  380. package/src/nodes/core/IndexNode.js +2 -1
  381. package/src/nodes/core/InputNode.js +1 -1
  382. package/src/nodes/core/InspectorNode.js +1 -1
  383. package/src/nodes/core/IsolateNode.js +1 -1
  384. package/src/nodes/core/MRTNode.js +55 -4
  385. package/src/nodes/core/Node.js +151 -17
  386. package/src/nodes/core/NodeBuilder.js +479 -101
  387. package/src/nodes/core/NodeError.js +28 -0
  388. package/src/nodes/core/NodeFrame.js +12 -4
  389. package/src/nodes/core/NodeUtils.js +20 -18
  390. package/src/nodes/core/OutputStructNode.js +13 -11
  391. package/src/nodes/core/OverrideContextNode.js +153 -0
  392. package/src/nodes/core/ParameterNode.js +4 -4
  393. package/src/nodes/core/PropertyNode.js +66 -4
  394. package/src/nodes/core/StackNode.js +91 -20
  395. package/src/nodes/core/StackTrace.js +139 -0
  396. package/src/nodes/core/StructNode.js +20 -8
  397. package/src/nodes/core/StructTypeNode.js +17 -23
  398. package/src/nodes/core/SubBuildNode.js +2 -2
  399. package/src/nodes/core/UniformGroupNode.js +36 -6
  400. package/src/nodes/core/UniformNode.js +21 -5
  401. package/src/nodes/core/VarNode.js +56 -23
  402. package/src/nodes/core/VaryingNode.js +14 -21
  403. package/src/nodes/display/BlendModes.js +1 -105
  404. package/src/nodes/display/BumpMapNode.js +6 -1
  405. package/src/nodes/display/ColorAdjustment.js +27 -9
  406. package/src/nodes/display/ColorSpaceNode.js +3 -3
  407. package/src/nodes/display/FrontFacingNode.js +38 -9
  408. package/src/nodes/display/NormalMapNode.js +41 -6
  409. package/src/nodes/display/PassNode.js +157 -56
  410. package/src/nodes/display/PremultiplyAlphaFunctions.js +39 -0
  411. package/src/nodes/display/RenderOutputNode.js +19 -10
  412. package/src/nodes/display/ScreenNode.js +4 -2
  413. package/src/nodes/display/ToneMappingNode.js +1 -1
  414. package/src/nodes/display/ToonOutlinePassNode.js +2 -2
  415. package/src/nodes/display/ViewportDepthNode.js +52 -4
  416. package/src/nodes/display/ViewportDepthTextureNode.js +11 -15
  417. package/src/nodes/display/ViewportTextureNode.js +39 -11
  418. package/src/nodes/fog/Fog.js +18 -35
  419. package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +3 -3
  420. package/src/nodes/functions/BSDF/DFGLUT.js +56 -0
  421. package/src/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  422. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +2 -2
  423. package/src/nodes/functions/PhysicalLightingModel.js +126 -45
  424. package/src/nodes/functions/VolumetricLightingModel.js +40 -7
  425. package/src/nodes/geometry/RangeNode.js +5 -3
  426. package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
  427. package/src/nodes/gpgpu/BarrierNode.js +9 -0
  428. package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -3
  429. package/src/nodes/gpgpu/ComputeNode.js +74 -48
  430. package/src/nodes/gpgpu/SubgroupFunctionNode.js +2 -2
  431. package/src/nodes/gpgpu/WorkgroupInfoNode.js +5 -5
  432. package/src/nodes/lighting/AnalyticLightNode.js +53 -0
  433. package/src/nodes/lighting/EnvironmentNode.js +30 -5
  434. package/src/nodes/lighting/IESSpotLightNode.js +40 -2
  435. package/src/nodes/lighting/LightingContextNode.js +10 -2
  436. package/src/nodes/lighting/LightsNode.js +97 -65
  437. package/src/nodes/lighting/PointShadowNode.js +166 -148
  438. package/src/nodes/lighting/ShadowFilterNode.js +74 -117
  439. package/src/nodes/lighting/ShadowNode.js +149 -51
  440. package/src/nodes/materialx/lib/mx_noise.js +2 -2
  441. package/src/nodes/math/BitcastNode.js +1 -1
  442. package/src/nodes/math/BitcountNode.js +433 -0
  443. package/src/nodes/math/ConditionalNode.js +6 -6
  444. package/src/nodes/math/MathNode.js +115 -52
  445. package/src/nodes/math/OperatorNode.js +24 -23
  446. package/src/nodes/math/PackFloatNode.js +98 -0
  447. package/src/nodes/math/UnpackFloatNode.js +96 -0
  448. package/src/nodes/parsers/GLSLNodeFunction.js +1 -1
  449. package/src/nodes/pmrem/PMREMNode.js +34 -3
  450. package/src/nodes/pmrem/PMREMUtils.js +9 -15
  451. package/src/nodes/tsl/TSLBase.js +1 -1
  452. package/src/nodes/tsl/TSLCore.js +99 -33
  453. package/src/nodes/utils/ArrayElementNode.js +14 -1
  454. package/src/nodes/utils/ConvertNode.js +1 -1
  455. package/src/nodes/utils/DebugNode.js +12 -12
  456. package/src/nodes/utils/EquirectUV.js +30 -5
  457. package/src/nodes/utils/EventNode.js +31 -2
  458. package/src/nodes/utils/FlipNode.js +1 -1
  459. package/src/nodes/utils/FunctionOverloadingNode.js +2 -2
  460. package/src/nodes/utils/JoinNode.js +3 -3
  461. package/src/nodes/utils/LoopNode.js +1 -1
  462. package/src/nodes/utils/MemberNode.js +2 -2
  463. package/src/nodes/utils/Packing.js +48 -5
  464. package/src/nodes/utils/PostProcessingUtils.js +33 -1
  465. package/src/nodes/utils/RTTNode.js +41 -25
  466. package/src/nodes/utils/ReflectorNode.js +4 -4
  467. package/src/nodes/utils/Remap.js +48 -0
  468. package/src/nodes/utils/RotateNode.js +1 -1
  469. package/src/nodes/utils/SampleNode.js +1 -1
  470. package/src/nodes/utils/SetNode.js +1 -1
  471. package/src/nodes/utils/SplitNode.js +1 -1
  472. package/src/nodes/utils/SpriteSheetUV.js +35 -0
  473. package/src/nodes/utils/StorageArrayElementNode.js +1 -1
  474. package/src/nodes/utils/UVUtils.js +28 -0
  475. package/src/objects/BatchedMesh.js +66 -30
  476. package/src/objects/InstancedMesh.js +19 -3
  477. package/src/objects/Line.js +1 -1
  478. package/src/objects/Mesh.js +1 -1
  479. package/src/objects/Points.js +1 -1
  480. package/src/objects/SkinnedMesh.js +26 -9
  481. package/src/renderers/WebGLRenderer.js +344 -156
  482. package/src/renderers/common/Animation.js +3 -3
  483. package/src/renderers/common/Attributes.js +15 -1
  484. package/src/renderers/common/Backend.js +78 -13
  485. package/src/renderers/common/Background.js +26 -13
  486. package/src/renderers/common/BindGroup.js +1 -16
  487. package/src/renderers/common/Binding.js +11 -0
  488. package/src/renderers/common/Bindings.js +141 -57
  489. package/src/renderers/common/BlendMode.js +143 -0
  490. package/src/renderers/common/Buffer.js +49 -0
  491. package/src/renderers/common/BundleGroup.js +1 -1
  492. package/src/renderers/common/ChainMap.js +30 -6
  493. package/src/renderers/common/ClippingContext.js +10 -2
  494. package/src/renderers/common/ComputePipeline.js +1 -1
  495. package/src/renderers/common/CubeRenderTarget.js +51 -7
  496. package/src/renderers/common/Geometries.js +29 -3
  497. package/src/renderers/common/Info.js +374 -4
  498. package/src/renderers/common/InspectorBase.js +6 -1
  499. package/src/renderers/common/Lighting.js +51 -19
  500. package/src/renderers/common/Pipelines.js +40 -7
  501. package/src/renderers/common/PostProcessing.js +8 -206
  502. package/src/renderers/common/ReadbackBuffer.js +78 -0
  503. package/src/renderers/common/RenderBundle.js +3 -1
  504. package/src/renderers/common/RenderBundles.js +7 -3
  505. package/src/renderers/common/RenderContext.js +16 -0
  506. package/src/renderers/common/RenderContexts.js +33 -49
  507. package/src/renderers/common/RenderList.js +41 -4
  508. package/src/renderers/common/RenderLists.js +2 -1
  509. package/src/renderers/common/RenderObject.js +88 -16
  510. package/src/renderers/common/RenderObjectPipeline.js +40 -0
  511. package/src/renderers/common/RenderObjects.js +21 -5
  512. package/src/renderers/common/RenderPipeline.js +232 -17
  513. package/src/renderers/common/Renderer.js +700 -163
  514. package/src/renderers/common/Sampler.js +16 -48
  515. package/src/renderers/common/StorageBuffer.js +13 -1
  516. package/src/renderers/common/Textures.js +121 -9
  517. package/src/renderers/common/TimestampQueryPool.js +6 -4
  518. package/src/renderers/common/Uniform.js +8 -0
  519. package/src/renderers/common/UniformsGroup.js +84 -1
  520. package/src/renderers/common/XRManager.js +377 -51
  521. package/src/renderers/common/extras/PMREMGenerator.js +40 -61
  522. package/src/renderers/common/nodes/NodeBuilderState.js +10 -2
  523. package/src/renderers/common/nodes/NodeLibrary.js +4 -4
  524. package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +298 -106
  525. package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
  526. package/src/renderers/common/nodes/NodeUniformBuffer.js +65 -0
  527. package/src/renderers/shaders/DFGLUTData.js +19 -34
  528. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
  529. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
  530. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
  531. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
  532. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
  533. package/src/renderers/shaders/ShaderChunk/common.glsl.js +13 -4
  534. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +0 -6
  535. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  536. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +9 -13
  537. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +2 -2
  538. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +1 -1
  539. package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +80 -0
  540. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +13 -2
  541. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
  542. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
  543. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +3 -1
  544. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +8 -4
  545. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +112 -53
  546. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +2 -2
  547. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +7 -0
  548. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +6 -0
  549. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
  550. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +0 -1
  551. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +225 -186
  552. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +12 -2
  553. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  554. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +2 -2
  555. package/src/renderers/shaders/ShaderChunk.js +5 -3
  556. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +1 -2
  557. package/src/renderers/shaders/ShaderLib/depth.glsl.js +3 -0
  558. package/src/renderers/shaders/ShaderLib/{distanceRGBA.glsl.js → distance.glsl.js} +2 -3
  559. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -1
  560. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +1 -2
  561. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -1
  562. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -9
  563. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +0 -1
  564. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -1
  565. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +4 -6
  566. package/src/renderers/shaders/ShaderLib.js +7 -6
  567. package/src/renderers/shaders/UniformsLib.js +7 -5
  568. package/src/renderers/shaders/UniformsUtils.js +27 -5
  569. package/src/renderers/webgl/WebGLAnimation.js +2 -1
  570. package/src/renderers/webgl/WebGLBackground.js +15 -15
  571. package/src/renderers/webgl/WebGLBindingStates.js +99 -27
  572. package/src/renderers/webgl/WebGLBufferRenderer.js +0 -32
  573. package/src/renderers/webgl/WebGLCapabilities.js +9 -4
  574. package/src/renderers/webgl/WebGLEnvironments.js +228 -0
  575. package/src/renderers/webgl/WebGLGeometries.js +10 -7
  576. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +0 -32
  577. package/src/renderers/webgl/WebGLLights.js +18 -1
  578. package/src/renderers/webgl/WebGLMaterials.js +24 -13
  579. package/src/renderers/webgl/WebGLObjects.js +3 -1
  580. package/src/renderers/webgl/WebGLOutput.js +271 -0
  581. package/src/renderers/webgl/WebGLProgram.js +54 -113
  582. package/src/renderers/webgl/WebGLPrograms.js +74 -55
  583. package/src/renderers/webgl/WebGLRenderLists.js +24 -1
  584. package/src/renderers/webgl/WebGLRenderStates.js +13 -2
  585. package/src/renderers/webgl/WebGLShaderCache.js +5 -11
  586. package/src/renderers/webgl/WebGLShadowMap.js +188 -24
  587. package/src/renderers/webgl/WebGLState.js +75 -37
  588. package/src/renderers/webgl/WebGLTextures.js +230 -56
  589. package/src/renderers/webgl/WebGLUniforms.js +40 -3
  590. package/src/renderers/webgl/WebGLUniformsGroups.js +82 -35
  591. package/src/renderers/webgl/WebGLUtils.js +6 -2
  592. package/src/renderers/webgl-fallback/WebGLBackend.js +322 -92
  593. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +0 -41
  594. package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +295 -66
  595. package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +53 -19
  596. package/src/renderers/webgl-fallback/utils/WebGLCapabilities.js +25 -0
  597. package/src/renderers/webgl-fallback/utils/WebGLState.js +223 -6
  598. package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +118 -73
  599. package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +10 -10
  600. package/src/renderers/webgl-fallback/utils/WebGLUtils.js +9 -3
  601. package/src/renderers/webgpu/WebGPUBackend.js +733 -302
  602. package/src/renderers/webgpu/WebGPURenderer.js +2 -1
  603. package/src/renderers/webgpu/descriptors/GPUBindGroupDescriptor.js +48 -0
  604. package/src/renderers/webgpu/descriptors/GPUBufferDescriptor.js +57 -0
  605. package/src/renderers/webgpu/descriptors/GPUCommandEncoderDescriptor.js +30 -0
  606. package/src/renderers/webgpu/descriptors/GPUComputePassDescriptor.js +38 -0
  607. package/src/renderers/webgpu/descriptors/GPUComputePipelineDescriptor.js +48 -0
  608. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageDestInfo.js +47 -0
  609. package/src/renderers/webgpu/descriptors/GPUCopyExternalImageSourceInfo.js +50 -0
  610. package/src/renderers/webgpu/descriptors/GPUExtent3D.js +51 -0
  611. package/src/renderers/webgpu/descriptors/GPUPipelineLayoutDescriptor.js +39 -0
  612. package/src/renderers/webgpu/descriptors/GPUQuerySetDescriptor.js +47 -0
  613. package/src/renderers/webgpu/descriptors/GPURenderBundleEncoderDescriptor.js +74 -0
  614. package/src/renderers/webgpu/descriptors/GPURenderPassColorAttachment.js +72 -0
  615. package/src/renderers/webgpu/descriptors/GPURenderPassDepthStencilAttachment.js +99 -0
  616. package/src/renderers/webgpu/descriptors/GPURenderPassDescriptor.js +72 -0
  617. package/src/renderers/webgpu/descriptors/GPURenderPassTimestampWrites.js +49 -0
  618. package/src/renderers/webgpu/descriptors/GPURenderPipelineDescriptor.js +130 -0
  619. package/src/renderers/webgpu/descriptors/GPUSamplerDescriptor.js +119 -0
  620. package/src/renderers/webgpu/descriptors/GPUShaderModuleDescriptor.js +46 -0
  621. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferInfo.js +57 -0
  622. package/src/renderers/webgpu/descriptors/GPUTexelCopyBufferLayout.js +48 -0
  623. package/src/renderers/webgpu/descriptors/GPUTexelCopyTextureInfo.js +61 -0
  624. package/src/renderers/webgpu/descriptors/GPUTextureDescriptor.js +99 -0
  625. package/src/renderers/webgpu/descriptors/GPUTextureViewDescriptor.js +108 -0
  626. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +0 -1
  627. package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +526 -93
  628. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +1 -1
  629. package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +194 -61
  630. package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +395 -234
  631. package/src/renderers/webgpu/utils/WebGPUCapabilities.js +48 -0
  632. package/src/renderers/webgpu/utils/WebGPUConstants.js +10 -0
  633. package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +224 -91
  634. package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +228 -213
  635. package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +428 -175
  636. package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +40 -25
  637. package/src/renderers/webgpu/utils/WebGPUUtils.js +70 -13
  638. package/src/renderers/webxr/WebXRController.js +12 -0
  639. package/src/renderers/webxr/WebXRManager.js +4 -2
  640. package/src/textures/CubeDepthTexture.js +76 -0
  641. package/src/textures/DepthTexture.js +1 -1
  642. package/src/textures/ExternalTexture.js +0 -3
  643. package/src/textures/HTMLTexture.js +74 -0
  644. package/src/textures/Source.js +2 -2
  645. package/src/textures/Texture.js +16 -5
  646. package/src/utils.js +280 -3
  647. package/examples/fonts/LICENSE +0 -13
  648. package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
  649. package/examples/fonts/MPLUSRounded1c/OFL.txt +0 -91
  650. package/examples/fonts/README.md +0 -11
  651. package/examples/fonts/droid/NOTICE +0 -190
  652. package/examples/fonts/droid/README.txt +0 -18
  653. package/examples/fonts/droid/droid_sans_bold.typeface.json +0 -1
  654. package/examples/fonts/droid/droid_sans_mono_regular.typeface.json +0 -1
  655. package/examples/fonts/droid/droid_sans_regular.typeface.json +0 -1
  656. package/examples/fonts/droid/droid_serif_bold.typeface.json +0 -1
  657. package/examples/fonts/droid/droid_serif_regular.typeface.json +0 -1
  658. package/examples/fonts/gentilis_bold.typeface.json +0 -1
  659. package/examples/fonts/gentilis_regular.typeface.json +0 -1
  660. package/examples/fonts/helvetiker_bold.typeface.json +0 -1
  661. package/examples/fonts/helvetiker_regular.typeface.json +0 -1
  662. package/examples/fonts/optimer_bold.typeface.json +0 -1
  663. package/examples/fonts/optimer_regular.typeface.json +0 -1
  664. package/examples/fonts/ttf/README.md +0 -9
  665. package/examples/fonts/ttf/kenpixel.ttf +0 -0
  666. package/examples/jsm/libs/ammo.wasm.js +0 -822
  667. package/examples/jsm/libs/ammo.wasm.wasm +0 -0
  668. package/examples/jsm/libs/draco/draco_encoder.js +0 -33
  669. package/examples/jsm/libs/draco/gltf/draco_encoder.js +0 -33
  670. package/examples/jsm/libs/lottie_canvas.module.js +0 -14849
  671. package/examples/jsm/libs/opentype.module.js +0 -14506
  672. package/examples/jsm/libs/rhino3dm/rhino3dm.js +0 -21
  673. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +0 -16
  674. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  675. package/examples/jsm/lighting/TiledLighting.js +0 -42
  676. package/examples/jsm/materials/MeshGouraudMaterial.js +0 -434
  677. package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
  678. package/examples/jsm/shaders/GodRaysShader.js +0 -333
  679. package/examples/jsm/tsl/display/AnamorphicNode.js +0 -282
  680. package/examples/jsm/tsl/lighting/TiledLightsNode.js +0 -442
  681. package/src/nodes/accessors/BatchNode.js +0 -163
  682. package/src/nodes/accessors/InstanceNode.js +0 -244
  683. package/src/nodes/accessors/InstancedMeshNode.js +0 -50
  684. package/src/nodes/accessors/SceneNode.js +0 -145
  685. package/src/nodes/accessors/SkinningNode.js +0 -327
  686. package/src/nodes/code/ScriptableNode.js +0 -726
  687. package/src/nodes/code/ScriptableValueNode.js +0 -253
  688. package/src/nodes/display/PosterizeNode.js +0 -65
  689. package/src/nodes/functions/BSDF/DFGApprox.js +0 -71
  690. package/src/nodes/utils/RemapNode.js +0 -125
  691. package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
  692. package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
  693. package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
@@ -75,6 +75,10 @@ class MeshPhongMaterial extends Material {
75
75
  * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
76
76
  * color is modulated by the diffuse `color`.
77
77
  *
78
+ * `map` represents color data, and the texture must be assigned a
79
+ * {@link Texture#colorSpace}. Most `map` textures set
80
+ * `texture.colorSpace = SRGBColorSpace`.
81
+ *
78
82
  * @type {?Texture}
79
83
  * @default null
80
84
  */
@@ -83,6 +87,11 @@ class MeshPhongMaterial extends Material {
83
87
  /**
84
88
  * The light map. Requires a second set of UVs.
85
89
  *
90
+ * `lightMap` represents pre-baked illuminance data, and the texture must be assigned
91
+ * a {@link Texture#colorSpace}. Most `lightMap` textures set
92
+ * `texture.colorSpace = LinearSRGBColorSpace` and use float-type formats
93
+ * such as `.exr` or `.hdr`.
94
+ *
86
95
  * @type {?Texture}
87
96
  * @default null
88
97
  */
@@ -100,6 +109,9 @@ class MeshPhongMaterial extends Material {
100
109
  * The red channel of this texture is used as the ambient occlusion map.
101
110
  * Requires a second set of UVs.
102
111
  *
112
+ * `aoMap` represents non-color data. Any texture assigned must have
113
+ * `texture.colorSpace = NoColorSpace` (default).
114
+ *
103
115
  * @type {?Texture}
104
116
  * @default null
105
117
  */
@@ -137,6 +149,10 @@ class MeshPhongMaterial extends Material {
137
149
  * emissive color and the emissive intensity. If you have an emissive map,
138
150
  * be sure to set the emissive color to something other than black.
139
151
  *
152
+ * `emissiveMap` represents color data, and the texture must be assigned a
153
+ * {@link Texture#colorSpace}. Most `emissiveMap` textures set
154
+ * `texture.colorSpace = SRGBColorSpace`.
155
+ *
140
156
  * @type {?Texture}
141
157
  * @default null
142
158
  */
@@ -148,6 +164,9 @@ class MeshPhongMaterial extends Material {
148
164
  * the geometry of the object, only the lighting. If a normal map is defined
149
165
  * this will be ignored.
150
166
  *
167
+ * `bumpMap` represents non-color data. Any texture assigned must have
168
+ * `texture.colorSpace = NoColorSpace` (default).
169
+ *
151
170
  * @type {?Texture}
152
171
  * @default null
153
172
  */
@@ -169,6 +188,9 @@ class MeshPhongMaterial extends Material {
169
188
  * convention, the `y` component of `normalScale` should be negated to compensate
170
189
  * for the different handedness.
171
190
  *
191
+ * `normalMap` represents non-color data. Any texture assigned must have
192
+ * `texture.colorSpace = NoColorSpace` (default).
193
+ *
172
194
  * @type {?Texture}
173
195
  * @default null
174
196
  */
@@ -196,7 +218,12 @@ class MeshPhongMaterial extends Material {
196
218
  * displaced vertices can cast shadows, block other objects, and otherwise
197
219
  * act as real geometry. The displacement texture is an image where the value
198
220
  * of each pixel (white being the highest) is mapped against, and
199
- * repositions, the vertices of the mesh.
221
+ * repositions, the vertices of the mesh. For best results, pair a
222
+ * displacement map with a matching normal map, since the renderer can
223
+ * not recompute surface normals from the displaced vertices.
224
+ *
225
+ * `displacementMap` represents non-color data. Any texture assigned must have
226
+ * `texture.colorSpace = NoColorSpace` (default).
200
227
  *
201
228
  * @type {?Texture}
202
229
  * @default null
@@ -228,6 +255,10 @@ class MeshPhongMaterial extends Material {
228
255
  * highlight contributes and how much of the environment map affects the
229
256
  * surface.
230
257
  *
258
+ * `specularMap` represents color data, and the texture must be assigned a
259
+ * {@link Texture#colorSpace}. Most `specularMap` textures set
260
+ * `texture.colorSpace = SRGBColorSpace`.
261
+ *
231
262
  * @type {?Texture}
232
263
  * @default null
233
264
  */
@@ -243,6 +274,9 @@ class MeshPhongMaterial extends Material {
243
274
  * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
244
275
  * luminance/alpha textures will also still work as expected.
245
276
  *
277
+ * `alphaMap` represents non-color data. Any texture assigned must have
278
+ * `texture.colorSpace = NoColorSpace` (default).
279
+ *
246
280
  * @type {?Texture}
247
281
  * @default null
248
282
  */
@@ -251,6 +285,11 @@ class MeshPhongMaterial extends Material {
251
285
  /**
252
286
  * The environment map.
253
287
  *
288
+ * `envMap` represents luminance data, and the texture must be assigned
289
+ * a {@link Texture#colorSpace}. Most `envMap` textures set
290
+ * `texture.colorSpace = LinearSRGBColorSpace` and use float-type formats
291
+ * such as `.exr` or `.hdr`.
292
+ *
254
293
  * @type {?Texture}
255
294
  * @default null
256
295
  */
@@ -284,6 +323,14 @@ class MeshPhongMaterial extends Material {
284
323
  */
285
324
  this.reflectivity = 1;
286
325
 
326
+ /**
327
+ * Scales the effect of the environment map by multiplying its color.
328
+ *
329
+ * @type {number}
330
+ * @default 1
331
+ */
332
+ this.envMapIntensity = 1.0;
333
+
287
334
  /**
288
335
  * The index of refraction (IOR) of air (approximately 1) divided by the
289
336
  * index of refraction of the material. It is used with environment mapping
@@ -392,6 +439,7 @@ class MeshPhongMaterial extends Material {
392
439
  this.envMapRotation.copy( source.envMapRotation );
393
440
  this.combine = source.combine;
394
441
  this.reflectivity = source.reflectivity;
442
+ this.envMapIntensity = source.envMapIntensity;
395
443
  this.refractionRatio = source.refractionRatio;
396
444
 
397
445
  this.wireframe = source.wireframe;
@@ -77,6 +77,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
77
77
  * bitangent space, to be rotated by `anisotropyRotation`. The blue channel
78
78
  * contains strength as `[0, 1]` to be multiplied by `anisotropy`.
79
79
  *
80
+ * `anisotropyMap` represents non-color data. Any texture assigned must have
81
+ * `texture.colorSpace = NoColorSpace` (default).
82
+ *
80
83
  * @type {?Texture}
81
84
  * @default null
82
85
  */
@@ -86,6 +89,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
86
89
  * The red channel of this texture is multiplied against `clearcoat`,
87
90
  * for per-pixel control over a coating's intensity.
88
91
  *
92
+ * `clearcoatMap` represents non-color data. Any texture assigned must have
93
+ * `texture.colorSpace = NoColorSpace` (default).
94
+ *
89
95
  * @type {?Texture}
90
96
  * @default null
91
97
  */
@@ -103,6 +109,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
103
109
  * The green channel of this texture is multiplied against
104
110
  * `clearcoatRoughness`, for per-pixel control over a coating's roughness.
105
111
  *
112
+ * `clearcoatRoughnessMap` represents non-color data. Any texture assigned must have
113
+ * `texture.colorSpace = NoColorSpace` (default).
114
+ *
106
115
  * @type {?Texture}
107
116
  * @default null
108
117
  */
@@ -120,6 +129,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
120
129
  /**
121
130
  * Can be used to enable independent normals for the clear coat layer.
122
131
  *
132
+ * `clearcoatNormalMap` represents non-color data. Any texture assigned must have
133
+ * `texture.colorSpace = NoColorSpace` (default).
134
+ *
123
135
  * @type {?Texture}
124
136
  * @default null
125
137
  */
@@ -161,6 +173,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
161
173
  * The red channel of this texture is multiplied against `iridescence`, for per-pixel
162
174
  * control over iridescence.
163
175
  *
176
+ * `iridescenceMap` represents non-color data. Any texture assigned must have
177
+ * `texture.colorSpace = NoColorSpace` (default).
178
+ *
164
179
  * @type {?Texture}
165
180
  * @default null
166
181
  */
@@ -191,6 +206,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
191
206
  * - `1.0` in the green channel will result in thickness equal to second element of the array.
192
207
  * - Values in-between will linearly interpolate between the elements of the array.
193
208
  *
209
+ * `iridescenceThicknessMap` represents non-color data. Any texture assigned must have
210
+ * `texture.colorSpace = NoColorSpace` (default).
211
+ *
194
212
  * @type {?Texture}
195
213
  * @default null
196
214
  */
@@ -208,6 +226,10 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
208
226
  * The RGB channels of this texture are multiplied against `sheenColor`, for per-pixel control
209
227
  * over sheen tint.
210
228
  *
229
+ * `sheenColorMap` represents color data, and the texture must be assigned a
230
+ * {@link Texture#colorSpace}. Most `sheenColorMap` textures set
231
+ * `texture.colorSpace = SRGBColorSpace`.
232
+ *
211
233
  * @type {?Texture}
212
234
  * @default null
213
235
  */
@@ -225,6 +247,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
225
247
  * The alpha channel of this texture is multiplied against `sheenRoughness`, for per-pixel control
226
248
  * over sheen roughness.
227
249
  *
250
+ * `sheenRoughnessMap` represents non-color data. Any texture assigned must have
251
+ * `texture.colorSpace = NoColorSpace` (default).
252
+ *
228
253
  * @type {?Texture}
229
254
  * @default null
230
255
  */
@@ -234,6 +259,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
234
259
  * The red channel of this texture is multiplied against `transmission`, for per-pixel control over
235
260
  * optical transparency.
236
261
  *
262
+ * `transmissionMap` represents non-color data. Any texture assigned must have
263
+ * `texture.colorSpace = NoColorSpace` (default).
264
+ *
237
265
  * @type {?Texture}
238
266
  * @default null
239
267
  */
@@ -253,6 +281,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
253
281
  * A texture that defines the thickness, stored in the green channel. This will
254
282
  * be multiplied by `thickness`.
255
283
  *
284
+ * `thicknessMap` represents non-color data. Any texture assigned must have
285
+ * `texture.colorSpace = NoColorSpace` (default).
286
+ *
256
287
  * @type {?Texture}
257
288
  * @default null
258
289
  */
@@ -290,6 +321,9 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
290
321
  * The alpha channel of this texture is multiplied against `specularIntensity`,
291
322
  * for per-pixel control over specular intensity.
292
323
  *
324
+ * `specularIntensityMap` represents non-color data. Any texture assigned must have
325
+ * `texture.colorSpace = NoColorSpace` (default).
326
+ *
293
327
  * @type {?Texture}
294
328
  * @default null
295
329
  */
@@ -307,6 +341,10 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
307
341
  * The RGB channels of this texture are multiplied against `specularColor`,
308
342
  * for per-pixel control over specular color.
309
343
  *
344
+ * `specularColorMap` represents color data, and the texture must be assigned a
345
+ * {@link Texture#colorSpace}. Most `specularColorMap` textures set
346
+ * `texture.colorSpace = SRGBColorSpace`.
347
+ *
310
348
  * @type {?Texture}
311
349
  * @default null
312
350
  */
@@ -100,6 +100,10 @@ class MeshStandardMaterial extends Material {
100
100
  * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
101
101
  * color is modulated by the diffuse `color`.
102
102
  *
103
+ * `map` represents color data, and the texture must be assigned a
104
+ * {@link Texture#colorSpace}. Most `map` textures set
105
+ * `texture.colorSpace = SRGBColorSpace`.
106
+ *
103
107
  * @type {?Texture}
104
108
  * @default null
105
109
  */
@@ -108,6 +112,11 @@ class MeshStandardMaterial extends Material {
108
112
  /**
109
113
  * The light map. Requires a second set of UVs.
110
114
  *
115
+ * `lightMap` represents pre-baked illuminance data, and the texture must be assigned
116
+ * a {@link Texture#colorSpace}. Most `lightMap` textures set
117
+ * `texture.colorSpace = LinearSRGBColorSpace` and use float-type formats
118
+ * such as `.exr` or `.hdr`.
119
+ *
111
120
  * @type {?Texture}
112
121
  * @default null
113
122
  */
@@ -125,6 +134,9 @@ class MeshStandardMaterial extends Material {
125
134
  * The red channel of this texture is used as the ambient occlusion map.
126
135
  * Requires a second set of UVs.
127
136
  *
137
+ * `aoMap` represents non-color data. Any texture assigned must have
138
+ * `texture.colorSpace = NoColorSpace` (default).
139
+ *
128
140
  * @type {?Texture}
129
141
  * @default null
130
142
  */
@@ -162,6 +174,10 @@ class MeshStandardMaterial extends Material {
162
174
  * emissive color and the emissive intensity. If you have an emissive map,
163
175
  * be sure to set the emissive color to something other than black.
164
176
  *
177
+ * `emissiveMap` represents color data, and the texture must be assigned a
178
+ * {@link Texture#colorSpace}. Most `emissiveMap` textures set
179
+ * `texture.colorSpace = SRGBColorSpace`.
180
+ *
165
181
  * @type {?Texture}
166
182
  * @default null
167
183
  */
@@ -173,6 +189,9 @@ class MeshStandardMaterial extends Material {
173
189
  * the geometry of the object, only the lighting. If a normal map is defined
174
190
  * this will be ignored.
175
191
  *
192
+ * `bumpMap` represents non-color data. Any texture assigned must have
193
+ * `texture.colorSpace = NoColorSpace` (default).
194
+ *
176
195
  * @type {?Texture}
177
196
  * @default null
178
197
  */
@@ -194,6 +213,9 @@ class MeshStandardMaterial extends Material {
194
213
  * convention, the `y` component of `normalScale` should be negated to compensate
195
214
  * for the different handedness.
196
215
  *
216
+ * `normalMap` represents non-color data. Any texture assigned must have
217
+ * `texture.colorSpace = NoColorSpace` (default).
218
+ *
197
219
  * @type {?Texture}
198
220
  * @default null
199
221
  */
@@ -221,7 +243,12 @@ class MeshStandardMaterial extends Material {
221
243
  * displaced vertices can cast shadows, block other objects, and otherwise
222
244
  * act as real geometry. The displacement texture is an image where the value
223
245
  * of each pixel (white being the highest) is mapped against, and
224
- * repositions, the vertices of the mesh.
246
+ * repositions, the vertices of the mesh. For best results, pair a
247
+ * displacement map with a matching normal map, since the renderer can
248
+ * not recompute surface normals from the displaced vertices.
249
+ *
250
+ * `displacementMap` represents non-color data. Any texture assigned must have
251
+ * `texture.colorSpace = NoColorSpace` (default).
225
252
  *
226
253
  * @type {?Texture}
227
254
  * @default null
@@ -252,6 +279,9 @@ class MeshStandardMaterial extends Material {
252
279
  * The green channel of this texture is used to alter the roughness of the
253
280
  * material.
254
281
  *
282
+ * `roughnessMap` represents non-color data. Any texture assigned must have
283
+ * `texture.colorSpace = NoColorSpace` (default).
284
+ *
255
285
  * @type {?Texture}
256
286
  * @default null
257
287
  */
@@ -261,6 +291,9 @@ class MeshStandardMaterial extends Material {
261
291
  * The blue channel of this texture is used to alter the metalness of the
262
292
  * material.
263
293
  *
294
+ * `metalnessMap` represents non-color data. Any texture assigned must have
295
+ * `texture.colorSpace = NoColorSpace` (default).
296
+ *
264
297
  * @type {?Texture}
265
298
  * @default null
266
299
  */
@@ -276,6 +309,9 @@ class MeshStandardMaterial extends Material {
276
309
  * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
277
310
  * luminance/alpha textures will also still work as expected.
278
311
  *
312
+ * `alphaMap` represents non-color data. Any texture assigned must have
313
+ * `texture.colorSpace = NoColorSpace` (default).
314
+ *
279
315
  * @type {?Texture}
280
316
  * @default null
281
317
  */
@@ -285,6 +321,11 @@ class MeshStandardMaterial extends Material {
285
321
  * The environment map. To ensure a physically correct rendering, environment maps
286
322
  * are internally pre-processed with {@link PMREMGenerator}.
287
323
  *
324
+ * `envMap` represents luminance data, and the texture must be assigned
325
+ * a {@link Texture#colorSpace}. Most `envMap` textures set
326
+ * `texture.colorSpace = LinearSRGBColorSpace` and use float-type formats
327
+ * such as `.exr` or `.hdr`.
328
+ *
288
329
  * @type {?Texture}
289
330
  * @default null
290
331
  */
@@ -50,6 +50,10 @@ class MeshToonMaterial extends Material {
50
50
  * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
51
51
  * color is modulated by the diffuse `color`.
52
52
  *
53
+ * `map` represents color data, and the texture must be assigned a
54
+ * {@link Texture#colorSpace}. Most `map` textures set
55
+ * `texture.colorSpace = SRGBColorSpace`.
56
+ *
53
57
  * @type {?Texture}
54
58
  * @default null
55
59
  */
@@ -57,9 +61,12 @@ class MeshToonMaterial extends Material {
57
61
 
58
62
  /**
59
63
  * Gradient map for toon shading. It's required to set
60
- * {@link Texture#minFilter} and {@link Texture#magFilter} to {@linkNearestFilter}
64
+ * {@link Texture#minFilter} and {@link Texture#magFilter} to {@link NearestFilter}
61
65
  * when using this type of texture.
62
66
  *
67
+ * `gradientMap` represents non-color data. Any texture assigned must have
68
+ * `texture.colorSpace = NoColorSpace` (default).
69
+ *
63
70
  * @type {?Texture}
64
71
  * @default null
65
72
  */
@@ -68,6 +75,11 @@ class MeshToonMaterial extends Material {
68
75
  /**
69
76
  * The light map. Requires a second set of UVs.
70
77
  *
78
+ * `lightMap` represents pre-baked illuminance data, and the texture must be assigned
79
+ * a {@link Texture#colorSpace}. Most `lightMap` textures set
80
+ * `texture.colorSpace = LinearSRGBColorSpace` and use float-type formats
81
+ * such as `.exr` or `.hdr`.
82
+ *
71
83
  * @type {?Texture}
72
84
  * @default null
73
85
  */
@@ -85,6 +97,9 @@ class MeshToonMaterial extends Material {
85
97
  * The red channel of this texture is used as the ambient occlusion map.
86
98
  * Requires a second set of UVs.
87
99
  *
100
+ * `aoMap` represents non-color data. Any texture assigned must have
101
+ * `texture.colorSpace = NoColorSpace` (default).
102
+ *
88
103
  * @type {?Texture}
89
104
  * @default null
90
105
  */
@@ -122,6 +137,10 @@ class MeshToonMaterial extends Material {
122
137
  * emissive color and the emissive intensity. If you have an emissive map,
123
138
  * be sure to set the emissive color to something other than black.
124
139
  *
140
+ * `emissiveMap` represents color data, and the texture must be assigned a
141
+ * {@link Texture#colorSpace}. Most `emissiveMap` textures set
142
+ * `texture.colorSpace = SRGBColorSpace`.
143
+ *
125
144
  * @type {?Texture}
126
145
  * @default null
127
146
  */
@@ -133,6 +152,9 @@ class MeshToonMaterial extends Material {
133
152
  * the geometry of the object, only the lighting. If a normal map is defined
134
153
  * this will be ignored.
135
154
  *
155
+ * `bumpMap` represents non-color data. Any texture assigned must have
156
+ * `texture.colorSpace = NoColorSpace` (default).
157
+ *
136
158
  * @type {?Texture}
137
159
  * @default null
138
160
  */
@@ -154,6 +176,9 @@ class MeshToonMaterial extends Material {
154
176
  * convention, the `y` component of `normalScale` should be negated to compensate
155
177
  * for the different handedness.
156
178
  *
179
+ * `normalMap` represents non-color data. Any texture assigned must have
180
+ * `texture.colorSpace = NoColorSpace` (default).
181
+ *
157
182
  * @type {?Texture}
158
183
  * @default null
159
184
  */
@@ -181,7 +206,12 @@ class MeshToonMaterial extends Material {
181
206
  * displaced vertices can cast shadows, block other objects, and otherwise
182
207
  * act as real geometry. The displacement texture is an image where the value
183
208
  * of each pixel (white being the highest) is mapped against, and
184
- * repositions, the vertices of the mesh.
209
+ * repositions, the vertices of the mesh. For best results, pair a
210
+ * displacement map with a matching normal map, since the renderer can
211
+ * not recompute surface normals from the displaced vertices.
212
+ *
213
+ * `displacementMap` represents non-color data. Any texture assigned must have
214
+ * `texture.colorSpace = NoColorSpace` (default).
185
215
  *
186
216
  * @type {?Texture}
187
217
  * @default null
@@ -218,6 +248,9 @@ class MeshToonMaterial extends Material {
218
248
  * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
219
249
  * luminance/alpha textures will also still work as expected.
220
250
  *
251
+ * `alphaMap` represents non-color data. Any texture assigned must have
252
+ * `texture.colorSpace = NoColorSpace` (default).
253
+ *
221
254
  * @type {?Texture}
222
255
  * @default null
223
256
  */
@@ -65,6 +65,10 @@ class PointsMaterial extends Material {
65
65
  * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
66
66
  * color is modulated by the diffuse `color`.
67
67
  *
68
+ * `map` represents color data, and the texture must be assigned a
69
+ * {@link Texture#colorSpace}. Most `map` textures set
70
+ * `texture.colorSpace = SRGBColorSpace`.
71
+ *
68
72
  * @type {?Texture}
69
73
  * @default null
70
74
  */
@@ -80,6 +84,9 @@ class PointsMaterial extends Material {
80
84
  * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
81
85
  * luminance/alpha textures will also still work as expected.
82
86
  *
87
+ * `alphaMap` represents non-color data. Any texture assigned must have
88
+ * `texture.colorSpace = NoColorSpace` (default).
89
+ *
83
90
  * @type {?Texture}
84
91
  * @default null
85
92
  */
@@ -1,5 +1,11 @@
1
1
  import { Material } from './Material.js';
2
2
  import { cloneUniforms, cloneUniformsGroups } from '../renderers/shaders/UniformsUtils.js';
3
+ import { Color } from '../math/Color.js';
4
+ import { Vector2 } from '../math/Vector2.js';
5
+ import { Vector3 } from '../math/Vector3.js';
6
+ import { Vector4 } from '../math/Vector4.js';
7
+ import { Matrix3 } from '../math/Matrix3.js';
8
+ import { Matrix4 } from '../math/Matrix4.js';
3
9
 
4
10
  import default_vertex from '../renderers/shaders/ShaderChunk/default_vertex.glsl.js';
5
11
  import default_fragment from '../renderers/shaders/ShaderChunk/default_fragment.glsl.js';
@@ -158,9 +164,22 @@ class ShaderMaterial extends Material {
158
164
  this.wireframeLinewidth = 1;
159
165
 
160
166
  /**
161
- * Define whether the material color is affected by global fog settings; `true`
167
+ * Defines whether the material color is affected by global fog settings; `true`
162
168
  * to pass fog uniforms to the shader.
163
169
  *
170
+ * Setting this property to `true` requires the definition of fog uniforms. It is
171
+ * recommended to use `UniformsUtils.merge()` to combine the custom shader uniforms
172
+ * with predefined fog uniforms.
173
+ *
174
+ * ```js
175
+ * const material = new ShaderMaterial( {
176
+ * uniforms: UniformsUtils.merge( [ UniformsLib[ 'fog' ], shaderUniforms ] );
177
+ * vertexShader: vertexShader,
178
+ * fragmentShader: fragmentShader,
179
+ * fog: true
180
+ * } );
181
+ * ```
182
+ *
164
183
  * @type {boolean}
165
184
  * @default false
166
185
  */
@@ -279,6 +298,12 @@ class ShaderMaterial extends Material {
279
298
 
280
299
  this.glslVersion = source.glslVersion;
281
300
 
301
+ this.defaultAttributeValues = Object.assign( {}, source.defaultAttributeValues );
302
+
303
+ this.index0AttributeName = source.index0AttributeName;
304
+
305
+ this.uniformsNeedUpdate = source.uniformsNeedUpdate;
306
+
282
307
  return this;
283
308
 
284
309
  }
@@ -378,6 +403,86 @@ class ShaderMaterial extends Material {
378
403
 
379
404
  }
380
405
 
406
+ /**
407
+ * Deserializes the material from the given JSON.
408
+ *
409
+ * @param {Object} json - The JSON holding the serialized material.
410
+ * @param {Object<string,Texture>} textures - A dictionary holding textures referenced by the material.
411
+ * @return {ShaderMaterial} A reference to this material.
412
+ */
413
+ fromJSON( json, textures ) {
414
+
415
+ super.fromJSON( json, textures );
416
+
417
+ if ( json.uniforms !== undefined ) {
418
+
419
+ for ( const name in json.uniforms ) {
420
+
421
+ const uniform = json.uniforms[ name ];
422
+
423
+ this.uniforms[ name ] = {};
424
+
425
+ switch ( uniform.type ) {
426
+
427
+ case 't':
428
+ this.uniforms[ name ].value = textures[ uniform.value ] || null;
429
+ break;
430
+
431
+ case 'c':
432
+ this.uniforms[ name ].value = new Color().setHex( uniform.value );
433
+ break;
434
+
435
+ case 'v2':
436
+ this.uniforms[ name ].value = new Vector2().fromArray( uniform.value );
437
+ break;
438
+
439
+ case 'v3':
440
+ this.uniforms[ name ].value = new Vector3().fromArray( uniform.value );
441
+ break;
442
+
443
+ case 'v4':
444
+ this.uniforms[ name ].value = new Vector4().fromArray( uniform.value );
445
+ break;
446
+
447
+ case 'm3':
448
+ this.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );
449
+ break;
450
+
451
+ case 'm4':
452
+ this.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );
453
+ break;
454
+
455
+ default:
456
+ this.uniforms[ name ].value = uniform.value;
457
+
458
+ }
459
+
460
+ }
461
+
462
+ }
463
+
464
+ if ( json.defines !== undefined ) this.defines = json.defines;
465
+ if ( json.vertexShader !== undefined ) this.vertexShader = json.vertexShader;
466
+ if ( json.fragmentShader !== undefined ) this.fragmentShader = json.fragmentShader;
467
+ if ( json.glslVersion !== undefined ) this.glslVersion = json.glslVersion;
468
+
469
+ if ( json.extensions !== undefined ) {
470
+
471
+ for ( const key in json.extensions ) {
472
+
473
+ this.extensions[ key ] = json.extensions[ key ];
474
+
475
+ }
476
+
477
+ }
478
+
479
+ if ( json.lights !== undefined ) this.lights = json.lights;
480
+ if ( json.clipping !== undefined ) this.clipping = json.clipping;
481
+
482
+ return this;
483
+
484
+ }
485
+
381
486
  }
382
487
 
383
488
  /**
@@ -54,6 +54,10 @@ class SpriteMaterial extends Material {
54
54
  * with {@link Material#transparent} or {@link Material#alphaTest}. The texture map
55
55
  * color is modulated by the diffuse `color`.
56
56
  *
57
+ * `map` represents color data, and the texture must be assigned a
58
+ * {@link Texture#colorSpace}. Most `map` textures set
59
+ * `texture.colorSpace = SRGBColorSpace`.
60
+ *
57
61
  * @type {?Texture}
58
62
  * @default null
59
63
  */
@@ -69,6 +73,9 @@ class SpriteMaterial extends Material {
69
73
  * green in DXT-compressed and uncompressed RGB 565 formats. Luminance-only and
70
74
  * luminance/alpha textures will also still work as expected.
71
75
  *
76
+ * `alphaMap` represents non-color data. Any texture assigned must have
77
+ * `texture.colorSpace = NoColorSpace` (default).
78
+ *
72
79
  * @type {?Texture}
73
80
  * @default null
74
81
  */