% arara: pdflatex: { synctex: yes }
% arara: makeindex: { style: ctuthesis }
% arara: bibtex

% The class takes all the key=value arguments that \ctusetup does,
% and a couple more: draft and oneside
\documentclass[twoside]{ctuthesis}

\ctusetup{
	preprint = \ctuverlog,
%	mainlanguage = english,
%	titlelanguage = czech,
	mainlanguage = czech,
	otherlanguages = {slovak,english},
	title-czech = {Sledování paprsku v reálném čase v Unity},
	title-english = {Real-Time Ray Tracing in Unity},
	doctype = B,
	faculty = F3,
	department-czech = {Katedra počítačové grafiky a interakce},
	author = {Bohumil Bednář},
	supervisor = {doc. Ing. Jiří Bittner, Ph.D.},
	fieldofstudy-czech = {Počítačové hry a grafika},
	subfieldofstudy-czech = {Otevřená informatika},
	keywords-czech = {Počítačová grafika, Sledování parsku, Unity},
	keywords-english = {Computer Graphics, Ray Tracing, Unity},
	day = 14,
	month = 8,
	year = 2020,
	specification-file = {ctutest-zadani.pdf},
%	front-specification = true,
%	front-list-of-figures = false,
%	front-list-of-tables = false,
%	monochrome = true,
%	layout-short = true,
}

\ctuprocess

\addto\ctucaptionsczech{%
	\def\supervisorname{Vedoucí}%
	\def\subfieldofstudyname{Studijní program}%
}

\ctutemplateset{maketitle twocolumn default}{
	\begin{twocolumnfrontmatterpage}
		\ctutemplate{twocolumn.thanks}
		\ctutemplate{twocolumn.declaration}
		\ctutemplate{twocolumn.abstract.in.titlelanguage}
		\ctutemplate{twocolumn.abstract.in.secondlanguage}
		\ctutemplate{twocolumn.tableofcontents}
		\ctutemplate{twocolumn.listoffigures}
	\end{twocolumnfrontmatterpage}
}

% Theorem declarations, this is the reasonable default, anybody can do what they wish.
% If you prefer theorems in italics rather than slanted, use \theoremstyle{plainit}
\theoremstyle{plain}
\newtheorem{theorem}{Theorem}[chapter]
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{lemma}[theorem]{Lemma}
\newtheorem{proposition}[theorem]{Proposition}

\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\newtheorem{example}[theorem]{Example}
\newtheorem{conjecture}[theorem]{Conjecture}

\theoremstyle{note}
\newtheorem*{remark*}{Remark}
\newtheorem{remark}[theorem]{Remark}

\setlength{\parskip}{5ex plus 0.2ex minus 0.2ex}

% Abstract in Czech
\begin{abstract-czech}
Práce se zabývá zmapováním možností sledování paprsku v reálném čase v Unity a chováním této funkce v herním nasazení.

\end{abstract-czech}

% Abstract in English
\begin{abstract-english}
Thesis explores possibilites of real-time ray tracing in Unity and its application in computer games.


\end{abstract-english}

% Acknowledgements / Podekovani
\begin{thanks}
Děkuji docentu Bittnerovi, za poskytování konzultací po dobu tvorby této bakalářské práce.
\end{thanks}

% Declaration / Prohlaseni
\begin{declaration}
Prohlašuji, že jsem předloženou práci vypracoval samostatně, a že jsem uvedl veškerou použitou literaturu.

V Praze, \ctufield{day}.~\monthinlanguage{title}~\ctufield{year}
\end{declaration}

% Only for testing purposes
\listfiles
\usepackage[pagewise]{lineno}
\usepackage{lipsum,blindtext}
\usepackage{mathrsfs} % provides \mathscr used in the ridiculous examples
\usepackage{graphicx}
\graphicspath{ {./images/}}
\usepackage{subcaption}

\begin{document}

\maketitle

\chapter{Úvod}
Sledování paprsku v reálném čase neboli real-time ray tracing je v Unity stále relativně nová sada funkcí a tato sada funkcí je v současnosti v Unity dostupná ve formě předbežný přístup.
Tato sada funkcí byla přidána do Unity v roce 2019 ve verzi 2019.3. Tato práce se zabývá otestováním této sady funkcí z hlediska grafické kvality a výkonu. Testy jsou prováděny jak na scénách snažících se přiblížit realitě tak na jednoduchý scénách sloužících k otestování konkrétní funkcionality.

\chapter{Terminologie}
Termín sledování paprsku v reálném čase je v práci používán i v anglické verzi real-time ray tracing, případně je použita zkratka RTRT. Názvy položek v menu, nastavení, a dalších prvků Unity editoru jsou ponechány v anglickém jazyce, taktéž jsou v případě některých odborných termínů použity anglické názvy.

\part{RTRT a Unity}

\chapter{RTRT}
Ray casting je proces hledání objektu(většinou nejbližšího) v cestě paprsku. Paprsky je vyslán z pixelu kamery a cestuje dokud nenarazí do nejbližšího objektu v cestě. Z bodu dopadu paprsku muže být vyslán nový paprsek směrem ke zdroji světla, aby se zjistilo zda je tento bod zastíněn.
Ray tracing využívá mechanismus ray castingu tak, že rekurzivně skládá příspěvky světla z reflektivních a refraktivních objektů. Například pokud paprsek narazí do zrcadla z bodu dopadu je vržen paprsek odrazu ve směru odrazu, místo dopadu tohoto paprsku ovlivní jak bude zrcadlo nakonec vykresleno. Průhledné objekty naopak vysílají parsek refrakce, přičemž některé objekty mohou vyslat z jednoho místa dopadu oba typy paprsků současně. Tento proces probíhá rekurzivně a většinou je omezen limitem počtu odrazů. Tímto vznikne strom paprsků, který je pak od listů ke kořeni vyhodnocen, aby byla získána výsledná barva. V případě, že je vykreslováno zastínění jsou také vrhány paprsky směrem ke zdrojům světla.
Mnoho metod ray tracingu používá z důvodu snížení výpočetní náročnosti zjednodušení vlastností objektů. Například klasický ray tracing pracuje tak, že ignoruje hrubost a lesklost povrchu objektu, místo toho je povrch objektu brán jako  zcela lesklý a hladký, zároveň jsou zdroje světla zjednodušeny na reprezentaci pomocí směru nebo jednoho bodu.
Ray tracing obecně nemusí být vypočítáván v reálném čase, ale osvětlení scény může být dopředu před-počítáno a výsledek ray tracingu v ní může být obsažen. Při běhu je pak používána jednodušší metoda osvětlování.
V případě real-time ray tracingu je osvětlení pomocí ray tracingu vypočítáváno za běhu scény.\cite{cite:1}

