uniform samplerRECT samp0 : register(s0); uniform samplerRECT samp1; float4 brightPass(float2 uv0){ float luminance = 0.13; float fMiddleGray = 0.14; float fWhiteCutOff = 0.70; float4 bp = texRECT(samp0, uv0); bp *= fMiddleGray / (luminance + 0.001); bp *= (1.0 + (bp / (fWhiteCutOff * fWhiteCutOff))); bp -= 0.0; return bp; } void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0){ float4 original = texRECT(samp0, uv0); float blurSize = 2.0; // blurring float4 blur = float4(0.0, 0.0, 0.0, 0.0); blur+= brightPass(uv0 + float2(0.0 * blurSize, 0.0 * blurSize)) * 256.0; blur += brightPass(uv0 + float2(1.0 * blurSize, 0.0 * blurSize)) * 240.0; blur += brightPass(uv0 + float2(2.0 * blurSize, 0.0 * blurSize)) * 192.0; blur += brightPass(uv0 + float2(3.0 * blurSize, 0.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(4.0 * blurSize, 0.0 * blurSize)) * 80.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, 0.0 * blurSize)) * 240.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, 0.0 * blurSize)) * 192.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, 0.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, 0.0 * blurSize)) * 80.0; blur += brightPass(uv0 + float2(0.0 * blurSize, 1.0 * blurSize)) * 240.0; blur += brightPass(uv0 + float2(0.0 * blurSize, 2.0 * blurSize)) * 192.0; blur += brightPass(uv0 + float2(0.0 * blurSize, 3.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(0.0 * blurSize, 4.0 * blurSize)) * 80.0; blur += brightPass(uv0 + float2(0.0 * blurSize, -1.0 * blurSize)) * 240.0; blur += brightPass(uv0 + float2(0.0 * blurSize, -2.0 * blurSize)) * 192.0; blur += brightPass(uv0 + float2(0.0 * blurSize, -3.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(0.0 * blurSize, -4.0 * blurSize)) * 80.0; blur += brightPass(uv0 + float2(1.0 * blurSize, 1.0 * blurSize)) * 225.0; blur += brightPass(uv0 + float2(2.0 * blurSize, 1.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(3.0 * blurSize, 1.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(4.0 * blurSize, 1.0 * blurSize)) * 75.0; blur += brightPass(uv0 + float2(1.0 * blurSize, 2.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(2.0 * blurSize, 2.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(3.0 * blurSize, 2.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(4.0 * blurSize, 2.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(1.0 * blurSize, 3.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(2.0 * blurSize, 3.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(3.0 * blurSize, 3.0 * blurSize)) * 81.0; blur += brightPass(uv0 + float2(4.0 * blurSize, 3.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(1.0 * blurSize, 4.0 * blurSize)) * 75.0; blur += brightPass(uv0 + float2(2.0 * blurSize, 4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(3.0 * blurSize, 4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(4.0 * blurSize, 4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, 1.0 * blurSize)) * 225.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, 1.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, 1.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, 1.0 * blurSize)) * 75.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, 2.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, 2.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, 2.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, 2.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, 3.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, 3.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, 3.0 * blurSize)) * 81.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, 3.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(1.0 * blurSize, -1.0 * blurSize)) * 225.0; blur += brightPass(uv0 + float2(2.0 * blurSize, -1.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(3.0 * blurSize, -1.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(4.0 * blurSize, -1.0 * blurSize)) * 75.0; blur += brightPass(uv0 + float2(1.0 * blurSize, -2.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(2.0 * blurSize, -2.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(3.0 * blurSize, -2.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(4.0 * blurSize, -2.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(1.0 * blurSize, -3.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(2.0 * blurSize, -3.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(3.0 * blurSize, -3.0 * blurSize)) * 81.0; blur += brightPass(uv0 + float2(4.0 * blurSize, -3.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(1.0 * blurSize, -4.0 * blurSize)) * 75.0; blur += brightPass(uv0 + float2(2.0 * blurSize, -4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(3.0 * blurSize, -4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(4.0 * blurSize, -4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, -1.0 * blurSize)) * 225.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, -1.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, -1.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, -1.0 * blurSize)) * 75.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, -2.0 * blurSize)) * 180.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, -2.0 * blurSize)) * 144.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, -2.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, -2.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, -3.0 * blurSize)) * 135.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, -3.0 * blurSize)) * 108.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, -3.0 * blurSize)) * 81.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, -3.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(-1.0 * blurSize, -4.0 * blurSize)) * 75.0; blur += brightPass(uv0 + float2(-2.0 * blurSize, -4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(-3.0 * blurSize, -4.0 * blurSize)) * 0.0; blur += brightPass(uv0 + float2(-4.0 * blurSize, -4.0 * blurSize)) * 0.0; blur = max(blur / 8664.0, float4(0.0, 0.0, 0.0, 0.0)); // output ocol0 = original * 0.6 + blur * 0.2; }