Real-Time Global lllumination
实时全局光照在游戏中具有重要的地位,对于营造逼真的视觉效果和增强游戏的沉浸感至关重要。
Precomputed Radiance Transfer (PRT)
Precomputed Radiance Transfer (PRT)既可以做Enviroment Lighting,也可以用于全局光照,作为一个承上启下的内容,所以我把它放在了实时全局光照总篇的开头。
Background knowledge
Basis Functions
基函数指的是一组函数,用于表示其他复杂函数或数据的线性组合。
Spherical Harmonics(球谐函数)
球谐函数是一系列定义在球面上的二维基函数。
球谐函数是正交归一的,即在单位球面上的积分为1,并且不同球谐函数之间的内积为0;可以轻松的做projection/reconstruction;旋转后可以被同阶的基函数线性组合来表示;
PRT
L、V、BRDF(入射光/出射光)都可以化为一个2纬的球面函数。
另外提一句,预计算V项实际上无需考虑摄像机关系,因为此处的V项实际上是采样点(Shading Point)与周围环境的遮蔽关系,并非是与相机的关系。
基本两步(假设场景中只有光照发生变化):
1.预计算Lighting,Lighting可以拆分为一系列的基函数。
2.light transport不变,如果是Diffuse Case,则BRDF为常数,其实相当于light transport部分对基函数的投影。可以做如下拆分(即dot product):
如果是Glossy Case(即 matrix multiplication):
在每个不同O(View Direction)上都对应着不同的BRDF,对应着一个Vector如上可以拆分为一组基函数的和。最后得到的结果也是关于O的一个向量。
PRT限制
SH可以利用高阶来描述非常“Glossy”的情况,即相当高频的信息,但是代价相当大。