\chapter{RTRT v Unity}
pozn.Tato kapitola je parafrází části dokumentace HDRP 7.3 týkající se sledování paprsku. \cite{cite:2}
\section{Hardwarové požadavky}
Unity RTRT beží pouze na novějších grafických kartách značky NVIDIA, přičemž pouze nejnovější generace grafických karet poskytuje hardwarovou akceleraci RTRT.
Hardwarová akcelerace sledování paprsku je k dispozici na následujících GPU:
\begin{itemize}
	\item • NVIDIA GeForce RTX 2060, RTX 2080 Super, RTX 2070, RTX 2070 Super, RTX 2080, RTX 2080 Super, RTX 2080 Ti NVIDIA TITAN RTX
	\item • NVIDIA Quadro RTX 3000 (pouze pro notebook), RTX 4000, RTX 5000, RTX 6000, RTX 8000
\end{itemize}

NVIDIA také poskytuje ray tracing fallback pro některé grafické karty předchozí generace:
\begin{itemize}
	\item NVIDIA GeForce GTX
	\item Turingova generace: GTX 1650, GTX 1660 Super, GTX 1660 Ti
	\item Pascal generace: GTX 1060, GTX 1070, GTX 1080, GTX 1080 Ti
	\item NVIDIA TITAN V
	\item NVIDIA Quadro: P4000, P5000, P6000, V100
\end{itemize}

Použití grafické karty bez hardwarové akcelerace má však zásadní dopad na rychlost vykreslování.

\section{Softwarové požadavky}
Unity real-time ray vyžaduje ke svému běhu DirectX12, z tohoto důvodu beží v současnosti pouze naoperačním systému Windows s nainstalovaným DirectX12.
Pro použití Unity Real-Time Ray Tracing je nutné použít Unity verze 2019.3 nebo novější a zároveň musí být použit HDRP projekt, přičemž použitá verze HDRP musí být alespoň HDRP 7.1.

\section{HDRP}
HDRP(High definition render pipeline) je vykreslující pipeline sloužíci k vytváření projektů ve vyšší grafické kvalitě než vestavěný vykreslovací pipeline Unity. Nejzásadnějším rozdílem mezi HDRP a vestavěným vykreslovacím pipeline je, že HDRP využívá jinak definované materiály a jinou sadu shaderů.

\section{Základní nastavení}
Před použitím funkcí sledování paprsku v projektu HDRP je nutné nastavit projekt HDRP pro podporu sledování paprsků. HDRP podporuje sledování paprsku pouze pomocí rozhraní DirectX 12 API, takže sledování paprsku funguje pouze v editoru Unity Editor nebo Windows Unity Player, když se vykreslují s DirectX 12. Je třeba změnit výchozí grafické API projektu HDRP z DirectX 11 na DirectX 12 .

Existují dva způsoby, jak toho dosáhnout:
\begin{itemize}
	\item Použitím Průvodce Render Pipeline
	\item Ručním nastavením
\end{itemize}


Průvodce Render Pipeline umožňuje provézt základní nastavení sledování paprsku v HDRP projektu velmi jednoduchím způsobem.
\begin{enumerate}
	\item Průvodce Render Pipeline je možné otevřít v Window > Render Pipeline vybráním HD Render Pipeline Wizard.
	\item Následně je nutné vybrat záložku HDRP + DXR.
	\item Pak už jen stačí kliknout na tlačítko Fix All
\end{enumerate}

Následně je ještě nutné správně nastavit kamery. Toho lze dosáhnout buď změnou výchozího nastavení kamer nebo změnou nastavení konkrétní kamery.

Výchozí nastavení lze změnit následujícím způsobem:
\begin{enumerate}
	\item Otevřením okna Project Settings v menu: Edit > Project Settings a následně vybráním záložky HDRP Default Settings.
	\item Následně je nutné vybrat v rozbalovácí nabídce Camera, poté rozbalit sekci Rendering a následně je v sekci potřeba zapnout Ray Tracing.
\end{enumerate}



Nastavení Ray Tracing pro specifickou kameru:
\begin{enumerate}
	\item Nejprve je nutné vybrat konkrétní kameru ve scéně.
	\item Následně je v sekci General, nutné povolit Custom Frame Settings.
	\item Tímto je umožněno v sekci Rendering section, povolení Ray Tracingu pro tuto konkrétní kameru.
\end{enumerate}



\section{Ray-Traced Ambient Occlusion}

Ray-Traced Ambient Occlusion je jedna z funkcí Ray Tracing obsažená v HDRP. Jedná se o alternativu k funkci HDRP screen space ambient occlusion, oproti které je přesnější, protože může používat data mimo obrazovku.
Tato funkce aproximuje tlumení ambientního osvětlení zastíněním.

Protože je tato funkce alternativou k screen space Ambient Occlusion Volume Override, je její počáteční nastavení velmi podobné.
\begin{enumerate}
	\item Nejprve je nutné povolit screen space ambient occlusion v HDRP Assetu.
	\item Následně je ve Frame Settings kamer nutné povolit Screen Space Ambient Occlusion a ray tracing.
	\item Ještě je nutné přidat efekt do Volume ve scéně.
\end{enumerate}

HDRP Asset řídí, jaké funkce jsou k dispozici v HDRP projektu. Pro aktivaci podpory HDRP a přidělení paměti pro ray-traced ambient occlusion je nutné:
\begin{enumerate}
	\item Vybrat HDRP Asset v projektu.
	\item  V sekci Lighting povolit Screen Space Ambient Occlusion.
\end{enumerate}

Kamery používají Frame Settings k rozhodnutí, jak vykreslit scénu. Je možné nastavit, aby byla funkce ray-traced ambient occlusion ve výchozím nastavení kamer zapnutá:
\begin{enumerate}
	\item Nejprve je nutné otevřít okno Project Settings v menu: Edit > Project Settings a následně vybrat záložku HDRP Default Settings.
	\item Následně je nutné vybrat v rozbalovácí nabídce Camera, poté rozbalit sekci Rendering a následně je v sekci potřeba zapnout Ray Tracing.
	\item Nakonec je v sekci potřeba Lighting potřeba zapnout Screen Space Ambient Occlusion.
\end{enumerate}

Funkci ray-traced ambient occlusion je možné povolit i pro jednotlivou kameru:
\begin{enumerate}
	\item Nejprve je nutné vybrat konkrétní kameru ve scéně.
	\item Následně je v sekci General, nutné povolit Custom Frame Settings. 
	\item Potom je v sekci Rendering nutné povolit ray tracing a v sekci Lighting povolit Screen Space Ambient Occlusion.
\end{enumerate}

