Dynamic Diffuse Global Illumination Resampling

本文最后更新于:1 年前

Dynamic Diffuse Global Illumination Resampling

数学背景

渲染方程:

image-20221110155440456

L:出射光辐照度 Le:光源辐照度 Tf:BSDF

其中:

image-20221110160601818

Tfd:diffuse Tfg:glossy

结论image-20221110161207017是没有直接可见光源的漫射传输辐射的近似值。将上述两式带入得

image-20221110161445332

缺少高阶glossy传输

DDGI Resampling Overview

  1. 在场景的所有曲面上生成候选样本。为此,我们均匀地对发射表面上的少量位置进行采样,并通过在从BSDF采样的方向上跟踪次级射线来生成额外的采样。

image-20221110162307099

  1. 我们通过将ReSTIR算法近似计算发射光Le和DDGI之和,以统一的方式计算直接和间接照明。左:采样两个点。一个(红色)在发射表面上采样,另一个(绿色,y)在主顶点x处通过BSDF采样进行采样。右:在像素和过去帧中的所有采样都转换为面积度量的情况下,以与Le+LDDGI成比例的概率选择单个采样z,并跟踪阴影光线(红色)。通过Kollig和Keller[KK06]的方法,通过组合来自y和z的反射光,以低方差估计离开x朝向相机的辐射。通过递归(蓝色)估计y和z处的(近)镜面传输,并通过LDDGI估计剩余传输。

  2. 通过首先从与样本贡献成比例的加权存储库中采样,然后在相邻像素之间进行空间重采样,并在前一帧之间进行时间重采样,从而选择一个候选。与Le+LDDG之和成比例。

  3. 将一条阴影光线跟踪到选定的采样点。

  4. 如果可见,使用发射分布Le并添加DDGI体积的贡献,从该采样点进行着色。

    原始DDGI只有diffuse,需要添加glossy贡献。

    image-20221111152139235

Augmenting the DDGI Approximation

简单的DDGI仅包括漫反射间接辐射。从主顶点半球上的次顶点积分LDDGI会导致图像太暗,因为DDGI近似缺少Le和非漫反射传输的辐射。事实上,将这些缺失的项添加到DDGI近似中可以恢复传输算子的近似。

image-20221111134724184

给定3D位置和2D正常向量,DDGI探头体积存储间接漫反射的辐照度,通过重复评估以下双反弹传输来近似:

image-20221111140239402

其中,E是探头在n方向上收集的总辐照度,L是漫反射贡献出的均匀出射辐照度。在所有DDGI探针的中心x处对该方程的重复蒙特卡罗估计收敛于近似值:

image-20221111140559350

优化,将漫反射项Tfd去掉:

image-20221111141701706

此时DDGI将包括所有的辐照度传输类型,因此LDDGI+项可以近似为:

image-20221111141957713

在探针更新方程(5)中包括直接照明(即光源项Le)产生的结果在探针中心比它们遮蔽的表面更靠近光源时太亮。这导致曲面接收到的(二次)直接照明比它们应该接收到的更多——这是基于探针的缓存中的一个常见问题。为了缓解这种情况,我们通过查询探针在向后方向(红色虚线)上已经计算出的平均能见度,将该值剪裁到探针边界(粉红色),并将其添加到相应探针更新射线的长度(红色实线箭头),来近似计算到表面的真实距离。因为更新光线是按每个探针跟踪的,所以这只需要读取纹理,而不需要任何探针权重计算。然后,我们使用总距离的平方反比,即实心+虚线,来衰减Le。与探头中心的直接照明相比,这一理论略微低估了直接照明。因此,我们使用一个用户可调的滑块来缩放每个场景的附加衰减,以校正亮度差异,否则,亮度差异将是显著的偏差源.

image-20221111142312384

Including Glossy Illumination

Majercik等人观察到,通过用镜面反射的方向ωr代替法线n,irradiance近似还可以用于非常粗略地近似镜面传输。辐照度EDDGI(x,ωr)可以重新解释为入射辐照度的预滤波(通过余弦项作为核)粗略近似。要获得(预滤波)辐射的单位,必须将EDDGI(x,ωr)除以2π–积分度量下余弦的质量。在图中,绿色叶显示入射辐射的余弦加权预滤波,红色箭头指示EDDGI的查询方向。

image-20221111143032314

扩展之前的方程:

image-20221111143142454

但glossy项并不是可以盲目叠加计算。因此需要有一个glossy的判定。我们递归地跟踪着色路径,直到它们的散射足迹足够分散以模糊DDGI的视觉伪影。更具体地说,我们将顶点为x1···xn的路径的足迹近似为:

image-20221111151300026

其中pi是第i个顶点处的BSDF采样密度。在主顶点,p1与整个BSDF f成比例,而pi;i>1仅与BSDF fg的光泽部分成比例,因为我们只需提前终止递归,并在采样漫反射部分时查询ρ(xn)πEDDGI+(xn,nn)。对于光泽部分采样,一旦a(x1··xn)>a0·c,我们就通过估计等式(6)的光泽积分来终止递归:

image-20221111151843105

c = 0.2;

image-20221111152057594

Improved Performance by Caching DDGI Queries

在时空重采样步骤中,我们的算法需要许多DDGI查询:每个候选对阴影像素的贡献一个,在我们的实现中,每个像素对应1个时空候选和3个空间候选。在图示中,我们描述了仅在2个空间候选y2和y3之间重采样以在中心顶点x1处进行着色的简单情况。对于每个候选,我们必须查询其属性LDDGI+(yi,yi→x1)到中心顶点,其中y→x是从y指向x的方向向量(虚线箭头)。

image-20221111153413289

通过使用#vertices值LDDGI+(yi,yi→xi),在任何情况下都必须对其进行评估,以对每个顶点xi进行着色。这节省了候选查询的系数。重要的是,在重采样步骤中使用近似值不会在渲染图像中引入额外的偏差。因为我们在初始样本生成中包括了BSDF样本,从而保证了反射辐射的所有方向的正概率密度。这会产生额外的噪声,但相对于使用DDGI+近似而不进行重采样,不会产生额外的偏差。

image-20221111153918568

image-20221111153930216

Result

image-20221111154135670