Skip to content

Commit

Permalink
Align glossary
Browse files Browse the repository at this point in the history
  • Loading branch information
StuckiSimon committed Aug 29, 2024
1 parent 6649c3a commit 274062e
Show file tree
Hide file tree
Showing 5 changed files with 60 additions and 60 deletions.
8 changes: 4 additions & 4 deletions report/parts/discussion.tex
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ \section{Comparison}
\subsection*{Comparison to Prior Work}
\label{sec:comparisonToPriorWork}

The three open-source path tracers introduced in \autoref{sec:web-path-tracers} are alternatives to the renderer developed in this work. Comparing them based on quantitative measures such as \fGls{FPS}{\e{Frames per second}, measure of the rate at which consecutive images are rendered and displayed} is not meaningful as the number of samples required for high-fidelity renderings differs across the renderers. Nevertheless, defining a set of criteria to compare them is still possible.
The three open-source path tracers introduced in \autoref{sec:web-path-tracers} are alternatives to the renderer developed in this work. Comparing them based on quantitative measures such as \fGls{FPS}{\e{Frames Per Second}, a measure of the rate at which consecutive images are rendered and displayed} is not meaningful as the number of samples required for high-fidelity renderings differs across the renderers. Nevertheless, defining a set of criteria to compare them is still possible.


\subsubsection*{WebGPU Support}
Expand Down Expand Up @@ -64,7 +64,7 @@ \subsubsection*{Assessment}

\subsection*{Comparison to Alternative Strategies}

The chosen architecture paradigm serves as an alternative to offline rendering solutions. In addition, the decision to implement ray tracing techniques contrasts with rasterization-based rendering engines. This section shows the comparison between these different options. For rasterization, \gls{Three.js} is used as an example, based on a minimal setup without pregenerated artifacts or advanced rendering techniques. For offline rendering, \fGls{RealityServer}{Platform for 3D rendering, which integrates the NVIDIA Iray global illumination rendering technology} renderings used by EAO are shown as a representative example. The three different renderings are visualized in \autoref{fig:final-rendering-comparison}.
The chosen architecture paradigm serves as an alternative to offline rendering solutions. In addition, the decision to implement ray tracing techniques contrasts with rasterization-based rendering engines. This section shows the comparison between these different options. For rasterization, \gls{Three.js} is used as an example, based on a minimal setup without pregenerated artifacts or advanced rendering techniques. For offline rendering, \fGls{RealityServer}{a platform for 3D rendering, which integrates the NVIDIA Iray global illumination rendering technology} renderings used by EAO are shown as a representative example. The three different renderings are visualized in \autoref{fig:final-rendering-comparison}.

\begin{figure}[H]
\centering
Expand Down Expand Up @@ -202,7 +202,7 @@ \subsubsection*{Independence of Three.js}

\subsubsection*{Offline and Remote Rendering}

As highlighted in \autoref{ch:paradigmAssessment}, it is possible to extend a real-time client-side renderer for offline and remote rendering scenarios. In order to implement offline rendering, one could opt to use a headless browser such as \texttt{Puppeteer}, a \fgls{Node.js}{JavaScript runtime, frequently used for executing JavaScript outside of the browser} library that provides a high-level \gls{API} to control browsers. The use of \gls{Deno} could reduce the overhead, by providing a more direct \gls{API} to \gls{wgpu}. An alternative is to use \gls{wgpu} directly, but this would necessitate a rewrite of the renderer. Possibly, the rewritten renderer could also be used in the web context by using \fgls{WebAssembly}{Portable Binary-code format for executable programs available in modern browser engines}.
As highlighted in \autoref{ch:paradigmAssessment}, it is possible to extend a real-time client-side renderer for offline and remote rendering scenarios. In order to implement offline rendering, one could opt to use a headless browser such as \texttt{Puppeteer}, a \fgls{Node.js}{a JavaScript runtime, frequently used for executing JavaScript outside of the browser} library that provides a high-level \gls{API} to control browsers. The use of \gls{Deno} could reduce the overhead, by providing a more direct \gls{API} to \gls{wgpu}. An alternative is to use \gls{wgpu} directly, but this would necessitate a rewrite of the renderer. Possibly, the rewritten renderer could also be used in the web context by using \fgls{WebAssembly}{a portable binary code format available in modern browser engines}.

For remote rendering, the renderer could be extended to render images on demand and encode them as video streams.

Expand All @@ -212,7 +212,7 @@ \subsubsection*{WebGPU Compatibility Mode}

\subsubsection*{Automatic Shader Conversion}

