From 27137c479cc309bbb72ed4e41d481cdcfb773716 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 21 Oct 2020 22:51:23 +0200 Subject: [PATCH] EEVEE: Screen Space Reflection: Improve contact reflections This patch helps the case of intricate reflections where the ray does not travel far before intersecting the geometry. In these cases there could be false negative exclusion of the ray caused by the backface rejection threshold. --- .../blender/draw/engines/eevee/shaders/raytrace_lib.glsl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl index 225bf9b07db..dbb5e660dab 100644 --- a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl @@ -235,9 +235,10 @@ vec3 raycast(int index, #endif } - if (discard_backface) { - /* Discard backface hits */ - hit = hit && (prev_delta > 0.0); + /* Discard backface hits. Only do this if the ray traveled enough to avoid loosing intricate + * contact reflections. This is only used for SSReflections. */ + if (discard_backface && prev_delta < 0.0 && curr_time > 4.1) { + hit = false; } /* Reject hit if background. */