\caption{Einige Beispielbilder: a) Kaustiken mit unterschiedlichen Ring-BRDFs, b) indirekte Highlights c) diffuse Reflexion d) glossy Reflexionen e) eine Punktlichtquelle f) Umgebungslicht \cite{Wang09asia}}
Die korrekte Beleuchtungsberechnung ist ein zentraler Bestandteil der Computergrafik.
Hierbei ist die indirekte Beleuchtung ein langjähriges Problem.
Die korrekte Beleuchtungsberechnung ist eine zentrale Aufgabenstellung der Computergrafik.
Hierbei ist die indirekte Beleuchtung ein langjähriges hartnäckiges Problem.
Besonders bei Szenen mit vielen unterschiedlichen Materialien stellt dieses eine große Herausforderung dar.
Es gibt einige Algorithmen, die sich für bestimmte Materialien gut eignen, aber bei anderen keine guten Resultate liefern.
...
...
@@ -27,15 +27,15 @@ Die Berechnungsdauer für diese Bilder liegt zwischen fast interaktiv und ein pa
\chapter{Ähnliche Arbeiten}
\label{ch:Content1}
%% ==============
In diesme Kapitel werden kurz eineige Algorithmen vorgestellt die versuchend das Problem der indirekten Beleuchtung zu lösen
In diesem Kapitel werden kurz einige Algorithmen vorgestellt, die versuchen das Problem der indirekten Beleuchtung zu lösen.
%% ===========================
\section{Virtual Point Lights}
\label{ch:Content1:sec:Section1}
%% ===========================
Eine effiziente Lösung für Indirekte Beleuchtung sind Virtual Point Lights (VPL).
Zuerst vorgestellt in dem Paper Instant Radiosity \cite{VPL} werden durch Pfade von der Lichtquelle viele VPLs in der Szene verteilt.
Beim Rendern wird mit Shadowmaps die Einfluss aller VPLS auf einen Oberflächenpunkt bestimmt.
Eine effiziente Lösung für indirekte Beleuchtung sind Virtual Point Lights (VPL).
Diese wurde zuerst in dem Paper Instant Radiosity \cite{VPL} vorgestellt. Dabei werden viele VPLs durch Pfade von der Lichtquelle in der Szene verteilt.
Beim Rendern wird mit Shadow Maps der Einfluss aller VPLs auf einen Oberflächenpunkt bestimmt.
Der Aufwand für diesen Vorgang steigt linear mit Anzahl der VPLs.
Es gibt einige Verbesserungen für diesen Algorithmus, jedoch eignet er sich wenig für spekulare Materialien.
Die indirekte Beleuchtung wird bei diesem Vorgehen in einige Punkte zusammengefasst.
...
...
@@ -45,11 +45,11 @@ Diese werden bei diesen Materialien durch Glanzlichter sichtbar wie in Abbildung
\section{Photon Mapping}
\label{ch:Content1:sec:Section2}
%% ===========================
Bei Photon Mapping \cite{Jensen:2001:RIS:500844} wird Photonen von der Lichtquelle ausgesendet, in der Szene verteilt und in einer Photon Map gespeichert.
Im zweiten Durchlauf wird mit Raytracing Methoden die Photon Map ausgewertet.
Beim Photon Mapping \cite{Jensen:2001:RIS:500844} werden Photonen von der Lichtquelle ausgesendet, in der Szene verteilt und in einer Photon Map gespeichert.
Im zweiten Durchlauf wird die Photon Map mit Raytracing Methoden ausgewertet.
\section{Precomputed Radiance Transfer}
Bei Precomputed Radiance Transfer \cite{Sloan:2002:PRT:566654.566612} wird indirektes Licht in Echtzeit erreicht, indem der Lichttransport in statischen Szenen vorberechnet und gespeichert wird.
Beim Precomputed Radiance Transfer \cite{Sloan:2002:PRT:566654.566612} wird die Darstellung von indirektem Licht in Echtzeit erreicht, indem der Lichttransport in statischen Szenen vorberechnet und gespeichert wird.
Zum Speichern wird hierbei eine effiziente Methode benötigt, wie zum Beispiel Spherical Harmonics.
...
...
@@ -58,7 +58,7 @@ Zum Speichern wird hierbei eine effiziente Methode benötigt, wie zum Beispiel S
\chapter{BRDF und Spherical Gaussians}
\label{ch:Content2}
%% ==============
In diesem Kapitel werden die Grundlagen des Lichttransports und Sphericla Gaussians eingeführt.
In diesem Kapitel werden die Grundlagen des Lichttransports und Spherical Gaussians eingeführt.
Zur physikalischen Beleuchtungsberechnung muss hierzu die Rendergleichung \cite{Kajiya:1986:RE:15886.15902} berechnet werden.
\begin{equation}
...
...
@@ -70,21 +70,21 @@ $ L_e(x,o)$ ist das von dem Oberflächenpunkt emittierte Licht, und das Integral
Das reflektierte Licht wird bestimmt durch das Integral über die positive Hemisphäre, wobei $ L_i(x,i)$ das einfallende Licht aus der Richtung $i$ (incoming) und
$max(0,i\cdot n)$ der Kosinus zwischen der Oberflächennormalen $n$ und $i$ ist.
$f_r(i,x,o)$ (kurz $f_r(i,o)$) ist die \textit{Bidirectional Reflectance Distribution Function} (BRDF).
Die BRDF ist vom Material abhängig und gibt an einem Oberflächenpunkt x an, wie viel Licht vom Einfallswinkel $i$ in die Ausfallrichtung $o$ reflektiert wird.
Die BRDF ist vom Material abhängig und gibt an einem Oberflächenpunkt $x$ an, wie viel Licht vom Einfallswinkel $i$ in die Ausfallrichtung $o$ reflektiert wird.
In der Rendergleichung \ref{renderingGleichung} kann $L_i(x,i)= L(y,-i)$ mit $y = ray(x,i)$ geschrieben werden.
Somit erhält man eine rekursive Darstellung.
Diese zu lösen ist eine komplexe Aufgabe und wird häufig durch Approximationen angenähert und vorberechnet, um Beleuchtung in Echtzeit zu berechnen.
Z.B. ignoriert man alle indirekte Beleuchtung und betrachtet nur alle Oberflächen, bei denen $L_e > 0$ ist.
In Raytracing Methoden wird die Rendergleichung versucht durch Monte Carlo Intagration und geschicktes Sampling der BRDF anzunähern.
Diese zu lösen ist eine komplexe Aufgabe und wird häufig approximiert und vorberechnet, um Beleuchtung in Echtzeit berechnen zu können.
Z.B. ignoriert man indirekte Beleuchtung vollständig und betrachtet nur alle Oberflächen, bei denen $L_e > 0$ ist.
In Raytracing Methoden wird versucht, die Rendergleichung durch Monte Carlo Integration und geschicktes Sampling der BRDF anzunähern. \todo{ich habe Integration geschrieben. hoffentlich war das gemeint}
In dieser Ausarbeitung wird ein Algorithmus vorgestellt der die Gleichung mit einer indirekten Reflektion auswertet.
In dieser Ausarbeitung wird ein Algorithmus vorgestellt, der die Gleichung mit einer indirekten Reflexion auswertet.
\caption{Richtungen im Phong Beleuchtungsmodel. N ist die Oberflächennormale, V der Viewvektor, L der Lichtvektor und R die Reflektion von L an N (Vorlesung Fotorealistische Bildsynthese 02\_BRDF)}
\caption{Richtungen im Phong Beleuchtungsmodel. N ist die Oberflächennormale, V der Viewvektor, L der Lichtvektor und R die Reflexion von L an N (Vorlesung Fotorealistische Bildsynthese 02\_BRDF)}
\end{center}
\end{figure}
Eine einfache BRDF ist durch das Phong Beleuchtungsmodell gegeben.
...
...
@@ -100,7 +100,7 @@ Hierbei ist $I_L$ die einfallende Lichtintensität, $k_d$ und $k_s$ materialabhÃ
mit $o^j$, $\lambda^j$, $c^j$ als Zentrum, sharpness und Koeffizient der $j$ SG.
Die diffuse Komponente kann als SG mit 0 sharpness dargestellt werden.
$$ kd = G(i;2(o\cdot n)n-o,0,k_d)$$
Es kann somit die BRDF als Summe von SGs dargestellt werden. In \cite{Wang09asia} lassen sich hierfür Beispiele finden, z.B. für Bling-Phong und Cook-Torrance.
Des Weiteren können Lichtquellen auch als SGs ($G_l(i)$) dargestellt werden und somit kann eine einheitliche Darstellung als Summe von SGs erzielt werden.
mit den Zentren $o^j$, den sharpnesses $\lambda^j$ und den Koeffizienten $c^j$.
Die diffuse Komponente kann als SG mit einer sharpness von $0$ dargestellt werden.
$$ k_d = G(i;2(o\cdot n)n-o,0,k_d)$$
Somit kann die BRDF als Summe von SGs dargestellt werden. In \cite{Wang09asia} lassen sich hierfür Beispiele finden, z.B. für Bling-Phong und Cook-Torrance.
Des Weiteren können Lichtquellen auch als SGs ($G_l(i)$) dargestellt werden. Dadurch kann eine einheitliche Darstellung als Summe von SGs erzielt werden.
\todo{ich habe die Formeln verbessert (oder verschlechtert). Bitte genau prüfen. Unklar ist mir noch die letzte Formel in diesem Absatz. Hier taucht kd nun auf BEIDEN Seiten auf. Ist das ok? }
%% ==============
...
...
@@ -341,7 +342,7 @@ So erhält man eine nicht ganz akkurate Prioritätenliste, aber eine ausreichend
In diesem Kapitel wird der vorgestellete Algorithmus mit anderen verglichen. Außerdem wird die Wahl der Punktlichter und des Fehler Grenzwertes betrachtet.
\section{Genauigkeit des Algorithmus}
In Abbildung \ref{img:Compare} wird die Indirekte Reflektion eines Dreiecks mit unterschiedlichen BRDF's.
In Abbildung \ref{img:Compare} wird die indirekte Reflexion eines Dreiecks mit unterschiedlichen BRDF's.
In der Szene steht das Reflektor Dreieck senkrecht auf eine Ebene und ein Licht im 45 Grad Winkel zur Ebene.
Die Ebene hat eine Lambert BRDF und das Dreieck hat pro Reihe eine unterschiedliche Glossiness.
Der vorgestellte Algorithmus hat bereits bei eine 3 geteilten Approximation der Funktion \ref{1DFunction} sehr starke Ähnlichkeiten zur Referenz.
...
...
@@ -355,17 +356,17 @@ Auch die Wahl von 200 Virtual Pointlights zur Bestimmung der Sichtbarkeit wurde
Weniger Lichter führt zu sichtbaren Fehlern und ab 200 sind die Bilder sehr ähnlich zur Referenz.
\section{Vergleiche und Fazit}
In Abbildung \ref{img:Compare} sind Vergleichsbilder mit VPL gegeben. Hier kann man erkennen, das VPLs für diffuse Materialien gut funktionieren.
In Abbildung \ref{img:Compare} sind Vergleichsbilder mit VPL gegeben. Hier kann man erkennen, dass VPLs für diffuse Materialien gut funktionieren.
Bei spekularen Materialien werden jedoch sehr schnell Artefakte sichtbar.
In Vergleich zu Photon Mapping in ähnlicher Zeit produziert der Algorithmus weniger rauschen.
Mit vieler mehr Photonen lassen sich bessere Ergebnisse erzielen, jedoch ist es dann nicht mehr fest interaktiv.
Bei einfachen Szenen mit verschiedensten Materialien werden gute Bilder errechnet (siehe Abbildung \ref{img:Glossiness}.
In Vergleich zu Photon Mapping produziert der Algorithmus in ähnlicher Zeit weniger Rauschen.
Mit viel mehr Photonen lassen sich bessere Ergebnisse erzielen, jedoch ist es dann nicht mehr fest interaktiv. \todo{fest oder fast?}
Bei einfachen Szenen mit verschiedenen Materialien werden gute Bilder errechnet (siehe Abbildung \ref{img:Glossiness}.
Auch für komplexere, texturierte Szenen überzeugt der Algorithmus und kann sogar überzeugende Kaustiken berechnen (siehe Abbildung \ref{img:beispiel}).
Die Performance auf einer NVIDIA Geforce GTX690 Grafikkarte reichen von 0,03 fps bei 720p für sehr komplexe Szenen bis zu 1,4 fps bei einfachen Szenen (Magic cube).
Der Algorithmus erreicht also gute Ergebnisse für Szenen mit vielen unterschiedlichen Materialien und ist dabei fast Interaktiv.
Die Grenze liegt jedoch bei indirekter Beleuchtung mit einer Reflektion.
Indirektes Licht über mehrere Reflexionen werden nicht betrachtet.
Prinzipiell könnte man den Algorithmus so anpassen das auch 2 Reflexionen betrachtet werden, jedoch liegt der Aufwand bei $O(N^2)$ mit N Dreiecken.
Die Performance auf einer NVIDIA Geforce GTX690 Grafikkarte reicht von 0,03 fps bei 720p für sehr komplexe Szenen bis zu 1,4 fps bei einfachen Szenen (Magic cube).
Der Algorithmus erreicht also gute Ergebnisse für Szenen mit vielen unterschiedlichen Materialien und ist dabei fast interaktiv.
Die Grenze liegt jedoch bei indirekter Beleuchtung mit maximal einer Reflexion.
Indirektes Licht über mehrere Reflexionen wird nicht betrachtet.
Prinzipiell könnte man den Algorithmus so anpassen, dass auch 2 Reflexionen betrachtet werden, jedoch liegt der Aufwand bei $O(N^2)$ mit $N$Dreiecken.
Jede mögliche Kombination zwischen Reflektor 1 und 2 müsste betrachtet werden.
\begin{figure}
...
...
@@ -380,8 +381,8 @@ Jede mögliche Kombination zwischen Reflektor 1 und 2 müsste betrachtet werden.
\caption{Vergleich der Indirekten Reflektion mit unterscheidlich Spekulraren Materialien. Reihe 1 ist eine diffuser Reflektor und Reihe 2-5 jeweisl Blinn-Ohong mit Shininess 10,100,1000 und 10000.
Spalte a)-c) sind mit dem vorgestellten Algorithmus bestimmt mit untescheidlich vielen linearen Stücken der Funktion \ref{1DFunction} d) ist mit 265 VPL erstellt und e) eine path-traced Referenz \cite{Wang09asia}}
\caption{Vergleich der indirekten Reflexion mit unterschiedlich spekularen Materialien. Reihe 1 ist ein diffuser Reflektor und Reihen 2 bis 5 jeweils Blinn-Ohong mit Shininess 10, 100, 1000 und 10000.
Spalte (a) bis (c) sind mit dem vorgestellten Algorithmus mit unterschiedlich vielen linearen Stücken der Funktion \ref{1DFunction} bestimmt, (d) ist mit 265 VPL erstellt und (e) eine path-traced Referenz \cite{Wang09asia}}