From b26f176d1ad01508567c2a3467767ce61fe85614 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Mon, 30 Oct 2023 19:44:27 +0100 Subject: [PATCH] Fix #114096: Workbench: Broken thumbnail shadows on Mac This is the same as 5d06632565fe9cc6ea54260e746c437eaaa23888 but ported to the no-geometry shader version. However the rendering is still broken for another reason. See #114286. --- .../workbench/shaders/workbench_shadow_caps_vert_no_geom.glsl | 2 ++ .../workbench/shaders/workbench_shadow_vert_no_geom.glsl | 2 ++ 2 files changed, 4 insertions(+) diff --git a/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_vert_no_geom.glsl b/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_vert_no_geom.glsl index f69cdc9dd31..8f794f10432 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_vert_no_geom.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_shadow_caps_vert_no_geom.glsl @@ -39,6 +39,8 @@ vec3 extrude_offset(vec3 ls_P) if (L_dot_FP > 0.0) { float signed_distance = dot(pass_data.far_plane.xyz, ws_P) - pass_data.far_plane.w; extrude_distance = -signed_distance / L_dot_FP; + /* Ensure we don't overlap the far plane. */ + extrude_distance -= 1e-3f; } return pass_data.light_direction_ws * extrude_distance; } diff --git a/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert_no_geom.glsl b/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert_no_geom.glsl index 7e167e19f16..0ca10232616 100644 --- a/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert_no_geom.glsl +++ b/source/blender/draw/engines/workbench/shaders/workbench_shadow_vert_no_geom.glsl @@ -70,6 +70,8 @@ vec3 extrude_offset(vec3 ls_P) if (L_dot_FP > 0.0) { float signed_distance = dot(pass_data.far_plane.xyz, ws_P) - pass_data.far_plane.w; extrude_distance = -signed_distance / L_dot_FP; + /* Ensure we don't overlap the far plane. */ + extrude_distance -= 1e-3f; } return pass_data.light_direction_ws * extrude_distance; }