Commit 7b4617c4 authored by Lukas Tietze's avatar Lukas Tietze

Kleinkram

parent c4d4cafe
#version 460
#extension GL_GOOGLE_include_directive : enable
layout(location = 0) in vec2 texCoord;
layout(location = 0) out vec4 color;
layout(binding = 0) uniform sampler2D texSampler;
void main() {
color = vec4(texture(texSampler, texCoord).rgb, 1.0);
}
\ No newline at end of file
#version 460
#version 450
#extension GL_GOOGLE_include_directive : enable
#extension GL_ARB_separate_shader_objects : enable
layout(location = 0) out vec2 texCoord;
......
......@@ -2,7 +2,7 @@
In diesem Abschnitt sollen einige Lichteffekte genannt und kurz erl盲utert werden. Das Ziel einer Masterarbeit
w盲re es, zu pr眉fen wie diese Lichteffekte mittels Raytracing gerendert werden
k枚nnen und diese Techniken zu implementieren. Dabei soll immer auch der Vergleich zur Implementierung dieser
Technik bei einem \gquote{klassischen} Rasteriesierer gezogen werden.\\
Technik bei einem \gquote{klassischen} Rasterisierer gezogen werden.\\
Zun盲chst muss eine Standardszene erstellt werden, an der die Effekte veranschaulicht werden k枚nnen. Diese
Szene muss daher eine Lichtquelle und mehrere Objekte enthalten. Es muss mindestens ein Reflektor und ein
Refraktor enthalten sein.
......@@ -14,7 +14,7 @@ Schritt, im Ergebnis muss die Szene sichtbar sein, es werden jedoch noch keinerl
durchgef眉hrt.
%
\subsection{Harte Schatten}
Schatten stellen einen wichtigen Faktor f眉r den Realismusgrad einer Szene dar. Bei einem Rasteriesierer werden
Schatten stellen einen wichtigen Faktor f眉r den Realismusgrad einer Szene dar. Bei einem Rasterisierer werden
dazu Shadowmaps genutzt, also Renderings der Szene aus Sicht der Lichtquelle(n). Durch geschicktes
Interpolieren zwischen mehreren Shadowmaps wird damit ein relativ gutes Ergebnis erzielt, das jedoch bei
kleinen Details oft nicht realistisch erscheint.
......@@ -29,12 +29,12 @@ zu sehen sein.
\subsection{Reflexion}
Reflexion und Refraktion sind zwei weitere grafische Effekte, die den Realismusgrad einer Szene stark
erh枚hen. Bei genauerer Betrachtung sind sehr viele Objekte in der realen Welt zu einem gewissen Grad
spiegelnd. F眉r Rasteriesierer stellt dieser Effekt bisweilen Probleme dar. M枚gliche Implementierungen sind
spiegelnd. F眉r Rasterisierer stellt dieser Effekt bisweilen Probleme dar. M枚gliche Implementierungen sind
Stencil Reflection, Environment mapping und Screen Space Reflections.\\
Nach diesem Schritt muss in der Szene der Reflektor die umliegende Szene reflektieren.
%
\paragraph{Stencil Reflection} erzeugt zwar die besten und genauesten Ergebnisse, da die Szene wirklich gespiegelt
gerendert wird, ist jedoch auch sehr kostspielig (Szene muss 1 zus盲tzliches Mal pro Reflektor gerendert
gerendert wird, ist jedoch auch sehr kostspielig (Szene muss ein zus盲tzliches Mal pro Reflektor gerendert
werden) und eignet sich nur f眉r ebene Reflektoren.
%
\paragraph{Screen Space Reflections} berechnet Reflexionen im Screen Space.
......@@ -58,7 +58,7 @@ Lichtquelle ausgegangen.
%
\subsection{Refraktion}
Refraktion, also die Brechung des Lichts ist ein weiterer subtiler Effekt, der in der Realit盲t an
transparenten Objekten auftritt. Bei einem Rasteriesierer l盲sst sich das Problem wieder mit Cubemaps l枚sen,
transparenten Objekten auftritt. Bei einem Rasterisierer l盲sst sich das Problem wieder mit Cubemaps l枚sen,
ganz 盲hnlich wie bei der Erstellung von Reflexionen. Beim Raytracing wird das Problem wieder sehr allgemein
gel枚st: der einfallende Strahl wird entsprechend des Snelliusschen Brechungsgesetzes (Snell's law)
zur眉ckverflogt. Der Vorteil liegt hier wieder in der Genauigkeit des Prozesses. \\
......@@ -85,7 +85,7 @@ bei schnellen Bewegungen zu erwarten, da das Bild dann verzerrt werden kann. Ein
entwickelt und getestet werden.
%
\subsection{Globale Beleuchtung}
Bisher wurden pro Trefferpunkt nur sehr weniger Strahlen genutzt: ein Schattenf眉hler und eventuell ein Strahl
Bisher wurden pro Trefferpunkt nur sehr wenige Strahlen genutzt: ein Schattenf眉hler und eventuell ein Strahl
f眉r eine Reflexion oder Refraktion. In diesem Schritt soll das Konzept der globalen Beleuchtung umgesetzt
werden. Dazu soll nicht mehr nur die minimal n枚tige Anzahl an Strahlen erzeugt werden.
Es wird nun versucht, die Rendergleichung anzun盲hern. Dazu werden von einem Trefferpunkt aus mehrere Strahlen
......@@ -96,28 +96,28 @@ aus \textit{vielen} ebenen, perfekten Reflektoren besteht (Mikrofacettenmodell).
nicht-punktf枚rmigen Lichtquelle ausgegangen.\\
Ein wichtiger Punkt dabei ist die Anzahl der Strahlen so zu w盲hlen, dass die Performance nicht darunter
leidet, aber trotzdem noch ein gutes Ergebnis erzielt wird. \\
Hier l盲sst sich auch das prinzip der BRDF vertiefen, da diese die Verteilung und Anzahl der Strahlen bestimmt.
Mit dieser Technik lassen sich zun盲chst Ambient Occlusion, weiche Schatten und Color Bleeding implementiert
werden. Am Ende dieses Schrittes muss die Szene leichte Schatten in kleinen Vertiefungen aufweisen, die
Hier l盲sst sich auch die BRDF vertiefen, da diese die Verteilung und Anzahl der Strahlen bestimmt.
Mit dieser Technik lassen sich zun盲chst Ambient Occlusion, weiche Schatten und Color Bleeding implementieren.
Am Ende dieses Schrittes muss die Szene leichte Schatten in kleinen Vertiefungen aufweisen, die
Schatten von Objekten d眉rfen keine harten Schatten mehr sein und die Farbe von Objekten muss leicht auf
umliegende Objekte abstrahlen. Dies l盲sst sich zum Beispiel mit farbigen W盲nden und einem wei脽en Block direkt
daneben gut darstellen.\\
%
\subsubsection{Ambient Occlusion}
Ambient Occlusion beschreibt den Effekt, dass bei ambienter Beleuchtung tiefer gelegene Stellen eines Objekts,
z.B. L枚cher oder Ritzen weniger beleuchtet sind. F眉r Rasteriesierer kann der Effekt durch ein Screen
z.B. L枚cher oder Ritzen weniger beleuchtet sind. F眉r Rasterisierer kann der Effekt durch ein Screen
Space-Verfahren (SSAO, Screen Space Ambient Occlusion) recht gut angen盲hert werden.
%
\subsubsection{Weiche Schatten}
In der Realit盲t besitzen die meisten Schatten einen dunklen Kernschatten und weniger dunklen Halbschatten,
sodass der 脺bergang von Schatten zu beleuchteter Fl盲che flie脽end ist. Bei einem Rasteriesierer l盲st sich der
sodass der 脺bergang von Schatten zu beleuchteter Fl盲che flie脽end ist. Bei einem Rasterisierer l盲st sich der
Effekt gut ann盲hern, indem eine Mipmap der Shadowmap gesampelt wird. Beim Raytracing m眉ssen hierf眉r mehrere
Strahlen genutzt werden, wie es die Rendergleichung vorsieht.
%
\subsubsection{Color Bleeding}
Color Bleeding bezeichnet den Fakt, dass Objekte auch Licht von benachbarten Objekten reflektieren und so die
Beleuchtung nicht nur von der Lichtquelle, sondern auch von der Umgebung eines Objektes abh盲ngt. Bei einem
Rasteriesierer w眉rde man hierf眉r wieder auf zuvor erzeugte Cubemaps zur眉ckgreifen. Beim Raytracing ergibt sich
Rasterisierer w眉rde man hierf眉r wieder auf zuvor erzeugte Cubemaps zur眉ckgreifen. Beim Raytracing ergibt sich
dieser Schritt automatisch durch die Ann盲herung der Rendergleichung.
%
\subsection{Multiple Importance Sampling f眉r \gquote{Glossy Reflection}}
......
\section{Grundlagen der Aufgabe}
Die Ausarbeitung soll sich sprachlich auf einem Niveau befinden, das f眉r Leser mit grundlegenden Kenntnissen
眉ber Computergrafik, Geometrie im dreidimensionalen Raum und Programmierung in modernem C++, verst盲ndlich ist.
眉ber Computergrafik, Geometrie im dreidimensionalen Raum und Programmierung in modernem C++ verst盲ndlich ist.
Fachbegriffe sollen dennoch kurz wiederholt werden. Oft haben Fachbegriffe keine deutsche Entsprechung oder die deutsche
Entsprechung ist zu unhandlich und zu unbekannt, sodass auf englische Begriffe im Flie脽text nicht verzichtet
werden kann. Sooft m枚glich sollen Prinzipien nicht nur beschrieben, sondern grafisch dargestellt werden.\\
werden kann. Sofern m枚glich sollen Prinzipien nicht nur beschrieben, sondern grafisch dargestellt werden.\\
Der Grundgedanke ist, eine Palette von grafischen Effekten vertieft zu betrachten und an diesen Effekten die
M枚glichkeiten und Einschr盲nkungen von Raytracing zu erkunden.
......@@ -5,8 +5,8 @@
- David Kirk
\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
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
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
mit Hardwarebeschleunigung f眉r Raytracing auf den Markt kamen und Raytracing in Echtzeit erm枚glichten.\\
......
......@@ -3,8 +3,9 @@ Zun盲chst sollen die theoretischen Grundlagen des Raytracing beschrieben werden.
Terminologie, z.B. die Erkl盲rung, was ein Strahl in diesem Kontext 眉berhaupt ist. Weiterhin sollen auch die
physikalischen Grundlagen der Technik kurz erkl盲rt werden - vor allem in Hinblick auf das Prinzip der globalen
Beleuchtung und die Rendergleichung.\\
Hier bietet sich auch die Vertiefung der verschiedenen (Ab-)Arten des Raytracing an. Dazu geh枚ren z.B.diffuses
Raytracing, Pathtracing und Photonmapping. Dabei sind vor allem die stochastischen Ans盲tze zu erw盲hnen, die
Hier bietet sich auch die Vertiefung der verschiedenen (Ab-)Arten des Raytracing an, da viele dieser Techniken
noch von Bedeutung sein werden.
Dabei sind vor allem die stochastischen Ans盲tze zu erw盲hnen, die
versuchen die Rendergleichung anzun盲hern, indem Strahlen in zuf盲llige Richtungen erzeugt werden
(Monte-Carlo-Integration). Zur Bestimmung der groben Richtung der Strahlen werden dabei die BRDF oder
\textit{Multiple Importance Sampling} (MSI) genutzt, welche hier auch vertieft werden k枚nnen.\\
......
......@@ -10,7 +10,7 @@
\small{Professur Graphische Datenverarbeitung}
\\
\vspace*{1.5cm}
\Huge{Themenvroschlag Masterarbeit}
\Huge{Themenvorschlag Masterarbeit}
\\
\Large{Fortgeschrittene Beleuchtungseffekte mit Raytracing}
\\
......
\section{Untersuchung}
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
......@@ -41,15 +41,17 @@
\begin{document}
\pagenumbering{gobble}
\input{components/title}
\clearpage
\pagenumbering{roman}
\tableofcontents
\clearpage
% \clearpage
% \pagenumbering{roman}
% \tableofcontents
% \clearpage
\pagenumbering{arabic}
\input{components/preamble}
\input{components/grundlagen}
\input{components/raytracing}
\input{components/implementierung}
\input{components/effekte}
\input{components/entwicklung.tex}
\input{components/}
% \input{components/grundlagen}
% \input{components/raytracing}
% \input{components/implementierung}
% \input{components/effekte}
% \input{components/entwicklung.tex}
\end{document}
......@@ -132,7 +132,7 @@ bool lib::CompileShader(const std::string &glsl, const lib::ShaderInfo &info, li
options.SetIncluder(std::move(includer));
options.SetTargetEnvironment(shaderc_target_env_vulkan, shaderc_env_version_vulkan_1_1);
options.SetSourceLanguage(shaderc_source_language_glsl);
options.SetTargetSpirv(shaderc_spirv_version_1_5);
options.SetTargetSpirv(shaderc_spirv_version_1_4);
switch (info.compileOptions.optimizationLevel)
{
......
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