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:
authorClément Foucault <foucault.clem@gmail.com>2017-10-12 18:35:59 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-10-12 18:36:24 +0300
commita09b8c08fced7f5e0d4c4e38357093c30785ed04 (patch)
tree36f271677dae1e31991a72cbc926cbcce4bbbbcd /source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
parente416f417e095397f37297471061d911927597fac (diff)
Eevee: Contact Shadows: Fix remaining artifacts.
There was noise correlation between the rotation random number and the radius random number used in the contact shadow algo. Hacking a new distribution from the old distribution (may not be ideal because it's discrepency may be high) Also distribute samples evenly on the shadow disc. (add sqrt) Fix the "bias floating shadows", was cause by the discarding of backfacing geom which makes no sense in this case.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl')
-rw-r--r--source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl10
1 files changed, 7 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 c1d6b7537ff..9656bb0b4af 100644
--- a/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
+++ b/source/blender/draw/engines/eevee/shaders/raytrace_lib.glsl
@@ -118,7 +118,9 @@ void prepare_raycast(vec3 ray_origin, vec3 ray_end, float thickness, out vec4 ss
// #define GROUPED_FETCHES /* is still slower, need to see where is the bottleneck. */
/* Return the hit position, and negate the z component (making it positive) if not hit occured. */
/* __ray_end__ is the ray direction premultiplied by it's maximum length */
-vec3 raycast(int index, vec3 ray_origin, vec3 ray_end, float thickness, float ray_jitter, float trace_quality, float roughness)
+vec3 raycast(
+ int index, vec3 ray_origin, vec3 ray_end, float thickness, float ray_jitter,
+ float trace_quality, float roughness, const bool discard_backface)
{
vec4 ss_step, ss_start;
float max_time;
@@ -199,8 +201,10 @@ vec3 raycast(int index, vec3 ray_origin, vec3 ray_end, float thickness, float ra
#endif
}
- /* Discard backface hits */
- hit = hit && (prev_delta > 0.0);
+ if (discard_backface) {
+ /* Discard backface hits */
+ hit = hit && (prev_delta > 0.0);
+ }
/* Reject hit if background. */
hit = hit && (depth_sample != 1.0);