1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Fix Light2D none shadow filter to use nearest sampling

This commit is contained in:
Rudolph Bester
2025-08-14 19:12:24 +02:00
parent 07f4c06601
commit ebd32c15ec

View File

@@ -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; uint shadow_mode = light_array.data[light_base].flags & LIGHT_FLAGS_FILTER_MASK;
if (shadow_mode == LIGHT_FLAGS_SHADOW_NEAREST) { 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) { } 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); vec4 shadow_pixel_size = vec4(light_array.data[light_base].shadow_pixel_size, 0.0, 0.0, 0.0);
shadow = 0.0; shadow = 0.0;