软阴影的实现

按照那篇英文文档的方法,实现了一边软阴影,做出来的还是有点问题,可能主要是集中在那个PCF上,使用的取周围像素阴影平均值的方法,但是很明显,周围的点的深度和当前点的深度并不一样,而我们比较的阴影值仍然是使用的当前点的深度,因此会出现误差,这个误差我是自己调的,但是这样不好。然后我们再把阴影图片用Gussian Filter 进行使用两个一维卷积模糊一下,这样可以消除些锯齿,但是仍然不能完全消除,至于Z fighting是无论咋样也还是有,注意Gussian Filter的U,V的次数不能太多,不然会造成图像的偏移。现在说说主要过程。
1.渲染深度图。
2.使用PCF将带硬阴影的场景渲染出来。
3.对阴影图进行Guissian Filter模糊
4.渲染最后的场景并将3中的深度因子加到我们的最后场景中去。

过程很简单,但是实现起来确是非常麻烦,建议逐过程地测试效果。


这是做出来的效果图。只加了个Diffuse漫反射光。代码很烂,没有做任何优化工作,清理工作也没做。/Files/ttthink/MySoftShadow.rar
posted @ 2009-10-07 11:48  ttthinks  阅读(2061)  评论(1编辑  收藏  举报