Commit 0d8b9aae authored by Lukas Tietze's avatar Lukas Tietze

Titel, Dokumentenstruktur und Organisation :D

parent 1bd07f9b
\section{Motivation}
\gquote{Ich bin ein Test}, sagte \cite{Haines2019}
\ No newline at end of file
\subsection{Grundlagen}
\ No newline at end of file
\subsection{Hardwareunterstützung}
\ No newline at end of file
\section{Einführung zum Raytracing}
\input{components/2_Raytracing/grundlagen.tex}
\input{components/2_Raytracing/umsetzung.tex}
\input{components/2_Raytracing/hardware.tex}
\ No newline at end of file
\subsection{Umsetzung mit Vulkan und NV\_VK\_RAY\_TRACING}
\ No newline at end of file
\section{Die Rendergleichung und ihre Umsetzung im Raytracing}
\ No newline at end of file
\section{Implementierung eines Raytracers mit Vulkan}
\ No newline at end of file
\section{Godrays/Strahlenbüschel}
\input{components/5_Strahlenbüschel/physik.tex}
\ No newline at end of file
\subsection{Physikalische Grundlagen}
\ No newline at end of file
\section{Implementierung der entwickelten Algorithmen}
\ No newline at end of file
\section{Ergebnisse und Auswertung}
\ No newline at end of file
\section{DummyA}
\section{DummyB}
\ No newline at end of file
\begin{abstract}
\end{abstract}
\ No newline at end of file
%-------------------------------------------------------------------------------------------------------------
% Bibliotheken für tikz
%-------------------------------------------------------------------------------------------------------------
\usetikzlibrary{arrows, arrows.meta, shapes, trees, calc, decorations.pathreplacing, positioning}
%-------------------------------------------------------------------------------------------------------------
% Stile für Tikz
%-------------------------------------------------------------------------------------------------------------
\tikzset{current/.style = {draw, circle, fill=yellow!30, inner sep=1pt, minimum size=6mm}}
\tikzset{unvisited/.style = {draw, circle, fill=white, inner sep=1pt, minimum size=6mm}}
\tikzset{visited/.style = {draw, circle, fill=green!20, inner sep=1pt, minimum size=6mm}}
\tikzset{goodResult/.style = {draw, rectangle, fill=green!30, inner sep=1pt, minimum width=3cm}}
\tikzset{badResult/.style = {draw, rectangle, fill=red!30, inner sep=1pt, minimum width=3cm}}
\tikzset{variableNode/.style = {draw, circle, fill=white, inner sep=1pt, minimum size=6mm}}
\tikzset{currentVariableNode/.style = {draw, circle, fill=green!20, inner sep=1pt, minimum size=6mm}}
\tikzset{activeVariableNode/.style = {draw, circle, fill=orange!20, inner sep=1pt, minimum size=6mm}}
\tikzset{clauseNode/.style = {draw, rectangle, fill=white, inner sep=1pt, minimum size=6mm}}
\tikzset{activeClauseNode/.style = {draw, rectangle, fill=orange!20, inner sep=1pt, minimum size=6mm}}
\tikzset{emptyNode/.style = {inner sep=0pt, outer sep=0pt, anchor=base, baseline}}
%-------------------------------------------------------------------------------------------------------------
% Abkürzungen, Displaystyles, etc.
%-------------------------------------------------------------------------------------------------------------
\newcommand\todo[1]{\textcolor{red}{[#1]}\message{TODO: #1}}
\newcommand\dprod[0]{\displaystyle\prod}
\newcommand\tprod[0]{\textstyle\prod}
\newcommand\dsum[0]{\displaystyle\sum}
\newcommand\tsum[0]{\textstyle\sum}
%-------------------------------------------------------------------------------------------------------------
% Messages
%-------------------------------------------------------------------------------------------------------------
\newcommand\xamsg[4]{
\frac{
\dprod_{b\in N(#1)\setminus #2}m_{b\to #1}^{[#4]}(#3)
}
{
\dprod_{b\in N(#1)\setminus #2}m_{b\to #1}^{[#4]}(1) +
\dprod_{b\in N(#1)\setminus #2}m_{b\to #1}^{[#4]}(0)
}
}
\newcommand\axmsg[3]{
1-\dprod_{y\in N(#1)\setminus #2}m_{y\to #1}^{[#3]}(1-value(y, #1))
}
\newcommand\xmsg[2]{
\frac{
\dprod_{b\in N(#1)}m_{b\to #1}^{[#2]}(1)
}
{
\dprod_{b\in N(#1)}m_{b\to #1}^{[#2]}(1) +
\dprod_{b\in N(#1)}m_{b\to #1}^{[#2]}(0)
}
}
\newcommand\xamsgempty{
\frac{
\dprod_{\emptyset}
}
{
\dprod_{\emptyset} +
\dprod_{\emptyset}
}
}
%-------------------------------------------------------------------------------------------------------------
% true/false
%-------------------------------------------------------------------------------------------------------------
\newcommand\true{\textit{wahr}}
\newcommand\false{\textit{falsch}}
%-------------------------------------------------------------------------------------------------------------
% besondere Elemente für tikz
%-------------------------------------------------------------------------------------------------------------
\newcommand\connection[3][]{
\ifthenelse
{
\equal{#1}{}
}
{
\draw (#2) -- (#3);
}
{
\draw (#2) -- (#3) node[midway, fill=white] {\small{#1}};
}
}
\newcommand\negConnection[3][]{
\ifthenelse
{
\equal{#1}{}
}
{
\draw[dashed] (#2) -- (#3);
}
{
\draw[dashed] (#2) -- (#3) node[midway, fill=white] {\small{#1}};
}
}
\newcommand\fadingConnection[3][]{
\ifthenelse
{
\equal{#1}{}
}
{
\draw[dash pattern=on 1cm off 0.1cm on 0.1cm off 0.05cm on 0.05cm off 0.05cm on 0.05cm off 5cm] (#2) -- (#3);
}
{
\draw[dash pattern=on 1cm off 0.1cm on 0.1cm off 0.05cm on 0.05cm off 0.05cm on 0.05cm off 5cm] (#2) -- (#3) node[near start, fill=white] {\small{#1}};
}
}
\newcommand\arrowconnection[3][]{
\ifthenelse
{
\equal{#1}{}
}
{
\draw[draw, -latex] (#2) -- (#3);
}
{
\draw[draw, -latex] (#2) -- (#3) node[midway, fill=white] {\small{#1}};
}
}
%-------------------------------------------------------------------------------------------------------------
% Seitenumbrüche und abstract Title
%-------------------------------------------------------------------------------------------------------------
\newcommand\emptypage{
\newpage\null\thispagestyle{empty}\newpage
}
\newcommand\file[1]{
\texttt{#1}
}
\ifcsname abstitlestyle\endcsname
\renewcommand{\abstitlestyle}[1]{\centering\Large{\textbf{#1}}}
\fi
\ifcsname\glossaryname\endcsname
\renewcommand*{\glossaryname}{Glossar}
\fi
\newcommand\gquote[1]{\glqq#1\grqq}
\sisetup{
output-decimal-marker = {,}
}
\ No newline at end of file
\begin{center}
\includegraphics[width=0.75\textwidth]{data/icons/TU_Chemnitz_positiv_gruen.eps}
\\
\large{Fakultät für Informatik}
\\
\small{Professur Grafische Datenverarbeitung}
\\
\vspace*{1.5cm}
\Huge{Masterarbeit}
\\
\Large{Darstellung von Godrays mit Raytracing}
\\
\vspace{2cm}
Lukas Tietze
\\
Chemnitz, den \today
\\
\vspace{3cm}
\textbf{1. Prüfer: }Prof. Dr. Guido Brunnett \\
\textbf{2. Prüfer: }Daniel Rösner, M.Sc.\\
\end{center}
@book{Haines2019,
title = {Ray Tracing Gems},
editor = {Eric Haines and Tomas Akenine-M\"oller},
publisher = {Apress},
year = {2019},
note ={\url{http://raytracinggems.com}},
}
\ No newline at end of file
\newglossaryentry{Ray}{name={Ray},description={Ein Ray ist ein Strahl, definiert durch Startpunkt und Richtung.}}
\ No newline at end of file
......@@ -2,6 +2,9 @@
\documentclass[11pt,a4paper]{article}
\usepackage{fullpage}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{xifthen}
\usepackage[onehalfspacing]{setspace}
......@@ -12,35 +15,83 @@
\usepackage{amssymb}
\usepackage{tabularx}
\usepackage{xcolor}
\usepackage{listings}
\usepackage{algorithmicx}
\usepackage[Algorithmus]{algorithm}
\usepackage{algpseudocode}
\usepackage{verbatim}
\usepackage{tikz}
\usepackage{fullpage}
\usepackage[hidelinks]{hyperref}
\usepackage{glossaries}
\usepackage{siunitx}
\usepackage{pdfpages}
\usepackage[numberedsection, nonumberlist]{glossaries}
\usepackage{gnuplot-lua-tikz}
\usepackage{chngcntr}
\usepackage[style]{abstract}
%
\usepackage[hidelinks]{hyperref}
%------------------------------
% Initialisierung
%------------------------------
\pdfminorversion=7
\counterwithin{figure}{section}
\counterwithin{table}{section}
%
\include{components/commands}
%
\counterwithin{equation}{section}
\counterwithin{algorithm}{section}
\setcounter{secnumdepth}{3}
\input{components/commands.tex}
\makeglossaries
\loadglsentries{data/glossary.tex}
\glsaddall
\begin{document}
%------------------------------
% Titel
%------------------------------
\pagenumbering{gobble}
\input{components/title}
\thispagestyle{empty}
\input{components/title.tex}
\emptypage
%------------------------------
% Einleitung & Referenzen
%------------------------------
\pagenumbering{roman}
\input{components/abstract.tex}
\tableofcontents
\clearpage
\listoffigures
\clearpage
\listoftables
% \clearpage
% \printglossaries
%------------------------------
% Inhalt
%------------------------------
\pagenumbering{arabic}
\input{components/preamble.tex}
\input{components/grundlagen.tex}
\input{components/problem.tex}
\input{components/quellen.tex}
\input{components/umsetzung.tex}
\input{components/bewertung.tex}
\input{components/gliederung.tex}
\input{components/zeitplan.tex}
\end{document}
\cleardoublepage
\input{components/1_Einführung/part.tex}
\input{components/2_Raytracing/part.tex}
\input{components/3_Rendergleichung/part.tex}
\input{components/4_Grundgerüst/part.tex}
\input{components/5_Strahlenbüschel/part.tex}
\input{components/6_Implementierung/part.tex}
\input{components/7_Auswertung/part.tex}
%------------------------------
% Anhänge
%------------------------------
\appendix
\input{components/X_Anhänge/part.tex}
\printglossaries[type=main, title={Glossar}]
\clearpage
\bibliographystyle{amsplain}
\bibliography{data/bibliography.bib}
\clearpage
\includepdf{data/statement_of_authorship.pdf}
\end{document}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% Common style file for TeX, LaTeX and ConTeXt
%%
%% It is associated with the 'gnuplot.lua' script, and usually generated
%% automatically. So take care whenever you make any changes!
%%
% check for the correct TikZ version
\def\gpchecktikzversion#1.#2\relax{%
\ifnum#1<2%
\errmessage{PGF/TikZ version >= 2.0 is required!}%
\fi}
\expandafter\gpchecktikzversion\pgfversion\relax
% FIXME: is there a more elegant way to determine the output format?
\def\pgfsysdriver@a{pgfsys-dvi.def} % ps
\def\pgfsysdriver@b{pgfsys-dvipdfm.def} % pdf
\def\pgfsysdriver@c{pgfsys-dvipdfmx.def} % pdf
\def\pgfsysdriver@d{pgfsys-dvips.def} % ps
\def\pgfsysdriver@e{pgfsys-pdftex.def} % pdf
\def\pgfsysdriver@f{pgfsys-tex4ht.def} % html
\def\pgfsysdriver@g{pgfsys-textures.def} % ps
\def\pgfsysdriver@h{pgfsys-vtex.def} % ps
\def\pgfsysdriver@i{pgfsys-xetex.def} % pdf
\newif\ifgppdfout\gppdfoutfalse
\newif\ifgppsout\gppsoutfalse
\ifx\pgfsysdriver\pgfsysdriver@a
\gppsouttrue
\else\ifx\pgfsysdriver\pgfsysdriver@b
\gppdfouttrue
\else\ifx\pgfsysdriver\pgfsysdriver@c
\gppdfouttrue
\else\ifx\pgfsysdriver\pgfsysdriver@d
\gppsouttrue
\else\ifx\pgfsysdriver\pgfsysdriver@e
\gppdfouttrue
\else\ifx\pgfsysdriver\pgfsysdriver@f
% tex4ht
\else\ifx\pgfsysdriver\pgfsysdriver@g
\gppsouttrue
\else\ifx\pgfsysdriver\pgfsysdriver@h
\gppsouttrue
\else\ifx\pgfsysdriver\pgfsysdriver@i
\gppdfouttrue
\fi\fi\fi\fi\fi\fi\fi\fi\fi
% uncomment the following lines to make font values "appendable"
% and if you are really sure about that ;-)
% \pgfkeyslet{/tikz/font/.@cmd}{\undefined}
% \tikzset{font/.initial={}}
% \def\tikz@textfont{\pgfkeysvalueof{/tikz/font}}
%
% image related stuff
%
\def\gp@rawimage@pdf#1#2#3#4#5#6{%
\def\gp@tempa{cmyk}%
\def\gp@tempb{#1}%
\ifx\gp@tempa\gp@tempb%
\def\gp@temp{/CMYK}%
\else%
\def\gp@temp{/RGB}%
\fi%
\pgf@sys@bp{#4}\pgfsysprotocol@literalbuffered{0 0}\pgf@sys@bp{#5}%
\pgfsysprotocol@literalbuffered{0 0 cm}%
\pgfsysprotocol@literalbuffered{BI /W #2 /H #3 /CS \gp@temp}%
\pgfsysprotocol@literalbuffered{/BPC 8 /F /AHx ID}%
\pgfsysprotocol@literal{#6 > EI}%
}
\def\gp@rawimage@ps#1#2#3#4#5#6{%
\def\gp@tempa{cmyk}%
\def\gp@tempb{#1}%
\ifx\gp@tempa\gp@tempb%
\def\gp@temp{4}%
\else%
\def\gp@temp{3}%
\fi%
\pgfsysprotocol@literalbuffered{0 0 translate}%
\pgf@sys@bp{#4}\pgf@sys@bp{#5}\pgfsysprotocol@literalbuffered{scale}%
\pgfsysprotocol@literalbuffered{#2 #3 8 [#2 0 0 -#3 0 #3]}%
\pgfsysprotocol@literalbuffered{currentfile /ASCIIHexDecode filter}%
\pgfsysprotocol@literalbuffered{false \gp@temp\space colorimage}%
\pgfsysprotocol@literal{#6 >}%
}
\def\gp@rawimage@html#1#2#3#4#5#6{%
% FIXME: print a warning message here
}
\ifgppdfout
\def\gp@rawimage{\gp@rawimage@pdf}
\else
\ifgppsout
\def\gp@rawimage{\gp@rawimage@ps}
\else
\def\gp@rawimage{\gp@rawimage@html}
\fi
\fi
\def\gploadimage#1#2#3#4#5{%
\pgftext[left,bottom,x=#1cm,y=#2cm] {\pgfimage[interpolate=false,width=#3cm,height=#4cm]{#5}};%
}
\def\gp@set@size#1{%
\def\gp@image@size{#1}%
}
\def\gp@rawimage@#1#2#3#4#5#6#7#8{
\tikz@scan@one@point\gp@set@size(#6,#7)\relax%
\tikz@scan@one@point\pgftransformshift(#2,#3)\relax%
\pgftext {%
\pgfsys@beginpurepicture%
\gp@image@size% fill \pgf@x and \pgf@y
\gp@rawimage{#1}{#4}{#5}{\pgf@x}{\pgf@y}{#8}%
\pgfsys@endpurepicture%
}%
}
%% \gprawimage{color model}{xcoord}{ycoord}{# of xpixel}{# of ypixel}{xsize}{ysize}{rgb/cmyk hex data RRGGBB/CCMMYYKK ...}{file name}
%% color model is 'cmyk' or 'rgb' (default)
\def\gprawimage#1#2#3#4#5#6#7#8#9{%
\ifx&#9&%
\gp@rawimage@{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}
\else
\ifgppsout
\gp@rawimage@{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}
\else
\gploadimage{#2}{#3}{#6}{#7}{#9}
\fi
\fi
}
%
% gnuplottex comapatibility
% (see http://www.ctan.org/tex-archive/help/Catalogue/entries/gnuplottex.html)
%
\def\gnuplottexextension@lua{\string tex}
\def\gnuplottexextension@tikz{\string tex}
%
% gnuplot variables getter and setter
%
\def\gpsetvar#1#2{%
\expandafter\xdef\csname gp@var@#1\endcsname{#2}
}
\def\gpgetvar#1{%
\csname gp@var@#1\endcsname %
}
%
% some wrapper code
%
% short for a filled path
\def\gpfill#1{\path[line width=0.1\gpbaselw,draw,fill,#1]}
% short for changing the line width
\def\gpsetlinewidth#1{\pgfsetlinewidth{#1\gpbaselw}}
% short for changing the line type
\def\gpsetlinetype#1{\tikzset{gp path/.style={#1,#1 add}}}
% short for changing the dash pattern
\def\gpsetdashtype#1{\tikzset{gp path/.append style={#1}}}
% short for changing the point size
\def\gpsetpointsize#1{\tikzset{gp point/.style={mark size=#1\gpbasems}}}
% wrapper for color settings
\def\gpcolor#1{\tikzset{global #1}}
\tikzset{rgb color/.code={\pgfutil@definecolor{.}{rgb}{#1}\tikzset{color=.}}}
\tikzset{global rgb color/.code={\pgfutil@definecolor{.}{rgb}{#1}\pgfutil@color{.}}}
\tikzset{global color/.code={\pgfutil@color{#1}}}
% prevent plot mark distortions due to changes in the PGF transformation matrix
% use `\gpscalepointstrue' and `\gpscalepointsfalse' for enabling and disabling
% point scaling
%
\newif\ifgpscalepoints
\tikzset{gp shift only/.style={%
\ifgpscalepoints\else shift only\fi%
}}
\def\gppoint#1#2{%
\path[solid] plot[only marks,gp point,mark options={gp shift only},#1] coordinates {#2};%
}
%
% char size calculation, that might be used with gnuplottex
%
% Example code (needs gnuplottex.sty):
%
% % calculate the char size when the "gnuplot" style is used
% \tikzset{gnuplot/.append style={execute at begin picture=\gpcalccharsize}}
%
% \tikzset{gnuplot/.append style={font=\ttfamily\footnotesize}}
%
% \begin{tikzpicture}[gnuplot]
% \begin{gnuplot}[terminal=lua,%
% terminaloptions={tikz solid nopic charsize \the\gphcharsize,\the\gpvcharsize}]
% test
% \end{gnuplot}
% \end{tikzpicture}
%
%%%
% The `\gpcalccharsize' command fills the lengths \gpvcharsize and \gphcharsize with
% the values of the current default font used within nodes and is meant to be called
% within a tikzpicture environment.
%
\newdimen\gpvcharsize
\newdimen\gphcharsize
\def\gpcalccharsize{%
\pgfinterruptboundingbox%
\pgfsys@begininvisible%
\node at (0,0) {%
\global\gphcharsize=1.05\fontcharwd\font`0%
\global\gpvcharsize=1.05\fontcharht\font`0%
\global\advance\gpvcharsize by 1.05\fontchardp\font`g%
};%
\pgfsys@endinvisible%
\endpgfinterruptboundingbox%
}
%
% define a rectangular node in tikz e.g. for the plot area
%
% #1 node name
% #2 coordinate of "south west"
% #3 coordinate of "north east"
%
\def\gpdefrectangularnode#1#2#3{%
\expandafter\gdef\csname pgf@sh@ns@#1\endcsname{rectangle}
\expandafter\gdef\csname pgf@sh@np@#1\endcsname{%
\def\southwest{#2}%
\def\northeast{#3}%
}
\pgfgettransform\pgf@temp%
% once it is defined, no more transformations will be applied, I hope
\expandafter\xdef\csname pgf@sh@nt@#1\endcsname{\pgf@temp}%
\expandafter\xdef\csname pgf@sh@pi@#1\endcsname{\pgfpictureid}%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
%% You may want to adapt the following to fit your needs (in your
%% individual style file and/or within your document).
%%
%
% style for every plot
%
\tikzset{gnuplot/.style={%
>=stealth',%
line cap=round,%
line join=round,%
}}
\tikzset{gp node left/.style={anchor=mid west,yshift=-.12ex}}
\tikzset{gp node center/.style={anchor=mid,yshift=-.12ex}}
\tikzset{gp node right/.style={anchor=mid east,yshift=-.12ex}}
% basic plot mark size (points)
\newdimen\gpbasems
\gpbasems=.4pt
% basic linewidth
\newdimen\gpbaselw
\gpbaselw=.4pt
% this is the default color for pattern backgrounds
\colorlet{gpbgfillcolor}{white}
% set background color and fill color
\def\gpsetbgcolor#1{%
\pgfutil@definecolor{gpbgfillcolor}{rgb}{#1}%
\tikzset{tight background,background rectangle/.style={fill=gpbgfillcolor},show background rectangle}%
}
% this should reverse the normal text node presets, for the
% later referencing as described below
\tikzset{gp refnode/.style={coordinate,yshift=.12ex}}
% to add an empty label with the referenceable name "my node"
% to the plot, just add the following line to your gnuplot
% file:
%
% set label "" at 1,1 font ",gp refnode,name=my node"
%
% enlargement of the bounding box in standalone mode (only used by LaTeX/ConTeXt)
\def\gpbboxborder{0mm}