Masterstudiengang Informatik. Fachseminar. Wintersemester 2011/2012. Shadow Mapping

Ähnliche Dokumente
Schattenwurf mit Perspective Shadow Maps

Kapitel 4: Schattenberechnung

Probelektion zum Thema. Shadow Rendering. Shadow Maps Shadow Filtering

3.6 Schattenberechnung

Logarithmic Perspective Shadow Maps

4.4 Glättung von Kanten

Graphische Datenverarbeitung und Bildverarbeitung

Vorlesung Algorithmen für hochkomplexe Virtuelle Szenen

Rendering: Lighting and Shading

Beleuchtung. in Computerspielen

Christina Nell. 3D-Computergrafik

Shader. Computer Graphics: Shader

Visualisierung und Volumenrendering 2

Bildbearbeitung und Texturierung

Beleuchtungsmodelle und Shading

(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU

BlendaX Grundlagen der Computergrafik

Programmierpraktikum 3D Computer Grafik

Programmierpraktikum 3D Computer Grafik

View-Dependent Simplification. Computer Graphics

Entwicklung einer robusten Methode zur Berechnung von Stereokorrespondenzen

Games Engines. Realtime Terrain Rendering

Shadowing. Vortrag im Rahmen des PIXAR-Seminars, Juli Philipp Freyer

3D Programmierpraktikum: Schattenberechnung in Echtzeit

Volumenverarbeitung und Optimierung II

Vorlesung Algorithmen für hochkomplexe Virtuelle Szenen

Einführung Augmentierte Bildsynthese

Seminar Computerspiele Räumliche Datenstrukturen. Ralf Pramberger

Computergrafik Universität Osnabrück, Henning Wenke,

Advanced Computer Graphics Erweiterung zur 6. Übung

Techniken der Effizienzsteigerung bei 2D-Texturierung:

Informatik Fakultät Lehrstuhl für Computergrafik und Visualisierung. René Lützner

Michael Bender Martin Brill. Computergrafik. Ein anwendungsorientiertes Lehrbuch. 2., überarbeitete Auflage HANSER

4.7 Globale Beleuchtungsmodelle

Beschleunigungen auf Szenenebene

3D - Modellierung. Arne Theß. Proseminar Computergraphik TU Dresden

Computergrafik 1 Beleuchtung

Die Welt der Shader. Fortgeschrittene Techniken III

C A R L V O N O S S I E T Z K Y. Transformationen. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011

Computergrafik. Michael Bender, Manfred Brill. Ein anwendungsorientiertes Lehrbuch ISBN Inhaltsverzeichnis

Wima-Praktikum 2: Bildsynthese-Phong

3.5 Methode des gleitenden Horizonts

Mehrdimensionale Integralrechnung 1

Rechnergestütztes Konstruieren im Metallbau und Holzbau. Rechnergestütztes Konstruieren im Metallbau und Holzbau Dr.-Ing. Hans-Walter Haller

Raytracing Modell Laufzeitoptimierungen Schnittalgorithmen Szenendatenstrukturen. Verbesserung der Bildqualität

Beschleunigungsverfahren für Raytracing Grids Hierarchische Grids Bewertung Fazit

OpenGL und die Fixed-Function-Pipeline

Parallele Algorithmen in der Bildverarbeitung

Lokale Beleuchtungsmodelle

0 Einführung. Computergrafik. Computergrafik. Abteilung für Bild- und Signalverarbeitung

Universität Trier. Fachbereich IV. Wintersemester 2004/2005. Wavelets made easy. Kapitel 2 Mehrdimensionale Wavelets und Anwendungen

Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung. Vorlesung vom

Vorlesung Algorithmen für hochkomplexe Virtuelle Szenen

HLSL PostProcess Shaders

Dynamisches Huffman-Verfahren

5 Mapping-Techniken. 5.1 Motivation

Simulation multipler Streuung an Haaren mit Hilfe eines Photon-Mapping-Ansatzes

Verbesserung der Bildqualität

Kantengraphen und Planare Graphen. Seminararbeit

Projektdokumentation Gesichtserkennung per Eigengesichtsanalyse

Komplexpraktikum Graphische Datenverarbeitung im WS 04/05

Adaptives Displacement Mapping unter Verwendung von Geometrieshadern

Computergraphik Grundlagen

Übungsstunde 8 zu Computergrafik 1

Digitale Bildverarbeitung - Rechnerübung 3

Partikelsysteme. Lehrstuhl Computergrafik und Visualisierung Fakultät Informatik TU Dresden. Proseminar Computergrafik.

Abbildung von Weltkoordinaten nach Bildkoordinaten

3D Rendering mit PHP. Die neue PEAR-Klasse Image_3D bietet die Möglichkeit nur mit PHP5 3DGrafiken zu rendern

Übungsblatt 10: Klausurvorbereitung

7 Blender Intern Renderer

KAPITEL Füllmethoden von Ebenen 493. Zebra.tif

4. Segmentierung von Objekten Video - Inhaltsanalyse

Ajdovic/Mühl Farbmodelle FARBMODELLE

Beleuchtung. Matthias Nieuwenhuisen

Computergrafik Universität Osnabrück, Henning Wenke,

Graphische Datenverarbeitung Visualisierungstechniken. Prof. Dr. Elke Hergenröther

Seminar Game Development Game Computer Graphics. Einleitung

Wichtigste Voraussetzung für die in dieser Vorlesung beschriebenen Systeme und Verfahren sind digitale Aufnahmen. Doch was ist eigentlich ein

Lokale Beleuchtungsmodelle

Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL)

1. Sichtbarkeitsproblem beim Rendern einer dreidimensionalen Szene auf einer zweidimensionalen

