【IT168 应用】抗锯齿技术,就在几年前,这个词似乎能够在显示图象上的每个象素都给我们带来新的刺激,但是也同时能够给我们带来恐惧感。是的,就是这种矛盾的感觉伴随着抗锯齿技术的不断发展,比如,我们一方面对着拥有无比华丽的抗锯齿显示技术的3Dfx Voodoo5显卡垂涎三尺,但是我们同时也因为它的性能而犹豫不决。超采样抗锯齿技术看起来相当不错,当然它实际上也确实不错,但是要在此条件下获得流畅的游戏性能似乎代价过于高昂。
ATi Radeon 9700 Pro显卡的出现使得上述状况发生重大突破——突然间,对于大多数的游戏而言,我们获得了接近4倍超采样抗锯齿(简写为4xAA,下同)特效下的流畅性能表现——这完全得益于ATi Radeon 9700 Pro架构的高效率内核及其相对低成本的多重采样抗锯齿技术实现方案。这迅速发展成为一种趋势,后续的更为强大的图形处理器在多重采样抗锯齿效果下能够提供更为流畅的游戏性能,从此,多重采样抗锯齿技术成为当前流行GPU所必备的技术特性。
当然,这也并不能代表着多重采样抗锯齿技术已经让我们彻底获得了完全意义上的新视觉体验。在一些游戏中,一些游戏物体仍然藏匿在阴影当中,拒绝抗锯齿技术的二次成像加工,并且看起来就像是胜利者的姿态展示着他们的“棱角”以显示多重采样抗锯齿技术的无奈。这些可恶的物体到底是什么?难道它们真的不能再被加工了吗?
什么是透明材质(Alpha Textures)?
我们首先来看看什么是透明材质。透明材质是一种在三维游戏中用来渲染诸如栅栏、铁丝网和灌木等物体时所应用的一项技术。在我看来,它们应该是被抛弃到垃圾桶里面的设计方法,但是它们现在仍然与我们共存。那么到底这个透明材质是什么?
基本上,透明材质其实和一般的材质是一样的,是用来覆盖在三维物体上的虚拟物料。然而,透明材质与一般材质是有区别的,在组成透明材质的象素中需要开启透明度显示通道使之可以表现出透明或者是半透明的效果。正是因为这个原因,在游戏场景中,它被用来设计诸如铁链、栅栏和灌木丛等等物体——显然,这类物体在视觉效果上并不是连成一片的块状物,因此它们当中的很多部分应当是透明的(也就是看起来是孔状的)。完全渲染这样的三维物体需要极高的计算代价,同时该类物体还有相当一部分在屏幕上并不会显现出来,对应这样的场合,用透明材质进行处理是一个很节省资源的高效率设计方法(也就是把看起来大概是透明的地方和在屏幕上不会显现出来的地方都用透明材质渲染一遍就可以了)。
这样的处理办法在多重采样的抗锯齿技术出现之前无疑是完美的。超采样抗锯齿技术的引入,使得屏幕上显示的象素点变多了(2xAA的情况下,显示的象素点多出一倍;4xAA的情况下,显示的象素点则为原来的四倍),然后整个画面再缩小到屏幕所设定的分辨率状况下,这意味着一切都被超采样抗锯齿技术进行了二次加工,包括物体的边角和覆盖其上的材质等等。(译者注:超采样抗锯齿和多重采样抗锯齿是不同的技术,严格意义上而言,只有超采样抗锯齿技术才称得上是完全意义上的图象抗锯齿技术)
但是,多重采样技术是不同的,它仅对可见物体的边角进行处理,因此它是一种更有效率的方法,其计算量也相对较低,对GPU的负担也要低得多。但这同样意味着材质并不因此而受惠,当然这也包括了透明材质。由于这些特殊的材质是透明的,因此由这些材质组成的物体的边角就无法被多重采样抗锯齿技术所处理,与一副完美的被超采样抗锯齿技术所处理过的图片相比,其分散各处的“棱角”就显得很突兀。
看来,这是在多重采样抗锯齿技术前提下所不可避免的共性问题,那么对此,有没有相应的解决方案呢?
如何对透明材质进行抗锯齿处理?
显然,这个问题的答案很简单,我们需要用超采样抗锯齿技术对透明材质进行处理。但是,正如我们所提到过的一样,超采样抗锯齿技术将消耗更多的计算资源,这对于实现流畅的游戏环境而言是一种倒退。
因此,必须有一种折中的方案来解决完美画质和流畅游戏速度之间的矛盾。首先是nVIDIA,然后ATi也紧随其后,不约而同的都提出了采用一种算法在程序中检测透明材质,针对透明材质采用超采样抗锯齿方法处理,剩余的场合则仍然使用原有的抗锯齿方法处理。
nVIDIA首先在他们的G70内核中公布了该项技术,称之为“透明抗锯齿技术”。现在ATi也在R520发布时公布了该技术,他们称之为“自适应抗锯齿技术”。另外,让我们感到振奋的是,该技术并非只能够与ATi最新的GPU架构并存,只要我们有一张基于R300 GPU内核的显卡(也就是我们至少有一张Radeon 9500级别以上的ATi显卡),那么我们就可以使用该项技术。
安装了ATi催化剂5.9版驱程之后,我们就可以在ATi显卡上实现“自适应抗锯齿”特性,在此,我们将对开启该技术之后的游戏画质和游戏性能进行详细评测。
如何在ATi显卡中开启“自适应抗锯齿”特性?
启用“自适应抗锯齿”技术是相当简单的,我们首先要安装催化剂5.9版驱动程序,同时对注册表进行一点小改动就可以了。
假设相应的驱动程序已经安装好了,我们打开注册表(在“运行”中直接运行命令“regedit”)并浏览如下目录:
- HKEY_LOCAL_MACHINE
- SYSTEM
- CurrentControlSet
- Control
- Video
这里就是我们耍点小技巧的地方了,首先我们必须找到所安装好的显卡驱动所对应的ID号,我们将找到自Windows安装好以来所安装过的所有驱动程序的ID号,最简单的方法就是点击每个驱动程序下面的0000子目录,在当中将能查到对应我们当前所安装驱程的适配器名称和驱动程序版本号。
找到了正确的0000目录后,我们就要建立新的子项目(Entries):
ASTT_NA,键值默认设为0——这将在催化剂驱动的控制面板上增加开启自适应抗锯齿技术的选项。
ASTT,键值默认设为1——这是最重要的设置,它将实际激活自适应抗锯齿技术。
设置完毕,现在我们要做的就是在游戏环境中打开抗锯齿效果,而此时,驱动程序就会按照自适应抗锯齿技术进行处理。现在就来看看自适应抗锯齿技术所带来的画质的改变及其在游戏性能上的实际表现。
测试配置
本次测试的硬件配置如下:
- Club 3D的Radeon X800RX显卡
- AMD Athlon 64 3500+处理器
- 1GB PC3200 DDR内存
- 华硕A8N-SLI nForce 4 SLI主板 (Socket 939, PCI Express)
- 37GB西部数据猛禽硬盘
- 先锋16X DVD光驱
- 480W电源
- Windows XP Professional SP2操作系统
- DirectX 9.0c
半条命2(Half Life 2)画质测试
我们将使用两款应用了大量透明材质的三维游戏来进行画质测试。第一款就是著名的半条命2(Half Life 2),玩过的朋友都知道,该游戏中包含了大量的栅栏、铁丝网和楼梯等需要大量使用透明材质进行设计的场景,因此,这是用于进行自适应抗锯齿技术测试的非常好的环境之一。
我们选择了两张游戏中的图片来展示自适应抗锯齿技术的效果,在给出对比效果之前,我们首先看看两张原始画面。我们的游戏环境设定为1024×768,显卡为Club3D出品的Radeon X800RX显卡。
![]() |
点击看大图 |
上图中各类远近不同的铁丝网是展现自适应抗锯齿效果的最好参照物。我们可以顺带通过观察图中楼房的边缘等来体会常规多重采样抗锯齿技术对画面产生的效果。
![]() |
点击看大图 |
这张图同样,大量的铁丝网布景,还有正对着的阶梯等。同样,屋顶的边缘也可以让我们观察到常规多重采样抗锯齿技术对物体边缘的优化效果。
我们首先来看看第一幅图经过标准的2X多重采样抗锯齿处理和经过2X自适应抗锯齿处理后的效果:
![]() |
标准2X抗锯齿效果图(点击看大图) |
![]() |
2X自适应抗锯齿效果图(点击看大图) |
我们可以明显得看到,近距离的铁丝网在经过自适应抗锯齿技术处理后已经没有了原来的颗粒感,线条柔和了很多,但是远距离的效果仍然不是很好,至少看起来还不是那么清楚。
![]() |
标准2X抗锯齿效果图(点击看大图) |
![]() |
2X自适应抗锯齿效果图(点击看大图) |
在第二幅图中,对于远距离的铁丝网,2X自适应抗锯齿技术也没有起到太明显的效果。
![]() |
标准4X抗锯齿效果图(点击看大图) |
![]() |
4X自适应抗锯齿效果图(点击看大图) |
应用了4X自适应抗锯齿技术后,截图中远处的铁丝网也相对显得更为柔和一些了。靠前的栅栏和铁丝网自然是比起标准的4X抗锯齿有了显著的画质改善。
![]() |
标准4X抗锯齿效果图(点击看大图) |
![]() |
4X自适应抗锯齿效果图(点击看大图) |
在第二幅图中,我们同样看到类似的情况,2X自适应抗锯齿技术对于远处的铁丝网优化效果并不明显,但是在4X自适应抗锯齿技术环境下,远处的铁丝网得到了较好的优化,虽然并不是100%的完美效果,但改变仍然是很明显的。
![]() |
![]() |
6X自适应抗锯齿效果图(点击看大图) |
启用较高级别的6X的自适应抗锯齿特效了,我们可以看到,在这种条件下,自适应抗锯齿特效能够提供比标准抗锯齿特效更优质的显示效果,画面效果可以说得上是焕然一新。
![]() |
标准6X抗锯齿效果图(点击看大图) |
同样,我们可以看出6X自适应抗锯齿技术所带来的显著画质改善。
孤岛惊魂(Far Cry)画质测试
孤岛惊魂(Far Cry)是我们用来作为画质测试的第二款测试游戏。这款游戏中设计有许多户外场景,这些场景一般都包含有大量的植被环境,因此我们可以预见其中包含大量的透明材质。在测试中,我们使用了Pier地图并务求游戏画面截图可以如实反应各类细节。首先来看看没有经过任何抗锯齿处理的游戏画面:
![]() |
点击看大图 |
在该截图中,可以体现自适应抗锯齿效果的,就是灌木和树林中伸展出来的树叶(类似前面截图的铁丝网效果),而图中悬崖峭壁的边缘则是可以体现标准化抗锯齿效果的。
首先来看看2X模式(包括标准模式和自适应抗锯齿模式):
![]() |
标准2X抗锯齿效果图(点击看大图) |
![]() |
2X自适应抗锯齿效果图(点击看大图) |
经过自适应抗锯齿的处理,树叶的效果确实有了明显的改进,我们还同样看到,峭壁的边缘也得到了柔化的改进,看来自适应抗锯齿的检测算法在检测范围上还不够精确,处理的范围更为宽广了一些。
![]() |
标准4X抗锯齿效果图(点击看大图) |
![]() |
4X自适应抗锯齿效果图(点击看大图) |
在4X的环境下,我并未看出来有对比2X有显著的提高。当然确实是好看一些,但是似乎并没有那么得不同。我们再来看看6X的抗锯齿效果。
![]() |
标准6X抗锯齿效果图(点击看大图) |
![]() |
6X自适应抗锯齿效果图(点击看大图) |
在技术的角度上来说,6X的自适应抗锯齿效果应该带来了最优的画面效果。不过就实际效果而言,我个人并未看出6X的自适应抗锯齿与2X的自适应抗锯齿相比在画质上有多大的提高。当然,这也是由游戏的不同环境差异所造成的。
对于游戏玩家而言,除了画质以外,游戏的流畅程度本身也是很重要的。因此,接下来我们将给出在各项抗锯齿条件设置下的游戏性能测试数据。
性能测试
我们在三种分辨率条件(1024×768、1280×1024、1600×1200)下分别进行了性能测试,抗锯齿设置分别设定为无抗锯齿特效,2X、4X、6X下的标准多重采样抗锯齿和自适应抗锯齿。首先来看看半条命2(Half-Life 2)下的性能测试数据。
半条命2
![]() |
2X |
4X |
6X | |
自适应抗锯齿技术性能损失 |
0.5% |
11.0% |
39.1% |
在1024×768分辨率条件下,虽然我们的测试场景应用了大量的透明材质,但在最苛刻的6X自适应抗锯齿特效下,游戏性能仍然能保证处于可接受的水平线之上。2X自适应抗锯齿与2X标准多重采样抗锯齿相比,并未带来十分显著的画质改善,因此性能损失并不严重,两者表现基本持平。然而,当我们上升到了4X和6X之后,自适应抗锯齿技术就带来了相对显著的画质改变,因此性能也随之出现了较大幅度的滑坡,比如说在6X自适应抗锯齿特效下,性能较标准模式下降幅度高达39%。
![]() |
2X |
4X |
6X | |
自适应抗锯齿技术性能损失 |
8.5% |
30.8% |
62.9% |
在1280×1024分辨率设置下,X800RX显卡在使用了4X自适应抗锯齿技术设定后,仍然维持了60fps以上的游戏性能。但是自适应抗锯齿技术所带来的性能损失幅度则相当高,在4X设定下,自适应模式比标准模式下降了30%,而在6X设定下,自适应模式的性能更是较标准模式下降多达63%。
![]() |
2X |
4X |
6X | |
自适应抗锯齿技术性能损失 |
11.6% |
37.3% |
75.3% |
在1600×1200分辨率设置下,如果显卡启动了自适应抗锯齿技术,那么游戏就不具备可玩性了。不过如果我们在更高级的ATi显卡上启用该项技术,我们仍然能获得在此分辨率条件下较为流畅的游戏环境。
孤岛惊魂
与孤岛惊魂(Far Cry)相比,半条命2似乎还能让自适应抗锯齿表现得闲庭信步。我们在Pier地图中录制的Demo包含了大量的透明材质,这样的设计让无疑会让自适应抗锯齿技术表现得十分尴尬,让我们一起来看看它会有多糟糕:
![]() |
2X |
4X |
6X | |
自适应抗锯齿技术性能损失 |
3.1% |
35.8% |
81.8% |
在2X自适应抗锯齿特效下,我们的游戏似乎还能运转正常,一旦设定到高阶的4X和6X时,游戏就变得慢吞吞了。
![]() |
2X |
4X |
6X | |
自适应抗锯齿技术性能损失 |
13.4% |
43.6% |
86.5% |
在1280×1024分辨率的情况下,光看游戏的帧速率就知道游戏的运行效果有多糟糕了。即便是以标准的2X多重采样抗锯齿方式来改善画质,速率仍达不到平均60fps。
![]() |
2X |
4X |
6X | |
自适应抗锯齿技术性能损失 |
14.3% |
45.4% |
- |
在1600×1200分辨率条件下,由于需要开启相当巨大的帧缓存对游戏画面进行处理,所以6X自适应抗锯齿特效干脆都罢工了。不过,这种苛刻条件下的测试,相信对于很多玩家来说,象征性意义大于实际意义。
虽然自适应抗锯齿技术是ATi专门为Radeon X1800系列设计的卖点,但是我们看到,X800系列的ATi显卡仍然可以使用该项新技术特性。毫无疑问,装配给多渲染管线的X1800系列自然可以更有效的运转自适应抗锯齿技术,但X800在大多数情况下的表现仍然有其可取之处。
当然,自适应抗锯齿技术也不是万灵药,我们必须在恰当的游戏环境下才开启该项特效,甚至可以说,在同一款游戏中的不同场景也许我们都要仔细考虑是否要对应开启自适应抗锯齿特效。在恰当的场合下,它确确实实能够为我们带来显著的画质改善,比如说在我们的半条命的测试场合,我们可以清楚的看到画面中的改善。
最后,我希望在以后的催化剂驱动中,开启自适应抗锯齿特效的选项对于类似Radeon 9500这样的相对低端的显卡都是可见可用的,而不是作为高端ATi显卡的专有名词。这项技术确实能够带来有效的改进,如果它能够成为高低端产品的共有特性的话,我相信ATi的用户也会为此而感到高兴。
更新:在修改注册表的时候,把“ASTT”换成“EATM”,则可以打开另一种搞锯齿模式,有兴趣的朋友不妨一试。