DX ShadowMap例子中的疑问,"灯光”视锥与“摄像机”视锥相差部分顶点处理?
Shadow Map先是从灯光位置渲染场景,后又从摄像机位置渲染场景。但他们一定都是渲染场景的一部分而已。
我们可以想像一下,在世界空间中,灯光视锥与摄像机视锥两个空间体一定是不能完全重合的。它们有相交
的一部分,也有不相交的一部分。
对于那些在摄像机视锥体内,但在灯光视锥体外的那部分顶点进行渲染时,这部分顶点也会传入到VS,PS中去。
当这些点在与SHADOW MAP进行查找比较时,需要转化到灯光坐标空间中去。
我想问一下,这些点因为是在灯光视锥体之外,是不是顶点坐标转换到灯光坐标空间中去之后,坐标范围会超出
[-1, 1];[-1, 1];[0, 1]这个范围。如果这样的话,再转化到纹理空间中去,其纹理坐标也会超出[0, 1];[0, 1]
这个范围吧?那进行SHADOW MAP采样时,一定不会采样到正确的纹理数据(深度值)了。那怎样进行深度值比较?
DX是怎么处理的啊?谢谢!
[解决办法]
制作shadowmap的时候,并不是做一个和灯光范围一样大小深度图,而是整个场景的。
从光源位置出发,是为了得到正确的深度信息,从而可以判断那些部分是阴影。
楼主,你可以仔细看一下上次发的那篇教程,
http://developer.nvidia.com/object/cedec_shadowmap.html
http://developer.nvidia.com/object/hwshadowmap_paper.html
[解决办法]
有一种方法是就是将场景分成块 然后对应每个块都有自己的深度图
你自己动手做一下试一下