Computergrafik Universität Osnabrück, Henning Wenke,

Von der brennenden Kerze über die Zentralkollineation zur Gruppe der projektiven Abbildungen

Universität Trier FB IV Mathematik PS Mathematics for 3D Game Programming & Computer Graphics - WS 07/08 Seminarleiter: Prof. Dr.

3D-Oberflächen-Rekonstruktion und plastisches Rendern aus Bilderserien

Einführung in die linearen Funktionen. Autor: Benedikt Menne

Chaos-based Image Encryption

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Multimedia für Referate und Präsentationen

Die Wahrnehmung von Durchsichtigkeit. Referentin: Carina Kogel Seminar: Visuelle Wahrnehmung Dozent: Dr. Alexander C. Schütz

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Transformationen im 3D-Raum

Ray Tracing. 2. Ray Tracing-Prinzip und -Algorithmen. 3. Schnittpunkt- und Normalenberechnung

Volumenakquise. Vortrag von Benjamin Gayer

Interaktives Wasser in 3D. Jörn Loviscach Hochschule Bremen

Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM

C A R L V O N O S S I E T Z K Y. Texture-Mapping. Johannes Diemke. Übung im Modul OpenGL mit Java Wintersemester 2010/2011

3.5 Implizite Beschreibungen

Soft Shadow Volumes. Ilja Kipermann. vorgelegt von. Studienarbeit. im Studiengang Computervisualistik

Transkript:

Masterstudiengang Informatik Fachseminar Wintersemester 2011/2012 Shadow Mapping Vorgelegt von Florian Feuerstein am 03.01.2012 Dozent Prof. Dr. Christoph Schulz

Inhaltsverzeichnis 1 Einleitung 1 2 Shadow Mapping 5 2.1 Simple Shadow Mapping........................ 5 2.2 Verschiedene Lichttypen mit Shadow Mapping............ 8 2.3 Probleme beim Shadow Mapping................... 9 2.4 Percentage Closer Filter........................ 12 2.5 Practical Shadow Mapping....................... 14 2.6 Parallel-Split Shadow Maps...................... 15 2.7 Weitere Verfahren........................... 16 3 Zusammenfassung und Ausblick 19

1 Einleitung Abbildung 1.1: Außer einem gesteigerten Grad an Realismus, wirken sich Schatten positiv auf die räumliche Einschätzung der Szene aus. Während man im linken Bild davon ausgeht, dass beide Kugeln die gleiche Distanz zum Betrachter haben, erkennt man im rechten Bild eine andere Situation. Abbildung angelehnt an [EE09]. Die Anwesenheit von Schatten in einer dreidimensionalen, virtuellen Szene ist für unsere visuelle Wahrnehmung äußerst entscheidend. Zum Ersten wirkt die Umgebung dadurch deutlich realistischer und zum Zweiten wird das Bewusstein der räumlichen Verhältnisse gesteigert. Da heutzutage in den meisten Fällen eine dreidimensionale Szene auf einem zweidimensionalen Medium angezeigt wird, gehen automatisch wichtige Informationen zur räumlichen Einschätzung verloren. So ist es beispielsweise ohne einen Schattenwurf schwer, die Tiefe eines Objekts im Vergleich zu einem zweiten einzuschätzen. Zur Behebung dieses Nachteils reicht es sogar aus einen Schattenwurf zu erzeugen, der in Bezug zu den ursprünglichen Objekten völlig unrealistisch ist (siehe Abbildung 1.1) [EE09]. Umso realistischer die Darstellung von Schatten in einer virtuellen Welt sind, desto positiver wirken sich die Effekte auf die Wahrnehmung aus. Die deutlichen Vorteile machen dieses Thema zu einem großen Forschungsgebiet der Computergrafik. In den letzten Jahren wurden viele wichtige Beiträge entwickelt,

2 Einleitung welche oft von den enormen Leistungen und technischen Möglichkeiten heutiger Grafikkarten vorangetrieben werden. Es wurden große Fortschritte bezüglich der visuellen Qualität sowie der Geschwindigkeit erzielt, die es ermöglichen hochqualitative Schatten sogar in Echtzeit zu berechnen. Obwohl eine große Auswahl an Verfahren zur Schattengenerierung besteht, gibt es noch keine allgemeingültige Lösung für das Problem [EE09]. Vielmehr müssen die Vor- und Nachteile der verschiedenen Methoden für jede Anwendung individuell abgewägt werden. Dabei wird man an den beiden grundlegenden Verfahren namens Shadow Mapping [Wil78] und Shadow Volumes [Cro77] nicht vorbeikommen. Shadow Volumes erzeugen einen pixelgenauen Schatten, sind aber im Vergleich wesentlich aufwändiger zu berechnen. Auch das aktuellste Verfahren [MS07] erreicht mit einer vorberechneten Datenstruktur, welche die Szene räumlich aufteilt und zur Beschleunigung dient, nur interaktive Bildraten [EE09]. Shadow Mapping leidet unter Aliasingproblemen, dagegen dauert die Berechnung der Schatten für vollständig dynamische Umgebungen nicht länger als das Rendern der Szene selbst. Zusätzlichen ist diese Technik einfach zu verstehen sowie zu implementieren, weshalb Shadow Mapping heutzutage das am meisten eingesetzte Verfahren zur Schattengenerierung für interaktive Echtzeitanwendungen ist. Bevor Kapitel 2 das Verfahren von Shadow Mapping behandelt und mögliche Verbesserungen vorstellt, wird zunächst genauer auf den Schattenwurf in der Realität eingegangen. Schatten wird oftmals als die Abwesenheit von Licht definiert [TAM08]. Er entsteht, wenn sich ein Objekt, der Verdecker, zwischen der Lichtquelle und einem anderem Objekt, dem Empfänger, befindet, wobei der Verdecker die direkten Lichtstrahlen zum Empfänger blockiert. Abbildung 1.2 verdeutlicht diesen Zusammenhang. In der wirklichen Welt bestehen alle Lichtquellen aus einer Fläche, was dazu führt, dass jeder Punkt im Raum von mehreren unterschiedlich gerichteten Lichtstrahlen getroffen wird (siehe Abbildung 1.2 links). In Folge dessen bildet sich ein Schatten, dessen Ränder umso weicher auslaufen, desto weiter sie vom Verdecker entfernt sind. Es wird hierbei von Soft Shadows gesprochen und zwischen dem Vollschatten (Umbra) und dem Halbschatten (Penumbra) unterschieden [TAM08]. In der Echtzeit-Computergrafik werden Lichtquellen oft auf eine Punktlichtquelle oder ein direktionales Licht, bei dem alle Lichtstrahlen exakt parallel verlaufen, vereinfacht, um wertvolle Rechenzeit einzusparen. Dadurch verschwindet die weiche Penumbra und ein Punkt im Raum kann entweder nur im Schatten oder außerhalb davon liegen (siehe Abbildung 1.2 rechts). Diese Art wird aufgrund ihrer harten Ränder Hard Sha-

3 Abbildung 1.2: Schatten in der Realität (links) und in der Echtzeit-Computergrafik (rechts). dows genannt. Da diese Typen von Lichtquellen sowie der betreffende Schatten nicht in der Realität vorkommen, ist das Ergebnis im Vergleich zu Soft Shadows qualitativ minderwertiger. So können Hard Shadows manchmal als Erhebung bzw. Vertiefung der Geometrie missinterpretiert werden. Jedoch ist die benötigte Rechenzeit für das entsprechende Verfahren geringer.

2 Shadow Mapping Dieses Kapitel geht zuerst auf das ursprüngliche Verfahren von Shadow Mapping [Wil78] ein und wie es für Echtzeitanwendungen beispielsweise mittels OpenGL 1 umgesetzt werden kann. Danach werden die Probleme, unter welchen Shadow Mapping leidet, genauer erläutert, um anschließend drei mögliche Verbesserungen vorzustellen. Diese versuchen auf unterschiedliche Art und Weise die sichtbaren Nachteile zu reduzieren. Zuletzt werden weitere Verfahren zusammengefasst, welche sich dem gleichen Thema widmen. 2.1 Simple Shadow Mapping Mit Simple Shadow Mapping [Wil78] bezeichnet man das erste Verfahren, welches 1978 von Lance Williams eingeführt wurde und dessen Idee bis heute die Basis für viele Weiterentwicklungen ist. Es generiert harte Schattenränder mit einem linearen Aufwand bezüglich der Szenengeometrie. Außerdem kann jede Beschreibungsform von Geometrie damit gerendert werden und nicht ausschließlich geschlossene Polygonnetzte, wie es bei Shadow Volumes der Fall ist. Das Schlüsselelement des Algorithmus ist der Tiefenpuffer. Er speichert die Tiefe des sichtbaren Objekts in jedem Pixel. Zur Veranschaulichung wird hier immer von einem Spotlicht gesprochen, dass Lichtstrahlen von einem Punkt aus in einen begrenzten Bereich wirft und somit ähnliche Eigenschaften wie eine Kamera hat. Das Prinzip von Shadow Mapping ist für andere Lichttypen bis auf wenige Details, welche später beschrieben werden, das selbe. Schatten, die von einem Punktlicht auf eine Oberfläche geworfen werden, repräsentieren eine Projektion der Szene auf diese Fläche, analog zu einer perspektivischen Transfor- 1 http://www.opengl.org/

6 Shadow Mapping Abbildung 2.1: Die Grundidee von Shadow Mapping. Links unten ist das Bild aus der Sicht des Lichtes. Rechts unten ist das Bild aus der Sicht des Betrachters. Abbildung übernommen aus [TAM08][RF03]. mation. Die Grundidee von Shadow Mapping besteht darin jede Lichtquelle als eine (perspektivische) Kamera anzusehen. Diese projiziert die Szene von ihrem Standpunkt aus wieder auf den Raum. Dadurch entsteht an allen Punkten ein Schatten, welche die Kamera nicht sieht, weil diese Punkte hinter der projizierten Szene liegen. Da die Kamera das Licht repräsentiert liegen damit anschaulich alle Punkte im Schatten, die nicht vom Licht getroffen werden (siehe Abbildung 2.1). Eine mit Schatten gerenderte Welt enthält somit zwei Ansichten in einem Bild, nämlich die Ansicht des Betrachters selbst und die der Lichtquelle. Der Algorithmus kann also wie folgt beschrieben werden. Zuerst wird die Szene aus dem Blickwinkel des Lichtes gerendert. Dabei werden nur die Tiefenwerte und keine Beleuchtungsintensitäten berechnet sowie im

