2

我在移动定向光投射阴影时遇到了 Z-fighting 问题。

在渲染阴影贴图时,我正在尝试修改光栅化器配置。有三个与深度偏差相关的字段(DepthBias、SlopedScaleDepthBias、DepthBiasClamp),无论我如何修改它们,我都找不到一个好的值——我不知道什么值范围是合适的。

是否有适用于大多数场景的普遍接受/“标准”的倾斜比例/偏差值集?我意识到有极端情况,但我只想让一般情况正常工作。

4

1 回答 1

1

没有标准的偏差值集。实现阴影贴图更像是艺术而不是科学 :)。

  • 第一个 ACME 来源是阴影贴图精度。确保阴影投射光的近平面和远平面尽可能紧密。近平面之前的所有物体都可以煎饼,因为它们的确切深度并不重要。
  • 第二个 ACME 来源是阴影贴图分辨率。对于阳光,您应该使用至少 3 个 1024x1012 级联的级联阴影贴图,阴影距离约为 100-200 米。一张投影均匀的阴影贴图很难覆盖相似的阴影距离。
  • 第三个 ACME 源是宽阴影图过滤器,如 PCF,因为在宽内核中使用单个深度深度比较值是不够的。有很多方法可以修复它,但没有一个是强大的。

总而言之,一个带有一些级联和一些偏差调整的紧密平截头体足以让一般情况正常工作。通过禁用阴影过滤开始调整,仅当基本阴影贴图足够强大时才调整过滤。

还有一些其他有趣的方法,其中大部分都在出色的演示中实现:Matt Pettineo - “阴影技术的采样”

  • 阴影贴图渲染期间的翻转剔除(这会用粉刺换取彼得平移)。
  • 法线偏移阴影贴图对偏差有很好的效果,但在着色期间需要有顶点法线。
  • 基于方差的方法(ESM、VSM、EVSM)完全消除了偏差问题,但有其他缺点(漏光和/或性能问题)。
于 2015-07-27T21:17:03.547 回答