# Implementing Many-Lights Rendering with IES-Based Lights
## 1 Introduction  
Global illumination (GI) is one of the most investigated topics in computer graphics. GI takes into account the light reaching a surface directly from the light sources (direct illumination) and also the light reflected or refracted by other surfaces in the scene (indirect illumination). Previously, several approaches were proposed in order to introduce highly realistic simulations of GI in the rendering of a virtual scene. The rendering process is based on the simulation of the interaction between light and the surfaces in a scene. For a uniform non-emitting surface, the radiance reflected in a point \(\mathbf{x}\) is provided by the _rendering equation_[1]:  
\[L_{0}(\mathbf{x},\omega_{0})=\int_{\Omega}f_{\mathbf{r}}(\mathbf{x},\omega_{ \mathrm{v}},\omega_{0})L_{\mathrm{i}}(\mathbf{x},\omega_{\mathrm{t}})(\omega_{ \mathrm{t}}\cdot\mathbf{n})\,\mathrm{d}\,\omega_{\mathrm{t}} \tag{1}\]  
where  
* \(\mathbf{n}\) is the surface normal;
* \(\Omega\) is the hemisphere centered around \(\mathbf{n}\);
* \(\omega_{\mathrm{t}}\) and \(\omega_{\mathrm{o}}\) are the directions of incoming and reflected light, respectively;
* \(L_{\mathrm{i}}(\mathbf{x},\omega_{\mathrm{o}})\) and \(L_{0}(\mathbf{x},\omega_{\mathrm{o}})\) are the incoming and the reflected radiances, respectively;
* \(f_{\mathbf{r}}(\mathbf{x},\omega_{\mathrm{t}},\omega_{\mathrm{o}})\) is the Bidirectional Reflectance Distribution Function (BRDF), which describes the amount of radiance reflected in the direction \(\omega_{\mathrm{o}}\) given the radiance coming from direction \(\omega_{\mathrm{t}}\). Every GI technique in the literature represents an approximation, at different levels of accuracy, of Equation (1). Techniques related to Physically Based Rendering (PBR) [2] are usually based on variants of ray tracing approaches and Monte Carlo methods, which can achieve very high levels of photorealism at the expense of high computational costs, thus limiting their full application only to _offline_ photorealistic rendering. In the context of real-time rendering, the inclusion of GI effects is particularly complex due to the time constraints of the rendering process. The standard approaches usuallyconsider a limited set of GI effects (e.g., color bleeding, shadows, and reflections) and/or decouple the computation of GI from the actual main rendering process, which focuses only on the direct illumination component. The most common techniques rely on screen-based algorithms and the precomputation (baking) of shading data in texture maps to be used in the actual rendering process [3]. The recent availability of real-time ray tracing graphics hardware is slowly allowing the introduction of techniques that were limited only to offline rendering. However, the current capabilities of this new generation of graphics cards are still far from supporting a full ray tracing approach, forcing the use of hybrid solutions still based on screen-based techniques, combined with highly sophisticated and effective denoising algorithms [4; 5]. With _Many-Lights rendering_[6], we refer to a family of rendering techniques that are based on the placement of several Virtual Point Lights (VPLs) in the scene. The VPLs' positions correspond to the intersection points of rays traced from the light sources and bouncing on the surfaces in the environment. With a similar approach, the indirect illumination is approximated using the direct contribution of all the light sources in the scene (both the actual light sources and VPLs). As reported in [7], this class of techniques enables efficient computation of GI, providing results comparable to path tracing methods but with lower rendering times. Several extensions and improvements were proposed in the literature starting from this original idea, which was also applied successfully in the context of real-time rendering.