中EN
概念页

抗锯齿

Antialiasing

渲染本质上是采样,采样频率不足就会混叠(锯齿、闪烁的"萤火虫"、车轮倒转)。屏幕空间抗锯齿在每个像素取多个样本并加权求和:超采样最直接但最贵,MSAA 每像素只着色一次,时间抗锯齿 (TAA) 把样本分散到多帧,形态学方法 (FXAA/SMAA) 作为后处理重建边缘。没有一种方法在所有方面最好。

采样与滤波理论

  • 采样定理:采样频率必须大于信号最高频率的两倍(奈奎斯特极限),且信号必须是带限的。
  • 用点采样渲染三维场景几乎从不带限:三角形边缘、阴影边界产生无限高频,足够小的物体可能完全采样不到。所以点采样无法完全避免混叠。纹理是例外:可以算出纹理频率与像素采样率之比,过高时预先带限(6.2.2 节)。
  • 重建滤波器面积必须为 1:盒式(最近邻,最差,阶梯状)、帐篷(线性插值,连续但斜率突变)、sinc(理想低通,但无限宽且有负值,实际罕用)。常用滤波器介于两者之间;不希望有负瓣时用类高斯滤波器。
  • 重采样:放大时直接对重建信号重新采样;缩小时要用 sinc⁡(x/a)\operatorname{sinc}(x/a) 加宽滤波器,相当于先模糊再降分辨率。

通用框架

p(x,y)=∑i=1nwi c(i,x,y)p(x,y)=\sum_{i=1}^{n}w_i\,\mathbf{c}(i,x,y) 每个样本有位置和权重 wiw_i(和为 1),实时系统通常用均匀权重。默认的每像素中心一个样本是 n=1n=1 的特例。

各类方法

方法原理特点
SSAA / FSAA高分辨率渲染再滤波,如 2560×2048 渲染后对 2×2 求平均得 1280×1024简单;每个子样本都要完整着色并存深度,昂贵
累积缓冲同分辨率、更高精度缓冲,多次渲染并偏移半像素每帧重渲染多次,适合不要求性能的高质量出图
MSAA每像素多个位置样本各存颜色和深度,但每个片元只运行一次像素着色器比超采样快;只对几何覆盖多采样
CSAA / EQAA覆盖样本多于存储的颜色/深度数,如 EQAA 2f4x:4 个样本各用 1 位索引 2 组颜色深度省内存;超出容量时样本被标为未知;多数场景很少有像素含 3 个以上差异很大的不透明片元
TAA每帧在投影矩阵上加微小平移改变子像素位置,混合前几帧单帧不加样本,代价低
形态学 (MLAA/FXAA/SMAA)后处理寻找边缘并按估计覆盖率混合邻像素内存和计算开销适中,与管线解耦

MSAA 细节

  • 片元覆盖全部样本时在像素中心着色;只覆盖部分时,质心采样 (centroid) 把着色位置移到被覆盖区域内,避免采到三角形外(如纹理边缘之外),但可能使导数计算错误。
  • resolve:把样本颜色平均成像素颜色,默认用盒式滤波。高动态范围颜色通常要在 resolve 前先做色调映射,否则会有伪影;这较贵,可用近似。
  • 现代 GPU 可用像素/计算着色器访问 MSAA 样本,使用自定义且可跨像素的重建滤波器。Pettineo 发现宽 2–3 像素的三次 smoothstep 和 B 样条滤波器总体最好;更宽的滤波器减少混叠但损失锐度,且更慢。
  • 《Forza Horizon 2》为最高质量选择了 4× MSAA,尽管 EQAA 有性能优势。

时间抗锯齿

  • 通常只混合 2–4 帧。对旧帧做指数衰减权重时,静止场景可能闪烁,所以常对上一帧与当前帧等权平均。
  • 也可用时间采样生成较低分辨率图像再放大;需要大量样本的光照方法可以每帧少采样,靠多帧混合。
  • 问题:快速移动的物体或镜头会产生鬼影(拖尾)。对策:只对慢速物体做 TAA;或用重投影——物体把运动向量写入速度缓冲,用它找到上一帧对应位置的颜色,丢弃不太可能属于同一表面的样本(见时间重投影)。
  • 延迟着色与 MSAA 不兼容,这是 TAA 被广泛采用的原因之一。
  • NVIDIA 的 TXAA、MFAA 结合了更好的重建滤波器和 TAA;也有 TAA 结合可变采样和眼动补偿用于 VR。

