反走样技术 (Antialiasing)
别名: 抗锯齿.
走样 (aliasing) 是光栅显示的一种固有性质. 产生的原因是像素本质上的离散性, 因此走样是无法避免的. 走样产生的现象主要有:
- 图形产生锯齿状边缘, 呈"阶梯"状.
- 相对微小的物体容易在静态图形中被丢弃.
- 在动画序列中图像产生闪烁, 时隐时现.
通过"模糊"边界之间的颜色变换, 可以使得锯齿状的边界不那么明显, 看上去更加平滑. 具体的实现有以下两种方法:
- 非加权区域采样方法.
根据覆盖度 (coverage) 计算像素的颜色, 覆盖率指某个像素区域被物体覆盖的比例. 但由于每次只考虑一个像素区域所以效果有限.
- 加权区域采样方法.
影响到多个像素区域, 因此效果更佳.
超采样抗锯齿 (Super-sampled antialiasing, SSAA)
别名: 全屏抗锯齿 (Full-screen antialiasing, FSAA)
把场景渲染至比实际屏幕大的缓冲区中, 再将图像向下采样 (downsample) 至目标分辨率. 在 4x 超采样中, 渲染图像长宽各为 2 倍, 帧缓冲区占 4 倍显存, 需要 4 倍 GPU 性能. 因为 FSAA 过于昂贵, 很少用于实际场合.
多采样抗锯齿 (Multi-sampled antialiasing, MSAA)
能提供近似 FSAA 的效果, 但消耗相对少得多的 GPU 性能 (显存占用一样多).
但是当在三角形数量大于像素数量的场景中该方法可能失效.
- 快速近似抗锯齿 (Fast Approximate Anti-aliasing, FXAA).
- 时间混叠抗锯齿 (Temporal Anti-Aliasing, TXAA).
- 覆盖采样抗锯齿 (coverage sample antialiasing, CSAA).
- 形态学抗锯齿 (Morphological antialiasing, MLAA).
- 深度学习抗锯齿 (Deep Learning Anti-Aliasing, DLAA).