Skip to content

Commit

Permalink
Finalize glossary
Browse files Browse the repository at this point in the history
  • Loading branch information
StuckiSimon committed Aug 30, 2024
1 parent 1e54c42 commit e296ee8
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 77 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}, 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.
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 @@ -65,7 +65,7 @@ \subsubsection*{Assessment}
\newpage
\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}{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}.
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 @@ -231,7 +231,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}{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}.
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 @@ -241,7 +241,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}, 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.
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
82 changes: 41 additions & 41 deletions report/parts/glossary.tex
Original file line number Diff line number Diff line change
Expand Up @@ -10,206 +10,206 @@
\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}, the shading language used in \gls{WebGPU}}
description={\e{WebGPU Shading Language}, the shading language used in \gls{WebGPU}.}
}

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

\newglossaryentry{BVH}{
name={BVH},
description={\e{Bounding Volume Hierarchy}, a 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}, a bounding volume aligned with the coordinate axes}
description={\e{Axis-Aligned Bounding Boxes}, a bounding volume aligned with the coordinate axes.}
}

\newglossaryentry{CPU}{
name={CPU},
description={\e{Central Processing Unit}, the main processing unit of a computer}
description={\e{Central Processing Unit}, the main processing unit of a computer.}
}

\newglossaryentry{CAD}{
name={CAD},
description={\e{Computer-Aided Design}, describes the 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}{
name={PDF},
description={\e{Probability Density Function}, describes the likelihood of a random variable}
description={\e{Probability Density Function}, describes the likelihood of a random variable.}
}

\newglossaryentry{CDF}{
name={CDF},
description={\e{Cumulative Distribution Function}, describes the probability that a random variable is less than or equal to a given value}
description={\e{Cumulative Distribution Function}, describes the probability that a random variable is less than or equal to a given value.}
}

\newglossaryentry{BSDF}{
name={BSDF},
description={\e{Bidirectional Scattering Distribution Function}, describes the interaction of light with surfaces}
description={\e{Bidirectional Scattering Distribution Function}, describes the interaction of light with surfaces.}
}

\newglossaryentry{BxDF}{
name={BxDF},
description={\e{Bidirectional Distribution Functions}, describe the interaction of light with surfaces, commonly used interchangeably with \gls{BSDF}}
description={\e{Bidirectional Distribution Functions}, describe the interaction of light with surfaces, commonly used interchangeably with \gls{BSDF}.}
}

\newglossaryentry{BRDF}{
name={BRDF},
description={\e{Bidirectional Reflectance Distribution Function}, describes the reflection of light off a surface}
description={\e{Bidirectional Reflectance Distribution Function}, describes the reflection of light off a surface.}
}

\newglossaryentry{BTDF}{
name={BTDF},
description={\e{Bidirectional Transmittance Distribution Function}, describes the transmission of light through a surface}
description={\e{Bidirectional Transmittance Distribution Function}, describes the transmission of light through a surface.}
}

\newglossaryentry{NDF}{
name={NDF},
description={\e{Normal Distribution Function}, describes the distribution of microfacet normals on a surface}
description={\e{Normal Distribution Function}, describes the distribution of microfacet normals on a surface.}
}

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

\newglossaryentry{BMRT}{
name={BMRT},
description={\e{Blue Moon Rendering Tools}, a free and open-source ray tracing software that was \gls{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}, a 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}{
name={OBJ},
description={a common text-based format for 3D models initially developed by Wavefront Technologies}
description={a common text-based format for 3D models initially developed by Wavefront Technologies.}
}

\newglossaryentry{PBR}{
name={PBR},
description={\e{Physically Based Rendering}, a 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}, describes a 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}, a 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}, describes artifacts that define 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}, a 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}, the shading language used in \gls{OpenGL}}
description={\e{OpenGL Shading Language}, the shading language used in \gls{OpenGL}.}
}

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

\newglossaryentry{OpenPBR}{
name={OpenPBR},
description={an open specification of a \gls{PBR} 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}, a specification of a \gls{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}, an 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={a 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}{
name={OpenGL},
description={\e{Open Graphics Library}, cross-platform API for rendering 2D and 3D graphics}
description={\e{Open Graphics Library}, cross-platform API for rendering 2D and 3D graphics.}
}

\newglossaryentry{Vulkan}{
name={Vulkan},
description={an 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={an \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={an \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={an open-source and cross-platform \gls{WebGPU} implementation developed by Google}
description={an open-source and cross-platform \gls{WebGPU} implementation developed by Google.}
}

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

\newglossaryentry{pbrt}{
name={pbrt},
description={an 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={an open-source 3D engine for the web based on \gls{WebGL} and \gls{WebGPU}}
description={an open-source 3D engine for the web based on \gls{WebGL} and \gls{WebGPU}.}
}

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

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

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

\newglossaryentry{Unity}{
name={Unity},
description={a 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 e296ee8

Please sign in to comment.