参考资料
Tutorial 41: Multiple Light Shadow Mapping
学习记录
这篇文章中我们介绍多光源环境下的阴影映射,基于上一篇中的代码,我们只需要修改很少一部分。
我们假定有两个光源,位于场景的左右两侧,我们在 shadow.vs
中添加光源信息:
1 | //////////////////////////////////////////////////////////////////////////////// |
在 shadow.ps
中我们使用两张深度图处理两次光照,如下:
1 | //////////////////////////////////////////////////////////////////////////////// |
ShadowShaderClass
和之前不同的部分也只是增加了一份光源信息,它的声明如下:
1 | //////////////////////////////////////////////////////////////////////////////// |
修改完 ShadowShaderClass
后,我们在 GraphicsClass
里新增一个 LightClass
对象和一个 RenderToTexture
对象,并为他们进行相应的初始化。
在渲染时,我们设置光源位置为场景上方的左右两侧,然后分别渲染至纹理,最后使用两张纹理渲染最终场景,部分代码如下:
1 | // Update the position of the light. |
最终效果如下: