Introduction to 3D Game Programming with Directx12 Chapter8

(一)、习题解答

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就可以了。

这里写图片描述

水的材质Roughness设置为0

这里写图片描述

水的材质Roughness设置为0.8

3、EXERCISE3

  三光源系统是布景中常用的打光方式,三光源系统能比较好的模拟自然光照情况,不会出现局部过亮或过暗的现象。

这里写图片描述

4、EXERCISE4

  按照题目要求,我们需要添加10个点光源,为了区别,我们左右两排灯光使用不用的颜色。

这里写图片描述

5、EXERCISE5

  将点光换成聚光灯。

这里写图片描述

6、EXERCISE6

  本题是从Directx11中顺延过来的,但本章描述的光照公式更加的基于物理,与Directx11中的描述不太一样,在本题中Kd,Ks如下所示:

k d = m a x ( L . n , 0 )

k d = m a x ( L . n , 0 ) . R f ( α h ) m + 8 8 . ( n . h ) m

  卡通渲染颜色不是连续的,呈现跳跃的特点,因此,本题,我们需要修改LightingUtil.hlsh中的ComputeDirectionalLight和BlinnPhong光照模型。渲染结果如下:

这里写图片描述

(二)、源码下载

本章习题解答源码下载 源码下载

猜你喜欢

转载自blog.csdn.net/yolon3000/article/details/79886892