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般