From 574e7903407044a18c39af5eed6576744cd5d106 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Tue, 28 May 2019 20:33:19 +0200 Subject: Fix T64123 Eevee: Reflections Not Visible On Alpha Clip Materials --- .../engines/eevee/shaders/bsdf_common_lib.glsl | 27 +++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl b/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl index d7160aee340..0f3e7ba7efb 100644 --- a/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl @@ -793,9 +793,9 @@ Closure closure_mix(Closure cl1, Closure cl2, float fac) Closure cl; if (cl1.ssr_id == TRANSPARENT_CLOSURE_FLAG) { - cl1.ssr_normal = cl2.ssr_normal; - cl1.ssr_data = cl2.ssr_data; - cl1.ssr_id = cl2.ssr_id; + cl.ssr_normal = cl2.ssr_normal; + cl.ssr_data = cl2.ssr_data; + cl.ssr_id = cl2.ssr_id; # ifdef USE_SSS cl1.sss_data = cl2.sss_data; # ifdef USE_SSS_ALBEDO @@ -803,10 +803,10 @@ Closure closure_mix(Closure cl1, Closure cl2, float fac) # endif # endif } - if (cl2.ssr_id == TRANSPARENT_CLOSURE_FLAG) { - cl2.ssr_normal = cl1.ssr_normal; - cl2.ssr_data = cl1.ssr_data; - cl2.ssr_id = cl1.ssr_id; + else if (cl2.ssr_id == TRANSPARENT_CLOSURE_FLAG) { + cl.ssr_normal = cl1.ssr_normal; + cl.ssr_data = cl1.ssr_data; + cl.ssr_id = cl1.ssr_id; # ifdef USE_SSS cl2.sss_data = cl1.sss_data; # ifdef USE_SSS_ALBEDO @@ -814,13 +814,12 @@ Closure closure_mix(Closure cl1, Closure cl2, float fac) # endif # endif } - - /* When mixing SSR don't blend roughness. - * - * It makes no sense to mix them really, so we take either one of them and - * tone down its specularity (ssr_data.xyz) while keeping its roughness (ssr_data.w). - */ - if (cl1.ssr_id == outputSsrId) { + else if (cl1.ssr_id == outputSsrId) { + /* When mixing SSR don't blend roughness. + * + * It makes no sense to mix them really, so we take either one of them and + * tone down its specularity (ssr_data.xyz) while keeping its roughness (ssr_data.w). + */ cl.ssr_data = mix(cl1.ssr_data.xyzw, vec4(vec3(0.0), cl1.ssr_data.w), fac); cl.ssr_normal = cl1.ssr_normal; cl.ssr_id = cl1.ssr_id; -- cgit v1.2.3