Commit 5924c9cb authored by Lukas Tietze's avatar Lukas Tietze

Neuer Entwurf

parent cd62ecbf
......@@ -5,11 +5,10 @@
%
\begin{enumerate}
\item Aufgabenstellung
\item Einf眉hrung: Was ist Raytracing?
\begin{enumerate}
\item Theoretische Grundlagen
\item Umsetzung mit Vulkan & NVIDIA-Extension
\item Umsetzung mit Vulkan \& NVIDIA-Extension
\item Hardwareunsterst眉tzung
\end{enumerate}
......@@ -38,14 +37,11 @@
\item Qualit盲t
\item Performance
\end{enumerate}
\begin{enumerate}
\end{enumerate}
\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
https://nvpro-samples.github.io/vk_raytracing_tutorial/vkrt_tuto_intersection.md.html#environmentsetup/intersectionshader
https://www.saschawillems.de/blog/2016/08/13/vulkan-tutorial-on-rendering-a-fullscreen-quad-without-buffers/
\ No newline at end of file
% 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
% https://nvpro-samples.github.io/vk_raytracing_tutorial/vkrt_tuto_intersection.md.html#environmentsetup/intersectionshader
% https://www.saschawillems.de/blog/2016/08/13/vulkan-tutorial-on-rendering-a-fullscreen-quad-without-buffers/
\ No newline at end of file
\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.\\
%
\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
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
beachtet.
%
\paragraph{Ray-Payload:} Die Informationen, die mit einem Strahl verkn眉pft sind. Diese sind frei definierbar
und beinhalten zum Beispiel die Farbe des getroffenen Objekts, oder lediglich eine Flag, die anzeigt ob
眉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.
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
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.
\section{Problem: Darstellung von Lichtsch盲ften}
Lichtsch盲fte lassen sich beobachten, wenn sich 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.\\
%
\begin{figure}[ht]
\centering
\includegraphics[width=0.9\textwidth]{data/images/Streuung2.png}
\caption{Darstellung der Lichtbrechung an Partikeln}
\end{figure}
%
Der Effekt l盲sst sich recht einfach durch Rendern eines transparenten Objekts erzeugen. \\
%
F眉r die folgenden 脺berlegungen seien noch folgende Begriffe definiert:
%
\paragraph{Dichtes Medium:} Ein Medium, in dem viele Partikel vorhanden sind, die das Licht reflektieren und
so zur Entstehung von Lichtsch盲ften f眉hren k枚nnen. Dies kann zum Beispiel staubige Luft, Nebel, oder einfach
Wasser sein. Das Medium wird durch ein Objekt in der Szene angen盲hert.
\ No newline at end of file
\section{Umsetzung mittels Sampling im Medium}
%
Dieser Algorithmus ist anscheinend z.B. in Minecraft RTX implementiert, jedoch noch nicht weiter
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
Vorgehen ist das folgende:
%
\begin{enumerate}
\item Strahl trifft auf dichtes Medium
%
\begin{enumerate}
\item Der Eintrittspunkt wird in der Ray-Payload vermerkt.
\end{enumerate}
%
\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 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.
\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
\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 die genaue Art der Verrechnung
der einzelnen Samples muss bestimmt werden.
\ No newline at end of file
\section{Entwicklung eines eigenen Algorithmus zur Darstellung von gestreutem Licht in dichten Medien}
Abschlie脽end soll noch ein eigener Algorithmus entwickelt werden, der Lichtstrahlen in dichten Medien rendern
kann. Die Idee dabei ist, nicht den Trefferpunkt eines Strahls auszuwerten, sonden den Weg den
er zur眉ckgelegt hat. Dies k枚nnte vor allem bei dichten Medien interessant sein (staubige/unreine Luft, oder
Wasser), da dort Lichtsch盲fte entstehen k枚nnen. Damit k枚nnten Lichtsch盲fte mit vertretbarem Rechenaufwand und
h枚herer Genauigkeit als beim Raymarching dargestellt werden. \\
Der Grundaufbau ist 盲hnlich zum Photon-Mapping (welches wiederum dem Shadow-Mapping 盲hnelt):
%
\begin{itemize}
\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 l盲sst sich ein Strahlenverlauf im Medium mit
......
......@@ -47,8 +47,12 @@
% \clearpage
\pagenumbering{arabic}
\input{components/preamble}
\input{components/}
% \input{components/grundlagen}
\input{components/v2/grundlagen}
\input{components/v2/problem.tex}
\input{components/v2/umsetzung1.tex}
\input{components/v2/umsetzung2.tex}
\input{components/v2/quellen.tex}
\input{components/v2/gliederung.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