泡泡网显卡频道 PCPOP首页      /      显卡     /      评测    /    正文

DirectX不是全部!3D游戏图形技术解析

● 大名鼎鼎的HDR技术再次缩水

    HDR(High Dynamic Range,高动态范围光照)技术相信很多人并不陌生,想当年DX9C SM3.0面世时,正是凭借HDR技术一举成名,HDR所带来的绚丽光影效果给玩家极强的视觉震撼,但却产生了很多负面效果,这些历史遗留问题时至今日都没有得到完美解决。

    几乎所有的图形技术都是随着时间的推移来进一步增强效果,只有HDR被一而再再而三的“缩水”,这是为什么呢?

● DX9C时代HDR与AA水火不容

    HDR技术通过采用浮点格式的颜色代码来为纹理、光照等计算提供极大的精度和颜色范围(以前的纹理一般都是采用整数型的颜色格式)。尽管最后显示到屏幕上还是每个颜色通道8位的整数格式,但是以前的材质、光照计算中纹理也是用每通道8位的格式来参与计算,所以在显示到画面之前,很多细节就在低精度的运算中丢失了。

    HDR效果虽然很美,但在DX9C模式下进行16位浮点(FP16)运算时,会占用到原本属于多重采样抗锯齿(MSAA)的缓冲区域,使得游戏开启HDR后无法进行FSAA处理。当年的一大批DX9C游戏都是如此,比如《孤岛惊魂》、《细胞分裂》、《虚幻3》引擎的全系列游戏。

● ATI X1000和XBOX360是个例外

    ATI的DX9C显卡发布较晚,因此在设计之初就考虑到了HDR+AA的需要,整合了额外的缓存,只要通过游戏或者驱动重新指定另外的缓冲区,就能完美支持HDR+AA效果,所以X1000系列和XBOX360主机都能支持HDR+AA。

    不过ATI的HDR+AA方案并不是业界标准,还是有不少游戏无法同时开启HDR和AA,通过驱动强行更改缓冲区的方式和一些游戏有兼容性问题,ATI官方都不认可这种做法。

● DX10时代,新增两种HDR颜色格式

    为了解决困扰业界已久的HDR+AA问题,微软在DX10当中加入了两种新的HDR格式,对每个颜色通道16位浮点数的格式进行删减,第一种是R11G11B10(红色绿色各11位,蓝色10位,总计32位),另一种是红绿蓝各9位共享5位指数(计算机中浮点数是尾数附加指数的形式来表示)。

    新增的两种HDR格式都只有32位,而并非DX9C时代的48位(FP16x3),所以动态范围精度有些下降,但好处就是新的HDR不会与MSAA抢占缓冲区,所消耗的显存也大大减少,效率和兼容性提高,至于光影效果的缩水其实很难看出来。

● DX11时代,新增HDR纹理压缩技术

    HDR除了不支持抗锯齿外,还不支持纹理压缩技术,因为HDR在设计之初的要求就是光照和纹理都必须保持高精度。随着时代的发展,游戏的分辨率越来越高,纹理贴图越来越精细,而纹理贴图如果不经压缩就放在显存里面的话,容量是相当恐怖的,因此新一代的游戏显存消耗成倍增加,这其中罪魁祸首其实还是HDR技术。

    为了解决这个显存消耗大户,在DX11当中又新增了一种专为HDR设计的纹理压缩格式:BC6H,压缩比高达6:1。

    上图展示的是图像通过BC6H压缩模式进行压缩的前后效果对比图。其中左边的图像为原始图像,中间的是在压缩过程中损失的一些细节,而右边的就是压缩后的图像。可以看出,从画质上来看几乎没有损失(肉眼看不出),但是却可以大幅度降低显存的占用。

    经过了DX9C、DX10和DX11三代API,HDR技术在神不知鬼不觉的情况下被两次“缩水”之后,才真正走向成熟,由此可见好的图形技术不光是要效果出色,更重要的是拥有高效率和实用性,才能被更多的游戏所接受,被更多的显卡所支持。

● 代表游戏:几乎所有主流游戏都有使用HDR效果,时至今日依然有一些采用虚幻3引擎的游戏无法同时开启HDR和AA,需要通过修改的方式实现

0人已赞

关注我们

泡泡网

手机扫码关注