2
0
Эх сурвалжийг харах

Fix support for texture transform for anisotropy map (#26069)

This is necessary to make glTF files that use KHR_materials_anisotropy
together with KHR_texture_transform work properly.
Arseny Kapoulkine 2 жил өмнө
parent
commit
c0d63d725a

+ 1 - 0
src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js

@@ -66,6 +66,7 @@ export default /* glsl */`
 #endif
 #ifdef USE_ANISOTROPYMAP
 
+	uniform mat3 anisotropyMapTransform;
 	varying vec2 vAnisotropyMapUv;
 
 #endif

+ 1 - 1
src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js

@@ -56,7 +56,7 @@ export default /* glsl */`
 #endif
 #ifdef USE_ANISOTROPYMAP
 
-	vAnisotropyMapUv = ( vec3( ANISOTROPYMAP_UV, 1 ) ).xy;
+	vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;
 
 #endif
 #ifdef USE_CLEARCOATMAP

+ 1 - 0
src/renderers/shaders/ShaderLib.js

@@ -346,6 +346,7 @@ ShaderLib.physical = {
 			specularIntensityMapTransform: { value: /*@__PURE__*/ new Matrix3() },
 			anisotropyVector: { value: /*@__PURE__*/ new Vector2() },
 			anisotropyMap: { value: null },
+			anisotropyMapTransform: { value: /*@__PURE__*/ new Matrix3() },
 		}
 	] ),
 

+ 2 - 0
src/renderers/webgl/WebGLMaterials.js

@@ -506,6 +506,8 @@ function WebGLMaterials( renderer, properties ) {
 
 				uniforms.anisotropyMap.value = material.anisotropyMap;
 
+				refreshTransformUniform( material.anisotropyMap, uniforms.anisotropyMapTransform );
+
 			}
 
 		}