NVIDIA的黑科技:MFAA超高效能抗鋸齒
速度與畫質一直都是3D游戲追求的兩大終極目標,但很多時候,速度與畫質總是魚和熊掌不可兼得,想要開啟高級特效必然會損失幀數導致流暢度下降,因此就需要硬件廠商不斷的研發(fā)出性能更強的GPU,也需要軟件廠商研發(fā)出更高效率的圖形技術。
抗鋸齒(Anti-Aliasing,簡寫為AA)就是這樣一項很特別的圖形技術,它能夠明顯的改善游戲畫面表現力,同時也會讓游戲幀數大幅下降。所以多年以來,不論是顯卡廠商還是游戲開發(fā)商,都在努力的改進抗鋸齒效率,開發(fā)出新的抗鋸齒模式,讓游戲畫質變得更好,同時也不至于讓性能損失太多。
所以,大家一定聽過或者見過以下這些抗鋸齒中的一種甚至多種,如:MSAA、CSAA、CFAA、FXAA、TSAA……今天筆者就為大家詳細解讀3D游戲中的鋸齒是如何產生的,回顧最常見的MSAA技術的原理和優(yōu)缺點,最后介紹NVIDIA新開發(fā)的一種效率極高的抗鋸齒技術——MFAA。
● 為什么會產生鋸齒?
我們知道,顯示屏是由一個個方塊像素點組成的,這些方塊像素點在顯示斜向或圓形物體時,會不可避免的在邊緣產生鋸齒狀的線條。就像馬賽克一樣,只不過是薄碼而已……
● 高分屏能否自動消除鋸齒?
當顯示器的分辨率或顯示屏的PPI(每英寸的像素數)足夠大時,人眼將無法看清具體的像素點,但相鄰像素之間的色彩差異也會產生明顯的錯落感,高分辨率/PPI由于像素變得非常細膩,可以同比縮小鋸齒,但仍不能完全消除鋸齒。
● 抗鋸齒技術是如何抵抗鋸齒的?
前面說過,方塊像素顯示斜向或圓形物體時,鋸齒是無可避免的,抗鋸齒也無法消除鋸齒,但它能通過欺騙人眼的方法,讓鋸齒的棱角顯得不那么明顯:
如上圖所示,方法就是對鋸齒所在位置的像素及相鄰像素進行比對采樣處理,計算出該像素應該顯示多少比例的灰階值,而不是“非黑即白”的顯示模式。比如4xAA就是對每個像素采樣4次,原本該像素只有0、1兩種顯示模式,開啟4xAA后就能顯示0、1/4、1/2、3/4、1五種模式。
如此一來,棱角分明的鋸齒邊緣,就會顯得比較模糊,色彩過渡比較自然,就不會那么刺眼了,鋸齒一定程度上被消除了。
● MSAA占據主導位置,4xMSAA使用最廣泛
MSAA的全稱是Multi Sampling Anti-Aliasing,多重采樣抗鋸齒。MSAA只對Z緩存和模板緩存中的數據進行采樣處理,可以簡單理解為只對多邊形的邊緣進行抗鋸齒處理,而忽略非邊緣像素(因此可能會在一些特殊位置殘留一些鋸齒)。這樣的話,相比SSAA對畫面中所有數據進行處理,MSAA對資源的消耗需求大大減弱,因此MSAA在游戲中使用最廣泛,多年來一直占據主導位置。
通常在游戲中會提供2x、4x、8x三種抗鋸齒級別,一般最常用的就是4x這種模式,因為4x和8x的畫質差別已經很小了。
● 開啟抗鋸齒性能損失有多大?
可以看出,4x抗鋸齒雖然效果優(yōu)秀,但性能損失比較大,而2x性能損失最小,可以說效率最高。
● NVIDIA的黑科技:超高效能的MFAA
鑒于高倍MSAA性能損失較大的問題,NVIDIA在MSAA的基礎上開發(fā)出了一種“投機取巧”的技術:Multi-Frame Sampled Anti-Aliasing(MFAA),從字面上來看它是MSAA的一個變種,可以翻譯為“多幀多重采樣抗鋸齒”。
上圖為MFAA的工作原理,奇數幀在水平方向進行一次2xMSAA采樣,偶數幀在垂直方向進行另外一次2xMSAA采樣,然后通過軟件算法將其合成,最終的采樣結果與直接進行4xMSAA沒有區(qū)別。
可能會有人擔心,對相鄰的兩幀進行兩次2xMSAA采樣合成會不會造成畫質損失,尤其是當畫面運動幅度較大時?其實MFAA都是對物體邊緣進行采樣,無論運動幅度多大都有固定的幾何軌跡,因此兩幀始終會在固定的像素點進行合成,不會產生錯亂,合成之后的采樣效果自然也不會與MSAA有啥區(qū)別。
● 4xMSAA的畫質與4xMFAA完全相同,4xMSAA的性能接近與2xMSAA
4xMFAA的畫質與4xMSAA沒有區(qū)別
當然,通過算法將兩次2xMSAA合成為4xMFAA,性能肯定會有損失的,NVIDIA官方稱性能損失會在5%以內,這樣4xMFAA的性能自然會遠超4xMSAA,只是略低于2xMSAA。同理可以實現8xMFAA的性能遠超8xMSAA,略低于4xMSAA。
4xMFAA的幀數比4xMSAA高30%
通過這樣一個簡單而有創(chuàng)意的技術,可以免費讓NVIDIA顯卡的抗鋸齒性能提高30%,這不是黑科技是什么^_^
關注我們