Ray-Traced Ambient Occlusion používá Volume framework, takže pro aktivaci této funkce a úpravu jejích vlastností je třeba přidat Ambience Occlusion override do Volume ve sceně. Postup:
\begin{enumerate}
	\item Nejprve je nutné vybrat ve scéně objekt obsahující Volume
	\item Následně je nutné přidat override Add Override > Lighting a kliknout na Ambient Occlusion. HDRP nyní bude aplikovat screen space ambient occlusion na jakoukoli kameru, na kterou má tento Volume vliv.
	\item V Inspektoru pro Ambient Occlusion Volume Override je ještě nutné povolit ray tracing.
\end{enumerate}

Vlastnosti ovlivňující chování Ray-Traced Ambient Occlusion
\begin{itemize}
	\item Ray Tracing - Umožňuje HDRP používat ray tracing k vyhodnocování efektu ambient occlusion.
	\item Intensity - Řídí intinzitu efektu ambient occlusion.
	\item Direct Lighting Strength - Určuje, do jaké míry ambient occlusion ovlivňuje přímé osvětlení.
	\item LayerMask - Definuje vrstvy, pro které HDRP zpracovává tento efekt.
	\item Ray Length - Řídí délku paprsků, které HDRP používá pro ray tracing. Určuje z jaké vzdálenosti jsou data pro tento efekt sbírána.
	\item Sample Count - Řídí počet paprsků, které HDRP používá na pixel a snímek. Zvýšení této hodnoty lineárně zvyšuje dobu běhu.
	\item Denoise - Povoluje filtr, který HDRP používá k odstranění šumu z ambient occlusion.
	\item Denoiser Radius - Řídí poloměr filtru. Vyšší hodnota více snižuje šum.
\end{itemize}

\section{Ray-Traced Contact Shadows}

Ray-Traced Contact Shadows je jedna z funkcí Ray Tracing obsažená v HDRP. Jedná se o alternativu k funkci HDRP Contact Shadow, oproti které je přesnější, protože může používat data mimo obrazovku.
Tato funkce umožňuje vykreslovat drobné detaily stínů.

Protože je tato funkce alternativou k contact shadows Volume Override, je její počáteční nastavení velmi podobné.
\begin{enumerate}
	\item Nejprve je nutné povolit contact shadows v HDRP Assetu.
	\item Následně je nutné povolit contact shadows pro kamery.
	\item Ještě je nutné přidat efekt do Volume ve scéně.
\end{enumerate}

HDRP Asset řídí, jaké funkce jsou k dispozici v HDRP projektu. Pro aktivaci podpory HDRP a přidělení paměti pro contact shadows je nutné:
\begin{enumerate}
	\item Vybrat HDRP Asset v projektu.
	\item  V sekci Lighting > Shadows povolit Contact Shadows.
\end{enumerate}

Kamery používají Frame Settings k rozhodnutí, jak vykreslit scénu. Je možné nastavit, aby byla funkce ray-traced contact shadows ve výchozím nastavení kamer zapnutá:
\begin{enumerate}
	\item Nejprve je nutné otevřít okno Project Settings v menu: Edit > Project Settings a následně vybrat záložku HDRP Default Settings.
	\item Následně je nutné vybrat v rozbalovácí nabídce Camera, poté rozbalit sekci Lighting a následně je v sekci potřeba zapnout Contact Shadows.
\end{enumerate}

Funkci ray-traced contact shadows je možné povolit i pro jednotlivou kameru:
\begin{enumerate}
	\item Nejprve je nutné vybrat konkrétní kameru ve scéně.
	\item Potom je v sekci Lighting nutné povolit Contact Shadows.
\end{enumerate}

Ray-Traced Contact Shadows používá Volume framework, takže pro aktivaci této funkce a úpravu jejích vlastností je třeba přidat Contact Shadows override do Volume ve sceně. Postup:
\begin{enumerate}
	\item Nejprve je nutné vybrat ve scéně objekt obsahující Volume
	\item Následně je nutné přidat override Add Override > Lighting a kliknout na Contact Shadows. HDRP nyní bude aplikovat funkci Contact Shadows na jakoukoli kameru, na kterou má tento Volume vliv.
	\item V Inspektoru pro Ambient Occlusion Volume Override je ještě nutné povolit ray tracing.
\end{enumerate}

Chcete-li, aby HDRP počítal a používal Ray-Traced Contact Shadows, musíte je povolit pro Light.
\begin{enumerate}
	\item Nejprve je nutné vybrat ve scéně objekt obsahující světlo.
	\item Ve vlastnostech světla Shadows > Contact Shadows je potřeba zaškrtnout políčko Enable. To zobrazí vlastnost Ray Tracing. 
	\item Zbýva jen zaškrtnout políčko Ray Tracing.
\end{enumerate}

\section{Ray-Traced Global Illumination}
Ray-Traced Global Illumination je jedna z funkcí Ray Tracing obsažená v HDRP. Jedná se o přesnější alternativu k použití Light Probes a Light Maps.
Tato funkce počítá globální osvětlení pomocí metody ray tracing.

Kamery používají Frame Settings k rozhodnutí, jak vykreslit scénu. Je možné nastavit, aby byla funkce ray-traced global illumination ve výchozím nastavení kamer zapnutá:
\begin{enumerate}
	\item Nejprve je nutné otevřít okno Project Settings v menu: Edit > Project Settings a následně vybrat záložku HDRP Default Settings.
	\item Následně je nutné vybrat v rozbalovácí nabídce Camera, poté rozbalit sekci Rendering a následně je v sekci potřeba zapnout Ray Tracing.
\end{enumerate}

Funkci ray-traced global illumination je možné povolit i pro jednotlivou kameru:
\begin{enumerate}
	\item Nejprve je nutné vybrat konkrétní kameru ve scéně.
	\item Následně je v sekci General, nutné povolit Custom Frame Settings. 
	\item Potom je v sekci Rendering nutné povolit ray tracing.
\end{enumerate}

Ray-Traced Global Illumination používá Volume framework, takže pro aktivaci této funkce a úpravu jejích vlastností je třeba přidat Global Illumination override do Volume ve sceně. Postup:
\begin{enumerate}
	\item Nejprve je nutné vybrat ve scéně objekt obsahující Volume
	\item Následně je nutné přidat override Add Override > Lighting a kliknout Global Illumination. 
	\item V Inspektoru pro Global Illumination Volume Override je ještě nutné povolit ray tracing. HDRP nyní bude aplikovat global illumination na jakoukoli kameru, na kterou má tento Volume vliv.
\end{enumerate}

