/* Shader for computing pixel-wise difference between two input textures and
 * rendering of the difference image in a color coded fashion.
 * (c) 2008-2011 Mario Kleiner. Licensed under MIT license.
 */

#extension GL_ARB_texture_rectangle : enable

uniform sampler2DRect Image1;
uniform sampler2DRect Image2;
uniform float Delta;

void main(void)
{
    float val1 = texture2DRect(Image1, gl_TexCoord[0].st).r;
    float val2 = texture2DRect(Image2, gl_TexCoord[0].st).r;

    float diff = val1 - val2;

    if (abs(diff) > Delta) {
        gl_FragColor.g = 0.0;
        if (diff > 0.0) {
            gl_FragColor.r = 1.0;
            gl_FragColor.b = 0.0;
        }
        else {
            gl_FragColor.r = 0.0;
            gl_FragColor.b = 1.0;
        }
    }
    else {
        gl_FragColor.r = 0.0;
        gl_FragColor.g = 1.0;
        gl_FragColor.b = 0.0;
    }
}
