各种抗锯齿模式略解:SSAA MSAA CSAA CFAA
FSAA--Full Screen Anti-Aliasing的缩写,望文生义就是指全屏抗锯齿画面增强技术,用以缩小3D建模边缘锯齿形状,使得较低的分辨率拥有接近较高分辨率的画面表现。
关于3D建模和AA的原理不赘述,枯燥的文章网上大把,这里重点说明一下各种流行的AA实现方法。
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,CFAA--Custom Filter Anti-Aliasing。
即可编程过滤抗锯齿。这是AMD-ATI自R600家族起另立门户开发的自有AA技术。简单说CFAA就是扩大取样面积的MSAA,比方说之前的MSAA是严格按照边缘多边形实际数量取样,而CFAA可以通过驱动程序实现以较少的多边形像素取样数量完成抗锯齿工作,理论上看对性能会有相当幅度的改善,但是实际效果不会比CSAA和MSAA更好。12xCFAA大约以1.5个多边形为基本单位,在1.5个多边形内取样12个像素,因此理论上看与8xMSAA有着近似的效果,而性能损失却与6xMSAA相当。
然而走实际运行中观察到,CFAA由于没有按照标准的多边形像素数量进行取样,每个基本取样单元之间必然会有重复的部分,因此实际效果感觉边缘纹理质量较差,模糊。因此许多网友戏称CFAA为浆糊AA,这种模式接受程度较低,需要做更进一步的改进。