Global illumination
Template:Redirect Template:Short description Template:More citations needed Template:3D computer graphics Template:Multiple image
Global illumination (GI), or indirect illumination, refers to the group of algorithms used in 3D computer graphics meant to add more realistic lighting to 3D scenes. Such algorithms take into account not only the light that comes directly from a light source (direct illumination), but also subsequent cases in which light rays from the same source are reflected by other surfaces in the scene, whether reflective or not (indirect illumination).
The term "global illumination" was first used by Turner Whitted in his paper "An improved illumination model for shaded display"<ref>Template:Cite journal</ref>, to differentiate between illumination calculations at a local scale (using geometric information directly, such as in Phong shading), a microscopic scale (extending local geometry with microfacet detail), and a global scale, including not only the geometry itself but also the visibility of every other object in the scene.<ref>Template:Cite journal</ref> Theoretically, reflections, refractions, and shadows are all examples of global illumination, because when simulating them, one object affects the rendering of another (as opposed to an object being affected only by a direct source of light). In practice, however, only the simulation of diffuse inter-reflection or caustics is called global illumination, especially when referring to real-time applications.
Algorithms
Global illumination is a key aspect to the realism of a 3D scene. Naive 3D lighting will only take into account direct light, meaning any light which radiates off a light source and bounces directly into the virtual camera. Shadows will appear completely dark, due to light not interacting with any other surface before it reaches the camera. As this is not what occurs in real life, we perceive the resulting image as incomplete. Applying full global illumination allows for the missing effects that makes an image feel more natural. However, global illumination is computationally more expensive and consequently much slower to generate.

Most algorithms, especially those focusing on real-time solutions, model diffuse inter-reflection exclusively, which is a very important part of global illumination; however, some also model indirect specular reflections, refraction, and indirect shadowing, which allows for a closer approximation of the reality and produces more appealing images. The algorithms used to calculate the distribution of light energy between surfaces of a scene are closely related to heat transfer simulations performed using finite-element methods in engineering design.
Radiosity, ray tracing, beam tracing, cone tracing, path tracing, Metropolis light transport and photon mapping are all examples of algorithms used for global illumination in offline settings, some of which may be used together to yield results that trade between accuracy and speed, depending on the implementation.
Real-time applications

