From f766e401db69ba687e45052c46840577ac929322 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:35:33 +0300 Subject: [PATCH] [MSDF] Fix outline bleed out at small sizes. --- drivers/gles3/shaders/canvas.glsl | 2 +- scene/resources/material.cpp | 2 +- servers/rendering/renderer_rd/shaders/canvas.glsl | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gles3/shaders/canvas.glsl b/drivers/gles3/shaders/canvas.glsl index fcf290a8f3..37d851a3c0 100644 --- a/drivers/gles3/shaders/canvas.glsl +++ b/drivers/gles3/shaders/canvas.glsl @@ -611,7 +611,7 @@ void main() { if (outline_thickness > 0.0) { float cr = clamp(outline_thickness, 0.0, (px_range / 2.0) - 1.0) / px_range; d = min(d, msdf_sample.a); - float a = clamp((d - 0.5 + cr) * px_size + 0.5, 0.0, 1.0); + float a = clamp((d - 0.5 + cr) * px_size, 0.0, 1.0); color.a = a * color.a; } else { float a = clamp((d - 0.5) * px_size + 0.5, 0.0, 1.0); diff --git a/scene/resources/material.cpp b/scene/resources/material.cpp index 45ee2b380e..cd42fd1e06 100644 --- a/scene/resources/material.cpp +++ b/scene/resources/material.cpp @@ -1641,7 +1641,7 @@ void fragment() {)"; if (msdf_outline_size > 0.0) { float cr = clamp(msdf_outline_size, 0.0, (msdf_pixel_range / 2.0) - 1.0) / msdf_pixel_range; d = min(d, albedo_tex.a); - albedo_tex.a = clamp((d - 0.5 + cr) * px_size + 0.5, 0.0, 1.0); + albedo_tex.a = clamp((d - 0.5 + cr) * px_size, 0.0, 1.0); } else { albedo_tex.a = clamp((d - 0.5) * px_size + 0.5, 0.0, 1.0); } diff --git a/servers/rendering/renderer_rd/shaders/canvas.glsl b/servers/rendering/renderer_rd/shaders/canvas.glsl index 3c71066cee..1b1c67f4a0 100644 --- a/servers/rendering/renderer_rd/shaders/canvas.glsl +++ b/servers/rendering/renderer_rd/shaders/canvas.glsl @@ -518,7 +518,7 @@ void main() { if (outline_thickness > 0) { float cr = clamp(outline_thickness, 0.0, (px_range / 2.0) - 1.0) / px_range; d = min(d, msdf_sample.a); - float a = clamp((d - 0.5 + cr) * px_size + 0.5, 0.0, 1.0); + float a = clamp((d - 0.5 + cr) * px_size, 0.0, 1.0); color.a = a * color.a; } else { float a = clamp((d - 0.5) * px_size + 0.5, 0.0, 1.0);