采样模式

  • 人眼对接近水平、竖直的边缘锯齿最敏感,其次是 45°。
  • 旋转网格 (RGSS):四个样本在 4×4 子网格中各占一行一列(N-rooks 的一种),比规则 2×2 网格对近水平/竖直边能表现更多灰阶。但 N-rooks 本身不够:样本全在对角线上时对平行于对角线的边很差。
  • 好的模式要避免样本聚集、分布均匀:分层采样结合抖动、Halton 序列、泊松圆盘。GPU 厂商通常把 MSAA 模式固化在硬件里;TAA 的模式可每帧自由设定,Karis 发现简单的 Halton 序列优于任何 GPU 提供的 MSAA 模式。
  • 规则网格遇到细小重复图案会产生摩尔纹;随机采样把重复的混叠变成人眼更能容忍的噪声;每像素不同的模式(交错采样)效果更好。
  • Quincunx:四个角样本与相邻像素共享、中心样本权重 1/2,平均每像素只需两个样本,近似帐篷滤波,比两样本 FSAA 好得多。也可用于 TAA:每帧交替偏移半像素。
  • FLIPQUAD:把 RGSS 样本移到像素边缘并让相邻像素镜像,两样本达到接近 RGSS(四样本)的质量;Drobot 测试五种两样本 TAA 模式时它最好。

形态学抗锯齿

  • 依赖深度、法线等额外缓冲的方法(SRAA)或由渲染器提供边缘位置的解析方法(GBAA、DEAA)效果更好,但只处理几何边缘。只用颜色的方法还能处理阴影、高光和后处理产生的边缘。
  • 边缘估计可以给出比样本计数更多的混合层级:4 样本只有 5 级。
  • 失败情况:颜色差低于阈值时检测不到边;三个以上表面重叠的像素难以解释;高对比高频内容容易漏边;文字质量通常会下降;拐角可能被圆化;曲线受"边是直的"假设影响;单像素变化可能导致帧间跳变。
  • 只能用已有信息:比像素细的电线、绳子在没覆盖像素中心的地方会断开,只有多采样能解决。执行时间随内容变化,草地可能是天空的 3 倍。
  • 最流行的是 FXAA 和 SMAA(都有免费源码),SMAA 还能访问 MSAA 样本;开销一般为每帧 1–2 ms,"因为游戏愿意花的就是这么多"。两者都可结合 TAA。

其他手段

  • 让阴影更软、高光更平滑以减少混叠;把电线等物体加粗到保证每处至少覆盖一个像素。
  • 保守光栅化和 ROV 为解析式边缘抗锯齿提供了新可能。

PBRT 的视角:像素滤波的两种估计方式(PBRT 4e 5.4.3)

像素值定义为滤波后的图像函数 rf(x,y)=∫f(x−x′,y−y′) r(x′,y′) dx′dy′r_f(x,y)=\int f(x-x',y-y')\,r(x',y')\,dx'dy'(式 5.10,ff 积分为 1),用点样本估计 1n∑if(x−xi,y−yi) r(xi,yi)/p(xi,yi)\frac1n\sum_i f(x-x_i,y-y_i)\,r(x_i,y_i)/p(x_i,y_i)(式 5.11)。

均匀采样 + 溅射(pbrt 前三版)滤波器重要性采样(pbrt-v4)
做法在整张图上均匀取样,每个样本按 ff 的权重贡献给滤波半径内的多个像素:An∑if r\frac An\sum_i f\,r(式 5.12)每个像素独立地按 ∣f∣\lvert f\rvert 的分布在自身周围取样,样本只属于一个像素
优点一个样本的计算惠及多个像素不破坏采样器在像素内精心安排的样本结构;不同线程永远不会写同一像素;方差尖峰只污染一个像素,更容易修
缺点即使图像是常数,∑f\sum f 也只在期望上等于 1,会产生噪声;混入邻近像素的样本会破坏样本结构滤波器有负瓣时符号项同样带来方差
两种方式最终都用加权重要性采样估计器 rf≈∑iwiri/∑iwir_f\approx\sum_i w_i r_i/\sum_i w_i,w=f/pw=f/p(式 5.13),用少量偏差换取消除上述方差。滤波器本身的设计在第 8 章讨论。这与上文的实时做法不同:MSAA 和 TAA 的 resolve 通常是固定的盒式或少量抽头滤波,而不是按滤波器分布放置样本。

GEA 的视角:抗锯齿方法速览(卷 II 11.3.13)

GEA 把锯齿归因于用离散传感器网格去采样本来连续的二维光信号;几乎所有抗锯齿方法的效果都是把三角形边缘与周围像素混合"软化"(卷 II 11.3.13)。书中逐个介绍:

