diff options
Diffstat (limited to 'res/text.f.glsl')
-rw-r--r-- | res/text.f.glsl | 23 |
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); } |