Opengl每个实体的阴影贴图?

R V*_*HAL 0 opengl

所以这是一个理论问题.假设我们有2个对象

  1. 一个盒子
  2. 地上

阳光垂直在上面闪耀.盒子直接在地板上方一段距离很近.现在我Shadow map在场景中将框和地板一起渲染.

但是,当我Shadow map在盒子和地板着色器内单独采样时box,它floor是一个完整的混乱,黑色和白色的条带遍布它.

但是当我创建2个单独的时候,我发现了 Shadow maps

  1. 框图
  2. 楼层地图

Box map 不包含任何对象,因为我假设框上方没有对象来对其投射阴影

Floor map 只包含盒子,因为盒子在它上面,所以它在地板上投下一个阴影

当我Shadow maps在每个相应着色器中对这2个个体进行采样时,结果是正确的.

所以我只是想知道在现实世界中,物体在各处移动,我们如何跟踪什么物体投射Shadow到什么?

我们是否Shadow maps为每个对象使用单独的.跟踪前面的东西是什么?或者我们在着色器中使用深度条件?

如果后者某些理论或算法以着色器代码的形式将非常感激.

t.n*_*ese 5

您为每个光源创建一个阴影贴图,而不是为每个对象创建一个阴影贴图.

您看到的工件称为自动阴影,很可能是因为您为阴影贴图而不是背面渲染对象的正面,并且您不添加小的偏移.

仅使用背面渲染的技巧仅适用于具有体积的封闭对象,而不适用于像地板这样的对象,唯一的方法是使用轻微的偏移.

您只创建一个阴影贴图并非必须如此,具体取决于您可能为一个光源创建多个阴影贴图的场景,以便能够获得关闭对象的详细阴影.但这并没有改变这样的事实,即阴影贴图是每个光源而不是每个对象.