反锯齿
此条目需要补充更多来源。 (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对于最终渲染结果的画质有破坏性的影响。