动态GI中的四种辐射缓存

内容纲要

一个课程作业,贴上来。

Abstract

实时动态全局光照明算法致力于为动态的场景渲染有着照片级真实感光照效果的流畅影像,然而全局光照明对于图形处理器而言在许多情况下依然是一个过重的负担。

缓存并复用中间结果是算法们对于此问题的答案,而缓存LTE中的辐亮度是其中主流选择。依赖缓存,在帧内、在帧与帧之间保存辐亮度的相关信息,算法们据此以光照在时间上的延迟与拖影换取更高的帧率和性能。

本文选取介绍了四个较有代表性的实时动态全局光照明工作,它们分别使用了四类目前动态实时全局光照明渲染中较为有影响力的辐亮度缓存形式:体素、探针、采样、神经网络。

笔者简单汇总了这几种缓存在性能、质量、硬件要求上的特点,期望能让读者一窥动态实时全局光照方面辐亮度缓存的大致进展。

简介

如何准确地仿真可见光的物理传播过程是一个计算机图形学领域经久不衰的研究话题。

光传输方程作为一种在几何光学语境下描述光在不同物质表面的传输过程的模型被学界广为接受,许多真实感渲染算法的最终目标都为愈加准确地求解光传输方程。无疑,光传输方程的计算关涉到大量的计算,尤其是其中积分项的求解涉及到多次反复采用的蒙特卡洛和昂贵的光线追踪,每帧求解对于有苛刻性能要求的实时图形应用而言负担过重。

研究者们利用三维场景光照条件在时间上变化迟缓的假设,缓存光传输方程计算中的中间结果,并以计算开销低廉的缓存查询代替昂贵的光线追踪与蒙特卡洛,从而在一帧之内加速计算,或者将光传输方程的求解计算负担分散到了数十甚至数百帧之间,最终达到实时渲染的帧率要求。

在许多缓存目标之中,广为使用与研究的是缓存渲染中的辐亮度(Radiance)函数,其中,将场景离散化为体素并缓存体素的辐照度(Irradiance)、在场景中安插类似相机的光探针收集辐亮度、缓存入辐亮度函数的采样、使用神经网络缓存全局的辐亮度函数,是四种在动态实时全局光照明算法中比较具有代表性的缓存方式。

背景

基于几何光学、只考虑表面散射的光传输方程(LTE)早在上世纪80年代就被Kajiya等人总结而成1,其形式为:

L(p, w_o) = L_E(p, w_p) + \int_{S^2} f(p, w_i, w_o) L(p, w_i) \cos(\theta_i) \mathrm{d}w_i

其中,L(p, w)表示三维空间中p点上w立体角(方向)上的辐亮度(Radiance)。
\int_{S^2} L(p, w) \cos(\theta) \mathrm{d}w为空间上$p$点几何表面的辐照度(Irradiance),其中,S^2为单位球面,\theta为几何平面法线与w的夹角。

实时全局光照明问题已经经过学界长时间的研究和业界的探索,在相对静态的场景光照方面,有光照贴图烘焙、预计算辐亮度传输等基于预计算光照和可见性数据的算法。可以进行动态实时全局光照明,但注重于性能而放弃部分质量的一系列屏幕空间方法等。随着硬件性能提升、算法的进步、用户越来越高的需求,仅仅针对静态场景或仅使用屏幕空间信息渲染全局光照明无法达到期许中的效果。

一系列在世界空间中缓存辐亮度,并借此进行全局光照明的算法被提出。

体素

2010年,Anton Kaplanyan等人发表论文2提出了对动态实时全局光照明有很大影响的LPV算法。算法通过将场景空间划分为三维的立方体体素网格,在体素上使用球谐函数缓存辐亮度,并基于此体素网格递推地更新光照,在不使用任何追踪操作的前提下成功地模仿了光线的传播。

在2011年,Cyril Crassin等人在论文中3提出了一种实用的、使用体素化场景与圆锥追踪实现动态场景全局光照明的方法。通过将场景简化为三维的立方体体素网格,在体素上缓存此体素所在几何的辐照度(Irradiance)成为了可能,在使用带有层级的数据结构组织体素后,可以在没有硬件光线追踪的情况下用相对廉价的、类似于光线步进的方法,估计场景中任意一点在某圆锥立体角内的入辐亮度之积分,从而协助LTE的计算。

使用LPV算法的Cry Engine3承载了著名的《孤岛危机3》,日后,Cry Engine增加了使用圆锥追踪体素的SVOGI全局光照明方案,NVIDIA在2014年推出了类似的VXGI方案,通过将Crassin等人工作中需要随机访存的八叉树结构替换为了更加GPU友好的三维纹理达到了更好的性能,可以认为这些方法都属于主要利用体素缓存辐亮度的动态全局光照明方法。

探针

光探针可以被简单地解释为安置在场景中的鱼眼相机,捕获着场景中某一点的入射辐亮度。通过在场景中各种位置布撒大量光探针,便能达到缓存辐亮度的目的。

