Browse Source

Merge pull request #11700 from tagcup/clearcoat_fix

Fix clearcoat without Schlick-GGX specular.
Andreas Haas 8 years ago
parent
commit
1e9465096d
1 changed files with 7 additions and 1 deletions
  1. 7 1
      drivers/gles3/shaders/scene.glsl

+ 7 - 1
drivers/gles3/shaders/scene.glsl

@@ -1014,7 +1014,7 @@ LIGHT_SHADER_CODE
 #elif defined(SPECULAR_DISABLED)
 #elif defined(SPECULAR_DISABLED)
 		//none..
 		//none..
 
 
-#else
+#elif defined(SPECULAR_SCHLICK_GGX)
 		// shlick+ggx as default
 		// shlick+ggx as default
 		float alpha = roughness * roughness;
 		float alpha = roughness * roughness;
 
 
@@ -1057,6 +1057,12 @@ LIGHT_SHADER_CODE
 #endif
 #endif
 
 
 #if defined(LIGHT_USE_CLEARCOAT)
 #if defined(LIGHT_USE_CLEARCOAT)
+# if !defined(SPECULAR_SCHLICK_GGX)
+ 		vec3 H = normalize(V + L);
+ 		float dotLH5 = SchlickFresnel( dotLH );
+ 		float dotNH = max(dot(N,H), 0.0 );
+# endif
+
 		float Dr = GTR1(dotNH, mix(.1,.001,clearcoat_gloss));
 		float Dr = GTR1(dotNH, mix(.1,.001,clearcoat_gloss));
 		float Fr = mix(.04, 1.0, dotLH5);
 		float Fr = mix(.04, 1.0, dotLH5);
 		float Gr = G1V(dotNL, .25) * G1V(dotNV, .25);
 		float Gr = G1V(dotNL, .25) * G1V(dotNV, .25);