Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

the[V]oid

Alter Hase

  • »the[V]oid« ist der Autor dieses Themas

Beiträge: 775

Wohnort: Aachen

  • Private Nachricht senden

11

14.07.2010, 00:30

Hab mal eine Minimalanwendung geschrieben, welche das Problem reproduziert.

Der wesentliche Code ist hier zu kriegen: http://pastebin.com/fHrtwXFf

In eine ausführbare Anwendung verpackt, die auf SFML2 basiert:

http://dl.dropbox.com/u/8265828/RenderTargets/main.cpp

Zu linken ist das ganze gegen:

Quellcode

1
-lglut -lsfml-window -lGLEW


Würde mich sehr freuen, wenn jemand die Zeit findet, mal drüber zu schauen...

So sieht das ganze übrigens aus:



Hat auch vielleicht jemand eine Idee, woher diese seltsamen Verzerrungen kommen, die man im oberen Bilddrittel deutlich erkennt?



Edit // Nachtrag:

Wenn man die Near-Clipping-Plane nach hinten setzt (von 0.1f auf 1.0f) und die Far-Clipping-Plane nach vorne (von 100.f auf 50.f), schaut es so aus:



Man erkennt, da sind irgendwie "Stufeneffekte" drin. So als würden die Tiefenwerte aufs Härteste quantitisiert werden. Frage is nur - warum?? An der Präzision der Depthtexture kanns kaum liegen, die ist 24 bit. Außerdem sieht es mit 32 bit sieht exant genau so aus. Läge es an der Präzision der Depthtexture, müsste der Effekt mit 32 bit schwächer werden.

Ich könnte mir 2 Ursachen vorstellen, aber nicht erklären: Entweder die Genauigkeitsfehler entstehen, ...
1. weil die Projektionsmatrix irgendwie kaputtgeht und der Quotient aus Near- und Far-Clipping-Plane total übermenschliche Dimensionen erreicht
2. oder im Shader bei der Anweisung "gl_FragDepth = depthtex.a". Findet hier nicht so etwas wie eine implizitite Umwandlung des Datentyps statt?
<< an dieser Stelle ist eine Signatur verstorben >>

Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von »the[V]oid« (14.07.2010, 15:12)