Directx HLSL浮点纹理中的颜色

Directx HLSL浮点纹理中的颜色,directx,hlsl,Directx,Hlsl,在HLSL像素着色器中,代码如下所示: 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);

在HLSL像素着色器中,代码如下所示:

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之间,曝光水平应大于0


如果颜色乘以这样的数字,结果可能非常大,为什么仍然有效

你读过关于HDR渲染理论的论文吗?也许这能回答你的问题。@rashmatash谢谢你的建议,我在哪里可以看报纸?这是报纸。再看看这篇文章:要搜索的关键词有:色调映射、HDR灯光