Area ReSTIR: Resampling for Real-Time Defocus and Antialiasing
University of Utah; NVIDIA
一句话总结
把 ReSTIR 的样本复用从”像素中心的一个固定点”扩展到”像素在胶片与镜头上的 4D 光线空间区域”,用面积蓄水池(area reservoirs)配合子像素级时序复用与新的移位映射,在每像素只着色一个样本的前提下实时渲染出高质量的抗锯齿与景深效果。
研究背景
ReSTIR(时空蓄水池重采样)近年成为实时渲染的利器:它用带权蓄水池采样在流式计算中聚合空间与时间上的邻居样本,等效样本数可达朴素独立采样的百倍,已被用于多光源、漫反射全局光照乃至更一般的光线路径。
但这些算法有一个隐含假设:和光栅化一样,它们默认针孔相机,并且只在每个像素的一个预先确定的子像素位置(通常是像素中心)评估到达该像素的光。这带来两个问题:
- 锯齿。只在像素中心点采样等价于使用 delta 函数作为像素滤波器,图像天然带锯齿,需要后处理才能消除。
- 高频细节下复用失效。在毛发、树叶、法线贴图等含高频子像素细节的区域,一旦随机化子像素位置,被复用路径的首次命中点(primary hit)就会强制改变,导致法线与遮挡关系变化,使得从邻居借来的后续路径顶点变得不兼容,复用质量急剧下降。
作者的洞察是:ReSTIR PT 本就能在复杂的高维路径空间上做积分估计,那么”多加几个维度”——子像素坐标 \((u,v)\) 与镜头光圈坐标 \((s,t)\)——应该也是可行的。于是问题从”求解某一子像素位置的渲染方程”转变为”求解在像素滤波器与相机参数上积分的测量方程”。
核心方法
从测量方程出发
像素强度由测量方程给出,即对所有连接光源到传感器的路径积分。作者把首次命中 \(x_1\) 用像平面位置 \(u\) 重参数化,并进一步把镜头坐标 \(s\) 也纳入积分域,得到 Area ReSTIR 要估计的目标:
\[I_j = \int_{U\times S\times \hat{\Omega}} h_j(u)\, f(u, s, \hat{x})\, d(u, s, \hat{x})\]
其中 \(h_j(u)\) 是像素滤波器,\(f\) 是路径贡献函数,\(\hat{x}=x_2 x_3\cdots\) 是首次命中之后的路径。理想目标函数取 \(\hat{p}(u,s,\hat{x}) = h_j(u) f(u,s,\hat{x})\),Area ReSTIR 通过移位映射在时空上复用三元组 \((u,s,\hat{x})\)。反直觉的是,去估计一个更高维的积分反而在给定采样率下提升了质量——因为更有效的复用让更少的像素被迫丢弃历史、重新开始聚合,从而降低噪声。
面积蓄水池(Area Reservoirs)
传统”点蓄水池”覆盖单一点背后的路径空间 \(\{u_j\}\times\hat{\Omega}\);Area ReSTIR 的面积蓄水池覆盖一块屏幕区域及其背后的路径空间 \(\mathrm{supp}(h_j)\times\hat{\Omega}\)。关键区别在于:面积蓄水池不再绑定像素中心、不再要求整数坐标,而是显式存储镜头样本 \(s\) 与相对蓄水池边界的分数子像素位置 \(u\)(都存在 \([0,1)\) 区间以保证数值稳定)。初始候选按像素滤波器采样 \(u\)、在镜头上均匀采样 \(s\),其余顶点由路径追踪产生,之后 ReSTIR 的复用会迅速改善这个子像素分布。
分数匹配与子像素时序复用
以往方法用整数反投影,即投影到上一帧最近的离散像素,这在小的子像素偏移会剧烈改变路径贡献时非常脆弱。Area ReSTIR 改用分数反投影:把当前滤波器 \(h_{j_1}\) 的足迹按运动向量 \(\delta\)(可为分数)反投影到上一帧,它通常覆盖 \(2\times 2\) 个先前像素。
对于静态场景、运动相机的简化情形,如果当前帧像素 \(j_1\) 恰好对应上一帧的离网格像素 \(j_0 = j_1+\delta\),则定义时序移位 \(T(u,s,\hat{x}) = (u-\delta, s, \hat{x})\),同一几何路径在两帧的目标函数比值恰为 1,复用方差极低:
\[\frac{\hat{p}_1(T(u_0,s_0,\hat{x}_0))}{\hat{p}_0(u_0,s_0,\hat{x}_0)} = \frac{f_0((u_0-\delta)+\delta, s_0, \hat{x}_0)}{f_0(u_0,s_0,\hat{x}_0)} = 1\]
而传统点蓄水池由于必须四舍五入到整数像素,比值会因 \(f_0\) 对子像素细节敏感而剧烈波动——这正解释了为何以往 ReSTIR 即便不抖动也对视觉高频敏感。
作者给出两种时序复用方案:
- 快速版:直接使用落在反投影滤波器 \(h_{j_1+\delta}\) 内的先前样本,用恒等移位复用,落在外面的样本视为无效。MIS 权重取支撑集示性函数,天然满足单位分解、保证无偏。缺点是若 \(2\times 2\) 样本都在滤波器之外,会返回空样本,运动中随机重置时序历史。
- 鲁棒版:把落在滤波器外的样本通过一像素移位(水平/垂直/对角)搬回滤波器范围内,保证四个邻居样本都能贡献;用广义平衡启发式(generalized balance heuristic)计算 MIS 权重。只要有一个移位成功,当前像素就能继承该像素的历史,避免时序历史被重置。
选定先前样本后,减去运动向量 \(\delta\) 移位回当前帧,再用 GRIS 与当前帧的规范样本(每帧每像素新射出的独立路径)组合。
一般像素滤波器
对于非盒式滤波器(要求支撑集为包含像素的矩形),先前蓄水池的贡献不再互不相交,需要用双线性插值权重 \(\beta_k\) 重写 MIS 权重:
\[m_k(y) = \frac{\beta_k\, h_k(y)}{\sum_{k'=1}^{4} \beta_{k'}\, h_{k'}(y)}\]
盒式滤波器是其特例。这让 Area ReSTIR 无需核喷溅(kernel splatting)即可直接支持高级滤波器,更大的滤波器足迹还能提升时序复用质量。
景深与新移位映射
对非针孔相机,还必须移位镜头位置 \(s\)(等价于相机顶点 \(x_0\))。作者提出两种移位:
- 镜头顶点拷贝(lens vertex copy):直接复用镜头坐标 \(s\),雅可比为 1,适合小光圈与对焦区域。
- 首次命中重连(primary hit reconnection):针对大光圈的散景。大光圈会把亮点扩散成大片弥散圆(bokeh),此时若固定复用相机顶点 \(x_0\),邻居像素的首次命中 \(x_1\) 必然不同,导致散景内复用失效。新移位改为复用顶点 \(x_1\):把 \(x_1\) 穿过焦平面上的采样位置 \(u'\) 反投影回镜头,得到新的镜头位置 \(x_0'\) 并计算对应的 \(s'\)。若 \(x_0'\) 落在光圈外或射线 \(x_1\to x_0'\) 被遮挡,则移位失效。
两种移位各有所长,作者用 MIS 组合,并引入一个基于弥散圆直径 \(r\)(以像素计)的经验置信度缩放因子 \(\gamma\):
\[\gamma(r) = \min\!\left(1.0,\; 0.2 + \frac{6.2}{r - 5.6}\right)\]
\(\gamma=1\) 时强制选镜头顶点拷贝(针孔或对焦区域),\(\gamma=0\) 时选首次命中重连。作者发现质量对 \(\gamma\) 具体取值不敏感,该启发式在 720p 到 2160p、各种光圈下都工作良好。
技术细节
- 实现基础:原型基于 NVIDIA Falcor 框架,既在 Bitterli 等人的直接光照 ReSTIR DI 上构建,也适配了 Lin 等人的 ReSTIR PT,以验证方法的通用性。由于 Area ReSTIR 只影响镜头与首次命中点,改造相对直接。
- G-Buffer:由于镜头与子像素样本独立,无法依赖光栅化的 G-buffer;但为避免重追踪仍缓存首次命中,并存储运动向量与深度。作者弃用了原 ReSTIR 基于深度/法线的邻居剔除启发式(配合成对 MIS 后效果不明显,且与景深不兼容)。
- 可见性优化:移位样本需要额外的可见性测试以保证 MIS 权重正确、避免偏差。鲁棒时序复用朴素实现每像素需 12 条额外主光线;但由于像素只有 8 个邻居,改用 scatter 方式对邻居蓄水池样本穷举可见性,只需 8 条主光线(与阴影光线),且这 8 条邻居光线高度相干,合并追踪后比朴素实现快 40–60%。
- 空间复用:与以往工作一样在整数距离的屏幕邻域随机采样邻居(不用分数运动向量),但空间移位也能映射镜头坐标,从而改善景深下的空间复用;四个空间邻居按 \(\gamma:1-\gamma\) 分成两组分别使用一种移位,且始终至少一个用镜头顶点拷贝。
实验结果
测试平台为 RTX 4090 + Ryzen 9 7950X,分辨率 1920×1080,误差用 MAPE 度量。所有 ReSTIR 变体都只着色每像素一个路径,Area ReSTIR 与基线使用相同的独立样本数与空间邻居数。
| 场景 / 实验 | 对比设置 | 主要结论 |
|---|---|---|
| Franck 毛发(图 1) | Path tracing / ReSTIR PT / Area ReSTIR | 在含复杂毛发的高频区域大幅复用更多路径,逼近收敛参考,每像素仅 1 样本 |
| Contemporary Bathroom(图 2) | ReSTIR PT vs Area ReSTIR | 在含复杂几何、镜面、边缘不连续的散焦区域显著提升可复用样本数 |
| Emerald Square(图 7) | 小光圈 vs 大光圈 | 首次命中重连移位在大小光圈下都优于基线复用 |
| Franck / Sheep Sweater(图 8) | 像素中心 / 抖动 / Area ReSTIR | 消除锯齿的同时在毛发、织物等高频区域给出更高质量抗锯齿 |
| Carousel(图 9) | 镜头顶点拷贝 / 首次命中重连 / MIS | 前者利于对焦区、后者利于散景,MIS 组合后处处质量良好 |
| Bistro(图 10) | 整数运动 / 快速复用 / 鲁棒复用 | 分数运动向量显著改善边缘复用,鲁棒复用质量最佳(代价是性能) |
| Zero Day(图 11) | 时序 / 空间 / 时空 | 时空联合复用远优于单独任一者,尤其在强景深下 |
| Bistro Interior(图 12) | ReSTIR PT vs Area ReSTIR | 对 L(S)DSE、L(D)S+E 等复杂镜面路径复用更稳定,难去噪路径采样更好 |
| Zero Day(图 13) | 盒式 vs 高斯滤波器 | 更大滤波器支撑改善复用质量 |
可见性 MIS 带来的开销在多数场景约 4–5 ms(Emerald Square 因大散景不相干主光线达 11 ms),这也是快速版到鲁棒版性能差异的主要来源。在 Crown(针孔相机、纯抗锯齿)场景中,快速版因常找不到反投影滤波器内的先前样本,在大面积易采样区域总误差反高于基线,但少数高频区域采样更好。
贡献与局限
贡献:
- 首次把 ReSTIR 应用于测量方程,显式对像素足迹与景深做重要性采样。
- 提出子像素级时序复用:用非整数运动向量重投影,从多个部分重叠的先前蓄水池中取样。
- 在高频几何/法线像素上鲁棒化时序复用(快速版与鲁棒版两套方案)。
- 提出针对景深散景的首次命中重连移位映射及配套 MIS 权重与置信度缩放启发式。
- 无需核喷溅即可直接支持非盒式高级像素滤波器,可进一步改善时序复用。
局限:
- 尚未支持运动模糊(原理上可再加一维,但与光线加速结构的交互复杂,留作未来工作)。
- 与多数工作一样只重采样标量目标函数,不对 RGB 通道差异做重要性采样,多彩光源场景(如 Bistro)会出现彩色噪声。
- 假设像素在帧间只做平移,缩放或复杂运动时会漏掉相关样本,复用质量受限。
- 面积采样只用于时序复用;空间邻居的 1×1 盒式滤波器域不重叠,大滤波器下才可能受益,但这类滤波器实时代价通常过高。
延伸思考
这项工作的核心价值在于点明了一个反直觉但重要的观点:维度诅咒虽然真实存在,但如果提升维度能换来更有效的样本复用,那么在更高维空间积分反而是划算的。Area ReSTIR 把”复用点”升级为”复用区域”,本质上是让 ReSTIR 的重采样理论去正面处理像素滤波与相机光学这两个此前被隐式回避的积分维度。它给实时路径追踪补齐了抗锯齿与景深这两块长期依赖后处理近似的能力,且保持每像素单样本着色。沿着”扩展复用维度”的脉络,运动模糊(时间维)是自然的下一步,而如何在保持无偏的同时降低额外可见性光线开销、以及是否接受可控偏差来换取性能,都是值得继续探索的方向。