2.1 Simple Shadow Mapping 7 Tiefenpuffer gespeichert. Das entstandene Bild wird auch Depth Map genannt (siehe Abbildung 2.1 links unten). Als Zweites wird die Szene vom Betrachterstandpunkt aus gerendert. Hierbei wird für jedes Pixel überprüft, ob die dazugehörige 3D-Position von der Lichtquelle gesehen wurde oder nicht und somit im Schatten liegt. Um diesen Test auszuführen transformiert man die (x, y, z)-koordinaten, die auf ein Pixel abgebildet wurden und sich im Koordinatensystem der Betrachterkamera befinden, in den Koordinatenraum des Lichtes. Jetzt kann die Tiefe z L der transformierten Koordinaten (x L, y L, z L ) im Lichtraum mit der gespeicherten Tiefe Z D in der Depth Map verglichen werden. Das Tupel (x L, y L ) gibt die gesuchte Position des Pixels in der Depth Map an. Ist Z L größer als Z D, liegt der zu rendernde Punkt aus Sicht der Lichtquelle hinter einem anderem und folglich im Schatten. Falls Z L gleich Z D ist, sieht der Betrachter den gleichen Punkt wie das Licht zuerst und der Punkt wird beleuchtet. In der Praxis kann es auch passieren, dass Z L kleiner als Z D ist, worauf Abschnitt 2.3 genauer eingeht. Um die Transformationsmatrix T vom Betrachterraum in den Lichtraum zu berechnen müssen die Transformationsmatrix der Betrachterkamera T K, die Transformationsmatrix des Lichtes T L sowie dessen Projektionsmatrix P L bekannt sein [RF03]. Daraus ergibt sich folgende Formel: T = P L T L T 1 K So werden die (x, y, z)-koordinaten erst vom Betrachterraum in Weltkoordinaten umgewandelt plus anschließend in das Koordinatensystem der Lichtquelle transformiert und perspektivisch in das kanonische Sichtvolumen projiziert. Da sich Z L sowie Z D nun im selben Raum befinden, lassen sich die Werte problemlos miteinander vergleichen. Hierbei ist zu beachten, dass sich beide Werte auch im gleichen Wertebereich befinden [SB05]. Die Standardpipeline von OpenGL produziert einen nicht-linearen Tiefenpuffer, da sie davon ausgeht, dass im vorderen sichtbaren Bereich eine höhere Genauigkeit benötigt wird als im hinteren. Diese Annahme trifft bei der Erstellung der Shadow Map nicht zu, weil sie nicht die Sicht des Betrachters darstellt. Ein weit entfernter Punkt zur Lichtquelle kann durchaus sehr nahe am Betrachter liegen. Um die Genauigkeit der Depth Map global auf einer Stufe zu halten sowie den Wertebereich von Z L und Z D anzupassen, sollte man auf eine lineare Depth Map zurückgreifen. Mithilfe heutiger Grafikkarten, welche die Programmierung eigener Shader ermöglichen,

8 Shadow Mapping Abbildung 2.2: Die Standardlichtypen der Echtzeit-Computergrafik mit Shadow Mapping. Links: Spotlicht. Mitte: omnidirektionales Punktlicht. Rechts: direktionales Licht. lässt sich dies einfach realisieren. Weiterhin ist zu berücksichtigen, dass alle Berechnungen im Bildraum ausgeführt werden. Die Schattenbestimmung basiert auf der Transformation zwischen zwei Bildern. Es muss folglich sichergestellt werden, dass alle Objekte, die einen Schatten in das Bild des Betrachters werfen könnten, sich im Sichtfeld des Lichtquellenbildes befinden [Wil78]. Das Verfahren von Shadow Mapping benötigt zwei Render Passes, wobei ein Render Pass die Berechnung eines Bildes ist. Da man das Ergebnis des ersten Passes, die Erstellung der Depth Map, dem Benutzer nicht darstellt und daher auf unnötige Berechnungen der Beleuchtung verzichten kann, dauert die Erzeugung der Depth Map nicht länger als die des Endbildes. Außerdem hängt der Aufwand der Schattenbestimmung nur von der Auflösung des finalen Bildes ab. Dadurch kann die Auflösung der Depth Map unabhängig von der des Bildes gewählt und die Genauigkeit angepasst werden. 2.2 Verschiedene Lichttypen mit Shadow Mapping Für die drei Standardlichtypen der Echtzeit-Computergrafik muss das Shadow Mapping- Verfahren jeweils angepasst werden. Im einfachsten Fall besitzt das Licht die gleichen Eigenschaften wie eine Kamera, wie es oben beschrieben bei einem Spotlicht der Fall ist. Somit kann die Lichtrichtung und Ausbreitung direkt auf das Kamerafrustum übertragen werden und keine weiteren Veränderungen sind nötig (siehe Abbildung 2.2 links). Bei einem Punktlicht, welches von einem Punkt aus Licht in alle Richtungen ausstrahlt, reicht eine Shadow Map aufgrund des maximales Sichtfeldes einer Kamera

2.3 Probleme beim Shadow Mapping 9 von 180 Grad nicht mehr aus. Die übliche Methode besteht darin sechs verschiedene Shadow Maps zu erstellen, die zusammen den ganzen Raum abdecken. Dazu richtet man die Lichtkamera mit einem Blickwinkel von 90 Grad jeweils in die negativen und positiven Richtungen der drei Koordinatenachsen [EE09]. Anschaulich wird hierbei die gesamte Szene auf einen Würfel um die Lichtquelle projiziert (siehe Abbildung 2.2 mitte). Beim Test, ob ein 3D-Punkt im Schatten liegt oder nicht, muss dann zuerst geprüft werden in welches der sechs Frustums der Punkt fällt, bevor ein Tiefenvergleich mit der entsprechenden Depth Map gemacht werden kann. Eine weitere Möglichkeit ist eine parabolische Abbildung [SB02], welche mit lediglich zwei Shadow Maps auskommt. Allerdings sind diese Abbildungen schwer zu erstellen, da Linien zu Kurven transformiert werden müssen, was inkompatibel mit der normalen Rasterisierungspipeline ist [EE09]. Aus diesem Grund ist die erste Methode heutzutage die effizientere. Bei einem direktionalen Licht laufen alle Lichtstrahlen parallel zueinander, wodurch statt einer perspektivischen Projektion eine Parallelprojektion entsteht und das Kamerafrustum analog dazu angepasst werden muss (siehe Abbildung 2.2 rechts). 2.3 Probleme beim Shadow Mapping Die zwei großen Probleme von Shadow Mapping sind Quantisierungsfehler und Aliasing- Effekte [Wil78]. Quantisierungsfehler treten immer dann auf, wenn ein stufenloser Wertebereich in einen gestuften Wertebereich konvertiert wird. Hier ist das bei der Übertragung der stufenlosen Tiefenwerte im Raum in die Depth Map der Fall, die nur eine begrenzte Anzahl an Bits pro Eintrag zur Verfügung hat. Von Aliasing wird allgemein gesprochen, sobald ein Signal mit einer zu geringen Frequenz abgetastet wird und damit wichtige Informationen verloren gehen. Dies passiert bei einer geringen Auflösung der Depth Map, welche nicht alle Informationen besitzt, die aus Sicht des Betrachters benötigt werden. Während man heutzutage die Quantisierungsfehler durch Verwendung von Float-Texturen mit einer Genauigkeit von 32 Bit klein halten kann, ist Aliasing ein größeres Problem, welches alle Verfahren im Bildraum betrifft [Wil78]. Die Idee generell riesige Shadow Maps einzusetzen reduziert zwar das Problem, jedoch wird der Grafikkartenspeicher überlastet und nicht jede Grafikkarte unterstützt hochauflösende Texturen.

