反锯齿(英语: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对于最终渲染结果的画质有破坏性的影响。

参见

参考文献

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.