XNA推迟+前进,深度问题?

我在XNA 4.0中使用我的延期引擎,并且将它与forwardpipeline结合起来,以支持半透明和其他“仅前向”效果。

让我描述一下我的工作:

  1. 渲染GBuffer和所有基于材质的延期几何
  2. 最后一个组合,我将Lightbuffer和GBuffer的diffusebuffer结合在一起。 我将颜色和深度输出到rendertarget,所以我可以使用向前渲染直接绘制到RT。
  3. 渲染向前几何
  4. 然后,我从正向管道中取出RT,做后处理。
  5. 最后我把RT写到后缓冲器

题:

  • 正如你在下面的图片中看到的那样,边界框有问题。 这些是使用向前渲染绘制的,并使用我在步骤2中描述的深度缓冲区绘制。我尝试用一​​两个纹理元素在不同的方向上抵消深度缓冲区。 但似乎没有解决问题。 有没有人遇到过这个问题?

编辑:这篇文章已经从一些语句清除,以避免混淆。

在这里输入图像描述

原来,我错了。 问题的根源在步骤5中,我使用着色器将rendertarget复制到后台缓冲区。

我忘记了通过负像素X和Y来校正纹理坐标。不这样做会导致不正确的采样和颜色数据丢失,因为采样是在错误的纹理上进行的。