Depth Buffer linearisieren



  • Hallo,
    ich habe eine Depth Buffer Textur und möchte diese linearisieren. Wenn ich sie unlinearisiert render sieht sie exakt so aus wie erwartet. Wenn ich nun aber versuche diese Textur zu linearisieren, wie es hier, hier, hier oder auch hier (etc.) gemacht wird sind alle Objekte immer tief schwarz (Farbwerte sind 0,0,0). Zu erst habe ich zNear = 0.01 und zFar = 10000 benutzt. Nachdem ich gelesen habe, dass diese eine schlechte Präzision nach sich führt habe ich es mal mit zNear = 1 und zFar = 100 versucht. Doch selbst mit diesem Frustum sind weit entfernte Objekte (z = ca. 90-100) immer noch tief schwarz.
    Woran kann das liegen?

    Vollständigerweise hier noch exakt der Code, welcher von mir verwendet wird:

    #version 440
    
    out vec4 fragColor;
    
    layout(binding = 0) uniform sampler2D depthTexture;
    
    in vec2 uv;
    
    void main()
    {
        // Kamera Frustum ist wie hier gegeben
        float zNear = 1.0;
        float zFar = 100.0;
        float depth = texture(depthTexture, uv).r;
        depth = (2.0 * zNear) / (zFar + zNear - depth * (zFar - zNear));
        fragColor = vec4(depth, depth, depth, 1.0);
    }
    


  • Hmm, kannst du noch den Code posten, wie du die Texture erzeugst?



  • Leider nicht. Die Textur sieht jedoch genau so aus wie sie sollte (ganz nah sehr schwarz, in kleinen z-Bereichen schneller Abfall des schwarz wertes und weiter weg alles sehr hell).


Anmelden zum Antworten