diff --git a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_tag_usage_frag.glsl b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_tag_usage_frag.glsl index 09a30ba2369..753e4f71010 100644 --- a/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_tag_usage_frag.glsl +++ b/source/blender/draw/engines/eevee_next/shaders/eevee_shadow_tag_usage_frag.glsl @@ -98,6 +98,12 @@ void main() * The inflated bounds can cause unnecessary extra steps. */ float ls_near_box_t = ray_aabb( ls_near_plane, ls_view_direction, interp_flat.ls_aabb_min, interp_flat.ls_aabb_max); + + if (ls_near_box_t < 0.0) { + /* The ray cast can fail in ortho mode due to numerical precision. (See #121629) */ + return; + } + vec3 ls_near_box = ls_near_plane + ls_view_direction * ls_near_box_t; vec3 ws_near_box = drw_point_object_to_world(ls_near_box);