super-three 0.133.5 → 0.135.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 (246) hide show
  1. package/build/three.js +617 -536
  2. package/build/three.min.js +1 -1
  3. package/build/three.module.js +760 -613
  4. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
  5. package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  6. package/examples/fonts/open-sans/open-sans.css +9 -0
  7. package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
  8. package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
  9. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
  10. package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
  11. package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
  12. package/examples/js/controls/ArcballControls.js +68 -27
  13. package/examples/js/controls/DragControls.js +7 -0
  14. package/examples/js/controls/OrbitControls.js +5 -36
  15. package/examples/js/controls/TrackballControls.js +3 -2
  16. package/examples/js/csm/CSM.js +2 -2
  17. package/examples/js/csm/CSMFrustum.js +133 -0
  18. package/examples/js/exporters/GLTFExporter.js +147 -63
  19. package/examples/js/exporters/USDZExporter.js +45 -26
  20. package/examples/js/lines/LineMaterial.js +58 -20
  21. package/examples/js/lines/LineSegments2.js +29 -24
  22. package/examples/js/loaders/3DMLoader.js +24 -11
  23. package/examples/js/loaders/3MFLoader.js +2 -2
  24. package/examples/js/loaders/ColladaLoader.js +61 -3
  25. package/examples/js/loaders/FBXLoader.js +1 -1
  26. package/examples/js/loaders/GLTFLoader.js +94 -31
  27. package/examples/js/loaders/KTX2Loader.js +12 -0
  28. package/examples/js/loaders/LWOLoader.js +8 -6
  29. package/examples/js/loaders/LogLuvLoader.js +766 -0
  30. package/examples/js/loaders/PLYLoader.js +32 -7
  31. package/examples/js/loaders/RGBELoader.js +2 -1
  32. package/examples/js/loaders/SVGLoader.js +7 -3
  33. package/examples/js/loaders/TDSLoader.js +237 -271
  34. package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
  35. package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
  36. package/examples/js/objects/MarchingCubes.js +42 -128
  37. package/examples/js/renderers/CSS2DRenderer.js +4 -4
  38. package/examples/js/renderers/CSS3DRenderer.js +4 -4
  39. package/examples/js/utils/RoughnessMipmapper.js +1 -0
  40. package/examples/jsm/controls/ArcballControls.js +61 -29
  41. package/examples/jsm/controls/DragControls.js +7 -0
  42. package/examples/jsm/controls/OrbitControls.js +9 -51
  43. package/examples/jsm/controls/TrackballControls.js +1 -1
  44. package/examples/jsm/csm/CSM.js +3 -3
  45. package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
  46. package/examples/jsm/exporters/GLTFExporter.js +160 -74
  47. package/examples/jsm/exporters/USDZExporter.js +47 -26
  48. package/examples/jsm/libs/flow.module.js +3218 -0
  49. package/examples/jsm/libs/lil-gui.module.min.js +8 -0
  50. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  51. package/examples/jsm/lines/LineMaterial.js +59 -23
  52. package/examples/jsm/lines/LineSegments2.js +22 -18
  53. package/examples/jsm/loaders/3DMLoader.js +18 -12
  54. package/examples/jsm/loaders/3MFLoader.js +2 -2
  55. package/examples/jsm/loaders/ColladaLoader.js +61 -3
  56. package/examples/jsm/loaders/FBXLoader.js +1 -1
  57. package/examples/jsm/loaders/GLTFLoader.js +99 -35
  58. package/examples/jsm/loaders/KTX2Loader.js +19 -0
  59. package/examples/jsm/loaders/LWOLoader.js +8 -6
  60. package/examples/jsm/loaders/LogLuvLoader.js +606 -0
  61. package/examples/jsm/loaders/PLYLoader.js +33 -7
  62. package/examples/jsm/loaders/SVGLoader.js +7 -4
  63. package/examples/jsm/loaders/TDSLoader.js +225 -285
  64. package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
  65. package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
  66. package/examples/jsm/node-editor/NodeEditor.js +455 -0
  67. package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
  68. package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
  69. package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
  70. package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
  71. package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
  72. package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
  73. package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
  74. package/examples/jsm/node-editor/examples/rim.json +1 -0
  75. package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
  76. package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
  77. package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
  78. package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
  79. package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
  80. package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
  81. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +69 -0
  82. package/examples/jsm/node-editor/math/DotEditor.js +36 -0
  83. package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
  84. package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
  85. package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
  86. package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
  87. package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
  88. package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
  89. package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
  90. package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
  91. package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
  92. package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
  93. package/examples/jsm/nodes/materials/nodes/StandardNode.js +6 -6
  94. package/examples/jsm/nodes/utils/ColorSpaceNode.js +1 -49
  95. package/examples/jsm/objects/MarchingCubes.js +46 -152
  96. package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
  97. package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
  98. package/examples/jsm/postprocessing/BloomPass.js +1 -1
  99. package/examples/jsm/postprocessing/BokehPass.js +1 -1
  100. package/examples/jsm/postprocessing/ClearPass.js +1 -1
  101. package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
  102. package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
  103. package/examples/jsm/postprocessing/EffectComposer.js +3 -3
  104. package/examples/jsm/postprocessing/FilmPass.js +1 -1
  105. package/examples/jsm/postprocessing/GlitchPass.js +1 -1
  106. package/examples/jsm/postprocessing/HalftonePass.js +1 -1
  107. package/examples/jsm/postprocessing/MaskPass.js +1 -1
  108. package/examples/jsm/postprocessing/OutlinePass.js +1 -1
  109. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  110. package/examples/jsm/postprocessing/SAOPass.js +1 -1
  111. package/examples/jsm/postprocessing/SMAAPass.js +1 -1
  112. package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
  113. package/examples/jsm/postprocessing/SSAOPass.js +1 -1
  114. package/examples/jsm/postprocessing/SSRPass.js +1 -1
  115. package/examples/jsm/postprocessing/SSRrPass.js +1 -1
  116. package/examples/jsm/postprocessing/SavePass.js +1 -1
  117. package/examples/jsm/postprocessing/ShaderPass.js +1 -1
  118. package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
  119. package/examples/jsm/postprocessing/TexturePass.js +1 -1
  120. package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
  121. package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
  122. package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
  123. package/examples/jsm/renderers/nodes/Nodes.js +14 -13
  124. package/examples/jsm/renderers/nodes/ShaderNode.js +193 -41
  125. package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
  126. package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
  127. package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
  128. package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
  129. package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
  130. package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
  131. package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
  132. package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
  133. package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
  134. package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
  135. package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
  136. package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
  137. package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
  138. package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
  139. package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
  140. package/examples/jsm/renderers/nodes/core/Node.js +32 -10
  141. package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
  142. package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
  143. package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
  144. package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
  145. package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
  146. package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
  147. package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
  148. package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
  149. package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
  150. package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
  151. package/examples/jsm/renderers/nodes/core/constants.js +2 -0
  152. package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +47 -25
  153. package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
  154. package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
  155. package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
  156. package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
  157. package/examples/jsm/renderers/nodes/inputs/TextureNode.js +10 -2
  158. package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
  159. package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
  160. package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
  161. package/examples/jsm/renderers/nodes/math/MathNode.js +87 -36
  162. package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
  163. package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
  164. package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
  165. package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
  166. package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
  167. package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
  168. package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
  169. package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
  170. package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
  171. package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
  172. package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
  173. package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
  174. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
  175. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +191 -94
  176. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
  177. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
  178. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
  179. package/examples/jsm/renderers/webgpu/WebGPUBindings.js +3 -3
  180. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
  181. package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
  182. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
  183. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +3 -5
  184. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +11 -27
  185. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +62 -28
  186. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +34 -27
  187. package/examples/jsm/renderers/webgpu/constants.js +2 -2
  188. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +430 -98
  189. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  190. package/examples/jsm/utils/RoughnessMipmapper.js +1 -0
  191. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
  192. package/package.json +10 -10
  193. package/src/Three.Legacy.js +6 -0
  194. package/src/Three.js +0 -1
  195. package/src/cameras/StereoCamera.js +8 -7
  196. package/src/constants.js +1 -2
  197. package/src/core/Layers.js +7 -1
  198. package/src/core/Object3D.js +2 -0
  199. package/src/extras/PMREMGenerator.js +11 -6
  200. package/src/loaders/FileLoader.js +89 -152
  201. package/src/loaders/ImageLoader.js +9 -4
  202. package/src/loaders/LoaderUtils.js +26 -0
  203. package/src/loaders/MaterialLoader.js +7 -4
  204. package/src/loaders/ObjectLoader.js +2 -0
  205. package/src/materials/Material.js +4 -4
  206. package/src/materials/MeshPhysicalMaterial.js +20 -14
  207. package/src/math/MathUtils.js +5 -16
  208. package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
  209. package/src/renderers/WebGLRenderer.js +83 -117
  210. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
  211. package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -27
  212. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
  213. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
  214. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
  215. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  216. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
  217. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +13 -5
  218. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
  219. package/src/renderers/shaders/ShaderLib.js +6 -4
  220. package/src/renderers/shaders/UniformsLib.js +1 -2
  221. package/src/renderers/webgl/WebGLExtensions.js +1 -0
  222. package/src/renderers/webgl/WebGLMaterials.js +27 -15
  223. package/src/renderers/webgl/WebGLProgram.js +10 -6
  224. package/src/renderers/webgl/WebGLPrograms.js +17 -12
  225. package/src/renderers/webgl/WebGLShadowMap.js +14 -5
  226. package/src/renderers/webgl/WebGLState.js +31 -17
  227. package/src/renderers/webgl/WebGLTextures.js +188 -51
  228. package/src/renderers/webgl/WebGLUniforms.js +45 -1
  229. package/src/renderers/webxr/WebXRManager.js +68 -107
  230. package/src/textures/Texture.js +6 -0
  231. package/src/utils.js +37 -1
  232. package/examples/js/controls/DeviceOrientationControls.js +0 -147
  233. package/examples/js/libs/dat.gui.min.js +0 -14
  234. package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
  235. package/examples/jsm/libs/dat.gui.module.js +0 -3575
  236. package/examples/jsm/libs/glslang.js +0 -78
  237. package/examples/jsm/libs/glslang.wasm +0 -0
  238. package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
  239. package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
  240. package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
  241. package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
  242. package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
  243. package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
  244. package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
  245. package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
  246. package/src/extras/objects/ImmediateRenderObject.js +0 -31
