\newpage \subsection{Sample generators} \label{sec:samplers} When rendering an image, Mitsuba has to solve a high-dimensional integration problem that involves the geometry, materials, lights, and sensors that make up the scene. Because of the mathematical complexity of these integrals, it is generally impossible to solve them analytically --- instead, they are solved \emph{numerically} by evaluating the function to be integrated at a large number of different positions referred to as \emph{samples}. Sample generators are an essential ingredient to this process: they produce points in a (hypothetical) infinite dimensional hypercube $[0,1]^{\infty}$ that constitute the canonical representation of these samples. To do its work, a rendering algorithm, or \emph{integrator}, will send many queries to the sample generator. Generally, it will request subsequent 1D or 2D components of this infinite-dimensional ``point'' and map them into a more convenient space (for instance, positions on surfaces). This allows it to construct light paths to eventually evaluate the flow of light through the scene. Since the whole process starts with a large number of points in the abstract space $[0,1]^{\infty}$, it is natural to consider different ways of positioning them. Desirable properties of a sampler are that it ``randomly'' covers the whole space evenly with samples, but without placing samples too close to each other. This leads to such notions as \emph{stratified sampling} and \emph{low-discrepancy} number sequences. The samplers in this section make different guarantees on the quality of generated samples based on these criteria. To obtain intuition about their behavior, the provided point plots illustrate the resulting sample placement.