简体   繁体   中英

gl_FragDepth calculated to camera space

Depth fragment shader is A.frag

#version 430 core

uniform float pointSize;
uniform mat4 projectMatrix;

in vec3 eyeSpacePos;

void main(){    
    vec3 normal;
    normal.xy = gl_PointCoord.xy * vec2(2.0, -2.0) + vec2(-1.0,1.0);
    float mag = dot(normal.xy, normal.xy);
    if(mag > 1.0) discard;
    normal.z = sqrt(1.0 - mag);

    vec4 pixelEyePos = vec4(eyeSpacePos + normal * pointSize, 1.0f);
    vec4 pixelClipPos = projectMatrix * pixelEyePos;
    float ndcZ = pixelClipPos.z / pixelClipPos.w;
    gl_FragDepth = ndcZ;
}

accepth the depth map shader is B.frag

void main(){
    float pixelDepth = texture(u_DepthTex, Texcoord).r;
    gl_FragDepth = outDepth;
}

How can convert the pixelDepth into the camera space at B.frag? I have tried many times without success.

The ndc coordinate is in range [-1.0, 1.0] the depth has to be in dept range, which is by default [0.0, 1.0]:

gl_FragDepth = ndcZ * 0.5 - 0.5;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM