super-three 0.141.0 → 0.144.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 (353) hide show
  1. package/README.md +8 -8
  2. package/build/three.cjs +1558 -1034
  3. package/build/three.js +1558 -1034
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2012 -1243
  6. package/examples/js/animation/MMDPhysics.js +1 -16
  7. package/examples/js/controls/ArcballControls.js +16 -3
  8. package/examples/js/controls/FirstPersonControls.js +0 -7
  9. package/examples/js/controls/FlyControls.js +0 -8
  10. package/examples/js/controls/OrbitControls.js +0 -4
  11. package/examples/js/controls/PointerLockControls.js +0 -8
  12. package/examples/js/controls/TrackballControls.js +0 -2
  13. package/examples/js/controls/TransformControls.js +20 -16
  14. package/examples/js/effects/AnaglyphEffect.js +2 -2
  15. package/examples/js/effects/OutlineEffect.js +4 -24
  16. package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
  17. package/examples/js/effects/PeppersGhostEffect.js +2 -2
  18. package/examples/js/effects/StereoEffect.js +2 -2
  19. package/examples/js/environments/RoomEnvironment.js +22 -0
  20. package/examples/js/exporters/ColladaExporter.js +4 -13
  21. package/examples/js/exporters/DRACOExporter.js +0 -12
  22. package/examples/js/exporters/GLTFExporter.js +28 -29
  23. package/examples/js/exporters/OBJExporter.js +2 -23
  24. package/examples/js/exporters/PLYExporter.js +12 -24
  25. package/examples/js/exporters/STLExporter.js +0 -7
  26. package/examples/js/exporters/USDZExporter.js +6 -0
  27. package/examples/js/geometries/ConvexGeometry.js +1 -1
  28. package/examples/js/geometries/ParametricGeometry.js +1 -8
  29. package/examples/js/interactive/SelectionHelper.js +2 -0
  30. package/examples/js/libs/ktx-parse.umd.js +1 -0
  31. package/examples/js/libs/meshopt_decoder.js +98 -32
  32. package/examples/js/loaders/ColladaLoader.js +1 -0
  33. package/examples/js/loaders/DRACOLoader.js +2 -25
  34. package/examples/js/loaders/EXRLoader.js +2 -13
  35. package/examples/js/loaders/FBXLoader.js +10 -3
  36. package/examples/js/loaders/FontLoader.js +3 -16
  37. package/examples/js/loaders/GLTFLoader.js +52 -36
  38. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
  39. package/examples/js/loaders/LDrawLoader.js +139 -74
  40. package/examples/js/loaders/OBJLoader.js +7 -13
  41. package/examples/js/loaders/PCDLoader.js +59 -14
  42. package/examples/js/loaders/PLYLoader.js +3 -3
  43. package/examples/js/loaders/SVGLoader.js +4 -3
  44. package/examples/js/loaders/TIFFLoader.js +31 -0
  45. package/examples/js/loaders/VRMLLoader.js +33 -24
  46. package/examples/js/loaders/VTKLoader.js +1 -1
  47. package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
  48. package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
  49. package/examples/js/materials/MeshGouraudMaterial.js +385 -0
  50. package/examples/js/math/ColorConverter.js +0 -50
  51. package/examples/js/misc/GPUComputationRenderer.js +23 -0
  52. package/examples/js/misc/Volume.js +198 -190
  53. package/examples/js/misc/VolumeSlice.js +90 -88
  54. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  55. package/examples/js/objects/GroundProjectedEnv.js +193 -0
  56. package/examples/js/objects/Reflector.js +9 -2
  57. package/examples/js/objects/ReflectorForSSRPass.js +3 -4
  58. package/examples/js/objects/Refractor.js +10 -4
  59. package/examples/js/objects/ShadowMesh.js +5 -1
  60. package/examples/js/postprocessing/OutlinePass.js +5 -3
  61. package/examples/js/renderers/CSS2DRenderer.js +2 -2
  62. package/examples/js/renderers/CSS3DRenderer.js +2 -2
  63. package/examples/js/renderers/Projector.js +2 -23
  64. package/examples/js/shaders/LuminosityShader.js +1 -1
  65. package/examples/js/shaders/MMDToonShader.js +6 -2
  66. package/examples/js/shaders/ToneMapShader.js +1 -1
  67. package/examples/js/utils/BufferGeometryUtils.js +1 -1
  68. package/examples/js/utils/GeometryUtils.js +2 -18
  69. package/examples/js/utils/PackedPhongMaterial.js +1 -1
  70. package/examples/js/utils/SceneUtils.js +0 -16
  71. package/examples/jsm/animation/MMDPhysics.js +3 -22
  72. package/examples/jsm/controls/ArcballControls.js +17 -2
  73. package/examples/jsm/controls/FirstPersonControls.js +0 -7
  74. package/examples/jsm/controls/FlyControls.js +0 -7
  75. package/examples/jsm/controls/OrbitControls.js +0 -5
  76. package/examples/jsm/controls/PointerLockControls.js +0 -7
  77. package/examples/jsm/controls/TrackballControls.js +0 -3
  78. package/examples/jsm/controls/TransformControls.js +18 -16
  79. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  80. package/examples/jsm/effects/OutlineEffect.js +4 -25
  81. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  82. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  83. package/examples/jsm/effects/StereoEffect.js +2 -2
  84. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  85. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  86. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  87. package/examples/jsm/exporters/GLTFExporter.js +29 -31
  88. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  89. package/examples/jsm/exporters/OBJExporter.js +0 -18
  90. package/examples/jsm/exporters/PLYExporter.js +14 -22
  91. package/examples/jsm/exporters/STLExporter.js +1 -9
  92. package/examples/jsm/exporters/USDZExporter.js +14 -3
  93. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  94. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  95. package/examples/jsm/interactive/HTMLMesh.js +9 -9
  96. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  97. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  98. package/examples/jsm/libs/utif.module.js +1579 -0
  99. package/examples/jsm/libs/zstddec.module.js +1 -0
  100. package/examples/jsm/loaders/ColladaLoader.js +1 -0
  101. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  102. package/examples/jsm/loaders/EXRLoader.js +3 -13
  103. package/examples/jsm/loaders/FBXLoader.js +10 -3
  104. package/examples/jsm/loaders/FontLoader.js +3 -16
  105. package/examples/jsm/loaders/GLTFLoader.js +52 -36
  106. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  107. package/examples/jsm/loaders/KTX2Loader.js +192 -30
  108. package/examples/jsm/loaders/LDrawLoader.js +135 -74
  109. package/examples/jsm/loaders/OBJLoader.js +6 -14
  110. package/examples/jsm/loaders/PCDLoader.js +59 -13
  111. package/examples/jsm/loaders/PLYLoader.js +3 -3
  112. package/examples/jsm/loaders/RGBELoader.js +1 -1
  113. package/examples/jsm/loaders/SVGLoader.js +4 -3
  114. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  115. package/examples/jsm/loaders/USDZLoader.js +393 -0
  116. package/examples/jsm/loaders/VRMLLoader.js +23 -25
  117. package/examples/jsm/loaders/VTKLoader.js +1 -1
  118. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  119. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  120. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  121. package/examples/jsm/math/ColorConverter.js +1 -49
  122. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  123. package/examples/jsm/misc/Volume.js +169 -171
  124. package/examples/jsm/misc/VolumeSlice.js +78 -80
  125. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  126. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  127. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  128. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  129. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  130. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  131. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  132. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  133. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  134. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  135. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  136. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  137. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  138. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  139. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
  140. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  141. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
  142. package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
  143. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  144. package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
  145. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  146. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  147. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  148. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  149. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  150. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  151. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  152. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  153. package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
  154. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  155. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  156. package/examples/jsm/nodes/Nodes.js +43 -13
  157. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  158. package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
  159. package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
  160. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  161. package/examples/jsm/nodes/core/AttributeNode.js +3 -3
  162. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  163. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  164. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  165. package/examples/jsm/nodes/core/Node.js +14 -12
  166. package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
  167. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  168. package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
  169. package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
  170. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
  171. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  172. package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
  173. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  174. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  175. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  176. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
  177. package/examples/jsm/nodes/materials/Materials.js +13 -25
  178. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  179. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  180. package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
  181. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  182. package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
  183. package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
  184. package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
  185. package/examples/jsm/nodes/math/MathNode.js +2 -12
  186. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  187. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  188. package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
  189. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
  190. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
  191. package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
  192. package/examples/jsm/nodes/utils/JoinNode.js +7 -7
  193. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
  194. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  195. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  196. package/examples/jsm/nodes/utils/TimerNode.js +2 -2
  197. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  198. package/examples/jsm/objects/Reflector.js +12 -5
  199. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  200. package/examples/jsm/objects/Refractor.js +12 -6
  201. package/examples/jsm/objects/ShadowMesh.js +8 -2
  202. package/examples/jsm/postprocessing/OutlinePass.js +5 -3
  203. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  204. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  205. package/examples/jsm/renderers/Projector.js +2 -24
  206. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  207. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
  208. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  209. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
  210. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  211. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  212. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  213. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  214. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  215. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  216. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
  217. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  218. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  219. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  220. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
  221. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  222. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  223. package/examples/jsm/shaders/MMDToonShader.js +2 -2
  224. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  225. package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
  226. package/examples/jsm/utils/GeometryUtils.js +17 -25
  227. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  228. package/examples/jsm/utils/SceneUtils.js +1 -21
  229. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  230. package/examples/jsm/webxr/VRButton.js +1 -7
  231. package/package.json +18 -14
  232. package/src/Three.Legacy.js +262 -36
  233. package/src/Three.js +3 -2
  234. package/src/animation/AnimationAction.js +6 -5
  235. package/src/animation/AnimationClip.js +1 -1
  236. package/src/animation/AnimationMixer.js +1 -1
  237. package/src/animation/AnimationUtils.js +204 -199
  238. package/src/animation/KeyframeTrack.js +1 -1
  239. package/src/animation/PropertyBinding.js +24 -5
  240. package/src/cameras/CubeCamera.js +0 -7
  241. package/src/constants.js +2 -4
  242. package/src/core/BufferAttribute.js +81 -111
  243. package/src/core/BufferGeometry.js +3 -41
  244. package/src/core/InstancedBufferAttribute.js +0 -10
  245. package/src/core/InterleavedBuffer.js +1 -1
  246. package/src/core/InterleavedBufferAttribute.js +56 -7
  247. package/src/core/Object3D.js +22 -5
  248. package/src/core/Uniform.js +0 -7
  249. package/src/core/UniformsGroup.js +92 -0
  250. package/src/extras/DataUtils.js +104 -88
  251. package/src/extras/core/Path.js +1 -0
  252. package/src/extras/core/ShapePath.js +1 -4
  253. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  254. package/src/geometries/BoxGeometry.js +1 -1
  255. package/src/geometries/CapsuleGeometry.js +1 -1
  256. package/src/geometries/CircleGeometry.js +1 -1
  257. package/src/geometries/ConeGeometry.js +1 -1
  258. package/src/geometries/CylinderGeometry.js +2 -1
  259. package/src/geometries/DodecahedronGeometry.js +1 -1
  260. package/src/geometries/EdgesGeometry.js +5 -4
  261. package/src/geometries/ExtrudeGeometry.js +2 -11
  262. package/src/geometries/IcosahedronGeometry.js +1 -1
  263. package/src/geometries/LatheGeometry.js +2 -2
  264. package/src/geometries/OctahedronGeometry.js +1 -1
  265. package/src/geometries/PlaneGeometry.js +2 -1
  266. package/src/geometries/PolyhedronGeometry.js +1 -1
  267. package/src/geometries/RingGeometry.js +1 -1
  268. package/src/geometries/ShapeGeometry.js +2 -1
  269. package/src/geometries/SphereGeometry.js +2 -1
  270. package/src/geometries/TetrahedronGeometry.js +1 -1
  271. package/src/geometries/TorusGeometry.js +2 -1
  272. package/src/geometries/TorusKnotGeometry.js +2 -1
  273. package/src/geometries/TubeGeometry.js +2 -1
  274. package/src/geometries/WireframeGeometry.js +1 -0
  275. package/src/helpers/CameraHelper.js +97 -38
  276. package/src/helpers/DirectionalLightHelper.js +1 -0
  277. package/src/helpers/HemisphereLightHelper.js +1 -0
  278. package/src/helpers/PlaneHelper.js +6 -9
  279. package/src/helpers/PolarGridHelper.js +18 -14
  280. package/src/helpers/SpotLightHelper.js +1 -0
  281. package/src/lights/SpotLight.js +2 -0
  282. package/src/loaders/FileLoader.js +12 -1
  283. package/src/loaders/LoadingManager.js +1 -1
  284. package/src/loaders/MaterialLoader.js +49 -7
  285. package/src/loaders/ObjectLoader.js +4 -41
  286. package/src/materials/Material.js +1 -33
  287. package/src/materials/Materials.js +0 -27
  288. package/src/materials/MeshLambertMaterial.js +28 -1
  289. package/src/materials/ShaderMaterial.js +3 -7
  290. package/src/math/Color.js +3 -13
  291. package/src/math/MathUtils.js +1 -7
  292. package/src/math/Matrix3.js +1 -7
  293. package/src/math/Matrix4.js +3 -27
  294. package/src/math/Quaternion.js +1 -21
  295. package/src/math/Vector2.js +4 -24
  296. package/src/math/Vector3.js +7 -46
  297. package/src/math/Vector4.js +4 -24
  298. package/src/renderers/WebGLRenderer.js +84 -8
  299. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  300. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  301. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  302. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  303. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  304. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  305. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  306. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  307. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
  308. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  309. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
  310. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  311. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  312. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  313. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  314. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  315. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  316. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  317. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  318. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  319. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  320. package/src/renderers/shaders/ShaderChunk.js +4 -2
  321. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  322. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  323. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  324. package/src/renderers/shaders/ShaderLib.js +31 -31
  325. package/src/renderers/shaders/UniformsLib.js +12 -11
  326. package/src/renderers/shaders/UniformsUtils.js +14 -0
  327. package/src/renderers/webgl/WebGLBackground.js +2 -2
  328. package/src/renderers/webgl/WebGLLights.js +37 -13
  329. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  330. package/src/renderers/webgl/WebGLProgram.js +6 -11
  331. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  332. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  333. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  334. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  335. package/src/renderers/webgl/WebGLShadowMap.js +10 -15
  336. package/src/renderers/webgl/WebGLState.js +47 -0
  337. package/src/renderers/webgl/WebGLUniforms.js +4 -4
  338. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  339. package/src/renderers/webgl/WebGLUtils.js +2 -0
  340. package/src/renderers/webvr/WebVRManager.js +42 -9
  341. package/src/renderers/webvr/WebVRUtils.js +1 -1
  342. package/src/renderers/webxr/WebXRController.js +45 -37
  343. package/src/renderers/webxr/WebXRManager.js +58 -33
  344. package/src/scenes/Scene.js +16 -3
  345. package/src/textures/Source.js +1 -1
  346. package/src/utils.js +1 -1
  347. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  348. package/examples/js/loaders/KTX2Loader.js +0 -558
  349. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  350. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  351. package/examples/jsm/package.json +0 -3
  352. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  353. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -28,7 +28,7 @@ float getShadowMask() {
28
28
  for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
29
29
 
30
30
  spotLight = spotLightShadows[ i ];
31
- shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
31
+ shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
32
32
 
33
33
  }
