Photon Mapping

Transcription

Photon Mapping
Photon Mapping
9. Vorlesung
Photorealistische Computergrafik
Thorsten Grosch
Einleitung
ƒ Bisher
– Lösung der Rendering Equation durch Path Tracing
ƒ Alle Lichteffekte sind möglich
ƒ Aber:
Ab S
Sehr
h llangsam und
d verrauscht
ht
ƒ Heute
– Photon
Ph t Mapping
M
i
ƒ Auch alle wichtigen Lichteffekte
ƒ Schneller für spezielle Effekte wie zz.B.
B Kaustiken
T. Grosch - 2 -
Ein neuer Ansatz: Photon Mapping
ƒ Photon Mapping wurde 1993/94
von Henrik Wann Jensen entwickelt
ƒ Dieser Ansatz ermöglicht die effiziente
Berechnung aller wichtigen visuellen globalen
Beleuchtungseffekte, z.B.
– spekulare Reflektionen, diffuse Reflexion
(color bleeding)
bleeding), transluzente Materialien
Materialien,
Volumen Simulation, Dispersion und
insbesondere auch sog. Kaustiken
ƒ geometrieunabhängig
ƒ Basiert auf Particle Tracing [Arvo 1988]
T. Grosch - 3 -
Die Idee: two-pass
two pass Algorithmus
ƒ In einem ersten Schritt werden
von allen Lichtemittern
Photonen ausgesendet
(sogenanntes Particle Tracing)
ƒ Auf diffusen Oberflächen
werden “Treffer”
Treffer gespeichert
und falls das Photon nicht
absorbiert wird, wird es
weiterverfolgt
weiterverfolgt.
ƒ In einem zweiten Schritt wird
die Szene durch einen
Raytracer gerendert, wobei an
entsprechenden Stellen kein
p g oder
Monte Carlo Sampling
ähnliches durchgeführt wird,
sondern die Photon Map
g
g wird
abgefragt
ƒ Zur Bildentstehung gehen wir
also aus zwei Richtungen vor:
vom Auge (Ray Tracing) und
von den Lichtquellen (Particle
Tracing)
T. Grosch - 4 -
First Pass
Aufbau der Photon Map
T. Grosch - 5 -
Sampling der Lichtquelle
ƒ Zunächst einmal müssen die Lichtquellen Photonen
emittieren
itti
ƒ Wenn eine Lichtquelle N Photonen entsendet, dann trägt
jedes Photon genau den 1/N Teil des Lichtstroms
ƒ An dieser Stelle muss man sich eine Sampling Strategie
für Position und Richtung der Photonen überlegen
überlegen.
ƒ Die Basis für die Sampling-Strategie ist die Verteilung
des Lichtstroms über die Raumwinkel
– … also die Lichtstärkeverteilung
T. Grosch - 6 -
LVK-Sampling
LVK
Sampling
Bsp : Lambert Emitter
Bsp.:
dΦ
I=
dω
ƒ Lichtstärke ist definiert als
Lichtstrom pro Raumwinkel
ƒ In den Halbraum werden N
Photonen verschossen, die
alle den gleichen Lichtstrom
Φ/N transportieren sollen
ƒ Um das zu erreichen,
erreichen müssen
in die Raumwinkel mit hohen
Lichtstärken auch
entsprechend mehr Photonen
verschickt werden.
ƒ Die LVK muss daher als
Dichtefunktion verwendet
werden.
Φ = 1000lm
ƒ Alternative:
– Man nimmt eine andere
Dichte, dann müsste
allerdings auch jedes
Photon einen
unterschiedlichen
Lichtstrom transportieren
(ineffizient)
T. Grosch - 7 -
Photonenverteilung
ƒ Für einen (kleinen) Lambert
Emitter ergibt sich etwa folgende
Photonenverteilung
– Anzahl Photonen pro
Raumwinkel ~ cosθ
ƒ Mehr Photonen in Richtung
Normale
ƒ Weniger Photonen in
seitliche Richtungen
Δφout
ΔA
ƒ Für andere Lichtquellen
– Punktlicht: Zufällige Richtung
– Spot: ~ (cosθ)^n
T. Grosch - 8 -
Bsp:
p Flächige
g Lichtquelle
q
ƒ Wir nehmen flächige
Lichtquellen als
Lambertstrahler an.
ƒ Wir wählen zunächst eine
zufällige Position auf der
Lichtquelle
Lichtquelle.
ξ1 , ξ 2 ∈ [0,1]
ƒ Danach wählen wir eine
zufällige Richtung
– Die Richtung lässt sich berechnen
mit Hilfe der Phong-Dichte für n=1
ξ 3 , ξ 4 ∈ [0,1]
(
θ = cos −1 1 − ξ 3
ϕ = 2πξ 4
)
x = sin
i (θ ) ⋅ cos(ϕ )
y = cos(θ )
z = sin (θ ) ⋅ sin (ϕ )
I (θ ) = I 0 ⋅ cosθ
ξ2
ξ1
Von Oben
V der
Von
d S
Seite
it
T. Grosch - 9 -
Photon Scattering
ƒ
Trifft das Photon auf eine
Oberfläche dann wird mit Hilfe
Oberfläche,
von russischem Roulette
entschieden, wie es weitergeht.
ƒ
Ähnlich wie beim Path
Path-Tracing
Tracing
wird nur ein Weg weiterverfolgt
ƒ
Diffuse Fläche:
ƒ
Spekulare
Reflexion/Transmission:
– das Photon wird in der
entsprechenden Richtung
weiterverfolgt und nicht
abgespeichert
ƒ
Absorption
– das Photon wird mit der
aktuellen Position in der
Photon-Map abgespeichert.
– das Photon wird mit der
aktuellen Position in der
Photon-Map abgespeichert.
– eine neue Richtung wird durch
Importance Sampling (Dichte
ähnlich der BDRF des
Materials) zufällig erzeugt und
ein (neues) Photon wird in
diese Richtung versendet
– Es wird nichts weiterverfolgt.
ƒ
Als Abbruch wird eine maximale
Rekursionstiefe verwendet
Diffus
Spekular
Spiegel
T. Grosch - 10 -
Beispiel
Φ
ƒ Material ist 50% diffus und
25% spiegelnd (also 25%
absorbierend)
– 50% der auftreffenden
Ph t
Photonen
werden
d gespeichert
i h t
und weiterverfolgt
– 25% der auftreffenden
Photonen werden – ohne
Speicherung
p
g – reflektiert
a
d
r
d
– 25% der auftreffenden
Photonen werden absorbiert
– Entscheidung über
Russisches Roulette
Beispiel: 4 Photonen mit Rekursionstiefe 2
Absorption (a), diffus (d) und spiegelnd (r).
Die blauen Punkte sind Photonen, die in der
Photon-Map mit jeweils 1/4Φ gespeichert werden.
T. Grosch - 11 -
Diffuse Reflexion
ƒ Der Lichtstrom des Photons wird bei der Reflexion nicht
verändert
ƒ Mit Russischem Roulette wird entschieden, ob ein
Photon reflektiert oder absorbiert wird
ƒ z.B. ρ = 0.33
– Aus drei Photonen mit Δφ
φ = 1 werden nicht drei Photonen
mit Δφ´= 0.33 sondern nur ein Photon mit Δφ´= 1
ƒ Bei farbigen Oberflächen werden die Photonen nur
„umgefärbt
umgefärbt“
1
ρ = ( ρ R + ρG + ρ B )
3
′ =
ΔφRGB
ρ RGB
ΔφRGB
ρ
′ = (3,0,0)
– z.B ρ RGB = (1,0,0) ΔφRGB = (1,1,1) ρ = 13 ΔφRGB
– Summe der RGB Komponenten von Δφ
φ bleibt g
gleich (falls
vorher weiß)
T. Grosch - 12 -
Spekulare
p
Reflexion
ƒ Der Grad der Reflexion ist
abhängig vom Einfallswinkel
des Lichts (z.B. Glas) und wird
am besten mit Hilfe der
F
Fresnel
l Gl
Gleichungen
i h
d
durch
h
den Brechungsindex
automatisch berechnet.
ρ|| =
n2 cos θ1 − n1 cos θ 2
n2 cos θ1 + n1 cos θ 2
ρ⊥ =
n1 cos θ1 − n2 cos θ 2
n2 cos θ1 + n1 cos θ 2
1
f r (θ ) = ⋅ (ρ||2 + ρ ⊥2 )
2
ƒ
Eine gute Approximation liefert
Schlick:
f r (θ ) ≈ f 0 + (1 − f 0 )(1 − cosθ )
5
ƒ
2
ƒ
⎛n −n ⎞
f0 = ⎜ 1 2 ⎟
⎝ n1 + n2 ⎠
Üb R
Über
Russisches
i h R
Roulette
l tt mit
it fr
wird entschieden, ob das Photon
den gespiegelten oder den
gebrochenen Pfad weiterverfolgt
ƒ
Das Photon wird nicht gespeichert
Mit
f r (θ )
1 − f r (θ )
Auch hier wird der Lichtstrom unverändert gelassen, beim farbigem Glas kann man umfärben
T. Grosch - 13 -
Absorption
ƒ Ein Photon speichert immer den einfallenden Lichtstrom
ƒ Daher werden auch die absorbierten Photonen
gespeichert
ƒ Die Gewichtung mit der BRDF kommt später bei der
Darstellung
– Günstiger
Gü ti
für
fü die
di Darstellung
D t ll
((siehe
i h später)
ät )
T. Grosch - 14 -
Speicherung der Photonen
ƒ In der Photon Map werden alle Photonen gespeichert
ƒ Während des Photon Tracings werden nur diejenigen
Photonen gespeichert, die auf diffuse Oberflächen
treffen
ƒ Zur Berechnung der Leuchtdichte an einem Punkt muß
praktisch die “Dichte”
Dichte der Photonen bestimmt werden
– Daher werden Nachbarschaftsbeziehungen zwischen den
Photonen benötigt. Eine effiziente Speicherung ist daher
sehr wichtig!
– Auch der Speicherplatzverbrauch sollte Berücksichtigung
finden
T. Grosch - 15 -
Datenorganisation
ƒ Wir haben zwei wichtige
Anforderungen an die
Datenstruktur
ƒ Eine der besten
Datenstrukturen für unsere
Zwecke ist ein kd-Tree
–
Die n-nächstgelegenen
Ph t
Photonen
müssen
ü
schnell
h ll
gefunden werden können
–
Ein bestimmtes Photon wird
i D
im
Durchschnitt
h h itt iin O(l
O(log n))
gefunden
–
Sie muss speichereffizient
sein
–
Die k nächsten werden dann
in O(k+log n) gefunden!
ƒ Übliche Datenstrukturen wie
z B ein Octree sind nicht gut
z.B.
geeignet, da die Photonen
hochgradig ungleichmäßig
verteilt sind
T. Grosch - 16 -
kd Tree
ƒ Im Prinzip ist dies ein binärer
Suchbaum in k Dimensionen
ƒ Die Erzeugung eines solchen
Baumes ist relativ einfach
–
Man sucht die Raumachse mit
der größten Ausdehnung
–
Entlang dieser Achse werden
alle Photonen sortiert
–
Das “mittlere” Photon wird ein
neuer Knoten im Baum
–
Alle “kleineren Photonen”
kommen in den linken
Teilbaum, alle größeren
entsprechend in der rechten
–
Dieses Verfahren wird nun
rekursiv auf beide Teilbäume
angewendet
ƒ D
Der so erzeugte
t Baum
B
ist
i t nicht
i ht
vollständig, aber die Höhe ist
log(n)
T. Grosch - 17 -
Kd Tree Beispiel
1
1. Achse mit maximaler Ausdehnung finden
2. Median finden
3. Datenmenge aufsplitten
4 Rekursiv die Operationen 1 bis 3 mit
4.
den beiden neuen Teilmengen durchführen
6
2
3
4
2
5
6
3
X-Achse
5
1
4
Das alles funktioniert fast genauso im k-dimensionalen Raum
T. Grosch - 18 -
Kd Tree für Photonen in Cornell Box
n Photonen
Top
n/4 Photonen
Top-Left-Left
n/2 Photonen
Top-Left
n/8 Photonen
Top-Left-Left-Right
T. Grosch - 19 -
Speicherplatz
ƒ Ein Photon wird repräsentiert durch
float position[3]
// Position
unsigned char theta, phi
// Einfallsrichtung*
float power[3]
// Lichtstrom
short plane
// supp. plane kd
–
=> insgesamt 28 byte pro Photon
ƒ Die Winkel Theta and Phi werden mit Hilfe einer look-up
table komprimiert gespeichert
ƒ Keine Child-Pointer, da kd Tree als Heap organisiert
werden kann (siehe HH.W.
W Jensen: Realistic Image Synthesis using Photon Mapping)
(* für nicht-diffuse Materialien und Ausschluß „falscher“ Photonen (siehe Bias Folie))
T. Grosch - 20 -
Zwei sind besser als eine
ƒ Es ist sehr sinnvoll zwei getrennte Photon Maps zu
verwenden:
d
eine
i globale
l b l Photon
Ph t Map
M und
d eine
i Caustic
C
ti
Map
–
Die globale Photon Map enthält relativ wenige Photonen
und wird so erzeugt wie beschrieben
–
Die Caustic Map allerdings sollte extrem viele Photonen
enthalten, aber nur diejenigen, deren Pfad die Form LS*D
hat, also mindestens einmal spekular reflektiert wurden
Zusätzlich sollten diese Photonen auch nur in Richtung
spekularer Flächen versendet werden
werden, um Rechenzeit zu
sparen
–
T. Grosch - 21 -
Caustic Map
Caustic-Map
Φ
ƒ Wenn hier von „spiegelnd“
gesprochen wird
wird, sind damit
immer auch die transparenten
Objekte gemeint.
r
ƒ Eine Möglichkeit: Rejection
Sampling
r
Glaskugel
r
ƒ Da jedes Photon den gleichen
Lichtstrom repräsentiert,
werden alle verworfen (aber
mitgezählt) die nicht auf ein
mitgezählt),
spiegelndes Objekt treffen.
r
d
ƒ
Caustic-Photonen werden
ebenfalls auf diffusen Objekten
abgespeichert.
b
i h t
T. Grosch - 22 -
Caustic-Map,
p, Alternativen
ƒ Hemi-Cube: man projiziert die
Welt auf einen Hemi
Hemi-Cube
Cube um
die Lichtquelle und erkennt
damit die
R
Raumwinkelbereiche,
i k lb i h iin d
denen
spiegelnde Objekte zu finden
sind. Die Photonen erhalten
dann nur den anteiligen
Lichtstrom
angenommen
ƒ Importance: angenommen,
man möchte 10mal mehr
Photonen in Caustic-Maps, als
in der Global Map
Map.
– Generiere viele Photonen.
– W
Werden
d diese
di
üb
über
spiegelnde Objekte
transportiert, dann werden
sie in der Caustic-Map
eingetragen und
mitgezählt.
g
– Werden diese nicht über
spiegelnde Objekte
transportiert werden sie
transportiert,
abhängig von der Anzahl
der Photonen in der
C
Caustic-Map
ti M verworfen,
f
so
dass nur 1/10 in der Global
Map gespeichert werden.
T. Grosch - 23 -
Second Pass
Rendern des Bildes
Auswertung der Photon Map
T. Grosch - 24 -
Radiance Estimate
ƒ Durch die Photonen auf einer
Oberfläche können wir die
einfallende
Beleuchtungsstärke - bzw.
gewichtet
i ht t mit
it der
d BRDF di
die
ausfallende Leuchtdichte schätzen
ƒ Die Photonen haben alle
diskrete Lichtstromwerte
ƒ Hierzu wird um den
untersuchten Punkt eine Kugel
mit Radius r aufgespannt und
alle Photonen eingesammelt
ƒ Oder: die Anzahl der Photonen
N wird vorgegeben und der
dazugehörige
g
g Radius r
ermittelt.
ƒ Sie sind über die Flächen
unterschiedlich dicht verteilt.
1 N
Lr (x,ω o ) ≈ 2 ∑ f r (x,ω p ,ω o )Δφ p (x,ω p )
πr p=1
T. Grosch - 25 -
Radiance Estimate
ƒ Um die reflektierte Leuchtdichte zu ermitteln, müssten wir folgende
Gleichung lösen
Lr (x,ω o ) =
∫
f r (x,ω i ,ω o )Li (x,ω i )cos θdω i
Ω
ƒ Dies wird mit Hilfe der Photon Map bestimmt durch:
1 N
Lr (x,ω o ) ≈ 2 ∑ f r (x,ω p ,ω o )Δφ p (x,ω p )
πr p=1
ƒ Zu einem beliebigen Punkt x suchen wir die maximal n nächsten
Photonen (und damit den Radius r)
ƒ Der Lichtstrom aller gefundener Photonen wird aufsummiert und
durch die Fläche in der sie liegen geteilt
T. Grosch - 26 -
Radiance Estimate
Nur direktes Licht
Licht,
ca. 30.000 Photonen
1 diffuse Reflexion
Reflexion,
ca. 40.000 Photonen
2 diffuse Reflexionen
Reflexionen,
ca. 45.000 Photonen
T. Grosch - 27 -
Suchradius
r=1
r=2
Rauschen
r=4
r=8
Detailverlust
T. Grosch - 28 -
Darstellung des Bildes
ƒ Es wäre möglich die Photon Map direkt zur Darstellung
zu verwenden,
d
d
das würde
ü d aber
b sehr
h flfleckige/verrauschte
ki /
ht
Bilder liefern.
ƒ Wozu dann eigentlich die Photonen?
–
–
Wir verwenden
Wi
d die
di Photon
Ph t Map
M für
fü Kaustiken
K
tik und
d fü
für di
die
Approximation des (einfallenden) indirektens Lichts
Für das direkte Licht und Spiegelungen greifen wir auf
Path-Tracing oder Final Gathering zurück
T. Grosch - 29 -
Die Rendering Equation
ƒ Eigentlich wollen wir diese Gleichung lösen
v
Lr ( x,ω ) =
v v
v v v v
f
(
x
,
ω
'
,
ω
)
⋅
L
(
x
,
ω
') ⋅ (ω'on ) ⋅ dω'
r
i
∫
2π
ƒ wir können diese in drei Teile trennen, die wir
einzeln lösen können
(direktes Licht)
=
v v
v v v v
f
(
x
,
ω
'
,
ω
)
⋅
L
(
x
,
ω
') ⋅ (ω'on ) ⋅ dω'
i ,l
∫r
2π
(caustics)
v v
v v v v
+ ∫ f r ( x,ω' ,ω ) ⋅ Li ,c ( x,ω') ⋅ (ω'on ) ⋅ dω'
2π
( lt diff
(mult.
diffus))
v v
v v v v
+ ∫ f r ( x,ω' ,ω ) ⋅ Li ,d ( x,ω') ⋅ (ω'on ) ⋅ dω'
r
Li ,l ( x, ω ')
r
Li ,c ( x, ω ')
r
Li ,d ( x, ω ')
2π
Direktes Licht der Lichtquelle
Caustic – indirekte Beleuchtung der Lichtquellen über Spiegelung/Transmission
Indirekte Beleuchtung der Lichtquellen, mindestens einmal diffus reflektiert.
T. Grosch - 30 -
Rendern aber wie?
ƒ Es gibt sehr viele Möglichkeiten wie man das Bild
rendern
d
kkann, aber
b eine
i d
der effizientesten
ffi i t t iistt es einen
i
leicht modifizierten Path Tracer zu verwenden.
ƒ Die Vorgehensweise ist zu Beginn ganz “normal”
“normal”. Wir
schießen n Strahlen durch jedes Pixel und mitteln
danach die Ergebnisse
ƒ Wir unterscheiden fortan zwischen einer exakten und
einer ungefähren
g
Berechnung.
g Eine ungefähre
g
Berechnung reicht immer dann, wenn der aktuelle Strahl
nicht mehr viel zum Gesamtergebnis beiträgt!
T. Grosch - 31 -
Wie wird berechnet?
E kt
Exakt
A
Approximation
i ti
Direktes Licht
Monte Carlo
Global Map
Spekular
Monte Carlo
Monte Carlo
Kaustik
Caustic Map
p
Global Map
p
Mehrfach
diff
diffus
Monte Carlo
Global Map
T. Grosch - 32 -
Schnellste Variante
ƒ Durch das Pixel wird ein Strahl
verschossen
ƒ Die globale Photon Map wird
ausgewertet
ƒ Falls eine Caustic Map verwendet
wird
– Die Ca
Caustic
stic Map wird
ird a
ausgewertet
sge ertet
und addiert
ƒ Keine rekursiven Aufrufe oder
Strahlen (nur bei nicht-diffusen
Flächen))
ƒ Schnelles Preview
T. Grosch - 33 -
Beispiel
p ((Path Tracing)
g)
ƒ Durch das Pixel werden viele
Strahlen verschossen
ƒ Für jeden Schnittpunkt wird:
– Das direkte Licht berechnet ((z.B. 1
Sample)
– Die Caustic Map ausgewertet
ƒ ein transparentes Objekt beim
Schattenfühler muss dann als
Schatten interpretiert werden
– Per Russischem Roulette
ƒ diffus (importance sampl.)
ƒ oder spiegelnd weiterverfolgt
ƒ Beim indirekten Licht werden dann
die Photon Maps ausgewertet
T. Grosch - 34 -
Beispiel: Final Gathering
ƒ Durch das Pixel werden
wenige Strahlen verschossen
ƒ Für jeden Schnittpunkt wird:
– Das direkte Licht berechnet
(viele Samples)
– Die Caustic Map ausgewertet
– Der Halbraum durch viele
St hl abgetastet,
Strahlen
b t t t wobei
b i die
di
Photon Maps an den
Trefferpunkten ausgewertet
werden.
– Spiegelung wird rekursiv
weiterverfolgt
– Alle Anteile werden summiert
und gem. der BRDF
gewichtet.
T. Grosch - 35 -
Vergleich mit/ohne Final Gather
Direkte Visualisierung der Photon Map
Map,
einige Sekunden
Final Gathering mit 150 Strahlen
Strahlen,
mehrere Minuten
T. Grosch - 36 -
Direkte Visualisierung mit Caustic Map
Kein Final Gathering, aber viele
Ph t
Photonen,
daher
d h Fl
Flecken
k nicht
i ht
mehr so deutlich sichtbar
Neues Problem:
Fehler an den Ecken
T. Grosch - 37 -
Verbesserungsmöglichkeiten
ƒ
ƒ
Durch das Verwenden einer Kugel
zum Einsammeln der Photonen
werden an den Ecken viele
“ungültige Photonen”
mitgenommen.
– Die Leuchtdichte wird somit
evtl. überschätzt
Stattdessen kann man die Kugel
g der Normalen stauchen
entlang
um die Anzahl der falschen
Photonen zu reduzieren
– Jetzt bekommt man nur
“gültige”
gültige Photonen
– Allerdings überschätzt man
die Fläche, auf der Photonen
liegen
– Kanten können somit zu
dunkel werden
T. Grosch - 38 -
Bias Typen
Proximity
•
Topological
Occlusion
Proximity Bias: Details werden gefiltert
•
•
•
•
Boundary
Verbesserung: Filterung mit höherem Gewicht für nähere Photonen
Boundary Bias: Fläche wird überschätzt Æ Kanten werden zu dunkel
Topological Bias: Fläche wird unterschätzt
Occlusion Bias: Light leaks
•
Nur Photonen mit ähnlichen Normalen mit einbeziehen; Photonen die in
Richtung Oberflächennormale fliegen,
fliegen können ausgeschlossen werden
Bias - Unbias
ƒ Da man beim Radiance Estimate praktisch immer eine Fläche
anstelle eines Punkts betrachtet erhält man nicht die korrekte
Leuchtdichte sondern eine gefilterte Version (Tiefpass) Æ Bias
ƒ Bei Verwendung vieler Photonen kann der Suchradius immer kleiner
gewählt werden, so daß die Simulation theoretisch gegen die
korrekte Leuchtdichte konvergiert (unbiased)
ƒ Diese Lösung ist aber praktisch kaum durchführbar
durchführbar, da aufgrund
des begrenzten Speichers nicht beliebig viele Photonen eingesetzt
werden können
ƒ Ein Lösungsansatz ist das sog. Progressive Photon Mapping
[Hachisuka et al. 2008]
– hier wird nur der Radiance Estimate pro Pixel gespeichert und nicht alle
Photonen
– Der Suchradius pro Pixel wird hier immer kleiner und nur Photonen
innerhalb des Suchradius werden beibehalten,, Photonen außerhalb
werden gelöschtÆDarstellung mit beliebig vielen Photonen simulieren
T. Grosch - 40 -
Progressive Photon Mapping
Pro Pixel speichern: N, x, R
ƒ
1. Simulation: N Photonen (danach Photonen löschen)
ƒ
2. Simulation: M Photonen (danach Photonen löschen)
ƒ
Insgesamt N+M Photonen
– Weniger Rauschen, aber gleicher Radius
ƒ
Annahme
– Photonen sind gleichverteilt in Kreis
ƒ
Berechne kleineren Radius, sodass die Anzahl der
Ph t
Photonen
immer
i
noch
h größer
öß iistt als
l N
[Hachisuka et al. 2008]
– Mehr Photonen in kleinerem Radius
– Beliebig oft wiederholen
T. Grosch - 41 -
Beschleunigungstechniken
ƒ In der hier vorgestellten Verfahrensweise würde die Berechnung
trotzdem noch recht lange dauern
ƒ Einige Beschleunigungstechniken sind dringend erforderlich
–
Irradiance Caching [Ward 1988][Heckbert 1992][Krivanek 2005]
ƒ
–
Visual Importance [Peter & Pietrek 1998][Suyken & Willems 2000]
ƒ
–
Indirektes Licht zwischen Pixeln interpolieren
Nur sichtbare Bereiche genauer simulieren Æ Importons
Shadow Photons [Jensen 1995]
ƒ
Negative Photonen in Schattenbereichen (Schattenfühler sparen)
T. Grosch - 42 -
Beschleunigungstechniken
–
Parallelisierung [Kato et al. 2002]
ƒ
ƒ
Photonen sind unabhängig voneinander (die Pixel ebenfalls)
Kilauea
–
–
Paralleler Photon Mapper (MPI)
Fi l G
Final
Gathering,
th i
IIrradiance
di
C
Caching,
hi
…
Final Fantasy
T. Grosch - 43 -
Beschleunigungstechniken
–
Precomputed Irradiance [Jensen & Christensen 2001]
ƒ
–
Radiance
R
di
E
Estimate
ti t bei
b i Ph
Photon
t speichern
i h
Æ schnelleres
h ll
Fi
Finall
Gathering
Irradiance Atlas [Christensen et al. 2004]
ƒ
Octree mit Radiance Estimates
T. Grosch - 44 -
Beispiele Photon Mapping
T. Grosch - 45 -
Tageslicht
T. Grosch - 46 -
Glas Animation
T. Grosch - 47 -
Kommerzielle Produkte
Final Render
Splutterfish
Vi t Li ht
VirtuaLight
T. Grosch - 48 -
Kommerzielle Produkte
Volume Photon Map
Mental Ray
T. Grosch - 49 -
Abschließende Bewertung
ƒ Photon Mapping ermöglicht komplizierte Effekte wie
K
Kaustiken
tik und
d transparente
t
t Materialien
M t i li qualitativ
lit ti
hochwertig und schnell zu berechnen
ƒ Photon Mapping ist relativ einfach zu implementieren da
ein vorhandener Ray- oder Pathtracer erweitert werden
kann
ƒ Photon Mapping liefert bessere Ergebnisse und diese
schneller als ein Path Tracer
– Dafür Bias durch Radiance Estimate
ƒ Photon Mapping wird zunehmend von kommerziellen
Produkten verwendet.
–
Auch PovRayy beherrscht Photon Mapping
pp g
T. Grosch - 50 -