实时全局光照 2

Today

image-20230323103930316

Light Propagation Volumes (LPV)

  • 在三维空间中的光线传播场

  • 好又快,广泛应用

  • 3D 网格中的 Radiance

Steps

哪些点发出间接光,注入格子,传播光线

  1. Generation of raidance opint set scene representationimage-20230323105148572

  2. Injection of point cloud of virtual lisght sources into radiance volumeimage-20230323105342363

  3. Volumetric radiance propagationimage-20230323105519572

  4. Scene lighting with final light propagation volumeimage-20230323105644268

Problems

  • 漏光现象,light leaking

  • 可以用自适应的分割方法 :cascade,lod

Voxel Global illumination (VXGI)

场景体素化,存储光照信息。

image-20230323134530654
image-20230323134818880

每个格子需要记录 radiance,即方向和强度,还有法线分布

LPV 是使用 RSM 直接照亮像素,而 VXGI 是直接照亮体素

image-20230323135133255

LPV 照亮像素是使用当前格子内的光照,而 VXGI 要算 ConeTracing 里所有每个格子对当前像素的贡献

可以使用层级结构,进行大范围一次查询

image-20230323135258876

Diffuse 的 ConeTracing 要多次

image-20220309192717434
  • 本质就是用 3D 纹理表示 Directional ShadowMap,然后进行 RSM。

  • 从摄像机接收光的像素开始对场景进行 cone tracing,圆锥体光线追踪,

  • 遇到反射介质,可以继续向四周进行 cone tracing

GI Screen Space

SSAO

Screen Space Ambient Occlusion

通过 contect shadow 把物体区分开来,描边也是做到类似的效果

是一个全局光照的近似

屏幕空间的环境光遮蔽

feature

  • 物体接触的中间看上去有阴影

  • 容易实现

  • 对于全局光照的近似

key idea

  • 表面一点对于任意方向收到的光强一致

  • 看作是 Diffuse 物体各个方向上的 BRDF 一致

  • 各个方向可见性不一致,像素点在各个方向上的无限远处的环境光接收量不一致

  • 建模软件里称为天光

image-20230322202156358

实时渲染公式推出来的就是平均可见性 * 一个常数

image-20230323141133895

加权和除以权和就是加权平均的做法

image-20230323141331208+

为什么 cosθ 也能一起提出来

image-20230323141806694

第三种简单的推导方式

image-20230323142141827

using z-buffer

使用 z-buffer 来计算平均可见性

image-20230322202237845
  • 通过 z-buffer 大致模拟出像素点周围区域形状

  • 像素周围球体范围内随机采样点,判断点是否处于物体内部,判断接收光线的数量

  • 限制一定范围内的遮挡才有贡献,相隔较远的物体,不应当发生遮蔽

  • 只有红点过半才考虑 AO

  • 可以先少量采样加速,产生有噪声的图,再统一模糊一遍

最后更新于

这有帮助吗?