Achieving accurate computation of global illumination in real-time remains difficult.<ref name="tmocg">Template:Cite book</ref> In real-time 3D graphics, the diffuse inter-reflection component of global illumination is sometimes approximated by an "ambient" term in the lighting equation, which is also called "ambient lighting" or "ambient color" in 3D software. Though this method of approximation is easy to perform computationally, when used alone it does not provide an adequately realistic effect. Ambient lighting is known to "flatten" shadows in 3D scenes, making the overall visual effect more bland. Beyond ambient lighting, techniques which trace the path of light accurately, such as those mentioned in the paragraph above, have historically been either too slow for consumer hardware or limited to static and precomputed environments. This proves problematic, as most applications allow for input from an user that can affect their environment, and the precalculation steps may introduce constraints upon the artists. Consequently, research has been dedicated to finding a balance between adequate performance, accurate visual results, and interactivity.
Recently, consumer graphics hardware (starting with Nvidia's RTX 20 series and AMD's Radeon RX 6000 series) has been extended to allow for ray tracing computations to be performed in real time through hardware acceleration. This has allowed for further improvements, as applications can now harness the power of this acceleration to provide not only precise lighting results, but the ability to affect said lighting dynamically. Some content that has taken advantage of this capability includes Cyberpunk 2077, Indiana Jones and the Great Circle, and Alan Wake 2, among others.<ref>Template:Cite web</ref><ref>Template:Cite web</ref>
For an overview of the current state of real-time global illumination, see <ref>Template:Cite journal</ref> or <ref>Template:Cite journal</ref>.
Procedure
Algorithms which attempt to simulate global illumination are numerical approximations of the rendering equation. Well-known algorithms for computing global illumination include path tracing, photon mapping and radiosity. The following approaches can be distinguished here:
- Inversion: <math>L = (1-T)^{-1} L^e\,</math>
- Not applied in practice
- Expansion: <math>L = \sum_{i=0}^\infty T^iL^e</math>
- Bi-directional approach: Photon mapping + Distributed ray tracing, Bi-directional path tracing, Metropolis light transport
- Iteration: <math>L_n tl_ e + = L ^{(n-1)}</math>
A full overview can be found in <ref name="WikiMarkup">Template:Cite book</ref>.
List of methods
| Method | Application | Description/Notes |
|---|---|---|
| Ray tracing | Offline/Real-time | The process of tracing a set of virtual paths (rays) from one point in space to another, testing for intersections with geometry. Ray tracing is useful as it can imitate the way light physically travels in the real world. Several variants exist for solving problems related to sampling, aliasing, and soft shadows, such as Distributed ray tracing, cone tracing, and beam tracing. |
| Path tracing | Offline | An extension to ray tracing that uses the Monte Carlo method of sampling to approximate a solution to the rendering equation. This makes path tracing unbiased. Variants include bi-directional path tracing and energy redistribution path tracing.<ref name="psu">Template:Cite journal</ref> |
| Photon mapping | Offline | Rays from both the camera and each light source are traced around the scene and connected to produce plausible radiance. It provides consistent results, but is biased. Variants include progressive photon mapping and stochastic progressive photon mapping.<ref name="u-tokyo">Template:Cite web</ref> |
| Radiosity | Offline | A finite element method approach to the rendering equation, dividing the scene into patches and computing the radiosity between each patch. It is good for precomputations, but assumes completely diffuse geometries. Improved versions include instant radiosity<ref>Template:Cite web</ref> and bidirectional instant radiosity,<ref>Template:Cite book</ref> both of which use virtual point lights (VPLs) instead of patches. |
| Lightcuts | Offline | A method of improving performance when computing the contribution of several light sources at a surface, by clustering lights into a light tree and selectively choosing the appropriate "cut" for each point.<ref name="Walter2005">Template:Cite journal</ref> Enhanced variants include multidimensional lightcuts and bidirectional lightcuts. |
| Point based global illumination | Offline | Point based global illumination (PBGI) discretizes the scene into a point-cloud which contains radiance information for the surface a point lies on.<ref>Template:Cite web</ref> It has been extensively used in movie animations for its relative speed and lack of noise compared to per-pixel calculations like path tracing.<ref>Template:Cite web</ref> |
| Metropolis light transport | Offline | Builds upon bi-directional path tracing using the Metropolis-Hastings algorithm, exploring paths adjacent to ones which have already been found. It remains unbiased, while usually converging faster than path tracing. An extension was introduced called multiplexed metropolis light transport.<ref>Template:Cite journal</ref> |
| Image-based lighting | Real-time | Image-based lighting (IBL) can refer to a number of different effects. Usually, it refers to an approximate method of global illumination through the use of high-dynamic-range images (HDRIs), also known as environment maps, which encompass the entire scene and light surfaces based on their normal direction.
IBL has also been used to describe image proxies, or image-based reflections, which represent surfaces as flat image planes to improve the appearance of reflections. They have been used in games such as Remember Me<ref>Template:Cite book</ref> and Thief (2014),<ref>Template:Cite book</ref> as well as the Unreal Engine 3 Samaritan demo.<ref>Template:Cite web</ref> |
| Ambient occlusion | Real-time | An approximate solution to global illumination that shades the areas of a scene most likely to be occluded by another object. It describes how "exposed" a point in the scene is to incoming light, and has been useful to improve realism for a comparatively low cost as opposed to indirect light. The effect can be reproduced through alterations to other methods, such as VXGI or SSGI. |
| Irradiance volumes | Real-time | Irradiance volumes encode global illumination results in evenly spaced points in 3D space (probes) for rendering of static scenes.<ref>Template:Cite journal</ref> Dynamic surfaces can be lit based on their position inside the volume and their normal direction. Initially used cubemaps to store irradiance at each probe, but was later improved by compressing into spherical harmonics (SH).<ref>Template:Cite web</ref> |
| Light propagation volumes | Real-time | The light propagation volume (LPV) approximately achieves global illumination in real-time with lattices and spherical harmonics to represent the spatial and angular distribution of light in the scene.<ref name="unrealengine">Template:Cite web</ref> The technique was later expanded to include approximate occlusion and specular indirect lighting, as well as farther coverage through the nesting of multiple lattices with decreasing resolution.<ref>Template:Cite book</ref> It was used in earlier versions of CryEngine and Unreal Engine.<ref>Template:Cite web</ref> |
| Voxel-based solutions | Real-time | Voxel-based techniques use a discretization of the scene into a volume to simplify lighting calculations. Solutions in this category might store varying information, such as geometric occupancy only, or the material properties of underlying surfaces, etc. Examples include compressed radiance caching volumes,<ref>Template:Cite journal</ref> voxel cone tracing,<ref>Template:Cite journal</ref> sparse voxel octrees,<ref>Template:Cite web</ref> and VXGI.<ref name="geforce">Template:Cite web</ref> Voxel cone tracing was used and improved in The Tomorrow Children, where the technique provided the entirety of the lighting in the game.<ref>Template:Cite web</ref> |
| Precomputed probe solutions | Real-time | Extensions of the irradiance volume that simulate global illumination of dynamic light sources by relighting the scene based on non-lighting information, such as geometry or visibility, precomputed in a "baking" stage beforehand. Examples of this technique include deferred radiance transfer volumes<ref>Template:Cite web</ref> and a succesor used in Tom Clancy's The Division.<ref>Template:Cite web</ref> |
| Screen-space global illumination | Real-time | Screen-space global illumination (SSGI) methods use the information visible to the screen, usually through the use of an already existing G-Buffer, to approximate indirect lighting. Variants exist for ambient occlusion (SSAO), for which the technique was initially developed, and specular reflections (SSR).
The most common approach is screen-space ray marching.<ref>Template:Cite web</ref> Additional techniques include screen space directional occlusion,<ref>Template:Cite journal</ref> "deep" buffers,<ref>Template:Cite journal</ref><ref>Template:Cite journal</ref> and horizon-based visibility bitmasks.<ref>Template:Cite journal</ref> |
| Dynamic Diffuse Global Illumination | Real-time | Unlike precomputed probe solutions, Dynamic Diffuse Global Illumination (DDGI) uses probes to calculate both lighting and geometric information in real time, using hardware-accelerated ray tracing to approximate geometry.<ref>Template:Cite journal</ref> An offshoot of this technique uses SDF primitives to represent a scene and reflective shadow maps to sample lights, improving on performance by removing the hardware requirement and better approximating occlusions, at the cost of manual setup.<ref name="Hu">Template:Cite arXiv</ref> |
| Global Illumination Based on Surfels | Real-time | A technique created by Electronic Arts' SEED group that discretizes the scene with surface elements, "surfels", in real time, and uses them to accumulate the result of light calculations done through hardware ray tracing.<ref name="Halen">Template:Cite web</ref> It borrows from the ideas of point based global illumination. It is currently integrated into the Frostbite engine. |
| Lumen | Real-time | A full global illumination solution that relies on an advanced screen-space radiance caching method, alongside an SDF volume representation of objects, to provide accurate and stable indirect lighting, shadowing, and reflections within a fully dynamic scene.<ref>Template:Cite web</ref> Screen probes use importance sampling techniques to intelligently distribute rays, and distant lighting uses a world space probe fallback.<ref>Template:Cite web</ref> It is integrated into Unreal Engine 5. |
See also
- Rendering equation
- Bias of an estimator
- Bidirectional scattering distribution function
- Consistent estimator
- Unbiased rendering
- Category:Global illumination software
References
External links
- Video demonstrating global illumination and the ambient color effect
- Collection of real-time GI techniques
- Real-time GI demos – survey of practical real-time GI techniques as a list of executable demos
- kuleuven - This page contains the Global Illumination Compendium, an effort to bring together most of the useful formulas and equations for global illumination algorithms in computer graphics.
- Theory and practical implementation of Global Illumination using Monte Carlo Path Tracing.