所以,我有一个冒名顶替者(真正的几何体是一个立方体,可能被剪掉了,冒名顶替者的几何体是一个 Menger 海绵),我需要计算它的深度。
我可以很容易地计算在世界空间中的偏移量。不幸的是,我花了好几个小时都没能用它来扰乱深度。
我能得到的唯一正确结果是我去的时候:
gl_FragDepth = gl_FragCoord.z
基本上,我需要知道 gl_FragCoord.z 是如何计算的,以便我可以:
如果这似乎是一个重复的问题,我深表歉意;这里还有许多其他帖子解决了类似的问题。但是,在实现所有这些之后,没有一个可以正常工作。在这一点上,我不是试图选择一个来获得帮助,而是要求提供完整的代码。它应该只是几行。
最佳答案
供以后引用,关键代码是:
float far=gl_DepthRange.far; float near=gl_DepthRange.near;
vec4 eye_space_pos = gl_ModelViewMatrix * /*something*/
vec4 clip_space_pos = gl_ProjectionMatrix * eye_space_pos;
float ndc_depth = clip_space_pos.z / clip_space_pos.w;
float depth = (((far-near) * ndc_depth) + near + far) / 2.0;
gl_FragDepth = depth;
关于opengl - GLSL gl_FragCoord.z 计算和设置 gl_FragDepth,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10264949/