summaryrefslogtreecommitdiffstats
path: root/res
diff options
context:
space:
mode:
Diffstat (limited to 'res')
-rw-r--r--res/text.f.glsl21
-rw-r--r--res/text.v.glsl15
2 files changed, 28 insertions, 8 deletions
diff --git a/res/text.f.glsl b/res/text.f.glsl
index 70ad3d19..cf477eb0 100644
--- a/res/text.f.glsl
+++ b/res/text.f.glsl
@@ -15,6 +15,7 @@
in vec2 TexCoords;
flat in vec3 fg;
flat in vec4 bg;
+flat in int colored;
uniform int backgroundPass;
layout(location = 0, index = 0) out vec4 color;
@@ -31,8 +32,22 @@ void main()
alphaMask = vec4(1.0);
color = vec4(bg.rgb, 1.0);
} else {
- vec3 textColor = texture(mask, TexCoords).rgb;
- alphaMask = vec4(textColor, textColor.r);
- color = vec4(fg, 1.0);
+ if (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, 1.0);
+ }
}
}
diff --git a/res/text.v.glsl b/res/text.v.glsl
index 5189980f..8978c111 100644
--- a/res/text.v.glsl
+++ b/res/text.v.glsl
@@ -12,24 +12,28 @@
// See the License for the specific language governing permissions and
// limitations under the License.
#version 330 core
-// Cell properties
+// Cell properties.
layout (location = 0) in vec2 gridCoords;
-// glyph properties
+// Glyph properties.
layout (location = 1) in vec4 glyph;
-// uv mapping
+// uv mapping.
layout (location = 2) in vec4 uv;
-// text fg color
+// Text fg color.
layout (location = 3) in vec3 textColor;
-// Background color
+// Background color.
layout (location = 4) in vec4 backgroundColor;
+// Set to 1 if the glyph colors should be kept.
+layout (location = 5) in int coloredGlyph;
+
out vec2 TexCoords;
flat out vec3 fg;
flat out vec4 bg;
+flat out int colored;
// Terminal properties
uniform vec2 cellDim;
@@ -71,4 +75,5 @@ void main()
bg = vec4(backgroundColor.rgb / 255.0, backgroundColor.a);
fg = textColor / vec3(255.0, 255.0, 255.0);
+ colored = coloredGlyph;
}