吸血大魔王 发表于 2011-8-16 15:28:29

请对游戏"狗牙"说不 实测FXAA补丁功效

● 小程序FXAA补丁游戏实测  游戏里的锯齿又称“狗牙”,它不招人待见,但是游戏玩家又不得不忍受的存在,因为没有任何一款游戏敢说自己的画面没有锯齿,即便如《Crysis 2》这么强悍的游戏画质也能找到锯齿的存在,归根到底这还是技术的原因,计算机以像素为基本单位的显示方式决定了锯齿的存在(一说是因为计算机建模使用的是三角形,拼接的时候不可能完全吻合而产生锯齿),分辨率非常高的时候(显示的像素更多)锯齿现象或许不够明显,分辨率越低的话锯齿就会越来越多,严重影响画质表现。
  目前来说实现无锯齿是不现实的,但是可以做适当处理尽量消除锯齿,至少也要做到视觉上不易分辨的地步,这个就要依赖抗锯齿(Anti-Aliasing)技术了,AA可以将模型的边缘做平滑处理(NVIDIA的驱动控制面板中就把AA选项翻译为“平滑处理”),使直线更直,圆形更圆。
  AA也可以分为好多种,常见都有SSAA、MSAA、CSAA等等。如果以实现方式来分,AA也可以分为硬件AA(Hardware AA)和后期处理AA(Post-process AA),前面提到的MSAA和CSAA等都是硬件AA,它们的AA处理主要靠游戏厂商实现,一旦游戏不支持AA(比如《星际2》),驱动强制AA的话往往会带来一定的问题。后期处理AA则有些不同,大多可以不依赖游戏,只要显卡支持就可以了,这方面的AA有Intel提出AMD继承的MLAA(形态抗锯齿)、NVIDIA力推的FXAA(快速近似抗锯齿),还有一个技术牛人Humus自创的GPAA(几何后期抗锯齿),其他的还有DLAA、Hybrid AA等等。


http://2f.zol-img.com.cn/product/69_500x2000/837/ce4MOjbAsXmmE.jpg
FXAA是后期处理AA中很有代表性的一个,不依赖游戏,不挑剔硬件   在这几种后期AA中,AMD已将MLAA应用在驱动程序中,我们也曾做过MLAA的专题测试,近期的催化剂11.8预览版还大幅提升了MLAA性能,只是MLAA只能用于A卡,还存在这图像失真等问题。相比之下,FXAA适用性更广,支持A卡和N卡,而且也不限制DX9、DX10或者DX11图形API,只是目前应用FXAA的游戏比较少,已经发布的游戏中我只知道有《永远的毁灭公爵》、《无主之地》和《E.3.E.R》,未来的游戏还有《战地3》和《神秘海域3》支持FXAA,而关键的一点是NVIDIA的驱动控制面板中还没有提供FXAA选项。
http://2b.zol-img.com.cn/product/69_500x2000/839/ceSg0XcjHy6g2.jpg
虽然FXAA不需要游戏支持,但是显卡驱动不提供FXAA支持依然是普及的障碍   不过本文可不是讲什么空洞的AA技术,而是推荐一个小补丁,它可以让目前的游戏实现FXAA支持,解决了许多游戏厂商没做到的问题,当然这也要归功于FXAA先进的技术特性,不依赖特定游戏,而且同时支持AMD和NVIDIA两家的显卡。
  这个小补丁最早是3DCenter论坛发布的(德文的),发帖者是Gast(不确定补丁作者是否就是他),原文的补丁下载地址就不放了(需要爬梯),我上传了一份到自己FTP,需要的可以点击下载。
  补丁其实很小,只有57KB,解压后里面有两个文件夹,D3D9和D3D10,前者适用于DX9游戏,后者适用于DX10游戏,将每个文件夹下的文件复制一份到游戏exe程序所在目录即可,如果能成功开启后自动生成一个名为“log.log”的文件,FXAA在游戏中可以实时开启或关闭(快捷键是Pause Break,Prtscn SysRq是截图快捷键)。另外,作者说他没有DX11硬件,不过理论上DX10和DX11是通用的,也有人发帖说DX11游戏中也成功了。
  下面我们就以这个补丁为例,来看看它游戏中到底有什么魔力,对画质有什么提升,对性能又有什么影响。
  小知识:什么是FXAA
  全称为“Fast Approximate Anti-Aliasing”,翻译为“快速近似抗锯齿”。它是传统MSAA效果的一种高性能近似值,是一种单程像素着色器,和MLAA一样运行于目标游戏渲染管线的后期处理阶段,但不像后者那样使用DirectCompute,而只是单纯的后期处理着色器,不依赖于任何GPU计算API。正因为如此,FXAA技术对显卡没有特殊要求,完全兼容NVIDIA、AMD的不同显卡(MLAA仅支持A卡)和DX9、DX10、DX11。相比于MSAA,FXAA的目标是速度更快、显存占用更低,还有着不会造成镜面模糊和亚像素模糊的优势,而代价就是精度和质量上的损失。

