锯齿与抗锯齿

抗锯齿(英语:Anti-Aliasing,简称AA),也译为边缘柔化、消除混叠、抗图像折叠有损,反走样等。它是一种消除显示器输出的画面中图物边缘出现凹凸锯齿的技术,
那些凹凸的锯齿通常因为高分辨率的信号以低分辨率表示或无法准确运算出3D图形坐标定位时所导致的图形混叠(aliasing)而产生的,抗锯齿技术能有效地解决这些问题。


1,SSAA--SuperSampling Anti-Aliasing。
即超级取样抗锯齿模式。这是最基本的抗锯齿模式,实现原理是渲染时把画面按照显示器分辨率的若干倍放大,如在1024x768分辨率上开启2xSSAA,
GPU会先渲染2048x1536图像,再“塞进”1024x768的边框里成型,将画面精细度提升一倍,毫无疑问会改善边缘锯齿情况。但是众所周知,
高分辨率图形的渲染会极大的消耗GPU运算资源和显存容量及带宽,因此SSAA资源消耗极大,即使是最低的2x也未必就能轻易承受。


2,MSAA--MultiSampling Anti-Aliasing。
即多重取样抗锯齿模式。这是nVidia在NV20即GeForce 3显卡上首次引入实用化。简单说MSAA就是SSAA的改进版。SSAA仅仅为了边缘平滑,
而不得不重新以数倍的分辨率渲染整个画面,造成宝贵显卡处理资源的极大浪费,因此MSAA正是为了改善这种情况而生。MSAA实现方式类似于SSAA,
不同之处在于MSAA仅仅将3D建模的边缘部分放大处理,而不是整个画面。简单说3D模型是由大量多边形所组成,MSAA仅仅处理模型最外层的多边形,因此显卡的负担大幅减轻。
nVidia和ATI也不遗余力的推出各种MSAA优化技术用以提升MSAA的画面质量与速度,MSAA虽然是2002的技术,当前却正是红火的正式实用化时代,许多游戏在菜单里都提供了直接支持。
MSAA虽然趋于易用化,十分流行,但是缺点也很明显:
1,如果画面中单位物体较多,需要处理的边缘多边形数量也自然增多,此时MSAA性能也会下降的十分厉害。
2,同样倍数的MSAA,理论上边缘平滑效果与SSAA相同,但是由于仅仅处理边缘部分的多边形,因此非边缘部分的纹理锐度肯定远不如SSAA。


3,CSAA--CoverageSampling Anti-Aliasing。
即覆盖取样抗锯齿。这是nVidia在G80及其衍生产品首次推向实用化的AA技术,也是目前nVidia GeForce 8/9系列独享的AA技术。
CSAA就是在MSAA基础上更进一步的节省显存使用量及带宽,简单说CSAA就是将边缘多边形里需要取样的子像素坐标覆盖掉,
把原像素坐标强制安置在硬件和驱动程序预先算好的坐标中。这就好比取样标准统一的MSAA,能够最高效率的执行边缘取样,效能提升非常的显著。
比方说16xCSAA取样性能下降幅度仅比4xMSAA略高一点,效果却几乎和8xMSAA一样。8xCSAA有着4xMSAA的处理效果,性能消耗却和2xMSAA相同。
CSAA是目前最为先进的AA实现方式,也是GeForce 8克敌制胜的重要法宝之一,可以遇见,在将来的两三年内,CSAA必定会获得大量游戏软件的直接支持从而大放异彩。


4,CSAA(Coverage Sampling Anti-Aliasing,覆盖面采样),其中心依然是利用更加优化的算法降低数据传输的带宽压力,所要达到的抗锯齿倍数却仍然很高,
这是一种高性价比的解决办法,其思路源自于Quincunx算法,CSAA将其思路扩展到了更多的采样样本(子像素)。传统的采样技术MSAA通常都只是对模型的覆盖面进行采样,
CSAA的新抗锯齿技术同时使用到了覆盖面采样和几何采样。在CSAA的采样中,色彩值和深度值是由被采样的点中心取得,并且运用特殊的算法对得到的多个像素中心得到的数据进行比较
,剔除重复部分,保留与其他数据不同的的色彩和深度值,最终在使用同样的子像素采样点的情况下,降低需要保存的Color/Z数据。
相对于MSAA采样模式而言,CSAA在覆盖面采样点数相同的情况下,所要保存的Color数据(颜色数据)和Z数据(深度数据)将减小至原来的25%到50%,
(CSAA 8x的数据量相当于MSAA 4x数据量),这大大节约了抗锯齿所需要的显存带宽。


