How to make a Pixar Movie Photon Mapping
Photon Mapping 1993/94 entwickelt von Henrik Wann Jensen 1995 Veröffentlicht als PhD an der Technical University of Denmark Derzeit Associate Professor am Computer Graphics Laboratory an der University of California San Diego
Motivation Unzulänglichkeit des „klassischen“ Raytracings: Ineffiziente Simulation Globaler Beleuchtungseffekte
Direkte Beleuchtung vs. Globale Beleuchtung Motivation Direkte Beleuchtung vs. Globale Beleuchtung
Weitere Effekte der Globalen Beleuchtung Color Bleeding Motivation Weitere Effekte der Globalen Beleuchtung Color Bleeding James Gurney
Weitere Effekte der Globalen Beleuchtung Motivation Weitere Effekte der Globalen Beleuchtung Kaustiken
Motivation Bsp. einer GI-Technik: Path Tracing Weiterverfolgen des Strahls durch die Szene Problem: Hohe Invarianz
Global Illumination Problem: Bisherige Lösungen sehr ineffizient Lösung: Photon Mapping Effiziente Berechnung der diffusen Komponente der Globalen Beleuchtung Ergänzung zu Raytracing Streuung von Licht in z.B Rauch „Participating Media“ Parallelisierbar
Ansatz Lichtteilchen (Photonen) werden von Lichtquelle emittiert Pfad der Photonen wird durch Szene verfolgt Auftreffen der Photonen wird abgespeichert in einer Photon Map
Ansatz Backward Tracing Klassisches Raytracing Forward Tracing Photon Mapping
Two Pass Methode Photon Tracing Pass Rendering Pass Photonen von der Lichtquelle durch das Modell verfolgen Bei Treffer: Absorbieren & Speichern Reflektieren & Weiterverfolgen Rendern unter Zuhilfenahme der Informationen aus der Photon Map um das Rendern effizienter zu gestalten
Photon Tracing Pass
Emission der Photonen Stärke der Lichtquelle wird simuliert durch Anzahl der Photonen Schwächere Lichtquelle Weniger Photonen 1000 Photonen halber stärker entsprechen 500 Photonen ganzer Stärke Alle Photonen gleich stark Einfachere Berechnung Weniger Speicheraufwand
Lichtquellen Punkt Direktional Fläche Freie Form
Optimierungsmöglichkeit Projection Map Aussenden von Photonen nur in Bereiche mit Geometrie inaktiv aktiv
Lichtstreuung Diffus Real spekular Ideal spekular
Russisches Roulette Was passiert bei einer Kollision? Zufallszahl ξ ∈ [0,1] ξ ∈ 0, 𝜌 𝑑 diffuse Reflektion. ξ ∈ 𝜌 𝑑 , 𝜌 𝑠 + 𝜌 𝑑 spekulare Refl. ξ ∈ 𝜌 𝑠 + 𝜌 𝑑 ,1 Absorption
Russisches Roulette Beispiel: Oberfläche ist 0.25 spiegelnd und 0.25 diffus 50 % der Photonen werden absorbiert 25 % der Photonen werden diffus reflektiert d.h. gespeichert & deren Pfad weiter verfolgt 25 % der Photonen werden gespiegelt d.h. nicht gespeichert & deren Pfad weiter verfolgt
Warum Russisches Roulette? Bsp: Material 33% diffus reflektierend Bei 3 eintreffenden Photonen: nicht 3 Photonen mit 33% Stärke sondern 1 Photon mit 100% Stärke Stärke der Photonen miteinander Vergleichbar Weniger Photonen zum Abspeichern
Speicherung Anforderungen: Schnell und kompakt um große Datenmengen zu speichern und zu durchsuchen Vorschlag 1: Mehrdimensionale Arrays Problem: Suche nach nächstem Nachbar zu kostspielig Vorschlag 2: 3D- Gitter unterteilt in regelmäßige Unterwürfel Problem: Photonen nicht gleichmäßig verteilt (Speicherung nur an Oberflächen, Kaustiken)
kd-Tree Multidimensionaler binärer Suchbaum
kd-Tree
kd-Tree
kd-Tree
kd-Tree
kd-Tree Im balancierten Baum: Operation Zeit Einfügen eines Knotens O(log n) Entfernen eines Knotens Suche nach Knoten Suche nach nächstem Nachbar Suche nach den k nächsten Nachbarn O(k + log n)
Photon Map Normalerweise zwei Photon Maps: Global Photon Map Caustics Photon Map Hohe Photonendichte für Kaustiken nötig Konzentration auf gewünschte Bereiche durch Projection Map
Photonen, erstes auftreffen Photon Map Photonen, erstes auftreffen
Photonen nach 2 Reflektionen Photon Map Photonen nach 2 Reflektionen
Rendering Pass
Die Rendergleichung Basis der Global Illumination 𝐿 𝑜 x, 𝜔 = 𝐿 𝑒 (𝑥, 𝜔 )+ 𝐿 𝑟 (𝑥, 𝜔 ) Abstrahlung am Punkt x in Richtung 𝝎 Emittiertes Licht Reflektiertes Licht Photon Mapping (Bei genügend großer Photonenzahl)
Photonmapping in der Praxis Lösen der Rendergleichung : 𝐿 𝑟 𝑥, 𝑤 = direkte Beleuchtung + spekulare Reflektion + Kaustiken + mehrfache diffuse Reflektion Raytracing Photon- mapping
Radiance Estimate Radiance Estimate: Abschätzen der Beleuchtungsstärke an einem gewissen Punkt Beleuchtungsstärke abhängig von der Dichte der Photonen in der Umgebung
Radiance Estimate 2 Strategien Spanne eine Kugel auf mit Radius r Berücksichtige alle Photonen innerhalb Zahl N der Photonen ist vorgegeben Spanne Kugel auf bis sie N Photonen enthält
Radiance Estimate Da Oberfläche lokal eben ist (in Näherung): 𝐿 𝑟 𝑥, 𝜔 ≈ 1 𝜋 𝑟 2 𝑝=1 𝑁 𝑓 𝑟 𝑥, 𝜔 𝑝 , 𝜔 ∆ ϕ 𝑝 (𝑥, 𝜔 ) Lichtstrom aller Photonen wird summiert und durch die Fläche geteilt
Radiance Estimate Problem: Ungenauigkeiten an Kanten
Photon Mapping Direct Illumination
Photon Mapping Depth: 0, Radius 0.025
Photon Mapping Depth: 1, Radius 0.025
Photon Mapping Depth: 5, Radius 0.025
Zusammenfassung Erweiterung von Raytracing-basierten Verfahren Simulation der diffusen Komponente der Globalen Beleuchtung Zwei Passes: Photon Tracing Pass Photonen werden von der Lichtquelle aus durch die Szene verfolgt Rendering Pass Gespeicherte Photonen dienen zur Abschätzung der indirekten Beleuchtung
Zusammenfassung Vorteile des Photon Mapping Sehr effizient im Vergleich zu anderen Verfahren Indirekte Beleuchtung wird unabhängig von der Geometrie gespeichert
Beispiel
Fragen?
Backup Folien
Lösung: Filtering Zusatz: Filtering Unscharfe Kanten bei indirekter Beleuchtung erwünscht Unerwünscht bei Kaustiken Lösung: Filtering Stärkere Gewichtung der Photonen nahe des „Point of Interest“
Zusatz: Filtering Annahme: Fläche ist lokal eben 2 dimensionale Filter 𝑤 𝑝𝑐 =1− 𝑑 𝑝 𝑘 𝑟 Cone Filter 𝑤 𝑝𝑔 = 𝛼 1 − 1− 𝑒 −𝛽 𝑑 𝑝 2 2 𝑟 2 1− 𝑒 −𝛽 Gauss Filter
Zusatz: Subsurface Scattering
Zusatz: Subsurface Scattering
Zusatz: Subsurface Scattering Diffuse Reflektion Annäherung Realität
Zusatz: Subsurface Scattering
Zusatz: Participating Media
Zusatz: Photon Scattering Speicherung in Volume Photon Map
Zusatz: Radiance Estimate Ray Marching