During the specification phase of \gls{WebGPU}, the relation to \fgls{SPIR-V}{\e{Standard Portable Intermediate Representation}, intermediate language for parallel computing and graphics developed by Khronos Group} was discussed \cite{webGPUSpirVRelation}. In general, many of the modern shading languages can be compiled to one another. Projects such as \texttt{Tint}, which is part of \gls{Dawn} \cite{dawnImplementation} or \texttt{Naga} \cite{nagaImplementation} could be used to compile shaders from different frontends to different backends. Similarly, other engines, such as \gls{Three.js} with \fGls{TSL}{\e{Three.js Shading Language}, shading language used in \gls{Three.js} which supports \gls{GLSL} as well as \gls{WGSL}}, have their own shading languages that support a variety of backends \cite{ThreeJSShadingLanguage}. Parts of \gls{MaterialX} shader generation could be used to generate shaders for \gls{WebGPU} and update them automatically as \gls{OpenPBR} is updated.
During the specification phase of \gls{WebGPU}, the relation to \fgls{SPIR-V}{\e{Standard Portable Intermediate Representation}, an intermediate language for parallel computing and graphics developed by the \gls{Khronos Group}} was discussed \cite{webGPUSpirVRelation}. In general, many of the modern shading languages can be compiled to one another. Projects such as \texttt{Tint}, which is part of \gls{Dawn} \cite{dawnImplementation} or \texttt{Naga} \cite{nagaImplementation} could be used to compile shaders from different frontends to different backends. Similarly, other engines, such as \gls{Three.js} with \fGls{TSL}{\e{Three.js Shading Language}, a shading language used in \gls{Three.js} that supports \gls{GLSL} as well as \gls{WGSL}}, have their own shading languages that support a variety of backends \cite{ThreeJSShadingLanguage}. Parts of \gls{MaterialX} shader generation could be used to generate shaders for \gls{WebGPU} and update them automatically as \gls{OpenPBR} is updated.

\subsubsection*{Low-Level Performance Optimizations}

Expand Down
62 changes: 31 additions & 31 deletions report/parts/glossary.tex
Original file line number Diff line number Diff line change
Expand Up @@ -10,28 +10,28 @@
\newglossaryentry{WebGPU}
{
name={WebGPU},
description={A new standard for 3D graphics on the web}
description={a new standard for 3D graphics on the web}
}

\newglossaryentry{WGSL}
{
name={WGSL},
description={{\e{WebGPU Shading Language}}}
description={\e{WebGPU Shading Language}, the shading language used in \gls{WebGPU}}
}

\newglossaryentry{RNG}{
name={RNG},
description={Random Number Generator}
description={\e{Random Number Generator}}
}

\newglossaryentry{BVH}{
name={BVH},
description={\e{Bounding Volume Hierarchy}, common tree-based acceleration structure}
description={\e{Bounding Volume Hierarchy}, a common tree-based acceleration structure}
}

\newglossaryentry{AABB}{
name={AABB},
description={\e{Axis-Aligned Bounding Boxes}, bounding volume aligned with the coordinate axes}
description={\e{Axis-Aligned Bounding Boxes}, a bounding volume aligned with the coordinate axes}
}

