// Tone mapping pass

#include "hdr.cg"

half4 main(fragin In,
           uniform samplerRECT sceneTex     : TEXUNIT0,
           uniform samplerRECT blurTex      : TEXUNIT1,
           uniform sampler1D   gammaTex     : TEXUNIT2,
           uniform samplerRECT vignetteTex  : TEXUNIT3,
           uniform float       blurAmount,
           uniform float4      windowSize,
           uniform float       exposure
           ) : COLOR
{
    // sum original and blurred image
    half3 c = lerp(texRECT(sceneTex, In.tex0.xy), texRECT_bilinear(blurTex, In.tex1.xy), blurAmount).xyz;

    // exposure
    c = c * half(exposure);

    // vignette effect (makes brightness drop off with distance from center)
//    vignette(c, In.wpos, windowSize.xy, windowSize.zw);
    c = c * texRECT(vignetteTex, In.tex0.xy).rgb;

    // gamma correction
#if 0
    // use math
    c = pow(c, 1.0 / 2.2);
#else
    // use lut
    c.r = h1tex1D(gammaTex, c.r);
    c.g = h1tex1D(gammaTex, c.g);
    c.b = h1tex1D(gammaTex, c.b);
#endif

    return half4(c, 1.0);
}
