前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ReSTIR论文Review

ReSTIR论文Review

作者头像
Peter Lu
发布2021-06-21 20:05:29
1.3K0
发布2021-06-21 20:05:29
举报
文章被收录于专栏:LETLET

‘Spatiotemporal reservoir resampling for real-time ray tracing with dynamic direct lighting’这篇论文是Wojciech团队的Benedikt Bitterli(一作)于2020年发表在SIGGRAPH,并得到了广泛的好评,这在实时渲染领域实属难得。

问题与贡献

该论文主要针对存在百万级的动态面光源的复杂大场景,考虑正确的阴影和brdf材质,而且还要保证在GPU下实时渲染的能力。因此,论文的目标就是在低采样下保证好的效果,支持动态场景(无法预计算)且算法具备并行能力。

基于rendering equation,一条光路的radiance公式如下:

这样,当我们计算光路

(pdf)时,这是非常困难的。如上面的公式,有很多因子影响这个pdf,比如场景中各光源

的远近强弱,物体材质的brdf属性不同,物体遮盖导致的可见性,以及geometric factor,物体之间的远近这些因素都会影响最终结果。通常,我们只会考虑其中一个因子,比如brdf或光源,或者缓存好可见性,或path guiding中用复杂的场景树(5D)来记录所有因子产生的影响,这些方案都存在一定的缺点,要么采样开销过大,要么只考虑部分因子,要么需要维护复杂的场景树。

ReSTIR的主要贡献是近似的考虑了全部因子的pdf,没有复杂的数据结构,有固定的内存消耗,并且每帧的计算量都固定。同时,最重要的是,这个算法在应用上很简单。

Resampled Importance Sampling (RIS)

该论文主要采用了RIS这种采样策略。当函数

存在一个不错的估计方法

),我们称其为target distribution,但很遗憾,该方法不能用于采样。这样,我们找一个合适的candidate distribution,可以用于采样,比如

)。

通过

,我们可以采样

个备选样本

,然后,从这个样本集合

中以如下的概率采样:

此时,当我们选中某一个样本

时,对应的渲染方程的积分解是:

同理,产生N个样本时对应的解是:

这里,当

时,RIS是无偏的。该算法的思路就好比你第一次去一家饭馆吃饭,自然不知道这家饭馆的特色菜,所以就让老板给推荐,然后你在推荐中选择你个人喜欢的,这样双向选择后自然更符合你的预期(做的好且你喜欢)。

Weighted Reservoir sampling

但这个算法对GPU并不友好,因为你需要预先存储M个样本,这在并行中是一个大的负担,因此,论文中引入了这个蓄水池采样的采样策略。该策略是一种stream-based采样算法,假设数据流长度N很大,且N直到处理完所有数据之前都不可知,在只遍历一遍数据(O(N))的情况下,能够随机选取出m个不重复的数据。而选择某个样本的概率是:

两个采样算法的结合,称为streaming RIS,这样,我们可以固定内存,采样的复杂度则是

Spatiotemporal Reuse

至此,我们的采样仅针对图片中的单一像素,如果我们能够把采样扩展到时域和空域中,在不同帧或相邻像素之间采用不同的pdf和积分域,然后通过MIS的思路合并在一起,则可以进一步的提高采样的效率。

上图是在空域上的一种方式,这里,我们将单一像素的样本积累,这时只有两个变量,当前像素经过RIS后的最终采样样本

和对应 的权重和

,然后在相邻像素(比如32像素之间)之间随机的抓取k个合并,然后在执行一次采样,获取最后的样本,进而提高采样的效果。

而时域则更直接,基于backprojection,实现样本在不同时间下的采集,也算是denoise的主流思想。

最后,我们还需要判断第二轮采样时产生的visibility的问题,丢弃掉存在遮盖的样本。

Unbiased

如上的算法看上去很自然,效果也不错,但考虑到第二轮采样,需要推导其是否无偏。这里,通过公式1可得:

我们希望

,从而保证是无偏的。这里,存在一个联合分布,

是对该联合分布的边缘分布,各种集合

下采样y概率和,我们把各种采样策略下能够获取样本

的集合记作:

经过推导可得:

显然,这里要保证后一项等于1,也就是不同的采样策略下避免存在pdf小于零的现象,通过公式可见,如果不排除这类情况,最终的渲染效果会偏暗一些。通过公式2可得,问题出在M上:当我们在某一个像素点

收集临近的样本时,该样本的pdf可能为零,比如在半球面下的样本,通常需要扔掉,从而获取一个准确的M值

这个检查的计算量不小,因此性能上会有一些影响。为了偶尔几个恐怖分子而加强安保,这个消耗无疑是巨大的,因此,论文中引入了一种简单的检查方式,通过法线和深度,如果临近像素间的法线和深度差超过了一个阈值,则认为该样本无效。这个算法简单有效,但也引入了bias。

如下是该算法的效果:

个人而言,这篇论文确实学到很多,从RIS+Reservoir,以及在时域和空域上的应用,还有从数学证明上保证无偏的处理,不仅逻辑上很连贯,而且数学推导后的结果很简单,数学上很优雅,而且还能应用在GPU,实时渲染领域,非常厉害。其次,通常,实时渲染会运用大量的近似来计算radiance,引入了bias,而这篇论文优化pdf,并保证其期望值是正确的,从而实现了无偏的实时渲染能力。最近看这篇论文时,看到一作说今年秋季就会去NV从事渲染研究,另一位渲染大神Wenzel感概“为何这几年NV能够吸引所有图形学领域的顶尖人才?”

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-05-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LET 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档