Vlastnosti ovlivňující chování Ray-Traced Global Illumination
\begin{itemize}
	\item Ray Tracing - Umožňuje HDRP používat ray tracing k vyhodnocování funkce .
	\item LayerMask - Definuje vrstvy, pro které HDRP zpracovává tento efekt.
	\item Ray Length - Řídí délku paprsků, které HDRP používá pro ray tracing. Pokud paprsek neprotne objekt, vrátí barvu oblohy.
	\item Clamp Value - Nastavte hodnotu pro ovládání prahu, který HDRP používá k připnutí předem exponované hodnoty. To snižuje rozsah hodnot a činí global illumination stabilnější při odstranění šumu, ale snižuje kvalitu.
	\item Denoise - Povoluje filtr, který HDRP používá k odstranění šumu z global illumination.
	\item Denoiser Radius - Vyšší hodnota více snižuje šum.
	\item Second Denoiser Pass - Povoluje druhý průchod odstraňovače šumu.
	\item Second Denoiser Radius -  Řídí poloměr filtru pro druhý průchod odstraňovače šumu.
	\item Upscale Radius - Řídí poloměr up-scaleru, který HDRP používá k vytváření Global Illumination. Čím větší je poloměr, tím více sousedících objektů HDRP používá k vytváření Global Illumination. Vyšší hodnota zvyšuje kvalitu.
	\item Full Resolution - Povolení této funkce zvýšuje počet paprsků na jeden paprsek na pixel a snímek. Pokud není zapnutá počet paprsků je jeden paprsek na čtyři pixely a snímek.
	\item Sample Count - Řídí počet paprsků, které HDRP používá na pixel a snímek. Zvýšení této hodnoty lineárně zvyšuje dobu běhu.
	\item Bounce Count - Řídí maximální počet odrazů, kterého mohou paprsky Global Illumination dosáhnout. Zvýšení této hodnoty exponenciálně zvyšuje dobu provádění.
\end{itemize}

\section{Ray-Traced Reflections}
Ray-Traced Reflections je jedna z funkcí Ray Tracing obsažená v HDRP. Jedná se o alternativu k funkci HDRP Screen Space Reflection, oproti které je přesnější, protože může používat data mimo obrazovku.
Tato funkce počítá odrazy.

Protože je tato funkce alternativou k Screen Space Reflection Volume Override, je její počáteční nastavení velmi podobné.
\begin{enumerate}
	\item Nejprve je nutné povolit screen space reflection v HDRP Assetu.
	\item Následně je nutné povolit screen space reflection pro kamery.
	\item Ještě je nutné přidat efekt do Volume ve scéně.
\end{enumerate}

HDRP Asset řídí, jaké funkce jsou k dispozici v HDRP projektu. Pro aktivaci podpory HDRP a přidělení paměti pro Ray-Traced Reflections je nutné:
\begin{enumerate}
	\item Vybrat HDRP Asset v projektu.
	\item  V sekci Lighting povolit Screen Space Reflection.
\end{enumerate}

Kamery používají Frame Settings k rozhodnutí, jak vykreslit scénu. Je možné nastavit, aby byla funkce ray-traced contact reflection ve výchozím nastavení kamer zapnutá:
\begin{enumerate}
	\item Nejprve je nutné otevřít okno Project Settings v menu: Edit > Project Settings a následně vybrat záložku HDRP Default Settings.
	\item Následně je nutné vybrat v rozbalovácí nabídce Camera, poté rozbalit sekci Lighting a následně je v sekci potřeba zapnout Screen Space Reflection.
	\item Potom je v sekci Rendering nutné povolit ray tracing.
\end{enumerate}

Funkci ray-traced reflections je možné povolit i pro jednotlivou kameru:
\begin{enumerate}
	\item Nejprve je nutné vybrat konkrétní kameru ve scéně.
	\item Potom je v sekci Lighting nutné povolit Screen Space Reflection a v sekci Rendering povolit Ray Tracing.
\end{enumerate}

Ray-Traced Reflections používá Volume framework, takže pro aktivaci této funkce a úpravu jejích vlastností je třeba přidat Screen Space Reflection override do Volume ve sceně. Postup:
\begin{enumerate}
	\item Nejprve je nutné vybrat ve scéně objekt obsahující Volume
	\item Následně je nutné přidat override Add Override > Lighting a kliknout na Screen Space Reflection.
	\item V Inspektoru pro Screen Space Reflection Override je ještě nutné povolit ray tracing. HDRP nyní bude aplikovat funkci Ray-Traced Reflections na jakoukoli kameru, na kterou má tento Volume vliv.
\end{enumerate}

Ray-Traced Reflections používá Volume framework, takže pro aktivaci této funkce a úpravu jejích vlastností je třeba přidat n override k Volume ve vaší Scene. Postup:
\begin{enumerate}
	\item The labels consists of sequential numbers.
	\item The numbers starts at 1 with every call to the enumerate environment.
\end{enumerate}

Vlastnosti ovlivňující chování Ray-Traced Reflections
\begin{itemize}
	\item Ray Tracing - Umožňuje HDRP používat ray tracing k vyhodnocování funkce.
	\item Minimum Smoothness - Řídí minimální hodnotu smoothness pro pixel, ve kterém HDRP zpracovává ray-traced reflections.
	\item Smoothness Fade Start - Určuje hodnotu smoothness od které se začíná odraz ztrácet.
	\item Reflect Sky - Povolení určuje HDRP, že by má používat oblohu jako fall-back pro ray-traced reflections, když paprsek nenalezne průnik.
	\item LayerMask - Definuje vrstvy, pro které HDRP zpracovává tento efekt.
	\item Ray Length - Řídí délku paprsků, které HDRP používá pro ray tracing. Pokud paprsek neprotne objekt, vrátí barvu oblohy nobe černou barvu pokud je zákázána Reflect Sky.
	\item Clamp Value - Nastavte hodnotu pro ovládání prahu, který HDRP používá k připnutí předem exponované hodnoty. To snižuje rozsah hodnot a činí odrazy stabilnější při odstranění šumu, ale snižuje kvalitu.
	\item Denoise - Povoluje filtr, který HDRP používá k odstranění šumu z global illumination.
	\item Denoiser Radius - Vyšší hodnota více snižuje šum.
	\item Upscale Radius - Řídí poloměr up-scaleru, který HDRP používá k vytváření Global Illumination. Čím větší je poloměr, tím více sousedících objektů HDRP používá k vytváření odrazů. Vyšší hodnota zvyšuje kvalitu.
	\item Full Resolution - Povolení této funkce zvýšuje počet paprsků na jeden paprsek na pixel a snímek. Pokud není zapnutá počet paprsků je jeden paprsek na čtyři pixely a snímek.
	\item Sample Count - Řídí počet paprsků, které HDRP používá na pixel a snímek. Zvýšení této hodnoty lineárně zvyšuje dobu běhu.
	\item Bounce Count - Řídí maximální počet odrazů, kterého mohou paprsky odrazů dosáhnout. Zvýšení této hodnoty exponenciálně zvyšuje dobu provádění.
\end{itemize}