本文选定的、近年来影响较大的、使用光探针缓存进行实时动态场景全局光照明的工作由Zander Majercik等人在2019年发布的DDGI(Dynamic Diffuse Global Illumination)4,通过在场景中按照固定间隔,以网格结构放置上千个低分辨率(6x6)的光探针,并使用光线追踪异步地更新这些探针存储的辐亮度和深度,DDGI得以在任何时候通过插值场景中某一点临近的八个光探针胶卷,利用其上缓存的深度来获知可见性信息以修正插值权重,廉价近似此点入辐亮度的低频方向性分布,最终加速LTE求解,实现动态场景的全局光照明。

全局光照明中光探针概念的形成与相关算法的发展有着厚重的历史。早在1991年,Sillion等人的研究5中就已经提出了在场景中缓存某个位置上不同方向上辐亮度分布的全局光照明算法。经过了三十年垒土成山发展,在工业中,基于光探针的各种缓存成为了在实时渲染中的流行技术,经过改良或订制,与其它全局光照明方法配合使用,今天的各大绘制引擎如Lumen、Relighten、Frostbite4、Northlight的混合全局光照明管线中都包含对于光探针的使用。

采样

在2005年,RIS(Resampled Importance Sampling)被Talbot在其博士学位论文6中作为一种能通过其它采样分布重采样任意分布甚至积分未知的函数的归一化作为概率密度函数的分布的算法引入渲染领域。在2020年,Bitterli等人基于此方法提出了ReSTIR DI7,通过使用水塘采样(Reservoir sampling)中的蓄水器(Reservoir)缓存屏幕上每个像素以辐亮度的归一化函数为概率密度函数的采样,某种意义上完成了对直接光照明入射辐亮度分布的缓存。在Ouyang Y.等人2021年发表的ReSTIR GI一文8中,RIS被推广到路径空间中,并被用于全局光照明,同一年,将ReSTIR DI扩展到使用世界空间RIS网格的工作也被Boisse等人做出9

NVIDIA公司在2021年制作并开源了RTXDI SDK,其使用世界空间蓄水器缓存直接光照明辐亮度采样,使用纯光线追踪渲染直接光照效果,可以在最先进的个人图形硬件上渲染成千上万个动态光源,并在降噪后大道相当好的效果。近期使用Northlight引擎制作、即将发售的桌面端电子游戏《Alan Wake 2》可能是第一个使用RTXDI技术的工业界电子游戏产品。

神经网络

渲染与神经网络的结合研究工作也在不断进行。在2021年,NRC一工作10展现了使用神经网络实时学习辐亮度函数的潜力。一个七层64神经元宽度的MLP网络被直接用于在材质参数提示下学习整个场景的辐亮度分布,然后被用于加速LTE求解,实现全局光照明。NRC将神经网络引入实时动态全局光照明领域,为辐亮度缓存的实现提供了全新的思路。研究者们使用每帧用于渲染而追踪的3\%的光线作为神经网络的训练样本,为了收敛速度而激进提升学习率,并为了维持时间上的稳定性对网络参数进行了时域平滑,在此领域进行了诸多开创性的探索并解决了一系列问题。

研究者们针对特定的图形硬件架构,在单张RTX3090上利用张量核心实现了每秒能完成超2亿次查询的极致性能MLP,最后依此实现了在1080p分辨率下60帧以上的渲染速率。

讨论

发展至今,四种缓存方式中的体素缓存在最追求质量的实时全局光照明管线中,由于光线追踪硬件的成熟而逐渐式微。体素缓存的重要优势在于不需要支持先进特性的图形硬件(兼容性好)与可以廉价模仿光线追踪操作,但随着时代的发展,它的优势也在逐渐磨灭。

许多基于体素的方法由于没有或较少有帧间缓存复用,因此其间接光照没有延迟,是其优势,代价则是降低的光照质量或更高的计算开销。体素缓存大多之缓存辐照度而不是辐亮度,因此只能缓存漫反射表面的光照信息。Crassin等人的工作中也提到过各向异性、缓存辐亮度的体素也可以被实现,但需要引入额外开销。即便如此,体素缓存在应对一些单层遮蔽物时还是会出现严重漏光现象。

光探针缓存性能极高,且广受欢迎。其缓存方式贴合人类直觉,而光探针由于可以随意放置且更新可以异步于主渲染线程,因此这种缓存在各种硬件上都有着非常好的延展性。光探针缓存的一个额外好处是其提供了全局光照明的中间数据表示(也就是光探针本身),方便进行端云协同渲染,同一三维场景内的多个用户设备可以共享由服务端统一运算的全局光照明数据,这些数据被异步地传输到客户端,节省大量客户端算力和总算力开销。

但光探针的局限性在于其在空间上过大的粒度,而且高分辨率光探针会消耗大量纹理显存,在计算性能不够时,光探针纹理更新缓慢会导致非常显著的光照延迟。