@@ -7,7 +7,7 @@ export default /* glsl */`
7
7
  uniform float transmission;
8
8
  uniform float thickness;
9
9
  uniform float attenuationDistance;
10
- uniform vec3 attenuationTint;
10
+ uniform vec3 attenuationColor;
11
11
 
12
12
  #ifdef USE_TRANSMISSIONMAP
13
13
 
@@ -77,14 +77,14 @@ uniform float opacity;
77
77
 
78
78
  #ifdef SPECULAR
79
79
  uniform float specularIntensity;
80
- uniform vec3 specularTint;
80
+ uniform vec3 specularColor;
81
81
 
82
82
  #ifdef USE_SPECULARINTENSITYMAP
83
83
  uniform sampler2D specularIntensityMap;
84
84
  #endif
85
85
 
86
- #ifdef USE_SPECULARTINTMAP
87
- uniform sampler2D specularTintMap;
86
+ #ifdef USE_SPECULARCOLORMAP
87
+ uniform sampler2D specularColorMap;
88
88
  #endif
89
89
  #endif
90
90
 
@@ -94,8 +94,16 @@ uniform float opacity;
94
94
  #endif
95
95
 
96
96
  #ifdef USE_SHEEN
97
- uniform vec3 sheenTint;
97
+ uniform vec3 sheenColor;
98
98
  uniform float sheenRoughness;
99
+
100
+ #ifdef USE_SHEENCOLORMAP
101
+ uniform sampler2D sheenColorMap;
102
+ #endif
103
+
104
+ #ifdef USE_SHEENROUGHNESSMAP
105
+ uniform sampler2D sheenRoughnessMap;
106
+ #endif
99
107
  #endif
100
108
 
101
109
  varying vec3 vViewPosition;
@@ -173,7 +181,7 @@ void main() {
173
181
 
174
182
  vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
175
183
 
176
- outgoingLight = outgoingLight * ( 1.0 - clearcoat * Fcc ) + clearcoatSpecular * clearcoat;
184
+ outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
177
185
 
178
186
  #endif
179
187
 
@@ -10,12 +10,13 @@ export const fragment = /* glsl */`
10
10
  uniform sampler2D shadow_pass;
