首页 > 解决方案 > 阴影贴图问题

问题描述

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

在此处输入图像描述

我认为这是正确的行为,因为我在生成深度图期间不渲染地形(右上角的小四边形显示了第一次渲染过程中的深度缓冲区),所以更多的地形片段看起来像是在物体后面光的观点。不过,似乎没有关于阴影贴图的教程提到这个问题。我是否遗漏了某些东西,或者这种阴影生成技术非常基本,并且可能会出现这样的问题?

编辑

这是我的渲染代码:

// in my Render() method:

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

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

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

标签: graphics3ddirect3dterrainshadow-mapping

解决方案


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


推荐阅读