我实施了阴影贴图以在地形上生成阴影。 我从灯光的角度渲染场景(或投射阴影的对象),然后生成要在第二次渲染过程中采样的深度贴图(如Web上的所有教程所述)。 它似乎工作正常,但后来我注意到山上的物体投下了不止一个阴影:
我认为这是正确的行为,因为我在深度图生成期间不渲染地形(右上角的小四边形在第一次渲染过程中显示深度缓冲),因此更多的地形碎片看起来像是在它们后面从光的角度来看物体。 没有关于阴影映射的教程似乎提到了这个问题。 我错过了什么,或者这种阴影生成技术是非常基础的,可能会发生像这样的问题吗?
修改
这是我的渲染代码:
// in my Render() method:
mShadowRenderer.SetLight(*mLights[0]);
mShadowRenderer.Render();
RenderSkyBox();
RenderEntities();
RenderGeometryTerrain(mTerrains[0],
mShadowRenderer.GetLightViewProjectionMatrix());
shadowRenderer是一个类,负责渲染到屏幕外缓冲区并返回深度贴图作为着色器资源视图。当我调用render方法时,深度贴图会添加到地形中,因此可以在terrai像素着色器中对其进行采样以生成阴影。
答案 0 :(得分:0)
此外,还需要将地形渲染到阴影贴图/深度贴图