随着电脑硬件性能的逐步提升以及用户更高体验效果的需求,两三年前的游戏画质已经不能满足当下的需求。现阶段,不论是单机还是网游,都在努力提升游戏画质,更接近真实场景的画质效果才能迎合用户的需求。在游戏场景中,我们免不了会看到各种“锯齿”,这是由于3D图像从本质上讲是把图像分割成若干个小方格,这些小方格也称为像素点,通过这些像素点来显示图像,这些小方格也就导致了画面会有类似于三角形的锯齿,为了消除这锯齿来提升画质,所以就诞生了抗锯齿技术。就在去年NVIDIA发布新的Kepler架构显卡GTX 680时候,NVIDIA也表示一种更新的抗锯齿技术即将来临,它就是——TXAA!今天,我们就来揭开这项新的抗锯齿技术的神秘面纱。
如果把2000年FSAA(Full Screen Anti-Aliasing,全屏抗锯齿)进入实用化阶段看作是3D图形卡实时抗锯齿技术诞生的标志,那么到今天这项技术已经进入第14个年头了。从早的SSAA到改进型的MSAA(现阶段应用广泛的抗锯齿技术)、CSAA,再到后处理式的MLAA、FXAA,就算是资深的DI Yer也难以数清到底有多少种抗锯齿技术。
无论是哪种抗锯齿技术,其宗旨无非是两个词:画质、速度。为了能够在画质和速度上取得佳的平衡,同时也为了适应日渐流行的延迟渲染技术,各种后处理式抗锯齿技术便应运而生。AMD方面,MLAA(Morpho logical Anti-Aliasing,形态抗锯齿)伴随HD 6000系列显卡而来。NVIDIA则把FXAA作为开普勒系列显卡的助推器(其实FXAA并非只支持开普勒显卡,只是到了开普勒时代NVIDIA把FXAA集成到了驱动程序控制面板中)。
在《毁灭战士3:BFG》中,通过NVIDIA控制面板开启FXAA后能获得不错的抗锯齿效果。
开启FXAA后,《毁灭战士3:BFG》中的文字明显变模糊了。
《战地3》内置FXAA选项,不会出现使用驱动控制面板开启FXAA后文字模糊的现象。
《战地3》内置FXAA选项,不会出现使用驱动控制面板开启FXAA后文字模糊的现象。
NVIDIA给出的TXAA与8×MSAA效果对比
使用开普勒系列显卡时,《使命召唤:黑色行动2》可以开启TXAA抗锯齿。
按照NVIDIA的介绍TXAA无论是在性能还是画质上都轻松超越8×MSAA。另外早期宣传资料中使用的TXAA1、TXAA2现在也称为2×TXAA、4×TXAA。
《刺客信条3》中的抗锯齿选项只有普通、高、非常高、TXAA四挡。
通过以往的测试,我们发现:后处理式抗锯齿技术在获得不错的画质的同时性能下降很小。然而,由于MLAA和FXAA对图像的处理是在渲染完成之后进行的,因此这就带来一个问题:某些不该被处理的地方“被抗锯齿了”,典型的就是游戏中的文字。由图1可以看到,通过NVIDIA控制面板开启FXAA后,《毁灭战士3:BFG》中的锯齿得到了一定程度的抑制。然而观察游戏中的文字(尤其是较小的文字),我们能够看到发虚的情况(图2),这是因为FXAA完全是基于色彩对图像进行处理的,它并不能识别出哪些内容需要处理而哪些内容需要保留,这就造成了字体边缘不够锐利的情况。解决办法就是让游戏本身内置FXAA引擎,而不是通过显卡的控制面板开启,这样游戏就可以在FXAA抗锯齿完成的图像上再叠加字幕等不需要抗锯齿的内容,这种方法其实已经在《战地3》、《光荣使命》、《孤岛危机2》等游戏上使用了(图3)。
解决了字体模糊问题后,FXAA是不是已经达到完美的程度了呢?实际上,说到锯齿很大一部分玩家的意识还停留在静态画面上。其实在动态的画面中锯齿现象对画质也是有影响的,表现在运动的过程中有锯齿的部位会出现较为明显的闪烁。例如《战地3》第二关碎剑者行动片头动画结束后主角走下装甲车后的第一个镜头(图4),尽管已经开启了FXAA,画面右上方的电线杆边缘上依然会有虚线状的小白点(其实就是细微的锯齿),在主角移动的时候这些白点会不停地闪烁,非常晃眼,对画面质量影响严重。
为了解决在动态画面中锯齿部分闪烁的问题,NVIDIA给我们带来了TXAA抗锯齿技术。按照NVIDIA官方资料的介绍,TXAA是Temporal Anti–aliasing的缩写,译为“时间性抗锯齿”。这是一种全新的电影风格抗锯齿技术,旨在减少时间性锯齿,也就是前文提到的在运动中锯齿部位的闪烁和蠕动。该技术集时间性过滤器、硬件抗锯齿电路以及定制的CG电影式抗锯齿算法于一身,通过对象素内部、外部的采样并结合之前帧中内容,TXAA可以提供高画质的过滤。与传统 MSAA相比,TXAA的图像更加柔和。在栅栏、植物以及运动画面中,TXAA已经开始接近甚至在某些情况下超过了其高端专业抗锯齿算法的画质(图5)。
与FXAA等牺牲画质换取高性能的方法相比,TXAA是以牺牲性能来换取画质的。不过这并非是说TXAA效率低下。当前TXAA分为2×和4×两挡,2×TXAA、4×TXAA的性能分别与2×MSAA、4×MSAA相仿,不过2×TXAA的画质已经不逊于8×MSAA,4×TXAA更是远超8×MSAA(图6)。从这个角度看,TXAA是“两手抓,两手都要硬”。比较可惜的是,由于TXAA需要专门的硬件电路配合才能工作,因此现阶段只有NVIDIA的开普勒系列显卡才能够支持。
虽然TXAA早在去年3月份开普勒系列显卡发布的时候就已经进入玩家的视线,可是长期以来支持这个技术的游戏屈指可数,直到深受欢迎的《使命召唤》和《刺客信条》的新续作上市,TXAA才逐渐揭开了那一层神秘的面纱。今天我们就通过这两款游戏来检验一下TXAA技术的实际效果。
《使命召唤:黑色行动2》开启TXAA的方法非常简单,进入游戏设置菜单,切换到“高级”页面,把“反锯齿”选项调节成“2×TXAA”或者是“4×TXAA”就可以马上生效。另外,“高级”页面下的“后期处理”选项其实就是FXAA。是的,在《使命召唤:黑色行动2》中我们可以同时开启TXAA和FXAA(图7)。
我们通过图8所示的蓝色框中的截图对比一下各种抗锯齿技术在《使命召唤:黑色行动2》中的表现(图9)。可以看到在关闭抗锯齿的时候,横杆边缘出现了非常明显的锯齿。开启2×MSAA后锯齿得到了一定程度的抑制,不过还是能够轻易观察到。而开启4×MSAA和8×MSAA后我们就基本看不到锯齿的情况了。另外16×CSAA的效果和8×MSAA相当。
接下来看FXAA的表现,在这个场景中,FXAA的效果和8×MSAA基本相当,锯齿几乎不可见。但仔细看,可以发现边缘有微小的波浪起伏感(8×MSAA和16×CSAA也有同样的现象)。
轮到TXAA登场了。可以看到,2×TXAA的效果明显好于2×MSAA,与4×MSAA基本相当,不过依然存在很细小的锯齿。而开启4×TXAA后,8×MSAA和16×CSAA也不得不甘拜下风,刚才提到的波浪状边缘完全消失了。
笔者正要对4×TXAA的效果赞扬一番,突然间发现一个问题。由图10我们可以看到,尽管开启了MSAA或者是TXAA,枪械后部的锯齿与关闭A A时没有任何区别,而只有开启F XAA才能消除这个部位的锯齿。至于原因,应该是这个部位采用了景深特效,而景深特的处理和MSAA及TXAA有些冲突,因此造成了抗锯齿失效的情况。另外,由于FXAA对画面的处理是位于整个流水线的后阶段,因此加入景深特效不会影响FXAA的正常工作。由此我们也可以发现,虽然TXAA和FXAA同属于后处理式抗锯齿技术,不过他们“后”的程度不一样,FXAA比TXAA要更“后”一些。
下面我们来看看几种抗锯齿技术在《使命召唤:黑色行动2》中的性能表现。测试平台如表1所示,测试时采用1920×1200的分辨率,除抗锯齿外的所有画质选项调至高。
由图11,表2可以看到《使命召唤:黑色行动2》对显卡的要求不是很高,未开启抗锯齿情况下平均帧数达192.5帧。随着MSAA级别的增加,帧数也逐级递减,在8×MSAA时平均帧数跌至138帧,相对关闭抗锯齿时有近30%的性能损失。FXAA和2×MSAA消耗的资源很接近,但同样是付出8%左右的性能,FXAA能收获更好的画质。
2×TXAA与4×MSAA在性能表现上旗鼓相当,4×TXAA的性能损失略低于8×MSAA。惊艳的是,在4×TXAA的基础上再开启FXAA对性能几乎没有影响,但是在画质上却有一定的提升。
总体上来说,在《使命召唤:黑色行动2》中4×TXAA的画质确实胜过8×MSAA,不过在性能上并没有达到NVIDIA宣传的目标。考虑到TXAA刚刚步入实用阶段,无论是游戏引擎还是驱动程序都有优化的空间,因此现在就给TXAA盖棺定论还为时尚早。
接下来我们看看TXAA在《刺客信条3》中的表现。《刺客信条3》的抗锯齿选项不如《使命召唤:黑色行动2》那么丰富,只有4挡可调:普通、高、非常高、TXAA。由图15可以看到,在“普通”和“高”设置下,绳索的边缘有明显的锯齿。而开启“非常高”和TXAA后锯齿消失,并且通过肉眼我们很难区分“非常高”和TXAA的差别。
性能方面,“普通”模式下平均帧数达到了69.1帧,开启“高”模式后下降到了67.4帧,可以说影响不大。而如果采用“非常高”或者是TXAA模式,帧数下降就比较明显了。尤其是TXAA,是四种模式中对资源消耗大的,开启后相对“普通”模式有17%的性能损失(图13,表3)。
在《刺客信条3》中,TXAA面对“非常高”模式在画质和性能上都不占上风,是游戏本身的问题,还是驱动程序没优化好?实际上,前文已经提到,锯齿不仅影响静态画面的质量,而且在动态画面中,有锯齿的地方还会产生闪烁现象,这对画面质量的影响是非常明显的。
如图14、图16所示,屋檐和墙壁的交界线基本处于水平状态,且相对来说没有形成大的明暗反差,就算有锯齿,人眼也不易察觉。在《刺客信条3》中,如果仅把抗锯齿设为“普通”或是“高”,那么在运动情况下会看到这个部分有明显闪烁情况发生。在开启“非常高”模式后,闪烁的情况得到了一定程度的抑制,不过依然明显。
在启用TXAA抗锯齿后,闪烁情况虽没有被完全消除,不过强度和范围都得到了进一步的控制,如果不是刻意去观察的话很容易就忽略这些小瑕疵了。就这点看来,虽然T X A A的平均帧数相对“非高”模式低了0.5帧,但却是非常值得的。
测试平台
测试成绩
TXAA的效果不仅在静态画面中超过传统的MSAA、CSAA及FXAA,并在动态画面中,对时间性锯齿的过滤是其他类型的抗锯齿技术难以做到的。不过目前TXAA还存在一些问题。在《使命召唤:黑色行动2》中,TXAA和景深效果同时开启时会失效。在效率方面,从测试的游戏看来,TXAA目前看来并没有之前宣传的那样神奇,希望这些不足能伴随游戏引擎及驱动程序的更新得到解决。
Tips:常见的几种抗锯齿技术简介
SSAA:Super Sampling Anti-aliasing超级采样抗锯齿,这是早的一项抗锯齿技术。原理是先使用设定分辨率的数倍来渲染图像,比如分辨率设为1024×768,但是在前期处理时的实际分辨率却是2048×1536,然后对其中象素的色彩值进行采样、混合,后把混合后的色彩应用到设定分辨率的图像中。SSAA的效果虽然很好,但是极度消耗显卡的资源,并且并不是屏幕上所有的部位都需要进行抗锯齿的处理,因此SSAA的效率可以说非常低。
MSAA:Multi Sample Anti-Aliasing多重采样抗锯齿。相对于SSA A对整个屏幕上的内容都采样不同,MSAA仅针对Z-Buffer(Z缓冲)和Stencil Buffer(模板缓冲)两个缓冲区内的数据进行采样处理,而通常位于这两个缓冲区中的数据会出现在物体边缘的位置(也就是有可能产生锯齿的地方),因此仅针对这两个缓冲区中的内容进行抗锯齿处理能够在保证画面质量的情况下大幅提升工作效率。
CSAA:Coverage Sampling Anti-Aliasing 覆盖采样抗锯齿。CSAA在MSAA的基础上优化了采样的算法,使抗锯齿过程中对显存容量和带宽的需求量明显减少,因此可以较为轻松的达到16倍采样率,获得几乎和8×MSAA相似画质,而性能损失仅和4×MSAA相当。