#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); }