sampler s0 : register(s0);
float4 main(float2 tex : TEXCOORD0) : COLOR {
float exposure = float(15); float luminance = float(-0.5);
float4 input = tex2D(s0,tex); float4 output = float4(1,1,1,1);
//calculate exposure input *= exposure;
//convert to YCbCr float Y = float(0.299*input.r + 0.587 * input.g + 0.114 * input.b); float Cb = float(-0.1687 * input.r + -0.3313 * input.g + 0.5 * input.b + 0.5); float Cr = float(0.5 * input.r - 0.4187 * input.g - 0.0813 * input.b + 0.5);
//calculate luminance Y = Y+ luminance;
//convert back to RGB float R = float(Y + 1.402 * (Cr - 0.5)); float G = float(Y - 0.34414 * (Cb - 0.5) - 0.71414 * (Cr - 0.5)); float B = float(Y + 1.772 * (Cb - 0.5));
//DRAW Original if (tex.y<0.5){ output = tex2D(s0,tex);
//DRAW Exposure + Luminance }else { output = float4(R,G,B,1); }
return output; }
sampler s0 : register(s0); float4 main(float2 tex : TEXCOORD0) : COLOR { float exposure = float(15); float luminance = float(-0.5); float4 input = tex2D(s0,tex); float4 output = float4(1,1,1,1); //calculate exposure input *= exposure; //convert to YCbCr float Y = float(0.299*input.r + 0.587 * input.g + 0.114 * input.b); float Cb = float(-0.1687 * input.r + -0.3313 * input.g + 0.5 * input.b + 0.5); float Cr = float(0.5 * input.r - 0.4187 * input.g - 0.0813 * input.b + 0.5); //calculate luminance Y = Y+ luminance; //convert back to RGB float R = float(Y + 1.402 * (Cr - 0.5)); float G = float(Y - 0.34414 * (Cb - 0.5) - 0.71414 * (Cr - 0.5)); float B = float(Y + 1.772 * (Cb - 0.5)); //DRAW Original if (tex.y<0.5){ output = tex2D(s0,tex); //DRAW Exposure + Luminance }else { output = float4(R,G,B,1); } return output; }
|