方法GEA 的描述代价与评价
FSAA / SSAA渲染到比屏幕大的缓冲再降采样;4× 时宽高各两倍显存 4 倍、像素着色 4 倍,"实际中很少用"
MSAA覆盖测试和深度测试在每像素 N 个子样本上做(N 常为 2、4、5、8、16),像素着色器每像素只跑一次,颜色只写入被覆盖的子样本槽;深度、模板、颜色缓冲都是 N 倍大,最后对 N 个槽求平均降采样着色开销与不抗锯齿相同;与 FSAA 显存相同但带宽少得多
CSAANVIDIA 对 MSAA 的优化:4× CSAA 只跑一次像素着色器,深度测试和颜色存储用 4 个子样本,覆盖测试却用 16 个"覆盖子样本"边缘接近 8× 或 16× MSAA,代价是 4× MSAA
MLAA / FXAA正常分辨率渲染后扫描找阶梯图案再模糊;FXAA 是 NVIDIA 的类似优化技术只处理最严重的区域
SMAA结合形态学方法与多重/超采样策略,得到更准确的亚像素特征与 FXAA 一样便宜但更不模糊,作者认为"可以说是当今最好的 AA 方案"
TAA每帧每像素只采样一次,但采样位置在像素内抖动(随机或按预定图案),混合多帧质量可比超采样,但容易鬼影和模糊
DLSSNVIDIA 深度学习超采样:每帧渲染较低分辨率,生成式神经网络"补全"出看似高分辨率的图像,像 TAA 一样利用之前的帧大幅减少单帧高分辨率渲染时间,也可用于生成抗锯齿图像
PSSRPS5 Pro 的机器学习放大技术,与 DLSS 类似图像比 DLSS 略软

与本页 RTR4 内容的关系:

  • MSAA 的三步分解(覆盖测试、深度测试、像素着色)与本页「MSAA 细节」一致;GEA 补充了 N 倍缓冲的"槽"模型,并借 Alvy Ray Smith 的《A Pixel Is Not A Little Square》强调光栅化是对连续信号的采样(见 光栅化)。
  • CSAA 的参数与本页表中 CSAA/EQAA 的描述角度不同但不矛盾。
  • 原书问题(11.3.13.3):NVIDIA 没有"4× CSAA"这个模式。CSAA 按覆盖样本数命名:16x CSAA 才是"4 个颜色/深度/模板样本 + 16 个覆盖样本",8x CSAA 是 4 + 8,8xQ、16xQ 用 8 个颜色样本(NVIDIA "Coverage Sampled Antialiasing" 白皮书表 1,GeForce 8800)。GEA 描述的配置对应的是 16x CSAA,其性能与 4× MSAA 相近这一点是对的。
  • GEA 列出的 MSAA 样本数含"5",但 D3D/Vulkan 的标准多重采样数是 2 的幂(1、2、4、8、16);"5 个样本"大概指 NVIDIA Quincunx 这类用 5 个采样点做滤波的 2× 模式,并非 5 倍存储的 MSAA(MS Learn D3D11_STANDARD_MULTISAMPLE_PATTERN;Vulkan VkSampleCountFlagBits)。
  • GEA 称 DLSS 使用"生成式神经网络"。DLSS 2/3 的超分辨率部分是基于运动向量和历史帧的卷积自编码器、DLSS 4 改用 transformer,本质是时域重建/放大;"生成"新帧的是另一个功能(帧生成),不要混为一谈(NVIDIA DLSS 技术说明)。
  • "SMAA 是当今最好的 AA 方案"是 GEA 作者的个人判断;RTR4 没有给出这样的排序。DLSS、PSSR 属于本页 RTR4 部分没有覆盖的新内容。采样理论本身 GEA 留到卷 II 15.2 节再讲。

GEA 的视角:音频中的采样定理(卷 II 15.2、15.3.2)

GEA 第 15 章从音频角度讲了同一套采样理论,可以与本页互相印证:

  • 采样使频谱沿频率轴周期复制;采样率足够高时副本不重叠,用低通滤波器保留原始频谱即可精确重建;采样率太低副本重叠,就是走样(卷 II 15.3.2.1)。本页的"采样频率必须大于信号最高频率两倍"是同一条件。
  • 人耳频带约 20 Hz–20 kHz,所以音频略高于 40 kHz 采样就够;语音带宽窄,电话用 8 kHz(卷 II 15.3.2.1)。图形中的"信号"(几何边缘、高频纹理)通常不是带限的,所以需要本页的预滤波、超采样等手段;音频则可以在采样前用模拟低通把信号带限(这是对比归纳)。
  • D/A 转换后同样要加低通滤波去掉电压阶跃引入的高频,相当于图形中的重建滤波(卷 II 15.3.2.2)。
  • 术语差异:本页称两倍条件为"奈奎斯特极限";GEA 把满足定理的最低采样频率叫"奈奎斯特频率",而常见用法中"奈奎斯特频率"指采样率的一半,见 数字音频技术。

卷积、傅里叶变换和滤波器的数学见 信号与线性时不变系统。

PBRT 的视角:离线渲染器的采样理论与像素重建滤波(PBRT 4e 第 8 章)

上文 RTR4 讲实时抗锯齿(MSAA、TAA、形态学),本节从离线光线追踪器的角度补充:像素值怎样从连续的图像函数得到,以及重建滤波器怎样选。

