shader discard alpha < 0.5

quick fix for depth with treshold alpha
later: depth peeling
This commit is contained in:
jrkb 2023-03-25 13:48:54 +01:00
parent 99bb561291
commit a0af51fdb4
2 changed files with 9 additions and 2 deletions

View file

@ -24,7 +24,7 @@ float screenPxRange() {
void main()
{
vec4 bgColor = vec4(fontColor.rgb,0);
vec4 bgColor = vec4(fontColor.rgb,0.0);
vec4 fgColor = fontColor;
vec3 msdf_rgb = texture(msdf, texCoordVarying).rgb;
@ -32,6 +32,11 @@ void main()
float screenPxDistance = screenPxRange()*(sd - 0.5);
float opacity = clamp(screenPxDistance + 0.5, 0.0, 1.0);
if (opacity < 0.5)
discard;
outputColor = mix(bgColor, fgColor, opacity);
//outputColor = vec4(opacity, 1.0-opacity, 0.0, 1.0);
//outputColor = vec4(1.0-msdf_rgb.rgb, 1.0);
//outputColor = vec4(1.0,0.0,1.0,1.0);
}

View file

@ -25,12 +25,14 @@ float screenPxRange() {
void main()
{
vec4 bgColor = vec4(fontColor.rgb,0);
vec4 bgColor = vec4(1.0-fontColor.rgb,0);
vec4 fgColor = fontColor;
vec3 msdf_rgb = texture(msdf, texCoordVarying).rgb;
float sd = median(msdf_rgb.r, msdf_rgb.g, msdf_rgb.b);
float screenPxDistance = screenPxRange()*(sd - 0.5);
float opacity = clamp(screenPxDistance + 0.5, 0.0, 1.0);
if (opacity < 0.5)
discard;
outputColor = mix(bgColor, fgColor, opacity);
}