缓存辐亮度的采样是本文提及各种缓存中、质量上限最高、最易于实现无偏全局光照明的一种方式。这种辐亮度缓存在无限帧累积后可以收敛到LTE的真实解,这一性质为此缓存提供了最高的质量上限。ReSTIR类似方法在高渲染质量要求下有着较好的性能,在屏幕空间缓存采样则有着GPU友好的访存形式。但此类方法一般需要大量的光线追踪操作,在落后硬件下似乎不如体素和光探针。光线追踪硬件不断发展,此方案潜力颇高,而且正如前文所提,此方案新近被应用于工业生产中。

使用神经网络缓存辐亮度的全局光照明方法则显得更加激进,不过其性能上的可行性已经被研究者们证实。机器学习的对辐亮度的表达方式代替了人为依靠观察和对于辐亮度分布的观察总结而成的表达方式,针对在真实应用中复杂的光照环境,或许会更加普适且鲁棒。但目前基于神经网络辐亮度缓存的全局光照明方案对于硬件的要求还是太高(必须同时有强大的神经网络加速器和光线追踪硬件),延展性与性能暂时达不到实用标准,本身也有难以存储低频率光照、查询需要合并成批、更新涉及不稳定的训练等一系列问题。不过这一缓存方式,随着硬件性能提升和神经网络加速器的普及,或许很有潜力。

辐亮度缓存——乃至任何动态实时全局光照明技术中的缓存——这一技术存在,本质是因为目前图形硬件光线追踪性能匮乏而做出的妥协,但是,在未来几年内,面向普通个人用户的硬件光线追踪性能应该仍达不到足以抛弃辐亮度缓存的地步,因此此领域值得继续研究。

更新

  • 5.10:似乎辐射缓存的退场会比我想象的来得更早,在GDC2024上Remedy进行了Alan Wake II的渲染技术报告,他们的管线大致是路径追踪加降噪器加一个次级辐射缓存,辐射缓存不再那么重要了。这大概是未来全局光照明的主流解法。那么,缓存有没有可能退缩到性能落后桌面端10年的移动端图形呢?有可能,但缓存质量会受到手机端SoC的SLC(系统级缓存)大小的限制,因为移动端功耗敏感,辐射缓存的读写带宽都很高,溢出SLC带来的LPDDR访问功耗一般是不可接受的(同时,LPDDR本身带宽也很有限)。

参考文献


  1. Kajiya, James T. 《The Rendering Equation》. 收入 Proceedings of the 13th Annual Conference on Computer Graphics and Interactive Techniques - SIGGRAPH ’86, 143–50. Not Known: ACM Press, 1986. https://doi.org/10.1145/15922.15902

  2. Kaplanyan, Anton, 和Carsten Dachsbacher. 《Cascaded light propagation volumes for real-time indirect illumination》. 收入 Proceedings of the 2010 ACM SIGGRAPH symposium on Interactive 3D Graphics and Games, 99–107. I3D ’10. New York, NY, USA: Association for Computing Machinery, 2010. https://doi.org/10.1145/1730804.1730821

  3. Crassin, Cyril, Fabrice Neyret, Miguel Sainz, Simon Green和Elmar Eisemann. 《Interactive Indirect Illumination Using Voxel Cone Tracing》, 2011年, 10. 

  4. Majercik, Zander, Jean-Philippe Guertin, Derek Nowrouzezahrai和Morgan McGuire. 《Dynamic Diffuse Global Illumination with Ray-Traced Irradiance Fields》 8, 期 2 (2019年). 

  5. Sillion, Françis X., James R. Arvo, Stephen H. Westin和Donald P. Greenberg. 《A global illumination solution for general reflectance distributions》. ACM SIGGRAPH Computer Graphics 25, 期 4 (1991年7月1日): 187–96. https://doi.org/10.1145/127719.122739

  6. Talbot, Justin F. 《Importance Resampling for Global Illumination》, 博士学位论文. 

  7. Bitterli, Benedikt, Chris Wyman, Matt Pharr, Peter Shirley, Aaron Lefohn和Wojciech Jarosz. 《Spatiotemporal Reservoir Resampling for Real-Time Ray Tracing with Dynamic Direct Lighting》. ACM Transactions on Graphics 39, 期 4 (2020年8月31日). https://doi.org/10.1145/3386569.3392481

  8. Ouyang, Y., S. Liu, M. Kettunen, M. Pharr和J. Pantaleoni. 《ReSTIR GI: Path Resampling for Real-Time Path Tracing》. Computer Graphics Forum 40, 期 8 (2021年): 17–29. https://doi.org/10.1111/cgf.14378

  9. Boissé, Guillaume. 《WORLD-SPACE SPATIOTEMPORAL RESERVOIR REUSE FOR RAY-TRACED GLOBAL ILLUMINATION》. SIGGRAPH Asia 2021 Technical Communications, 2021年12月14日, 1–4. https://doi.org/10.1145/3478512.3488613

  10. Müller, Thomas, Fabrice Rousselle, Jan Novák和Alexander Keller. 《Real-time neural radiance caching for path tracing》. ACM Transactions on Graphics 40, 期 4 (2021年7月19日): 36:1-36:16. https://doi.org/10.1145/3450626.3459812

此条目发表在学习分类目录,贴了标签。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注