kitty/kitty/graphics_fragment.glsl
2019-12-24 17:10:33 +05:30

40 lines
802 B
GLSL

#version GLSL_VERSION
#define ALPHA_TYPE
uniform sampler2D image;
#ifdef ALPHA_MASK
uniform uint fg;
uniform float alpha_mask_premult;
#else
uniform float inactive_text_alpha;
#endif
in vec2 texcoord;
out vec4 color;
#ifdef ALPHA_MASK
const uint BYTE_MASK = uint(0xFF);
vec3 color_to_vec(uint c) {
uint r, g, b;
r = (c >> 16) & BYTE_MASK;
g = (c >> 8) & BYTE_MASK;
b = c & BYTE_MASK;
return vec3(float(r) / 255.0, float(g) / 255.0, float(b) / 255.0);
}
#endif
void main() {
color = texture(image, texcoord);
#ifdef ALPHA_MASK
color = vec4(color_to_vec(fg), color.r);
color = mix(color, vec4(color.rgb * color.a, color.a), alpha_mask_premult);
#else
color.a *= inactive_text_alpha;
#ifdef PREMULT
color = vec4(color.rgb * color.a, color.a);
#endif
#endif
}