@@ -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 }
@@ -1621,10 +1621,12 @@ void fragment() {)";
16211621 code += R"(
16221622 {
16231623 // Albedo Texture MSDF: Enabled
1624- albedo_tex.rgb = mix(
1625- vec3(1.0 + 0.055) * pow(albedo_tex.rgb, vec3(1.0 / 2.4)) - vec3(0.055),
1626- vec3(12.92) * albedo_tex.rgb,
1627- lessThan(albedo_tex.rgb, vec3(0.0031308)));
1624+ if (!OUTPUT_IS_SRGB) {
1625+ albedo_tex.rgb = mix(
1626+ vec3(1.0 + 0.055) * pow(albedo_tex.rgb, vec3(1.0 / 2.4)) - vec3(0.055),
1627+ vec3(12.92) * albedo_tex.rgb,
1628+ lessThan(albedo_tex.rgb, vec3(0.0031308)));
1629+ }
16281630 vec2 msdf_size = vec2(msdf_pixel_range) / vec2(albedo_texture_size);
16291631)" ;
16301632 if (flags[FLAG_USE_POINT_SIZE]) {
@@ -1634,12 +1636,13 @@ void fragment() {)";
16341636 }
16351637 code += R"(
16361638 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 ;
1639+ float d = msdf_median(albedo_tex.r, albedo_tex.g, albedo_tex.b) ;
16381640 if (msdf_outline_size > 0.0) {
16391641 float cr = clamp(msdf_outline_size, 0.0, msdf_pixel_range / 2.0) / msdf_pixel_range;
1640- albedo_tex.a = clamp((d + cr) * px_size, 0.0, 1.0);
1642+ d = min(d, albedo_tex.a);
1643+ albedo_tex.a = clamp((d - 0.5 + cr) * px_size + 0.5, 0.0, 1.0);
16411644 } else {
1642- albedo_tex.a = clamp(d * px_size + 0.5, 0.0, 1.0);
1645+ albedo_tex.a = clamp((d - 0.5) * px_size + 0.5, 0.0, 1.0);
16431646 }
16441647 albedo_tex.rgb = vec3(1.0);
16451648 }
0 commit comments