反鋸齒
此條目需要補充更多來源。 (2018年4月22日) |
此條目需要精通或熟悉相關主題的編者參與及協助編輯。 (2011年8月8日) |
反鋸齒(英語:anti-aliasing,簡稱AA),也譯為抗鋸齒或反走樣、消除混疊、抗圖像摺疊失真等。它是一種消除顯示器輸出的畫面中圖物邊緣出現凹凸鋸齒的技術,那些凹凸的鋸齒通常因為高解析度的訊號以低解析度表示或無法準確運算出3D圖形坐標定位時所導致的圖形混疊(aliasing)而產生的,反鋸齒技術能有效地解決這些問題。它通常被用在在數字信號處理、數位攝影、電腦繪圖與數碼音效等方面,柔化被混疊的數字信號。
反鋸齒技術的出現
由於高解析度下的來源訊號或連續的類比訊號能夠儲存較多的資料,但在透過取樣(sampling)時將較多的資料以較少的資料點代替,部分的資料被忽略造成取樣結果失真,當機器把取樣後的數位訊號轉換為人類可辨別的類比訊號時造成彼此交疊且失真,在聲音中,便會出現刺耳、不和諧的音調或是噪音。同樣,在3D繪圖時,每個圖形由像素組成,每段瞬間畫面由幀組成,因為屏幕上的像素有限,如果要表現出多邊形的位置時,因技術所限,使用絕對坐標定位法是無法做到的,只能使用在近似位置採樣來進行相對定位。由於沒有足夠的採樣來表現出3D世界中的所有物品的圖形,所以在最後圖像顯示上,這些現象便會造成在物品與物品中過渡的邊緣就會產生波浪狀、圓形、鋸齒和閃爍等失真現象,嚴重影響了畫面的質量。[1]
全景反鋸齒
全景反鋸齒(full scene Anti-aliasing,簡稱FSAA),它指的是利用反鋸齒技術對輸出到顯示器的全螢幕畫面信號進行放大與採樣分析並重新製作滿屏畫面信號輸出至顯示器,而不是對畫面某一部分使用反鋸齒技術。全景反鋸齒對於3D遊戲畫面有着很大的影響,它能使整個3D遊戲畫面變得細膩、清晰與逼真,FSAA幾乎已成為目前所有上市遊戲中必然包含的基本功能,這是一種重要的技術應用。FSAA的實現有以下方法:
超級採樣抗鋸齒
超級採樣抗鋸齒(Super-Sampling Anti-aliasing,簡稱SSAA)此是早期抗鋸齒方法,比較消耗資源,但簡單直接,先把圖像映射到緩存並把它放大,再用超級採樣把放大後的圖像像素進行採樣,一般選取2個或4個鄰近像素,把這些採樣混合起來後,生成的最終像素,令每個像素擁有鄰近像素的特徵,像素與像素之間的過渡色彩,就變得近似,令圖形的邊緣色彩過渡趨於平滑。再把最終像素還原回原來大小的圖像,並保存到幀緩存也就是顯存中,替代原圖像存儲起來,最後輸出到顯示器,顯示出一幀畫面。這樣就等於把一幅模糊的大圖,通過細膩化後再縮小成清晰的小圖。如果每幀都進行抗鋸齒處理,遊戲或視頻中的所有畫面都帶有抗鋸齒效果。[2]而將圖像映射到緩存並把它放大時,放大的倍數被用於分別抗鋸齒的效果,如:圖1,AA後面的x2、x4、x8就是原圖放大的倍數。 超級採樣抗鋸齒中使用的採樣法一般有兩種:
- 順序柵格超級採樣(Ordered Grid Super-Sampling,簡稱OGSS),採樣時選取2個鄰近像素。
- 旋轉柵格超級採樣(Rotated Grid Super-Sampling,簡稱RGSS),採樣時選取4個鄰近像素。
多重採樣抗鋸齒
多重採樣抗鋸齒(Multisampling Anti-Aliasing,簡稱MSAA)是一種特殊的超級採樣抗鋸齒(SSAA)。MSAA首先來自於OpenGL。具體是MSAA只對Z緩存(Z-Buffer)和模板緩存(Stencil Buffer)中的數據進行超級採樣抗鋸齒的處理。可以簡單理解為只對多邊形的邊緣進行抗鋸齒處理。這樣的話,相比SSAA對畫面中所有數據進行處理,MSAA對資源的消耗需求大幅減少,不過在畫質上可能稍有不如SSAA。[3]
這是最常見的反鋸齒,差不多所有遊戲都支援MSAA。
覆蓋採樣抗鋸齒
覆蓋採樣抗鋸齒(Coverage Sampling Anti-Aliasing,簡稱CSAA)是nVidia G80系列出現時一併出現的抗鋸齒技術。它的原理是將邊緣多邊形裡需要採樣的子像素坐標覆蓋掉,抒原像素坐標強制安置在硬件和驅動程序預告算好的坐標中。這就好比採樣標準統一的MSAA,能夠最高效率地執行邊緣採樣,效率提升非常明顯,同時資源佔用也比較低。
可編程過濾抗鋸齒
可編程過濾抗鋸齒(Custom Filter Anti-Aliasing,簡稱CFAA)技術起源於AMD-ATI的R600家庭。簡單地說CFAA就是擴大取樣面積的MSAA,比方說之前的MSAA是嚴格選取物體邊緣像素進行縮放的,而CFAA則可以通過驅動和諧靈活地選擇對影響鋸齒效果較大的像素進行縮放,以較少的性能犧牲換取平滑效果。顯卡資源佔用也比較小。
目前最主流的是CSAA和CFAA應該是最實用、最有效率的全屏抗鋸齒模式。它們不僅有良好的平滑效果,同時對顯示資源佔用率也不高。
快速近似抗鋸齒
快速近似抗鋸齒(Fast Approximate Anti-Aliasing,簡稱FXAA)是由Timothy Lottes開發的一種反鋸齒。FXAA佔用很少的電腦資源,便可獲得理想的抗鋸齒效果。
時間混疊抗鋸齒
時間混疊抗鋸齒(Temporal Anti-Aliasing,簡稱TXAA)是NVIDIA開發的抗鋸齒技術,TXAA是為減少移動時的鋸齒現象採用了不同時間幀的像素進行採樣,跟前幾樣空間反鋸齒比起來,TXAA大幅減少了移動中的破碎影像。
深度學習抗鋸齒
深度學習抗鋸齒(Deep Learning Anti-Aliasing,簡稱DLAA)是利用位於遠端的深度學習專用TPU的深度計算效能,預先運算大量的超級取樣樣本影像,再將樣本影像與在本機端即時運算生成的影像進行差異比較,然後通過學習、觀察其中的差距,來重新實現完成前者的影像質量,以達到抗鋸齒成果,DLAA是一個需要遠端資源與本地資源互相配合,協同工作產生抗鋸齒效果的抗鋸齒技術。
NVIDIA公司推出的近似技術稱為「深度學習超高取樣」(Deep Learning Super-Sampling,簡稱DLSS),但NVIDIA的DLSS並非用來提高畫質,而是用來提高如4K或8K等超高螢幕解析度下的幀率,NVIDIA將超級取樣樣本影像的演算法學習模型,以驅動程式更新方式送至使用者本機端,當使用者以超高解析度執行遊戲,啟用DLSS後,渲染過程將會調用算法學習模型能夠預先計算的部分,直接以經由學習模型產生的影像替換本需於本機端耗費大量渲染時間的影像,進而減少在超高解析度時的渲染時間,由於本質上算是一個走捷徑的作法,因此DLSS雖然帶來了較高的幀率,但也有使用者指出DLSS對於最終渲染結果的畫質有破壞性的影響。