34
34
  #pragma unroll_loop_end
@@ -1,19 +1,21 @@
1
1
  export default /* glsl */`
2
2
  #ifdef USE_TRANSMISSION
3
3
 
4
- float transmissionAlpha = 1.0;
5
- float transmissionFactor = transmission;
6
- float thicknessFactor = thickness;
4
+ material.transmission = transmission;
5
+ material.transmissionAlpha = 1.0;
6
+ material.thickness = thickness;
7
+ material.attenuationDistance = attenuationDistance;
8
+ material.attenuationColor = attenuationColor;
7
9
 
8
10
  #ifdef USE_TRANSMISSIONMAP
9
11
 
10
- transmissionFactor *= texture2D( transmissionMap, vUv ).r;
12
+ material.transmission *= texture2D( transmissionMap, vUv ).r;
11
13
 
12
14
  #endif
13
15
 
14
16
  #ifdef USE_THICKNESSMAP
15
17
 
16
- thicknessFactor *= texture2D( thicknessMap, vUv ).g;
18
+ material.thickness *= texture2D( thicknessMap, vUv ).g;
17
19
 
18
20
  #endif
19
21
 
@@ -22,11 +24,13 @@ export default /* glsl */`
22
24
  vec3 n = inverseTransformDirection( normal, viewMatrix );
