Skip to content

Commit

Permalink
Commit work notes
Browse files Browse the repository at this point in the history
These are not planned for submission, but might be interesting nevertheless.
  • Loading branch information
StuckiSimon committed Aug 30, 2024
1 parent 676c9ca commit d23e796
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions report/parts/theory.tex
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,7 @@ \subsubsection{Advanced Techniques}

To address these limitations, the graphics pipeline can be extended with additional steps such as post-processing effects or advanced rendering techniques. Various methods have been developed, including pre-baked shadow, environment \cite{greene1986environment}, and light maps; screen space reflections (SSR) \cite{screenSpaceReflectionsStackowiak}; screen space ambient occlusion (SSAO) \cite{bavoil2008ssao}; and screen space directional occlusion (SSDO) \cite{ritschel2009ssdo}.

% todo: newpage?
\paragraph{Environment Maps}

Environment maps can be used to simulate reflections. The technique uses a texture that is mapped to the environment of the scene and is used to simulate reflections. Environment maps do not support reflections occurring dynamically in the scene, such as self-reflections or reflections of nearby objects.
Expand All @@ -586,6 +587,10 @@ \subsubsection{Advanced Techniques}
\subsection{Ray Tracing}
\label{ch:rayTracingTheory}

% -> instead of gray plane, use color gradient to indicate material properties
% -> missing rays a bit longer so that miss is obvious - esplain what red color means
% -> define bias?

Ray tracing is a rendering technique that simulates light transport in a scene. Forward ray tracing traces the photons, commonly referred to as rays, from the light source onto the objects. These algorithms are inefficient as most rays do not contribute to the illumination visible in the viewport. Therefore, backward ray tracing is more commonly used. Rays are cast from the camera into the scene, and the object's radiance with which the ray intersects is computed. In contrast to a rasterizer, which iterates over the triangles of the scene, ray tracing iterates over the pixels of the image. For each pixel, a ray is cast into the scene. By adding additional bounces of the light ray, the technique can simulate global illumination.

Early algorithms were based on recursive ray tracing \cite{whittedGlobalIllumination}. These algorithms determine intersection with geometry and iteratively generate branches, as shown in \autoref{fig:recursiveRayTracing}. For each pixel, a primary ray is cast into the scene. When intersecting with a surface, the algorithm considers the light sources and generates secondary rays. These rays are then recursively traced, and radiance is calculated until a maximum depth is reached.
Expand Down Expand Up @@ -1221,6 +1226,8 @@ \subsubsection{Shading Language}
\label{code:computePipelineWgsl}
\end{figure}

% todo: mention that texture sampling must only be called in uniform code? (non-divergent)
% todo: mention error handling?
In terms of limitations, it is similar to other shading languages. For example, it does not support recursion because cycles are not permitted in declarations. It also does not have features such as an \gls{API} for \gls{RNG}. The shading language is designed for common use cases in computer graphics and general-purpose computing. One example is support for swizzling. Swizzling is a class of operations that facilitate managing vector elements. For example, given a vector \texttt{let v = vec3f(x, y, z)}, the operation \texttt{v.xy} returns a vector \texttt{(x, y)}.

\subsubsection{Data}
Expand Down Expand Up @@ -1551,6 +1558,8 @@ \subsection*{Material Description}
\paragraph{Material Description Standards}
\label{ch:materialDescriptionStandards}

% todo: consider listing https://www.nvidia.com/en-us/design-visualization/technologies/material-definition-language/, however, its not that important for the context of this work

Many exchange formats, such as \gls{glTF}, support material description as part of the standard. The material description in \gls{glTF} supports a \gls{PBR} approach based on the metallic-roughness material model \cite{gltfSpecification}. However, the \gls{PBR} material description in \gls{glTF} is limited in terms of feature set by lacking features such as subsurface scattering and is not intended to become an open standard across a variety of applications.

Over the years, different parties have developed their own shading models. Some prominent options include:
Expand Down

0 comments on commit d23e796

Please sign in to comment.