文章目录
shadow map技术简介
Shadow Map网上有大把的技术文档。
简单说就是设置一个camera到需要产生阴影的光源位置,根据光源类型有不同的camera类型。
使用这个camera观察世界,生成深度图。
回到真正的camera那里,在绘制世界的时候,判断当前顶点的深度与深度图上对应位置的值。
如果顶点深度小于(根据设置,也可以大于)深度图的值,代表没有被遮挡,否则代表在阴影中。
MiniEngine中的shadowBuffer
本身就是一个深度缓冲区。稍微封装了下,方便绘制阴影深度图到buffer中
MiniEngine中的shadowCamera
这个camera啊,一直没看懂,根据官方的例子,始终无法实现正常的阴影。
考虑到camera本身已经被修改过,所以这个shadwoCamera也要修改
调试以及知其然而不知所以然的魔改过程
做好后,发现没有阴影。
两个怀疑点
- 阴影pso参数错误
- shadowCamera错误
对于1,修改了很多参数,发现也没有什么用。
于是开始调试2
- 场景中仅保留一个渲染目标,方便进行图形调试
- 设置阴影绘制的shadowCamera为正常的camera,发现可以绘制出阴影图。确定是shadowCamera的问题
- 研究shadowCamera的代码。