分类: LINUX
2012-02-15 16:30:14
锯齿的产生
3D渲染分为顶点渲染和像素渲染两个部分。顶点渲染是构建3D图形基本骨架的过程,相当于为画面勾边,而像素渲染则是为画面着色的过程。着色过程中,像素是构成图形的最小单位,一副画面内每个像素都有它事先规划出来的具体坐标,当然我们把它们视为一个个小方块会更为形象。无论顶点渲染勾勒出来的是一辆汽车还是一栋房子,它都是由无数个小方块组成。既然是方块,那么肯定都是有棱角的,所以3D画面中的物体边缘难免会看上去像长了很多毛刺一样,这就是锯齿现象。
全屏抗锯齿的原理和不同模式
FSAA是Full Screen Anti-Aliasing的缩写,即全屏抗锯齿,是一种能够消除画面中图形边缘的锯齿,使画面看起来更为平滑的画面特效技术。它大致可分为以下几种模式。
SSAA——超级采样抗锯齿
人眼很难分辨超过300DPI(DPI:像素点每英寸)以上的彩色点。也就是说,一台对角线为15英寸的显示器,如果分辨率为3600×2700的话,那就没有做全屏抗锯齿的必要了,因为人的眼睛没办法分辨这么细的点。
超级采样抗锯齿(SuperSampling Anti-Aliasing)就是把当前分辨率成倍提高(如当前分辨率为1024×768,开启2倍SSAA后,画面就放大到了2048×1536),然后把画面缩放到当前尺寸的显示器里。这样的做法实际上就是在显示尺寸不变的情况下提高分辨率,让单个像素变得极小,这样就能够大幅减轻画面的锯齿感了。不过由于是对整个显示画面的放大,因此它消耗的显示资源也非常大。
MSAA——多重采样抗锯齿
多重取样抗锯齿(MultiSampling Anti-Aliasing)的原理与超级采样抗锯齿相同。不过MSAA是寻找出物体边缘部分的像素,然后对它们进行缩放处理。由于只是对物体的外层像素进行缩放处理,忽略掉了不会造成锯齿的内部像素,所以显卡不会像处理SSAA那样需要庞大的计算量,因此MSAA比起SSAA来更有效率。
CSAA——覆盖采样抗锯齿
覆盖采样抗锯齿(CoverageSampling Anti-Aliasing)是NVIDIA G80系列出现时一并出现的抗锯齿技术。它的原理就是将边缘多边形里需要采样的子像素坐标覆盖掉,把原像素坐标强制安置在硬件和驱动程序预先算好的坐标中。这就好比采样标准统一的MSAA,能够最高效率地执行边缘采样,效能提升非常显著,同时资源占用也比较低。
CFAA——Custom Filter Anti-Aliasing可编程过滤抗锯齿
这种技术起源于AMD-ATi的R600家族。简单说CFAA就是扩大取样面积的MSAA,比方说之前的MSAA是严格选取物体边缘像素进行缩放的,而CFAA则可以通过驱动程序灵活地选择对影响锯齿效果较大的像素进行缩放,以较少的性能牺牲换取平滑效果。
全屏抗锯齿的应用
FSAA实际上是在显示器分辨率未达到一定高度时的辅助显示优化手段,伴随显示器分辨率不断提升,它的作用将越来越小。不过虽然目前显示器分辨已经有了显著提高,可要达到完全的平滑的效果仍然不够。
SSAA模式理论上应该是效果最好的全屏抗锯齿模式,可是由于它对显示资源占用过高,所以并不实用。而和它效果接近的MSAA也同样遇到了同样的问题。目前最主流的CSAA和CFAA应该是最实用,最有效率的全屏抗锯齿模式。它们不仅有良好的平滑效果,同时对显示资源的占用率也不高。类似GeForce 9600GSO/GT、Radeon HD3850等显卡都能在分辨率较低的DirectX 10游戏中开启这种效果。