反鋸齒(英語:anti-aliasing,簡稱AA),也译为抗锯齿或反走样、消除混叠、抗图像折叠失真等。它是一种消除显示器输出的画面中图物边缘出现凹凸锯齿的技術,那些凹凸的锯齿通常因为高解析度的訊號以低解析度表示或无法准确运算出3D图形坐标定位時所導致的图形混叠(aliasing)而产生的,反鋸齒技术能有效地解决这些问题。它通常被用在在數字信號處理數位攝影電腦繪圖數码音效等方面,柔化被混叠的数字信号。

左上:未经过反鋸齒处理的图形;
右上:经过反鋸齒处理的图形;
右:5倍放大后的经过反鋸齒处理的图形;

反鋸齒技术的出现

由於高解析度下的來源訊號或連續的類比訊號能夠儲存較多的資料,但在透過取樣(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對於最終渲染結果的畫質有破壞性的影響。

參見

参考文献

  1. ^ 透析超级采样抗锯齿. yesky.com. [2010-02-28]. (原始内容存档于2016-03-05). 
  2. ^ FSAA簡介. dev.gameres.com. [2010-02-28]. (原始内容存档于2007-08-08). 
  3. ^ MSAA,SSAA,CSAA,CFAA...如何正确地为您的游戏设置抗锯齿模式. digiyule.com. [2010-07-01]. (原始内容存档于2010-09-18).