
#version 130


uniform sampler2D SamplerBGRA;
//uniform sampler2D SamplerTableTex1;
//uniform sampler2D SamplerTableTex2;
uniform sampler2D SamplerBackTex1;
//uniform sampler2D SamplerBackTex2;

out     vec4 		outText;	// output sampler

uniform  float kx;
uniform  float ky;
uniform  float saturate;
uniform  float bound_l;
uniform float rangeX, rangeY, rangeW, rangeH;
uniform  float strength; // effect strength, blend with source, 0 -- 1, default is 1

void main(void)
{
	 vec2 v_texCoord = gl_TexCoord[0].st;

     vec3 src, dst;
     vec3 tmp_s;
     float lum;
     vec3 txt;
            
    src.rgb = texture2D(SamplerBGRA, v_texCoord).rgb;
    dst = src;

     vec2 smp_coord;
    smp_coord.x = v_texCoord.x*rangeW+rangeX;
    smp_coord.y = (v_texCoord.y*rangeH+rangeY) * kx/ky;
    txt = texture2D(SamplerBackTex1, smp_coord).rgb;
    
    lum = dst.r*0.299 + dst.g*0.587 + dst.b*0.114;
    lum = (lum - bound_l)/saturate;
    
    if(lum < 0.5)
    {
        dst = 2.0*(lum * txt);
    }
    else
    {
        dst = 2.0*(lum + txt) - lum * txt * 2.0 - 1.0;
    }
    
    outText = vec4(mix(src, dst, strength),1.0);
}