Commit 3a9c77c9 authored by Lukas Tietze's avatar Lukas Tietze

脺berarbeitete Aufgabenstellung

parent e026c09b
......@@ -6,13 +6,13 @@
\end{quotation}
%
Raytracing ist eine Rendertechnik, bei der der Verlauf von Lichtstrahlen und deren Interaktion mit der Umgebung
simuliert wird um photorealisitscher Bilder zu erstellen. Sowohl theoretische Grundlagen, als auch
simuliert wird um photorealisitsche Bilder zu erstellen. Sowohl theoretische Grundlagen, als auch
Implementierung der Technik sind seit Ende der 1960er Jahre bekannt. Die Technik r眉ckte jedoch erst vor
wenigen Jahren in den Fokus der breiten Masse, als mit NVIDIAS RTX-Serie erstmals erschwingliche Grafikkarten
wenigen Jahren in den Fokus der breiten Masse, als mit NVIDIAs RTX-Serie erstmals erschwingliche Grafikkarten
mit Hardwarebeschleunigung f眉r Raytracing auf den Markt kamen und Raytracing in Echtzeit erm枚glichten.\\
Durch den Einsatz in der Spielebranche erlangte die Technik inzwischen einen hohen Bekanntheitsgrad und bietet
sich daher auch als Forschungsthema an. Die Technik unterscheidet sich dabei grundlegend vom klassischen und
praktisch allgegenw盲rtigen Ansatz des Rasterisierens. Dadurch bietet sie viele M枚glichkeiten, bringt aber auch
praktisch allgegenw盲rtigen Ansatz des Rasterisierens. Dadurch bietet Raytracing viele neue M枚glichkeiten, bringt aber auch
neue Probleme mit sich, die es zu l枚sen gilt. Gerade weil die Technik einen sehr allgemeinen Ansatz f眉r das
Darstellen beliebiger Szenen in hoher Qualit盲t bietet, scheint eine Vertiefung der Prinzipien des Raytracing
Rendern in hoher Qualit盲t bietet, scheint eine Vertiefung der Prinzipien des Raytracings
f眉r zuk眉nftige Forschung und Entwicklung wichtig.
......@@ -12,7 +12,7 @@
\vspace*{1.5cm}
\Huge{Themenvorschlag Masterarbeit}
\\
\Large{Fortgeschrittene Beleuchtungseffekte mit Raytracing}
\Large{Darstellung von Godrays mit Raytracing}
\\
\vspace{2cm}
Lukas Tietze
......
\section{Bewertung}
Die beiden Umsetzungen sollen danach entsprechend der folgenden Kriterien bewertet werden.
\ No newline at end of file
Die beiden Umsetzungen sollen danach entsprechend der folgenden Kriterien bewertet werden:
%
\paragraph{Qualit盲t:}
\begin{enumerate}
\item Sieht der Effekt subjektiv gut aus?
\item Sind deutliche Artefakte sichtbar?
\item Werden die Strahlen physikalisch plausibel dargestellt?
\end{enumerate}
%
\paragraph{Performance:}
\begin{enumerate}
\item Ist die Technik f眉r eine Echtzeitanwendung geeignet?
\item Sind die Performancekosten f眉r das erreichte Ergebnis gerechtfertigt?
\item Gibt es noch Optimierungspotenzial?
\end{enumerate}
%
......@@ -8,11 +8,12 @@
\item Einf眉hrung: Was ist Raytracing?
\begin{enumerate}
\item Theoretische Grundlagen
\item Umsetzung mit Vulkan \& NVIDIA-Extension
\item Hardwareunsterst眉tzung
\item Umsetzung mit Vulkan \& NVIDIA-Erweiterung
\item Hardwareunterst眉tzung
\end{enumerate}
\item Die Rendergleichung und ihre Umsetzung mittels Raytracing
\item Implementierungsgrundlagen eines Raytracers mit Vulkan \& NVIDIA-Erweiterung
% Zu viel oder am Thema vorbei?
% \item Umsetzung grafischer Effekte mit Raytracing
......@@ -25,24 +26,39 @@
% \item Globale Beleuhtung mit Monte-Carlo-Simulation und BRDF
% \item glossy reflection mit Multiple Importance Sampling
% \end{enumerate}
\item Darstellung von Lichtsch盲ften
%
\item Darstellung von Strahlenb眉scheln
\begin{enumerate}
\item Physikalische Grundlagen
\item Bisherige Forschung
%
\item Umsetzung durch Raytracing im Medium
%
\begin{enumerate}
\item Konzept
\item Grundlagen
\item Implementierung
\end{enumerate}
%
\item Umsetzung durch Projektion von Strahlen auf die Bildebene
\begin{enumerate}
\item Konzept
\item Grundlagen
\item Implementierung
\end{enumerate}
%
\end{enumerate}
%
\item Auswertung der Methoden
\begin{enumerate}
\item Qualit盲t
\item Performance
\item Vergleich zu bisherigen Techniken
\end{enumerate}
%
\item Anh盲nge, Quellen, etc.
\end{enumerate}
%
N眉tzliche Links:
% http://graphics.cs.aueb.gr/graphics/docs/papers/GraphiCon09_PapadopoulosPapaioannou.pdf
% https://graphics.stanford.edu/courses/cs348b-03/papers/veach-chapter9.pdf
% http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.671.766&rep=rep1&type=pdf
......
\section{Grundlagen von Raytracing}
Zun盲chst sollen die Grundlagen von Raytracing und die wichtigen Begriffe kurz umrissen werden um eine Basis
f眉r die Verst盲ndlichkeit des Dokuments zu legen. Dies ist auch in der Ausarbeitung selbst erforderlich und
kann dort noch mehr vertieft werden.\\
kann dort noch mehr vertieft werden.
%
\paragraph{Strahl/Ray:} Ein Strahl (oder eben Ray) besteht aus einem Startpunkt und einem Richtungsvektor. Der
Kern des Raytracings ist, die Schnittpunkte eines solchen Strahls mit der Szene zu berechnen. Dieser Prozess
\paragraph{Strahl/Ray:} Ein Strahl (oder eben Ray) besteht aus einem Startpunkt und einer Richtung (Punkt- und
Richtungsvektor). Der
Kerngedanke des Raytracings ist, die Schnittpunkte eines solchen Strahls mit der Szene zu berechnen. Dieser Prozess
wird in aktuellen Grafikkarten durch spezielle Rechenkerne beschleunigt und erm枚glicht so Raytracing in
Echtzeit. F眉r jeden Schnittpunkt kann danach ein bestimmter Shader aufgerufen werden, um den Treffer zu
verarbeiten, h盲ufig wird jedoch nur der Treffer, der am n盲chsten zum Startpunkt des Strahls liegt
Echtzeit. F眉r jeden Schnittpunkt kann danach ein Shader aufgerufen werden, um den Treffer zu
verarbeiten und die Farbe des Trefferpunktes zu bestimmen. Prinzipiell kann ein Strahl eine Vielzahl von
Treffern ausl枚sen, h盲ufig wird jedoch nur der Treffer, der dem Startpunkt des Strahls am n盲chsten liegt,
beachtet.
%
\paragraph{Ray-Payload:} Die Informationen, die mit einem Strahl verkn眉pft sind. Diese sind frei definierbar
......@@ -15,15 +17,15 @@ und beinhalten zum Beispiel die Farbe des getroffenen Objekts, oder lediglich ei
眉berhaupt ein Objekt getroffen wurde.
%
\paragraph{Schattenf眉hler:} Schattenf眉hler sind besondere Strahlen, die von einem Trefferpunkt eines Strahls
in der Szene ausgesendet werden um zu pr眉fen, ob der getroffene Punkt von der Lichtquelle erreichbar ist.
in der Szene ausgesendet werden um zu pr眉fen, ob der getroffene Punkt von der Lichtquelle aus erreichbar ist.
Somit l盲sst sich pr眉fen, ob ein Punkt von einer Lichtquelle aus im Schatten liegt oder nicht.
%
\paragraph{Stochastisches Raytracing:} Ein Sammelbegriff f眉r Techniken, die statt eines Strahls mehrere
zuf盲lligen variierte Strahlen nutzt und den Mittelwert bildet.
Um f眉r einen Punkt eine korrekte Beleuchtung zu berechnen m眉ssten
\paragraph{Stochastisches Raytracing:}
Um f眉r einen Punkt eine korrekte Beleuchtung zu berechnen, m眉ssten
theoretisch - der Rendergleichung folgend - unendlich viele Strahlen ausgesendet werden, um alle einfallenden
Lichtstrahlen zur眉ckzuverfolgen. Beim stochastischen Raytracing wird versucht, die Rendergleichung durch eine
Monte-Carlo-Simulation anzun盲hern.
Monte-Carlo-Simulation anzun盲hern. Dazu werden Strahlen zuf盲llig leicht variiert, was am Ende ein verrauschtes
Bild erzeugt, aber bessere Ergebnisse liefert (z.B. f眉r weiche Schatten).
\section{Problem: Darstellung von Lichtsch盲ften}
Lichtsch盲fte lassen sich beobachten, wenn sich Licht an mikroskopisch kleinen Teilchen in einem Medium (z.B.
\section{Problem: Darstellung von Godrays/Strahlenb眉scheln}
Sogenannte Godrays lassen sich beobachten, wenn Licht an mikroskopisch kleinen Teilchen in einem Medium (z.B.
Luft oder Wasser) in Richtung des Beobachters gebrochen wird. Wenn die Lichtquelle dazu verdeckt ist, d.h.
wenn der Beobachter im Schatten steht, werden Lichtstrahlen sichtbar.
Dieser Effekt l盲sst sich w盲hrend der Morgen- und Abendd盲mmerung besonders gut an Wolken beobachten, wenn diese
die Sonne verdecken. Auch Unterwasser oder wenn die Sonne in einen nebligen Wald schein l盲sst sich der Effekt
beobachten. Der Effekt ist eindrucksoll und kann deswegen eine computergrafisch dargestellte Szene bereichern.\\
die Sonne verdecken. Auch unter Wasser oder wenn die Sonne in einen nebligen Wald scheint, l盲sst sich der Effekt
beobachten. Der Effekt ist recht eindrucksvoll und kann deswegen eine computergrafisch dargestellte Szene bereichern.
%
\begin{figure}[ht]
\centering
......@@ -12,6 +12,7 @@ beobachten. Der Effekt ist eindrucksoll und kann deswegen eine computergrafisch
\caption{Darstellung der Lichtbrechung an Partikeln}
\end{figure}
%
Der Effekt l盲sst sich recht einfach durch Rendern eines transparenten Objekts erzeugen. \\
Andere Namen f眉r diesen Effekt sind \gquote{crepuscular rays}, Wolkenstrahlen oder eben Strahlenb眉schel. Das
Problem l盲sst sich mittels Raytracing nur ann盲hern. F眉r eine physikalisch korrekte Darstellung m眉ssten
unz盲hlige Partikel simuliert werden, daher soll hier nach einer physikalisch plausiblen Darstellung gesucht
werden.
\ No newline at end of file
\section{Bisherige Arbeit}
\subsection{Backward Raytracing}
\paragraph{Quelle:} J. Arvo, \gquote{Backwards ray tracing} in SIGGRAPH Course
Notes, 1986, vol. 12, p. 100. \\
\url{https://courses.cs.washington.edu/courses/csep557/13wi/projects/trace/extra/Backward.pdf}
\paragraph{Anmerkung:}
Der Begriff \gquote{Backward Raytracing} wird in entgegengesetzter Bedeutung genutzt. Manche Quellen
z.B. \url{https://de.wikipedia.org/wiki/Raytracing}
sehen das Verfolgen von Strahlen vom Beobachter in die Szene als Umkehrung der physikalischen Ausbreitung des
Lichtes (von der Lichtquelle in die Szene, dann zum Beobachter) und nennen daher die etablierte Methode \gquote{Backward Raytracing}.
Andere Quellen (z.B. J. Arvo) sehen das verfolgen von Strahlen vom Beobachter in die Szene als
\gquote{normales}, bekanntes und bereits implementiertes Verfahren an und bezeichnen daher die Umkehrung
dieses Verfahrens (also die physikalisch korrekte Richtung) als \gquote{Backward Raytracing}.
\paragraph{Technik:}
Strahlen werden von der Lichtquelle aus verfolgt und ihre Schnittpunkte mit der Szene werden 盲hnlich wie beim
Shadow-Mapping in einer \gquote{Illumination-Map} eingetragen. Diese Illumination-Map wird dann in einem
zweiten Schritt (der sog. \gquote{Forward phase}) mit normalem Raytracing zum Shading genutzt. Dadurch wird
ein Problem von Refraktion und Reflexion gel枚st. Das Problem besteht darin, dass ein transparenter K枚rper
Licht aus allen m枚glichen Richtungen in Richtung des Beobachters brechen kann. Es ist damit nahezu unm枚glich
alle Strahlen zu berechnen, die in einem lichtbrechenden K枚rper in die Richtung des Beobachters gebrochen
werden. \\
Das gleiche Problem betrifft auch Strahlenb眉schel: An jedem Punkt eines dichten Mediums k枚nnte sich ein Partikel
befinden, das Licht von der Lichtquelle zum Beobachter hin reflektiert. Der Algorithmus ist f眉r
Echtzeitanwendungen leider kaum
umsetzbar, da er sehr rechenintensiv ist. Allerdings ist der Algorithmus ein guter Ansatz f眉r echte globale
Beleuchtung.
\subsection{Realistic Real-time Underwater Caustics and Godrays}
\paragraph{Quelle:} Papadopoulos, Charilaos \& Papaioannou, Georgios. (2010). Realistic Real-time Underwater Caustics and Godrays. 19th International Conference on Computer Graphics and Vision, GraphiCon'2009 - Conference Proceedings.
\url{http://graphics.cs.aueb.gr/graphics/docs/papers/GraphiCon09_PapadopoulosPapaioannou.pdf}
\paragraph{Technik:}
Papadopoulos und Papaioannou stellen einen Algorithmus vor, der einen sehr 盲hnlichen Ansatz zur hier
vorgestellten Umsetzung 2 bietet. Es wird versucht Schnittpunkte von Lichtstrahlen mit der Szene zu finden
und dann Linien-Primitive von den Schnittpunkten zur Lichtquelle zu zeichnen. Allerdings wird diese
Berechnung im Lightspace vorgenommen und nicht mittels Raytracing ausgef眉hrt.
\ No newline at end of file
\section{Umsetzung}
Es soll versucht werden Lichtsch盲fte mittels Raytracing umzusetzen. F眉r die folgenden 脺berlegungen sei noch
der Begriffe \gquote{dichtes Medium} definiert:
Es soll versucht werden Strahlenb眉schel mittels Raytracing umzusetzen. F眉r die folgenden 脺berlegungen sei noch
der Begriff \gquote{dichtes Medium} definiert:
%
\paragraph{Dichtes Medium:} Ein Medium, in dem viele Partikel vorhanden sind, die das Licht streuen und
so die Entstehung von Lichtsch盲ften erm枚glichen. Dies kann zum Beispiel staubige Luft, Nebel, oder einfach
Wasser sein. Das Medium wird durch ein Objekt in der Szene angen盲hert.
so die Entstehung von Strahlenb眉scheln erm枚glichen. Dies kann zum Beispiel staubige Luft, Nebel, oder einfach
Wasser sein. Das Medium wird durch ein Objekt in der Szene umrissen.
\subsection{Umsetzung mittels Sampling der Lichtquelle aus dem Medium heraus}
%
......@@ -12,7 +12,7 @@ Dieser Algorithmus ist anscheinend z.B. in Minecraft RTX implementiert, jedoch n
beschrieben oder ausgearbeitet, daher lohnt sich die 脺berpr眉fung und Implementierung des Verfahrens.\\
Ein m枚glicher Algorithmus zur L枚sung des Problems besteht darin, beim Durchgang eines Strahls durch ein
dichtes Medium mittels Schattenf眉hlern abzutasten, inwiefern der Strahl von der Lichtquelle aus erreichbar ist
und daraufhin zu berechnen, wie viel Licht entlang des Strahls zum Beobachter zur眉ckgeworfen wird. Das grobe
und daraufhin zu berechnen, wieviel Licht entlang des Strahls zum Beobachter zur眉ckgeworfen wird. Das grobe
Vorgehen ist das folgende:
%
\begin{enumerate}
......@@ -25,52 +25,56 @@ Vorgehen ist das folgende:
\item Strahl trifft auf anderes Objekt oder tritt aus dichtem Medium aus
\begin{enumerate}
\item Der Strahlenabschnitt innerhalb des dichten Mediums wird bestimmt.
\item Entlang dieses Abschnittes wird eine Zahl Schattenf眉hler ausgesendet.
\item Entlang dieses Abschnittes werde einige Schattenf眉hler ausgesendet.
\item F眉r jeden Treffer wird der Anteil des zur眉ckgeworfenen Lichtes bestimmt und aufaddiert.
\end{enumerate}
\item Die anderen Trefferpunkte des Strahls werden behandelt, die Lichtberechnung f眉r dahinterliegende
Objekte entsprechend ausgef眉hrt und das Ergebnis um den vorher berechneten faktor aufgehellt.
Objekte entsprechend ausgef眉hrt und das Ergebnis um den vorher berechneten Faktor aufgehellt.
\end{enumerate}
%
\begin{figure}[ht]
\centering
\includegraphics*[width=0.9\textwidth]{data/images/Sampling.png}
\caption{Sampling der Lichtquelle beim Durchqueren eines Mediums}
\begin{tabular}{c|c}
Gelb & Lichtquelle \\
Schwarzer Balken & Objekt \\
Gr眉ne Strahlen & gesampelte Strahlen \\
rote Strahlen & Schattenf眉hler
\begin{tabular}{|l|l|}
\hline
Objekt & Beschreibung \\
\hline
gelber kreis & Lichtquelle \\
schwarzer Balken & Objekt, welches das Licht blockiert \\
gr眉ne Strahlen & gesampelte Strahlen \\
rote Strahlen & Schattenf眉hler \\
\hline
\end{tabular}
\end{figure}
%
Dabei ist nat眉rlich vor allem auf die Performance zu achten. Je mehr Schattenf眉hler genutzt werden, desto
genauer wird das Ergebnis, desto teurer wird jedoch auch die Berechnung. Auch f眉r die genaue Art der
genauer wird das Ergebnis, desto teurer wird jedoch auch die Berechnung. Auch f眉r die genaue Art der
Verrechnung der einzelnen Samples muss eine Formel entwickelt werden.
\subsection{Umsetzung mittels Berechnung von der Lichtquelle aus}
Der zweite L枚sungsansatz verfolgt einen 盲hnlichen Ansatz wie Photon-Mapping, indem versucht wird die
Der zweite L枚sungsansatz verfolgt einen 盲hnlichen Ansatz wie Photon-Mapping, indem versucht wird die
Strahlen von der Lichtquelle aus zu verfolgen. Der Ansatz k枚nnte eine h枚here Qualit盲t erzeugen, jedoch auch
teurer sein. Er beinhaltet einen zweistufigen Renderprozess, der wie folgt abl盲uft:
%
\begin{enumerate}
\item Die Szenewird wie gew枚hnlich gerendert mittels Raytracing gerendert, dabei wird jedoch auch ein
\item Die Szene wird wie gew枚hnlich mittels Raytracing gerendert, dabei wird jedoch auch ein
Tiefenpuffer erstellt.
\item In einem zweiten (potenziell parallelen) Renderschritt werden die Lichtsch盲fte in eine Texture gerendert
%
\begin{enumerate}
\item Es werden Strahlen von der Lichtquelle aus in Richtung des dichten Mediums geschossen.
\item Wenn ein Strahl in das Medium ein- und wieder austritt erh盲lt man einen Strahlenverlauf im
Medium mit Anfangspunkt, Richtung und L盲nge
\item Diese Linie wird auf die Kameraebene projiziert.
\item Entlang der prohizierten Linie wird mit einem geeigneten Rasterungsalgorithmus f眉r Linien (z.B.
Bresenham-Algorithmus) eine Linie in einer Texture erzeugt.
\end{enumerate}
%
\item In einem zweiten (potenziell parallelen) Renderschritt werden die Strahlenb眉schel in eine Textur gerendert
%
\begin{enumerate}
\item Es werden Strahlen von der Lichtquelle aus in Richtung des dichten Mediums geschossen.
\item Wenn ein Strahl in das Medium ein- und wieder austritt erh盲lt man einen Strahlenverlauf im
Medium mit Anfangspunkt, Richtung und L盲nge
\item Diese Linie wird auf die Kameraebene projiziert.
\item Entlang der projizierten Linie wird mit einem geeigneten Algorithmus (z.B.
Bresenham-Algorithmus) eine Linie in einer Texture erzeugt.
\end{enumerate}
%
\item Beide Bilder werden mithilfe der Tiefenwerte kombiniert.
\end{enumerate}
%
F眉r diesen Algorithmus besteht die Herausforderung wieder darin die Anzahl, Position und Richtung der
F眉r diesen Algorithmus besteht die Herausforderung wieder darin die Anzahl, Position und Richtung der
ausgesendeten Strahlen zu bestimmen und so zu minimieren, das die Performance nicht zu stark leidet.
%
\begin{figure}[ht]
......
\section{Vorl盲ufiger Zeitplan}
\begin{center}
\begin{tabular}{|lc|}
\hline
\textbf{Phase} & \textbf{Gesch盲tzter Zeitbedarf in h} \\
\hline
\textbf{Planung} & \textbf{240} \\
Algorithmus entwickeln & 120 \\
脛nderungen an Infrastruktur planen & 30 \\
Implementierung planen & 60 \\
脺berlegung zu Grenzf盲llen & 30 \\
\hline
\textbf{Implementierung} & \textbf{330} \\
Verbesserung des bestehenden Programms & 100 \\
Anpassung f眉r den jeweiligen Algorithmus & 50 \\
Implementierung selbst & 80 \\
Bug-Fixes & 100 \\
\hline
\textbf{Evaluierung} &\textbf{180} \\
Erstellung von Szenen f眉r Grenzf盲lle & 40 \\
Visuelle Evaluierung & 30 \\
Bewertung der Implementierung & 30 \\
Bewertung anhand theoretischer Aspekte & 80 \\
\hline
\textbf{Texterzeugung} &\textbf{150} \\
\hline
\textbf{Gesamt:} & \textbf{900} \\
\hline
\end{tabular}
\end{center}
\ No newline at end of file
......@@ -41,7 +41,7 @@
\begin{document}
\pagenumbering{gobble}
\input{components/title}
% \clearpage
\clearpage
% \pagenumbering{roman}
% \tableofcontents
% \clearpage
......@@ -53,6 +53,7 @@
\input{components/v2/bewertung.tex}
\input{components/v2/quellen.tex}
\input{components/v2/gliederung.tex}
\input{components/v2/zeitplan.tex}
% \input{components/raytracing}
% \input{components/implementierung}
% \input{components/effekte}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment