完美的画面已经离我们不再遥远——反锯齿技术浅析
不管现今的游戏画面有多完美,人物和环境有多真实,但游戏画面的构成的主要方式仍然没有得到改善:一帧画面由成千上万像素构成。这意味着物体多边形的轮廓最终是锯齿状的图形。所以画面质量不可能达到理想的标准,除非完全消除“锯齿”。 别担心,精美的画面品质是要牺牲速度的代价来换取的,并且各大显卡厂商都有自己独到的反锯齿技术,他们新的图形加速卡都纷纷支持全屏抗锯齿。完美的画面已经离我们再遥远。
超级采样(Supersampling)
无论是什么样的抗锯齿技术都是在超级采样技术的基础上发展而来的。在超级采样技术中,画面里的每一个像素点都被拆分成了几个子像素点,然后对它们进行单独处理后分别放入缓冲区。在整个帧的像素都放入缓冲区后接下来就执行反操作,依照模板的式样对拆分的像素采用过滤或“聚合”处理重新生成新的像素。在超级采样期间,画面以较高的分辨率建立,然后依照适当的模板样式进行过滤。(如图1、2)如果我们在800X600的分辨率下打开GF2的4X反锯齿功能后,显卡所表现出的性能将与在1600X1200模式下所表现出的性能相等。由于超级采样消耗了巨大的系统资源,在使用超级采样的反锯齿功能时系统性能的下降非常明显。
多重采样(multisampling)
NVIDIA在GeForce3上采用的多重采样往往被人们误解为超级采样技术,实际上NVIDIA的多重采样技术是超级采样技术的一种变形。 NVIDIA在GeForce3/GeForce4Ti/GeForce4 MX中所采用的多重采样与其在GeForce2中采用的超级采样的主要区别在于:芯片在对同一幅图像进行处理时所处理的子像素的数量不同。如果我们想得到平滑的画面,仅仅对其多边形边缘进行处理就够了。NVIDIA在执行多重采样时有一个特点:在对一个像素点进行着色处理时,不仅仅只对其本身的子像素进行采样,也可以同时对其周边数个像素的子像素进行采样,邻接子像素的图像属性也被包括了进来,影响最终该像素的颜色属性。这样参与计算的子像素样本数目也由原来的2个变为5个。(如图3)
GF3在打开这种全屏抗锯齿技术时,在多边形的边缘上感觉比使用超级采样技术时平滑得多,但性能的下降却不是很明显。(如图4、5)建议有GeForce3以上显卡的朋友打开它。
视觉平滑(smoothvision)
ATI则有自己的反锯齿技术——视觉平滑。该技术利用一个抖动取样表,灵活控制取样的位置变化。这样对一个每组16个样本的取样实际上通过抖动取样表的控制只抽取了其中8个样本(如图6) 应该说视觉平滑smoothvision与超级采样supersampling相比并没有多少优势,在RADEON 8500上所表现出来的实际效果确实教人不敢恭维。开启反锯齿功能后还是会引起性能的下降。因此RADEON 8500在打开抗锯齿功能后自动降低了纹理的细节等级,从而降低了对显存带宽的吞吐量。但是纹理的质量变得非常糟糕。(如图7、8没有打开全屏反锯齿,如图9、10 使用smoothvision 6x)
各位有RADEON 8500的朋友不要着急,我们还可以通过其它的技术来弥补这个缺陷:只需要打开各向异性过滤,就可以用过滤提高纹理的质量。RADEON 8500开启各向异性过滤后性能的损失非常小,而画面质量却提升不少。
16倍全屏幕抗锯齿(FAA-16X)
Martox在Parhelia-512中使用的抗锯齿技术明显优于其它公司。这个革命性的方法对系统的性能影响最低,而且所能达到的消除锯齿的效果也是最好。对于支持FAA-16X的应用程序,Parhelia-512职能的只针对三角形边缘的像素进行柔化,我们在游戏中看到的锯齿都是产生在图形的边缘部分,物体内部根本就不会看到,然后再用上16倍取样,同时还能保留物体内部像素的清晰尖锐,这样就达到了整个画面的柔化效果。由于一般边缘的像素只占有整个画面的很少一部分,所以针对边缘的16倍柔化抗锯齿也不会减少太多的性能。(如图11有Parhelia-512的朋友们,不打开FAA-16X可就亏了!)
高分辨率代替反锯齿
其实要消除锯齿,不一定仅仅用显卡中的反锯齿特效,我们还有一个非常简单的办法——提高分辨率。当分辨率达到一个较高的水平,锯齿也就变得不那么明显了。例如,当分辨率在水平方向上扩大A倍,在垂直方向上扩大B倍,显示器上的物理像素的尺寸实际上变小了,像素的面积事实上缩小了AXB倍。锯齿的幅度也缩小了相同的倍数。
但是想要达到超级取样或4X多重取样的效果,你必须将分辨率在水平方向和垂直方向同时扩大一倍(例如800X600变为1600X1200,1024X768变2048X1536)。当你将显示器的分辨率调到最大值时,你必须忍受60Hz或更低的刷新率。而反锯齿特效所带来的性能下降相对于提高分辨率来说要小一些,尤其是使用Parhelia-512的FAA-16X看起来更划算。总而言之,不是打开全屏反锯齿,就就是提高分辨率。
我们以Homeworld: Cataclysm的某个场景为例比较一下。
最初没有打开全屏反锯齿,舰队看起来模糊的可怜,很难区分舰队单元的机种,而且飞船的轮廓几乎辨认不出来。(如图12、13、14)
打开全屏反锯齿的效果较好,虽然整个画面都变得模糊起来,但仍旧辨认得出飞船的外形。(如图15、16、17)
在提高了分辨率后整个图像清晰分明,感觉比打开反锯齿特效时画面更清楚,但其仔细观察边缘还是有一些细小的锯齿。(如图18、19、20)
反锯齿和提高分辨率都为我们提供了高质量的画面。选择那一个就看你的个人的喜好了。
速度VS.画质
全屏反锯齿没有得到广泛的应用的主要原因是该技术会带来明显的性能下降。采样倍数越高,性能的下降就越明显。比如,2X超级采样使显卡的性能下降了将近一倍,4X的情况则是4倍,6X时则是惊人的6倍。
这就要求你更了解自己显卡的性能,选择适合自己显卡性能的抗锯齿倍数。如果你有像RADEON 8500这样的显卡再加上强劲的CPU和内存,即使是在“heavy”SMOOTHVISION模式下1024X768/32bit运行游戏,速度也还是可以让人接受的。对那些相对较早的显卡NVIDIA GeForce2 MX, PowerVR/STM Kyro/Kyro II, SiS 315等等来说,由于本身性能就不是很高,显卡在普通模式下运行都比较吃力,再加上仅仅支持超级采样,因此在打开全屏反锯齿功能后,性能下降的相当厉害。这种情况下,只能是降低分辨率来运行游戏了,想想看800X600分辨率下你得到的却是1600X1200下的性能和不如1024X768的画质,那么我们还不如不开反锯齿功能。游戏画面质量同FPS总是矛盾的,对于相对有限的计算机性能来说鱼和熊掌不兼得。在激烈的CS对战中又有谁会静下心来看对面2m内敌人手中的Ak边角是不是有锯齿呢?