GAMES202(2)环境映射
环境映射(IBL)
环境光着色
之前我们将可见项已经拆出来进行计算了
考虑BRDF的两种情况:
这恰好满足之前所说的一种积分近似的条件
因此我们可以将渲染方程也做这样的近似:
这样渲染方程就可以被分成两部分
左侧
对于左侧的部分,相当于是我们对整个半球进行计算入射光强度。但是因为BRDF的不同,这个区域也可能可大可小,因此我们需要一个Range Query,这样自然而然想到类似MipMap的解决方案。
右侧
对于右侧的部分,我们也可以考虑通过预计算,但是右侧部分被积函数的变量实在太多。
对于BRDF项,我们采用Microfacet模型也起码需要两个参数,粗糙度和菲涅尔基础反射。这加起来就有四个浮点数,同时还要考虑角度,因此一共会有五个浮点数,我们需要建立一张五维的纹理,这显然是不可接受的。
通过各种方式进行降维,减少变量数
首先回顾两个关键项(暂时先不考虑遮蔽项),圈出来的就是上面所说的五个参数
我们在这里可以通过上下同除F,这样被积分函数不会含有R0,同时R0会被提到外面去,这样我们就可以将五个参数削减到两个变量。维度大大减少了。
用R通道记录左边被积,G通道记录右边被积。
环境光照阴影
非常难。
我们将环境光看成不同角度的视图。
- 实际上是一个多光源问题。
- 不可能对每个光源生成一个shadow map
- 从采样的角度:
- 很难通过重要性采样来获得准确的可见性值
- 可以用AO近似,但是使用AO近似是假设constant lighting的。
工业界解决方案
- 只从最亮的一个光源生成阴影。
其他相关研究
- Imperfect shadow maps
- Light cuts
- 对光源进行分类、近似。实际上解决的是离线渲染的多光源问题。
- RTRT(实时光追)
- 很可能是终极方案。
- Precomputed Radiance Transfer(之后会讲)
对于采样部分的复习,将卷积当成一种采样
基函数的概念
这里事实上省去了基函数的正交性,可能会对之后求基函数系数造成理解上的影响。