10 Shadow Mapping Abbildung 2.3: Die zwei großen Probleme von Shadow Mapping. Links: Quantisierungsfehler. Rechts: Aliasing-Effekte. Abbildung 2.3 links zeigt den entstehenden Fehler, welcher von der Quantisierung ausgeht. Man sieht, dass Stellen, die eigentlich direkt von der Lichtquelle angestrahlt werden trotzdem im Schatten liegen. Dies hat den Grund, dass bei der Transformation eines beleuchteten Punktes vom Betrachterraum in den Lichtraum der Tiefenwert Z L nicht exakt gleich dem Wert Z D aus der Depth Map ist [Wil78]. Aufgrund von Rechenungenauigkeiten sowie den Quantisierungsfehlern des Tiefenpuffers ist Z L manchmal größer oder kleiner als Z D. Um das Problem zu beheben wird ein Bias auf die Werte der Depth Map addiert, der die Schattenlinie etwas nach hinten verschiebt. Dieser muss händisch angepasst werden, sodass alle Artefakte verschwinden (siehe Abbildung 2.3 rechts). Auf der rechten Seite von Abbildung 2.3 erkennt man den Aliasing-Effekt. Man sieht deutlich die projizierten Pixel der Depth Map auf der Oberfläche, da hier ein Pixel des Tiefenpuffers auf mehrere Pixel im Betrachterbild abgebildet werden. Eine vereinfachte Analyse der Abtastfehler stellt Abbildung 2.4 dar [MW04]. Hier wird von einem direktionalen Licht ausgegangen, welches orthogonal zum Betrachter steht und bereits auf dessen Kamerafrustum angepasst ist, sodass keine Pixel des Tiefenpuffers verschwendet werden. Ein Pixel der Shadow Map wird durch ein Lichtstrahlenbündel repräsentiert, welches das Pixel traversiert und eine Größe ds ds bezüglich der lokalen Parametrisierung der Shadow Map hat. Es wird eine lokale Parametrisierung

2.3 Probleme beim Shadow Mapping 11 Abbildung 2.4: Der Aliasing-Effekt beim Shadow Mapping. Abbildung entnommen aus [MW04]. von 0 bis 1 zwischen der Near- und Far-Plane des Betrachters angenommen (siehe Abbildung 2.4). In Weltkoordinaten besitzt das Bündel eine Länge dz = (z f z n ) ds. Dabei trifft es die Kante eines Szenenobjekts mit der Länge dz/cosβ. Nun gilt es herauszufinden, wie viele Pixel diese Kante im Bild des Betrachters einnimmt. Fällt der Flächenabschnitt auf mehr als ein Pixel, so wurde die Szene unterabgetastet und die Depth Map Auflösung sollte erhöht werden. Die Länge der Kante bezüglich des Betrachters ist dy = dz cosα/cosβ. Unter Annahme einer Near-Plane mit einer Distanz von 1 besitzt die Projektion der Kante eine Länge von dp = dy/z im Betrachterbild. Das Verhältnis von dp und ds gibt nun den Aliasing-Fehler an und berechnet sich wie folgt: dp ds = 1 z dz ds cosα cosβ Eine Unterabtastung tritt dann auf, wenn dp größer als ein Pixel der Shadow Map in Weltkoordinaten wird. Dies kann aufgrund von zwei verschiedenen Situationen passieren, wie die obige Formel zeigt. Perspektivisches Aliasing tritt auf, wenn dz groß ist z ds und wird durch die perspektivische Projektion der Betrachterkamera verursacht. Objekte die näher am Betrachter liegen, müssen im Idealfall mit einer höheren Auflösung

