shadow mapping - florian feuerstein · 1 einleitung abbildung 1.1: auˇer einem gesteigerten grad...
TRANSCRIPT
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 raumliche Einschatzung der Szene aus. Wahrend 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 fur un-
sere visuelle Wahrnehmung außerst entscheidend. Zum Ersten wirkt die Umgebung
dadurch deutlich realistischer und zum Zweiten wird das Bewusstein der raumlichen
Verhaltnisse gesteigert. Da heutzutage in den meisten Fallen eine dreidimensionale
Szene auf einem zweidimensionalen Medium angezeigt wird, gehen automatisch wich-
tige Informationen zur raumlichen Einschatzung verloren. So ist es beispielsweise ohne
einen Schattenwurf schwer, die Tiefe eines Objekts im Vergleich zu einem zweiten ein-
zuschatzen. Zur Behebung dieses Nachteils reicht es sogar aus einen Schattenwurf zu
erzeugen, der in Bezug zu den ursprunglichen Objekten vollig unrealistisch ist (sie-
he 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 Beitrage entwickelt,
2 Einleitung
welche oft von den enormen Leistungen und technischen Moglichkeiten heutiger Gra-
fikkarten vorangetrieben werden. Es wurden große Fortschritte bezuglich der visuellen
Qualitat sowie der Geschwindigkeit erzielt, die es ermoglichen hochqualitative Schat-
ten sogar in Echtzeit zu berechnen. Obwohl eine große Auswahl an Verfahren zur
Schattengenerierung besteht, gibt es noch keine allgemeingultige Losung fur das Pro-
blem [EE09]. Vielmehr mussen die Vor- und Nachteile der verschiedenen Methoden
fur jede Anwendung individuell abgewagt werden. Dabei wird man an den beiden
grundlegenden Verfahren namens Shadow Mapping [Wil78] und Shadow Volumes
[Cro77] nicht vorbeikommen. Shadow Volumes erzeugen einen pixelgenauen Schat-
ten, sind aber im Vergleich wesentlich aufwandiger zu berechnen. Auch das aktuellste
Verfahren [MS07] erreicht mit einer vorberechneten Datenstruktur, welche die Sze-
ne raumlich aufteilt und zur Beschleunigung dient, nur interaktive Bildraten [EE09].
Shadow Mapping leidet unter Aliasingproblemen, dagegen dauert die Berechnung der
Schatten fur vollstandig dynamische Umgebungen nicht langer als das Rendern der
Szene selbst. Zusatzlichen ist diese Technik einfach zu verstehen sowie zu implemen-
tieren, weshalb Shadow Mapping heutzutage das am meisten eingesetzte Verfahren
zur Schattengenerierung fur interaktive Echtzeitanwendungen ist.
Bevor Kapitel 2 das Verfahren von Shadow Mapping behandelt und mogliche Ver-
besserungen vorstellt, wird zunachst genauer auf den Schattenwurf in der Realitat
eingegangen. Schatten wird oftmals als die Abwesenheit von Licht definiert [TAM08].
Er entsteht, wenn sich ein Objekt, der Verdecker, zwischen der Lichtquelle und ei-
nem anderem Objekt, dem Empfanger, befindet, wobei der Verdecker die direkten
Lichtstrahlen zum Empfanger blockiert. Abbildung 1.2 verdeutlicht diesen Zusammen-
hang. In der wirklichen Welt bestehen alle Lichtquellen aus einer Flache, was dazu
fuhrt, dass jeder Punkt im Raum von mehreren unterschiedlich gerichteten Licht-
strahlen getroffen wird (siehe Abbildung 1.2 links). In Folge dessen bildet sich ein
Schatten, dessen Rander umso weicher auslaufen, desto weiter sie vom Verdecker
entfernt sind. Es wird hierbei von Soft Shadows gesprochen und zwischen dem Voll-
schatten (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 Rander Hard Sha-
3
Abbildung 1.2: Schatten in der Realitat (links) und in der Echtzeit-Computergrafik
(rechts).
dows genannt. Da diese Typen von Lichtquellen sowie der betreffende Schatten nicht
in der Realitat vorkommen, ist das Ergebnis im Vergleich zu Soft Shadows qualitativ
minderwertiger. So konnen Hard Shadows manchmal als Erhebung bzw. Vertiefung
der Geometrie missinterpretiert werden. Jedoch ist die benotigte Rechenzeit fur das
entsprechende Verfahren geringer.
2 Shadow Mapping
Dieses Kapitel geht zuerst auf das ursprungliche Verfahren von Shadow Mapping
[Wil78] ein und wie es fur Echtzeitanwendungen beispielsweise mittels OpenGL1 um-
gesetzt werden kann. Danach werden die Probleme, unter welchen Shadow Mapping
leidet, genauer erlautert, um anschließend drei mogliche Verbesserungen vorzustellen.
Diese versuchen auf unterschiedliche Art und Weise die sichtbaren Nachteile zu redu-
zieren. 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 eingefuhrt wurde und dessen Idee bis heute die Basis fur
viele Weiterentwicklungen ist. Es generiert harte Schattenrander mit einem linearen
Aufwand bezuglich der Szenengeometrie. Außerdem kann jede Beschreibungsform von
Geometrie damit gerendert werden und nicht ausschließlich geschlossene Polygonnetz-
te, wie es bei Shadow Volumes der Fall ist. Das Schlusselelement 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 Licht-
strahlen von einem Punkt aus in einen begrenzten Bereich wirft und somit ahnliche
Eigenschaften wie eine Kamera hat. Das Prinzip von Shadow Mapping ist fur andere
Lichttypen bis auf wenige Details, welche spater beschrieben werden, das selbe.
Schatten, die von einem Punktlicht auf eine Oberflache geworfen werden, reprasentieren
eine Projektion der Szene auf diese Flache, analog zu einer perspektivischen Transfor-
1http://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 ubernommen 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 reprasentiert liegen damit anschaulich alle Punkte im Schatten, die
nicht vom Licht getroffen werden (siehe Abbildung 2.1). Eine mit Schatten gerenderte
Welt enthalt somit zwei Ansichten in einem Bild, namlich die Ansicht des Betrach-
ters 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 Beleuchtungsintensitaten berechnet sowie im
2.1 Simple Shadow Mapping 7
Tiefenpuffer gespeichert. Das entstandene Bild wird auch Depth Map genannt (sie-
he Abbildung 2.1 links unten). Als Zweites wird die Szene vom Betrachterstandpunkt
aus gerendert. Hierbei wird fur jedes Pixel uberpruft, ob die dazugehorige 3D-Position
von der Lichtquelle gesehen wurde oder nicht und somit im Schatten liegt. Um die-
sen Test auszufuhren 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 zL der transformierten Ko-
ordinaten (xL, yL, zL) im Lichtraum mit der gespeicherten Tiefe ZD in der Depth
Map verglichen werden. Das Tupel (xL, yL) gibt die gesuchte Position des Pixels in
der Depth Map an. Ist ZL großer als ZD, liegt der zu rendernde Punkt aus Sicht
der Lichtquelle hinter einem anderem und folglich im Schatten. Falls ZL gleich ZD
ist, sieht der Betrachter den gleichen Punkt wie das Licht zuerst und der Punkt wird
beleuchtet. In der Praxis kann es auch passieren, dass ZL kleiner als ZD ist, worauf
Abschnitt 2.3 genauer eingeht.
Um die Transformationsmatrix T vom Betrachterraum in den Lichtraum zu berechnen
mussen die Transformationsmatrix der Betrachterkamera TK , die Transformationsma-
trix des Lichtes TL sowie dessen Projektionsmatrix PL bekannt sein [RF03]. Daraus
ergibt sich folgende Formel:
T = PL ∗ TL ∗ T−1K
So werden die (x, y, z)-Koordinaten erst vom Betrachterraum in Weltkoordinaten um-
gewandelt plus anschließend in das Koordinatensystem der Lichtquelle transformiert
und perspektivisch in das kanonische Sichtvolumen projiziert. Da sich ZL sowie ZD
nun im selben Raum befinden, lassen sich die Werte problemlos miteinander verglei-
chen. 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 hohere
Genauigkeit benotigt 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 ent-
fernter 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 ZL und ZD anzupassen, sollte man auf eine lineare Depth Map zuruckgreifen. Mit-
hilfe heutiger Grafikkarten, welche die Programmierung eigener Shader ermoglichen,
8 Shadow Mapping
Abbildung 2.2: Die Standardlichtypen der Echtzeit-Computergrafik mit Shadow Map-
ping. Links: Spotlicht. Mitte: omnidirektionales Punktlicht. Rechts: direktionales
Licht.
lasst sich dies einfach realisieren. Weiterhin ist zu berucksichtigen, dass alle Berech-
nungen im Bildraum ausgefuhrt 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 konnten, sich im
Sichtfeld des Lichtquellenbildes befinden [Wil78].
Das Verfahren von Shadow Mapping benotigt 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 unnotige Be-
rechnungen der Beleuchtung verzichten kann, dauert die Erzeugung der Depth Map
nicht langer als die des Endbildes. Außerdem hangt der Aufwand der Schattenbestim-
mung nur von der Auflosung des finalen Bildes ab. Dadurch kann die Auflosung der
Depth Map unabhangig von der des Bildes gewahlt und die Genauigkeit angepasst
werden.
2.2 Verschiedene Lichttypen mit Shadow Mapping
Fur 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
ubertragen werden und keine weiteren Veranderungen sind notig (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 ubliche 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 Wurfel um die Lichtquelle projiziert (siehe Abbildung
2.2 mitte). Beim Test, ob ein 3D-Punkt im Schatten liegt oder nicht, muss dann
zuerst gepruft werden in welches der sechs Frustums der Punkt fallt, bevor ein Tie-
fenvergleich mit der entsprechenden Depth Map gemacht werden kann. Eine weitere
Moglichkeit 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 mussen, was inkompatibel mit der normalen Rasteri-
sierungspipeline ist [EE09]. Aus diesem Grund ist die erste Methode heutzutage die
effizientere. Bei einem direktionalen Licht laufen alle Lichtstrahlen parallel zueinan-
der, 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
Ubertragung der stufenlosen Tiefenwerte im Raum in die Depth Map der Fall, die
nur eine begrenzte Anzahl an Bits pro Eintrag zur Verfugung 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 gerin-
gen Auflosung der Depth Map, welche nicht alle Informationen besitzt, die aus Sicht
des Betrachters benotigt werden. Wahrend man heutzutage die Quantisierungsfeh-
ler durch Verwendung von Float-Texturen mit einer Genauigkeit von 32 Bit klein
halten kann, ist Aliasing ein großeres Problem, welches alle Verfahren im Bildraum
betrifft [Wil78]. Die Idee generell riesige Shadow Maps einzusetzen reduziert zwar das
Problem, jedoch wird der Grafikkartenspeicher uberlastet und nicht jede Grafikkarte
unterstutzt hochauflosende Texturen.
10 Shadow Mapping
Abbildung 2.3: Die zwei großen Probleme von Shadow Mapping. Links: Quantisie-
rungsfehler. 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 Transforma-
tion eines beleuchteten Punktes vom Betrachterraum in den Lichtraum der Tiefen-
wert ZL nicht exakt gleich dem Wert ZD aus der Depth Map ist [Wil78]. Aufgrund
von Rechenungenauigkeiten sowie den Quantisierungsfehlern des Tiefenpuffers ist ZL
manchmal großer oder kleiner als ZD. Um das Problem zu beheben wird ein Bias auf
die Werte der Depth Map addiert, der die Schattenlinie etwas nach hinten verschiebt.
Dieser muss handisch 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 Oberflache, da hier ein Pixel
des Tiefenpuffers auf mehrere Pixel im Betrachterbild abgebildet werden. Eine ver-
einfachte 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 Lichtstrahlenbundel
reprasentiert, welches das Pixel traversiert und eine Große ds × ds bezuglich der lo-
kalen 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 Bundel eine Lange dz = (zf−zn)∗ds.
Dabei trifft es die Kante eines Szenenobjekts mit der Lange dz/cosβ. Nun gilt es her-
auszufinden, wie viele Pixel diese Kante im Bild des Betrachters einnimmt. Fallt der
Flachenabschnitt auf mehr als ein Pixel, so wurde die Szene unterabgetastet und die
Depth Map Auflosung sollte erhoht werden. Die Lange der Kante bezuglich des Be-
trachters ist dy = dz∗cosα/cosβ. Unter Annahme einer Near-Plane mit einer Distanz
von 1 besitzt die Projektion der Kante eine Lange von dp = dy/z im Betrachterbild.
Das Verhaltnis von dp und ds gibt nun den Aliasing-Fehler an und berechnet sich wie
folgt:
dp
ds=
1
z∗ dzds
∗ cosαcosβ
Eine Unterabtastung tritt dann auf, wenn dp großer als ein Pixel der Shadow Map in
Weltkoordinaten wird. Dies kann aufgrund von zwei verschiedenen Situationen passie-
ren, wie die obige Formel zeigt. Perspektivisches Aliasing tritt auf, wenn dzz∗ds groß ist
und wird durch die perspektivische Projektion der Betrachterkamera verursacht. Ob-
jekte die naher am Betrachter liegen, mussen im Idealfall mit einer hoheren Auflosung
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 Auflosung ausreicht.
Hierfur wird jedoch eine Shadow Map benotigt, die nicht einheitlich ist. Das Ver-
fahren namens Parallel-Split Shadow Maps [FZ06], welches spater genauer erlautert
wird, nahert sich dieser Idee an. Projektives Aliasing ereignet sich, wenn cosα/cosβ
groß ist, also bei Oberflachen, die fast parallel zur Lichtquelle gerichtet sind [MW04].
Sie werden von der Lichtquelle kaum gesehen, nehmen aber im Betrachterbild eine
umso großere Flache ein. Die Reduzierung dieser Art von Fehler benotigt eine Anpas-
sung 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 Sym-
ptomen. Der Percentage Closer Filter (PCF) [WTR87] ist ein Anti-Aliasing-Filter, wel-
cher die luckenhaften Schattenkanten mit neuen interpolierten Werten schließt. Ein
netter Nebeneffekt sind dabei weichere Schattenubergange. Diese sind jedoch global
konstant und damit nicht physikalisch korrekt. Die optische Qualitat der Schatten
steigt trotzdem. Es ist zu bemerken, dass softe Ubergange nicht mit einem Weich-
zeichnen der Shadow Map erzeugt werden konnen [EE09]. Die Shadow Map speichert
Tiefenwerte und nicht die Schattenbereiche selbst. Das Ergebnis beim Vergleich von
durchschnittlichen Tiefenwerten ist genauso binar wie zuvor. Ein Pixel kann entweder
im Schatten liegen oder außerhalb davon. Das Ergebnis eines Anti-Aliasing-Filters soll-
te allerdings mehrere Werte annehmen konnen, um weiche Ubergange zu garantieren.
Aus dem selben Grund lasst sich kein bilinearer Filter einsetzen, wie es bei Texturen
2.4 Percentage Closer Filter 13
Abbildung 2.6: Eine bilineare Filterung (oben) wurde fur Depth Maps nicht funktio-
nieren, da nur Tiefenwerte interpoliert werden. Im Gegensatz dazu vergleicht PCF
(unten) zuerst die Werte und filtert dann das Ergebnis. Abbildung entnommen aus
[WTR87].
ublich ist. Er wurde zusatzlich die Geometrie der Szene nicht korrekt wiedergeben.
Die Losung von PCF vertauscht die Reihenfolge der Filter- und Vergleichsphase (sie-
he Abbildung 2.6) [WTR87]. Die Tiefe der zu rendernden Oberflache wird zuerst
mit allen Werten einer Region um das entsprechende Pixel der Shadow Map ver-
glichen. Es entsteht ein binares Bild dieser Region, wobei jedes Pixel angibt, ob es
sich im Schatten befindet oder nicht. Anschließend wird dieses Bild gefiltert, sodass
daraus ein Verhaltnis der im Schatten liegenden Pixel resultiert. Das Ergebnis sind
weiche, geglattete Kanten (siehe Abbildung 2.5). Den Unterschied zwischen einer
gewohnlichen Filterung und PCF zeigt Abbildung 2.6 anhand einer Beispielsituation.
Die Distanz der Lichtquelle zur Oberflache, welche beleuchtet werden soll, betragt
z = 49.8. Die dazugehorige 3× 3 Region wird links im Bild dargestellt. Ein bilinearer
Filter wurde den Wert 22.9 berechnen, ihn mit 49.8 vergleichen und daraus wieder
eine 1 ziehen, was bedeutet, dass 100% der Oberflache 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 binare
Bild um auf einen Wert von 0.55 zu kommen, was bedeutet, dass 55% der Ober-
flache im Schatten liegt. Je nachdem, wie weich die Kanten auslaufen sollen, kann
die Große der Filterregion gewahlt werden. Umso großer die Region, desto weicher
die Schattenrander.
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 ver-
schwendet wird. Diese Situation kommt auf, wenn das Lichtfrustum nicht auf das
Betrachterfrustum angepasst wird. Vor allem in großen Außenszenen, fur die man
eine einzige Shadow Map benutzt, wird nur ein kleiner Teil der Shadow Map fur das
Betrachterfrustum relevant sein. Folglich kann das Lichtfrustum auf den relevanten
Teil verkleinert werden, wodurch sich die Abtastrate erhoht. Um Schatten nur fur
den sichtbaren Bereich zu berechnen, identifiziert man zuerst alle Objekte, die sich
im Frustum des Betrachters oder des Lichtes befinden und berechnet zweitens ih-
re 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 Li gespalten, sodass je-
der Teil die entsprechende Schicht Ki 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 Betrach-
ter 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 Losung, als die einer achsenparallelen Bounding-Box, da
sie mit den kleinstmoglichen Ausmaßen alle Objekte enthalt. 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 Ursa-
chen der Aliasing-Probleme zu und zwar der Tatsache, dass bei einer perspektivischen
Betrachterkamera Punkte in unterschiedlichen Distanzen auch unterschiedliche Ab-
tastdichten benotigen. Umso weiter weg sich ein Punkt von der Kamera befindet,
desto kleiner kann die Abtastdichte der Shadow Map gewahlt werden, ohne einen
sichtbaren Qualitatsunterschied zu bemerken. Umgekehrt bedeutet dies naturlich, dass
im vorderen Bereich des Kamerafrustums eine hohe Abtastrate notig ist. Die Idee von
PSSM ist nun das Betrachterfrustum in verschiedene Tiefeschichten einzuteilen, die
parallel zur Bildebene sind, und dann eine individuelle Shadow Map fur jede einzelne
16 Shadow Mapping
Teilschicht zu rendern (siehe Abbildung 2.8). Die Shadow Maps sind unabhangig von-
einander, wodurch in unterschiedlichen Tiefenbereichen je nach Anforderungen auch
unterschiedliche Abtastdichten gewahlt werden konnen. Außerdem wird die Shadow
Map durch mehrere kleinere Tiefenpuffer ersetzt, was in der Regel zu einem geringe-
ren Speicherverbrauch fuhrt. Die benotigte Rechenzeit im Vergleich zu einer Shadow
Map ist jedoch hoher.
Es stellt sich die Frage, in welcher Distanz die Schnittebenen nun gesetzt werden sol-
len, wenn man von Shadow Maps mit gleicher Auflosung fur jede Teilschicht ausgeht.
Dabei stellt sich heraus, dass bei einem einheitlichen Schnittschema es in nahen Be-
reichen und bei einem logarithmischen Schnittschema es in entfernteren Bereichen zu
einer Unterabtastung kommt. Ein praktisches Schnittschema ist also der Mittelwert
aus den beiden Distanzwerten fur jeweils eine Teilschicht. Ist das Betrachterfrustum
in seine Tiefeschichten Ki eingeteilt, muss darauf das Lichtfrustum in ebenfalls i ver-
schiedene kleinere Frustums Li so partitioniert werden, dass Li den gesamten Raum
von Ki abdeckt (siehe Abbildung 2.8). Anschließend kann man das bekannte Verfah-
ren von Shadow Mapping anwenden, mit dem Unterschied, dass statt einer Shadow
Map i verschiedene Tiefenpuffer gerendert werden mussen.
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 mit-
einander 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 an-
deren perspektivischen Raum zu transformieren und dort die Schattenberechnungen
durchzufuhren [MS02] [MW04]. Der perspektivische Raum wird dabei so gewahlt,
dass Objekte, die nahe am Betrachterfrustum liegen, großer skaliert werden. Dadurch
nehmen sie mehr Platz in der Shadow Map ein und werden hoher abgetastet. Ein kost-
spieliger Nachteil des PCF sind die vielen Vergleiche mit der Shadow Map, die pro
Pixel gemacht werden mussen. In das Verfahren von Variance Shadow Maps [WD06]
gehen deshalb die statistischen Informationen fur 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 benotigte Abtastdichte
nicht fur mehrere festgelegte Schichten, sondern fur jedes Pixel anpasst. Der Ansatz
ist auf eine hierarchische Datenstruktur fur die Shadow Map angewiesen, die Bereiche
nach Bedarf verfeinern oder grober strukturieren kann. Da diese Struktur nur schwer
auf heutige Grafikkarten ubertragen werden kann, erreicht man hiermit noch keine
nutzbaren Bildraten.
3 Zusammenfassung und Ausblick
Diese Ausarbeitung zum Thema Shadow Mapping erlautert das grundlegene Verfah-
ren 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, mussen sich daher im Schatten befin-
den. 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 fur jedes Pixel die da-
zugehorige 3D-Position in das Koordinatensystem des Lichtes transformieren. Hier
wird die Tiefe der aktuellen Oberflache 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 gewohnliche Texturfilterung auf das
Shadow Mapping-Verfahren an, weil eine standardmaßige Interpolation von Tiefen-
werten 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 geglattete 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 Betrach-
terfrustums einen genaueren Tiefenpuffer benotigen als weiter entfernte. Demnach
wird das Betrachterfrustum in mehrere Schichten geteilt, fur die jeweils ein separa-
ter Tiefenpuffer berechnet wird. Da die verschiedenen Puffer unabhangig voneinander
sind, kann man die Genauigkeit fur eine Schicht individuell anpassen, wodurch sicht-
20 Zusammenfassung und Ausblick
Abbildung 3.1: Die optische Qualitat der Beleuchtung steigt durch die
Berucksichtigung der Umgebungsverdeckung wesentlich. Abbildung entnom-
men aus [PS07].
bare Aliasing-Fehler reduziert werden.
Alle beschriebenen Methoden generieren harte oder einheitlich geglatte Schattenkan-
ten. Mochte man weich auslaufende Schattenrander, wie sie in der Realitat vorkom-
men, annahern, muss zusatzlich die Information berucksichtigt werden, wie weit ein
Schattenpunkt vom Verdecker entfernt ist. Eine Moglichkeit Soft Shadows zu erzeu-
gen, ist den Schatten umso starker zu filtern, je großer die Distanz zum Verdeckerob-
jekt ist [EE09]. Außerdem behandeln die Verfahren nur direktes Licht. In der wirklichen
Welt prallen Lichtstrahlen auf Oberflachen 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, fal-
len dann weniger solcher indirekten Strahlen. Die optische Qualitat der Beleuchtung
steigt wesentlich durch Vefahren, die sich der Umgebungsverdeckung zuwenden. Ab-
bildung 3.1 zeigt einen Vergleich zweier Bilder mit und ohne Berucksichtigung der
Umgebungsverdeckung.
Literaturverzeichnis
[Cro77] Crow, Franklin C.: Shadow Algorithms for Computer Graphics. Tech-
nischer Bericht, Computer Graphics (Proceedings of ACM SIGGRAPH 77),
1977.
[EE09] Elmar Eisemann, Ulf Assarsson, Michael Schwarz Micha-
el Wimmer: Casting Shadows in Real Time. Technischer Bericht, SIG-
GRAPH Asia, 2009.
[FZ06] 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.
[MS02] Marc Stamminger, George Drettakis: Perspective Shadow Maps.
Technischer Bericht, ACM Transactions on Graphics (Proceedings of SIG-
GRAPH), 2002.
[MS07] Martin Stich, Carsten Wachter, Alexander Keller: Effi-
cient and Robust Shadow Volumes Using Hierarchical Occlusion Culling
and Geometry Shaders. In: GPU Gems 3. AddisonWesley Professional,
2007.
[MW04] Michael Wimmer, Daniel Scherzer, Werner Purgathofer:
Light Space Perspective Shadow Maps. Technischer Bericht, Vienna Uni-
versity of Technology, 2004.
[PS07] Perumaal Shanmugam, Okan Arikan: Hardware Accelerated Am-
bient Occlusion Techniques on GPUs. Technischer Bericht, Proceedings of
the 2007 symposium on Interactive 3D graphics and games, 2007.
22 Literaturverzeichnis
[RF01] Randima Fernando, Sebastian Fernandez, Kavita Bala Do-
nald P. Greenberg: Adaptive Shadow Maps. Technischer Bericht,
ACM SIGGRAPH 2001, 2001.
[RF03] Randima Fernando, Mark J. Kilgard: The CG Tutorial. Addison-
Wesley Longman, 2003.
[SB02] Stefan Brabec, Thomas Annen, Hans-Peter Seidel: Shadow
Mapping for Hemispherical and Omnidirectional Light Sources. Technischer
Bericht, Max-Planck-Institut fur Infomatik, 2002.
[SB05] Stefan Brabec, Thomas Annen, Hans-Peter Seidel: Practical
Shadow Mapping. Technischer Bericht, Max-Planck-Institut fur Informatik,
2005.
[TAM08] Tomas Akenine-Moller, Eric Haines, Naty Hoffman: Real-
Time Rendering. A.K. Peters Ltd., 3 Auflage, 2008.
[WD06] William Donnelly, Andrew Lauritzen: Variance Shadow Maps.
Technischer Bericht, Proceedings of ACM SIGGRAPH Symposium on In-
teractive 3D Graphics and Games 2006, 2006.
[Wil78] Williams, Lance: Casting Curved Shadows on Curved Surfaces. Tech-
nischer Bericht, Computer Graphics (Proceedings of ACM SIGGRAPH 78),
1978.
[WTR87] William T. Reeves, David H. Salesin, Robert L. Cook: Rende-
ring Antialiased Shadows with Depth Maps. Technischer Bericht, Computer
Graphics (Proceedings of ACM SIGGRAPH 87), 1987.