\newglossaryentry{CPU}{
Expand All @@ -41,7 +41,7 @@

\newglossaryentry{CAD}{
name={CAD},
description={\e{Computer-Aided Design}, use of computers to aid in modeling of a design}
description={\e{Computer-Aided Design}, describes the use of computers to aid in modeling of a design}
}

\newglossaryentry{PDF}{
Expand Down Expand Up @@ -81,17 +81,17 @@

\newglossaryentry{GPGPU}{
name={GPGPU},
description={\e{General-Purpose GPU} Programming, using GPUs for non-graphics tasks}
description={\e{General-Purpose GPU} Programming, using \glspl{GPU} for non-graphics tasks}
}

\newglossaryentry{BMRT}{
name={BMRT},
description={\e{Blue Moon Rendering Tools}, early free and open-source ray tracing software which was RenderMan compatible}
description={\e{Blue Moon Rendering Tools}, a free and open-source ray tracing software that was \gls{RenderMan} compatible}
}

\newglossaryentry{ML}{
name={ML},
description={\e{Machine Learning}, field of computer science that uses data and algorithms to give computer systems the ability to improve accuracy without being explicitly programmed}
description={\e{Machine Learning}, a field of computer science that uses data and algorithms to give computer systems the ability to improve accuracy without being explicitly programmed}
}

\newglossaryentry{OBJ}{
Expand All @@ -101,57 +101,57 @@

\newglossaryentry{PBR}{
name={PBR},
description={\e{Physically Based Rendering}, rendering technique that simulates real-world materials}
description={\e{Physically Based Rendering}, a rendering technique that simulates real-world materials}
}

\newglossaryentry{HDR}{
name={HDR},
description={\e{High Dynamic Range}, signal with a large range of luminance values}
description={\e{High Dynamic Range}, describes a signal with a large range of luminance values}
}

\newglossaryentry{MIS}{
name={MIS},
description={\e{Multiple Importance Sampling}, technique to combine multiple sampling strategies in Monte Carlo integration}
description={\e{Multiple Importance Sampling}, a technique to combine multiple sampling strategies in Monte Carlo integration}
}

\newglossaryentry{LOD}{
name={LOD},
description={\e{Level of Detail}, defines finer or coarser representations of a model}
description={\e{Level of Detail}, describes artifacts that define finer or coarser representations of a model}
}

\newglossaryentry{ReSTIR}{
name={ReSTIR},
description={\e{Reservoir-based Spatio-Temporal Importance Resampling}, technique to optimize sampling in path tracing}
description={\e{Reservoir-based Spatio-Temporal Importance Resampling}, a technique to optimize sampling in path tracing}
}

\newglossaryentry{GLSL}{
name={GLSL},
description={\e{OpenGL Shading Language}, shading language used in \gls{OpenGL}}
description={\e{OpenGL Shading Language}, the shading language used in \gls{OpenGL}}
}

\newglossaryentry{MaterialX}{
name={MaterialX},
description={Open standard for rich material definition}
description={an open standard for rich material definition}
}

\newglossaryentry{OpenPBR}{
name={OpenPBR},
description={Open specification of surface shading model}
description={an open specification of a \gls{PBR} surface shading model}
}

\newglossaryentry{DSPBR}{
name={DSPBR},
description={\e{Dassault Systèmes PBR Shading Model}, specification for PBR shading model}
description={\e{Dassault Systèmes PBR Shading Model}, a specification of a \gls{PBR} shading model}
}

\newglossaryentry{OIDN}{
name={OIDN},
description={\e{Open Image Denoise}, open-source library for denoising images}
description={\e{Open Image Denoise}, an open-source library for denoising images}
}

\newglossaryentry{uber shader}{
name={uber shader},
description={Shader design that offers parameter configuration but no custom shader code}
description={a shader design that offers parameter configuration but no custom shader code}
}

\newglossaryentry{OpenGL}{
Expand All @@ -161,55 +161,55 @@

\newglossaryentry{Vulkan}{
name={Vulkan},
description={Open standard for cross-platform 3D graphics and computing}
description={an open standard for cross-platform 3D graphics and computing}
}

\newglossaryentry{Metal}{
name={Metal},
description={\gls{API} developed by Apple for 3D graphics and computing}
description={an \gls{API} developed by Apple for 3D graphics and computing}
}

\newglossaryentry{DirectX 12}{
name={DirectX 12},
description={\gls{API} developed by Microsoft for 3D graphics and computing}
description={an \gls{API} developed by Microsoft for 3D graphics and computing}
}

\newglossaryentry{Dawn}{
name={Dawn},
description={Open-source and cross-platform WebGPU implementation developed by Google}
description={an open-source and cross-platform \gls{WebGPU} implementation developed by Google}
}

\newglossaryentry{wgpu}{
name={wgpu},
description={Open-source and cross-platform WebGPU implementation}
description={an open-source and cross-platform \gls{WebGPU} implementation}
}

\newglossaryentry{pbrt}{
name={pbrt},
description={open-source ray tracing renderer, described in the book Physically Based Rendering \cite{Pharr_Physically_Based_Rendering_2023}}
description={an open-source ray tracing renderer, described in the book Physically Based Rendering \cite{Pharr_Physically_Based_Rendering_2023}}
}

\newglossaryentry{Babylon.js}{
name={Babylon.js},
description={Open-source 3D engine for the web based on WebGL and WebGPU}
description={an open-source 3D engine for the web based on \gls{WebGL} and \gls{WebGPU}}
}

\newglossaryentry{Three.js}{
name={Three.js},
description={Open-source 3D engine for the web based on WebGL}
description={an open-source 3D engine for the web based on \gls{WebGL}}
}

\newglossaryentry{PlayCanvas}{
name={PlayCanvas},
description={Open-source 3D engine for the web based on WebGL}
description={an open-source 3D engine for the web based on \gls{WebGL}}
}

\newglossaryentry{A-Frame}{
name={A-Frame},
description={Open-source 3D engine for the web based on WebGL}
description={an open-source 3D engine for the web based on \gls{WebGL}}
}

\newglossaryentry{Unity}{
name={Unity},
description={Proprietary, cross-platform game engine developed by Unity Technologies}
description={a proprietary, cross-platform game engine developed by Unity Technologies}
}
Loading

0 comments on commit 274062e

Please sign in to comment.