Print

发布时间: 2023-02-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.211082
2023 | Volume 28 | Number 2




    计算机图形学    




  <<上一篇 




  下一篇>> 





基于线性变换球面分布的实时间接光泽反射
expand article info 夏博, 刘艳丽, 曾威, 蒲一磊, 张严辞
1. 四川大学计算机学院, 成都 610065;
2. 四川大学视觉合成图形图像技术国家重点学科实验室, 成都 610065

摘要

目的 在实时渲染领域中,立即辐射度算法是用于实时模拟间接光泽反射效果的算法之一。基于立即辐射度的GGX SLC(stochastic light culling)算法中使用符合真实物理定律的GGX BRDF(bidirectional reflectance distribution function)光照模型计算间接光泽反射,计算复杂度很高,并且其计算开销会随着虚拟点光源的数量呈明显的线性增长。为解决上述问题,提出一种更高效的实时间接光泽反射渲染算法。方法 基于数学方法中的线性变换球面分布,将计算复杂度很高的GGX BRDF球面分布近似为一种计算复杂度较低的球面分布,并基于该球面分布提出了在单点光源以及多点光源环境下的基于物理的快速光照模型。该光照模型相比GGX BRDF光照模型具有更低的计算开销。然后基于该光照模型,提出实时间接光泽反射渲染算法,计算虚拟点光源对着色点的辐射强度,结合多点光源光照模型对着色点着色,高效地渲染间接光泽反射效果。结果 实验结果表明,改进后的实时间接光泽反射算法能够以更高的渲染效率实现与GGX SLC算法相似的渲染效果,渲染效率提升了20%~40%,并且场景中虚拟点光源数量越多,所提算法的效率提升越大。结论 基于线性变换球面分布的实时间接光泽反射算法,相比于GGX SLC算法,能够在不降低渲染效果的基础上,大幅提升间接光泽反射的渲染效率。

关键词

实时渲染; 立即辐射度; 间接光泽反射(IGR); 双向反射分布函数(BRDF); 线性变换球面分布

Real-time indirect glossy reflection based on linearly transformed spherical distributions
expand article info Xia Bo, Liu Yanli, Zeng Wei, Pu Yilei, Zhang Yanci
1. College of Computer Science, Sichuan University, Chengdu 610065, China;
2. National Key Laboratory of Fundamental Science on Synthetic Vision, Sichuan University, Chengdu 610065, China
Supported by: National Key Project of China (GJXM92579)

Abstract

Objective Indirect glossy reflection effect (IGRE) can be as one of the commonly-used lighting effects nowadays. The IGRE-based simulation has been developing in related to designs of games, movies, animations, virtual reality and visual simulation. The IGRE can be employed to enhance image quality and is an essential part of the rendering in computer graphics. Current instant radiosity (IR) algorithm is beneficial to IGRE for real-time rendering. In order to calculate the glossy reflection effect (GRE) at the virtual point lights and the shading points, a certain lighting model is usually adopted to calculate the radiance of the ray-reflected like Blinn-Phong lighting model. In recent years, to calculate the IGR, IR-based GGX stochastic light culling algorithm (SLC) is focused on the GGX bidirectional reflectance distribution function (BRDF) lighting model further. However, the GGX BRDF lighting model has featured of high computational complexity, and it is time-consuming as well, including redundant trigonometric functions and square roots. Meanwhile, its computational overhead will increase dramatically in linear with the growth of the number of virtual point lights. To optimize the IGR effects, there are often hundreds of thousands or even millions of virtual point lights in the scene, which will cause very high shading overhead in the GGX SLC algorithm. But, the rendering performance is still ultimately challenged. So, we focus on the GGX SLC algorithm and carry out the analysis of the high overhead caused by the GGX SLC algorithm, which uses the GGX BRDF lighting model when rendering the IGR in detail. Our method is developed to improve the real-time IGR algorithm in terms of IR (i.e. GGX SLC algorithm). Method To lower the computational complexity of GGX BRDF spherical distribution, our research is concerned of the mutual-fitted issue of GGX BRDF spherical distribution with another spherical distribution based on linearly transformed spherical distribution. In this way, the goal of the GGX BRDF-simplified can be achieved. This spherical distribution to low computational complexity is melted into the point light source and a fast physics-based lighting model is obtained from single-point and multi-point light sources. This lighting model has a lower computational cost compared to the GGX BRDF lighting model. First, this fast lighting model is used to calculate the radiance of the virtual point lights and the shading points both. To improve its rendering efficiency, we implement a lighting model-based texture sampling strategy. Our algorithm has its potentials to improve the rendering efficiency of the indirect glossy reflection effect without the rendering quality loss. Result We conduct several experiments to verify that our real-time indirect glossy reflection algorithm. First, to validate the feasibility of our lighting model, our lighting model is compared to the GGX BRDF lighting model. The root mean squared error (RMSE) of our algorithm is less than 0.002. This indicates that our lighting model can achieve similar rendering quality to the GGX BRDF lighting model. Next, our algorithm is optimized and linked to improve rendering quality and rendering efficiency in different scenes. Our experiment results show that our rendering quality is very close to the GGX SLC algorithm (the RMSE is less than 0.006). The rendering efficiency can be increased up to 40% in the Sponza scene. The experiments are carried out on the effectiveness of the number of virtual point lights between the two algorithms mentioned above. The experimental results demonstrate that the efficiency of our algorithm can be improved more based on the number of virtual point lights-enlarged in the scene, while little loss in rendering quality compared with the GGX SLC algorithm. The RMSE is less than 0.003 while the rendering efficiency improvement can reach 30% in the metal ring scene. Conclusion A real-time indirect glossy reflection algorithm is developed in terms of linearly transformed spherical distribution. A lighting model with lower computational complexity is employed to optimize the GGX BRDF lighting model, which can reduce rendering overhead better. To alleviate the problem of texture sampling, a texture sampling scheme is optimized to improve rendering efficiency further. The experiment results demonstrate that our algorithm can improve the rendering efficiency of the indirect glossy reflection effect without sacrifice rendering quality potentially.

Key words

real-time rendering; instant radiosity; indirect glossy reflection (IGR); bidirectional reflectance distribution function (BRDF); linearly transformed spherical distributions

0 引言

基于虚拟点光源(virtual point lights,VPLs)的立即辐射度算法(Keller,1997Luksch等,2019Wang等,2020)是一种常用的全局光照算法,通过借助大量虚拟点光源计算着色点的间接光照,优点是适用于动态场景,能够使用基于物理的光照模型进行光照计算,缺点是光照计算量较大,通常只能模拟一次反弹的间接光照。

反射阴影图算法(Dachsbacher和Stamminger,2005)可以快速生成虚拟点光源。该算法的提出加速了实时立即辐射度方法的发展,但是通常只能模拟间接光的漫反射效果。由于光泽反射相比于漫反射要复杂很多,使用立即辐射度方法实时渲染出比较真实的间接光泽反射效果一直是具有挑战性的难题。Dachsbacher和Stamminger(2006)基于反射阴影图,通过将虚拟点光源的光照信息溅射到相邻像素的方式,实时渲染出了间接光泽反射效果,但在计算间接光照时只用Phong模型,该光照模型不符合物理定律,无法渲染出真实效果。Tokuyoshi和Harada(2017)提出使用基于物理的GGX BRDF(bidirectional reflectance distribution function)计算每个虚拟点光源和着色点处的光泽反射GGX SLC(stochastic light culling)算法,虽然能得到相对真实的间接光泽反射效果,但是GGX BRDF公式极其复杂,计算开销太大,场景中虚拟点光源的数量将成为该算法的性能瓶颈。

为了降低GGX SLC算法渲染间接光泽反射效果时的计算开销,本文基于数学方法中的线性变换球面分布(Heitz等,2016),将复杂的GGX BRDF拟合为另一种计算复杂度较低的球面分布,并在多点光源环境下提出了一种更高效的实时间接光泽反射渲染算法。

1 相关工作

用于快速生成虚拟点光源的反射阴影图方法提出后,大量研究投入到立即辐射度算法,如何高效利用虚拟点光源渲染全局光照一直是研究重点。

对虚拟点光源带来的多光源问题,Dachsbacher等人(2014)进行了详细介绍,其中对光源进行聚类是一种常用方法。Lightcuts(Walter等,2005)就是对光源进行聚类的一种经典方法,使用二叉树组织光源,在着色时从树上选择一个lightcut对着色点进行光照计算。基于最原始的Lightcuts,该方法出现了一些变种,如多维的Lightcuts(Walter等,2006)和双向的Lightcuts(Walter等,2012)。通过对lightcut的选择引入随机性(Yuksel,2019Lin和Yuksel,2020)解决了从光源树上采样的相关性问题。此外,还有结合重要性采样的方法(Vévoda等,2018Estevez和Kulla,2018Moreau和Clarberg,2019)以加速光照计算。另外,在实时渲染中交叉采样方法(Segovia等,2006)可以减少每个像素着色时需要的虚拟点光源数量。

光源裁剪是另一类常用的多光源加速算法。Dachsbacher和Stamminger(2006)通过溅射虚拟点光源影响范围的边界几何来渲染焦散效果。Balestra(2008)提出对渲染窗口进行分块,每一个分块只需要对本分块有影响的光源进行着色计算。通过对深度方向上再次分块(Olsson等,2012)可以进一步提高了分块着色的裁剪精度。尽管光源裁剪算法极大提高性能,但对光源影响范围的限制造成场景中着色时的黑暗性偏差。Tokuyoshi和Harada(2016)提出使用随机的光源范围进行裁剪来解决此问题。在计算光泽反射效果时,双向反射分布函数(BRDF)是非常重要的一部分。Cook和Torrance(1982)首次将基于微表面的BRDF引入计算机图形学。关于BRDF中最重要的法线分布函数有诸多研究。广泛使用的是Beckmann(Beckmann和Spizzichino,1987)、Phong(Phong,1975)和GGX(Walter等,2007)等法线分布函数,但只有GGX分布具有较好的拖尾效应,因此GGX BRDF广泛应用于计算机图形学工业领域(McAuley等,2012Lagarde和de Rousiers,2014)。然而,完全基于物理的GGX BRDF计算非常复杂,在实际应用中需要用一些方法来加速光照计算。Tokuyoshi和Harada(2017)提出计算一个紧凑的椭球包围体来近似虚拟点光源的影响范围,并结合随机光源裁剪来产生光泽反射效果。Heitz等人(2016)提出使用线性变换球面分布这种数学思想来预计算GGX BRDF,从而避免了实时计算GGX BRDF的高开销问题。该方法由于在实时渲染中的出色表现,应用于多种渲染算法中(Li等,2018Diolatzis等,2020Luksch等,2020)。

2 算法概述

立即辐射度算法的核心思想是使用大量虚拟点光源计算间接光照。即

$ L_o\left(p, \boldsymbol{\omega}_o\right)=\sum\limits_{i=1}^N I_i\left(\boldsymbol{\omega}_i\right) f\left(p, \boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)\left\langle\boldsymbol{\omega}_i, \boldsymbol{n}\right\rangle $ (1)

式中,$L_{o}$是着色点$p$沿观察方向$\boldsymbol{\omega}_{o}$的辐射亮度,$N$表示场景中虚拟点光源的总数,$I_i\left(\boldsymbol{\omega}_i\right)$表示第$i$个虚拟点光源在$\boldsymbol{\omega}_i$方向上的辐射强度,$\boldsymbol{n}$是着色点的法线,$f\left(p, \boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)$是双向反射分布函数BRDF, 〈·,·〉是向量点积运算。

为了用立即辐射度方法渲染出基于物理的间接光泽反射效果,GGX SLC算法使用GGX BRDF模型描述着色点以及虚拟点光源处表面的材质属性,即着色点的辐射亮度$L_{o}$和虚拟点光源的辐射强度$I_{i}$都需要通过GGX BRDF计算。然而,GGX BRDF公式极其复杂,当用于计算间接光泽反射时,光照计算的复杂度会随着场景中虚拟点光源的数量呈线性增加,最终会成为GGX SLC算法的瓶颈。需要指出的是,此时的性能瓶颈并非是虚拟点光源的数量太多,根本原因是GGX BRDF模型太过复杂。因此,如何找到新的基于物理的点光源光照模型,同时具有较低的计算复杂度,是使用立即辐射度算法来精确且高效地模拟间接光泽反射效果的一大难点。针对上述难点,需要解决以下两个关键问题。1)将具有高计算复杂度的GGX BRDF球面分布拟合为另一种计算量很小的球面分布$f_{\rm{low}}$,基本思路是基于线性变换球面分布这种数学思想,将GGX BRDF球面分布通过多次迭代拟合成相对简单的球面分布$f_{\rm{low}}$。2)将$f_{\rm{low}}$应用在点光源光照模型中存在大量纹理采样操作,无法直接用于间接光泽反射效果计算,否则将严重影响效率。所以需要找到一种解决方案,使本文点光源光照模型能够很好地适配立即辐射度算法,真正降低渲染间接光泽反射效果时的计算开销。

本文利用线性变换球面分布来拟合GGX BRDF,针对点光源的间接光泽反射提出一种高效算法,大幅提升了渲染效率。本文的渲染管线如图 1所示,图中绿色阶段是本文的主要工作和创新点。

图 1 本文算法渲染管线
Fig. 1 The rendering pipeline of our algorithm

3 基于线性变换球面分布的实时间接光泽反射

本文的核心算法是利用线性变换球面分布这种数学思想来改进GGX BRDF模型计算间接光泽反射时的缺点,提出了具有更低计算量的点光源光照模型。然后基于该光照模型,提出了更加高效的实时间接光泽反射渲染算法。

3.1 拟合GGX BRDF球面分布

GGX BRDF计算公式复杂,在立即辐射度方法中计算间接光泽反射效果(即GGX SLC算法)时开销很大。找到一个相对简单的球面分布$f_{\rm{low}}$代替复杂的GGX BRDF球面分布是改进GGX SLC算法非常重要的一个方向。本文发现线性变换球面分布这种数学方法可以将一种球面分布拟合为另一种球面分布。本文基于线性变换球面分布,将GGX BRDF球面分布$f$拟合为余弦球面分布$f_{c}$。该余弦分布计算量很低,能够满足$f_{\rm{low}}$的要求。

将GGX BRDF球面分布拟合成为余弦球面分布的基本思路是,将粗糙度和观察角度的余弦值cos $θ$分别作为纹理坐标$u$$v$,该观察角度是观察向量$\boldsymbol{\omega}_{o}$和法线$\boldsymbol{n}$的夹角。然后针对每一组粗糙度和观察角度,在整个半球空间上对余弦分布进行重要性采样,将采样得到的向量用线性余弦变换矩阵$\boldsymbol{M}$变换到GGX BRDF球面分布上,然后分别计算两个球面分布在各自采样方向上的值,通过计算两个值的差异$\boldsymbol{\grave{O}}$不断地迭代修正矩阵$\boldsymbol{M}$中的元素,并将最终求得的矩阵$\boldsymbol{M}$的逆矩阵$\boldsymbol{M}^{-1}$保存到纹理中。

需要注意的是,拟合球面分布属于本文算法的预计算阶段。在预计算阶段无法获取基础反射率$F_{0}$。因此,在实际拟合过程中,拟合的是少了菲涅尔项$F\left(\left\langle\boldsymbol{\omega}_i, \boldsymbol{\omega}_h\right\rangle\right)$的余弦加权的GGX BRDF,即

$ \rho\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)=\frac{G\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right) D\left(\left\langle\boldsymbol{\omega}_h, \boldsymbol{n}\right\rangle\right)}{4\left\langle\boldsymbol{\omega}_i, \boldsymbol{n}\right\rangle\left\langle\boldsymbol{\omega}_o, \boldsymbol{n}\right\rangle}\left\langle\boldsymbol{\omega}_i, \boldsymbol{n}\right\rangle $ (2)

式中,$D\left(\left\langle\boldsymbol{\omega}_h, \boldsymbol{n}\right\rangle\right)$是法线分布函数,$G\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)$是几何遮挡函数。由于$\rho\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)$少了菲涅尔项,本文单独计算了菲涅尔项对整个积分的影响$\rho_f$,然后用$\rho_f$来缩放$\rho\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)$拟合之后的结果,从而近似地弥补了菲涅尔项。$\rho_f$的计算方法为

$ \rho_f=\int_{\boldsymbol{\varOmega}} F\left(\left\langle\boldsymbol{\omega}_i, \boldsymbol{\omega}_h\right\rangle\right) \rho\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right) \mathrm{d} \boldsymbol{\omega}_i $ (3)

用Fresnel-Schlick近似公式替换$F\left(\left\langle\boldsymbol{\omega}_i\right.\right.\left.\left.\boldsymbol{\omega}_h\right\rangle\right)$,可得

$ \rho_f=F_0 n_A+\left(1-F_0\right) f_A $ (4)

式中,$F_{0}$是基础反射率,$n_A=\int_{\boldsymbol{\varOmega}} \rho\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right) \mathrm{d} \boldsymbol{\omega}_i$$f_A=\int_{\boldsymbol{\varOmega}}\left(1-\left\langle\boldsymbol{\omega}_o, \boldsymbol{\omega}_h\right\rangle\right)^5 \rho\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right) \mathrm{d} \boldsymbol{\omega}_i$。因为$n_A$$f_{A}$的计算与$F_{0}$无关,所以可以在预计算阶段在半球空间内计算出$n_{A}$$f_{A}$值,然后存储到纹理中。

综上,通过线性变换球面分布,可以用一个余弦球面分布近似代替余弦加权的GGX BRDF球面分布,即

$ f\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)\left\langle\boldsymbol{\omega}_i, \boldsymbol{n}\right\rangle \approx \rho_f f_c\left(\boldsymbol{\omega}_{c i}\right) $ (5)

式中,$\boldsymbol{\omega}_{ci}$是GGX BRDF分布下的入射向量$\boldsymbol{\omega}_{i}$经过逆向线性余弦变换之后的向量,即$\boldsymbol{\omega}_{c i}=\boldsymbol{M}^{-1} \boldsymbol{\omega}_i /\left\|\boldsymbol{M}^{-1} \boldsymbol{\omega}_i\right\|$

3.2 基于线性变换球面分布的单点光源光照模型

由3.1节可知,GGX BRDF球面分布$f\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)$可以拟合为余弦球面分布$f_c\left(\boldsymbol{\omega}_{c i}\right)$。因此,着色点$p$受到的辐射亮度计算为

$ \begin{aligned} L_o\left(p, \boldsymbol{\omega}_o\right)= & \int_{\boldsymbol{\varPsi}} L_i\left(p, \boldsymbol{\omega}_i\right) f\left(p, \boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)\left\langle\boldsymbol{\omega}_i, n\right\rangle \mathrm{d} \boldsymbol{\omega}_i \approx \\ & \rho_f \int_{\boldsymbol{\varPsi}^{\prime}} L_i\left(p, \boldsymbol{\omega}_{c i}\right) f_c\left(\boldsymbol{\omega}_{c i}\right) \mathrm{d} \boldsymbol{\omega}_{c i} \end{aligned} $ (6)

式中,$\boldsymbol{\varPsi}$表示着色点接收到的入射光线覆盖的球面区域;$\boldsymbol{\varPsi}'$$\boldsymbol{\varPsi}$经过逆向线性余弦变换后的球面区域。由于$ρ_{f}$中的$F_{0}$只取决于具体的着色点,$n_{A}$$f_{A}$都可以从纹理中采样而得,其采样坐标只取决于观察角度以及着色点的粗糙度,所以它们都与$\boldsymbol{\omega}_{ci}$无关,可以提到积分符号外面。

式(6)是对球面上的区域$\boldsymbol{\varPsi}$的积分,如果$\boldsymbol{\varPsi}$无限小,则可以看做着色点$p$接收到的辐射来自一个无限小的点光源。因此,着色点接收到来自单个点光源的光照为

$ L_o\left(p, \boldsymbol{\omega}_o\right) \approx \rho_f I f_c\left(\boldsymbol{\omega}_{c i}\right) \frac{\mathrm{d} \boldsymbol{\omega}_{c i}}{\mathrm{~d} \boldsymbol{\omega}_i}= \\ \boldsymbol{\rho}_f I_c\left(\boldsymbol{\omega}_{c i}\right) \frac{\left|\boldsymbol{M}^{-1}\right|}{\left\|\boldsymbol{M}^{-1} \boldsymbol{\omega}_i\right\|^3} $ (7)

式中,$I$表示点光源的辐射强度。式(7)与式(6)相比,多了一项雅可比行列式$\mathrm{d} \boldsymbol{\omega}_{c i} / \mathrm{d} \boldsymbol{\omega}_i$(Heitz等,2016),这是因为在实际的光照计算中,由于线性余弦变换的存在,$\mathrm{d}\boldsymbol{\omega}_{i}$$\mathrm{d}boldsymbol{ω}_{ci}$对应在单位球面上的面积并不相等。

计算$f_c\left(\boldsymbol{\omega}_{c i}\right)$要用到余弦分布(Heitz等,2016),令$\boldsymbol{\omega}_{n c i}=\boldsymbol{M}^{-1} \boldsymbol{\omega}_i$,需要注意的是,$\boldsymbol{\omega}_{nci}$并不是单位向量,而在计算$f_c\left(\boldsymbol{\omega}_{c i}\right)$时要求$\boldsymbol{\omega}_{ci}$是单位向量,所以需要先将$\boldsymbol{\omega}_{nci}$归一化后再取其$z$分量,才能得到准确的$f_c\left(\boldsymbol{\omega}_{c i}\right)$的值。具体为

$ f_c\left(\boldsymbol{\omega}_{c i}\right)=\frac{\max \left(0, z_{n c}\right)}{\pi\left\|\boldsymbol{\omega}_{n c i}\right\|} $ (8)

式中,$z_{nc}$是向量$\boldsymbol{\omega}_{nci}$$z$分量。

结合式(7)和式(8),可得到本文最终的单点光源光照模型,该光照模型使用余弦分布计算着色点接收到的基于物理的光照。具体为

$ L_o\left(p, \boldsymbol{\omega}_o\right) \approx \rho_f \frac{I\left|\boldsymbol{M}^{-1}\right| \max \left(0, z_{n c}\right)}{\pi\left\langle\boldsymbol{\omega}_{n c i}, \boldsymbol{\omega}_{n c i}\right\rangle^2} $ (9)

从式(9)可知,本文得到的单点光源下的光照模型只存在少量的加法、乘法、除法、矩阵和向量相乘以及求行列式等计算量较小的运算操作,而原始的GGX BRDF光照模型存在大量三角函数、开方、高次幂等非常耗时的运算操作。将该单点光源光照模型扩展至多点光源环境时,低计算量的优势进一步放大。同时,由于本文的光照模型本质上是将GGX BRDF球面分布拟合为余弦分布,所以不仅光照计算量低,而且能够实现基于物理的光照效果。

3.3 基于线性变换球面分布的多点光源光照模型

由于立即辐射度算法需要使用大量虚拟点光源计算间接光照,所以需要将单点光源光照模型扩展至多点光源环境。当着色点$p$接收到来自多个点光源的辐射时,利用式(9)对每一个光源贡献求和即可得到本文提出的多点光源光照模型。具体为

$ L_o\left(p, \boldsymbol{\omega}_o\right) \approx \sum\limits_{i=1}^N \rho_f \frac{I_i\left|\boldsymbol{M}^{-1}\right| \max \left(0, z_{n c}\right)}{\pi\left\langle\boldsymbol{\omega}_{n c i}, \boldsymbol{\omega}_{n c i}\right\rangle^2} $ (10)

在式(10)表示的多点光源光照模型中,$ρ_{f}$$\boldsymbol{M}^{-1}$仅与着色点的材质信息和观察角度相关,与具体的光源无关。因此,可以把与光源无关的参数提到求和符号外面,将式(10)化简为

$ L_o\left(p, \boldsymbol{\omega}_o\right) \approx \frac{\boldsymbol{\rho}_f\left|\boldsymbol{M}^{-1}\right|}{\pi} \sum\limits_{i=1}^N \frac{I_i \max \left(0, z_{n c}\right)}{\left\langle\boldsymbol{\omega}_{n c i}, \boldsymbol{\omega}_{n c i}\right\rangle^2} $ (11)

式(11)即本文最终的多点光源光照模型。从式(11)可以看出,与光源数量呈正相关的操作只有少量的乘法、除法以及矩阵和向量相乘(求$\boldsymbol{\omega}_{nci}$时需要用$\boldsymbol{M}^{-1}$乘以$\boldsymbol{\omega}_{i}$),其余的运算复杂度都只是O(1)。当着色用的是GGX BRDF时,计算复杂度很高的法线分布函数$D\left(\left\langle\boldsymbol{\omega}_h, \boldsymbol{n}\right\rangle\right)$、几何遮挡函数$G\left(\boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)$以及菲涅尔函数$F\left(\left\langle\boldsymbol{\omega}_i, \boldsymbol{\omega}_h\right\rangle\right)$都与具体的光源相关,所以运算量将随光源数量呈明显的线性增长。而式(11)表示的本文光照模型,在光源数量增加时,运算量呈次线性增长。因此,本文提出的光照模型在多点光源环境下,相比于GGX BRDF多点光源光照模型具有更低的光照计算代价以及更好的光源数量可扩展性。

3.4 基于本文光照模型的间接光泽反射效果

使用立即辐射度渲染间接光照的基本思想是在直接光源照亮的物体表面上分布大量虚拟点光源,根据直接光计算出虚拟点光源的辐射强度,然后根据这些虚拟点光源的辐射强度计算出着色点的间接光照,如图 2所示。为了与着色点区分,使用上标“'”表示与虚拟点光源相关的量。其中,$\boldsymbol{\omega}'_{i}$表示直接光到虚拟点光源的入射方向,$\boldsymbol{\omega}'_{o}$表示虚拟点光源到着色点的出射方向。

图 2 使用虚拟点光源计算着色点的间接光泽反射
Fig. 2 Calculate the indirect glossy reflection of shading points using virtual point lights

计算虚拟点光源的辐射强度时,可使用本文提出的单点光源光照模型,即式(9)。但是算法此处存在一个难点:尽管相比于使用原始的GGX BRDF公式少了很多耗时的运算,但由于不同的虚拟点光源对不同的着色点着色时具有不同的纹理采样坐标,会导致纹理采样次数太多,而现代GPU架构上的纹理采样是非常耗时的操作,将大幅降低渲染效率。

算法1  实时计算虚拟点光源的辐射强度

输入:由影响当前像素的虚拟点光源的索引构成的数组$\boldsymbol{VPLIndexes}$以及数组大小$N_{e}$,虚拟点光源结构体数组$\boldsymbol{VPLs}$,着色点位置$p$,矩阵纹理$\boldsymbol{MatTex}$,直接光源的入射方向$\boldsymbol{\omega}'_{i}$

输出:每个虚拟点光源对当前着色点的辐射强度。

1) for $i←0$ to $N_{e}$ do;

2) $Index←\boldsymbol{VPLIndexes}[i]$

3) $F'_0, α', n', ←\boldsymbol{VPLs}[Index]$

4) $\boldsymbol{\omega}'_o←norm(p-\boldsymbol{VPLs}[Index].position)$

5) $UV←calcUV(α', dot(n', \boldsymbol{\omega}'_o))$

6) $\boldsymbol{M}'^{-1}, n'_A, f'_A←texture(\boldsymbol{MatTex}, UV)$

7) $I(\boldsymbol{\omega}'_o)←calcIntensity(\boldsymbol{\omega}'_i, \boldsymbol{M}'^{-1}, n'_A, f'_A, F'_0)$

8) end。

其中,$norm$为向量归一化;$position$为虚拟点光源位置;$UV$是纹理采样坐标。

使用本文提出的单点光源光照模型计算虚拟点光源的辐射强度存在两个问题。1)纹理采样次数过多。算法1需要对每个着色点进行$N_{e}$次纹理采样,假设渲染窗口的分辨率为$W×H$,那么共需要的纹理采样次数为$W×H×N_{e}$。场景中的虚拟点光源数量增大会导致更多的纹理采样次数,根本原因在于同一个虚拟点光源对不同着色点着色时,每次着色都要进行一次纹理采样,因为采样矩阵纹理的纹理坐标与$\boldsymbol{\omega}'_{o}$有关,即与具体的着色点有关。2)多次纹理采样被串行执行。算法1中$N_{e}$次纹理采样被串行执行也是该算法性能低效的主要原因之一。假设一次纹理采样所需时间为$t$,那么算法1在纹理采样上的时间就是$N_{e}t$。降低该采样时间甚至降低为$t$,即只耗费执行一次纹理采样所需的时间是一项具有挑战性的工作。难点是需要减少纹理采样次数,并且尽可能使这些纹理采样过程被并行执行。本文注意到,对于各向同性的物体材质,当交换入射向量$\boldsymbol{\omega}_{i}$和出射向量$\boldsymbol{\omega}_{o}$时,GGX BRDF值不变,即

$ f\left(p, \boldsymbol{\omega}_i, \boldsymbol{\omega}_o\right)=f\left(p, \boldsymbol{\omega}_o, \boldsymbol{\omega}_i\right) $ (12)

同理,通过余弦分布近似计算GGX BRDF的分布值时,也具有类似的属性,即

$ f_c\left(\boldsymbol{\omega}_i^{\prime}, \boldsymbol{M}^{\prime-1}\right)=f_c\left(\boldsymbol{\omega}_o^{\prime}, \boldsymbol{M}^{\prime \prime-1}\right) $ (13)

式中,$\boldsymbol{M}^{\prime-1} \text {和} \boldsymbol{M}^{\prime \prime-1}$都是从矩阵纹理中采样而得,上标“″”表示改变纹理采样坐标后与虚拟点光源相关的量。$\boldsymbol{M}^{\prime-1}$的纹理采样坐标取决于虚拟点光源所处表面点的粗糙度和$\boldsymbol{\omega}'_{o}$与虚拟点光源处法线$\boldsymbol{n}'$的夹角。$\boldsymbol{M}^{\prime \prime-1}$的纹理采样坐标取决于虚拟点光源所处表面点的粗糙度和$\boldsymbol{\omega}'_{i}$与虚拟点光源处法线$\boldsymbol{n}'$的夹角。

结合式(9),可得虚拟点光源辐射强度的计算式,即

$ I\left(\boldsymbol{\omega}_o^{\prime}\right) \approx \varPhi \rho_f^{\prime \prime} \frac{\left|\boldsymbol{M}^{\prime \prime-1}\right| \max \left(0, z_{n c}^{\prime \prime}\right)}{\pi\left\langle\boldsymbol{\omega}_{n c i}^{\prime \prime}, \boldsymbol{\omega}_{n c i}^{\prime \prime}\right\rangle^2} $ (14)

式中,$\varPhi$表示直接光源的辐射强度,$ρ^{\prime \prime}_{f}$里面的$n^{\prime \prime}_{A}$$f^{\prime \prime}_{A}$$\boldsymbol{M}^{\prime \prime -1}$都采自于纹理。采样坐标取决于虚拟点光源所处表面点的粗糙度和直接光入射向量$\boldsymbol{\omega}'_{i}$与虚拟点光源处法线$\boldsymbol{n}'$的夹角,且$\boldsymbol{\omega}_{n c i}^{\prime \prime}=\boldsymbol{M}^{\prime \prime-1} \boldsymbol{\omega}_o^{\prime}$

使用式(14)计算虚拟点光源辐射强度的好处是纹理采样坐标与具体着色点无关,只与虚拟点光源和直接光源有关,可以将矩阵纹理采样操作与着色点进行解耦。这样在一个Pass中使用计算着色器并行执行与虚拟点光源数目相等的GPU线程,每个线程根据虚拟点光源处的粗糙度以及直接光入射方向,从矩阵纹理中并行地采样出$n^{\prime \prime}_{A}$$f^{\prime \prime}_{A}$以及$\boldsymbol{M}^{\prime \prime-1}$。然后采用第2个Pass对每个着色点并行地执行光照计算,着色时与虚拟点光源相关的量只需要在GPU缓存中取出对应的$n^{\prime \prime}_{A}$$f^{\prime \prime}_{A}$以及$\boldsymbol{M}^{\prime \prime-1}$即可。

算法2  实时计算虚拟点光源的辐射强度(改进版)

输入:由影响当前像素的虚拟点光源的索引构成的数组$\boldsymbol{VPLIndexes}$以及数组大小$N_{e}$,虚拟点光源结构体数组$\boldsymbol{VPLs}$,着色点位置$p$,矩阵纹理$\boldsymbol{MatTex}$,直接光源的入射方向$\boldsymbol{\omega}'_{i}$

输出:每个虚拟点光源对当前着色点的辐射强度。

Pass 1:所有虚拟点光源并行采样。

1) $Index←ThreadId$;

2) $α', n'←\boldsymbol{VPLs}[Index]$;

3) $UV←calcUV(α', dot(n', \boldsymbol{\omega}'_i))$;

4) $\boldsymbol{M}^{\prime \prime-1}, n^{\prime \prime}_A, f^{\prime \prime}_A←texture(\boldsymbol{MatTex}, UV)$;

5) $\boldsymbol{VPLs}[Index]←\boldsymbol{M}^{\prime \prime-1}, n^{\prime \prime}_{A}, f^{\prime \prime}_{A}$

Pass 2:片元着色。

6) for $i←0$ to $N_{e}$ do;

7) $Index←\boldsymbol{VPLIndexes}[i]$;

8) $F^{\prime \prime}_0, \boldsymbol{M}^{\prime \prime-1}, n^{\prime \prime}_A, f^{\prime \prime}_A←\boldsymbol{VPLs}[Index]$;

9) $\boldsymbol{\omega}'_o←norm(p-\boldsymbol{VPLs}[Index].position)$;

10) $I(\boldsymbol{\omega}'_o)←calcIntensity\;(\boldsymbol{\omega}'_o, \boldsymbol{M}^{\prime \prime-1}, n^{\prime \prime}_A, f^{\prime \prime}_A, F^{\prime \prime}_0)$;

11) end。

其中,$ThreadId$为当前GPU线程索引。

与算法1相比,算法2由于纹理采样坐标与具体着色点无关,总的纹理采样次数等于虚拟点光源的总数$N$,远小于$W×H×N_{e}$,而且算法2中的纹理采样被诸多GPU线程并行执行,所以理论上能够将纹理采样时间降低为$t$

综上,使用算法2计算虚拟点光源对着色点的辐射强度,结合本文提出的多点光源光照模型(即式(11))对着色点着色,可以高效地渲染间接光泽反射效果。

4 实验结果与分析

针对GGX SLC算法使用GGX BRDF光照模型计算间接光泽反射带来的高开销问题,实验首先验证本文提出的光照模型的正确性,然后从渲染效果和渲染效率两方面与GGX SLC算法对比,验证本文算法能够实现与GGX SLC算法相似的渲染效果,同时比GGX SLC算法具有更高的渲染效率。此外,验证了随着场景中虚拟点光源数量的增加,本文算法能够取得更大的效率提升。

实验环境为NVIDIA GeForce RTX 2070 GPU、Intel i7-9750H CPU、32 GB内存。若无特殊说明,渲染图像分辨率为1 920 × 1 080像素,虚拟点光源由分辨率为512 × 512像素的反射阴影图生成,实验使用8 × 8的交叉采样模式,使用滤波半径为16的geometry-aware滤波(Segovia等,2006)过滤交叉采样产生的噪声,使用16×16的分块对虚拟点光源进行分块着色。本文算法和GGX SLC算法渲染得到的图像的差异使用均方根误差(root mean squared error,RMSE)来衡量。

1) 本文提出的光照模型的正确性验证。由于本文间接光泽反射渲染算法基于本文提出的单点光源以及多点光源光照模型,所以需要先验证本文提出的光照模型的正确性。实验在单点光源场景验证本文提出的光照模型的正确性。场景中只有一个平面,在平面上方有一个点光源。由于实验场景只有一个点光源,在光照计算时没有使用分块着色、交叉采样等光照加速算法。实验渲染图像的分辨率为800 × 600像素。图 3展示了不同粗糙度下使用本文单点光源光照模型和GGX BRDF光照模型的渲染结果。可以看出,在不同粗糙度下,本文提出的光照模型能够实现与GGX BRDF光照模型相似的渲染结果,RMSE均不超过0.002,从而验证了本文提出的光照模型的正确性。

图 3 本文单点光源光照模型和GGX BRDF光照模型在不同粗糙度下的渲染结果
Fig. 3 Comparison of rendering results between GGX BRDF lighting model and our single-point light source lighting model with different roughnes
((a)our lighting model; (b)GGX BRDF lighting model)

