diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-05-28 21:33:19 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-05-28 21:33:19 +0300 |
commit | 574e7903407044a18c39af5eed6576744cd5d106 (patch) | |
tree | 1efe55c04c1df958966ba9d0e1eaa15b209edce9 /source/blender/draw/engines/eevee/shaders | |
parent | 2783945b1b088260eeab1ff5e5a7ac8d3043f826 (diff) |
Fix T64123 Eevee: Reflections Not Visible On Alpha Clip Materials
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/bsdf_common_lib.glsl | 27 |
1 files 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; |