GLSL:获得深度缓冲区的最小可解析差值

  • 本文关键字:深度 缓冲区 GLSL opengl-es
  • 更新时间 :
  • 英文 :


我想在 GLSL 着色器中移动顶点,以保证它们以最小的移动方式位于其他顶点的前面。是否有一种可移植的方法可以从顶点着色器内部或 CPU 端为给定的深度缓冲区附件提取此值,以便我可以将其作为常量发送到着色器?方法应与GLES 3.1兼容。

谢谢。

是否有一种可移植的方法可以从顶点着色器内部或 CPU 端为给定的深度缓冲区附件提取此值,以便我可以将其作为常量发送到着色器?

这并不是GPU的真正工作方式。

顶点着色不知道三角形或任何片段阶段操作。在你对顶点进行着色时,当前的帧缓冲深度甚至不存在——尤其是在移动设备上常见的基于平铺的 GPU 上——所以你无法知道你应该"在前面"是什么。

CPU端的想法更糟糕 - 你需要在提交绘制调用时知道这一点,此时你不知道任何东西在哪里 - 所有的网格数据都将在对象空间中。

还值得注意的是,最小可解析距离不是一个常数。它是非线性的,值的分布取决于透视变换中的近剪裁位置和远剪裁位置以及实际位置的深度。

最新更新