graphic-抗锯齿AntiAliasing

Anti Aliasing, 抗锯齿, 也称作 反走样


前篇


MSAA

MSAA的原理和SSAA一致,都是通过将图形拉伸至更高倍率下的缓存之后再更精细的图像上进行采样,但是前者真正聪明的地方在于,再开始狮子大开口之前 MSAA 存在一个判断的过程,换句话说 MSAA仅仅针对画面中边缘部分进行放大处理 ,这么一来对于硬件的负担着实大大减轻,正是因为如此,MSAA早已是最流行的抗锯齿方案之一,对于任何一款稍微现代的游戏来说,不支持MSAA几乎是不可想象的。

无论是SSAA还是MSAA,他们的运作都集中在非常靠前的位置,比如光栅化阶段,因此对于硬件开销有较大的呼声,但是从2012年的GeForce 600系列以来,NVIDIA就已经开始推广一款全新的抗锯齿方案,他最大的特点就是出发点非常靠后,作为一款后处理抗锯齿它的硬件需求非常低,甚至达到几乎难以察觉的地步,同时因为较低的实现难度,它已经成为继MSAA之后最流行的抗锯齿方案之一,说到这里相信很多玩家已经猜到,这就是NVIDIA推出的快速近似抗锯齿(Fast approximate anti-aliasing)。参考: FXAA


FXAA

FXAA和MSAA都是边缘抗锯齿。FXAA精度较低,导致画面比较“糊”,涂抹痕迹严重,但是对硬件要求较低。MSAA精度高,效果好,但是对硬件要求高.

而MSAA基本上只对画面中物体的边缘进行放大、混合的抗锯操作,因为边缘是锯齿最明显的地方(注意不是所有的边缘)。提取边缘,主要是结合深度技术。MSAA是种硬件AA。

我们一般说的4x、8x,就是放大倍数,放得越大,供混合的采样越充份,效果越好,但是处理速度也就越慢。

FXAA也是种取边缘的技术。但是和MSAA不同,MSAA提边缘是在图形管线的前段(跟深度有关)。FXAA是种后处理技术,后处理技术一般在画面完成后,通过像素颜色检测边缘(色彩差异太大时,不是边缘也被认为成边缘,精度有问题)。后处理技术一般没倍数概念,因为不存在放大。

FXAA的精度肯定不如MSAA,但是不像MSAA那样依赖显卡的深度处理能力和显存大小。所以,好的硬件上,撑得住MSAA就用MSAA,撑不住那么用FXAA可能效果最优。不能一概而论。

正因为不是所有边缘都需要AA,所以MSAA这种对所有边缘都进行AA的算法,存在着浪费。也就意味着后处理AA技术有很大的发展价值。


TAA

TAA是时间抗锯齿,基于图像之前几帧的数据对图像进行抗锯齿处理,优点是效率比较高,缺点是图像分辨率较低时观感上比较模糊,且容易有伪影。

TXAA 我查了多方面的资料,可以认为就是TAA在英伟达这边的宣传名称


SSAA

通过名字就知道,SSAA最大的特点来自于采样过程,是的,以常见的SSAA4为例,在面对一张最后需要以19201080像素渲染的画面时,SSAA会首先渲染一张尺寸为3840*2160像素的缓存,再在这种长宽都乘以2的画面上进行采样,采样的精度和效果当然是最理想的,但是你也可以想象,这种只为追求理想情况的手段对于硬件资源的消耗非常大,成本也非常高。更重要的是,即使在原理上SSAA拥有最理想的精度,但是最现实情况万般变化中的游戏世界,SSAA并不能永远保证采样效果是最讨好眼睛的,换句话说性价比会随着新技术的现身而面临越来越大的挑战,这其中就包括SSAA本身的一种灵活的变体:多重采样抗锯齿(Multi-Sampling Anti-Aliasing,MSAA)。 参考: MSAA