summaryrefslogtreecommitdiff
path: root/res/text.f.glsl
diff options
context:
space:
mode:
Diffstat (limited to 'res/text.f.glsl')
-rw-r--r--res/text.f.glsl23
1 files changed, 21 insertions, 2 deletions
diff --git a/res/text.f.glsl b/res/text.f.glsl
index ce9dd41e..7e80a11c 100644
--- a/res/text.f.glsl
+++ b/res/text.f.glsl
@@ -3,9 +3,28 @@ 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 sampled = vec4(1.0, 1.0, 1.0, texture(mask, TexCoords).r);
- gl_FragColor = vec4(textColor, 1.0) * sampled;
+ // 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);
}