12 Shadow Mapping Abbildung 2.5: Das Ergebnis von PCF. Links: ohne PCF. Rechts: mit PCF. abgetastet werden als entfernte Objekte, wo bereits eine geringe Auflösung ausreicht. Hierfür wird jedoch eine Shadow Map benötigt, die nicht einheitlich ist. Das Verfahren namens Parallel-Split Shadow Maps [FZ06], welches später genauer erläutert wird, nähert sich dieser Idee an. Projektives Aliasing ereignet sich, wenn cosα/cosβ groß ist, also bei Oberflächen, die fast parallel zur Lichtquelle gerichtet sind [MW04]. Sie werden von der Lichtquelle kaum gesehen, nehmen aber im Betrachterbild eine umso größere Fläche ein. Die Reduzierung dieser Art von Fehler benötigt eine Anpassung der Abtastrate basierend auf der Szenenanalyse, was vergleichsweise schwerer zu realisieren ist. 2.4 Percentage Closer Filter Die erste Optimierung des Shadow Mapping Verfahrens wendet sich nicht den eben analysierten Ursachen der Aliasingfehler zu, sondern den dadurch auftretenden Symptomen. Der Percentage Closer Filter (PCF) [WTR87] ist ein Anti-Aliasing-Filter, welcher die lückenhaften Schattenkanten mit neuen interpolierten Werten schließt. Ein netter Nebeneffekt sind dabei weichere Schattenübergänge. Diese sind jedoch global konstant und damit nicht physikalisch korrekt. Die optische Qualität der Schatten steigt trotzdem. Es ist zu bemerken, dass softe Übergänge nicht mit einem Weichzeichnen der Shadow Map erzeugt werden können [EE09]. Die Shadow Map speichert Tiefenwerte und nicht die Schattenbereiche selbst. Das Ergebnis beim Vergleich von durchschnittlichen Tiefenwerten ist genauso binär wie zuvor. Ein Pixel kann entweder im Schatten liegen oder außerhalb davon. Das Ergebnis eines Anti-Aliasing-Filters sollte allerdings mehrere Werte annehmen können, um weiche Übergänge zu garantieren. Aus dem selben Grund lässt sich kein bilinearer Filter einsetzen, wie es bei Texturen

2.4 Percentage Closer Filter 13 Abbildung 2.6: Eine bilineare Filterung (oben) würde für Depth Maps nicht funktionieren, da nur Tiefenwerte interpoliert werden. Im Gegensatz dazu vergleicht PCF (unten) zuerst die Werte und filtert dann das Ergebnis. Abbildung entnommen aus [WTR87]. üblich ist. Er würde zusätzlich die Geometrie der Szene nicht korrekt wiedergeben. Die Lösung von PCF vertauscht die Reihenfolge der Filter- und Vergleichsphase (siehe Abbildung 2.6) [WTR87]. Die Tiefe der zu rendernden Oberfläche wird zuerst mit allen Werten einer Region um das entsprechende Pixel der Shadow Map verglichen. Es entsteht ein binäres Bild dieser Region, wobei jedes Pixel angibt, ob es sich im Schatten befindet oder nicht. Anschließend wird dieses Bild gefiltert, sodass daraus ein Verhältnis der im Schatten liegenden Pixel resultiert. Das Ergebnis sind weiche, geglättete Kanten (siehe Abbildung 2.5). Den Unterschied zwischen einer gewöhnlichen Filterung und PCF zeigt Abbildung 2.6 anhand einer Beispielsituation. Die Distanz der Lichtquelle zur Oberfläche, welche beleuchtet werden soll, beträgt z = 49.8. Die dazugehörige 3 3 Region wird links im Bild dargestellt. Ein bilinearer Filter würde den Wert 22.9 berechnen, ihn mit 49.8 vergleichen und daraus wieder eine 1 ziehen, was bedeutet, dass 100% der Oberfläche im Schatten liegt. PCF da-

14 Shadow Mapping Abbildung 2.7: Anpassung des Lichtfrustums an das Betrachterfrustum und an die Szene. Links: mit einer achsenparallelen Bounding-Box. Rechts: mit einer optimalen Bounding-Box. gegen vergleicht jeden Wert der Depth Map Region mit 49.8 und filtert das binäre Bild um auf einen Wert von 0.55 zu kommen, was bedeutet, dass 55% der Oberfläche im Schatten liegt. Je nachdem, wie weich die Kanten auslaufen sollen, kann die Größe der Filterregion gewählt werden. Umso größer die Region, desto weicher die Schattenränder. 2.5 Practical Shadow Mapping Eine der einfachsten Methoden, die Abtastrate zur verbessern, nennt sich Fitting [SB05]. Die Idee dahinter ist abzusichern, dass kein Platz der Shadow Map verschwendet wird. Diese Situation kommt auf, wenn das Lichtfrustum nicht auf das Betrachterfrustum angepasst wird. Vor allem in großen Außenszenen, für die man eine einzige Shadow Map benutzt, wird nur ein kleiner Teil der Shadow Map für das Betrachterfrustum relevant sein. Folglich kann das Lichtfrustum auf den relevanten Teil verkleinert werden, wodurch sich die Abtastrate erhöht. Um Schatten nur für den sichtbaren Bereich zu berechnen, identifiziert man zuerst alle Objekte, die sich im Frustum des Betrachters oder des Lichtes befinden und berechnet zweitens ihre Bounding-Box (siehe Abbildung 2.7). Es ist wichtig auch Objekte innerhalb des Lichtfrustums mit einzubeziehen, auch wenn diese gar nicht vom Betrachter gesehen

2.6 Parallel-Split Shadow Maps 15 Abbildung 2.8: Das Lichtfrustums wird in kleinere Frustums L i gespalten, sodass jeder Teil die entsprechende Schicht K i des Betrachterfrustums bedeckt. Durch die verschieden große Schichten wird die Abtastrate pro Schicht angepasst. Abbildung angelehnt an [FZ06]. werden. Trotzdem werfen sie einen Schatten auf Objekte, die wiederum vom Betrachter sichtbar sind. Im letzten Schritt kann das Lichtfrustum auf die Bounding-Box der identifizierten Objekte angepasst werden. Generell ist die Wahl einer optimalen Bounding-Box eine bessere Lösung, als die einer achsenparallelen Bounding-Box, da sie mit den kleinstmöglichen Ausmaßen alle Objekte enthält. Einen beispielhaften Vergleich stellt Abbildung 2.7 dar. 2.6 Parallel-Split Shadow Maps Das Verfahren von Parallel-Split Shadow Maps (PSSM) [FZ06] wendet sich den Ursachen der Aliasing-Probleme zu und zwar der Tatsache, dass bei einer perspektivischen Betrachterkamera Punkte in unterschiedlichen Distanzen auch unterschiedliche Abtastdichten benötigen. Umso weiter weg sich ein Punkt von der Kamera befindet, desto kleiner kann die Abtastdichte der Shadow Map gewählt werden, ohne einen sichtbaren Qualitätsunterschied zu bemerken. Umgekehrt bedeutet dies natürlich, dass im vorderen Bereich des Kamerafrustums eine hohe Abtastrate nötig ist. Die Idee von PSSM ist nun das Betrachterfrustum in verschiedene Tiefeschichten einzuteilen, die parallel zur Bildebene sind, und dann eine individuelle Shadow Map für jede einzelne