23
25
 
24
26
  vec4 transmission = getIBLVolumeRefraction(
25
- n, v, roughnessFactor, material.diffuseColor, material.specularColor, material.specularF90,
26
- pos, modelMatrix, viewMatrix, projectionMatrix, ior, thicknessFactor,
27
- attenuationColor, attenuationDistance );
27
+ n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
28
+ pos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,
29
+ material.attenuationColor, material.attenuationDistance );
30
+
31
+ material.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );
32
+
33
+ totalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );
28
34
 
29
- totalDiffuse = mix( totalDiffuse, transmission.rgb, transmissionFactor );
30
- transmissionAlpha = mix( transmissionAlpha, transmission.a, transmissionFactor );
31
35
  #endif
32
36
  `;
@@ -1,5 +1,5 @@
1
1
  export default /* glsl */`
2
- #if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION )
2
+ #if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0
3
3
 
4
4
  vec4 worldPosition = vec4( transformed, 1.0 );
5
5
 
@@ -38,7 +38,8 @@ import fog_pars_fragment from './ShaderChunk/fog_pars_fragment.glsl.js';
38
38
  import gradientmap_pars_fragment from './ShaderChunk/gradientmap_pars_fragment.glsl.js';
39
39
  import lightmap_fragment from './ShaderChunk/lightmap_fragment.glsl.js';
