(一)、习题解答
1、EXERCISE1
本习题中,我们只需要对light的strength进行修改即可,需要注意的是,光照强度不能为负,因此我们需要将sin后的strength值映射到[0,1]范围内。
mMainPassCB.Lights[0].Strength = { sin(gt.TotalTime()) / 2 + 0.5f ,0.0f,0.0f};
2、EXERCISE2
本习题我们只需要修改相关材质的Roughness就可以了。
3、EXERCISE3
三光源系统是布景中常用的打光方式,三光源系统能比较好的模拟自然光照情况,不会出现局部过亮或过暗的现象。
4、EXERCISE4
按照题目要求,我们需要添加10个点光源,为了区别,我们左右两排灯光使用不用的颜色。
5、EXERCISE5
将点光换成聚光灯。
6、EXERCISE6
本题是从Directx11中顺延过来的,但本章描述的光照公式更加的基于物理,与Directx11中的描述不太一样,在本题中Kd,Ks如下所示:
卡通渲染颜色不是连续的,呈现跳跃的特点,因此,本题,我们需要修改LightingUtil.hlsh中的ComputeDirectionalLight和BlinnPhong光照模型。渲染结果如下: