Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki

Aktuelle Zeit: Mo Nov 20, 2017 01:07

Foren-Übersicht » Programmierung » Shader
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Aug 19, 2017 02:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2074
Wohnort: Vancouver
Programmiersprache: C++
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~


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Aug 22, 2017 13:04 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 203
Programmiersprache: c++, c, JavaScript
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.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » Shader


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.023s | 15 Queries | GZIP : On ]