环境光照:认为来自无限远的(低频)光照
- spherical map
- cube map
Shading from environment lighting(IBL)
不考虑visibility的shading
$$
\int_{\Omega^+}L_i(p,\omega_i)f_r(p,\omega_i,\omega_o)\cos \theta_id\omega_i
$$

当BRDF是glossy时,积分域较小
当BRDF是diffuse时,积分域光滑

the split sum approximation-step1
$$
L_0(p,w_o)\simeq\frac{\int_{\Omega_{fr}}L_i(p,w_i)dw_i}{\int_{\Omega_{fr}}dw_i}\cdot \int_{\Omega^+}f_r(p,w_i,w_o)\cos\theta_idw_i
$$

相当于Prefiltering of the environment lighting,滤波的大小取决于brdf的范围。
对环境贴图生成预计算的Mipmap,中间的filter size使用三线性插值。

the split sum approximation-step2
对BRDF积分的部分:
预计算,所有可能的变量参数。但是这样参数变量很多,参数空间维度非常大。
关注BRDF中的F项和NDF项

Fresnel Term
- Schlick‘s approximation
- $R(\theta) = R_0+ (1-R_0)(1-\cos\theta)^5$
NDF Term
- Beckmann distribution
- $D(h)=\frac{e^{-\frac{\tan^2\theta_h}{\alpha^2}}}{\pi\alpha^2\cos^4\theta_h}$
反射率、粗糙度、角度($n\cdot v$ )这些参数,再次分离变量

这种变形将反射率$R_0$拆分出来了
只需要对两个参数Roughness和$\cos\theta$ 储存到参数空间


Shadow from environment lighting环境光照中的阴影
Difficult
多光源问题:SM的耗费和光源数量是线性关系
采样问题:可见项V很复杂,V不能从环境中分离出来。
工业界的解决方案:从最亮的几个光源生成阴影
Related research:
- Imperfect shadow maps
- Light cuts(解决offline的多光源问题)
- RTRT(Realtime ray tracing)
- PRT
Real-time environment lighting(& global illumination)
Background knowledge
Frequency and filtering
函数乘积的积分可以看作滤波 $\int_{\Omega}f(x)g(x)dx$
低频信息:光滑函数、变化较慢
积分的频率是是由f(x)或g(x)中频率最低的决定的。
Basis function
一系列函数可以通用地表示其他函数。
$$
f(x)=\sum_ic_i\cdot B_i(x)
$$
傅里叶级数是一组基函数
Polynomial series多项式系列也可以表示一组基函数
Spherical Harmonics(SH)球谐函数
定义在球面上的一组二维基函数 $\theta,\phi$
Analogous to Fourier series in 1D类似傅里叶级数在一维的情况

第l阶SH有2l+1个
SH适用于直接分析球面上的性质。像如果把球面参数化映射到平面上,用Fourier series去展开,有一样的效果,但是像边缘的地方,重映射到球面时很可能出现裂缝,做不到Harmonic。
每个基函数$B_i(\omega)$ 由Legendre polynomial(勒让德多项式)组成
Projection投影(投影到SH空间):获取每个基函数的系数
$$
c_i = \int_{\Omega}f(\omega)B_i(\omega)d\omega
$$Reconstruction
Prefiltered env. lighting
Prefiltering + single query = no filtering + multiple queries(模糊后沿一个方向采样,相当于不滤波,在多个方向采样)

Lighting是球面上的函数,BRDF也是球面上的函数
diffuse BRDF表现为低通滤波,那么任意频率的环境光照亮diffuse BRDF的结果(product integral),都是低频的

- 仍然没有考虑shadow
Precomputed Radiance Transfer(PRT)预计算辐射度传递
Handles shadows and global illumination


认为场景其他部分不变,只有光照发生变化。
对于每个着色点(vertex)预计算light和light transport
将lighting用basis functions表示 $L(i)=\sum l_iB_i(i)$
light transport 是可以预计算的,投影到基函数空间
- 确定观察方向V,BRDF,ndotL都是一个与i有关的球面函数
DiffuseCase

预计算light transport,代表着场景是静态的。光源可以是预计算动态的
- SH的优秀性质
- 正交
- 容易投影/重建
- 易于旋转
- 旋转SH基函数,等于同阶SH基函数的线性组合
- 易于卷积
- 基函数少:低频

light transport预计算


另一种途径


积分内部,两个SHbasis相乘,p不等于q时,是正交的。
最终只需要对p求和,和前面的结果是相同的。
GlossyCase
在light transport 投影到SH时,给定任何一个观察方向o,light transport是不同的向量(BRDF) (diffuse情况不受到o的影响)
因此需要对每一个o方向进行预计算。(在工业化的应用场景中,是光照探针插值?)
将$T_i(o)$ 这个与o相关的二维函数再次投影到o方向的SHbasis。

不足
比较适用于描述低频函数(高频需要更多的SH)
动态光照,静态场景、材质:改变场景、材质会使预计算的light transport 无效
大量的预计算数据
Wavelet
不同的小波定义域不同。支持全频率的表示。



留下高频信息,低频信息放在左上角。
- 不足:不支持光照旋转