瀏覽代碼

[MSDF] Fix outline bleed out at small sizes.

Pāvels Nadtočajevs 1 周之前
父節點
當前提交
f766e401db

+ 1 - 1
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);

+ 1 - 1
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);
 		}

+ 1 - 1
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);