11
11
  uniform vec2 resolution;
12
12
  uniform float radius;
13
- uniform float samples;
14
13
 
15
14
  #include <packing>
16
15
 
17
16
  void main() {
18
17
 
18
+ const float samples = float( VSM_SAMPLES );
19
+
19
20
  float mean = 0.0;
20
21
  float squared_mean = 0.0;
21
22
 
@@ -297,8 +297,10 @@ ShaderLib.physical = {
297
297
  clearcoatNormalScale: { value: new Vector2( 1, 1 ) },
298
298
  clearcoatNormalMap: { value: null },
299
299
  sheen: { value: 0 },
300
- sheenTint: { value: new Color( 0x000000 ) },
300
+ sheenColor: { value: new Color( 0x000000 ) },
301
+ sheenColorMap: { value: null },
301
302
  sheenRoughness: { value: 0 },
303
+ sheenRoughnessMap: { value: null },
302
304
  transmission: { value: 0 },
303
305
  transmissionMap: { value: null },
304
306
  transmissionSamplerSize: { value: new Vector2() },
@@ -306,11 +308,11 @@ ShaderLib.physical = {
306
308
  thickness: { value: 0 },
307
309
  thicknessMap: { value: null },
308
310
  attenuationDistance: { value: 0 },
309
- attenuationTint: { value: new Color( 0x000000 ) },
311
+ attenuationColor: { value: new Color( 0x000000 ) },
310
312
  specularIntensity: { value: 0 },
311
313
  specularIntensityMap: { value: null },
312
- specularTint: { value: new Color( 1, 1, 1 ) },
313
- specularTintMap: { value: null },
314
+ specularColor: { value: new Color( 1, 1, 1 ) },
315
+ specularColorMap: { value: null },
314
316
  }
315
317
  ] ),
