什么是HDR?
我们都知道,人眼对光线的感受是有一个渐进过程的,例如,从昏暗的隧道出口来到阳光下时,我们会先感到亮度突然增高并无法看清景物,数秒后才能恢复正常,因为在黑暗的地方,人为了更好的分辨物体,瞳孔张开很大,以便吸收光线;而突然到了光亮处瞳孔来不及收缩,视网膜上的视神经无法承受如此多的光线,人自然会迷上眼睛阻止大量光线冲击视神经,而HDR技术的出发点,就是要模拟人眼的这种视觉效应,目的是展现动态、趋近真实的物理环境。
HDR全称High Dynamic Range,中文“高动态范围”,动态范围是指信号最高和最低值的相对比值。目前的16位整型格式使用从“0”(黑)到“1”(白)的颜色值,但是不允许所谓的“过范围”值,比如说金属表面比白色还要白的高光处的颜色值,而在HDR的帮助下,我们可以使用超出普通范围的颜色值,因而能渲染出更加真实的3D场景,简单来说,HDR可以用3句话来概括:1.亮的地方可以非常亮2.暗的地方可以非常暗3.亮暗部的细节都很明显,这也正是现实中真实的光影效应在人眼中的表现,在目前,HDR的标准来自由工业光魔(Industrial Light & Magic,Lucas Arts旗下的著名特效工作室,星球大战系列的视觉特效均出自其手)开发的OpenEXR,这一标准中使用了16位浮点的(FP16)贴图、过滤、混合、存储支持(即高精度动态范围),而我们看到的最早的HDR则来自Valve,他们在首个HDR演示Demo《半条命2:迷失的海岸线》中使用的则是基于DirectX 9.0 Shader Model 2.0的Int8位精度HDR。
![]() |
然而关键性的问题在于,在DirectX 9.0模式下运行FP16时,会占用到原本属于FSAA(全屏抗锯齿)的缓冲区域,使得在开启HDR效果后无法进行FSAA处理。这就导致NVIDIA显卡在大部分游戏无法同时支持FSAA和HDR!而ATI X1000系列显卡可以通过另外指定缓冲区的方式来解决这个问题,这就使得在使用了FP16精度HDR的游戏,例如上古4、彩虹6号:维加斯和细胞分裂4:双重间谍中,7系N卡全部无法同时打开HDR+AA。
既然7系N卡技术上的缺陷导致了HDR+AA无法实现,那么这个补丁,究竟隐藏着什么秘密呢?