diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2021-03-18 18:58:26 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2021-03-18 20:07:46 +0300 |
commit | b1150fa1f5a5d5fa500d26c4b466e3f03fc30feb (patch) | |
tree | ba6e510488683866b4f1d780f488504be4c685d8 /source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl | |
parent | 51c7ff9222c362e03d07aba0ebbffd9d52fc9d3b (diff) |
Fix T86448 EEVEE: SSRefraction Depth regression
Caused by recent change for contact shadow raytracing. rB4e236326c137
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl index 5c4fe6d47a0..1b2135646c9 100644 --- a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl +++ b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl @@ -105,6 +105,7 @@ struct RayTraceParameters { bool raytrace(Ray ray, RayTraceParameters params, const bool discard_backface, + const bool allow_self_intersection, out vec3 hit_position) { /* Clip to near plane for perspective view where there is a singularity at the camera origin. */ @@ -114,11 +115,13 @@ bool raytrace(Ray ray, ScreenSpaceRay ssray = raytrace_screenspace_ray_create(ray, params.thickness); /* Avoid no iteration. */ - if (ssray.max_time < 1.1) { + if (!allow_self_intersection && ssray.max_time < 1.1) { hit_position = ssray.origin.xyz + ssray.direction.xyz; return false; } + ssray.max_time = max(1.1, ssray.max_time); + float prev_delta = 0.0, prev_time = 0.0; float depth_sample = get_depth_from_view_z(ray.origin.z); float delta = depth_sample - ssray.origin.z; |