FXAA在某种程度上有些类似于AMD之前宣扬的MLAA(形态抗锯齿),但远比后者低调,所以很多玩家可能还历来没听说过,但是如果你玩过《永久的毁灭公爵》或《F.3.A.R》,应当会有所耳闻。今天我们就来实际测测多款显卡上的FXAA性能和画质表现,并将其与MLAA进行简单对照。
甚么是FXAA?
FXAA全称为“Fast Approximate Anti-Aliasing”,翻译成中文就是“快速近似抗锯齿”。它是传统MSAA(多重采样抗锯齿)效果的1种高性能近似值。它是1种单程像素着色器,和MLAA1样运行于目标游戏渲染管线的后期处理阶段,但不像后者那样使用DirectCompute,而只是单纯的后期处理着色器,不依赖于任何GPU计算API。正由于如此,FXAA技术对显卡没有特殊要求,完全兼容NVIDIA、AMD的不同显卡(MLAA仅支持A卡)和DX9、DX10、DX11。
相比于MSAA,FXAA的目标是速度更快、显存占用更低,还有着不会造成镜面模糊和亚像素模糊(表面渲染不足1个像素时的闪烁现象)的优势,而代价就是精度和质量上的损失。
依照FXAA技术开发者Timothy Lottes的说法,GeForce GTX 480利用FXAA Preset 2(第2种预设)处理1帧1920×1200分辨率画面时所需时间不到1毫秒。
FXAA现在有3种版本:“FXAA 1”是最早最基础的版本,也是在PC游戏中使用最广泛的,已用于《F.3.A.R》、《永久的毁灭公爵》、《柯南时期》、《Crysis 2》、《无主之地》等等;“FXAA 2”是针对Xbox 360游戏机专门设计的;“FXAA 3”又有两种算法,Quality质量版本面向PC,Console主机版本则面向Xbox 360、PS3。
FXAA 3相比于FXAA 1有很明显的性能优势,GeForce GTX 480 DX11默许设置下使用FXAA 3 Quality处理典型的720p分辨率画面只需要大约0.21毫秒。另外DX9、DX11模式下性能差异会很大,其中DX11更快1些。
FXAA官方技术白皮书:
http://developer.download.nvidia.com/assets/gamedev/files/sdk/11/FXAA_WhitePaper.pdf
从左到右:无AA、4xMSAA、FXAA
FXAA算法进程
FXAA演示
本次测试的平台配置以下:
处理器:Core i7⑼20 OC 3.6GHz
主板:华硕P6T6 WS Revolution
内存:海盗船DDR3⑴600 6GB
硬盘:西部数据500GB SATA
电源:酷冷至尊Real Power Pro 1250W
显示器:戴尔3007WFP (DVI)
操作系统:Windows 7 Ultimate SP1 x64
显卡:
GeForce GTX 580 772/1544/4008MHz
GeForce GTX 570 732/1464/3800MHz
GeForce GTX 560 Ti 822/1645/4000MHz
Radeon HD 6970 880/5500MHz
Radeon HD 6950 800/5000MHz
Radeon HD 6870 900/4200MHz
驱动程序:
GeForce 275.50 Beta
Catalyst 11.6 WHQL
FXAA、MSAA性能对照
测试场景选择《F.3.A.R》(版本16.0.20.1060)游戏中画质要求更高的Intervals 07,从开始录制帧率,直到Alma尖叫致使Armacham直升机坠毁为止,时长15⑴8分钟。为了便于保证测试进程的1致性,期间使用了上帝模式。开启DX11、16xAF,分辨率依照显卡不同有高中低3个档次。
经过衡量,平均帧率最少应当到达37FPS才能保证游戏的完全流畅。
GeForce GTX 580开启FXAA以后相比于不开启任何AA性能平均损失11.7%,平均帧率仍然有56.7FPS。
GeForce GTX 580上开启2xAA速度降为43.1FPS,相比于FXAA慢了13.6%,进1步开启4xAA又比2xAA慢了38%(此时已没法保证流畅),因此从FXAA到4xAA的降幅为52.8%。就看FXAA、2xAA、4xAA谁的画质效果好了。
Radeon HD 6970开启FXAA后平均速度为55.6FPS,比不开启AA损失了14.7%,稍微输于GeForce GTX 580。
Radeon HD 6970开启2xAA、4xAA分别比FXAA慢了17.4%、50.9%。
GeForce GTX 570 FXAA分别比2xAA、4xAA快了24.8%、35%,不过由于分辨率下降,4xAA下平均帧率仍然接近40FPS。
Radeon HD 6950一样条件下的差距是16.1%、30.9%,最慢也有44FPS。
GeForce GTX 560 Ti上2xAA、4xAA分别慢了23.1%、50%。
Radeon HD 6870上则是15.8%、37.8%。
FXAA、MSAA画质对照
以下截图的原始分辨率均为2560×1600,细节设为最高。
我们之前就说过,FXAA不管对N卡还是A卡都适用,而且没有差别对待,来自GeForce GTX 580、Radeon HD 6970的截图都显示了差不多的效果。
FXAA的抗锯齿效果明显优于2xAA,乃至比4xAA也不弱!结合前边的性能测试可以看出,FXAA用比2xAA快很多的速度,获得了4xAA级别乃至更好的效果。
这几张GeForce GTX 580上的截图显示了FXAA对透明Alpha纹理的影响。不开启AA的话,纹理外侧的硬边沿被平滑,但是树叶和树枝上还有大量颗粒,2xAA、4xAA下乃至更糟,只有FXAA才消除树叶上的颗粒。
这几张Radeon HD 6970的截图也很容易看出不同效果。关闭AA的时候边沿锯齿非常明显,2xAA略有改良,4xAA又稍好1些,但明显都不如FXAA来得平滑。
这张截图来自NVIDIA,所用游戏不明。最左边是关闭FXAA,中间是开启FXAA 3.9但没有亚像素对照度下降,右边就是同时开启FXAA 3.9和亚像素对照度下降了,即便不到1个像素的树叶也都被平滑了。
FXAA、MLAA性能对照
Radeon HD 6970上,FXAA开启后平均速度56FPS,MLAA则会下降至32.6FPS,慢了42%之多,只是后者的帧率更加稳定1些。
Radeon HD 6950上FXAA也获得了60%的优势。
Radeon HD 6870上FXAA再次获胜,领先幅度47.5%。
FXAA、MLAA画质对照
湿润的底面上,FXAA、MLAA的效果差不多,肉眼基本看不出区分。
叫真的话可以说MLAA的色采过渡更平滑1些,但整体基本相同。
放大区域的对照度略有不同,FXAA更强1些。
以树叶为代表的透明纹理上,FXAA的颗粒明显比MLAA少很多。MLAA也获得了1定的效果,但是FXAA更好1些。
小结:
FXAA是NVIDIA针对AMD MLAA提出的技术回应,在基本差不多的画质水平上获得了更快的速度,而且对透明树叶纹理的处理更平滑。在同等画质下,MLAA要比FXAA平均慢37.1%之多。
NVIDIA FXAA优点:
- 兼容NVIDIA、AMD显卡
- 性能影响更小(相比于MSAA、MLAA)
- 画质与4xMSAA、MLAA基本相当
- 定制度高,可在性能和画质之间获得平衡
- 能够减少边沿、纹理和Shader上的锯齿
缺点:
- 需要游戏开发人员提供支持
AMD MLAA优点:
- 无需游戏特别支持,可通过驱动用于任何游戏
- 兼容所有游戏和引擎,不论是DirectX还是OpenGL
- 能够减少边沿、纹理和Shader上的锯齿
缺点:
- 仅支持AMD显卡
- 性能影响比较大
- 对单像素和亚像素物体效果1般