为什么深度失败比阴影卷的深度通过更好?

时间:2014-02-01 21:29:49

标签: opengl graphics directx

我无法理解为什么深度失败更好。相机的眼睛存在阴影体积的问题,我理解那部分。所以你需要盖住被近平面夹住的前面,以便深度通过才能工作。但是由于深度不起作用,你需要盖回脸。

是否因为远飞机的封顶比靠近飞机的封顶更容易?如果是这样,为什么会这样?

1 个答案:

答案 0 :(得分:2)

通过封顶正面无法完全解决近平面剪裁问题;当相机在阴影卷内时,它仍会在许多情况下失败。这使得它不适合具有阴影的可漫游3D环境。

即使没有盖住脸,深度失败也会起作用;它会简单地忽略体积指向无穷大的阴影。与发生深度传递的情况相比,这是很常见的情况,这是相机处于阴影中的任何时间。此外,还有硬件支持以促进Z夹紧:

OpenGL 3.2:GL_DEPTH_CLAMP

D3D10:RasterizerDesc.DepthClipEnable = FALSE.

但是,对于强大的解决方案,您通常需要对两者进行调整;两者都不是“在原始”中使用。深度通过用于自上而下的视角,因为相机永远不会处于阴影中(并且它在该领域中是非常有效的技术),其中深度失败用于FPS或其他相关游戏中,其中阴影体积内是一个问题

以下是来自archetypal of the subject的论文的专业人士和骗子的列表:

<强>深度通

  • 优点
    • 不需要为影子卷上限
    • 渲染的几何体较少
    • 两种技术的速度更快
    • 如果我们忽略近平面裁剪问题,则更容易实现
    • 不需要无限透视投影
  • 缺点
    • 由于无法解决的近平面裁剪问题而不健壮

<强>深度失败

  • 优点
    • 可以解决远距离平面削波问题的稳健解决方案 优雅
  • 缺点
    • 需要加盖以形成封闭的阴影卷
    • 由于加盖而渲染的更多几何体
    • 两种技术较慢
    • 实施起来稍微困难
    • 需要无限透视投影