理想采样与重建(8.1.1–8.1.3)

  • 采样等于乘以冲激串(shah)ШT(x)=T∑iδ(x−iT)\text{Ш}_T(x)=T\sum_i\delta(x-iT);其频谱是周期为 1/T1/T 的冲激串,所以采样后的频谱是原频谱每隔 1/T1/T 复制一份。样本越稀,频谱副本越密,重叠就产生走样:高频冒充低频。
  • 理想重建是在频域用盒函数只保留中央副本,即在空域与 sinc 卷积。sinc 无限宽,而且对走样了的样本会产生 Gibbs 振铃;盒式重建在频域相当于乘 sinc,既切不干净中央副本,又混入其他副本的高频。
  • 不带限的信号无论采样多密都会走样;任何含不连续的函数(几何边缘、硬阴影边界)都不是带限的。因此只能减轻走样:自适应超采样(难以可靠判断哪里需要加样本)、预滤波(纹理过滤就是这种做法)、以及把走样变成噪声的非均匀采样。
  • 渲染中的走样来源:几何边缘、小于样本间距的小物体(动画中闪烁)、未正确过滤的纹理、细小高光、硬阴影边界(比几何边缘更难检测)。

像素不是小方块(8.1.4)

图像像素是图像函数在离散点上的点采样,没有面积(Alvy Ray Smith 1995);可以先对图像函数做区域滤波再点采样。PBRT 采用 Heckbert(1990)的坐标约定:连续坐标 cc 转离散坐标用 d=⌊c⌋d=\lfloor c\rfloor,反过来用 c=d+12c=d+\tfrac12,于是离散范围 [x0,x1][x_0,x_1] 对应连续范围 [x0,x1+1)[x_0,x_1+1),免去到处加减 12\tfrac12。这和 D3D10 以后"像素中心在半整数"的约定一致(另见 光栅化)。

抖动把走样变成噪声(8.1.6)

用功率谱密度 (PSD) 分析采样模式:好的模式在低频能量小、高频接近常数(蓝噪声)。抖动采样的期望 PSD 在原点有冲激、低频接近 0、高频趋于 1,因此把结构化的走样变成高频噪声,人眼更能接受。白噪声(独立均匀随机)在所有频率能量相同,不能把走样推向高频。各种采样器的比较见 低差异序列。

重建滤波器(8.8)

PBRT 把"重建 + 去除奈奎斯特以上频率"合成一个滤波函数,在每个像素上用加权重要性采样估计(5.4.3,见上文)。滤波器不必积分为 1(估计器自归一化),但要能返回积分值和重要性采样方法 Sample(),返回位置和权重 f/pf/p。

滤波器定义要点采样方式特点
盒式区域内等权精确采样,权重恒为 1几乎最差:高频漏进结果(后走样),正弦信号重建很差
三角(帐篷)斜率 ±1\pm1 的两个线性函数相乘精确(可分离,SampleTent)略好于盒式
高斯(默认)g(x,0,σ)−g(r,0,σ)g(x,0,\sigma)-g(r,0,\sigma),在半径处归零查表 FilterSampler稍模糊,但能掩盖残余走样
Mitchell–Netravali分段三次,参数 b,cb,c,推荐 b+2c=1b+2c=1查表(直接采样要解四次方程)负瓣使边缘锐利,过大则振铃;像素值可能为负,需钳制
Lanczos 窗口 sincsinc⁡(x)⋅sinc⁡(x/τ)\operatorname{sinc}(x)\cdot\operatorname{sinc}(x/\tau)查表振铃比无窗 sinc 少得多,正弦重建很好

FilterSampler 以每单位滤波宽度 32 个样本把滤波器制成表,并且用同一张分段常数表来计算权重,使 f/pf/p 恒为 ±c\pm c,否则权重波动会变成图像方差(书中图 8.50 两点相差 10 倍)。查表下标直接用采样返回的整数坐标,而不是把浮点位置再乘回表大小,因为 (a⊘b)⊗b≠a(a\oslash b)\otimes b\ne a。

自行验证:Mitchell 一维核满足 x=0,1,2x=0,1,2 处 C0C^0、C1C^1 连续,且 ∫−22f=1\int_{-2}^{2}f=1 与 b,cb,c 无关(符号积分)。

与上文的分歧

话题RTR4(上文)PBRT 4e
滤波器归一化重建滤波器面积必须为 1不要求:像素估计器 ∑wiri/∑wi\sum w_ir_i/\sum w_i 自归一化,只需能返回积分
首选滤波器介于帐篷与 sinc 之间,不希望有负瓣时用高斯等默认高斯;Mitchell 最锐利;认为盒式"几乎最差"
采样模式Karis 发现 Halton 优于 GPU 内置 MSAA 模式(用于 TAA 抖动)未加扰的 Halton 在图像平面上会产生结构化误差(书中图 8.30),推荐 Owen 加扰或 ZSobol 蓝噪声
术语两倍条件称"奈奎斯特极限",与 GEA 的"奈奎斯特频率"不同(见上文)把"最低采样频率"(>2ω0>2\omega_0)称为 Nyquist frequency,与 GEA 一致,而与常见用法(采样率的一半)不同

原书问题(8.1 节,已解码网页 SVG 并数值验证;2026-10-13 按书中自己的傅里叶约定(常规频率 e−i2πωxe^{-i2\pi\omega x})与 sinc 定义(sin⁡(πx)/(πx)\sin(\pi x)/(\pi x))逐条复核,均成立,无撤回)

  • 式 (8.7) 抖动采样的 PSD:书中为 1−sinc⁡2(Tω/2)+δ(ω)1-\operatorname{sinc}^2(T\omega/2)+\delta(\omega),其中 sinc 按表 8.1 定义为 sin⁡(πx)/(πx)\sin(\pi x)/(\pi x)。用 400 组、每组 4000 个抖动点做蒙特卡洛估计(T=1T=1),ω=0.25,0.5,0.75\omega=0.25,0.5,0.75 处测得 0.188、0.619、0.945,与 1−sinc⁡2(Tω)1-\operatorname{sinc}^2(T\omega) 的 0.189、0.595、0.910 吻合,而书中公式给出 0.05、0.189、0.385。正确形式应为 1−sinc⁡2(Tω)+δ(ω)1-\operatorname{sinc}^2(T\omega)+\delta(\omega)。理论推导:抖动偏移 ξ∈[0,1)\xi\in[0,1) 的特征函数模为 ∣sinc⁡(Tω)∣|\operatorname{sinc}(T\omega)|。
  • 式 (8.6) 抖动采样函数:∑iδ(x−(i+12−ξ)T)\sum_i\delta(x-(i+\tfrac12-\xi)T) 中只有一个随机数 ξ\xi(SVG 中为空下标的 ξ\xi),这样只是把整个规则网格平移一次,不是抖动。应为每个样本各自的 ξi\xi_i。
  • 式 (8.5) 理想重建:书中为 f~(x)=∑isinc⁡(x−Ti)f(Ti)\tilde f(x)=\sum_i\operatorname{sinc}(x-Ti)f(Ti),前面又定义 sinc⁡T(x)=sinc⁡(Tx)\operatorname{sinc}_T(x)=\operatorname{sinc}(Tx)。只有 T=1T=1 时才对;一般间距 TT 下应为 ∑isinc⁡ ⁣((x−Ti)/T)f(Ti)\sum_i\operatorname{sinc}\!\big((x-Ti)/T\big)f(Ti)。复核数值:T=0.5T=0.5、f=cos⁡(2π⋅0.3x)f=\cos(2\pi\cdot0.3x)(带限,满足采样定理)、x=0.37x=0.37 时真值 0.76649,书中公式得 1.53296(恰为 1/T1/T 倍),修正式得 0.76649。
  • 表 8.1 冲激串的变换对:书中写 F{ШT}=Ш1/T(ω)=1T∑iδ(ω−i/T)\mathcal F\{\text{Ш}_T\}=\text{Ш}_{1/T}(\omega)=\frac1T\sum_i\delta(\omega-i/T)。按书中自己的定义 ШT=T∑iδ(x−Ti)\text{Ш}_T=T\sum_i\delta(x-Ti),由泊松求和公式应得 ∑iδ(ω−i/T)\sum_i\delta(\omega-i/T),即 T⋅Ш1/TT\cdot\text{Ш}_{1/T},差一个常数因子 TT(数值验证:T=0.7T=0.7 时 T∑ng(nT)=∑kG(k/T)=1.00329T\sum_n g(nT)=\sum_k G(k/T)=1.00329,gg 为高斯)。"周期互为倒数"的结论不受影响。
  • 预滤波核 f⊗sinc⁡(2ωsx)f\otimes\operatorname{sinc}(2\omega_sx):本节 ωs\omega_s 是采样频率,截止在 ωs/2\omega_s/2 的理想低通核是 ωssinc⁡(ωsx)\omega_s\operatorname{sinc}(\omega_sx);sinc⁡(2ωsx)\operatorname{sinc}(2\omega_sx) 的截止频率是 ωs\omega_s,与本节定义不一致。按书中自己的约定(式 8.1 F(ω)=∫f(x)e−i2πωxdxF(\omega)=\int f(x)e^{-i2\pi\omega x}dx、表 8.1 sinc⁡(x)=sin⁡(πx)/(πx)\operatorname{sinc}(x)=\sin(\pi x)/(\pi x))有 F{sinc⁡(ax)}=1∣a∣Π(ω/a)\mathcal F\{\operatorname{sinc}(ax)\}=\frac1{|a|}\Pi(\omega/a),通带为 ∣ω∣<a/2|\omega|<a/2,所以 sinc⁡(2ωsx)\operatorname{sinc}(2\omega_sx) 的通带是 ∣ω∣<ωs|\omega|<\omega_s,是奈奎斯特频率 ωs/2\omega_s/2 的两倍。但书中说的"奈奎斯特极限"指的是两倍条件,用词有歧义,因此仍记为存疑。
  • 8.8.5 高斯积分:书中 ∫g(x,μ,σ) dx=12erf⁡ ⁣(μ−x2σ)\int g(x,\mu,\sigma)\,dx=\tfrac12\operatorname{erf}\!\big(\frac{\mu-x}{\sqrt2\sigma}\big),对其求导得 −g-g,符号相反;应为 12erf⁡ ⁣(x−μ2σ)+C\tfrac12\operatorname{erf}\!\big(\frac{x-\mu}{\sqrt2\sigma}\big)+C(符号计算验证)。
  • 8.1.6 "乘积的 PSD 等于 PSD 的卷积"(2026-10-13 审读新增):书中写 Pfg=Pf⊗Pg\mathcal P_{fg}=\mathcal P_f\otimes\mathcal P_g,并说它"直接由式 (8.3) 得出"。式 (8.3) 给出的是 F{fg}=F⊗G\mathcal F\{fg\}=F\otimes G,取模平方后 ∣F⊗G∣2|F\otimes G|^2 一般不等于 ∣F∣2⊗∣G∣2|F|^2\otimes|G|^2,因为相位被丢掉了。反例([0,1)[0,1) 上的傅里叶级数):f=g=cos⁡2πxf=g=\cos 2\pi x,f±1=12f_{\pm1}=\tfrac12,Pf(±1)=14\mathcal P_f(\pm1)=\tfrac14;fg=12+12cos⁡4πxfg=\tfrac12+\tfrac12\cos4\pi x,Pfg(0)=14\mathcal P_{fg}(0)=\tfrac14,而 (Pf⊗Pg)(0)=2⋅14⋅14=18(\mathcal P_f\otimes\mathcal P_g)(0)=2\cdot\tfrac14\cdot\tfrac14=\tfrac18。用 PSD 卷积描述采样后的频谱,只在对随机采样模式取期望时近似成立,不是确定性恒等式。
  • 以上各条在 pbr-book-website 与 pbrt-v4 的 issue 中均未找到。
  1. realtime_rendering_4ed.pdf 第 5 章 Shading Basics
  2. Game_Engine_Architecture_4th_Edtion_Volume_2_-_Jason_Gregory.pdf
  3. Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 11 章 11.3.13 节
  4. Jason Gregory《Game Engine Architecture》第 4 版(2026)卷 II 第 15 章 15.2、15.3.2 节
  5. PBRT 4e source excerpt: chapter 05 (Cameras and Film)
  6. Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 5 章 5.4.3 节,pbr-book.org/4ed/Cameras_and_Film
  7. PBRT 4e source excerpt: chapter 08 (Sampling and Reconstruction)
  8. Pharr, Jakob, Humphreys《Physically Based Rendering: From Theory to Implementation》第 4 版(MIT Press, 2023)第 8 章 8.1、8.8 节,pbr-book.org/4ed/Sampling_and_Reconstruction

