1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-18 13:55:23 -05:00
alacritty/res/text.f.glsl
Joe Wilm e794bc11b9
Use subpixel font rendering
OpenGL only supports shared alpha blending. Subpixel font rendering
requires using the font RGB values as alpha masks for the corresponding
RGB channels. To support this, blending is implemented in the fragment
shader.
2016-04-11 08:05:19 -07:00

30 lines
837 B
GLSL

#version 330 core
in vec2 TexCoords;
uniform sampler2D mask;
uniform vec3 textColor;
uniform vec3 bgColor;
// SRC = SRC_ALPHA; DST = 1 - SRC_ALPHA
void MyBlend(in vec3 srcValue,
in vec3 dstValue,
in vec3 srcAlpha,
out vec3 blended)
{
vec3 dstAlpha = vec3(1.0, 1.0, 1.0) - srcAlpha;
vec3 preBlended = (srcValue * srcAlpha + dstValue * dstAlpha);
blended = vec3(min(1.0, preBlended.x),
min(1.0, preBlended.y),
min(1.0, preBlended.z));
}
void main()
{
// vec4 red = vec4(sampled.rgb, sampled.r * sampled.g * sampled.b);
// vec4 sampled = vec4(1.0, 1.0, 1.0, texture(mask, TexCoords));
vec3 blended = vec3(1.0, 1.0, 1.0);
MyBlend(textColor, bgColor, texture(mask, TexCoords).rgb, blended);
gl_FragColor = vec4(blended, 1.0);
}