316
318
 
@@ -34,8 +34,7 @@ const UniformsLib = {
34
34
  flipEnvMap: { value: - 1 },
35
35
  reflectivity: { value: 1.0 }, // basic, lambert, phong
36
36
  ior: { value: 1.5 }, // standard, physical
37
- refractionRatio: { value: 0.98 },
38
- maxMipLevel: { value: 0 }
37
+ refractionRatio: { value: 0.98 }
39
38
 
40
39
  },
41
40
 
@@ -70,6 +70,7 @@ function WebGLExtensions( gl ) {
70
70
 
71
71
  getExtension( 'OES_texture_float_linear' );
72
72
  getExtension( 'EXT_color_buffer_half_float' );
73
+ getExtension( 'WEBGL_multisampled_render_to_texture' );
73
74
 
74
75
  },
75
76
 
@@ -157,14 +157,6 @@ function WebGLMaterials( properties ) {
157
157
  uniforms.ior.value = material.ior;
158
158
  uniforms.refractionRatio.value = material.refractionRatio;
159
159
 
160
- const maxMipLevel = properties.get( envMap ).__maxMipLevel;
161
-
162
- if ( maxMipLevel !== undefined ) {
163
-
164
- uniforms.maxMipLevel.value = maxMipLevel;
165
-
166
- }
167
-
168
160
  }
169
161
 
