SG Netzwerk      
Mittwoch, 24. Mai 2006, 13:34
Programmierung: Methode zur Auflösungsverbesserung bei globalen Shadow Maps
Eine von vielen Methoden, um Schatten in Echtzeit-Grafik umzusetzen, sind Tiefentest-Texturen (engl. Shadow Maps). Dieser
Artikel stellt eine Methode vor, die Auflösung einer Shadow Map um den Betrachter herum lokal zu verbessern.

1. Einführung

Schatten sind ein wichtiges Element computergenerierter Grafik, da das menschliche Auge daraus zusätzliche Informationen zur Tiefeneinordnung von Bildelementen gewinnt. Folglich wurden besonders für Echtzeitanwendungen wie Spiele vielfältige Methoden entwickelt, um Schatten zu visualisieren. Eine dieser Methoden ist Shadow Mapping.

Beim Shadow Mapping wird ungefähr senkrecht zum Einstrahlungswinkel des Lichtes eine Textur durch die betroffenen Teile der Szene gelegt. Aus Sicht des Lichtes wird dann die Tiefe bzw. die Entfernung der Szene von der Lichtquelle in die Textur gerendert. Beim Zeichnen der eigentlichen Szene kann nun für jeden Pixel die Entfernung zur Lichtquelle mit der Entfernung verglichen werden, die für diese Stelle in der Tiefentextur steht. Falls die Entfernung des Pixels größer ist als die in der Textur gespeicherte Entfernung, liegt der Pixel im Schatten.

Bei globalen Lichtquellen wie z.B. der Sonne ist das Gebiet, über das sich die Tiefentextur erstreckt, sehr groß. Die räumliche Auflösung des Schattens ist demzufolge sehr gering. Die gleichförmige Verteilung des Texturraums über das betroffenen Gebiet führt außerdem dazu, daß die vom Betrachter wahrgenommene Schattenauflösung in der Nähe sehr niedrig ist, während in der Entfernung eine unnötig hohe Auflösung erreicht wird. Dieser Artikel stellt eine Methode vor, durch eine nichtlineare Verzerrung der Textur die wahrgenommene Auflösung in der Nähe des Betrachters zu verbessern.

2. Bisherige Arbeiten zum Thema

2.1. Perspective Shadow Mapping

Perspective Shadow Mapping (PSM, Link) erweitert die Projektionsmatrix des Lichtes um eine perspektivische Komponente der Betrachterprojektion. Damit wird der vorher quadratische Ausdehnungsbereich der Schattentextur auf ein Trapez verformt, das seine schmale Seite beim Betrachter hat und damit dort sehr viel mehr Texel pro Maßeinheit bietet als in der Ferne. Die Methode arbeitet sehr gut für

Szenarien, in denen die Blickrichtung des Betrachters größtenteils senkrecht zur Lichtrichtung ist. Das Verfahren hat aber einige numerische Tod-Stellen, in denen die Projektionsmatrix ungültige Werte annimmt oder den Schatten invertiert.

2.2. Light Space Perspective Shadow Mapping

Light Space Perspective Shadow Mapping (LiSPM, Link) ist eine Erweiterung der PSM-Methode, die durch geänderte Formeln den Grad der perspektivischen Verzerrung der Lichtprojektion frei wählbar gestaltet. Bei einem Betrachter-Blickwinkel senkrecht zur Lichtrichtung entspricht diese Methode der PSM-Methode. Je paralleler Sichtrichtung und Lichtrichtung werden, desto geringer wird die perspektivische Verzerrung, bis die Methode bei Parallelität auf normales Uniform Shadow Mapping zurückfällt. Diese Methode vermeidet die Todstellen von PSM, aber das optische Ergebnis ist immernoch stark von der Blickrichtung abhängig. Ein prominenter Nutzer dieser Methode ist zum Beispiel Spellforce II.

2.3. Cascaded Shadow Mapping

Cascade Shadow Mapping umgeht die ungleiche Verteilung der Schattentexel-Dichte durch Einsatz mehrerer geschachtelter Shadow Maps für verschiedene Entfernungen. Jede einzelne Shadow Map wird gleichförmig projeziert oder kann mit einer der obigen Varianten perspektivisch projeziert werden. Die Methode ist leicht zu implementieren und liefert flexibel einstellbare Schattenqualität für alle Entfernungen, benötigt aber ein Vielfaches der Rechenzeit und des VideoRAMs anderer Methoden. Ein prominenter Vertreter ist FutureMarks 3DMark05 bzw. 3DMark06.

2.4. Weitere Methoden

Es existieren viele weitere Techniken zur Auflösungsverbesserung von Shadow Maps. Die meisten dieser Techniken sind aber für Nicht-Echtzeit-Anwendungen gedacht und arbeiten durch Segmentierung der Szene und Zuordnung verschieden großer Schattentextur-Fragmente zu diesen Segmenten nach verschiedenen Qualitätskriterien. Es existieren auch Echtzeit-Varianten dieses Ansatzes, aber die Aufteilung der Szene in Echtzeit erweist sich als problematisch und führt zu sichtbaren Sprüngen in der Schattenqualität im fertigen Bild.

1 | 2 | 3 | 4 | Bilder (9) | Kommentare (5)
 
Kommentare:
nice :) Ich habe noch… (jklein, 06.12.2007, 14:50)
Danke für den… (Jan_Bruns, 07.06.2006, 02:29)
Wirklich interessanter… (Florian Keßeler, 25.05.2006, 16:24)
Bewertung:
selbst bewerten:
2,9
Zum Bewerten musst du registriert und angemeldet sein.