DongGu
反走样方法

反走样方法

反走样

上一篇我们详细探讨了走样现象出现的原因,简单来说就是图像边缘等包含大量高频信息的区域,由于采样率不足导致被错误重建。

由此,我们想到两种反走样的思路:

既然高频信号会导致走样,那我们可以在采样之前对信号进行低通滤波,把高频信息过滤掉——具体到图像上就是把边缘模糊化,然后再进行采样。这种方式称为前滤波(Pre-Filtering)

另一种思路是:不在采样前处理,而是在采样之后用低通滤波器对这些离散的、有锯齿的采样点进行重构,恢复出平滑的视觉效果。这种方式称为后滤波(Post-Filtering)

下面逐一介绍。

前滤波

前滤波是最符合信号处理理论的反走样方法——先低通滤波,再采样。但它在工程实现上非常困难。

原因在于,我们根本拿不到”连续的图像”。

渲染管线中,我们手里只有:

  • 三角形顶点数据
  • 纹理贴图
  • Shader 代码
  • 光照方程

最终的像素颜色是由这些要素综合决定的一个极其复杂的连续函数。对它做低通滤波,意味着要在一个区域内对像素颜色做卷积积分——这个积分在实时渲染中几乎无法精确计算。

代表方法:Mipmapping(纹理预滤波)

Mipmapping

这是图形学里最接近”纯正前滤波”的技术。在游戏运行之前,显卡就把高清纹理预先生成一系列由大到小、逐级模糊的图片(称为 Mipmap 链)。当 3D 物体离镜头很远、在屏幕上只占几个像素时,显卡直接采样已经变模糊的小尺寸 Mipmap,从源头上避免了高频细节导致的闪烁和锯齿。

但 Mipmapping 只能解决纹理的走样问题。对于几何体边缘、动态光影等随视角实时变化的内容,无法预计算,而实时做精确的连续积分在性能上不可行。因此,完美的前滤波在工程上几乎是一条死路,绝大多数实时反走样方案走的都是后滤波路线。

后滤波

后滤波反走样技术主要分为三个流派:

  1. 空间多采样(Spatial Multi-Sampling):在光栅化阶段,通过在单个像素内放置多个子采样点来获取更多的几何/颜色信息,再进行降采样重构。代表方法:SSAA、MSAA。

  2. 后期图像滤波(Post-Process Image Filtering):在 3D 渲染完成后,直接在 2D 颜色缓冲上做边缘检测和颜色混合。代表方法:FXAA、SMAA。

  3. 时域复用 / AI 重建(Temporal & AI):将反走样扩展到时间轴,复用历史帧数据或用神经网络进行细节重建。代表方法:TAA、DLSS / FSR / XeSS。

这里我们重点介绍 SSAA 和 MSAA,它们是理解反走样原理的基础。

SSAA(Super-Sampling Anti-Aliasing,超级采样反走样)

SSAA 的思路非常直接:既然走样是采样率不足导致的,那我们就用更高的分辨率来采样。

SSAA 超级采样

具体做法是:将每个像素再细分成 的子像素,对每个子像素独立进行颜色计算。然后,把 个子像素的颜色取平均值,降采样回原始分辨率——这一步本质上就是低通滤波。

SSAA 的效果是最好的,但代价也最大: 的 SSAA 意味着颜色计算量变为原来的 16 倍,对性能的消耗非常恐怖。

MSAA(Multi-Sample Anti-Aliasing,多重采样反走样)

MSAA 是对 SSAA 的性能优化,核心思想是:在几何覆盖层面过采样,但在颜色计算层面不过采样

具体步骤如下:

第 1 步: 对每个像素进行 的过采样,放置 4 个子采样点。

MSAA 过采样

第 2 步: 判断每个子采样点是否被三角形覆盖。

MSAA 覆盖判断

第 3 步: 标记出位于三角形内部的子采样点。

MSAA 内部点标记

第 4 步: 对覆盖到的子采样点进行颜色平均,根据覆盖率绘制不同的像素颜色。

MSAA 颜色平均

第 5 步: 得到最终的反走样结果。

MSAA 最终结果

SSAA 与 MSAA 的本质区别

两者的关键差异在于颜色计算的方式,我们通过一个具体例子来说明。

假设一个像素被细分为 的 4 个子采样点:

1
2
3
4
5
+---+---+
| 1 | 2 |
+---+---+
| 3 | 4 |
+---+---+

其中点 1、2 位于黑色区域,点 3、4 位于白色区域。

SSAA 会对这 4 个子采样点逐个进行完整的颜色计算。1 和 2 算出来是黑色,3 和 4 算出来是白色,最后降采样取平均:

这个像素最终呈现灰色,正确地反映了几何边缘的半透明过渡。

MSAA 的做法不同:它只记录”哪些子采样点被三角形覆盖了”,颜色计算只做一次(通常取像素中心点)。假设取到的代表颜色是黑色,那么:

MSAA 默认所有被覆盖的子采样点颜色相同,实际上只对几何覆盖信息做了过采样,而没有对颜色做过采样。

这也解释了 MSAA 的局限性:它在几何边缘上效果不错,但对于纹理内部的细节变化、Shader 产生的高频效果等不涉及几何边缘的走样,MSAA 是无力处理的。因此现代引擎中 MSAA 经常需要配合其他技术一起使用。

对比总结

反走样的本质是用”模糊”换”平滑”

  • 前滤波在采样前模糊,理论最优但工程上几乎不可行,Mipmapping 是其唯一成功的规模化应用。
  • 后滤波在采样后重构,是实时渲染的主流方案:
    • SSAA:效果最好、性能最差,是理解反走样的理论基准。
    • MSAA:在几何层面过采样,是性价比最高的硬件反走样方案。
    • FXAA / SMAA:在 2D 图像层面做边缘平滑,速度快但可能损失细节。
    • TAA / DLSS / FSR:利用时域信息和 AI 进一步突破画质瓶颈,是当前的主流方向。

这次的插图来自画师 Elop

图片地址:https://www.pixiv.net/artworks/1330151130

本文作者:DongGu
本文链接:https://donggu.xyz/2026/05/21/图形学入门/反走样方法/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可