PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Refraktion von Objekten vor der eigentlichen Oberfläche


Grey
2009-02-04, 20:38:19
Moin.

Jetzt will ich das mal genau wissen.

In zahlreichen Spielen gibt es das "Phänomen", dass Objekte vor Wasser/Glas-Oberflächen einen gebrochenen "Glow" um sich herum haben, obwohl sie schlichtweg vor dieser Oberfläche sind und so etwas - physikalisch - in der realen Welt nicht vorkommt.

Woran liegt das genau? Eine halbwegs verständliche Erklärung wäre gut, hab zwar viel gelernt in den 3 Jahren 3DC aber von den Tiefen der 3D-Mathematik verstehe ich nicht so viel ;)

Hier zwei Bilder die das verdeutlichen. Nicht die optimale Situation, aber es wird klar was ich meine:

http://www.abload.de/thumb/02_originalri3d.jpg (http://www.abload.de/image.php?img=02_originalri3d.jpg) http://www.abload.de/thumb/01_detailucm8.jpg (http://www.abload.de/image.php?img=01_detailucm8.jpg)

Spasstiger
2009-02-04, 20:46:38
Offenbar wird der Shader auf die komplette Szene angewandt. Also es wird erst die Szene ohne den Shader berechnet, das Bild dann verzerrt und die Verzerrung über die gewünschten Pixel/Fragments gelegt.

Grey
2009-02-04, 20:49:09
Warum wird der Shader auf "die ganze Szene" berechnet? Ich dachte sowas basiert auf dem Material.

PS: PM!!

Coda
2009-02-04, 20:55:31
Man rendert die verzerrten Oberflächen erst wenn das restliche Bild fertig ist. Dabei wird für jeden Pixel das bestehende Bild und seine Umgebung in die Refraktion einberechnet.

Das ist zwar nicht ganz optimal, aber eben recht billig.

Grey
2009-02-04, 21:07:57
Hm das ist verständlich, aber "nicht ganz optimal" leuchtet mir nicht ein. In meinem Beispiel von Portal fällt es natürlich eher in den irrelevanten Bereich, aber z.B. bei der Gamebryo-Engine, die vielfach bei 3rd-Person Spielen zum Einsatz kommt, fällt das teilweise schon sehr stark auf (Forcefields, Wasser, Glas... all der Kram mit Refraktion).

Allerdings kommt mir gerade auch kein Beispiel in den Sinn, wo dies nicht der Fall ist (Crysis?)

ist der Rechen- oder Programmier-Aufwand wirklich so hoch? Diese "Artefakte" sind ja nun schon seit gut 3+ Jahren zu beobachten... es ist natürlich im Grunde eher Nebensache, aber würde mich interessieren, warum das so konsequent (offenbar) als "Beiläufig" abgetan wird, denn - je nach Spiel - finde ich es schon sehr Auffällig.

Krishty
2009-02-04, 21:16:26
Der Aufwand ist tatsächlich enorm – man muss das Rendering nach (oder auch vor) jedem (refraktiertem) Alpha-Objekt unterbrechen. Falls mit Antialiasing gearbeitet wird, muss dabei das Rendertarget aufgelöst werden, was bei HDR bedeutet, dass auch Tonemapping angewendet werden muss. Der pro-Pixel-Aufwand kann bei unglücklichen Lösungen stark steigen, der Aufwand zum Rendern selbst auch bei guten Lösungen.

Die ganze Routine – erst den Frame zuende rendern, danach Refraktion als Post-Processing auftragen – ist zerstört.

Durch geschickte Wahl der Parameter im Pixel-Shader kann man Pixel ausschließen, die in die Refraktion nicht „hinein“ gehören, ohne mit der Routine zu brechen … das ist kostet aber auch relativ viel Leistung und bringt nur bedingt bessere Ergebnisse … solange es den meisten aber nicht einmal auffällt, macht sich niemand die Mühe. Die meisten Spieler wissen doch nicht einmal, was Anti-Aliasing bedeutet …

Übrigens ist es mit Motion Blur und Depth of Field genauso. Das ist ein generelles Problem aller Post-Processing-Effekte.

Gruß, Ky

Spasstiger
2009-02-04, 22:46:05
Noch interessanter wird es, wenn sich hinter der Refraktion eine Reflektion befindet. Wie soll man das noch effizient und korrekt mit einem Rasterizer rendern? Ein Raytracer hätte damit keine Probleme. ;)

Krishty
2009-02-04, 23:13:35
Ob überhaupt noch jemand in der Lage ist, zu erkennen ob das korrekt ist, ist wieder eine andere Frage ;)

Grey
2009-02-05, 11:20:44
Der Aufwand ist tatsächlich enorm – man muss das Rendering nach (oder auch vor) jedem (refraktiertem) Alpha-Objekt unterbrechen. Falls mit Antialiasing gearbeitet wird, muss dabei das Rendertarget aufgelöst werden, was bei HDR bedeutet, dass auch Tonemapping angewendet werden muss. Der pro-Pixel-Aufwand kann bei unglücklichen Lösungen stark steigen, der Aufwand zum Rendern selbst auch bei guten Lösungen.

Die ganze Routine – erst den Frame zuende rendern, danach Refraktion als Post-Processing auftragen – ist zerstört.

Durch geschickte Wahl der Parameter im Pixel-Shader kann man Pixel ausschließen, die in die Refraktion nicht „hinein“ gehören, ohne mit der Routine zu brechen … das ist kostet aber auch relativ viel Leistung und bringt nur bedingt bessere Ergebnisse … solange es den meisten aber nicht einmal auffällt, macht sich niemand die Mühe. Die meisten Spieler wissen doch nicht einmal, was Anti-Aliasing bedeutet …

Übrigens ist es mit Motion Blur und Depth of Field genauso. Das ist ein generelles Problem aller Post-Processing-Effekte.

Gruß, Ky

Danke.

Allerdings sind mir die Probleme von Motion Blur und anderen PP-Effekten nicht geläufig.

Gerade MB (richtiges DoF findet sich ja so oder so immer noch nur selten) ist doch aktuell in einer recht ausgereiften Phase angelangt und lässt sich auf einzelne Objekte etc. anwenden. Da habe ich noch nie gesehen, dass Objekte außerhalb vom eigentlich zu blurrenden Objekt in Mitleidenschaft gezogen wurden. Hast du da mal Beispiele?

Krishty
2009-02-06, 15:36:49
Hast du da mal Beispiele?Nein, die muss ich dir leider schuldig bleiben. Das einzige Spiel mit Motion Blur, das momentan bei mir installiert ist, ist CMR Dirt und dort ist der MB schon auf dem von dir angesprochenen ausgereiften Level.

Wenn dir allerdings in einem Spiel, das auch MB anwendet, Fehler in der Refraktion auffallen ist es auch ziemlich wahrscheinlich, dass dort der Motion Blur sichtbare Fehler produziert … muss man ausprobieren.

Grey
2009-02-06, 16:27:32
Nein, die muss ich dir leider schuldig bleiben. Das einzige Spiel mit Motion Blur, das momentan bei mir installiert ist, ist CMR Dirt und dort ist der MB schon auf dem von dir angesprochenen ausgereiften Level.

Wenn dir allerdings in einem Spiel, das auch MB anwendet, Fehler in der Refraktion auffallen ist es auch ziemlich wahrscheinlich, dass dort der Motion Blur sichtbare Fehler produziert … muss man ausprobieren.


Hm gut, werde ich mal schauen. Obiges Beispiel von Portal besitzt auch Motion Blur, vielleicht kriege ich da mal einen Fehler zu Gesicht.