对AMD新的Radeon HD 6000系列显卡来说,支持全新的MLAA抗锯齿是其大的卖点之一。你知道这种抗锯齿的技术是怎样实现的吗?效果如何?需要如何设置?对显卡又有何要求吗?笔者在第一时间购买了Radeon HD 6870,并详细研究和测试了MLAA,现将自己在测试中的心得与大家一起分享。
抗锯齿技术是3D技术的一个重要组成部分,这项技术伴随着3D技术一路发展,先后出现过SSAA、MSAA、CSAA和CFAA等多种抗锯齿模式。但大浪淘沙,在长期使用过程中,只有消耗资源、画质好的SSAA和效果相对较好、资源耗费较少的MSAA两种抗锯齿技术被广泛使用。近,AMD在全新的催化剂驱动中,为Radeon HD 5800以及Radeon HD 6800系列显卡带来了新的MLAA抗锯齿技术。
传统的抗锯齿技术,是贯穿在整个3D处理中的一种算法。比如SSAA,可以理解为大幅度提高原始图形分辨率,在处理计算后,再缩小分辨率并按照要求的分辨率计算输出的“暴力”抗锯齿方法;常见的MSAA是检测多边形的边缘,对边缘采样进行多次计算,后输出相对平滑的边缘效果。相比之下,MSAA速度更快,但不够精细,对多边形内的纹理等抗锯齿效果的处理可能不如SSAA到位。
MLAA和上述抗锯齿技术都完全不同。从技术原理来说,MLAA更类似于一个2D滤镜,它并没有贯穿在整个3D处理中,反而是在整个3D计算完成,即将输出画面到屏幕上之前,利用DirectCompute对即将显示的画面进行再处理。此时MLAA会自动寻找画面中的高对比度边缘(一般这些地方都是分界线、物体边缘等人眼比较敏感的部位),专门对这些边缘进行特殊算法操作。换句话来说,MLAA是一个彻底的后期处理技术。
图1
图2
笔者首先运行的是含有基础对比的MLAA软件,我们先看简单的基础对比。图1是没有经过MLAA处理的图片。图2是打开MLAA后的图片,内含斜线、色块以及文字,它的重点在于展示文字和斜线等特别适合抗锯齿处理的部位在MLAA处理后的效果。
我们用一个不太恰当的例子来更好地理解MLAA技术:如果你有照相机,在拍摄过程中使用各种灯光、道具、不同的镜头等来改善拍摄效果,就类似传统的抗锯齿操作。这些操作是针对拍摄本身的,会改变终得到的数据。但你在拍摄了照片以后,利用Photoshop中的滤镜对照片处理,就属于拍摄后期处理,MLAA技术就是3D后期处理。假如Photoshop中有类似MLAA功能的滤镜,我们甚至可以直接对2D图片进行MLAA抗锯齿操作。
图3
图4
笔者用细节图展示经过MLAA处理前(图3)后(图4)的画面。我们可以清晰地看到MLAA对斜线以及边缘处的处理效果。对于这种黑白对比强烈的理论性测试,既能大限度展示MLAA的优势,又能很明显地体现MLAA的劣势。MLAA的优势在于抗锯齿效果处理很出色,在测试中获得了接近MSAA 8X的抗锯齿效果。但劣势也比较明显,由于MLAA采用后处理,因此对文字锐利的边缘也有“抗锯齿”效果。比如图中“t”的字母交叉处,就出现了明显的“肥胖”现象,字的边缘也有圆滑现象出现。这说明MLAA对文字支持可能存在一定问题。
由于MLAA是纯粹的后期处理,因此它的兼容性极为出色。理论上MLAA可以在任何游戏上运行,包括DirectX 9、DirectX 10、DirectX 11游戏都可以使用MLAA进行抗锯齿处理,并获得同样的抗锯齿效果。不仅如此,MLAA还可以和任何其他抗锯齿模式叠加,比如MLAA+MSAA的处理等。只不过目前受限于显卡性能,我们还是好单独开启MLAA或者MSAA,否则性能下跌幅度会较大,会影响游戏本身的流畅性。
AMD首次公布MLAA抗锯齿技术是在催化剂10.10a Hotfix中,期间已经更新过b、c、d等版本。截至本文发稿前,新的催化剂驱动10.10e已经发布,新版本不但进一步加强了MLAA技术,还使得Radeon HD 5000系列也能支持MLAA技术了(MLAA技术发布初期只支持Radeon HD 6000系列)。
从AMD官方给出的对比图来看,MLAA在对比强烈的边缘处理时作用明显,效果类似于特定的模糊处理。但作为一种后期处理技术,MLAA对画面全局使用滤镜处理,是不是也会影响到纹理的锐利度?比如不应该处理的地方却进行了MLAA抗锯齿,是否导致画面质量变差?下面笔者将通过实际测试来证明这个问题。
由于MLAA技术属于后处理技术,因此很多截图工具不能截取到MLAA处理后的图像,包括我们常见的Fraps。之前有一些资料声称AMD提供了一个特殊的小工具,这个小工具的内部算法和驱动中的MLAA算法完全一致,用这个小工具可以得到和游戏中开启MLAA相同的画面。笔者通过其他渠道获得了和上述软件类似的软件,一共是三款,分别叫MLAA、MLAA2和MLAA3。它们不但可以可以演示MLAA和MSAA的差异,还可以和MSAA技术进行对比,并且能够以截图方式体现MLAA和MSAA以及0AA的差距,并且能得到抗锯齿算法检测出来的边缘等信息。
图5
图6
接下来仍然是利用MLAA软件进行的画面测试对比。图5是没有启用任何抗锯齿效果的场景图,因此在电线杆、电线上以及各种物体边缘处的锯齿都比较明显。图6是启用了MLAA抗锯齿技术的图片,可以看到整幅图中锯齿大大减少,效果相当明显。但问题是,文字也被一定程度“抗锯齿”了,导致文字锐利度下降。
通过三款软件的对比,我们可以看到,MLAA对抗锯齿的效果还是相当明显的。不过需要特别说明的是,MLAA核心算法虽然只有一种,但可以通过人为调整取得不同的宽容度来改变抗锯齿效果。宽容度是指判断边缘的严格程度,也就是说:究竟边缘像素的差异需要多大,才会被认为是“边缘”并进行MLAA抗锯齿处理。
图7
图8
图9
图10
MLAA技术可以和MSAA技术同时启用,下面我们对比一下MLAA和MSAA对画质的改善程度。运行MLAA2软件后,就能分别对比MLAA和MSAA的效果。在MLAA2软件中,“1”是关闭MLAA,“2”是打开MLAA,“3”是关闭MSAA,“4”是开启MSAA。用鼠标控制观察角度,“W/A/S/D”四个按键用于移动场景。图7是原图,没有经过任何处理,因此锯齿显得相当明显,特别是斜边处。图8中,经过MLAA处理后,我们发现斜边处的锯齿基本消失,但纹理基本没有变化。在打开MSAA后,不仅锯齿消失了,整个画面也更为精细了(图9)。MSAA在类似于布匹等抗锯齿处理效果上要比MLAA更好。不过演示DEMO并未说明其MSAA的抗锯齿倍数,笔者估计至少是4×MSAA甚至8×MSAA。在图10中,当同时进行MLAA+MSAA处理后,除了一些小细节外,基本看不出有太多变化。
我们打个比方来说,熟悉Photoshop的朋友肯定熟悉这样一个参数——容差。在Photoshop中使用魔棒选择画面区域时,容差可以让你确定选择时的宽容度。容差为1的时候,宽容度小,Photoshop只会选择和确定像素极其相似甚至完全相同的像素点;而容差设定为50甚至更大时,与确定像素点接近甚至基本相当的像素都会被包括进来。MLAA中也有类似的“容差”概念,因此究竟怎样确定“MLAA的容差”是一个相当困难的问题。不同的设置会导致终效果出现巨大差异,这就需要厂商有相当强的优化水平和极为精准的拿捏手段了。
经过上文的讲述,想必大家都对MLAA有一定的了解了。下面笔者就目前主流的游戏来实际测试下MLAA能带来什么效果以及在游戏中实际应用的情况。
测试平台:
CPU:Core i7 860(睿频开启)
主板:P55
内存:DDR3 1333 2GB×2
显卡:Radeon HD 6870 1GB
操作系统:Windows 7 64bit
驱动程序:催化剂10.10e
测试游戏:《极品飞车14》、《使命召唤7》
测试说明:在实测中,笔者将对比MLAA和MSAA 8×的平均帧数,并与关闭AA情况下游戏的帧数、画质等情况作出对比。
在安装了新的催化剂驱动10.10e以后,我们打开催化剂控制中心,可以在3D面板中选择上方的“AA”选项,然后在下方的详细内容中可以看到“形态滤波”复选框。勾选此选项后,就意味着打开了MLAA功能了。
在《极品飞车14》中,开启了MLAA 8×的性能要比开启MSAA的帧数高一些,平均胜出幅度在5%左右。从游戏画质对比来看,MSAA的纹理精细度要好一些,MLAA的一些画面纹理细节部分稍微有模糊感,但基本不会影响游戏效果。相比不开启AA的时候,两种抗锯齿技术对画质的改善都是巨大的。但MLAA对文字的处理依旧是软肋,所有的文字都会变得圆润。
图11
图12
接下来是第三款软件MLAA3,这款软件对比了人物以及复杂的草叶等,在MLAA前后处理后的不同。图11是没有经过MLAA处理的,人物边缘相当粗糙,并且草叶等看起来很杂乱。在图12中,当经过MLAA处理后,人物边缘的锯齿消失不少,草叶也变得更有“有条理”一些了。
《使命召唤7》的游戏引擎比较老,因此在开启MSAA 8×和MLAA的情况下两款显卡都能在80fps左右流畅运行游戏。性能方面,MLAA的平均帧数比MSAA 8×还是要稍高一些。画质方面怎没有特别巨大的差距,MLAA在这款游戏中的表现也是很出色的。
图13
图14
MLAA的主要功能是通过边缘检测来得到相关抗锯齿的信息。我们来看一下图7和图11中究竟哪些被认为是边缘需要抗锯齿处理的。图13和图14向我们展示了MLAA技术检测到的边缘,可以看到,这些边缘基本上是框线边线处。MLAA的一个优势就是,被遮挡住的物体完全不需要重新进行抗锯齿处理。不过对布料本身,MLAA没有做任何的取样。
在实际游戏对比中,MLAA展示了它出色的抗锯齿效能。不过和传统的抗锯齿技术不同的是,使用MLAA后整个画面感觉更柔和,和MSAA那种锐利的感觉有明显差别。另外,MLAA对文字的作用是相当明显的,一些游戏中的文字甚至Fraps的文字都出现了圆滑化的倾向。
MLAA作为一个新诞生的抗锯齿技术,在其初生之时就能获得不错的抗锯齿效能和画质效果,是令人欣喜的。但MLAA的问题也有一些,比如纹理锐利度问题,比如字体变形等问题,这都是不容忽视的。
其实,MLAA在游戏主机上已经取得了很大的成功,例如在PS3的经典巨作《战神3》里面,MLAA的应用可谓非常出色,整个画面几乎看不到锯齿存在,并且画质精细度也得到很好的保证。《战神3》大获成功后,人们看到了MLAA的技术潜力,因此在新的催化剂驱动中,AMD将其作为一种新功能加入,给玩家带来更多的选择。从游戏主机对MLAA成功的应用来看,MLAA是相当有潜力的抗锯齿技术。目前的MLAA利用DirectCompute技术实现,因此老一些的Radeon HD 5800理论上都能打开MLAA。我们有理由相信,在新一代显卡进一步加强DirectCompute性能并特别针对MLAA技术改进后,MLAA能够在性能和画质上取得平衡,让我们的游戏锯齿更少,画质更精美!