\section{Ray-traced shadows}
Ray-traced shadows jsou stíny, které HDRP generuje sledováním paprsků světla z následujících světelných zdrojů:
\begin{itemize}
	\item Directional 
	\item Point
	\item Spot
	\item Rectangle
\end{itemize}

Povolení Ray-traced shadows nahradí mapy stínů pro neprůhledné objekty.
Všechny Ray-traced shadows jsou screen space shadows. To znamená, že je HDRP ukládá do screen space bufferu, který obsahuje informace pro každý pixel na obrazovce, který je v depth buffer (ten ukládá pouze neprůhledné objekty).
Funkci Ray-traced shadows je také nutné povolit v HDRP assetu a pro kamery. Způsob je obdobný jako u předchozích efektů.
Tato funkce také vyžaduje úpravu mapy stínů.

Směrové světlo
Ray-traced shadows nabízejí alternativu ke cascade shadow map, kterou Directional Lights používají pro neprůhledné GameObjects.

Ray-traced shadows umožňují průhledným a propustným GameObjects, osvětleným Directional Lights, aby vrhaly barevné stíny.

Vlastnosti ovlivňující Ray-traced shadows pro Directional Lights
Vlastnost
Popis
Sun Angle
Nastavuje velikost Slunce na obloze ve stupních. Například hodnota pro Slunce na Zemi je 0,53 °.
Sample Count
Řídí počet paprsků, které HDRP používá na pixel a snímek. Vyšší hodnoty vytvářejí přesnější stíny. Zvýšení této hodnoty lineárně zvyšuje dobu provádění.
Color Shadow
Umožňuje průhledným a propustným GameObjects vrhat barevné stíny.
Denoise
Umožňuje časoprostorovému filtru, který HDRP používá k odstranění šumu ze stínů sledovaných paprskem, aby byly hladší.
- Denoiser Radius
Řídí poloměr časoprostorového filtru.

Point And Spot Light
Stíny sledované paprskem nabízejí alternativu ke stínové mapě, kterou Point and Spot Lights používají pro neprůhledné GameObjects. HDRP stále hodnotí osvětlení Point Light jako přicházející z jednoho bodu v prostoru (světlo je přesné), ale hodnotí stínování, jako by světlo přicházelo z povrchu koule. Na druhé straně HDRP vyhodnocuje osvětlení Spot Light jako přicházející z jednoho bodu v prostoru, ale hodnotí stínování, jako by světlo přicházelo z povrchu kužele.

Ray-traced stíny nabízejí možnost poloprůhledných stínů pro Point Lights vrhaných průhlednými a propustnými GameObjects.

Vlastnosti ovlivňující Ray-traced shadows pro Point Lights
\begin{itemize}
	\item Sample Count - Řídí počet paprsků, které HDRP používá na pixel a snímek. Nízký počet vzorků vytváří zašumněnější obraz, který vyžaduje více denoisingu. Zvýšení této hodnoty lineárně zvyšuje dobu provádění.
	\item Semi-Transparent Shadow - Umožňuje průhledným a propustným GameObjects vrhat poloprůhledné stíny.
	\item Radius - Nastavuje sférický poloměr světla, které HDRP používá k vyhodnocení stínů. Tím se zvětšuje velikost povrchu, který emituje světlo.
	\item Denoise - Povoluje filtr, který HDRP používá k odstranění šumu ze stínů.
	\item Denoiser Radius - Řídí poloměr filtru.
\end{itemize}


Rectangle light
Stíny sledované paprskem nabízejí alternativu k exponential variance shadow map, kterou obdélníková světla používají pro neprůhledné GameObjects.

Vlastnosti ovlivňující Ray-traced shadows pro Rectangle Lights
\begin{itemize}
	\item Sample Count - Řídí počet paprsků, které HDRP používá na pixel a snímek. Zvýšení těchto hodnot lineárně zvyšuje dobu provádění.
	\item Denoise - Povoluje filtr, který HDRP používá k odstranění šumu ze stínů.
	\item Denoiser Radius - Řídí poloměr filtru.
\end{itemize}


\section{Light Cluster}
Chcete-li vypočítat odrazy světla pro efekty sledované paprskem, jako jsou odrazy, globální osvětlení, rekurzivní vykreslování nebo sledování cesty. HDRP používá strukturu k uložení sady světel, které ovlivňují každou oblast. Při rastrování HDRP používá strukturu dlaždic pro neprůhledné objekty a strukturu clusterů pro průhledné objekty. Hlavní rozdíl mezi těmito dvěma strukturami a strukturami používanými pro sledování paprsku spočívá v tom, že tato struktura není založena na zorném poli kamery (frustum). Pro sledování paprsků vytváří HDRP mřížku zarovnanou s osami, která v každé buňce ukládá seznam světel, který se má načíst, pokud v této buňce dojde k průniku. Pomocí tohoto Volume Override můžete změnit, jak HDRP vytváří tuto strukturu.

Funkci Light Cluster je také nutné povolit v HDRP assetu. Způsob je obdobný jako u předchozích funkcí.

Vlastnosti ovlivňující chování funkce Light Cluster
\begin{itemize}
	\item Maximum Lights Per Cell - Nastavuje maximální počet světel, které může jednotlivá buňka uložit.
	\item Camera Cluster Range - Nastavuje rozsah mřížky clusteru. Samotná klastrová mřížka má střed v poloze kamery a rozprostírá se ve všech směrech, protože mimo zorného pole kamery (frustum) se může objevit průnik.
\end{itemize}



\section{Path tracing}
Sledování cesty je algoritmus sledování paprsku, který vysílá paprsky z kamery, a když paprsek dopadne na reflektivní nebo refraktivní povrch, proces se opakuje, dokud nedosáhne světelného zdroje. Série paprsků od kamery ke světlu tvoří „cestu“.
Umožňuje HDRP vypočítat mnoho různých efektů (jako jsou tvrdé nebo měkké stíny, zrcadlové nebo lesklé odrazy, refrakce a nepřímé osvětlení) v jediném jednotném procesu.
Pozoruhodnou nevýhodou trasování cest je šum. Šum však zmizí, jak se hromadí více cest, a nakonec konverguje k čistému obrazu.

Současná implementace sledování cesty v  HDRP hromadí cesty pro každý pixel až do maximálního počtu, pokud se kamera nepohybuje. Pokud se kamera pohybuje, HDRP restartuje akumulaci cest. Sledování cesty podporuje Lit, LayeredLit a Unlit materiály a plošná, bodová, směrová a ambientní světla.

Sledování cesty sdílí obecné požadavky a nastavení jako ostatní funkce ray tracingu.
Sledování cesty používá Volume framework, takže pro použití této funkce je nutné přidat Path Tracing override do Volume ve scéně. Toto se provádí obdobným způsobem jako u předchozích funkcí.

