diff options
Diffstat (limited to 'alacritty/res/text.f.glsl')
-rw-r--r-- | alacritty/res/text.f.glsl | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/alacritty/res/text.f.glsl b/alacritty/res/text.f.glsl index c0c1bd1b..d5e26881 100644 --- a/alacritty/res/text.f.glsl +++ b/alacritty/res/text.f.glsl @@ -9,31 +9,31 @@ layout(location = 0, index = 1) out vec4 alphaMask; uniform sampler2D mask; -void main() -{ +#define COLORED 2 + +void main() { if (backgroundPass != 0) { - if (bg.a == 0.0) + if (bg.a == 0.0) { discard; + } alphaMask = vec4(1.0); color = vec4(bg.rgb, 1.0); - } else { - if (fg.a != 0.0) { - // Color glyphs, like emojis. - vec4 glyphColor = texture(mask, TexCoords); - alphaMask = vec4(glyphColor.a); + } else if ((int(fg.a) & COLORED) != 0) { + // Color glyphs, like emojis. + vec4 glyphColor = texture(mask, TexCoords); + alphaMask = vec4(glyphColor.a); - // Revert alpha premultiplication. - if (glyphColor.a != 0) { - glyphColor.rgb = vec3(glyphColor.rgb / glyphColor.a); - } - - color = vec4(glyphColor.rgb, 1.0); - } else { - // Regular text glyphs. - vec3 textColor = texture(mask, TexCoords).rgb; - alphaMask = vec4(textColor, textColor.r); - color = vec4(fg.rgb, 1.0); + // Revert alpha premultiplication. + if (glyphColor.a != 0) { + glyphColor.rgb = vec3(glyphColor.rgb / glyphColor.a); } + + color = vec4(glyphColor.rgb, 1.0); + } else { + // Regular text glyphs. + vec3 textColor = texture(mask, TexCoords).rgb; + alphaMask = vec4(textColor, textColor.r); + color = vec4(fg.rgb, 1.0); } } |