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