相关页面

图形学光栅化Rasterization光栅化(也叫扫描转换)把屏幕空间里带深度和着色数据的顶点,转换成三角形覆盖的像素(片元),交给像素处理阶段。它是几何处理和像素处理之间的同步点:三个顶点在这里组成三角形。图形学像素着色器Pixel Shader像素着色器(OpenGL 里叫片元着色器)对光栅化产生的每个片元运行,用插值后的顶点数据算出颜色,也可以输出不透明度、修改深度或直接丢弃片元。多渲染目标让它一次输出多组数据,催生了延迟着色。它通常只能写自己所在的像素,但能通过 2×2 quad 拿到相邻像素的导数。图形学时间重投影Temporal Reprojection重投影是在新的视点和朝向下复用前几帧已计算的样本。目的一是利用时间相干把渲染开销摊到多帧(与时间抗锯齿相关),二是当前帧来不及完成时快速生成近似帧(对 VR 防止晕动尤其重要)。分为反向重投影(从上一帧收集)和正向重投影(把上一帧散布到当前帧)(RTR4 12.2 节)。图形学合并阶段与帧缓冲Merging & Framebuffer合并阶段把像素着色算出的片元颜色和缓冲区里已有的颜色结合起来,同时负责深度测试、模板测试和混合。它通常不可编程但高度可配置,也叫 ROP(光栅操作或渲染输出单元)。帧缓冲是系统中所有缓冲区的总称。图形学显示编码与 sRGBDisplay Encoding & sRGB光照、纹理等计算假设数值是线性的,但显示缓冲和纹理使用非线性编码。简短的回答是:着色器输出 [0,1] 的颜色要取 1/2.2 次幂(gamma 校正),读入的纹理和颜色做相反的变换,多数情况下可以让 GPU 自动完成。忽略它会导致画面偏暗、色相偏移、光照叠加错误和抗锯齿边缘"绳索化"。图形学图像空间边缘检测Image-Space Edge Detection不碰场景几何,只对渲染出的深度、法线、物体 ID 等缓冲(G-buffer)做图像处理来找出描边位置,再用形态学算子加粗、与着色结果合成。它对任何表面都适用、不要求网格连通,是游戏中最常见的描边方式之一;缺点是边的判定需要按内容调参,可能漏检或误检。图形学文本渲染Text Rendering文本中一个像素的变化就可能把 "l" 变成 "1",因此字形渲染格外讲究。主要路线有:按字号预生成字形位图纹理(配合微调和子像素渲染)、有符号距离场纹理(可在三维表面任意缩放旋转)、以及在 GPU 上直接求值字形曲线。图形学延迟着色Deferred Shading延迟着色先用一遍几何 pass 把所有可见表面的材质参数写入多张渲染目标(G-buffer),再以后处理方式对这些存储值逐光源计算光照,从而把"几何可见性"与"光照"彻底解耦,并把材质与光源分离。它避免了着色的过度绘制、简化了着色器管理、天然适合贴花,但 G-buffer 占用显存和带宽,且难以直接支持透明和 MSAA。本页也覆盖前向渲染下限制光源影响范围的基础手段与"光照预通道 (light prepass)"类混合方案。图形学延迟纹理与可见性缓冲Deferred Texturing & Visibility Buffer延迟着色避免了着色的过度绘制,但生成 G-buffer 时仍有过度绘制:先画的物体读了大量纹理,被后画的物体挡住后这些带宽全部浪费。延迟纹理只用一遍几何 pass、存极少的数据(纹理坐标与切线基,或仅三角形与实例 ID),直到着色时才读纹理。由于 GPU 算力增长快于带宽,让瓶颈落在计算而非缓冲访问被视为面向未来的做法。图形学对象空间与纹理空间着色Object- & Texture-Space Shading对象空间/纹理空间着色把着色计算的频率与几何采样(光栅化)的频率解耦:在物体的参数化(纹理图表)上计算着色并存入纹理,最终光栅化时只查表。思想源自 Pixar 的 Reyes 离线渲染器的微多边形着色。它能消除 quad 过度着色、按屏幕覆盖率控制着色量、在帧间复用着色结果,甚至让着色以低于光栅化的帧率异步运行;代价是物体必须有唯一的 uv 图表、先着色后遮挡带来浪费等。图形学VR 渲染注意事项VR Rendering Considerations在单屏上效果良好的渲染技术,放到随头部移动的双目显示上可能失效甚至引起不适。本页汇总 RTR4 第 21.4 节列出的需要修改或避免的技术:HUD 深度、凹凸与视差贴图、公告板与天空盒、色调映射与屏幕空间效果、镜面高光视差、抗锯齿选择、色带、运动模糊与景深,以及混合现实中的光照匹配。核心原则:严格遵循厂商头部模型和投影矩阵,任何会让两眼图像难以融合或与前庭感觉冲突的效果都要谨慎。游戏开发 · UE5TSR 与抗锯齿方案Temporal Super Resolution & Anti-AliasingUE5 提供四种抗锯齿:时间超分辨率 (Temporal Super Resolution, TSR,默认)、时间抗锯齿上采样 (TAAU)、快速近似抗锯齿 (FXAA) 和仅前向渲染可用的多重采样抗锯齿 (MSAA)。TSR 是与平台无关的时间性上采样器,用低内部分辨率渲染,借助历史帧累积细节输出接近原生的画面,把节省的 GPU 时间留给 Nanite 与 Lumen。图形学纹理过滤与 MipmapTexture Filtering & Mipmap纹理在屏幕上被放大时需要插值,被缩小时一个像素覆盖许多纹素,必须预先滤波才能避免混叠。放大用最近邻、双线性或双三次;缩小的主流方案是 mipmap + 三线性插值,斜视角下用各向异性过滤减少过度模糊。注意:过滤纹理值只在输入与着色结果线性相关时等价于过滤最终颜色。图形学天空盒与固定视点技术Skyboxes & Fixed-View Techniques用图像代替三角形时,渲染代价与像素数而不是顶点数成正比。Lengyel 的"渲染谱系"从纯图像方法一直排到三角形和光线追踪。本页汇总谱系中偏图像一端的技术:限制视点移动的固定视点加速、渐进细化与重光照、天空盒、光场渲染以及精灵与分层(RTR4 13.1–13.5 节)。图形学GPU 架构案例GPU Architecture Case StudiesRTR4 第 23.10 节剖析三种架构:面向移动设备、以能效为先的 sort-middle 分块架构 ARM Mali G71 Bifrost;NVIDIA Pascal(GTX 1080)的 SM/TPC/GPC 层级与介于 sort-middle 和 sort-last fragment 之间的 tiled caching;AMD GCN Vega 的计算单元、异步计算引擎、DSBR 与 HBCC。硬件厂商通过对尚未制造的 GPU 做大量参数化仿真来决定 MP 数量、缓存、光栅引擎、ROP 数等——各种单元数量的原因归根结底是"这样效果最好"。图形学图像处理与后处理Image Processing & Post-Processing后处理是在渲染出图像后再用 GPU 对其做图像处理:把离屏缓冲当纹理,用全屏 pass 让像素着色器(或计算着色器)对每个像素采样邻域并加权求和。核心技巧包括可分离滤波、利用双线性插值减少采样、降采样、以及借助深度/法线保持边缘的(联合)双边滤波(RTR4 12.1 节)。图形学环境光遮蔽Ambient Occlusion环境光遮蔽 (AO) 是余弦加权后半球上未被遮挡的比例,用来在光照缺乏方向变化时仍给出形状线索(缝隙变暗)。它由 Landis 在 ILM 为《珍珠港》开发,可离线烘焙,也可在物体空间或屏幕空间动态计算(SSAO、HBAO、GTAO 等)。AO 适合漫反射和平滑环境光,不适合点光源或小面光源的可见性(RTR4 11.3 节)。图形学运动模糊Motion Blur运动模糊可看作时间域的抗锯齿:快门打开期间物体或相机的相对运动在画面上拖出模糊,没有它快速运动的物体会在帧间"跳跃"。实时做法以速度缓冲为核心,用"边收集边散布"思路:按瓦片求最大速度、扩展到邻域,再沿速度方向对每个像素采样并处理遮挡。游戏中还需考虑玩家控制下的视角,常只对物体或平移做模糊(RTR4 12.5 节)。图形学点云渲染Point Cloud Rendering点渲染用大量互不连接的三维点表示表面,每个点画成有半径的"溅射斑" (splat)。随着激光扫描、LIDAR、深度相机和摄影测量普及,点云数据可达数千亿点,因此几乎所有系统都用层次结构按预算加载和显示,并用不透明溅射、屏幕空间 AO 或眼罩光照 (EDL) 给无法线的点着色(RTR4 13.9 节)。图形学屏幕空间反射Screen-Space Reflections屏幕空间反射 (SSR) 沿反射方向在深度缓冲中步进求交,命中后从颜色缓冲读取入射辐射亮度。由于镜面瓣窄、只需反射方向附近的光,屏幕数据比漫反射情况更可能包含所需信息。它最早由 Sousa 等提出,常作为镜面 GI 的第一层,失败时退回反射探针和全局探针(RTR4 11.6.5 节)。图形学色调映射Tone Mapping色调映射把场景参考的辐射亮度转换为显示参考的辐射亮度,目标不是恒等复现、也不是把所有信息"挤进"显示范围,而是在显示条件下尽量复现观看原场景时的感知印象。它通常是曝光缩放加一条 S 形曲线(全局映射),之后可做调色;最后由显示编码输出到 SDR 或 HDR 显示器。游戏数学信号与线性时不变系统Signals & LTI Systems信号与系统理论是几乎所有数字音频技术的数学基础,也用于图像处理、电子、流体等领域。核心结论是:线性时不变 (LTI) 系统完全由它的冲激响应 h 描述,任意输入的输出等于输入与 h 的卷积;借助傅里叶变换,时域卷积等于频域乘法,滤波器就是在频域里按频率响应 H(\omega) 衰减部分频率(GEA4 卷 II 15.2)。游戏开发数字音频技术Digital Audio Technology游戏音频程序员需要了解从麦克风到扬声器的整条硬件链路:模拟端的换能器、扬声器布局、电平、放大器和音量控制;数字端的脉冲编码调制 (PCM) 采样、香农-奈奎斯特采样定理、位深与量化误差、各种音频格式与编解码器、多声道数据的并行与交错布局,以及数字接口。GEA 用它们说明音频引擎的输入输出到底是什么(GEA4 卷 II 15.3)。游戏数学低差异序列Low-Discrepancy Sequences低差异序列 (low-discrepancy sequences) 是一类确定性的点序列,在 [0,1)^d 中分布得比随机点更均匀(星差异度 O((\log n)^d/n)),用于拟蒙特卡洛 (QMC) 积分和渲染中的采样。常见构造是基于根反演 (radical inverse) 的 van der Corput、Halton、Hammersley,以及基于二进制生成矩阵的 Sobol'。实际渲染中会对它们做随机加扰 (scrambling)(随机数字置换、Owen 加扰),既能估计方差、去掉高维投影中的规则图案,又能提高收敛率。本页以 PBRT 4e 8.5–8.7 节为主。图形学蒙特卡洛积分与重要性采样Monte Carlo Integration & Importance Sampling渲染方程里的半球积分没有闭式解,只能数值积分。蒙特卡洛积分在定义域里随机取样、按概率密度加权求平均,期望值正好等于积分真值,误差随样本数 N 按 1/\sqrt{N} 下降,而且与积分维数无关,所以成了光线追踪类渲染的数学基础。降低误差的主要手段是让采样分布接近被积函数的形状,也就是重要性采样(GEA4 卷 II 12.6.2、12.6.4)。游戏数学光线微分与纹理足迹Ray Differentials & Texture Footprint光线微分 (ray differentials) 给每条相机光线附带两条在图像上偏移一个像素样本的辅助光线,借此估计交点处 \partial p/\partial x、\partial p/\partial y 和纹理坐标对屏幕坐标的导数,也就是纹理采样率(纹理足迹)。这是离线光线追踪器做纹理抗锯齿的基础;本页对应 PBRT 4e 10.1.1–10.1.3 及其延伸阅读,并对照实时光线追踪中的光线锥。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原