2) 渲染效果和效率对比。为验证本文算法能否实现与GGX SLC算法相似的渲染效果,是否具有比GGX SLC算法更高的渲染效率,在Sponza、金属指环和Museum场景进行实验,渲染结果如图 4所示。其中,Sponza场景使用的反射阴影图的分辨率为256 × 256像素。从图 4可以看出,在3种不同场景中,使用本文算法渲染得到的最终效果与GGX SLC算法得到的非常接近,RMSE均不超过0.006,验证了本文算法能够实现与GGX SLC算法相似的间接光泽反射效果。

图 4 本文算法与GGX SLC算法在不同场景下渲染效果的对比
Fig. 4 Comparison of rendering quality between GGX SLC algorithm and ours in different scenes
((a)ours; (b)GGX SLC)

表 1为本文算法和GGX SLC算法在Sponza场景渲染最终的间接光泽反射效果过程中每个Pass的时间开销。由于在漫反射计算中,本文算法和GGX SLC算法使用的都是Lambert漫反射光照模型,因此本文算法和GGX SLC算法在漫反射计算上不存在效果和效率上的差别。通过表 1可以看出,本文算法和GGX SLC算法在效率上的差异主要出现在“分块裁剪+ 光照计算”阶段,本文算法效率提升了41.0%。而两个算法使用了相同的光源分块裁剪方式,因此,渲染效率的提升源于本文算法在进行光照计算时没有使用GGX SLC算法使用的GGX BRDF光照模型,而是使用了本文的具有更低计算复杂度的间接光泽反射光照模型。

表 1 本文算法和GGX SLC算法在Sponza场景中使用渲染间接光泽反射效果时每个pass的时间开销
Table 1 Comparison of the time overhead of each pass between GGX SLC algorithm and ours when rendering indirect glossy reflection in the Sponza scene 

下载CSV
/ms
算法 G-Buffer 反射阴影图 生成虚拟点光源 交叉采样 分块裁剪+光照计算 滤波 总时间
GGX SLC 0.718 0.236 0.555 1.463 35.539 1.306 39.817
本文 0.701 0.232 0.577 1.457 19.327 1.207 23.501

3) 虚拟点光源数量的影响。为验证场景中虚拟点光源数量增多时,本文算法相比GGX SLC算法更加具有效率优势,在金属指环场景中使用不同数量的虚拟点光源进行实验,渲染结果和效率对比分别如图 5表 2所示。从图 5可以看出,当虚拟点光源数量增加时,两种算法渲染得到的间接光泽反射效果都会更好,在虚拟点光源数量相同情况下,RMSE不超过0.003,两种算法的渲染效果几乎没有区别。然而随着场景中虚拟点光源数量的增加,从表 2可以看出,使用本文算法渲染间接光泽反射效果时,能够比GGX SLC算法取得更大的效率提升,本质原因是本文算法在计算间接光泽反射时所用的多点光源模型中,只有少量的加法以及乘除法运算会随着虚拟点光源数量的增加而增加,其运算开销增加的速率低于GGX BRDF光照模型的运算开销增加速率,所以虚拟点光源数量越多,本文算法能够取得的效率提升就越大。

图 5 不同数量的虚拟点光源对本文算法及GGX SLC算法渲染效果的影响
Fig. 5 The influence of different number of virtual point lights on the rendering quality of GGX SLC algorithm and ours
((a)ours; (b)GGX SLC)

表 2 在金属指环场景使用不同数量的虚拟点光源时,本文算法与GGX SLC算法的渲染效率对比
Table 2 Comparison of rendering efficiency between GGX SLC algorithm and ours for different number of virtual point lights in the metal ring scene

下载CSV
虚拟点光源数量/个 GGX SLC/ms 本文算法/ms 本文算法效率提升/%
128×128 7.763 6.276 19.2
256×256 9.706 7.406 23.7
512×512 25.194 17.438 30.1

5 结论

本文针对GGX SLC算法在光照计算上的高开销问题,提出了一种效率更高的实时间接光泽反射算法。该算法利用线性变换球面分布来拟合GGX BRDF,以降低BRDF的计算复杂度,并相应地给出了在单、多点光源环境下的光照模型。同时,针对多点光源环境下巨大的纹理采样开销,提出了一种纹理采样的优化策略。实验结果表明,本文算法能够实现与GGX SLC算法相似的间接光泽反射效果,而且渲染效率更高。

但是,本文算法依然存在值得继续研究和改进的地方。1)物体表面粗糙度很低时,间接光泽反射效果不连续问题。该问题是因为粗糙度很低时虚拟点光源和着色点反射的光照信息更加高频,如果虚拟点光源在表面上分布得不够密集,将很难良好地重建出连续的高频光照结果。基于立即辐射度方法,在低粗糙度下渲染出连续的间接光泽反射效果是未来的研究重点之一。2)物体几何边缘抖动现象。该抖动是由交叉采样算法造成的,在物体几何边缘上法线、位置等信息会发生高频变化,导致滤波时无法重建出良好的光照结果,从而出现抖动现象。在未来工作中,可以考虑使用Metalights(Faure和Chang,2010)算法降低交叉采样带来的噪声,从而降低该抖动现象。3)某些情况拟合准确性不高问题。由于本文在拟合GGX BRDF的过程中采用了Heitz中的方法,因此会遇到很多与Heitz相同的问题,例如掠射角拟合准确性不高等问题。进一步提高在不同情况下拟合的准确性,是未来的研究方向之一。

参考文献

  • Balestra C. 2008. The technology of uncharted: drake's fortune [EB/OL]. [2021-02-22]. https://www.gdcvault.com/play/325/The-Technology-of-UNCHARTED-DRAKE
  • Beckmann P and Spizzichino A. 1987. The Scattering of Electromagnetic Waves from Rough Surfaces. Dedham: Artech House
  • Cook R L, Torrance K E. 1982. A reflectance model for computer graphics. ACM Transactions on Graphics, 1(1): 7-24 [DOI:10.1145/357290.357293]
  • Dachsbacher C, Křivánek J, Hašan M, Arbree A, Walter B, Novák J. 2014. Scalable realistic rendering with many-light methods. Computer Graphics Forum, 33(1): 88-104 [DOI:10.1111/cgf.12256]
  • Dachsbacher C and Stamminger M. 2005. Reflective shadow maps//2005 Symposium on Interactive 3D Graphics and Games. Washington District of Columbia, USA: Association for Computing Machinery: 203-231 [DOI: 10.1145/1053427.1053460]
  • Dachsbacher C and Stamminger M. 2006. Splatting indirect illumination//2006 Symposium on Interactive 3D Graphics and Games. Redwood City, USA: Association for Computing Machinery: 93-100 [DOI: 10.1145/1111411.1111428]
  • Diolatzis S, Gruson A, Jakob W, Nowrouzezahrai D, Drettakis G. 2020. Practical product path guiding using linearly transformed cosines. Computer Graphics Forum, 39(4): 23-33 [DOI:10.1111/cgf.14051]
  • Estevez A C, Kulla C. 2018. Importance sampling of many lights with adaptive tree splitting. Proceedings of the ACM on Computer Graphics and Interactive Techniques, 1(2): #25 [DOI:10.1145/3233305]
  • Faure W, Chang C F. 2010. Metalights: improved interleaved shading. Computer Graphics Forum, 29(7): 2109-2117 [DOI:10.1111/j.1467-8659.2010.01798.x]
  • Heitz E, Dupuy J, Hill S, Neubelt D. 2016. Real-time polygonal-light shading with linearly transformed cosines. ACM Transactions on Graphics, 35(4): #41 [DOI:10.1145/2897824.2925895]
  • Keller A. 1997. Instant radiosity//Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques. [s. l. ]: ACM Press/Addison-Wesley Publishing Co. : 49-56 [DOI: 10.1145/258734.258769]
  • Lagarde S and De Rousiers C. 2014. Moving frostbite to PBR [EB/OL]. [2021-08-13]. https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/s2014-pbs-frostbite-slides.pdf
  • Li T M, Aittala M, Durand F, Lehtinen J. 2018. Differentiable Monte Carlo ray tracing through edge sampling. ACM Transactions on Graphics, 37(6): #222 [DOI:10.1145/3272127.3275109]
  • Lin D Q, Yuksel C. 2020. Real-time stochastic lightcuts. Proceedings of the ACM on Computer Graphics and Interactive Techniques, 3(1): #5 [DOI:10.1145/3384543]
  • Luksch C, Prost L, Wimmer M. 2020. Real-time approximation of photometric polygonal lights. Proceedings of the ACM on Computer Graphics and Interactive Techniques, 3(1): #4 [DOI:10.1145/3384537]
  • Luksch C, Wimmer M and Schwärzler M. 2019. Incrementally baked global illumination//The ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games. Montreal, Canada: Association for Computing Machinery: #4 [DOI: 10.1145/3306131.3317015]
  • McAuley S, Hill S, Hoffman N, Gotanda Y, Smits B, Burley B and Martinez A. 2012. Practical physically-based shading in film and game production//ACM SIGGRAPH 2012 Courses, New York, USA: ACM: 1-7 [DOI: 10.1145/2343483.2343493]
  • Moreau P and Clarberg P. 2019. Importance sampling of many lights on the GPU//Ray Tracing Gems. Berkeley, CA: Apress: 255-283 [DOI: 10.1007/978-1-4842-4427-2_18]
  • Olsson O, Billeter M and Assarsson U. 2012. Clustered deferred and forward shading//Proceedings of the 4th ACM SIGGRAPH/Eurographics Conference on High-Performance Graphics. Paris, France: The Eurographics Association: 87-96 [DOI: 10.2312/EGGH/HPG12/087-096]
  • Phong B T. 1975. Illumination for computer generated pictures. Communications of the ACM, 18(6): 311-317 [DOI:10.1145/360825.360839]
  • Segovia B, Iehl J C, Mitanchey R and Péroche B. 2006. Non-interleaved deferred shading of interleaved sample patterns//The 21st ACM SIGGRAPH/EUROGRAPHICS Symposium on Graphics Hardware. Vienna, Austria: Association for Computing Machinery: 53-60 [DOI: 10.1145/1283900.1283909]
  • Tokuyoshi Y, Harada T. 2016. Stochastic light culling. Journal of Computer Graphics Techniques, 5(1): 35-60
  • Tokuyoshi Y, Harada T. 2017. Stochastic light culling for VPLs on GGX microsurfaces. Computer Graphics Forum, 36(4): 55-63 [DOI:10.1111/cgf.13224]
  • Vévoda P, Kondapaneni I, Křivánek J. 2018. Bayesian online regression for adaptive direct illumination sampling. ACM Transactions on Graphics, 37(4): #125 [DOI:10.1145/3197517.3201340]
  • Walter B, Arbree A, Bala K and Greenberg D P. 2006. Multidimensional lightcuts//Proceedings of ACM SIGGRAPH 2006 Papers. Boston, USA: Association for Computing Machinery: 1081-1088 [DOI: 10.1145/1179352.1141997]
  • Walter B, Fernandez S, Arbree A, Bala K, Donikian M and Greenberg D P. 2005. Lightcuts: a scalable approach to illumination//Proceedings of ACM SIGGRAPH 2005 Papers. Los Angeles, USA: Association for Computing Machinery: 1098-1107 [DOI: 10.1145/1186822.1073318]
  • Walter B, Khungurn P, Bala K. 2012. Bidirectional lightcuts. ACM Transactions on Graphics, 31(4): #59 [DOI:10.1145/2185520.2185555]
  • Walter B, Marschner S R, Li H S and Torrance K E. 2007. Microfacet models for refraction through rough surfaces//Proceedings of the 18th Eurographics Conference on Rendering Techniques. Grenoble, France: Eurographics Association: 195-206
  • Wang L L, Li R Z, Shi X H, Yan L Q and Li Z C. 2020. Foveated instant radiosity//2020 IEEE International Symposium on Mixed and Augmented Reality (ISMAR). Porto de Galinhas, Brazil: IEEE: 1-11 [DOI: 10.1109/ISMAR50242.2020.00017]
  • Yuksel C. 2019. Stochastic lightcuts//Proceedings of 2019 Conference on High-Performance Graphics. Strasbourg, France: The Eurographics Association: 27-32 [DOI: 10.2312/hpg.20191192]