实时全局光照(Real-time Global Illumination)与Reflective Shadow Maps(RSM)

发布于:2022-11-13 ⋅ 阅读:(351) ⋅ 点赞:(0)

1 概述

在这里插入图片描述

1.1 什么是全局光照(GI)?

全局光照 = 直接光照 + 间接光照,GI非常重要,但是很复杂,但如果只有考虑直接光照,很多地方都是黑的,减少了渲染的真实感。

1.2 光照模型处理间接光照的方法

Bling-Phone模型处理间接光照的方法:假设接收各个点的间接光照都是相同的,分解为环境光项。

1.3 实时全局光照的思想

实时渲染中,通常只考虑一次间接光照,把一切被直接光照照亮的物体称为次级光源。

2 GI的主要问题

需要知道什么来计算着色点p的间接光照?

主要有两项:

  1. 哪些surface patches能被直接照亮?
  2. 每一个surface path对着色点p的贡献是多少?

3 方法一:Reflective Shadow Maps(RSM)

在游戏中常常用来做手电筒(flashlights)的效果。

3.1 使用shadow map来寻找能被直接照亮的点

思想:将每一个shadow map上的像素当成次级光源。

问题:需要知道每个像素位置每个出射方向的radiance,但实际上只能知道到相机的方向。

假设:所有的反射物都是diffuse的(不要求点p是diffuse的),因此点p的所有出射方向是相同的。

3.2 对直接照亮的patch进行积分计算着色点p的contribution

在这里插入图片描述

L o ( p , ω o ) = ∫ Ω p a t c h L i ( p , ω i ) V ( p , ω i ) f r ( p , ω i , ω o ) cos ⁡ θ i   d ω i = ∫ A p a t c h L i ( q → p ) V ( p , ω i ) f r ( p , q → p , ω o ) cos ⁡ θ p cos ⁡ θ q ∥ q − p ∥ 2   d A \begin{aligned} L_o\left(\mathrm{p}, \omega_o\right) &=\int_{\Omega_{\mathrm{patch}}} L_i\left(\mathrm{p}, \omega_i\right) V\left(\mathrm{p}, \omega_i\right) f_r\left(\mathrm{p}, \omega_i, \omega_o\right) \cos \theta_i \mathrm{~d} \omega_i \\ &=\int_{A_{\mathrm{patch}}} L_i(\mathrm{q} \rightarrow \mathrm{p}) V\left(\mathrm{p}, \omega_i\right) f_r\left(\mathrm{p}, \mathrm{q} \rightarrow \mathrm{p}, \omega_o\right) \frac{\cos \theta_p \cos \theta_q}{\|q-p\|^2} \mathrm{~d} A \end{aligned} Lo(p,ωo)=ΩpatchLi(p,ωi)V(p,ωi)fr(p,ωi,ωo)cosθi dωi=ApatchLi(qp)V(p,ωi)fr(p,qp,ωo)qp2cosθpcosθq dA

由于假设平面是漫反射的,所以上式中,

  • f r = ρ π f_r=\frac{\rho}{\pi} fr=πρ
  • L i = f r ⋅ Φ d A L_i=f_r·\frac{\Phi}{dA} Li=frdAΦ
  • 因此上式可以写为 E p ( x , n ) = Φ p max ⁡ { 0 , ⟨ n p ∣ x − x p ⟩ } max ⁡ { 0 , ⟨ n ∣ x p − x ⟩ } ∥ x − x p ∥ 4 E_p(x, n)=\Phi_p \frac{\max \left\{0,\left\langle n_p \mid x-x_p\right\rangle\right\} \max \left\{0,\left\langle n \mid x_p-x\right\rangle\right\}}{\left\|x-x_p\right\|^{4}} Ep(x,n)=Φpxxp4max{0,npxxp}max{0,nxpx}

3.3 RSM的问题:处理每个像素的Visibility 、Orientation、Distance

在这里插入图片描述

  • Visibility很难获取,因此干脆就不做处理。
  • Orientation、Distance等占用空间比较大,因此要想办法减少存储量。

3.3.1 Acceleration 加速方法

  • 理论上,所有shadow map中的像素都对p有贡献,但是只要取离得比较近的次级光源就可以了。
  • 或者使用某种采样算法来减少采样点。
那么如何知道哪些光源比较近?

在这里插入图片描述
假设shadow map上离得比较近的点在世界坐标上也比较近。

3.3.2 RSM中需要存储:Depth、world coordinates、normal、flux。

在这里插入图片描述

3.4 RSM的优点和缺点

优点:容易实现(Shadow Map)。

缺点:

  1. 有多少直接光源就做多少shadow map。
  2. 不能计算反射物到shading point的visibility。
  3. 做了很多大胆的假设:diffuse reflectors, depth as distance.
  4. 需要在采样率和质量之间进行trade off.
本文含有隐藏内容,请 开通VIP 后查看