[gdc20]Fast Denoising With Self Stabilizing Recurrent Blurs

在这里插入图片描述

gdc20上nvidia带来,整体上是对于metro gdc19的在denoise方面(地铁中的光追GI)的延续和持续的改进,在大思路比较近似的情况下,在从整体到细节上做了提升;
研究的工作也比较细致,读起来很有感觉;

overview

在这里插入图片描述

整体上是一个denoiser,用于使用monte carlo做ray tracing然后denoise的情况(而不是类似surfel based的技术);
在space&temporal上面的weight选择上,结合业内的技术做法,有很多的改进综合,效率和效果都比较好;

pipeline:
在这里插入图片描述
整体是这样的一个过程,可以达到比较好的效果,

  • 质量更好
  • 可以同时用于specular和diffuse
    效率也比较可以接受:
    在这里插入图片描述
    一般我们使用dlss等,可以把这个降到更低;

重点关注:importance sampling

整体技术本身:围绕signal processing来的,realtime graphics本身就是对signal processing应用非常重的点,而denoise这里更是;
甚至可以说就是如何让整个过程的importance sampling做的更好;

recurrent blur

所谓的recurrent blur就是这样:accumulation接着blur,然后再来一轮这种
在这里插入图片描述
相比于下面两种方式:
在这里插入图片描述
recurrent blur本身信息更加充分,同时有

  • 低频的noisy的输入信息
  • 高频的结果信息(结果,上一帧的结果)

两者都有的情况下,更容易做好importance sampling:

  • 比如在有occluded的情况下,使用fallback方案
  • 在有变动比较大的情况下,进行剔除等等

整体上是这样一个思路,也和地铁的方案比较像;

recurrent blur的稳定性&细节

在这里插入图片描述
这里使用成功accumulate的frame数量来控制blur的radius,越是成功accumulate的sample,radius就越小(如图中白色部分),如果是出现历史积累少的点(occluded等因素),那么radius就大;
这样也尽最大程度的让结果stable&保留细节:

  • 积累frame少的case,就是用大radius,这样就减少artifact:更加stable
  • 积累frame多的case,就使用小radius,这样在stable的前提下保留更多的细节
    在这里插入图片描述
    (可以看到上图中,如果我们一律使用大radius的,就会最右面一样,虽然非常stable,但是细节都没了,可以看到左边的indirect lighting shadow就好很多)
    在这里插入图片描述
    (另外再看经过几帧之后的结果)

ghost free temporal reprojection

这里上来先说了要使用linear weight而不是exponentialweight,我印象中大多数都是linear weight,所以就不展开了。
然后是ghost free temporal reprojection,

在这里插入图片描述
这里要做的就是custom bilinear filter,把不需要的坏点能够去掉即可。

hierarchical history reconstruction

会产生这样的mips(有点像glossy reflection)
在这里插入图片描述
在up sampling是用的bilateral upsampling,然后会根据:

  • accumulated frames
  • roughness
    来选择哪一个mip

其起到的作用是在bilateral upsampling的时候,可以有充分的历史信息作为fallback方案;
在这里插入图片描述

sampling space

这里就是选择对于diffuse和specular来说,最有效的sample(更好的importance sampling);
在这里插入图片描述
这里直接上结论就好了,ggx dominant direction的垂直平面上来blur;

sampling weight

在这里插入图片描述

这里的weight分为三种:

  • geometry:tangent plane上的distance
  • normal:两个normal的夹角,如果高于specular lobe的half angle,就要丢弃
  • roughness:如果sample的点和中心点差距太大,也要丢弃:
    在这里插入图片描述

生成denoiser

在这里插入图片描述
(diffuse denoiser的input/output)
在这里插入图片描述
(specular denoiser的input/output)

specular denoiser

specular denoiser更加复杂一些;

parallax

specular这里引入一个“parallax”(前后帧的view vector的变化)变量来控制积累的速度,因为在specular case下,与diffuse case不同。
diffuse再换了角度之后,普通lambertian下,都是一样的,这样motion vector就够了;
specular更多和角度有关,所以使用这个parallax来做;

hit distance

距离也引入了作为weight;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值