畅游3D特效(六):磨掉讨厌的狗牙——3D游戏中的抗锯齿特效

新手学堂

任你模型再精致,任你光影再酷炫,看到你3D人物身上那一圈碍眼的“狗牙”了吗?是不是有种吃了苍蝇的感觉……那种3D模型边缘的锯齿(被玩家戏称为狗牙)的确让整个游戏的画面看上去很粗糙,追求真实的玩家怎么能容忍它的存在呢?且看我们的图形设计师如何“磨”掉这些讨厌的狗牙。本期新手学堂就为大家全面讲解3D游戏中有关抗锯齿特效的知识。

何为3D游戏中的锯齿?

先来看看这两幅图。首先解释一下,两幅图都由数个方块组成,不同的是,在同样的画面大小之下,左面这幅图所用的方块要少一些,而右面这幅图所用的方块要多很多倍。然后,我们在两幅图中都画上同样大小的圆圈,再把圆圈所经过的方块都用黑色填充起来——也就是说,我们实际上是用对应的方块来表现了这个圆圈。那么你看到了什么?左边这幅图中的圆圈边线是不是非常粗糙,充斥着大块的锯齿,而右边这幅图中的圆圈边线就要比左边这幅图平滑得多,锯齿的尺寸也要小很多?那么利用一下你的极限思维,如果我们在同样大小的画面中,将方块的数量无限地增加下去,最终每一个方块都会很小(无限趋近于一个点),那画出来的圆圈就是真正的圆圈了,绝对看不到锯齿的存在。

OK,现在就很好解释了,其实,前面图中的方块数量就可以理解为我们3D游戏的分辨率,而每一个方块就可以理解为一个理论上的像素。增加方块的数量好比是提升显示的分辨率,分辨率越高,显卡处理后输出的像素越多,图像边缘的锯齿就越少。

总的来说,3D游戏中模型边缘的锯齿就是因为显示分辨率较低的原因所造成的,而尽量减少这些锯齿的方法,除了最直接的提高分辨率外,还可以通过抗锯齿技术来实现。

17-d16-1.jpg
17-d16-2.jpg
低分辨率(左)和高分辨率(右)下的两个圆圈

抗锯齿原理与分类

前面提到了,为了减少3D模型边缘的锯齿,我们可以提高显示的分辨率,让显卡输出更多的像素来将锯齿的尺寸“最小化”。那么要是我们使用的显示器和显卡无法使用更高的分辨率呢?例如在标准分辨率较低(为1440×900)的19英寸宽屏LCD上,如何能消灭掉碍眼的锯齿呢?这就要用到抗锯齿技术,总的来说,抗锯齿的原理就是让显卡在输出信号前,将画面按照高于显示器分辨率的精度进行处理,最终按照显示器的标准分辨率输出。虽然目前抗锯齿的技术很多,但归根到底,大致上都是遵循了这样的原理,只是在处理方式和效率上有所区别,接下来让我们分别认识一下各种抗锯齿的技术。

超级采样抗锯齿(SSAA)

这是最直接、最“暴力”的抗锯齿方法,你不是觉得低分辨率下的画面锯齿多吗?很好,那就把整幅画面全部按照更高分辨率的标准重新计算后再输出好了。算法就像前面我们提到的那样。使用SSAA的好处就是,能够获得很好的抗锯齿效果,因为它将整幅画面都一丝不苟地处理过了。当然,这也是它的缺点,由于需要将整幅画面的点都进行“插值(顾名思义,就是插入更多的点)”运算,因此消耗的系统资源和显存也是非常大的,而且整幅画面进行插值运算后必然会带来非边缘部分画面的“模糊”(其实我们只需要把边缘“模糊”,但SSAA把整个画面全都给“模糊”了)。

多重采样抗锯齿(MSAA)

为了提供更好的抗锯齿效率,MSAA技术开始兴起。MSAA相对SSAA不同的地方就在于,它通过智能的判断后,只对模型边缘的点进行抗锯齿运算。这样做就可以在很大程度上降低对显卡性能和显存容量的要求(因为可以少处理好多点),当然它的弱点就在于对模型边缘的判断,简单的模型还好,如果遇上复杂的模型,例如铁丝网这样交叉纵横的模型,就会比较头痛。因此,NVIDIA和AMD都分别提出了自己的改善方案,NVIDIA使用的是半透明抗锯齿,而AMD使用的是自适应抗锯齿(遇到这些复杂的情况甚至会局部使用SSAA),事实证明效果不错。

其他抗锯齿技术

除了SSAA和MSAA外,NVIDIA和AMD分别还提出了CSAA(Coverage Sample Anti-Aliasing,覆盖采样抗锯齿)和CFAA(Custom Filter Anti-Aliasing,可选滤镜抗锯齿)。NVIDIA的CSAA在达到同样的抗锯齿效果情况下,只需要比MSAA更少的采样数据,换句话说,消耗同样的资源,CSAA提供的抗锯齿效果会比MSAA好很多。AMD的CFAA是MSAA技术的一种改进,技术的核心思路就是智能判断对画面效果影响大的多边形而进行抗锯齿处理,从而降低对系统资源的占用。

除了这些之外,Intel推出的MLAA技术则是通过处理器来辅助完成抗锯齿的运算(在今年第14期《电脑报》D15版有详细介绍),当然这就需要CPU和主板方面的支持才行。而且现在还没有大规模应用在游戏中。

如何开启抗锯齿

要开启3D游戏中的抗锯齿效果,有两种途径,一是在游戏自带的显示选项中设置,二是在显卡的控制面板中进行设置。

在游戏中设置

在《魔兽世界:巫妖王之怒》(繁体版)中,在菜单里选择显示选项,然后在解析度菜单的多重采样下拉菜单中就可以选择“N”倍采样了,这个N的值越高,抗锯齿的效果越好,当然对显卡的要求也就越高,如果你的显卡档次在Radeon HD4870或GeForce GTX260+以下,并且使用的是1680×1050以上分辨率,建议选择4倍采样或更低。

在显卡控制面板中设置

NVIDIA显卡的抗锯齿效果设置比较直接一点,在显卡控制面板中找到3D平滑处理下拉菜单,就可以进行抗锯齿等级的选择,这里我们有从2×到16×的选项可选,其中还包括8×Q和16×Q两种模式(NVIDIA源自Quincunx算法的CSAA技术)。在对比图中可以看到,低分辨率下开启抗锯齿后的效果十分明显,同时也可以看到,提升分辨率也能很有效地减少锯齿。

在AMD显卡的催化剂控制中心里设置抗锯齿模式则相对复杂一点,我们可以在AA和AA Mode子菜单中分别进行设置,AA子菜单调节的是CFAA抗锯齿的细节,而AA Mode菜单则是调节抗锯齿的模式(有MSAA、自适应MSAA和SSAA三种可选,SSAA效果最好,而MSAA速度最快,自适应MSAA则兼顾之),建议大家根据自己显卡的性能进行设置,多试试才会发现最适合自己显卡的选项。

抗锯齿的特效对于改善3D游戏画面的作用是巨大的——特别是在你的显示器和显卡不能使用超高分辨率的时候,抗锯齿特效对于增强画面的细腻程度是最好的选择,当然,无论是什么抗锯齿技术,都是以增加显卡工作量为代价的。如何在画面和性能之间进行平衡,这个问题就留给大家自己去实践吧!另外,畅游3D特效系列课程到此结束,大家每期的作业都过关了吗?接下来,我们将走进新的实用型课程:教你玩硬件。

17-d16-3.jpg
在游戏中选择多重采样(抗锯齿)的倍率
17-d16-4.jpg
在NVIDIA显卡控制面板中设置平滑处理
17-d16-5.jpg
在AMD显卡的催化剂控制中心中设置抗锯齿选项
17-d16-6.jpg
17-d16-7.jpg
在1680×1050(左)和720×576(右)分辨率下开启16×Q抗锯齿模式
17-d16-8.jpg
17-d16-9.jpg
在1680×1050(左)和720×576(右)分辨率下关闭抗锯齿模式