Browse Source

Merge pull request #13716 from WestLangley/dev-perturb_normal

Fix perturbNormal2Arb() bug
Mr.doob 7 years ago
parent
commit
7f0bcc49e3
1 changed files with 3 additions and 2 deletions
  1. 3 2
      src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl

+ 3 - 2
src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl

@@ -15,8 +15,9 @@
 		vec2 st0 = dFdx( vUv.st );
 		vec2 st1 = dFdy( vUv.st );
 
-		vec3 S = normalize( q0 * st1.t - q1 * st0.t );
-		vec3 T = normalize( -q0 * st1.s + q1 * st0.s );
+		float scale = sign( st1.t * st0.s - st0.t * st1.s ); // we do not care about the magnitude
+		vec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );
+		vec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );
 		vec3 N = normalize( surf_norm );
 
 		vec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;