blob: 7dbf46825e9257dce7721ab8d5a2b773d97da7ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#version 150
uniform vec4 keyColour;
uniform float keyMinDist;
uniform float keyMaxDist;
// these are our textures
uniform sampler2DRect backgroundTex;
uniform sampler2DRect foregroundTex;
// this comes from the vertex shader
in vec2 texCoordVarying;
// this is the output of the fragment shader
out vec4 outputColor;
void main()
{
// Get color values from the background and foreground
vec4 back = texture(backgroundTex, texCoordVarying);
vec4 fore = texture(foregroundTex, texCoordVarying);
// get alpha from mask
float mask = texture(backgroundTex, texCoordVarying).r;
vec4 delta = back - keyColour;
float distance2 = dot( delta, delta );
float weight = clamp( (distance2 - keyMinDist) / (keyMaxDist - keyMinDist) ,0.0,1.0);
//float4 transparent = IN.color;
//transparent.w = 0;
//OUT.color = lerp( transparent, IN.color, weight );
//mix colors from background and foreground based on the mask value
outputColor = mix(fore , back, weight);
}
|