阴影贴图问题

时间:2018-05-17 17:41:14

标签: graphics 3d direct3d terrain shadow-mapping

我实施了阴影贴图以在地形上生成阴影。 我从灯光的角度渲染场景(或投射阴影的对象),然后生成要在第二次渲染过程中采样的深度贴图(如Web上的所有教程所述)。 它似乎工作正常,但后来我注意到山上的物体投下了不止一个阴影:

enter image description here

我认为这是正确的行为,因为我在深度图生成期间不渲染地形(右上角的小四边形在第一次渲染过程中显示深度缓冲),因此更多的地形碎片看起来像是在它们后面从光的角度来看物体。 没有关于阴影映射的教程似乎提到了这个问题。 我错过了什么,或者这种阴影生成技术是非常基础的,可能会发生像这样的问题吗?

修改

这是我的渲染代码:

// in my Render() method:

    mShadowRenderer.SetLight(*mLights[0]);
    mShadowRenderer.Render();

    RenderSkyBox();
    RenderEntities();
    RenderGeometryTerrain(mTerrains[0], 
    mShadowRenderer.GetLightViewProjectionMatrix());

shadowRenderer是一个类,负责渲染到屏幕外缓冲区并返回深度贴图作为着色器资源视图。当我调用render方法时,深度贴图会添加到地形中,因此可以在terrai像素着色器中对其进行采样以生成阴影。

1 个答案:

答案 0 :(得分:0)

此外,还需要将地形渲染到阴影贴图/深度贴图