经过一天断断续续对SDK例子的学习.我终于自己实现了ShadowMap…下面总结一下学习的心得.先简要概括一下实现ShadowMap的步骤,首先在灯光视角下对需要渲染阴影的场景进行渲染, 通过特殊的shader把整个场景的深度值储存到一张浮点纹理上, 然后在观察视角正常渲染整个场景,渲染的时候通过特定的shader将场景的每个象素的深度值与上一步中得到的深度值进行比较.就能渲染出场景的阴影. 简单的shadowMap就这么两步,很简单吧. 下面详细的步骤我就不说了,SDK比我说的要好得多,我只记一下在自己实现ShadowMap的时候感觉需要的问题.
1. 在第二步时要计算出一个很关键的矩阵,这个矩阵将摄像机观察空间 转换到 灯光观察投影空间,并最终经平移和反向缩放转换到深度值纹理空间里面. 如果没有这个变换我们将不能进行深度值的对应比较.
2. 要保证灯光的位置时能观察到完整的场景…这点很显然.其实现实中也是如此.不要被在做固定管线中方向光的习惯影响了.
3. 第三个问题也只有我这么粗心的人才会犯了,看在这个问题让我很抓狂的份上我把它写上来,就是在第二步渲染场景的时候别忘了设置正确的材质和纹理.-_-…
SDK例子里面那个太多东西了,还是我这个比较中要害.