From d2933f04b7ec9905b517d582a133d6312a08abfe Mon Sep 17 00:00:00 2001 From: celyk Date: Sat, 21 Feb 2026 11:06:27 +1100 Subject: [PATCH] Clamp uv coordinates of omni light projector --- .../renderer_rd/shaders/scene_forward_lights_inc.glsl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl index 73a17a61d7..60d92516e0 100644 --- a/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl +++ b/servers/rendering/renderer_rd/shaders/scene_forward_lights_inc.glsl @@ -665,6 +665,10 @@ void light_process_omni(uint idx, vec3 vertex, hvec3 eye_vec, hvec3 normal, vec3 local_v.xy = local_v.xy * 0.5 + 0.5; vec2 proj_uv = local_v.xy * atlas_rect.zw; + // Clamp the uv coordinates to prevent bleeding from neighboring decals. + vec2 texel_size = 1.0 / vec2(textureSize(sampler2D(decal_atlas_srgb, light_projector_sampler), 0)); + proj_uv = clamp(proj_uv, texel_size * 0.5, atlas_rect.zw - texel_size * 0.5); + if (sc_projector_use_mipmaps()) { vec2 proj_uv_ddx; vec2 proj_uv_ddy;