40
40
  import lightmap_pars_fragment from './ShaderChunk/lightmap_pars_fragment.glsl.js';
41
- import lights_lambert_vertex from './ShaderChunk/lights_lambert_vertex.glsl.js';
41
+ import lights_lambert_fragment from './ShaderChunk/lights_lambert_fragment.glsl.js';
42
+ import lights_lambert_pars_fragment from './ShaderChunk/lights_lambert_pars_fragment.glsl.js';
42
43
  import lights_pars_begin from './ShaderChunk/lights_pars_begin.glsl.js';
43
44
  import envmap_physical_pars_fragment from './ShaderChunk/envmap_physical_pars_fragment.glsl.js';
44
45
  import lights_toon_fragment from './ShaderChunk/lights_toon_fragment.glsl.js';
@@ -163,7 +164,8 @@ export const ShaderChunk = {
163
164
  gradientmap_pars_fragment: gradientmap_pars_fragment,
164
165
  lightmap_fragment: lightmap_fragment,
165
166
  lightmap_pars_fragment: lightmap_pars_fragment,
166
- lights_lambert_vertex: lights_lambert_vertex,
167
+ lights_lambert_fragment: lights_lambert_fragment,
168
+ lights_lambert_pars_fragment: lights_lambert_pars_fragment,
167
169
  lights_pars_begin: lights_pars_begin,
168
170
  lights_toon_fragment: lights_toon_fragment,
169
171
  lights_toon_pars_fragment: lights_toon_pars_fragment,
@@ -63,7 +63,6 @@ uniform float opacity;
63
63
  #include <lightmap_pars_fragment>
64
64
  #include <envmap_common_pars_fragment>
65
65
  #include <envmap_pars_fragment>
66
- #include <cube_uv_reflection_fragment>
67
66
  #include <fog_pars_fragment>
68
67
  #include <specularmap_pars_fragment>
69
68
  #include <logdepthbuf_pars_fragment>
@@ -1,22 +1,16 @@
1
1
  export const vertex = /* glsl */`
2
2
  #define LAMBERT
3
3
 
4
- varying vec3 vLightFront;
5
- varying vec3 vIndirectFront;
6
-
7
- #ifdef DOUBLE_SIDED
8
- varying vec3 vLightBack;
9
- varying vec3 vIndirectBack;
10
- #endif
4
+ varying vec3 vViewPosition;
11
5
 
12
6
  #include <common>
13
7
  #include <uv_pars_vertex>
14
8
  #include <uv2_pars_vertex>
9
+ #include <displacementmap_pars_vertex>
15
10
  #include <envmap_pars_vertex>
16
- #include <bsdfs>
17
- #include <lights_pars_begin>
18
11
  #include <color_pars_vertex>
19
12
  #include <fog_pars_vertex>
13
+ #include <normal_pars_vertex>
20
14
  #include <morphtarget_pars_vertex>
21
15
  #include <skinning_pars_vertex>
22
16
  #include <shadowmap_pars_vertex>
@@ -35,36 +29,33 @@ void main() {
35
29
  #include <skinbase_vertex>
36
30
  #include <skinnormal_vertex>
37
31
  #include <defaultnormal_vertex>
32
+ #include <normal_vertex>
38
33
 
39
34
  #include <begin_vertex>
40
35
  #include <morphtarget_vertex>
41
36
  #include <skinning_vertex>
37
+ #include <displacementmap_vertex>
42
38
  #include <project_vertex>
43
39
  #include <logdepthbuf_vertex>
44
40
  #include <clipping_planes_vertex>
45
41
 
42
+ vViewPosition = - mvPosition.xyz;
43
+
46
44
  #include <worldpos_vertex>
47
45
  #include <envmap_vertex>
48
- #include <lights_lambert_vertex>
49
46
  #include <shadowmap_vertex>
50
47
  #include <fog_vertex>
48
+
51
49
  }
52
50
  `;
53
51
 
54
52
  export const fragment = /* glsl */`
53
+ #define LAMBERT
54
+
55
55
  uniform vec3 diffuse;
56
56
  uniform vec3 emissive;
57
57
  uniform float opacity;
58
58
 
59
- varying vec3 vLightFront;
60
- varying vec3 vIndirectFront;
61
-
62
- #ifdef DOUBLE_SIDED
63
- varying vec3 vLightBack;
64
- varying vec3 vIndirectBack;
65
- #endif
66
-
67
-
68
59
  #include <common>
69
60
  #include <packing>
70
61
  #include <dithering_pars_fragment>
@@ -79,12 +70,14 @@ varying vec3 vIndirectFront;
79
70
  #include <emissivemap_pars_fragment>
80
71
  #include <envmap_common_pars_fragment>
81
72
  #include <envmap_pars_fragment>
82
- #include <cube_uv_reflection_fragment>
73
+ #include <fog_pars_fragment>
83
74
  #include <bsdfs>
84
75
  #include <lights_pars_begin>
85
- #include <fog_pars_fragment>
76
+ #include <normal_pars_fragment>
77
+ #include <lights_lambert_pars_fragment>
86
78
  #include <shadowmap_pars_fragment>
87
- #include <shadowmask_pars_fragment>
79
+ #include <bumpmap_pars_fragment>
80
+ #include <normalmap_pars_fragment>
88
81
  #include <specularmap_pars_fragment>
89
82
  #include <logdepthbuf_pars_fragment>
90
83
  #include <clipping_planes_pars_fragment>
@@ -103,49 +96,28 @@ void main() {
103
96
  #include <alphamap_fragment>
104
97
  #include <alphatest_fragment>
105
98
  #include <specularmap_fragment>
99
+ #include <normal_fragment_begin>
100
+ #include <normal_fragment_maps>
106
101
  #include <emissivemap_fragment>
107
102
 
108
103
  // accumulation
109
-
110
- #ifdef DOUBLE_SIDED
111
-
112
- reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;
113
-
114
- #else
115
-
116
- reflectedLight.indirectDiffuse += vIndirectFront;
117
-
118
- #endif
119
-
120
- #include <lightmap_fragment>
121
-
122
- reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );
123
-
124
- #ifdef DOUBLE_SIDED
125
-
126
- reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;
127
-
128
- #else
129
-
130
- reflectedLight.directDiffuse = vLightFront;
131
-
132
- #endif
133
-
134
- reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();
104
+ #include <lights_lambert_fragment>
105
+ #include <lights_fragment_begin>
106
+ #include <lights_fragment_maps>
107
+ #include <lights_fragment_end>
135
108
 
136
109
  // modulation
137
-
138
110
  #include <aomap_fragment>
139
111
 
140
112
  vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
141
113
 
142
114
  #include <envmap_fragment>
143
-
144
115
  #include <output_fragment>
145
116
  #include <tonemapping_fragment>
146
117
  #include <encodings_fragment>
147
118
  #include <fog_fragment>
148
119
  #include <premultiplied_alpha_fragment>
149
120
  #include <dithering_fragment>
121
+
150
122
  }
151
123
  `;
@@ -72,7 +72,6 @@ uniform float opacity;
72
72
  #include <emissivemap_pars_fragment>
73
73
  #include <envmap_common_pars_fragment>
74
74
  #include <envmap_pars_fragment>
75
- #include <cube_uv_reflection_fragment>
76
75
  #include <fog_pars_fragment>
77
76
  #include <bsdfs>
78
77
  #include <lights_pars_begin>
@@ -10,7 +10,7 @@ const ShaderLib = {
10
10
 
11
11
  basic: {
12
12
 
13
- uniforms: mergeUniforms( [
13
+ uniforms: /*@__PURE__*/ mergeUniforms( [
14
14
  UniformsLib.common,
15
15
  UniformsLib.specularmap,
16
16
  UniformsLib.envmap,
@@ -26,17 +26,20 @@ const ShaderLib = {
26
26
 
27
27
  lambert: {
28
28
 
29
- uniforms: mergeUniforms( [
29
+ uniforms: /*@__PURE__*/ mergeUniforms( [
30
30
  UniformsLib.common,
31
31
  UniformsLib.specularmap,
32
32
  UniformsLib.envmap,
33
33
  UniformsLib.aomap,
34
34
  UniformsLib.lightmap,
35
35
  UniformsLib.emissivemap,
36
+ UniformsLib.bumpmap,
37
+ UniformsLib.normalmap,
38
+ UniformsLib.displacementmap,
36
39
  UniformsLib.fog,
37
40
  UniformsLib.lights,
38
41
  {
39
- emissive: { value: new Color( 0x000000 ) }
42
+ emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }
40
43
  }
41
44
  ] ),
42
45
 
@@ -47,7 +50,7 @@ const ShaderLib = {
47
50
 
48
51
  phong: {
49
52
 
50
- uniforms: mergeUniforms( [
53
+ uniforms: /*@__PURE__*/ mergeUniforms( [
51
54
  UniformsLib.common,
52
55
  UniformsLib.specularmap,
53
56
  UniformsLib.envmap,
@@ -60,8 +63,8 @@ const ShaderLib = {
60
63
  UniformsLib.fog,
61
64
  UniformsLib.lights,
62
65
  {
63
- emissive: { value: new Color( 0x000000 ) },
64
- specular: { value: new Color( 0x111111 ) },
66
+ emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
67
+ specular: { value: /*@__PURE__*/ new Color( 0x111111 ) },
65
68
  shininess: { value: 30 }
66
69
  }
67
70
  ] ),
@@ -73,7 +76,7 @@ const ShaderLib = {
73
76
 
74
77
  standard: {
75
78
 
76
- uniforms: mergeUniforms( [
79
+ uniforms: /*@__PURE__*/ mergeUniforms( [
77
80
  UniformsLib.common,
78
81
  UniformsLib.envmap,
79
82
  UniformsLib.aomap,
@@ -87,7 +90,7 @@ const ShaderLib = {
87
90
  UniformsLib.fog,
88
91
  UniformsLib.lights,
89
92
  {
90
- emissive: { value: new Color( 0x000000 ) },
93
+ emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) },
91
94
  roughness: { value: 1.0 },
92
95
  metalness: { value: 0.0 },
93
96
  envMapIntensity: { value: 1 } // temporary
@@ -101,7 +104,7 @@ const ShaderLib = {
101
104
 
102
105
  toon: {
103
106
 
104
- uniforms: mergeUniforms( [
107
+ uniforms: /*@__PURE__*/ mergeUniforms( [
105
108
  UniformsLib.common,
106
109
  UniformsLib.aomap,
107
110
  UniformsLib.lightmap,
@@ -113,7 +116,7 @@ const ShaderLib = {
113
116
  UniformsLib.fog,
114
117
  UniformsLib.lights,
115
118
  {
116
- emissive: { value: new Color( 0x000000 ) }
119
+ emissive: { value: /*@__PURE__*/ new Color( 0x000000 ) }
117
120
  }
118
121
  ] ),
119
122
 
@@ -124,7 +127,7 @@ const ShaderLib = {
124
127
 
125
128
  matcap: {
126
129
 
127
- uniforms: mergeUniforms( [
130
+ uniforms: /*@__PURE__*/ mergeUniforms( [
128
131
  UniformsLib.common,
129
132
  UniformsLib.bumpmap,
130
133
  UniformsLib.normalmap,
@@ -142,7 +145,7 @@ const ShaderLib = {
142
145
 
143
146
  points: {
144
147
 
145
- uniforms: mergeUniforms( [
148
+ uniforms: /*@__PURE__*/ mergeUniforms( [
146
149
  UniformsLib.points,
147
150
  UniformsLib.fog
148
151
  ] ),
@@ -154,7 +157,7 @@ const ShaderLib = {
154
157
 
155
158
  dashed: {
156
159
 
157
- uniforms: mergeUniforms( [
160
+ uniforms: /*@__PURE__*/ mergeUniforms( [
158
161
  UniformsLib.common,
159
162
  UniformsLib.fog,
160
163
  {
@@ -171,7 +174,7 @@ const ShaderLib = {
171
174
 
172
175
  depth: {
173
176
 
174
- uniforms: mergeUniforms( [
177
+ uniforms: /*@__PURE__*/ mergeUniforms( [
175
178
  UniformsLib.common,
176
179
  UniformsLib.displacementmap
177
180
  ] ),
@@ -183,7 +186,7 @@ const ShaderLib = {
183
186
 
184
187
  normal: {
185
188
 
186
- uniforms: mergeUniforms( [
189
+ uniforms: /*@__PURE__*/ mergeUniforms( [
187
190
  UniformsLib.common,
188
191
  UniformsLib.bumpmap,
189
192
  UniformsLib.normalmap,
@@ -200,7 +203,7 @@ const ShaderLib = {
200
203
 
201
204
  sprite: {
202
205
 
203
- uniforms: mergeUniforms( [
206
+ uniforms: /*@__PURE__*/ mergeUniforms( [
204
207
  UniformsLib.sprite,
205
208
  UniformsLib.fog
206
209
  ] ),
@@ -213,7 +216,7 @@ const ShaderLib = {
213
216
  background: {
214
217
 
215
218
  uniforms: {
216
- uvTransform: { value: new Matrix3() },
219
+ uvTransform: { value: /*@__PURE__*/ new Matrix3() },
217
220
  t2D: { value: null },
218
221
  },
219
222
 
@@ -221,13 +224,10 @@ const ShaderLib = {
221
224
  fragmentShader: ShaderChunk.background_frag
222
225
 
223
226
  },
224
- /* -------------------------------------------------------------------------
225
- // Cube map shader
226
- ------------------------------------------------------------------------- */
227
227
 
228
228
  cube: {
229
229
 
230
- uniforms: mergeUniforms( [
230
+ uniforms: /*@__PURE__*/ mergeUniforms( [
231
231
  UniformsLib.envmap,
232
232
  {
233
233
  opacity: { value: 1.0 }
@@ -252,11 +252,11 @@ const ShaderLib = {
252
252
 
253
253
  distanceRGBA: {
254
254
 
255
- uniforms: mergeUniforms( [
255
+ uniforms: /*@__PURE__*/ mergeUniforms( [
256
256
  UniformsLib.common,
257
257
  UniformsLib.displacementmap,
258
258
  {
259
- referencePosition: { value: new Vector3() },
259
+ referencePosition: { value: /*@__PURE__*/ new Vector3() },
260
260
  nearDistance: { value: 1 },
261
261
  farDistance: { value: 1000 }
262
262
  }
@@ -269,11 +269,11 @@ const ShaderLib = {
269
269
 
270
270
  shadow: {
271
271
 
272
- uniforms: mergeUniforms( [
272
+ uniforms: /*@__PURE__*/ mergeUniforms( [
273
273
  UniformsLib.lights,
274
274
  UniformsLib.fog,
275
275
  {
276
- color: { value: new Color( 0x00000 ) },
276
+ color: { value: /*@__PURE__*/ new Color( 0x00000 ) },
277
277
  opacity: { value: 1.0 }
278
278
  },
279
279
  ] ),
@@ -287,14 +287,14 @@ const ShaderLib = {
287
287
 
288
288
  ShaderLib.physical = {
289
289
 
290
- uniforms: mergeUniforms( [
290
+ uniforms: /*@__PURE__*/ mergeUniforms( [
291
291
  ShaderLib.standard.uniforms,
292
292
  {
293
293
  clearcoat: { value: 0 },
294
294
  clearcoatMap: { value: null },
295
295
  clearcoatRoughness: { value: 0 },
296
296
  clearcoatRoughnessMap: { value: null },
297
- clearcoatNormalScale: { value: new Vector2( 1, 1 ) },
297
+ clearcoatNormalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) },
298
298
  clearcoatNormalMap: { value: null },
299
299
  iridescence: { value: 0 },
300
300
  iridescenceMap: { value: null },
@@ -303,21 +303,21 @@ ShaderLib.physical = {
303
303
  iridescenceThicknessMaximum: { value: 400 },
304
304
  iridescenceThicknessMap: { value: null },
305
305
  sheen: { value: 0 },
306
- sheenColor: { value: new Color( 0x000000 ) },
306
+ sheenColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },
307
307
  sheenColorMap: { value: null },
308
308
  sheenRoughness: { value: 1 },
309
309
  sheenRoughnessMap: { value: null },
310
310
  transmission: { value: 0 },
311
311
  transmissionMap: { value: null },
312
- transmissionSamplerSize: { value: new Vector2() },
312
+ transmissionSamplerSize: { value: /*@__PURE__*/ new Vector2() },
313
313
  transmissionSamplerMap: { value: null },
314
314
  thickness: { value: 0 },
315
315
  thicknessMap: { value: null },
316
316
  attenuationDistance: { value: 0 },
317
- attenuationColor: { value: new Color( 0x000000 ) },
317
+ attenuationColor: { value: /*@__PURE__*/ new Color( 0x000000 ) },
318
318
  specularIntensity: { value: 1 },
319
319
  specularIntensityMap: { value: null },
320
- specularColor: { value: new Color( 1, 1, 1 ) },
320
+ specularColor: { value: /*@__PURE__*/ new Color( 1, 1, 1 ) },
321
321
  specularColorMap: { value: null },
322
322
  }
323
323
  ] ),
@@ -10,12 +10,12 @@ const UniformsLib = {
10
10
 
11
11
  common: {
12
12
 
13
- diffuse: { value: new Color( 0xffffff ) },
13
+ diffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },
14
14
  opacity: { value: 1.0 },
15
15
 
16
16
  map: { value: null },
17
- uvTransform: { value: new Matrix3() },
18
- uv2Transform: { value: new Matrix3() },
17
+ uvTransform: { value: /*@__PURE__*/ new Matrix3() },
18
+ uv2Transform: { value: /*@__PURE__*/ new Matrix3() },
19
19
 
20
20
  alphaMap: { value: null },
21
21
  alphaTest: { value: 0 }
@@ -68,7 +68,7 @@ const UniformsLib = {
68
68
  normalmap: {
69
69
 
70
70
  normalMap: { value: null },
71
- normalScale: { value: new Vector2( 1, 1 ) }
71
+ normalScale: { value: /*@__PURE__*/ new Vector2( 1, 1 ) }
72
72
 
73
73
  },
74
74
 
@@ -103,7 +103,7 @@ const UniformsLib = {
103
103
  fogDensity: { value: 0.00025 },
104
104
  fogNear: { value: 1 },
105
105
  fogFar: { value: 2000 },
106
- fogColor: { value: new Color( 0xffffff ) }
106
+ fogColor: { value: /*@__PURE__*/ new Color( 0xffffff ) }
107
107
 
108
108
  },
109
109
 
@@ -145,8 +145,9 @@ const UniformsLib = {
145
145
  shadowMapSize: {}
146
146
  } },
147
147
 
148
+ spotLightMap: { value: [] },
148
149
  spotShadowMap: { value: [] },
149
- spotShadowMatrix: { value: [] },
150
+ spotLightMatrix: { value: [] },
150
151
 
151
152
  pointLights: { value: [], properties: {
152
153
  color: {},
@@ -188,27 +189,27 @@ const UniformsLib = {
188
189
 
189
190
  points: {
190
191
 
191
- diffuse: { value: new Color( 0xffffff ) },
192
+ diffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },
192
193
  opacity: { value: 1.0 },
193
194
  size: { value: 1.0 },
194
195
  scale: { value: 1.0 },
195
196
  map: { value: null },
196
197
  alphaMap: { value: null },
197
198
  alphaTest: { value: 0 },
198
- uvTransform: { value: new Matrix3() }
199
+ uvTransform: { value: /*@__PURE__*/ new Matrix3() }
199
200
 
200
201
  },
201
202
 
202
203
  sprite: {
203
204
 
204
- diffuse: { value: new Color( 0xffffff ) },
205
+ diffuse: { value: /*@__PURE__*/ new Color( 0xffffff ) },
205
206
  opacity: { value: 1.0 },
206
- center: { value: new Vector2( 0.5, 0.5 ) },
207
+ center: { value: /*@__PURE__*/ new Vector2( 0.5, 0.5 ) },
207
208
  rotation: { value: 0.0 },
208
209
  map: { value: null },
209
210
  alphaMap: { value: null },
210
211
  alphaTest: { value: 0 },
211
- uvTransform: { value: new Matrix3() }
212
+ uvTransform: { value: /*@__PURE__*/ new Matrix3() }
212
213
 
213
214
  }
214
215
 
@@ -59,6 +59,20 @@ export function mergeUniforms( uniforms ) {
59
59
 
60
60
  }
61
61
 
62
+ export function cloneUniformsGroups( src ) {
63
+
64
+ const dst = [];
65
+
66
+ for ( let u = 0; u < src.length; u ++ ) {
67
+
68
+ dst.push( src[ u ].clone() );
69
+
70
+ }
71
+
72
+ return dst;
73
+
74
+ }
75
+
62
76
  // Legacy
63
77
 
64
78
  const UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };
@@ -86,7 +86,7 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
86
86
 
87
87
  };
88
88
 
89
- // enable code injection for non-built-in material
89
+ // add "envMap" material property so the renderer can evaluate it like for built-in materials
90
90
  Object.defineProperty( boxMesh.material, 'envMap', {
91
91
 
92
92
  get: function () {
@@ -141,7 +141,7 @@ function WebGLBackground( renderer, cubemaps, state, objects, alpha, premultipli
141
141
 
142
142
  planeMesh.geometry.deleteAttribute( 'normal' );
143
143
 
144
- // enable code injection for non-built-in material
144
+ // add "map" material property so the renderer can evaluate it like for built-in materials
145
145
  Object.defineProperty( planeMesh.material, 'map', {
146
146
 
147
147
  get: function () {