Opengl es GLSL:获取深度缓冲区的最小可解析差异

Opengl es GLSL:获取深度缓冲区的最小可解析差异,opengl-es,Opengl Es,我想在GLSL着色器中移动顶点,以确保它们以最小的移动量位于其他顶点的前面。是否有一种可移植的方法可以从顶点着色器内部或从CPU端提取给定深度缓冲区附件的此值,以便将其作为常量发送到着色器?方法应与第3.1条兼容 谢谢 是否有一种可移植的方法可以从顶点着色器内部或CPU端提取给定深度缓冲区附件的此值,以便将其作为常量发送到着色器 GPU并不是这样工作的 顶点着色不知道三角形或任何片段阶段操作。在为顶点着色时,当前帧缓冲区深度甚至不存在-尤其是在移动设备上常见的基于平铺的GPU上-因此您无法知道“

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

谢谢

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

GPU并不是这样工作的

顶点着色不知道三角形或任何片段阶段操作。在为顶点着色时,当前帧缓冲区深度甚至不存在-尤其是在移动设备上常见的基于平铺的GPU上-因此您无法知道“在前面”应该是什么

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

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

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

GPU并不是这样工作的

顶点着色不知道三角形或任何片段阶段操作。在为顶点着色时,当前帧缓冲区深度甚至不存在-尤其是在移动设备上常见的基于平铺的GPU上-因此您无法知道“在前面”应该是什么

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


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

这不完全是您想要的,但是您已经看过了吗?谢谢您的建议。问题是,这将需要在一个单独的drawcall贴花,我不想要这个。这不完全是你想要的,但你已经看过了吗?谢谢你的建议。问题是,这将需要在一个单独的抽签通知贴花,我不希望这样。