1. 程式人生 > >抗鋸齒

抗鋸齒

抗鋸齒

抗鋸齒(anti-aliasing,簡稱AA),也譯為邊緣柔化、消除混疊、抗影象摺疊有損等。它是一種消除顯示器輸出的畫面中圖物邊緣出現凹凸鋸齒的技術,那些凹凸的鋸齒通常因為高解析度的訊號以低解析度表示或無法準確運算出3D圖形座標定位時所導致的圖形混疊(aliasing)而產生的,反鋸齒技術能有效地解決這些問題。它通常被用在在數字訊號處理、數字攝影、電腦繪圖與數碼音效及電子遊戲等方面,柔化被混疊的數字訊號。

出現原因

由於高解析度下的來源訊號或連續的模擬訊號能夠儲存較多的資料,但在通過取樣(sampling)時將較多的資料以較少的資料點代替,部分的資料被忽略造成取樣結果有損,使機器把取樣後的數字訊號轉換為人類可辨別的模擬訊號時造成彼此交疊且有損,在聲音中,便會出現刺耳、不和諧的音調或是噪音。同樣,在

3D繪圖時,每個圖形由畫素組成,每段瞬間畫面由幀組成,因為螢幕上的畫素有限,如果要表現出多邊形的位置時,因技術所限,使用絕對座標定位法是無法做到的,只能使用在近似位置取樣來進行相對定位。由於沒有足夠的取樣來表現出3D世界中的所有物品的圖形,所以在最後影象顯示上,這些現象便會造成在物品與物品中過渡的邊緣就會產生波浪狀、圓形、鋸齒和閃爍等有損現象,嚴重影響了畫面的質量。

抗鋸齒分類

超級取樣抗鋸齒(SSAA)

超級取樣抗鋸齒(Super-Sampling Anti-aliasing,簡稱SSAA)是早期抗鋸齒方法,比較消耗資源,但簡單直接,先把影象對映到快取並把它放大,再用超級取樣把放大後的影象畫素進行取樣,一般選取

2個或4個鄰近畫素,把這些取樣混合起來後,生成的最終畫素,令每個畫素擁有鄰近畫素的特徵,畫素與畫素之間的過渡色彩,就變得近似,令圖形的邊緣色彩過渡趨於平滑。再把最終畫素還原回原來大小的影象,並儲存到幀快取也就是視訊記憶體中,替代原影象儲存起來,最後輸出到顯示器,顯示出一幀畫面。這樣就等於把一幅模糊的大圖,通過細膩化後再縮小成清晰的小圖。如果每幀都進行抗鋸齒處理,遊戲或視訊中的所有畫面都帶有抗鋸齒效果。而將影象對映到快取並把它放大時,放大的倍數被用於分別抗鋸齒的效果,如圖1AA後面的x2x4x8就是原圖放大的倍數。超級取樣抗鋸齒中使用的取樣法一般有兩種:

1. 順序柵格超級取樣(Ordered Grid Super-Sampling

,簡稱OGSS),取樣時選取2個鄰近畫素。

2. 旋轉柵格超級取樣(Rotated Grid Super-Sampling,簡稱RGSS),取樣時選取4個鄰近畫素。

多重取樣抗鋸齒(MSAA)

多重取樣抗鋸齒(MultiSampling Anti-Aliasing,簡稱MSAA)是一種特殊的超級取樣抗鋸齒(SSAA)MSAA首先來自於OpenGL。具體是MSAA只對Z快取(Z-Buffer)和模板快取(Stencil Buffer)中的資料進行超級取樣抗鋸齒的處理。可以簡單理解為只對多邊形的邊緣進行抗鋸齒處理。這樣的話,相比SSAA對畫面中所有資料進行處理,MSAA對資源的消耗需求大大減弱,不過在畫質上可能稍有不如SSAA

覆蓋取樣抗鋸齒(CSAA)

覆蓋取樣抗鋸齒(CoverageSampling Anti-Aliasing,簡稱CSAA)nVidiaG80及其衍生產品首次推向實用化的AA技術,也是目前nVidia GeForce 8/9/G200系列獨享的AA技術。CSAA就是在MSAA基礎上更進一步的節省視訊記憶體使用量及頻寬,簡單說CSAA就是將邊緣多邊形裡需要取樣的子畫素座標覆蓋掉,把原畫素座標強制安置在硬體和驅動程式預先算好的座標中。這就好比取樣標準統一的MSAA,能夠最高效率的執行邊緣取樣,效能提升非常的顯著。比方說16xCSAA取樣效能下降幅度僅比4xMSAA略高一點,處理效果卻幾乎和8xMSAA一樣。8xCSAA有著4xMSAA的處理效果,效能消耗卻和2xMSAA相同。

可程式設計過濾抗鋸齒(CFAA)

可程式設計過濾抗鋸齒(Custom Filter Anti-Aliasing)技術起源於AMD-ATIR600家庭。簡單地說CFAA就是擴大取樣面積的MSAA,比方說之前的MSAA是嚴格選取物體邊緣畫素進行縮放的,而CFAA則可以通過驅動和諧靈活地選擇對影響鋸齒效果較大的畫素進行縮放,以較少的效能犧牲換取平滑效果。顯示卡資源佔用也比較小。

快速近似抗鋸齒(FXAA)

快速近似抗鋸齒(Fast Approximate Anti-Aliasing) 它是傳統MSAA(多重取樣抗鋸齒)效果的一種高效能近似值。它是一種單程畫素著色器,和MLAA一樣運行於目標遊戲渲染管線的後期處理階段,但不像後者那樣使用DirectCompute,而只是單純的後期處理著色器,不依賴於任何GPU計算API。正因為如此,FXAA技術對顯示卡沒有特殊要求,完全相容NVIDIAAMD的不同顯示卡(MLAA僅支援A)DirectX 9.0DirectX 10DirectX 11

時間性抗鋸齒(TXAA)

讓電影畫質的遊戲體驗達到逼真水平。

TXAA抗鋸齒:比MSAAFXAA以及CSAA的畫質更高,製作CG電影的電影製片廠會在抗鋸齒方面花費大量的計算資源,從而可確保觀眾不會因不逼真的鋸齒狀線條而分心。如果想要讓遊戲接近這種級別的保真度,那麼開發商需要全新的抗鋸齒技術,不但要減少鋸齒狀的線條,而且要減少鋸齒狀閃爍情形,同時還不降低效能。為了便於開發商實現這種保真度的提升,英偉達設計了畫質更高的抗鋸齒模式,名為TXAA.該模式專為直接整合到遊戲引擎中而設計。與CG電影中所採用的技術類似,TXAAMSAA的強大功能與複雜的解析濾鏡於一身,可呈現出更加平滑的影象效果,遠遠超越了所有同類技術。此外,TXAA還能夠對幀之間的整個場景進行抖動取樣,以減少閃爍情形,閃爍情形在技術上又稱作時間性鋸齒。目前,TXAA有兩種模式:TXAA 2XTXAA 4XTXAA 2X可提供堪比8X MSAA的視覺保真度,然而所需效能卻與2X MSAA相類似;TXAA 4X的影象保真度勝過8XMSAA,所需效能僅僅與4X MSAA相當。

多幀取樣抗鋸齒(MFAA)

NVIDIA(英偉達)根據MSAA改進出的一種抗鋸齒技術。目前只有使用 Maxwell 架構GPU的顯示卡才可以使用。在 Maxwell 上,英偉達推出了用於光柵化的可程式設計取樣位置,它們被儲存在隨機存取儲存器 (RAM) 中。如此一來便為更靈活、更創新的全新抗鋸齒技術創造了機會,這類抗鋸齒技術能夠獨特地解決現代遊戲引擎所帶來的難題,例如高畫質抗鋸齒對效能的更高要求。只要在NVIDIA控制面板裡為程式開啟MFAA並在遊戲中選擇MSAA就可以開啟。畫面表現明顯強於同級別的MSAA,這種全新抗鋸齒技術在提升邊緣畫質的同時能夠將效能代價降至最低。通過在時間和空間兩方面交替使用抗鋸齒取樣格式,4xMFAA 的效能代價僅相當於 2xMSAA,但是抗鋸齒效果卻與 4xMSAA相當。支援MFAA的顯示卡(GPU):GTX TITAN ZGTX TITAN XGTX980TiGTX980GTX970GTX960GTX950