16 Shadow Mapping Teilschicht zu rendern (siehe Abbildung 2.8). Die Shadow Maps sind unabhängig voneinander, wodurch in unterschiedlichen Tiefenbereichen je nach Anforderungen auch unterschiedliche Abtastdichten gewählt werden können. Außerdem wird die Shadow Map durch mehrere kleinere Tiefenpuffer ersetzt, was in der Regel zu einem geringeren Speicherverbrauch führt. Die benötigte Rechenzeit im Vergleich zu einer Shadow Map ist jedoch höher. Es stellt sich die Frage, in welcher Distanz die Schnittebenen nun gesetzt werden sollen, wenn man von Shadow Maps mit gleicher Auflösung für jede Teilschicht ausgeht. Dabei stellt sich heraus, dass bei einem einheitlichen Schnittschema es in nahen Bereichen und bei einem logarithmischen Schnittschema es in entfernteren Bereichen zu einer Unterabtastung kommt. Ein praktisches Schnittschema ist also der Mittelwert aus den beiden Distanzwerten für jeweils eine Teilschicht. Ist das Betrachterfrustum in seine Tiefeschichten K i eingeteilt, muss darauf das Lichtfrustum in ebenfalls i verschiedene kleinere Frustums L i so partitioniert werden, dass L i den gesamten Raum von K i abdeckt (siehe Abbildung 2.8). Anschließend kann man das bekannte Verfahren von Shadow Mapping anwenden, mit dem Unterschied, dass statt einer Shadow Map i verschiedene Tiefenpuffer gerendert werden müssen. 2.7 Weitere Verfahren Da die in diesem Kapitel beschriebenen Optimierungen von Shadow Mapping das Aliasing-Problem auf unterschiedliche Arten reduzieren, lassen sie sich beliebig miteinander kombinieren, um ein noch besseres Ergebnis zu erreichen. Die Literatur bietet mehr Verfahren, die sich diesem Thema widmen. Eine weitere Kategorie nennt sich Warping und basiert auf der Idee, das Licht- sowie das Betrachterfrustum in einen anderen perspektivischen Raum zu transformieren und dort die Schattenberechnungen durchzuführen [MS02] [MW04]. Der perspektivische Raum wird dabei so gewählt, dass Objekte, die nahe am Betrachterfrustum liegen, größer skaliert werden. Dadurch nehmen sie mehr Platz in der Shadow Map ein und werden höher abgetastet. Ein kostspieliger Nachteil des PCF sind die vielen Vergleiche mit der Shadow Map, die pro Pixel gemacht werden müssen. In das Verfahren von Variance Shadow Maps [WD06] gehen deshalb die statistischen Informationen für den Mittelwert und die Varianz ein,

2.7 Weitere Verfahren 17 was die Vergleiche pro Pixel auf einen einzigen reduziert. Eine Alternative zu PSSM ist ein adaptives Shadow Mapping Verfahren [RF01], welches die benötigte Abtastdichte nicht für mehrere festgelegte Schichten, sondern für jedes Pixel anpasst. Der Ansatz ist auf eine hierarchische Datenstruktur für die Shadow Map angewiesen, die Bereiche nach Bedarf verfeinern oder grober strukturieren kann. Da diese Struktur nur schwer auf heutige Grafikkarten übertragen werden kann, erreicht man hiermit noch keine nutzbaren Bildraten.

3 Zusammenfassung und Ausblick Diese Ausarbeitung zum Thema Shadow Mapping erläutert das grundlegene Verfahren von Lance Williams [Wil78] und drei weitere Optimierungen. Das Prinzip von Shadow Mapping besteht darin, jede Lichtquelle als eine Kamera zu interpretieren, welche nur die Szenenobjekte sieht, die im direkten Licht sind. Andere Punkte im Raum, welche hinter diesen Objekten liegen, müssen sich daher im Schatten befinden. Der erste Schritt des Algorithmus ist die Szene aus Sicht der Lichtquelle zu rendern und dabei die Tiefenwerte in einem Tiefenpuffer abzuspeichern. Im zweiten Schritt kann man das Bild aus Betrachtersicht rendern und für jedes Pixel die dazugehörige 3D-Position in das Koordinatensystem des Lichtes transformieren. Hier wird die Tiefe der aktuellen Oberfläche mit der aus dem Tiefenpuffer verglichen. Nun kann festgestellt werden, ob sich der Punkt hinter einem anderen befindet und damit im Schatten liegt oder beleuchtet wird. Da das Verfahren im Bildraum stattfindet, leidet es unter Quantisierungs- und Aliasing-Fehler. Ein Bias, der die Schattenlinie ein wenig nach hinten verschiebt, behebt die auftretenden Quantisierungsprobleme. Der Percentage Closer Filter [WTR87] passt die gewöhnliche Texturfilterung auf das Shadow Mapping-Verfahren an, weil eine standardmäßige Interpolation von Tiefenwerten hier keinen Sinn ergibt. Die Tiefe eines Punktes im Lichtraum wird nicht mit einem Wert des Tiefenpuffers, sondern mit einer umliegenden Region verglichen und dann das Ergebnis gefiltert. Somit werden weichere und geglättete Kanten erreicht. Practical Shadow Mapping [SB05] passt das Lichtfrustum auf die Objekte an, die vom Betrachter sichtbar sind. Dadurch kann das Lichtfrustum verkleinert werden, was einen genaueren Tiefenpuffer zur Folge hat. Das Verfahren von Parallel-Split Shadow Maps [FZ06] basiert auf der Beobachtung, dass nahe Bereiche des Betrachterfrustums einen genaueren Tiefenpuffer benötigen als weiter entfernte. Demnach wird das Betrachterfrustum in mehrere Schichten geteilt, für die jeweils ein separater Tiefenpuffer berechnet wird. Da die verschiedenen Puffer unabhängig voneinander sind, kann man die Genauigkeit für eine Schicht individuell anpassen, wodurch sicht-

