Commit: 5b39692409143f9783a9ed1731821c3b3a0b37ac Author: Miguel Pozo Date: Mon Feb 6 18:03:22 2023 +0100 Branches: tmp-eevee-shadow-commit-mp https://developer.blender.org/rB5b39692409143f9783a9ed1731821c3b3a0b37ac
EEVEE Shadows: Prevent the far plane from casting shadows onto farther objects =================================================================== M source/blender/draw/engines/eevee_next/shaders/eevee_shadow_lib.glsl M source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_clear_comp.glsl =================================================================== diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_lib.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_lib.glsl index 89bfca6c14d..cf2fcf9dc28 100644 --- a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_lib.glsl +++ b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_lib.glsl @@ -158,6 +158,8 @@ ShadowSample shadow_punctual_sample_get( samp.bias = shadow_slope_bias_get(atlas_size, light, lNg, lP, samp.uv, samp.tile.lod); float occluder_ndc = shadow_tile_depth_get(atlas_tx, samp.tile, samp.uv); + /* Depth is cleared to FLT_MAX, we clamp it to 1 in punctual shadows for better precission */ + occluder_ndc = clamp(occluder_ndc, 0, 1); /* NOTE: Given to be both positive, so can use intBitsToFloat instead of orderedInt version. */ float near = intBitsToFloat(light.clip_near); @@ -217,4 +219,4 @@ ShadowSample shadow_sample(const bool is_directional, } } -/** \} */ \ No newline at end of file +/** \} */ diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_clear_comp.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_clear_comp.glsl index 1135af01376..3179b1667ca 100644 --- a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_clear_comp.glsl +++ b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_page_clear_comp.glsl @@ -12,5 +12,6 @@ void main() uvec2 page_co = unpackUvec2x16(clear_page_buf[gl_GlobalInvocationID.z]); uvec2 page_texel = page_co * pages_infos_buf.page_size + gl_GlobalInvocationID.xy; - imageStore(atlas_img, ivec2(page_texel), uvec4(floatBitsToUint(1.0))); -} \ No newline at end of file + /* Clear to FLT_MAX instead of 1 so the far plane doesn't cast shadows onto farther objects */ + imageStore(atlas_img, ivec2(page_texel), uvec4(floatBitsToUint(FLT_MAX))); +} _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs