在HLSL Pixel Shader中,代码如下:
float Exposure_Level;
sampler Environment;
float4 ps_main(float3 dir: TEXCOORD0) : COLOR
{
// Read texture and determine HDR color based on alpha
// channel and exposure level
float4 color = texCUBE(Environment, dir);
return color * ((1.0+(color.a*64.0))* Exposure_Level);
}
此传递将呈现为浮点纹理,格式为A16R16G16B16。但我不太明白为什么颜色应乘以
((1.0+(color.a*64.0))* Exposure_Level)
可能大到65或更大。
颜色介于0到1之间,Exposure_Level应大于0.
如果颜色乘以这样的数字,结果可能会非常大,为什么这仍然有效?