From ebd32c15ecc7df7d45fe288cd8f7ed16c4c0731d Mon Sep 17 00:00:00 2001 From: Rudolph Bester Date: Thu, 14 Aug 2025 19:12:24 +0200 Subject: [PATCH] Fix Light2D none shadow filter to use nearest sampling --- servers/rendering/renderer_rd/shaders/canvas.glsl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/servers/rendering/renderer_rd/shaders/canvas.glsl b/servers/rendering/renderer_rd/shaders/canvas.glsl index 1b1c67f4a00..b4de817dd5f 100644 --- a/servers/rendering/renderer_rd/shaders/canvas.glsl +++ b/servers/rendering/renderer_rd/shaders/canvas.glsl @@ -407,7 +407,9 @@ vec4 light_shadow_compute(uint light_base, vec4 light_color, vec4 shadow_uv uint shadow_mode = light_array.data[light_base].flags & LIGHT_FLAGS_FILTER_MASK; if (shadow_mode == LIGHT_FLAGS_SHADOW_NEAREST) { - shadow = texture_shadow(shadow_uv); + vec2 unit_p = floor(shadow_uv.xy / canvas_data.shadow_pixel_size) * canvas_data.shadow_pixel_size; + float depth_sample = texture(sampler2D(shadow_atlas_texture, shadow_sampler), unit_p.xy).r; + shadow = step(depth_sample, shadow_uv.z); } else if (shadow_mode == LIGHT_FLAGS_SHADOW_PCF5) { vec4 shadow_pixel_size = vec4(light_array.data[light_base].shadow_pixel_size, 0.0, 0.0, 0.0); shadow = 0.0;