Opengl 片段着色器眼睛空间未缩放深度坐标

Opengl 片段着色器眼睛空间未缩放深度坐标,opengl,glsl,fragment-shader,Opengl,Glsl,Fragment Shader,我试图在GLSL片段着色器中使用场景中对象的未缩放(与前剪裁平面的真实距离)距离。gl_FragCoord.z值比我预期的要小。在我的顶点着色器中,我只使用ftTransform()来设置gl_位置。当我期望值在15到20之间时,我看到值在2到3之间 我怎样才能得到真正的眼睛空间深度? 谢谢 将您想要的任何内容作为顶点着色器的变量传递下去 片段着色器中可用的Z值已根据Z-near/Z-far(从投影矩阵)和deptrange进行了规格化。所以这不是你想要的。从技术上讲,您可以尝试通过还原顶点着色

我试图在GLSL片段着色器中使用场景中对象的未缩放(与前剪裁平面的真实距离)距离。gl_FragCoord.z值比我预期的要小。在我的顶点着色器中,我只使用ftTransform()来设置gl_位置。当我期望值在15到20之间时,我看到值在2到3之间

我怎样才能得到真正的眼睛空间深度?
谢谢

将您想要的任何内容作为顶点着色器的变量传递下去

片段着色器中可用的Z值已根据Z-near/Z-far(从投影矩阵)和deptrange进行了规格化。所以这不是你想要的。从技术上讲,您可以尝试通过还原顶点着色器之后在Z上发生的各种OpenGL操作来重建它,但这可能比只传递您想要的更麻烦(从还原投影矩阵是非线性的事实开始)


作为旁注,您将使用
gl\u ModelViewMatrix*gl\u Vertex
计算的Z是从角度看的Z,而不是近Z平面。

太棒了,我刚刚将
-(gl\u ModelViewMatrix*gl\u Vertex)Z
作为一个可变浮点传递,这正是我所需要的