DGL
https://delphigl.com/forum/

Absolute distanz zur Kamera -> gl_FragDepth ?
https://delphigl.com/forum/viewtopic.php?f=20&t=11610
Seite 1 von 1

Autor:  Aya [ Sa Aug 19, 2017 02:56 ]
Betreff des Beitrags:  Absolute distanz zur Kamera -> gl_FragDepth ?

Hi,

ich habe ein kleines Problem wo ich nicht 100%ig sicher bin was genau das Problem ist .. daher, frage ich mal :)

Ich habe einen depthbuffer der mit einem externen programm erzeugt wurde als Textur, dieser buffer enthaelt die distanz des jeweiligen pixels zur position der kamera in absoluten units.
Also nicht von 0...1 von der near zur far-clipping plane wie es OpenGL macht, sondern von 0 bis unendlich von dem kamera-punkt ausgehend.

Jetzt versuche ich diesen Depthbuffer so umzurechnen das ich ihn fuer gl_FragDepth verwenden kann um depth-compositing zu machen, allerdings klappt es nur halb... ich nutze diese formel:

Code:
  1. float linearDepthToNonLinear(float linearDepth, float zNear, float zFar)
  2. {
  3.     float nonLinearDepth = (zFar + zNear - 2.0 * zNear * zFar / linearDepth) / (zFar - zNear);
  4.     nonLinearDepth = (nonLinearDepth + 1.0) / 2.0;
  5.     return nonLinearDepth;
  6. }


Funktioniert prima, allerdings nur in der Bildmitte .. Objekte am rand scheinen einen leicht falschen tiefenwert zu bekommen und das depth sorting passt nicht mehr ganz .. :(

Ich vermute das liegt daran das OpenGL's Depth Buffer nicht die entfernung zu einem punkt ist, sondern die entfernung zu einem punkt auf einer plane? Kann das sein?

Hat jemand eine Idee wie ich es korrekt umrechnen kann damit es funktioniert?

Danke~

Autor:  Vinz [ Di Aug 22, 2017 13:04 ]
Betreff des Beitrags:  Re: Absolute distanz zur Kamera -> gl_FragDepth ?

Kannst Du ausschließen, dass die Winkel der Projektion sich unterscheiden?
Das würde nämlich erklären, warum es nur in der Mitte stimmt.

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/