作者:胡梁
来源:CUIT数据生态与智慧空间研究中心
1. 引言
渲染是将三维场景的描述转换为二维图像的过程。在动画[1-2]、电影特效[3]、高端游戏[4]、几何建模、纹理处理等应用中都必须通过某种形式的渲染过程传递3D场景的结果。渲染主要包括光栅化(rasterization)[5]和光线追踪[6]两种方式。光栅化渲染采用局部光照原理,根据光源照射到物体上直接可见的光照效果,将场景中的几何图元映射到图像的像素点上。这种方式用硬件实现较为简单,且便于并行处理,通常用作实时渲染处理。光线追踪采用全局光照模型,通过物理原理对光线和物质之间的交互行为进行建模,不仅考虑直接光照的效果,也考虑物体间相互光照影响,比传统的光栅化渲染效果更加立体,色彩更柔和更逼真,通常用于离线渲染处理。两种渲染方式的区别如图1所示。
由于光线追踪渲染计算量巨大且非常耗时,实时光线追踪存在很多挑战。首先,光线追踪算法需要迭代测试光线与场景图元是否相交,并计算光线与图元的最近交点,这个计算量是巨大的;其次,光线的反射和折射会产生大量的二次光线(secondary rays),这些光线随着迭代次数的增加会变得越来越不连续(incoherent),不规则的内存访问会导致带宽的瓶颈。
2.光线追踪研究相关理论
1979年Whitted[6]利用光线的可逆性,提出了光线追踪算法。这个算法模拟真实的光照效果,在场景中的光线与物体相交后会因反射、折射和阴影等产生二次光线,二次光线再次到场景中进行相交测试。如此进行迭代计算,直到光线的反弹次数达到预期设置的值。光线追踪的本质在于寻找与光线相交的最近物体。为了加快遍历速度,最初的方式是有规律地划分空间网格(grid)[7-8],但这种方法存在着空间划分不合理、冗余计算较多等问题。在后续的研究中提出加速数据结构(acceleration structure)的概念,其思路是将场景中的图元划分到不同的分层空间结构(hierarchical spatial structure)中,在这种结构下,可以快速剔除那些不相关的空间,进而识别出与光线最接近的图元。现在广泛应用在学术界和工业界的是一种树形数据结构,树的叶节点包含所有场景图元,树的内部节点用于将一个较大的空间表示细分为多个较小的空间区域kd-tree[9]或将场景中的对象分解为更小的对象集合BVH(bounding volume hierarchy)[10]。为简化运算,通常采用轴对齐边界框(axis-aligned bounding box,AABB)进行场景的划分。kd-tree之前被认为是最适合光线追踪的加速数据结构[11],但由于kd-tree在判断包围盒与图元是否有交集等方面存在的局限性,越来越多的研究倾向于使用BVH。相比kd-tree,BVH有着可预测内存、更好的鲁棒性、更有效的遍历和多变的构建算法等[12]优势,使得BVH成为离线和实时渲染领域应用的标准加速数据结构。
3. 光线追踪算法
由于光线追踪算法需要递归地检查光线与加速数据结构和图元的相交,最终找到与光线相交最近的图元,这个过程运算量大耗时长。为满足实时性需求,研究者提出了基于硬件架构的算法优化方法,包括光线束并行、无栈遍历、光线重排序和多分支BVH等。另一方面,将降噪技术和神经网络技术与光线追踪相结合,可以实现更好的交互性和实时性。
3.1 光线束(packet)遍历
在早期利用单指令多数据流(single-instruction, multiple-data,SIMD)架构进行光线遍历的方法中,光线束是最简单的并行组织形式,将多条光线当作一个光线束,调度到GPU的线程束(warp)或CPU的不同线程中进行处理,不同光线共享遍历栈。因此同一个光线束遍历的顺序是一致的。只要其中的一条光线与某个节点相交,那么整个光线束都遍历该节点的子树,如图2所示。光线会访问一组节点,包括它们不相交的节点,如果光线的连续性很好,那么这种方式性能会十分理想,但是如果连续性较差,那么执行效能会因为冗余的计算大打折扣,此外该方式的性能也受到内存带宽的限制。
3.2 无栈遍历
无栈遍历算法是光线追踪中常用的技术。这种算法的提出源于GPU或CPU中有限的寄存器空间,栈的编程复杂度和定制化硬件单元有限的片上存储资源。无栈的遍历算法带来了两点好处:一是按照特定的格式构造加速数据结构在遍历时可以减少内存的访问;二是无栈的遍历算法在GPU平台可以提高并行度,提升计算性能。但通常需要在加速数据结构中设置标记位或进行冗余操作才可以完成无栈遍历。Smits[13]提出了无栈的方法,使用跳跃指针(skip pointers)的方式将传统子节点的连接替换成命中(hit)或未命中(miss)的连接,在遍历的过程中,选择合适的连接。在当时的硬件体系结构中获得了大幅度的加速,但该方法导致代码的复杂度显著提升。Foley等[14]最早提出了两种基于kd-tree的无栈遍历方法:kd-restart以及kd-backtrack,如图3所示。
3.3 降噪技术
随着最新GPU实时光线追踪解决方案的出现,在降噪领域的研究也逐步兴起。目前的降噪技术主要是基于蒙特卡洛的渲染技术进行解决。蒙特卡洛渲染是基于随机样本的累积来近似给定场景光线追踪结果的算法。目前降噪技术主要包括滤波技术、机器学习驱动的滤波器、改进采样和近似技术等。
图像滤波技术是在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。McGuire等[15]提出全局光照效果下球的边界处会产生可见的不连续性,在有限球体内使用3D高斯衰减函数可平滑光照;Park等[16]认为双边滤波由于可以同时考虑图像的空域信息(domain)和值域信息(range),用于光线追踪的降噪会取得较好的效果;Dammertz等[17]提出了À-Trous滤波的降噪方式,这个方法利用蒙特卡洛计算的半球积分可能与相邻像素的半球积分非常相似的事实,使用À-Trous小波变换对全噪声图像进行运算,产生的结果接近于每个像素点具有更多采样点的方案;Schied等[18]提出了一种基于低采样进行重构图像的时空差异导向滤波器(spatio temporal variance guided filtering,SVGF),结合时间和空间上的信息一起做滤波,根据历史帧信息引导当前帧的滤波。
机器学习驱动的滤波器效果通常比传统的滤波器更优。Kalantari等[19]认为基于特征的滤波器在噪声场景和理想滤波器参数之间存在着复杂的关系因此采用非线性回归模型来学习这种关系,使用多层感知机神经网络,同时在训练和测试期间将其与匹配滤波器相结合,经过训练的神经网络驱动的滤波器参数可以生成近似基准图像的效果。
Yang等[20]对随机采样反锯齿算法(temporal antialiasing,TAA)进行了综述,指出用TAA的时间滤波器可以有效去除以极低采样率渲染的光线追踪路径的噪声,但无法从根本上消除噪声。
除此之外,还有通过近似技术优化光线追踪算法的实现。NVIDIA在RTX全局光照(RTXGI)[21]采样探针(probe)的数据结构中,进行实时计算和过滤照明与距离信息,构建具有可见性信息的高质量多次反弹照明缓存,主要通过光线追踪中的低频近似,为实时应用程序提供了质量和性能之间的理想平衡。近年来已经运用到商业游戏引擎中[22]。不同降噪技术的主要区别如表1所示。
4. 总结
长期以来,基于光线追踪的物理渲染被视为提升视觉体验的最有效方法,但是由于过大的计算强度限制了其在实时应用领域的使用。近年来,随着算法研究和硬件技术的发展,已经处于传统光栅化渲染方式到消费者平台实时光线追踪的转折点。但是,基于实时光线追踪的研究还远未结束,目前该领域还有一些关键性的问题有待进一步研究。在图像真实感方面,光线追踪的模型是基于理想模型做光线路径的模拟,由于真实场景中光线的折射会造成能量损失,距离完全真实地描绘3D场景还具有一定差距。如果要更进一步地模拟光线的传递,还需要考虑辐射度量学的内容。除此之外,纹理空间技术(texture space techniques)、可变速率光线追踪(variable rate raytracing)等新颖的提升图像真实感技术如何与光线追踪技术相结合可能是后续研究的重点方向。在算法和硬件优化方面,神经网络技术与实时光线追踪结合愈发紧密,在降噪处理、图像重构和超分辨率等方面发展迅速,下一步可能会引领人们进入神经网络渲染的新时代。从近年来的研究成果来看,硬件更倾向于“存储墙”的解决。利用定制的高效光线重排序硬件或者近存计算等会成为实时光线追踪进一步发展的突破口。此外,同样值得研究的是光线追踪硬件是否可以推广到其他不规则应用程序的架构中,可以充分发挥现代光线追踪GPU架构的优势。
参考文献
[1] BURLEY B, ADLER D, CHIANG J Y, et al. The design and evolution of Disney's hyperion renderer[J]. ACM Transactions on Graphics, 2018, 37(3): 1-22.
[2] CHRISTENSEN P, FONG J, SHADE J, et al. RenderMan: an advanced path- tracing architecture for movie rendering [J]. ACM Transactions on Graphics, 2018, 37(3): 1-21.
[3] FASCIONE L, HANIKA J, LEONE M, et al. Manuka: a batchshading architecture for spectral path tracing in movie production[J]. ACM Transactions on Graphics, 2018, 37(3): 1-18
[4] MARRS A, SHIRLEY P, WALD I. Ray tracing gems II: next generation real-time rendering with DXR, Vulkan, and OptiX[M]. California: Springer Nature, 2021.
[5] HAINES E, HOFFMAN N. Real-time rendering[M]. Boca Raton: CRC Press, 2018.
[6] WHITTED T. An improved illumination model for shaded display[C]//Proceedings of the 6th Annual Conference on Computer Graphics and Interactive Techniques, Chicago, Aug 8-10, 1979. New York: ACM, 1979: 14.
[7] FUJIMOTO A, TANAKA T, IWATA K J C G, et al. ARTS: accelerated ray- tracing system[J]. IEEE Computer Graphics and Applications, 1986, 6(4): 16-26.
[8] NERY A S, NEDJAH N. GridRT: a massively parallel architecture for ray-tracing using uniform grids[C]//Proceedings of the 12th Euromicro Conference on Digital System Design, Architectures, Methods and Tools, Patras, Aug 27- 29, 2009. Washington: IEEE Computer Society, 2009: 211-216.
[9] BENTLEY J L. Multidimensional binary search trees used for associative searching[J]. Communications of the ACM, 1975, 18(9): 509-517.
[10] CLARK J H. Hierarchical geometric models for visible surface algorithms[J]. Communications of the ACM, 1976, 19 (10): 547-554.
[11] HAVRAN V. Heuristic ray shooting algorithms[D]. Prague: Czech Technical University, 2000.
[12] MEISTER D, OGAKI S, BENTHIN C, et al. A survey on bounding volume hierarchies for ray tracing[J]. Computer Graphics Forum, 2021, 40(2): 683-712.
[13] SMITS B E. Efficiency issues for ray tracing[C]//Proceedings of the 2005 International Conference on Computer Graphics and Interactive Techniques, Los Angeles, Jul 31-Aug 4, 2005. New York: ACM, 2005: 6.
[14] FOLEY T, SUGERMAN J. KD-tree acceleration structures for a GPU raytracer[C]//Proceedings of the ACM SIGGRAPH/EUROGRAPHICS Symposium on Graphics Hardware 2005, Los Angeles, Jul 30-31, 2005. Aire-la-Ville: Eurographics Association, 2005: 15-22.
[15] MCGUIRE M, LUEBKE D. Hardware- accelerated global illumination by image space photon mapping[C]//Proceedings of the High Performance Graphics 2009, New Orleans, Aug 1-3, 2009. New York: ACM: 77-89.
[16] PARK S, BAEK N. A shader- based ray tracing engine[J]. Applied Sciences, 2021, 11(7): 3264.
[17] DAMMERTZ H, SEWTZ D, HANIKA J, et al. Edge-avoiding A-trous wavelet transform for fast global illumination filtering [C]//Proceedings of the High Performance Graphics 2010, Saarbrucken, Jun 25-27, 2010. New York: ACM, 2010: 67-75.
[18] SCHIED C, KAPLANYAN A, WYMAN C, et al. Spatiotemporal variance-guided filtering: real-time reconstruction for path- traced global illumination[C]//Proceedings of the High Performance Graphics 2017, Los Angeles, Jul 28- 30, 2017. New York: ACM, 2017: 1-12.
[19] KALANTARI N K, BAKO S, SEN P. A machine learning approach for filtering Monte Carlo noise[J]. ACM Transactions on Graphics, 2015, 34(4): 122.
[20] YANG L, LIU S, SALVI M. A survey of temporal antialiasing techniques[J]. Computer Graphics Forum, 2020, 39(2): 607- 621.
[21] NVIDIA. RTX global illumination (RTXGI)[R/OL]. [2022- 05-01]. https: //developer.nvidia.com/rtx/ray-tracing/rtxgi.
[22] MAJERCIK Z, MARRS A, SPJUT J, et al. Scaling probebased real-time dynamic global illumination for production [J]. arXiv:2009.10796, 2020.
本文转自:CUIT数据生态与智慧空间研究中心,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。