x [ (2-4k) x + 4k-1 ] K的取值范围为0.5 – 2.0
shader的最上面写上多的一个贴图
texture diffuse2
<
>;
然后在右边的属性栏里为这个材质选择1/4大小的那个贴图。
再加入一个新的采样器:
sampler TextureSampler2 = sampler_state
{
texture = <diffuse2>;
AddressU = CLAMP;
AddressV = CLAMP;
AddressW = CLAMP;
MIPFILTER = LINEAR;
MINFILTER = LINEAR;
MAGFILTER = LINEAR;
};
其实都是照抄,变量后加入一个数字。
代码如下:
float4 xposure(float4 _color , float gray , float ex)
{
float b = ( 4 * ex - 1 );
float a = 1 - b;
float f = gray * ( a * gray + b );
return f * _color;
}
//-----------------------------------
float4 PS_Textured( vertexOutput IN): COLOR
{
//亮度信息从downSample后的图像中获得
float k=2.0;
float4 _dsColor = tex2D(TextureSampler2 , IN.texCoordDiffuse);
float _lum = 0.3 * _dsColor.x + 0.59 * _dsColor.y + 0.11* _dsColor.z;
float4 _fColor = tex2D(TextureSampler , IN.texCoordDiffuse);
//对最终颜色进行修正
return xposure(_fColor , _lum , k);
}
k取的是2.0,是比较高的。变化前后的图如下:
我没觉得效果有什么好的,虽然我也不知道调整亮度的那个二次方程是怎么计算出来的。
文章来源:http://songxiaoyu8.blog.163.com/blog/static/20818128200791733919230

浙公网安备 33010602011771号