Photon Mapping

Transcription

Photon Mapping
Photon Mapping
Leonhard Rabel
How to make a PIXAR movie
Zusammenfassung
Das Ziel von Photon Mapping ist, eine effiziente Berechnung der globalen Beleuchtung auch bei komplexen Szenen mit beliebiger Geometrie zu
ermöglichen. Dazu werden vor dem eigentlichen Rendervorgang von allen
Lichtquellen aus sogenannte Photonen verschossen, welche an Oberflächen
gebrochen, gestreut, gespiegelt oder absorbiert werden können. Trifft ein
Photon dabei auf diffuse Oberflächen, so werden diese Treffer in einer
Photon Map gespeichert. Mithilfe dieser Photon Map kann ein Raytracingbasiertes Verfahren anschließend die indirekte und somit auch die globale
Beleuchtung berechnen.
1
Motivation
Ein zentraler Bestandteil der fotorealistischen Bildsynthese ist die Berechnung
der globalen Beleuchtung. Bei Raytracing basierten Verfahren lässt sich beispielsweise mit Pathtracing zusätzlich zur direkten auch die diffuse indirekte
Beleuchtung und Kaustiken errechnen. Pathtracing ist dabei aber extrem Zeitaufwändig und bei speziellen Situationen wie Kaustiken wird trotzdem keine
ausreichende Bildqualität erreicht. Aus diesem Grund existieren bereits zahlreiche Erweiterungen für Pathtracing bzw. Raytracing basierte Verfahren im
Allgemeinen. Beispiele hierfür sind Illumination Maps oder Radiosity, welche
aber beide mehrere Nachteile aufweisen12 . Insbesondere im Hinblick auf die
verwendete Geometrie. Das hier vorgestellte Photon Mapping ist ebenfalls eine
Erweiterung für Raytracer, leidet jedoch unter weniger Einschränkungen als die
oben genannten Verfahren. So stellt Photon Mapping eine effiziente und genaue
Möglichkeit dar, um die globale Beleuchtung zu berechnen.
2
Grundbegriffe
2.1
Kaustik
Kaustiken sind ein Begriff aus der geometrischen Optik. Sie beschreiben lokal
aufgehellte Bereiche, welche durch Bündelung von Licht an gewölbten Flächen
auftreten. Diese Bündelungen entstehen fast ausschließlich an spiegelnden und
transparenten Oberflächen, also wenn Licht gespiegelt oder gebrochen wird3 .
1 Vgl.
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 6
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 52
3 Vgl. http://de.wikipedia.org/wiki/Kaustik (Optik), aufgerufen am 15.07.2011
2 Vgl.
1
2.2
Renderequation
Die Rendergleichung ist die mathematische Lösung der Beleuchtung an einem
Punkt x, gesehen aus Richtung ω
~:
Lo (x, ω
~ ) = Le (x, ω
~ ) + Lr (x, ω
~)
Sie beschreibt also alles am Punkt x emittierte und reflektierte Licht. Das reflektierte Licht wird beschrieben durch:
Z
Lr (x, ω
~ ) = fr (x, ω
~ 0, ω
~ )Li (x, ω
~ 0 )(~
ω 0 · ~n)d~
ω0
Ω
also das Integral über die Hemisphäre Ω am Punkt x. Dieses Integral berechnet
alles einfallende Licht aus allen Richtungen über x, gewichtet über die Materialeigenschaft fr (x, ω
~ p, ω
~ ) am Punkt x und den Eintrittswinkel ω
~ 04 .
2.3
Globale Beleuchtung
Die globale Beleuchtung an einem Punkt x setzt sich zusammen aus5 :
• Direkter Beleuchtung: alles Licht, welches ohne Umwege auf den Punkt x
fällt.
• Diffuser indirekter Beleuchtung: alles Licht, das an diffusen Oberflächen
gestreut wird, bevor es auf den Punkt x fällt.
• Kaustiken: alles Licht, welches gespiegelt oder gebrochen wird, bevor es
auf Punkt x fällt.
3
Überblick
Photon Mapping wurde von Henrik Wann Jensen entwickelt6 und hat das Ziel,
die Berechnung der globalen Beleuchtung zu beschleunigen7 . Photon Mapping
ist ein Two Pass Algorithm. Das Rendern des Bildes wird also in zwei Schritte
eingeteilt: im ersten Schritt wird die Beleuchtung der Szene vorberechnet und
im anschließenden zweiten Schritt werden diese vorberechneten Daten verwendet, um die Berechnung der globalen Beleuchtung zu beschleunigen. Dazu wird
ähnlich zu Illumination Maps von den Lichtquellen aus Licht durch die Szene
verfolgt und bei Interaktion mit Objekten ggf. gespeichert. Der entscheidende Unterschied von Photon Mapping zu bestehenden Lösungen ist, sogenannte
Photonen zu verschießen. Diese transportieren einen Bruchteil der Leistung einer Lichtquelle und geben diese Leistung bei der Interaktion mit der Szene ab.
Die Photonen werden dabei wie Strahlen behandelt und können daher nur Effekte der geometrischen Optik simulieren. Gibt ein Photon Leistung ab, d.h. wird
Licht absorbiert, so werden diese Treffer unabhängig von der Geometrie frei
im Raum gespeichert, wodurch folgende Vorteile gegenüber anderen Verfahren
erreicht werden8 :
4 Vgl.
Henrik Wann
Henrik Wann
6 Vgl. Peter Shirley,
7 Vgl. Henrik Wann
8 Vgl. Henrik Wann
5 Vgl.
Jensen, Realistic Image Synthesis Using
Jensen, Realistic Image Synthesis Using
R. Keith Morley, Realistic Ray Tracing,
Jensen, Realistic Image Synthesis Using
Jensen, Realistic Image Synthesis Using
2
Photon Mapping,
Photon Mapping,
S. 212 - 213
Photon Mapping,
Photon Mapping,
S. 27-28
S. 96
S. 7
S. 52-54
Abbildung 1: Schematische Darstellung verschiedener Lichttypen: Sphere Light,
Point Light und Area Light (v. l.)
• Unabhängig von der Geometrie: es können beliebige Formen und auch
beliebig komplexe Szenen verwendet werden, da die Daten nicht aufwändig
in Texturen gespeichert werden.
• Unabhängig vom Betrachter: da anstatt eines Helligkeitswertes Treffer mit
Richtung und Intensität gespeichert werden, ist die errechnete Beleuchtung unabhängig vom Betrachter. Ändern sich weder die Szene, noch die
Beleuchtung, so können die berechneten Daten aus beliebigen Blickwinkeln genutzt werden.
• Alle Arten von Oberflächen können simuliert werden. Also spiegelnde,
glänzende, diffuse und beliebige Mischformen.
4
Photon Map
4.1
Photon Tracing
Photon Tracing beschreibt den Teil des Photon Mappings, in dem die sogenannte Photon Map aufgebaut wird. Dazu werden von allen Lichtquellen aus zufällig
Photonen in die Szene geschossen und deren Treffer in der Photon Map gespeichert9 . Die Anzahl n der verschossenen Photonen hängt dabei von der Helligkeit
der Lichtquelle, die Richtung von der Art der Lichtquelle ab(vgl. Abbildung 1).
Bei steigender Anzahl von Lichtquellen müssen nicht generell mehr Photonen
verschossen werden, da jede Lichtquelle nur noch einen kleineren Teil zur gesamten Beleuchtung beiträgt10 . Wurden alle n Photonen verschossen, so muss
die Leistung jedes Treffers mit der Gesamtzahl der Photonen skaliert werden.
Die Beleuchtung einer Szene mit 10.000 Photonen soll nur genauer sein als mit
100 Photonen, nicht heller11 .
9 Vgl.
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 55
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 59
11 Vgl. Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 56
10 Vgl.
3
4.2
Projektion Maps
Verschießt man die Photonen nur zufällig in die Szene, so hat man zwei Nachteile:
• Photonen ohne Treffer mit der Szene
• Kein gezielter Beschuss möglich
Der erste Punkt ist intuitiv klar: hat man eine Szene mit nur wenigen Objekten,
so können Photonen auch ohne Treffer bleiben und liefern daher keine Informationen über die Beleuchtung. Der zweite Punkt ist nur auf der zweiten Blick
ein Nachteil. Licht breitet sich in der Regel relativ gleichmäßig aus, weshalb
zufälliges verschießen ausreichend sein sollte. Manche Objekte haben jedoch eine größere Wirkung als andere. Spiegelnde und transparente Objekte können
z.B. Kaustiken erzeugen, welche einen höheren Detailgrad besitzen als diffuse
indirekte Beleuchtung. Es ist also wünschenswert, diese Objekte zusätzlich mit
mehr Photonen zu beschießen, um so mit nur geringfügig höherem Aufwand
bessere Kaustiken zu erzeugen. Die Lösung hierfür sind Projektion Maps, also eine Art Rundumsicht von einer Lichtquelle aus. Dazu unterteilt man die
Hemisphäre der Lichtquelle in Sektoren und testet für jeden Sektor, ob ein Objekt in diesem Sektor liegt. So ist es möglich, Photonen nur in Sektoren zu
verschießen, in denen auch wirklich Objekte liegen bzw. Objekte liegen, welche
Kaustiken erzeugen können. Man erreicht mit Projektion Maps also eine höhere
Effizienz und detailreichere Kaustiken12 .
4.3
Photon Scattering
Photon Scattering beschäftigt sich mit der Frage, wie sich die ausgesendeten
Photonen bei Interaktion mit Oberflächen verhalten. Dabei gibt es folgende
vier Möglichkeiten13 :
• Brechung: das Photon wird durch ein transparentes Material umgelenkt
• Spiegelung: das Photon wird in Spiegelrichtung umgelenkt
• Streuung: das Photon wird in eine beliebige Richtung umgelenkt
• Absorbation: das Photon gibt seine Leistung an die Oberfläche ab
Die Interaktion kann dabei auch aus einer Mischform bestehen. Bei einem Treffer auf einer Glaskugel wird beispielsweise ein Teil des Lichts gebrochen und der
Rest gespiegelt oder absorbiert. Hier geht man wie bei rekursivem Raytracing
vor. Man erstellt also für jeden Anteil der Materialeigenschaft ein neues Photon
mit entsprechender Richtung und skalierter Leistung. Für eine Glaskugel wären
das zwei neue Photonen: ein Photon in Spiegelrichtung und ein Photon welches
entsprechend den Brechungsindizies umgelenkt wird. Die neu entstandenen Photonen haben Leistung entsprechend den Anteilen von Brechung und Spiegelung.
Um nun auch Color Bleeding zu simulieren, d.h. dass eine rote Wand auch nur
rotes Licht reflektieren kann, wird die Gesamtleistung eines Photons über die
RGB-Komponenten des Lichts approximiert. Trifft also ein Photon auf eine rote
Wand, so wird auch nur der rote Anteil des Photons reflektiert14 .
12 Vgl.
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 59-60
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 60
14 Vgl. Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 60-61
13 Vgl.
4
4.4
Russian Roulette
Ein Problem des oben genannten Vorgehen ist, dass die Photon Map später
aus vielen Photonen mit stark variierender Leistung bestehen wird. Für eine
schnelle und weniger fehleranfällige Auswertung ist es jedoch erforderlich, dass
alle Photonen in der Photon Map die gleiche Leistung besitzen. Die Lösung
hierfür ist Russian Roulette, eine Importance Sampling Methode, welche für
jeden Treffer entscheidet, ob das Photon komplett absorbiert oder komplett
weitergeleitet wird. Dadurch haben alle Photonen in der Photon Map die gleiche
Leistung und die Statistik der Auswertung wird verbessert15 .
4.5
Speicherung
Wird nun entschieden, dass ein Photon komplett absorbiert wird, so wird es in
der Photon Map gespeichert. Dabei ist es jedoch sinnvoll, nur auf Oberflächen
mit diffusem Anteil zu speichern. Beim Auswerten der Photon Map können nur
Photonen verwendet werden, die auch in Richtung des Betrachters reflektiert
werden. Auf einem perfekten Spiegel wäre dies genau eine Richtung, nämlich
die Spiegelrichtung. Der Betrachter wird sich jedoch in der Regel nicht in dieser
Richtung befinden, wodurch Photonen auf spiegelnden Oberflächen in der Regel
auch keine sinnvollen Informationen liefern. Photonen werden deswegen nur auf
zumindest teilweise diffusen Oberflächen gespeichert16 .
4.6
Datenstruktur
Die Photon Map wird nur einmal generiert, bleibt während dem eigentlichen
Rendervorgang statisch und wird nur noch zum nähern der Beleuchtung an einem beliebigen Punkt verwendet. Diese Näherung basiert auf den N nächsten
Photonen zu diesem Punkt. Es ist also wünschenswert, dass diese Photonen
möglichst schnell erreicht werden können. Zusätzlich ist eine kompakte Repräsentation nötig, da die Photon Map ständig im Speicher vorhanden sein
muss17 . Am besten eignet sich hierfür ein 3-dimensionaler kd-Baum. Ein beliebiges Photon lässt sich dadurch in O(log n) erreichen. Außerdem kann ein
linksbalancierter kd-Baum als Array repräsentiert werden, wodurch eine sehr
kompakte Repräsentation im Speicher möglich wird18 . Ein Photon selbst wird
dabei wie in folgt dargestellt19 :
struct photon {
float x , y , z ;
float p [ 3 ] ;
char phi , t h e t a ;
short f l a g ;
}
// p o s i t i o n
// power
// i n c i d e n t d i r e c t i o n
// f l a g f o r k d t r e e
5
x
Abbildung 2: Radiance Estimate: Näherung über die nähsten N Photonen
5
Radiance Estimate
Die Photon Map beinhaltet nun Photonen, welche einen Teil der Leistung einer
Lichtquelle repräsentieren. Will man die Photon Map nun an einem bestimmten
Punkt auswerten, so werden sich an diesem Punkt nur eine sehr geringe Anzahl
an Photonen befinden. Daher lassen diese Photonen keinen Schluss auf die dort
vorherrschende Beleuchtung zu. Die Beleuchtung wird deswegen über die Dichte
der Photonen an diesem Punkt bestimmt. Diese Dichte erhält man, indem die
nächsten N Photonen aus der Photon Map gesucht werden, und deren Leistung
durch die dazu benötigte Fläche geteilt wird20 . Bildlich gesprochen entspricht
dies einer Kugel, die sich so lange um den gewünschten Punkt ausbreitet, bis
N Photonen eingeschlossen sind(vgl. Abbildung 2). Die dafür benötigte Fläche
entspricht dann der projizierten Fläche der Kugel. Ausgedrückt wird dies durch
die folgende Formel:
Lr (x, ω
~) ≈
N
1 X
fr (x, ω
~ p, ω
~ )∆Φp (x, ω
~ p ),
πr2 p=1
also der Summe über N Photonen, jeweils gewichtet über die Materialeigenschaft
am Punkt x und die benötigte Fläche21 . Die Anzahl N an Photonen, welche für
den Radiance Estimate verwendet werden, ist dabei willkürlich gewählt. Je mehr
Photonen eingeschlossen werden, desto genauer wird die Lösung. Dazu werden
jedoch auch mehr Photonen in der Photon Map benötigt, da die Beleuchtung
sonst leicht verwaschen wird. Nutzt man nun unendlich viele Photonen für den
Radiance Estimate, also:
N
1 X
fr (x, ω
~ p, ω
~ )∆Φp (x, ω
~ p ) = Lr (x, ω
~ ),
N →∞ πr 2
p=1
lim
so konvergiert die Schätzung gegen die tatsächliche Lösung22 .
15 Vgl.
16 Vgl.
17 Vgl.
18 Vgl.
19 Vgl.
20 Vgl.
21 Vgl.
22 Vgl.
Henrik
Henrik
Henrik
Henrik
Henrik
Henrik
Henrik
Henrik
Wann
Wann
Wann
Wann
Wann
Wann
Wann
Wann
Jensen,
Jensen,
Jensen,
Jensen,
Jensen,
Jensen,
Jensen,
Jensen,
Realistic
Realistic
Realistic
Realistic
Realistic
Realistic
Realistic
Realistic
Image
Image
Image
Image
Image
Image
Image
Image
6
Synthesis
Synthesis
Synthesis
Synthesis
Synthesis
Synthesis
Synthesis
Synthesis
Using
Using
Using
Using
Using
Using
Using
Using
Photon
Photon
Photon
Photon
Photon
Photon
Photon
Photon
Mapping,
Mapping,
Mapping,
Mapping,
Mapping,
Mapping,
Mapping,
Mapping,
S.
S.
S.
S.
S.
S.
S.
S.
61-64
64
67
68-70
70
75-76
77-78
78-79
5.1
Probleme
Durch die verwendete Näherung werden einige Annahmen gemacht, die unter
Umständen falsch sind. So wird beispielsweise angenommen, dass alle eingeschlossenen Photonen auf der gleichen Ebene liegen. Dies führt zu folgenden
Problemen23 :
• Color Bleeding: an Ecken können falsche Photonen mit eingeschlossen werden, da sich die Kugel nicht nur über die Ebene ausbreitet, sondern auch
über anliegende Ebenen. Dies führt unter Umständen zu Farbsäumen im
Bereich von Ecken.
• Dark Corners: an Kanten stimmt die Annahme über gleichmäßig verteilte
Photonendichte nicht mehr. Dadurch muss mit zunehmender Nähe zu einer
Kante auch die Fläche ständig erhöht werden, um auch genügend Photonen einzuschließen. So entstehen Helligkeitsabfälle am Rand von Ebenen.
• Lightleaks: an sehr dünnen Stellen der Szene, z.B. Blätter oder dünne
Wände, kann es vorkommen, dass Photonen von der falschen Seite der
Ebene mit eingeschlossen werden. Dadurch entstehen helle Flecken an
Stellen, die im Dunkeln liegen.
Lösungen hierfür sind zum Beispiel:
• Andere Volumen: anstatt Photonen mit Hilfe einer Kugel einzufangen“,
”
kann beispielsweise eine flache Elipse oder Scheibe verwendet werden. Somit werden weniger falsche Photonen außerhalb der Ebene eingeschlossen.
• Andere Flächenberechnung: anstatt der projezierten Fläche der Kugel
kann man die konvexe Hülle der eingeschlossen Photonen berechnen. Dies
mindert dunkle Stellen an Kanten und Ecken ab.
Als generelle Lösung kann auch einfach die Anzahl an Photonen erhöht werden.
Da die Näherung konvergiert, werden auch zwangsweise die oben genannten
Artefakte abgeschwächt.
6
Rendern
Das Rendern des fertigen Bildes wird in drei Schritte eingeteilt24 :
• Rendern der direkten Beleuchtung
• Rendern der Kaustiken
• Rendern der diffusen indirekten Beleuchtung
6.1
Direkte Beleuchtung
Die direkte Beleuchtung lässt sich einfach und schnell mittels Raytracing berechnen. Eine Auswertung der Photon Map ist dazu nicht nötig25 .
23 Vgl.
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 79-80
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 96
25 Vgl. Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 101-102
24 Vgl.
7
Abbildung 3: Rendern der indirekten Beleuchtung: erst beim zweiten Treffer auf
einer diffusen Oberfläche wird der Radiance Estimate genutzt
6.2
Kaustiken
Kaustiken treten anders als die indirekte diffuse Beleuchtung nur partiell auf
und haben einen hohen Detailgrad, sind also nicht weich. Eine Auswertung der
Photon Map liefert in der Regel nur eine weiche Beleuchtung, ist also nicht für
Kaustiken geeignet. Durch die Verwendung von speziellen Projection Maps ist es
aber möglich, neben der normalen Photon Map eine Caustics Map zu erstellen,
welche im Bereich von Kaustiken eine genügend hohe Dichte von Photonen
hat. Dadurch reicht ein einfacher Radiance Estimate in Kombination mit der
Caustics Map aus, um detailierte Kaustiken zu rendern. Durch Filter wie z.B.
einen Cone oder Gaussian Filter lassen sich sich die Schärfe und somit auch die
Details weiter verbessern26 .
6.3
Indirekte Beleuchtung
Zum Berechnen der diffusen indirekten Beleuchtung ist es nicht ausreichend
einfach die Photon Map auszuwerten. Die auftretenden Artefakte würden die
Bildqualität zu stark beeinträchtigen und die vorgeschlagenen Lösungen sind
in der Regel zu aufwändig. Daher kombiniert man den Radiance Estimate mit
Pathtracing. Es wird also wieder jedes Pixel mehrfach gesampelt, also beim ersten Auftreffen auf eine diffuse Oberfläche werden mehrere Pfade verfolgt. Beim
zweiten Auftreffen auf eine diffuse Oberfläche wird dann der Radiance Estimate
verwendet, um alle folgenden diffusen Reflektionen zu approximieren(vgl. Ab26 Vgl.
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping, S. 102-103
8
bildung 3). Dadurch werden die auftretenden Artefakte über eine zusätzliche
diffuse Reflektion geschleift” und damit verringert. Man erhält durch die Kom”
bination aus Pathtracing und Radiance Estimate also eine bessere Bildqualität
bei moderat gesteigertem Aufwand27 .
7
Irradiance Caching
Trotz der Optimierung durch Photon Mapping ist die Berechnung der diffusen
indirekten Beleuchtung immer noch am aufwändigsten. Eine weitere Verbesserung ist das Irradiance Caching. Dieses basiert auf der Annahme, dass sich
die diffuse indirekte Beleuchtung generell nur sehr langsam ändert, und somit
bereits berechnete Werte wieder verwendet werden können28 . Die einzige Ausnahme sind dabei Kaustiken, da sich hier die indirekte Beleuchtung abrupt
ändert. Dadurch, dass beim Photon Mapping Kaustiken und diffuse indirekte
Beleuchtung getrennt berechnet werden, ist dies aber nicht weiter schlimm, da
ausschließlich diffuse indirekte Beleuchtung approximiert wird29 .
7.1
Kriterien
Es gibt drei ausschlaggebende Kriterien dafür, ob an einem Punkt x ein bereits
berechneter Wert von Punkt x0 wieder verwendet werden kann30 :
• Abstand von x zu x0 : je weiter die beiden Punkte auseinander liegen, desto
wahrscheinlicher ist es, dass der gecachte Wert nicht mehr brauchbar ist.
• Verhältnis der Normalen: liegen die beiden Punkte auf Oberflächen, welche
eine gleiche Orientierung haben, so können bereits errechnete Werte öfter
verwendet werden.
• Szene: zusätzlich wichtig ist die Lage der Objekte, welche den Punkt x0
indirekt beleuchten. Liegen diese weiter weg, so ist auch die indirekte Beleuchtung in der Regel relativ weich. Der gespeicherte Wert kann also mit
einer höheren Wahrscheinlichkeit genutzt werden.
Aus diesen genannten Kriterien kann nun errechnet werden, ob bereits errechnete Werte für die indirekte Beleuchtung an einem neuen Punkt wieder verwendet
werden können31 .
27 Vgl.
Henrik
Henrik
29 Vgl. Henrik
30 Vgl. Henrik
31 Vgl. Henrik
28 Vgl.
Wann
Wann
Wann
Wann
Wann
Jensen,
Jensen,
Jensen,
Jensen,
Jensen,
Realistic
Realistic
Realistic
Realistic
Realistic
Image
Image
Image
Image
Image
9
Synthesis
Synthesis
Synthesis
Synthesis
Synthesis
Using
Using
Using
Using
Using
Photon
Photon
Photon
Photon
Photon
Mapping,
Mapping,
Mapping,
Mapping,
Mapping,
S.
S.
S.
S.
S.
103-104
139-140
143-144
140-141
141
8
Fazit
Photon Mapping ist eine der derzeit besten Methoden zur Berechnung der globalen Beleuchtung. Durch die Kombination von Pathtracing und Photon Mapping
lässt sich die Renderzeit bei gleichbleibender Bildqualität drastisch verkürzen.
Insbesondere Kaustiken lassen sich so sehr effizient berechnen. Zusätzlich ist
Photon Mapping durch die Unabhängigkeit von Betrachter und Geometrie sehr
flexibel einsetzbar. Aus diesen Gründen wird Photon Mapping mittlerweile von
den meisten großen Renderern unterstützt32 .
9
Literaturverzeichnis
Henrik Wann Jensen, Realistic Image Synthesis Using Photon Mapping. Wellesley: A K Peters, 2001
Peter Shirley, R. Keith Morley, Realistic Ray Tracing. Natick: A K Peters, 2003
http://de.wikipedia.org/wiki/Kaustik (Optik), aufgerufen am 15.07.2011
http://de.wikipedia.org/wiki/Photon Mapping, aufgerufen am 15.07.2011
32 Vgl.
http://de.wikipedia.org/wiki/Photon Mapping, aufgerufen am 15.07.2011
10