20 Zusammenfassung und Ausblick Abbildung 3.1: Die optische Qualität der Beleuchtung steigt durch die Berücksichtigung der Umgebungsverdeckung wesentlich. Abbildung entnommen aus [PS07]. bare Aliasing-Fehler reduziert werden. Alle beschriebenen Methoden generieren harte oder einheitlich geglätte Schattenkanten. Möchte man weich auslaufende Schattenränder, wie sie in der Realität vorkommen, annähern, muss zusätzlich die Information berücksichtigt werden, wie weit ein Schattenpunkt vom Verdecker entfernt ist. Eine Möglichkeit Soft Shadows zu erzeugen, ist den Schatten umso stärker zu filtern, je größer die Distanz zum Verdeckerobjekt ist [EE09]. Außerdem behandeln die Verfahren nur direktes Licht. In der wirklichen Welt prallen Lichtstrahlen auf Oberflächen und werden teilweise je nach Struktur in unterschiedliche Richtungen reflektiert [TAM08]. Man spricht dann von indirektem Licht. Auf Punkte, die zum großen Teil von ihrer Umgebung verdeckt werden, fallen dann weniger solcher indirekten Strahlen. Die optische Qualität der Beleuchtung steigt wesentlich durch Vefahren, die sich der Umgebungsverdeckung zuwenden. Abbildung 3.1 zeigt einen Vergleich zweier Bilder mit und ohne Berücksichtigung der Umgebungsverdeckung.

Literaturverzeichnis [Cro77] [EE09] [FZ06] [MS02] [MS07] [MW04] [PS07] Crow, Franklin C.: Shadow Algorithms for Computer Graphics. Technischer Bericht, Computer Graphics (Proceedings of ACM SIGGRAPH 77), 1977. Elmar Eisemann, Ulf Assarsson, Michael Schwarz Michael Wimmer: Casting Shadows in Real Time. Technischer Bericht, SIG- GRAPH Asia, 2009. Fan Zhang, Hanqiu Sun, Leilei Xu Lee Kit Lun: Parallel-Split Shadow Maps for Large-scale Virtual Environments. Technischer Bericht, Proceedings of the 2006 ACM international conference on Virtual reality continuum and its applications, 2006. Marc Stamminger, George Drettakis: Perspective Shadow Maps. Technischer Bericht, ACM Transactions on Graphics (Proceedings of SIG- GRAPH), 2002. Martin Stich, Carsten Wächter, Alexander Keller: Efficient and Robust Shadow Volumes Using Hierarchical Occlusion Culling and Geometry Shaders. In: GPU Gems 3. AddisonWesley Professional, 2007. Michael Wimmer, Daniel Scherzer, Werner Purgathofer: Light Space Perspective Shadow Maps. Technischer Bericht, Vienna University of Technology, 2004. Perumaal Shanmugam, Okan Arikan: Hardware Accelerated Ambient Occlusion Techniques on GPUs. Technischer Bericht, Proceedings of the 2007 symposium on Interactive 3D graphics and games, 2007.

22 Literaturverzeichnis [RF01] [RF03] [SB02] [SB05] Randima Fernando, Sebastian Fernandez, Kavita Bala Donald P. Greenberg: Adaptive Shadow Maps. Technischer Bericht, ACM SIGGRAPH 2001, 2001. Randima Fernando, Mark J. Kilgard: The CG Tutorial. Addison- Wesley Longman, 2003. Stefan Brabec, Thomas Annen, Hans-Peter Seidel: Shadow Mapping for Hemispherical and Omnidirectional Light Sources. Technischer Bericht, Max-Planck-Institut für Infomatik, 2002. Stefan Brabec, Thomas Annen, Hans-Peter Seidel: Practical Shadow Mapping. Technischer Bericht, Max-Planck-Institut für Informatik, 2005. [TAM08] Tomas Akenine-Möller, Eric Haines, Naty Hoffman: Real- Time Rendering. A.K. Peters Ltd., 3 Auflage, 2008. [WD06] [Wil78] William Donnelly, Andrew Lauritzen: Variance Shadow Maps. Technischer Bericht, Proceedings of ACM SIGGRAPH Symposium on Interactive 3D Graphics and Games 2006, 2006. Williams, Lance: Casting Curved Shadows on Curved Surfaces. Technischer Bericht, Computer Graphics (Proceedings of ACM SIGGRAPH 78), 1978. [WTR87] William T. Reeves, David H. Salesin, Robert L. Cook: Rendering Antialiased Shadows with Depth Maps. Technischer Bericht, Computer Graphics (Proceedings of ACM SIGGRAPH 87), 1987.