Skip to content

Commit 567e62f

Browse files
committed
Fix for distortions in multi channel signed distance field corners
1 parent c81fd6c commit 567e62f

File tree

3 files changed

+8
-8
lines changed

3 files changed

+8
-8
lines changed

drivers/gles3/shaders/canvas.glsl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -559,8 +559,8 @@ float map_ninepatch_axis(float pixel, float draw_size, float tex_pixel_size, flo
559559

560560
#endif
561561

562-
float msdf_median(float r, float g, float b, float a) {
563-
return min(max(min(r, g), min(max(r, g), b)), a);
562+
float msdf_median(float r, float g, float b) {
563+
return max(min(r, g), min(max(r, g), b));
564564
}
565565

566566
void main() {
@@ -606,7 +606,7 @@ void main() {
606606
vec2 msdf_size = vec2(textureSize(color_texture, 0));
607607
vec2 dest_size = vec2(1.0) / fwidth(uv);
608608
float px_size = max(0.5 * dot((vec2(px_range) / msdf_size), dest_size), 1.0);
609-
float d = msdf_median(msdf_sample.r, msdf_sample.g, msdf_sample.b, msdf_sample.a) - 0.5;
609+
float d = msdf_median(msdf_sample.r, msdf_sample.g, msdf_sample.b) - 0.5;
610610

611611
if (outline_thickness > 0.0) {
612612
float cr = clamp(outline_thickness, 0.0, px_range / 2.0) / px_range;

scene/resources/material.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,8 +1476,8 @@ void vertex() {)";
14761476

14771477
if (flags[FLAG_ALBEDO_TEXTURE_MSDF] && !flags[FLAG_UV1_USE_TRIPLANAR]) {
14781478
code += R"(
1479-
float msdf_median(float r, float g, float b, float a) {
1480-
return min(max(min(r, g), min(max(r, g), b)), a);
1479+
float msdf_median(float r, float g, float b) {
1480+
return max(min(r, g), min(max(r, g), b));
14811481
}
14821482
)";
14831483
}
@@ -1634,7 +1634,7 @@ void fragment() {)";
16341634
}
16351635
code += R"(
16361636
float px_size = max(0.5 * dot(msdf_size, dest_size), 1.0);
1637-
float d = msdf_median(albedo_tex.r, albedo_tex.g, albedo_tex.b, albedo_tex.a) - 0.5;
1637+
float d = msdf_median(albedo_tex.r, albedo_tex.g, albedo_tex.b) - 0.5;
16381638
if (msdf_outline_size > 0.0) {
16391639
float cr = clamp(msdf_outline_size, 0.0, msdf_pixel_range / 2.0) / msdf_pixel_range;
16401640
albedo_tex.a = clamp((d + cr) * px_size, 0.0, 1.0);

servers/rendering/renderer_rd/shaders/canvas.glsl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -462,8 +462,8 @@ void light_blend_compute(uint light_base, vec4 light_color, inout vec3 color) {
462462
}
463463
}
464464

465-
float msdf_median(float r, float g, float b, float a) {
466-
return min(max(min(r, g), min(max(r, g), b)), a);
465+
float msdf_median(float r, float g, float b) {
466+
return max(min(r, g), min(max(r, g), b));
467467
}
468468

469469
void main() {

0 commit comments

Comments
 (0)