用深度测试绘制地形?

时间:2014-03-21 10:49:53

标签: windows-runtime directx-11 depth-testing

我正在尝试在不平坦的地形上渲染几何形状(从高度图/形状几何体加载也是基于高度图上的平均高度生成的,但它们并不完全适合它)。我有以下问题 - 一些地形显示通过图片上显示的形状。

Open Image

我需要在启用深度测试的情况下绘制地形和形状,这样它们就不会阻挡场景中的其他物体。有人可以建议一个解决方案,以确保形状始终呈现在顶部吗?提升它们并不是真的可行......我需要替换地形上实际像素的颜色,并且在像素着色器中执行此操作似乎太贵了。

提前致谢

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,这就是我解决问题的方法:

  • 首先渲染地形并保留深度缓冲区。不要渲染 任何对象
  • 渲染要放在地形上的形状的实心边界框。
  • 您需要确保您的边界框覆盖所有内容 形状覆盖的高度范围
  • 过于保守的估计是使用整体的全局最小和最大高程 地形
  • 在像素着色器中,您可以读取深度缓冲区并重建世界空间位置
  • 您检查此位置是否在您的形状内
  • 在您的情况下,您可以检查其xy(xz)投影是否在给定距离内 你给定圈子的中心
  • 将此位置转换为您的形状的局部坐标系并计算所需的颜色
  • 在渲染目标上进行Alpha混合

此方法可使形状与地形表面完美对齐。它也不会产生任何瑕疵,适用于任何地形。 可能的缺点是它需要使用延迟式阴影,我不知道你是否可以这样做。不过,我希望这可能对你有所帮助。