开发者

Fragment Shader Eye-Space unscaled depth coordinate

开发者 https://www.devze.com 2022-12-28 16:47 出处:网络
I\'m trying to use the uns开发者_Python百科caled (true distance from the front clipping plane) distance to objects in my scene in a GLSL fragment shader.The gl_FragCoord.z value is smaller than I expe

I'm trying to use the uns开发者_Python百科caled (true distance from the front clipping plane) distance to objects in my scene in a GLSL fragment shader. The gl_FragCoord.z value is smaller than I expect. In my vertex shader, I just use ftransform() to set gl_Position. I'm seeing values between 2 and 3 when I expect them to be between 15 and 20.

How can I get the real eye-space depth? Thanks!


Pass whatever you want down as a varying from the vertex shader.

the Z value available in the fragment shader has gone through normalization based on your z-near/z-far (from the projection matrix), and DepthRange. So it is not directly what you're after. Technically, you could try to reconstruct it by reverting the various OpenGL operations on Z that happen after the vertex shader, but it's probably more trouble (starting with the fact that reverting the projection matrix is non-linear) than just passing down what you want, exactly.

As a side note, the Z you would compute with gl_ModelViewMatrix * gl_Vertex is the Z from the point of view, not the near-Z plane.

0

精彩评论

暂无评论...
验证码 换一张
取 消