ReSTIR Surfel GI 全局光照解决方案——GAMES 2022技术分享报告
在第七届计算机图形学与混合现实前沿研讨会上,D5渲染器渲染引擎组的胡炳扬分享了D5渲染器在动态光追全局光照问题上解决方案,即ReSTIR Surfel GI系统。本文对解决方案内容进行分享,包含ReSTIR Surfel GI与Lumen等其他实现方案对比展示。
目录
GAMES2022-D5渲染器技术分享报告完整视频
问题和以往解决方案
在渲染领域,所有全局照明方法(Global Illumination, 简称GI)的理论基础(光线追踪,路径追踪等)都在于求解渲染方程。但求解渲染方程往往需要大量的样本数量才能收敛(得到干净无噪点的画面),这在实时渲染中几乎不可能实现。
![](https://cn.official.d5render.com/wp-content/uploads/1-12.png)
渲染方程
因此,我们只能用一些方案来近似地模拟。但在需要以往的解决方案中,结果或多或少都存在一些通病,例如光照泄露和过度遮挡、采样率不足导致噪声过大等问题。
![](https://cn.official.d5render.com/wp-content/uploads/2-12.png)
采样率不足导致噪声过大
![](https://cn.official.d5render.com/wp-content/uploads/3-6.png)
即使采用屏幕空间降噪等手段,效果也不佳
D5的解决方案——ReSTIR Surfel GI
针对这一行业的痛点,D5提出了 ReSTIR Surfel GI 的解决方案,通过光线追踪和缓存技术相结合共同解算GI。
![](https://cn.official.d5render.com/wp-content/uploads/4.webp)
实时渲染中路径追踪与 D5 GI 的对比
图为视频帧序列 GI 质量的对比,相同采样时间下,左侧为路径追踪的结果,右侧为D5 GI的结果,不难看出D5的全局光照系统在实时渲染中优异的表现。
在D5渲染器 2.4版本升级中,D5 GI更是带来全新的表现,查看详情:D5 GI|保持实时性的同时,不断追逐离线渲染级别的品质
光线一次反弹的计算方案
ReSTIR(Reservoir-based Spatio Temporal Importance Resampling),即基于储层的时空重要性采样,是一套利用时序和空间上的样本复用的算法,来源于 Bitterli 等人于2020年发表于SIGGRAPH的论文。D5将 ReSTIR 扩展在全局光照(GI)上,不同于光源采样,而是储存了路径。
![](https://cn.official.d5render.com/wp-content/uploads/5-7.png)
在GI困难场景中未使用 ReSTIR 的效果
![](https://cn.official.d5render.com/wp-content/uploads/6-5.png)
在GI困难场景中使用 ReSTIR 的效果
但复用时序样本的同时,也会导致在光源环境改变或者动态物体的情况下存在 Temporal Lag 的现象。因此,D5采用了 Path Validation 的方法检测前一帧和当前帧亮度变化,并以此调整复用的样本数量。
您可以在下面两个视频的对比中看出,当光源发生改变时场景中亮度变化的响应速度差异。
![](https://cn.official.d5render.com/wp-content/uploads/没用.gif)
未使用 Path Validation 的效果
![](https://cn.official.d5render.com/wp-content/uploads/yongle.gif)
使用 Path Validation 的效果
光线二次及之后反弹计算方案
ReSTIR在计算一次反弹计算中产生了良好的效果,但在实时渲染中我们很难将其应用于多次弹射的计算。因此D5的全局光照系统的二次及之后反弹计算中采用了 Surfel Caching 的方案。
GIBS (Global Illumination based on Surfels)方案由EA团队研发,即基于屏幕空间迭代地生成Surfel,能够有效地积累和缓存辐照度。但这样会产生一些新问题,例如无法获取屏幕空间外的结果。
![](https://cn.official.d5render.com/wp-content/uploads/7-3.png)
远处的反射呈现出不正确的死黑
对于这个问题,D5对上述方案做出了一些改进,从GBuffer发出射线后的交点再去生成 Surfel,得以存储了当前视角外的位置的 Surfel,获得了正确的结果。
![](https://cn.official.d5render.com/wp-content/uploads/8-2.png)
Surfel GI 示意图
![](https://cn.official.d5render.com/wp-content/uploads/9-3.png)
改进后的 Surfel GI 示意图
同时,将场景划分成级联网格来管理 Surfel,以减少显存占用;并通过将光线反弹次数排序比较等方式,解决光照泄露;以及一些其他走样(Artifact)的优化。
其他优化
此外,D5团队还针对多光源采样、间接光源优化、反射、降噪等问题提出了一系列的解决方案,使得ReSTIR Surfel GI 能高效、稳定地运行在不同的场景中。
ReSTIR Surfel GI 与其他实时GI方案的对比
![](https://cn.official.d5render.com/wp-content/uploads/10-3.png)
路径追踪(标准结果)
![](https://cn.official.d5render.com/wp-content/uploads/11-5.png)
D5 ReSTIR Surfel GI
![](https://cn.official.d5render.com/wp-content/uploads/12-3.png)
Lumen
总结
在D5渲染器的实际操作中,用户可以通过丝滑的实时预览画面,直观地感受到 ReSTIR Surfel 全局光照系统带来的受益。用户任意地变换摄影机位置、添加光源或改变天空的间接光照情况,都能够即时地在预览窗口中得到反馈结果。
同时,相比于其他全局光照解决方案,D5 GI渲染的结果更接近于路径追踪的结果,在实时渲染保持性能的同时也保证了结果的质量。
![](https://cn.official.d5render.com/wp-content/uploads/13.webp)
D5 GI 与路径追踪结果的对比
下面的实机演示视频,带您更直观地感受D5实时全局光照方案的速度与质量。
![](https://cn.official.d5render.com/wp-content/uploads/室内.gif)
D5 实时渲染室内场景
![](https://cn.official.d5render.com/wp-content/uploads/室外.gif)
D5 实时渲染室外场景