Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl5
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;