170
162
  if ( material.lightMap ) {
@@ -253,9 +245,9 @@ function WebGLMaterials( properties ) {
253
245
 
254
246
  uvScaleMap = material.specularIntensityMap;
255
247
 
256
- } else if ( material.specularTintMap ) {
248
+ } else if ( material.specularColorMap ) {
257
249
 
258
- uvScaleMap = material.specularTintMap;
250
+ uvScaleMap = material.specularColorMap;
259
251
 
260
252
  } else if ( material.transmissionMap ) {
261
253
 
@@ -265,6 +257,14 @@ function WebGLMaterials( properties ) {
265
257
 
266
258
  uvScaleMap = material.thicknessMap;
267
259
 
260
+ } else if ( material.sheenColorMap ) {
261
+
262
+ uvScaleMap = material.sheenColorMap;
263
+
264
+ } else if ( material.sheenRoughnessMap ) {
265
+
266
+ uvScaleMap = material.sheenRoughnessMap;
267
+
268
268
  }
269
269
 
270
270
  if ( uvScaleMap !== undefined ) {
@@ -600,10 +600,22 @@ function WebGLMaterials( properties ) {
600
600
 
601
601
  if ( material.sheen > 0 ) {
602
602
 
603
- uniforms.sheenTint.value.copy( material.sheenTint ).multiplyScalar( material.sheen );
603
+ uniforms.sheenColor.value.copy( material.sheenColor ).multiplyScalar( material.sheen );
604
604
 
605
605
  uniforms.sheenRoughness.value = material.sheenRoughness;
606
606
 
607
+ if ( material.sheenColorMap ) {
608
+
609
+ uniforms.sheenColorMap.value = material.sheenColorMap;
610
+
611
+ }
612
+
613
+ if ( material.sheenRoughnessMap ) {
614
+
615
+ uniforms.sheenRoughnessMap.value = material.sheenRoughnessMap;
616
+
617
+ }
618
+
607
619
  }
608
620
 
609
621
  if ( material.clearcoat > 0 ) {
@@ -659,12 +671,12 @@ function WebGLMaterials( properties ) {
659
671
  }
660
672
 
661
673
  uniforms.attenuationDistance.value = material.attenuationDistance;
662
- uniforms.attenuationTint.value.copy( material.attenuationTint );
674
+ uniforms.attenuationColor.value.copy( material.attenuationColor );
663
675
 
664
676
  }
665
677
 
666
678
  uniforms.specularIntensity.value = material.specularIntensity;
667
- uniforms.specularTint.value.copy( material.specularTint );
679
+ uniforms.specularColor.value.copy( material.specularColor );
668
680
 
669
681
  if ( material.specularIntensityMap ) {
670
682
 
@@ -672,9 +684,9 @@ function WebGLMaterials( properties ) {
672
684
 
673
685
  }
674
686
 
675
- if ( material.specularTintMap ) {
687
+ if ( material.specularColorMap ) {
676
688
 
677
- uniforms.specularTintMap.value = material.specularTintMap;
689
+ uniforms.specularColorMap.value = material.specularColorMap;
678
690
 
679
691
  }
680
692
 
@@ -1,7 +1,7 @@
1
1
  import { WebGLUniforms } from './WebGLUniforms.js';
2
2
  import { WebGLShader } from './WebGLShader.js';
3
3
  import { ShaderChunk } from '../shaders/ShaderChunk.js';
4
- import { RGBFormat, NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, ACESFilmicToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding, LogLuvEncoding, GLSL3 } from '../../constants.js';
4
+ import { RGBFormat, NoToneMapping, AddOperation, MixOperation, MultiplyOperation, CubeRefractionMapping, CubeUVRefractionMapping, CubeUVReflectionMapping, CubeReflectionMapping, PCFSoftShadowMap, PCFShadowMap, VSMShadowMap, ACESFilmicToneMapping, CineonToneMapping, CustomToneMapping, ReinhardToneMapping, LinearToneMapping, GammaEncoding, RGBDEncoding, RGBM16Encoding, RGBM7Encoding, RGBEEncoding, sRGBEncoding, LinearEncoding, GLSL3 } from '../../constants.js';
5
5
 
6
6
  let programIdCount = 0;
7
7
 
@@ -37,8 +37,6 @@ function getEncodingComponents( encoding ) {
37
37
  return [ 'RGBD', '( value, 256.0 )' ];
38
38
  case GammaEncoding:
39
39
  return [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];
40
- case LogLuvEncoding:
41
- return [ 'LogLuv', '( value )' ];
42
40
  default:
43
41
  console.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );
44
42
  return [ 'Linear', '( value )' ];
@@ -478,7 +476,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
478
476
 
479
477
  parameters.specularMap ? '#define USE_SPECULARMAP' : '',
480
478
  parameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',
481
- parameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '',
479
+ parameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',
482
480
 
483
481
  parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',
484
482
  parameters.metalnessMap ? '#define USE_METALNESSMAP' : '',
@@ -488,6 +486,9 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
488
486
  parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
489
487
  parameters.thicknessMap ? '#define USE_THICKNESSMAP' : '',
490
488
 
489
+ parameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',
490
+ parameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',
491
+
491
492
  parameters.vertexTangents ? '#define USE_TANGENT' : '',
492
493
  parameters.vertexColors ? '#define USE_COLOR' : '',
493
494
  parameters.vertexAlphas ? '#define USE_COLOR_ALPHA' : '',
@@ -626,7 +627,7 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
626
627
 
627
628
  parameters.specularMap ? '#define USE_SPECULARMAP' : '',
628
629
  parameters.specularIntensityMap ? '#define USE_SPECULARINTENSITYMAP' : '',
629
- parameters.specularTintMap ? '#define USE_SPECULARTINTMAP' : '',
630
+ parameters.specularColorMap ? '#define USE_SPECULARCOLORMAP' : '',
630
631
  parameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',
631
632
  parameters.metalnessMap ? '#define USE_METALNESSMAP' : '',
632
633
 
@@ -634,6 +635,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
634
635
  parameters.alphaTest ? '#define USE_ALPHATEST' : '',
635
636
 
636
637
  parameters.sheen ? '#define USE_SHEEN' : '',
638
+ parameters.sheenColorMap ? '#define USE_SHEENCOLORMAP' : '',
639
+ parameters.sheenRoughnessMap ? '#define USE_SHEENROUGHNESSMAP' : '',
637
640
 
638
641
  parameters.transmission ? '#define USE_TRANSMISSION' : '',
639
642
  parameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',
@@ -680,7 +683,8 @@ function WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {
680
683
  parameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',
681
684
  parameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',
682
685
  parameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',
683
- parameters.specularTintMap ? getTexelDecodingFunction( 'specularTintMapTexelToLinear', parameters.specularTintMapEncoding ) : '',
686
+ parameters.specularColorMap ? getTexelDecodingFunction( 'specularColorMapTexelToLinear', parameters.specularColorMapEncoding ) : '',
687
+ parameters.sheenColorMap ? getTexelDecodingFunction( 'sheenColorMapTexelToLinear', parameters.sheenColorMapEncoding ) : '',
684
688
  parameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',
685
689
  getTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),
686
690
 
@@ -1,7 +1,8 @@
1
- import { BackSide, DoubleSide, CubeUVRefractionMapping, CubeUVReflectionMapping, LinearEncoding, sRGBEncoding, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping, RGBAFormat, UnsignedByteType } from '../../constants.js';
1
+ import { BackSide, DoubleSide, CubeUVRefractionMapping, CubeUVReflectionMapping, LinearEncoding, ObjectSpaceNormalMap, TangentSpaceNormalMap, NoToneMapping } from '../../constants.js';
2
2
  import { WebGLProgram } from './WebGLProgram.js';
3
3
  import { ShaderLib } from '../shaders/ShaderLib.js';
4
4
  import { UniformsUtils } from '../shaders/UniformsUtils.js';
5
+ import { hashString } from '../../utils.js';
5
6
 
6
7
  function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities, bindingStates, clipping ) {
7
8
 
@@ -39,8 +40,7 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
39
40
  'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap',
40
41
  'objectSpaceNormalMap', 'tangentSpaceNormalMap',
41
42
  'clearcoat', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap',
42
- 'displacementMap',
43
- 'specularMap', 'specularIntensityMap', 'specularTintMap', 'specularTintMapEncoding', 'roughnessMap', 'metalnessMap', 'gradientMap',
43
+ 'displacementMap', 'specularMap', , 'roughnessMap', 'metalnessMap', 'gradientMap',
44
44
  'alphaMap', 'alphaTest', 'combine', 'vertexColors', 'vertexAlphas', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2',
45
45
  'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning',
46
46
  'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals', 'morphTargetsCount', 'premultipliedAlpha',
@@ -48,7 +48,9 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
48
48
  'numDirLightShadows', 'numPointLightShadows', 'numSpotLightShadows',
49
49
  'shadowMapEnabled', 'shadowMapType', 'toneMapping', 'physicallyCorrectLights',
50
50
  'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering', 'format',
51
- 'sheen', 'transmission', 'transmissionMap', 'thicknessMap'
51
+ 'specularIntensityMap', 'specularColorMap', 'specularColorMapEncoding',
52
+ 'transmission', 'transmissionMap', 'thicknessMap',
53
+ 'sheen', 'sheenColorMap', 'sheenColorMapEncoding', 'sheenRoughnessMap'
52
54
  ];
53
55
 
54
56
  function getMaxBones( object ) {
@@ -106,11 +108,11 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
106
108
 
107
109
  }
108
110
 
109
- if ( isWebGL2 && map && map.isTexture && map.format === RGBAFormat && map.type === UnsignedByteType && map.encoding === sRGBEncoding ) {
111
+ /* if ( isWebGL2 && map && map.isTexture && map.format === RGBAFormat && map.type === UnsignedByteType && map.encoding === sRGBEncoding ) {
110
112
 
111
113
  encoding = LinearEncoding; // disable inline decode for sRGB textures in WebGL 2
112
114
 
113
- }
115
+ } */
114
116
 
115
117
  return encoding;
116
118
 
@@ -212,8 +214,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
212
214
  metalnessMap: !! material.metalnessMap,
213
215
  specularMap: !! material.specularMap,
214
216
  specularIntensityMap: !! material.specularIntensityMap,
215
- specularTintMap: !! material.specularTintMap,
216
- specularTintMapEncoding: getTextureEncodingFromMap( material.specularTintMap ),
217
+ specularColorMap: !! material.specularColorMap,
218
+ specularColorMapEncoding: getTextureEncodingFromMap( material.specularColorMap ),
217
219
 
218
220
  alphaMap: !! material.alphaMap,
219
221
  alphaTest: useAlphaTest,
@@ -221,6 +223,9 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
221
223
  gradientMap: !! material.gradientMap,
222
224
 
223
225
  sheen: material.sheen > 0,
226
+ sheenColorMap: !! material.sheenColorMap,
227
+ sheenColorMapEncoding: getTextureEncodingFromMap( material.sheenColorMap ),
228
+ sheenRoughnessMap: !! material.sheenRoughnessMap,
224
229
 
225
230
  transmission: material.transmission > 0,
226
231
  transmissionMap: !! material.transmissionMap,
@@ -231,8 +236,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
231
236
  vertexTangents: ( !! material.normalMap && !! object.geometry && !! object.geometry.attributes.tangent ),
232
237
  vertexColors: material.vertexColors,
233
238
  vertexAlphas: material.vertexColors === true && !! object.geometry && !! object.geometry.attributes.color && object.geometry.attributes.color.itemSize === 4,
234
- vertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularTintMap,
235
- uvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularTintMap ) && !! material.displacementMap,
239
+ vertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || !! material.sheenColorMap || material.sheenRoughnessMap,
240
+ uvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || material.transmission > 0 || !! material.transmissionMap || !! material.thicknessMap || !! material.specularIntensityMap || !! material.specularColorMap || material.sheen > 0 || !! material.sheenColorMap || !! material.sheenRoughnessMap ) && !! material.displacementMap,
236
241
 
237
242
  fog: !! fog,
238
243
  useFog: material.fog,
@@ -309,8 +314,8 @@ function WebGLPrograms( renderer, cubemaps, cubeuvmaps, extensions, capabilities
309
314
 
310
315
  } else {
311
316
 
312
- array.push( parameters.fragmentShader );
313
- array.push( parameters.vertexShader );
317
+ array.push( hashString( parameters.fragmentShader ) );
318
+ array.push( hashString( parameters.vertexShader ) );
314
319
 
315
320
  }
316
321
 
@@ -31,12 +31,13 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
31
31
  const shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };
32
32
 
33
33
  const shadowMaterialVertical = new ShaderMaterial( {
34
-
34
+ defines: {
35
+ VSM_SAMPLES: 8
36
+ },
35
37
  uniforms: {
36
38
  shadow_pass: { value: null },
37
39
  resolution: { value: new Vector2() },
38
- radius: { value: 4.0 },
39
- samples: { value: 8.0 }
40
+ radius: { value: 4.0 }
40
41
  },
41
42
 
42
43
  vertexShader: vsm.vertex,
@@ -202,12 +203,21 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
202
203
 
203
204
  const geometry = _objects.update( fullScreenMesh );
204
205
 
206
+ if ( shadowMaterialVertical.defines.VSM_SAMPLES !== shadow.blurSamples ) {
207
+
208
+ shadowMaterialVertical.defines.VSM_SAMPLES = shadow.blurSamples;
209
+ shadowMaterialHorizontal.defines.VSM_SAMPLES = shadow.blurSamples;
210
+
211
+ shadowMaterialVertical.needsUpdate = true;
212
+ shadowMaterialHorizontal.needsUpdate = true;
213
+
214
+ }
215
+
205
216
  // vertical pass
206
217
 
207
218
  shadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;
208
219
  shadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;
209
220
  shadowMaterialVertical.uniforms.radius.value = shadow.radius;
210
- shadowMaterialVertical.uniforms.samples.value = shadow.blurSamples;
211
221
  _renderer.setRenderTarget( shadow.mapPass );
212
222
  _renderer.clear();
213
223
  _renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );
@@ -217,7 +227,6 @@ function WebGLShadowMap( _renderer, _objects, _capabilities ) {
217
227
  shadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;
218
228
  shadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;
219
229
  shadowMaterialHorizontal.uniforms.radius.value = shadow.radius;
220
- shadowMaterialHorizontal.uniforms.samples.value = shadow.blurSamples;
221
230
  _renderer.setRenderTarget( shadow.map );
222
231
  _renderer.clear();
223
232
  _renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );
@@ -316,7 +316,6 @@ function WebGLState( gl, extensions, capabilities ) {
316
316
 
317
317
  let enabledCapabilities = {};
318
318
 
319
- let xrFramebuffer = null;
320
319
  let currentBoundFramebuffers = {};
321
320
 
322
321
  let currentProgram = null;
@@ -428,22 +427,8 @@ function WebGLState( gl, extensions, capabilities ) {
428
427
 
429
428
  }
430
429
 
431
- function bindXRFramebuffer( framebuffer ) {
432
-
433
- if ( framebuffer !== xrFramebuffer ) {
434
-
435
- gl.bindFramebuffer( gl.FRAMEBUFFER, framebuffer );
436
-
437
- xrFramebuffer = framebuffer;
438
-
439
- }
440
-
441
- }
442
-
443
430
  function bindFramebuffer( target, framebuffer ) {
444
431
 
445
- if ( framebuffer === null && xrFramebuffer !== null ) framebuffer = xrFramebuffer; // use active XR framebuffer if available
446
-
447
432
  if ( currentBoundFramebuffers[ target ] !== framebuffer ) {
448
433
 
449
434
  gl.bindFramebuffer( target, framebuffer );
@@ -879,6 +864,34 @@ function WebGLState( gl, extensions, capabilities ) {
879
864
 
880
865
  }
881
866
 
867
+ function texSubImage2D() {
868
+
869
+ try {
870
+
871
+ gl.texSubImage2D.apply( gl, arguments );
872
+
873
+ } catch ( error ) {
874
+
875
+ console.error( 'THREE.WebGLState:', error );
876
+
877
+ }
878
+
879
+ }
880
+
881
+ function texStorage2D() {
882
+
883
+ try {
884
+
885
+ gl.texStorage2D.apply( gl, arguments );
886
+
887
+ } catch ( error ) {
888
+
889
+ console.error( 'THREE.WebGLState:', error );
890
+
891
+ }
892
+
893
+ }
894
+
882
895
  function texImage2D() {
883
896
 
884
897
  try {
@@ -991,7 +1004,6 @@ function WebGLState( gl, extensions, capabilities ) {
991
1004
  currentTextureSlot = null;
992
1005
  currentBoundTextures = {};
993
1006
 
994
- xrFramebuffer = null;
995
1007
  currentBoundFramebuffers = {};
996
1008
 
997
1009
  currentProgram = null;
@@ -1035,7 +1047,6 @@ function WebGLState( gl, extensions, capabilities ) {
1035
1047
  disable: disable,
1036
1048
 
1037
1049
  bindFramebuffer: bindFramebuffer,
1038
- bindXRFramebuffer: bindXRFramebuffer,
1039
1050
 
1040
1051
  useProgram: useProgram,
1041
1052
 
@@ -1057,6 +1068,9 @@ function WebGLState( gl, extensions, capabilities ) {
1057
1068
  texImage2D: texImage2D,
1058
1069
  texImage3D: texImage3D,
1059
1070
 
1071
+ texStorage2D: texStorage2D,
1072
+ texSubImage2D: texSubImage2D,
1073
+
1060
1074
  scissor: scissor,
1061
1075
  viewport: viewport,
1062
1076