Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
MASTERARBEIT😆😜
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Lukas Tietze
MASTERARBEIT😆😜
Commits
5924c9cb
Commit
5924c9cb
authored
Jun 22, 2020
by
Lukas Tietze
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Neuer Entwurf
parent
cd62ecbf
Changes
17
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
103 additions
and
20 deletions
+103
-20
doc/Themenvorschlag/components/v2/gliederung.tex
doc/Themenvorschlag/components/v2/gliederung.tex
+6
-10
doc/Themenvorschlag/components/v2/grundlagen.tex
doc/Themenvorschlag/components/v2/grundlagen.tex
+29
-0
doc/Themenvorschlag/components/v2/problem.tex
doc/Themenvorschlag/components/v2/problem.tex
+21
-0
doc/Themenvorschlag/components/v2/quellen.tex
doc/Themenvorschlag/components/v2/quellen.tex
+0
-0
doc/Themenvorschlag/components/v2/umsetzung1.tex
doc/Themenvorschlag/components/v2/umsetzung1.tex
+41
-0
doc/Themenvorschlag/components/v2/umsetzung2.tex
doc/Themenvorschlag/components/v2/umsetzung2.tex
+0
-8
doc/Themenvorschlag/data/images/Lichtstreuung.pdn
doc/Themenvorschlag/data/images/Lichtstreuung.pdn
+0
-0
doc/Themenvorschlag/data/images/Lichtstreuung.png
doc/Themenvorschlag/data/images/Lichtstreuung.png
+0
-0
doc/Themenvorschlag/data/images/Sampling.pdn
doc/Themenvorschlag/data/images/Sampling.pdn
+0
-0
doc/Themenvorschlag/data/images/Sampling.png
doc/Themenvorschlag/data/images/Sampling.png
+0
-0
doc/Themenvorschlag/data/images/Schatten1.pdn
doc/Themenvorschlag/data/images/Schatten1.pdn
+0
-0
doc/Themenvorschlag/data/images/Schatten1.png
doc/Themenvorschlag/data/images/Schatten1.png
+0
-0
doc/Themenvorschlag/data/images/Schatten2.pdn
doc/Themenvorschlag/data/images/Schatten2.pdn
+0
-0
doc/Themenvorschlag/data/images/Schatten2.png
doc/Themenvorschlag/data/images/Schatten2.png
+0
-0
doc/Themenvorschlag/data/images/Streuung2.pdn
doc/Themenvorschlag/data/images/Streuung2.pdn
+0
-0
doc/Themenvorschlag/data/images/Streuung2.png
doc/Themenvorschlag/data/images/Streuung2.png
+0
-0
doc/Themenvorschlag/document.tex
doc/Themenvorschlag/document.tex
+6
-2
No files found.
doc/Themenvorschlag/components/v2.tex
→
doc/Themenvorschlag/components/v2
/gliederung
.tex
View file @
5924c9cb
...
...
@@ -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
doc/Themenvorschlag/components/v2/grundlagen.tex
0 → 100644
View file @
5924c9cb
\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.
doc/Themenvorschlag/components/v2/problem.tex
0 → 100644
View file @
5924c9cb
\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
doc/Themenvorschlag/components/v2/quellen.tex
0 → 100644
View file @
5924c9cb
doc/Themenvorschlag/components/v2/umsetzung1.tex
0 → 100644
View file @
5924c9cb
\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
doc/Themenvorschlag/components/
entwicklung
.tex
→
doc/Themenvorschlag/components/
v2/umsetzung2
.tex
View file @
5924c9cb
\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
...
...
doc/Themenvorschlag/data/images/Lichtstreuung.pdn
0 → 100644
View file @
5924c9cb
File added
doc/Themenvorschlag/data/images/Lichtstreuung.png
0 → 100644
View file @
5924c9cb
35.6 KB
doc/Themenvorschlag/data/images/Sampling.pdn
0 → 100644
View file @
5924c9cb
File added
doc/Themenvorschlag/data/images/Sampling.png
0 → 100644
View file @
5924c9cb
41 KB
doc/Themenvorschlag/data/images/Schatten1.pdn
deleted
100644 → 0
View file @
cd62ecbf
File deleted
doc/Themenvorschlag/data/images/Schatten1.png
deleted
100644 → 0
View file @
cd62ecbf
14.9 KB
doc/Themenvorschlag/data/images/Schatten2.pdn
deleted
100644 → 0
View file @
cd62ecbf
File deleted
doc/Themenvorschlag/data/images/Schatten2.png
deleted
100644 → 0
View file @
cd62ecbf
7.44 KB
doc/Themenvorschlag/data/images/Streuung2.pdn
0 → 100644
View file @
5924c9cb
File added
doc/Themenvorschlag/data/images/Streuung2.png
0 → 100644
View file @
5924c9cb
54.2 KB
doc/Themenvorschlag/document.tex
View file @
5924c9cb
...
...
@@ -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}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment