maladana
小D是一個游戲玩家,看到很多游戲大作新鮮上市,比如《Call of Duty 5:World at War》、《極品飛車12》等。不過讓小D苦惱的是,這些游戲的畫面總有一些“很影響視覺效果”的地方,比如空中好好的電線,看上去偏偏就支離破碎;游戲畫面中的墻體邊緣也是犬牙交錯,而且無論怎么調(diào)節(jié)顯卡特效設(shè)置,都沒辦法讓它們更真實。這是怎么回事呢?看來,這抗鋸齒的知識,真的該好好普及一下了。
恐怕很多玩家都會有和小D一樣的苦惱,為什么游戲畫面看起來不精致呢?反而有種破碎或者粗糙感?好好的兩點間連接成的一條直線,電腦為什么就顯示出來有小格子甚至干脆丟失呢?難道電腦連一段漂亮而流暢的圓弧都畫不出來嗎?要解答這些問題,我們需要從電腦的顯示原理來探尋一下!
鋸齒的產(chǎn)生
假設(shè)我們需要畫一條曲線,應(yīng)該怎么做呢?可以使用圓規(guī),甚至直接用手在紙上隨便畫,我們畫出的線都是平滑的,和想象中的線條完全相同。但對計算機,特別是3D游戲來說,想得到平滑的線條是非常困難的。為了解釋清楚這個問題,我們先了解一個簡單的概念:采樣點。
對計算機來說,采樣是有條件的使用數(shù)據(jù)。比如我們需要將一個曲線描繪在計算機上,計算機必須確定曲線上每一個點的位置,才能記錄這個曲線。我們給計算機這樣的條件:建立一個26×18的方格陣列,將曲線通過的格子全部染色。
當我們在方格陣列上描繪出這些曲線通過的格子后,就完成了采樣工作。對計算機來說,下一步工作就是確定坐標,進行計算。我們可以清楚地看到,這些染色的方格連起來后形成的圖形非常粗糙、不平滑,并且這些方格的坐標難以代表原始的曲線,因此計算機顯示出來的線條并不是我們最開始繪制的平滑曲線,而是那些灰色的格子代表的非常粗糙的曲線。為什么會這樣?采樣點過少嗎?我們在一個確定的面積內(nèi)最多只有26×18個采樣點,如果增加采樣點會怎么樣呢?
我們將同樣面積內(nèi)的方格數(shù)量增加到55×48個,然后采用上述同樣的方法對曲線進行采樣。這次我們可以明顯看出,格子的數(shù)量增加后,采樣得出的曲線更為接近原始圖形,重要的是它更為平滑。
分辨率上升,每一個像素點更小,圖像更為細膩,鋸齒情況也大為減輕。但從本質(zhì)上來說,這是數(shù)據(jù)更為精確的結(jié)果。在格子較多的系統(tǒng)中,相當于坐標的單位值更小,計算機的采樣點更精細,數(shù)據(jù)更為接近真實值,近似后誤差降低,因此,鋸齒現(xiàn)象就大大減少了。由此看來,分辨率越高,計算機采樣點越多,鋸齒現(xiàn)象就越少。
主流抗鋸齒技術(shù)介紹
抗鋸齒技術(shù)不僅僅是上文介紹的提高分辨率那么簡單。每一種技術(shù),都有其最核心的部分存在??逛忼X技術(shù)最核心的部分就是算法。
目前在游戲和顯卡中使用最多的是全屏抗鋸齒技術(shù),F(xiàn)ull Scene Anti-aliasing(簡稱為FSAA)。FSAA對全屏幕所有的圖像都進行抗鋸齒處理。比較常見有以下幾種方法:
1.SSAA:超級采樣抗鋸齒
超級采樣抗鋸齒使用的方法正是我們在第二部分中介紹的方法。它通過將整個畫面的分辨率提高來得到更為平滑的畫面效果。比如19英寸顯示器(16:10)的分辨率為1440×900,SSAA在計算的時候,將分辨率大幅度提升,比如2880×1800,獲得更為精確的畫面數(shù)據(jù)后再將圖像顯示在1440×900的畫面上,效果自然更為平滑。
SSAA作為最早出現(xiàn)的一種抗鋸齒技術(shù),從Radeon7000系列顯卡到GeForce 256等老顯卡都支持,甚至在后期的Voodoo顯卡中都提供了對SSAA的支持。但是,這種技術(shù)對顯卡的資源耗費巨大,提升分辨率來抗鋸齒的方式看似非常簡單,實際上還是有大量的不需要抗鋸齒的部分也被納入了計算范圍,浪費了顯卡的資源。
2.MSAA:多重采樣抗鋸齒
由于SSAA浪費資源比較嚴重,因此各家廠商都開發(fā)了更先進的MSAA抗鋸齒技術(shù),ATI和NVDIA的顯卡都對這種抗鋸齒技術(shù)提供了大力支持。
MSAA的原理很簡單,它只對畫面中多邊形的邊緣部分做抗鋸齒處理。比如一個紅色的圓,只對圓周作抗鋸齒多重采樣計算,但是圓周以內(nèi)的部分則不會處理。這樣就大幅度降低了顯卡的計算壓力,也一躍成為了最有效的抗鋸齒計算方法。MSAA的資源耗費只和圖像中采用的多邊形數(shù)量有關(guān),因此在實際使用中有比較出色的表現(xiàn)。
不過,MSAA還是有問題,比如遇到了半透明的物體,如何采樣?其它諸如鐵絲網(wǎng)、密集草葉等,邊緣不明確或者無比復(fù)雜,如何抗鋸齒?因此,NVIDIA提出了透明抗鋸齒、ATI提出了自適應(yīng)抗鋸齒技術(shù),來專門針對如鐵絲網(wǎng)、樹葉等部位,采用額外的采樣計算甚至局部使用SSAA技術(shù),強行進行抗鋸齒處理。
3.G80中出現(xiàn)的CSAA和R600采用的CFAA
CSAA是NVIDIA在G80中全新推出的一種抗鋸齒技術(shù)。CSAA是對MSAA抗鋸齒技術(shù)的更深一步發(fā)展。舉例來說,如果使用16XMSAA,需要在周圍取得16個采樣點的色彩值和Z軸值,然后保存這些數(shù)值進行計算。而16XCSAA,則全部在被采樣的像素點中心取得色彩之和Z軸值,然后對比并去掉同樣的數(shù)據(jù)。一般來說,16XCSAA最后只需要保存4份色彩值和Z軸值即可。換句話來說,4XMSAA耗費的資源和16XCSAA是相同的,但是,16XCSAA的畫面效果相比4XMSAA勝出太多。
相比之下,ATI在R600上新采用的CFAA技術(shù),也是MSAA技術(shù)的深化。它通過驅(qū)動判斷對視覺效果影響大的多邊形,然后針對這些多邊形進行有目的的處理,以較小的性能損失達到較高的MSAA效果。根據(jù)ATI給出的展示圖樣,8×CFSS的效果比8×CSAA效果要更好,邊緣更為平滑,鋸齒現(xiàn)象更為輕微。
抗鋸齒的故事我們就講到這里了。除了本文敘述的各種抗鋸齒技術(shù)外,AMD和NVIDIA還配合CrossFire和SLI技術(shù)開發(fā)出了更為精細,效果更出色的抗鋸齒技術(shù)。
相信看了本文后,玩家們在實際使用中也會更為注意抗鋸齒技術(shù)了。實際上,在保證性能的基礎(chǔ)上,打開抗鋸齒,獲得更為精美的畫面,何樂而不為呢?但是,面對形形色色的反鋸齒算法,游戲中該怎么進行設(shè)置?是直接選擇FSAA,還是NVIDIA或ATI自家的CSAA或CFAA呢?
下期我們將結(jié)合具體游戲教你使用好抗鋸齒,在打開抗鋸齒的情況下,減少顯卡的性能損失,敬請大家關(guān)注。