Vlastnosti ovlivňující chování funkce Path tracing
\begin{itemize}
	\item Maximum Samples - Nastavuje počet snímků, které se mají akumulovat pro konečný obrázek. Ve spodní části zobrazení scény je ukazatel průběhu, který ukazuje aktuální akumulaci vzhledem k této hodnotě.
	\item Minimum Depth - Nastavuje minimální počet odrazů světla v každé cestě.
	\item Maximum Depth - Nastavuje maximální počet odrazů světla v každé cestě. Je vždy vyšší nebo roven Minimum Depth. Pokud je Minimum a Maximum Depth 2, je vizalizováno pouze nepřímé osvětlení
	\item Maximum Intensity - Nastavuje zafixuje hodnotu intenzity světla, pro kterou se každý odraz intenzity vrací. Umožňuje ignorovat velmi jasné izolované pixely. Ztmavuje výsledný obraz.
\end{itemize}

\section{Recursive rendering}
Tato funkce je replacement pipeline pro vykreslování sítí v HDRP (High Definition Render Pipeline). GameObjects, které používají tento režim vykreslování, vrhají refrakční a odrazové paprsky rekurzivně. To znamená, že když paprsek zasáhne povrch, odrazí se nebo se lomí a pokračuje v zasažení dalších povrchů. Můžete určit, kolikrát to paprsek udělá, aby vyhovoval vašemu projektu.
Hladkost materiálu neovlivňuje způsob, jakým se paprsek odráží nebo láme, což činí tento režim vykreslování užitečným pro vykreslování vícevrstvých průhledných GameObjects.

Recursive rendering cesty používá Volume framework, takže pro použití této funkce je nutné přidat Recursive rendering override do Volume ve scéně. Toto se provádí obdobným způsobem jako u předchozích funkcí.

Recursive rendering je nutné zapnout pro konkrétní objekty.
\begin{enumerate}
	\item Vyberte objekt ve scéně pro zobrazení v Inspectoru.
	\item Vyberte Material přiřazený ke objektu.
	\item Ve Surface Options foldout vyberte Raytracing z Rendering Pass drop-down.
\end{enumerate}

Můžete to také provést pro hlavní uzly Shader Graph:
\begin{enumerate}
	\item V Project window proveďte double-click na Shader pro otevření v Shader Graph. 
	\item V hlavním uzlu klepněte na ozubené kolečko a poté v rozevíracím seznamu Rendering Pass vyberte Raytracing. 
\end{enumerate}

Vlastnosti ovlivňující chování funkce Recursive rendering
\begin{itemize}
	\item LayerMask - Definuje vrstvy, pro které HDRP zpracovává tento efekt.
	\item Max Depth - Řídí maximální počet odrazů nebo lomů paprsku před tím, než se zastaví a vrací konečnou barvu. Zvýšení této hodnoty exponenciálně zvyšuje dobu provádění.
	\item Ray Length - Řídí délku paprsků, které HDRP používá pro sledování paprsků. Pokud paprsek nenalezne průnik, vrátí barvu oblohy.
\end{itemize}


\part{Testovací aplikace a prostředí}

\chapter{O aplikaci}
Aplikace se skládá z hlavního menu a x testovacích scén, které jsou zaměřeny na různé aspekty chování RTRT v Unity. Aplikace je postavená na HDRP verze 7.3.1. Aplikace byla původně vytvářena v Unity 2019.3, ale později bylo z důvodu vydání verze 2019.4, která není narozdíl od 2019.3 beta verzí, ale jedná se o verzi s dlouhodobou podporou. RTRT obsažený ve verzích 2019.3 má některé zásadní rozdíly od RTRT obsaženého v 2019.4, ale tyto rozdíly nejsou v práci zpracovány z důvodu, že Unity 2019.3 je již v současnosti zastaralé.

Aplikace je ovládána kombinací klávesnice a myši. Ve většině scén se vyskytuje avatar hráče v podobě jednoduchého robota ve tvaru kapsle. Tento avatar slouží jako pohyblivá kamera a má schopnost jak chůze, letu a také rozhlížení se ve stylu FPS her, což umožňuje prohlédnout si chování RTRT z mnoha různých úhlů.

RTRT je v aplikaci možné vypnout a zapnout pouze z hlavního menu. Důvodem tohoto, je že po přepnutí je z důvodu způsobu technického řešení RTRT v Unity při přepnutí nutné znovu načíst scénu.

\chapter{Testovací scény}
\section{Scéna 1}
Tato scéna se skládá z jednoduchého lesa s terénem a dvěma vodními plochami.
Testování ray tracingu se zde zaměřuje na efekt globálního osvětlení na objekty bez ray tracing materiálů.
Na scéně je také zapnutá mlha.

Klíčové prvky scény:
\begin{itemize}
	\item Stromy - Globální iluminace osvětlí jinak neosvětlené části, jako spodní strany větví, atd…
	\item Terén - I když není podporovaný ray tracingem, tak je na něm dobře efekt viditelný globální iluminace.
\end{itemize}

\section{Scéna 2}
Scéna se skládá z malého domu s malou zahradou.
Testování se zde zaměřuje na chování RTRT v interiéru, ray tracing stínů, průhledné materiály a lesklé předměty.

Klíčové prvky:
\begin{itemize}
	\item Okna -Průhlednost a odrazy okolí, ztráta kvality díky šumu.
	\item Zrcadla - Odrazy a vysoký šum.
	\item Lampy	- Real Time ray tracing stínů.
\end{itemize}

Rtrt materiály:
\begin{itemize}
	\item zrcadlo: rendering pass ray tracing, maximální parametry metallic a smoothness, base map bílá barva.
	\item sklo: rendering pass ray tracing, maximální parametr smoothness, nízký metallic, base map bílá barva, alpha 26.
\end{itemize}

\section{Scéna 3}
Scéna je část moderního města s krajinou okolo. Ve středu města se nachází vodní nádrž a kolem ní výškové budovy. Testování ray tracingu se v této scéně zaměřuje na odrazy a rekurzivní rendering.

Klíčové prvky scény:
\begin{itemize}
	\item Mrakodrap skleněný - sledovaní odrazu okolí a obzoru - viditelné problémy rtrt – neodráží se terén
	\item Vodní plocha - Je tvořena materiálem, který má vlastní vertex shader. - Vertex shadery nejsou ray tracingem podporované, a proto není v odrazech viditelná.
\end{itemize}

Rtrt materiály
\begin{itemize}
	\item sklo: rendering pass ray tracing, vysoké parametry metallic a smoothness, base map šedá barva.
\end{itemize}

\section{Scéna 4}
Scénu tvoří dvě plochy, tři particle efekty, krychle a deformovaná koule. Tato scéna ukazuje že particle efekty ještě nejsou podporovány ray tracingem, a také ukazuje deformaci obrazu způsobenou indexem lomu.

Klíčové prvky scény:
\begin{itemize}
	\item Particle efekty - Ukazují že nejsou podporovány ray tracingem.
	\item Plochy - Neodrážejí particle efekty.
	\item Koule - Zakrývá particle efekt a také deformuje obraz krychle.
\end{itemize}

\section{Scéna 5}
Scénu tvoří čtyři plochy, šestnáct krychlí a čtyři koule s bodovými světly. V této scéně se testuje rekurzivní rendering a odrazy světel.

Klíčové prvky:
\begin{itemize}
	\item Krychle - slouží jako ukázka RTRT na pohybujícím se objektu.
	\item Koule - Obíhají okolo svého bodu
\end{itemize}


RTRT materiály
\begin{itemize}
	\item materiál krychlí: má bílou barvu, maximální parametr metallic a skoro maximální smoothness.
	\item materiál koulí je průhledný, má minimální parametr metallic a velmi nízký smoothness, má zelenou barvu a alfu 183, je emisivní, s intenzitou 100Nits.
\end{itemize}

\section{Scéna 6 až 9}
Scéna 6 se skládá z jednoho čtverce podlahy, na kterém je umístěno několik kusů nábytku a jiných assetů použitých v ostatních scénách a jednoho zrcadla. Všechny assety mají rendering pass nastavený na ray tracing. 
Scéna 7 se skládá ze čtyř těchto čtverců, scéna 8 z devíti a scéna 9 z šestnácti.
Cílem těchto scén je zjistit náročnost RTRT v závislosti na počtu renderovaných objektů při vysokém nastavení všech overridů.

\chapter{Testovací prostředí}
Pro\,\,testování\,\,byla\,\,použita\,\,sestava\,\,hardwaru:\break
\break
AMD\,\,Ryzen\,\,7\,\,1700X\break
8\,\,jader\,\,procesoru\break
16\,\,vláken\break
Base\,\,Clock\,\,3.4GHz\break
Max\,\,Boost\,\,Clock\,\,3.8GHz\break
L1\,\,Cache\,\,768KB\break
L2\,\,Cache\,\,4MB\break
\cite{cite:3}
\break
\break
NVIDIA\,\,GeForce\,\,GTX\,\,1080\break
Architektura\,\,GPU\,\,-\,\,Pascal\break
Snímkový\,\,zásobník\,\,-\,\,8\,\,GB\,\,GDDR5X\break
Rychlost\,\,paměti\,\,-\,\,10\,\,Gbps\break
Boost\,\,Clock\,\,-\,\,1733\,\,MHz\break
\cite{cite:4}
\break\break
16GB\,\,RAM

\part{Testování a zhodnocení výsledků}

\chapter{Testy}
Byly provedeny testy všech scén se statickou kamerou a také u prvních 3 scén byl proveden test s průchodem scénou.
\chapter{Výsledky testů}
Hodnoty výsledků testů udávají GPU time.
\begin{table}
\begin{ctucolortab}
\begin{tabular}{ |p{3cm}||p{3cm}|p{3cm}|p{3cm}|  }
	\hline
	\multicolumn{4}{|c|}{Scéna 1} \\
	\hline
	      \,& Kamera 1 &Kamera 2&Kamera 3\\
	\hline
	Globalni osvetleni   & 35,72    &37,71&   37,34\\
	Bez Globalniho osvetleni&   35,46  & 37,52   &37,29\\
	Bez RT &35,38 & 37,28&  36,69\\
	\hline
\end{tabular}
\end{ctucolortab}
\caption{Scéna 1 výsledky.}
\label{tab:Scéna 1 výsledky}
\end{table}


\begin{figure}
	\includegraphics[width=0.8\textwidth]{S1RTGI}
	\caption{Scéna 1 RTRT s GI}
\end{figure}

\begin{table}
\begin{ctucolortab}
\begin{tabular}{ |p{3cm}||p{3cm}|p{3cm}|p{3cm}|  }
	\hline
	\multicolumn{4}{|c|}{Scéna 2} \\
	\hline
	\,& Kamera 1 &Kamera 2&Kamera 3\\
	\hline
	Globalni osvetleni   & 419,39    &602,48&   152,97\\
	Bez Globalniho osvetleni&   111,38  & 113,08   &114,83\\
	Bez RT &27,77 & 22,6&  34,48\\
	\hline
\end{tabular}
\end{ctucolortab}
\caption{Scéna 2 výsledky.}
\label{tab:Scéna 2 výsledky}
\end{table}

\begin{table}
\begin{ctucolortab}
\begin{tabular}{ |p{3cm}||p{3cm}|p{3cm}|p{3cm}|  }
	\hline
	\multicolumn{4}{|c|}{Scéna 2 noc} \\
	\hline
	\,& Kamera 1 &Kamera 2&Kamera 3\\
	\hline
	Globalni osvetleni   & 798,39   &882,72&   222,03\\
	Bez Globalniho osvetleni&   138,95  & 176,83  &164,67\\
	Bez RT &49,14 & 37,5&  57,54\\
	\hline
\end{tabular}
\end{ctucolortab}
\caption{Scéna 2 noc výsledky.}
\label{tab:Scéna 2 noc výsledky}
\end{table}

\begin{figure}
	\includegraphics[width=0.8\textwidth]{S2RTGI}
	\caption{Scéna 2 RTRT s GI}
\end{figure}

\begin{table}
\begin{ctucolortab}
\begin{tabular}{ |p{3cm}||p{3cm}|p{3cm}|p{3cm}|  }
	\hline
	\multicolumn{4}{|c|}{Scéna 3} \\
	\hline
	\,& Kamera 1 &Kamera 2&Kamera 3\\
	\hline
	Globalni osvetleni   & 82,44   &68,5&   67,72\\
	Bez Globalniho osvetleni&   57,03  & 55,15  &54,39\\
	Bez RT &68,06 & 52,36&  50,58\\
	\hline
\end{tabular}
\end{ctucolortab}
\caption{Scéna 3 výsledky.}
\label{tab:Scéna 3 výsledky}
\end{table}


\begin{figure}
	\includegraphics[width=0.8\textwidth]{S3RTGI2}
	\caption{Scéna 3 RTRT s GI pohled do přízemí}
\end{figure}

\begin{figure}
\begin{subfigure}{1\textwidth}
	\includegraphics[width=1\textwidth]{S3NR}
	\caption{Scéna 3 normální vykreslení}
\end{subfigure}
\begin{subfigure}{1\textwidth}
	\includegraphics[width=1\textwidth]{S3RT}
	\caption{Scéna 3 RTRT}
\end{subfigure}
\begin{subfigure}{1\textwidth}
	\includegraphics[width=1\textwidth]{S3RTGI}
	\caption{Scéna 3 RTRT s GI}