吸血大魔王 发表于 2011-8-16 15:28:57

● FXAA与MSAA画质对比  试了多个游戏之后,画质对比最终选择了《DiRT 2》,游戏中的“View”浏览模式可以很方便地观察画面各个部分。以下是No AA、4x MSAA和FXAA的画质对比,睁大眼镜寻找不同吧。注意一点,FXAA似乎没有多少倍抗锯齿的概念,这里就选择了最优代表性的4x MSAA作为对比,毕竟8x或更高的抗锯齿在实际应用中能开的很少,实用性不足。

http://2b.zol-img.com.cn/product/69_500x2000/875/ce0wsk7I3KFWs.jpg
1920x1080/Ultra画质未开抗锯齿截图(点击放大)  这一张是未开抗锯齿的截图,可以看到无论是铁杆还是铁箱的边缘都有严重的锯齿现象,帧速为97fps。
http://2c.zol-img.com.cn/product/69_500x2000/876/ceWZTDetNGUU.jpg
1920x1080/Ultra画质4x MSAAA截图(点击放大)  这张是4x MSAA的截图,可以看到狗牙已经减少很多,铁箱上面的边缘比较光滑了,但是左侧的边缘依然有看得出的锯齿(小图看不到,大图上可以看到),帧速为89帧。
http://2d.zol-img.com.cn/product/69_500x2000/877/ceUTN6ZGsy9SQ.jpg
1920x1080/Ultra画质开启FXAA截图(点击放大)  轮到FXAA出场了,乍看之下与4x MSAA并没有明显的区别,铁箱和铁杆的边缘几乎是一样的,不过FXAA的汽车边缘不如4x MSAA圆滑,而且帧速也只有80帧,比4x MSAA还低。
http://2e.zol-img.com.cn/product/69_500x2000/878/cetZa4tMLxgWg.jpg
1920x1080/Ultra画质开启FXAA+4x MSAA截图(点击放大)  这张图比较特别,这是同时启用FXAA和4x MSAA的截图,还好没有冲突,边缘锯齿进一步减少,只是代价更高,帧速进一步拉低到73帧。
  在另一个游戏《Metro 2033》中我也截了图,由于这个游戏在DX9模式不能自主设定抗锯齿选项(只有“AAA”一项),因此只有两个截图。
http://2f.zol-img.com.cn/product/69_500x2000/879/ce5qM4slHCZoQ.jpg
Metro 2033中AAA抗锯齿截图(点击放大)http://2a.zol-img.com.cn/product/69_500x2000/874/ceoLjCYToIHpk.jpg
Metro 2033中FXAA抗锯齿截图(点击放大)  首先开不开FXAA的帧速差距很小,只有4帧(或许是因为AAA已经做了抗锯齿处理了),但是画质差距还是蛮大的,FXAA下的图书边缘清晰,而AAA时狗牙严重啊。
  总的来说,不开FXAA与开FXAA会有较大差距,在画质上可以认为FXAA与4x MSAA二者旗鼓相当,那么还有一个问题就是性能上的,开了FXAA之后游戏性能会下降多少呢,截图上的帧数已经显示出一些蛛丝马迹了,下面就来看一下FXAA的实际性能。

吸血大魔王 发表于 2011-8-16 15:29:56

● 游戏性能及兼容性测试及总结
http://2d.zol-img.com.cn/product/69_500x2000/913/ceFtCOPl8S9M.png  以上是测试平台的配置,注意A卡并没有使用最新的催化剂11.7驱动,因为《DiRT 2》中使用催化剂11.7的HD 6790只有30多帧,而换回催化剂11.6中就正常了。此外,《DiRT 2》和《叛逆连队2》需要修改配置文件强制开启DX9模式。由于测试时间有限,只简单测试了两款显卡,GTX 550 Ti和HD 6790,先来看GTX 550 Ti的成绩。
http://2e.zol-img.com.cn/product/69_500x2000/914/ceJUN3jO3bXsE.png
  注:图中N/A代表游戏不能自定义AA选项,《Metro 2033》在DX9模式下只有“AAA”选项,《叛逆连队2》中强制DX9模式的话也没有AA选项,下同。
  如果以不开AA作为性能100%的话,那么4x MSAA平均性能为85.7%,而这个FXAA的性能相当于82.9%,也就是说性能损失与4x MSAA略微高一些。

http://2f.zol-img.com.cn/product/69_500x2000/915/ceLzyIxVRjibU.png  A卡方面情形也很类似,最终FXAA与4x MSAA的成绩相当,性能损失在14%左右,性能方面的表现还可以接受。
  上面的性能测试中只有4款游戏,这可不是笔者偷懒,而是实在没办法的事。这个FXAA补丁虽然说支持DX9、DX10,并且理论上兼容DX11模式,但是实际情况是大部分游戏中要么不起作用,要么就出错,这里简单列举笔者常用的几款游戏的兼容性:
  1.《Left 4 Dead》和《Left 4 Dead 2》游戏无报错,但是也没有效果,帧数和画质都没变。
  2.《星际争霸2》也无报错,同样没有效果。
  3.《H.A.W.X》的DX9模式无效果,DX10下模式MSVCR100.DLL报错,无法进游戏。
  4.《FarCry 2》的DX9模式可用,FXAA有效果,但是DX10模式也会dll报错,游戏可进,但是AA选项和DX版本选项失效。
  5.《Crysis 2》的DX9模式会自动退出,DX11模式可进游戏,但是FXAA无效果。
  6.《叛逆连队2》的DX9模式可用,也有效果,但是DX11模式也会dll报错,游戏中也没有效果。
  从测试结果上来看,DX9模式中FXAA成功开启的几率还是很高的,最多也是不起效果,但是DX10和DX11模式下多数游戏都会报错,笔者试验的几款DX11游戏还没有成功开启FXAA的。
  上面列了这么多无效或者不兼容的问题并非是批评,毕竟这只是独立第三方的个人制作的小补丁,从国外论坛的反馈来看还是有很多游戏能正常开启FXAA的,对画质也有改善,补丁作者也在不断修正程序,其技术能力和动机还是让人钦佩的。
  我们更希望这个小补丁起到“抛砖引玉”的作用,第三方个人能力有限,FXAA普及还得依赖GPU厂商和游戏厂商合作,至少也要NVIDIA的驱动提供FXAA支持,就跟AMD的MLAA实现方法一样。由于FXAA可以做到与游戏无关,一旦驱动支持FXAA,那么全民体验FXAA的时代就不远了。
页: [1]
查看完整版本: 请对游戏"狗牙"说不 实测FXAA补丁功效