5,CFAA--Custom Filter Anti-Aliasing。
即可编程过滤抗锯齿。这是AMD-ATI自R600家族起另立门户开发的自有AA技术。简单说CFAA就是扩大取样面积的MSAA,
比方说之前的MSAA是严格选取物体边缘像素进行缩放的,而CFAA则可以通过驱动和谐灵活地选择对影响锯齿效果较大的像素进行缩放,以较少的性能牺牲换取平滑效果。显卡资源占用也比较小
而CFAA可以通过驱动程序实现以较少的多边形像素取样数量完成抗锯齿工作,理论上看对性能会有相当幅度的改善,但是实际效果不会比CSAA和MSAA更好。
12xCFAA大约以1.5个多边形为基本单位,在1.5个多边形内取样12个像素,因此理论上看与8xMSAA有着近似的效果,而性能损失却与6xMSAA相当。
然而走实际运行中观察到,CFAA由于没有按照标准的多边形像素数量进行取样,每个基本取样单元之间必然会有重复的部分,因此实际效果感觉边缘纹理质量较差,模糊。
因此许多网友戏称CFAA为浆糊AA,这种模式接受程度较低,需要做更进一步的改进。


6, 高分辨率抗锯齿(HRAA)
高分辨率抗锯齿方法(High Resolution Anti-Aliasing,简称HRAA),也称Quincunx方法,也出自NVIDIA公司。“Quincunx”意思是5个物体的排列方式,
其中4个在正方形角上,第五个在正方形中心,也就是梅花形,很像六边模型上的五点图案模式。此方法中,采样模式是五点梅花状,其中四个样本在像素单元的角上,最后一个在中心。


7, 形态抗锯齿(MLAA)
形态抗锯齿(Morphological Anti-Aliasing,简称MLAA),是Intel率先提出(感谢龚大补充,MLAA是Intel提出的纯CPU AA Morphological Antialiasing (MLAA),
AMD拿去做了个compute shader的版),然后AMD推出的完全基于CPU处理的抗锯齿解决方案。与MSAA不同, MLAA将跨越边缘像素的前景和背景色进行混合,
用第2种颜色来填充该像素,从而更有效地改进图像边缘的变现效果。


8, 快速近似抗锯齿(FXAA)
快速近似抗锯齿(Fast Approximate Anti-Aliasing,简称FXAA) ,是传统MSAA(多重采样抗锯齿)效果的一种高性能近似。它是一种单程像素着色器,
和MLAA一样运行于目标游戏渲染管线的后期处理阶段,但不像后者那样使用DirectCompute,而只是单纯的后期处理着色器,不依赖于任何GPU计算API。
正因为如此,FXAA技术对显卡没有特殊要求,完全兼容NVIDIA、AMD的不同显卡(MLAA仅支持A卡)和DirectX 9.0、DirectX 10、DirectX 11。


9, 时间性抗锯齿(TXAA)
时间性抗锯齿(Temporal Anti-Aliasing,简称TXAA),将 MSAA、时间滤波以及后期处理相结合,用于呈现更高的视觉保真度。与CG电影中所采用的技术类似,
TXAA集MSAA的强大功能与复杂的解析滤镜于一身,可呈现出更加平滑的图像效果。此外,TXAA还能够对帧之间的整个场景进行抖动采样,以减少闪烁情形,
闪烁情形在技术上又称作时间性锯齿。目前,TXAA有两种模式:TXAA 2X和TXAA 4X。TXAA 2X可提供堪比8X MSAA的视觉保真度,
然而所需性能却与2X MSAA相类似;TXAA 4X的图像保真度胜过8XMSAA,所需性能仅仅与4X MSAA相当。


10, 多帧采样抗锯齿(MFAA)
多帧采样抗锯齿(Multi-Frame Sampled Anti-Aliasing,MFAA)是 NVIDIA公司根据MSAA改进出的一种抗锯齿技术。目前仅搭载 Maxwell 架构GPU的显卡才能使用。
可以将MFAA理解为MSAA的优化版,能够在得到几乎相同效果的同时提升性能上的表现。
MFAA的渲染过程MSAA基本相同,但不同的采样方法造就了性能上的差异,其实MFAA就像是MSAA的优化版,能够在得到几乎相同效果的同时提升性能上的表现。

MFAA与MSAA最大的差别就在于在同样开启4倍效果的时候MSAA是真正的针对每个边缘像素周围的4个像素进行采样,MFAA则是仅仅只是采用交错的方式采样边缘某个像素周围的两个像素。


http://blog.csdn.net/poem_qianmo/article/details/72857602

http://www.twinklingstar.cn/2013/390/introduction-to-alias-antialias/

你可能感兴趣的:(图形学)