\end{subfigure}
\end{figure}

\begin{table}
\begin{ctucolortab}
\begin{tabular}{ |p{3cm}||p{3cm}| }
	\hline
	\multicolumn{2}{|c|}{Scéna 4} \\
	\hline
	\,& Kamera 1\\
	\hline
	Globalni osvetleni   & 65,13\\
	Bez Globalniho osvetleni&   41,39\\
	Bez RT &16,74\\
	\hline
\end{tabular}
\end{ctucolortab}
\caption{Scéna 4 výsledky.}
\label{tab:Scéna 4 výsledky}
\end{table}

\begin{table}
\begin{ctucolortab}
\begin{tabular}{ |p{3cm}||p{3cm}|p{3cm}|p{3cm}|  }
	\hline
	\multicolumn{4}{|c|}{Scéna 5} \\
	\hline
	\,& Kamera 1 &Kamera 2&Kamera 3\\
	\hline
	Globalni osvetleni   & 111,76   &117,15&   94,93\\
	Bez Globalniho osvetleni&   69,92  & 74,21  &55,65\\
	Bez RT &6,85 & 6,13&  7,88\\
	\hline
\end{tabular}
\end{ctucolortab}
\caption{Scéna 5 výsledky.}
\label{tab:Scéna 5 výsledky}
\end{table}

\begin{table}
\begin{ctucolortab}
\begin{tabular}{ |p{2.5cm}||p{2.5cm}|p{2.5cm}|p{2.5cm}|p{2.5cm}|  }
	\hline
	\multicolumn{5}{|c|}{Scéna 5} \\
	\hline
	\,& Scéna 6 &Scéna 7&Scéna 8&Scéna 9\\
	\hline
	Globalni osvetleni   & 32,97   &79,42&   153,39 & 313,32\\
	Bez Globalniho osvetleni&   20,26 & 41,03 &67,84 &93,67\\
	Bez RT &11,85 & 19,85&  26,18 & 25,41\\
	\hline
\end{tabular}
\end{ctucolortab}
\caption{Scéna 6-9 výsledky.}
\label{tab:Scéna 6-9 výsledky}
\end{table}

\begin{figure}
	\includegraphics[width=0.8\textwidth]{Scena1}
	\caption{Graf průchod scénou 1}
\end{figure}

\begin{figure}
	\includegraphics[width=0.8\textwidth]{Scena2-den}
	\caption{Graf průchod scénou 2}
\end{figure}

\begin{figure}
	\includegraphics[width=0.8\textwidth]{Scena2-noc}
	\caption{Graf průchod scénou 2 noc}
\end{figure}

\begin{figure}
	\includegraphics[width=0.8\textwidth]{Scena3}
	\caption{Graf průchod scénou 3}
\end{figure}


\chapter{Zhodnocení výsledků}
\section{Scéna 1}
Použítí Global Illumination mělo na této scéně pozitivní vliv na grafickou kvalitu a zároveň němelo výrazný dopad na výkon. Z tohoto lze usuzovat, že použití Global Illumination ve scénách bez ray tracing materiálů může mít pozitvní vliv na kvalitu osvětlení a zároveň nízký dopad na výkon.

\section{Scéna 2 den a noc}
Použití Global Illumination mělo na této scéně velmi výrazný vliv na výkon, což ukazuje že na použité hardwarové sestavě není global ilumination použitelný pro scény s velkým počtem světel. RTRT bez GI je na tomto typu scény s použitou sestavou hardwaru na hranici použitelnosti z hlediska výkonu.

\section{Scéna 3}
Ve této scéně je RTRT jak s tak i bez GI z hlediska výkonu dobře použitelný a obě varianty výrazně zlepšují grafickou kvalitu. Největšími problémy v této scéně jsou nekompatibilita s shaderem vody a terénem(neodráží s v oknech mrakodrapů).

\section{Scéna 4}
Tato scéna demonstruje chování RTRT v kombinaci s částicovými efekty. RTRT je částicovými efekty zatíženo, ale výsledek se neliší od normálního vykreslení.

\section{Scéna 5}
Tato scéna obsahuje velké množství objektů s lesklými ray tracing materiály což je také přícinou několikanásobné doby vykreslování, při použítí RTRT, grafická kvalita této scény při normálním vykreslování však není vůbec realistická.

\section{Scéna 6-9}
Výsledky testů z těchto scén ukazují, že výpočetní náročnost RTRT roste s velikostí scény, ale naštěstí je tento růst pomalejší než lineární. Růst výpočetní náročnosti globálního osvětlení je na scéně takovéhoto typu přibližně lineární. Růst počtu světel na těchto scénách je táké lineární, takže je velmi pravděpodobná přímá souvislost mezi těmito dvěma hodnotami.

\section{Průchodové testy}
Grafy ukazují, že na této hardwarové sestavě nelze RTRT použít k herním účelům, protože graf ukazuje rendering time a v případě, že se blíží k hornímu okraji obrazovky FPS jsou extrémně malé 10 a méně, v některých případech i <1.

\chapter{Závěr}
Přestože sada funkcí Unity Real-Time Ray Tracing není v současnosti zcela kompletní, tak je již možné tuto sadu funkcí v konkrétních případech využít k výraznému zlepšení graficke kvality.
Nejvíce limitujícími faktory pro využítí této sady funkcí jsou její hardwarové požadavky a nekompatibilita s vizuálními efekty a terénem.

\appendix
\chapter{Návod}
Hlavní menu
\begin{itemize}
	\item Vypnout program: *
	\item Zapnout a nebo vypnout RT: +
	\item Spouštění scén = číslo scény
	\item Rozlišení 1920x1080: m
	\item Rozlišení 1280x720: n
\end{itemize}

Scény 1 a 2
\begin{itemize}
	\item Změna času (rotace směrového světla): K(+10) a L(-10)
\end{itemize}

Scény 1-5
\begin{itemize}
	\item Pohyb vpřed: W
	\item Pohyb vzad: S
	\item Pohyb doleva: A
	\item Pohyb doprava: D
	\item Zrychlení pohybu (10x): Left Shift
	\item Přepínání letového módu: F
	\item Let nahoru: Space
	\item Let dolů: Left Ctrl
	\item Statické kamery: 1, 2, 3
	\item Kamera hráče: 0
\end{itemize}

Všechny RTRT scény
\begin{itemize}
	\item Přepínání globální iluminace: G
\end{itemize}


Všechny Scény
\begin{itemize}
	\item Zapnutí/vypnutí kurzoru: i
	\item Návrat do Menu: Esc
	\item Rozlišení 1920x1080: m
	\item Rozlišení 1280x720: n
\end{itemize}

\appendix

\bibliographystyle{amsalpha}
\bibliography{ctutest}

\ctutemplate{specification.as.chapter}

\end{document}