// vert // void main(void) { qgl_MaterialIndex = qgl_Material; qgl_FragTexture = qgl_getFragTexture(); gl_Position = qgl_ftransform(); } // frag // float z_near = 0.1f; const float _pe = 2.4e-7; void main(void) { vec4 diffuse = qgl_materialTexture(QGL_MAP_DIFFUSE, qgl_FragTexture.xy, vec4(0)); if(diffuse.a < 0.5) discard; float z = gl_FragCoord.z; z = z + z - 1; z = ((_pe - 2.) * z_near) / (z + _pe - 1.); // infinite depth qgl_FragData[0] = vec4(z / 20); }