文章目录
前言
在之前的文章中,我们已经知道了 SimpleLit 下的主光数据怎么获取。
有了这些数据,我们就可以计算 Lambert漫反射 和 BlinnPhone高光反射 了。
一、Lambert漫反射计算1
- 我们在获取了主光信息后
Light mainLight = GetMainLight1(inputData, shadowMask, aoFactor);
- 就来到了 Lambert 漫反射的计算(这里同时包含了实时光照 和 全局光照GI的计算)
MixRealtimeAndBakedGI(mainLight, inputData.normalWS, inputData.bakedGI, aoFactor);
- 我们来分析一下 MixRealtimeAndBakedGI 函数
1、MixRealtimeAndBakedGI 函数有三个重载
- 我们这里为了方便称呼,把他们分别称为 1号、2号、3号重载
- 调用时,我们首先调用了 3号
2、3号 调用了 2号
3、1号调用了 SubtractDirectMainLightFromLightmap函数
- 该函数就是实现了 Lambert漫反射计算的核心部分 同时混合了 GI
4、我们重点来看 Lambert漫反射的实现部分
- 得到