summaryrefslogtreecommitdiff
path: root/drivers/gles3/shaders/scene.glsl
diff options
context:
space:
mode:
authorFerenc Arn <tagcup@yahoo.com>2017-09-29 10:57:00 -0400
committerFerenc Arn <tagcup@yahoo.com>2017-09-29 10:59:05 -0400
commit3e09b9b3353bcaf2b60b4bd3ef3fb2c5a9189ad8 (patch)
tree0c0b6af0db7b8f5a369a08d443d5fc8a868deb5e /drivers/gles3/shaders/scene.glsl
parent2c5fa0947d724c0dcb24643f692f7a9d686a5490 (diff)
Fix clearcoat without Schlick-GGX specular.
Fixes #11698.
Diffstat (limited to 'drivers/gles3/shaders/scene.glsl')
-rw-r--r--drivers/gles3/shaders/scene.glsl8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl
index 5c7cfecf3e..7de9b02b8d 100644
--- a/drivers/gles3/shaders/scene.glsl
+++ b/drivers/gles3/shaders/scene.glsl
@@ -1013,7 +1013,7 @@ LIGHT_SHADER_CODE
#elif defined(SPECULAR_DISABLED)
//none..
-#else
+#elif defined(SPECULAR_SCHLICK_GGX)
// shlick+ggx as default
float alpha = roughness * roughness;
@@ -1056,6 +1056,12 @@ LIGHT_SHADER_CODE
#endif
#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 Fr = mix(.04, 1.0, dotLH5);
float Gr = G1V(dotNL, .25) * G1V(dotNV, .25);