锯齿的产生
图形渲染中的锯齿是指在渲染结果图像上颜色剧烈变化的区域出现锯齿状一样的斑纹的现象。在图像色彩边缘线上,由于边缘两边的颜色差异很大,这样的现象特别明显。
锯齿现象本质上是因为不同频率信号之间转换之后造成的数据失真。因此锯齿现象也被称为走样(Aliasing)。常见的走样有几何走样,着色走样、动画走样。消除锯齿现象的技术就是抗锯齿,也被称为反走样(Anti- Aliasing,AA)。
抗锯齿就是通过一些手段来重构丢失的信号。我们通常用的抗锯齿算法实际上是降低锯齿,并非消除锯齿。
抗锯齿算法
- MSAA(Multi-Sample Anti-Aliasing),通过判断一个像素内不同位置的点是否在三角形内来确定该像素的最终颜色;
- FXAA(Fast Approximate Anti-Aliasing),是一种图像后期处理,通过一些图像匹配算法找到有锯齿的边界,之后换成没有锯齿的边界,速度非常快;
- TAA(Temporal Anti-Aliasing),基于图像前几帧的数据对图像进行抗锯齿处理,将样本分布在了时间上,并且在当前帧没有引入额外操作,缺点是对于运动的物体会出现“鬼影”现象。
多采样反走样(MSAA)
MSAA的原理很简单,在每一个像素内进行多重采样并判断采样点是否在三角形内,然后对判断的结果进行平均,从而得到了改像素的颜色。