---
title: "Classification of GI Methods"
canonical: "https://documentation.chaos.com/space/THEORY/116719730/Classification%20of%20GI%20Methods"
format: markdown
---
This page provides information about Global Illumination (GI) methods including ones supported by V-Ray.


## <span style="color: #000000">**The Rendering Equation**</span>

---

<span style="color: #000000">Virtually all modern GI renderers are based on the rendering equation introduced by James T. Kajiya in his 1986 paper "The Rendering Equation". This equation describes how light is propagated throughout a scene. In his paper, Kajiya also proposed a method for computing an image based on the rendering equation using a Monte Carlo method called path tracing.</span>

<span style="color: #000000">It should be noted that the equation has been known long before that in engineering and has been used for computing radiative heat transfer in different environments. However, Kajiya was the first to apply this equation to computer graphics.</span>

<span style="color: #000000">It should also be noted that the rendering equation is only "an approximation of Maxwell's equation for electromagnetics". It does not attempt to model all optical phenomena. It is only based on geometric optics and therefore cannot simulate things like diffraction, interference, or polarization. However, it can be easily modified to account for wavelength-dependent effects like dispersion.</span>

<span style="color: #000000">Another, more philosophical point to make, is that the rendering equation is derived from a mathematical model of how light behaves. While it is a very good model for the purposes of computer graphics, it does not describe exactly how light behaves in the real world. For example, the rendering equation assumes that light rays are infinitesimally thin and that the speed of light is infinite - neither of these assumptions is true in the real physical world.</span>

<span style="color: #000000">Because the rendering equation is based on geometric optics, raytracing is a very convenient way to solve the rendering equation. Indeed, most renderers that solve the rendering equation are based on raytracing.</span>

<span style="color: #000000">Different formulations of the rendering equation are possible, but the one proposed by Kajiya looks like this:</span>


![image](media://1a203325-e32a-47e3-b222-49d10a79167c)


<span style="color: #000000">where:</span>

<span style="color: #000000">L(x, x1) is related to the light passing from point x1 to point x;</span>

<span style="color: #000000">g(x, x1) is a geometry (or visibility term);</span>

<span style="color: #000000">e(x, x1) is the intensity of emitted light from point x1 towards point x;</span>

<span style="color: #000000">r(x, x1, x2) is related to the light scattered from point x2 to point x through point x1;</span>

<span style="color: #000000">S is the union of all surfaces in the scene and x, x1 and x2 are points from S.</span>

<span style="color: #000000">What the equation means: the light arriving at a given point </span><span style="color: #000000">**x**</span><span style="color: #000000"> in the scene from another point </span><span style="color: #000000">**x1**</span><span style="color: #000000"> is the sum of the light emitted from all other points </span><span style="color: #000000">**x2**</span><span style="color: #000000"> towards </span><span style="color: #000000">**x1**</span><span style="color: #000000"> and reflected towards </span><span style="color: #000000">**x**</span><span style="color: #000000">:</span>



![image](media://edc4148c-0a60-45f6-9c37-8ccec81bcac7)


<span style="color: #000000">Except for very</span> <span style="color: #000000">simple cases, the rendering equation cannot be solved exactly in a finite amount of time on a computer. However, we can get as close as we want to the real solution - given enough time. The search for global illumination algorithms has been a quest for finding solutions that are reasonably close, for a reasonable amount of time.</span>

<span style="color: #000000">The rendering equation is only one. Different renderers only apply different methods for solving it. If any two renderers solve this equation accurately enough, then they should generate the same image for the same scene. This is very well in theory, but in practice renderers often truncate or alter parts of the rendering equation, which may lead to different results.</span>


## <span style="color: #000000">**I: Exact vs Approximate Methods**</span>

---

<span style="color: #000000">As noted above, we cannot solve the equation exactly - there is always some error, although it can be made very small. In some rendering methods, the desired error is specified in advance by the user and it determines the accuracy of the calculations (i.e. GI sample density, or GI rays, or number of photons, etc.). A disadvantage of these methods is that the user must wait for the whole calculation process to complete before the result can be used. Another disadvantage is that it may take a lot of trial and error to find the settings that produce adequate quality in a reasonable amount of time. However, the big advantage of these methods is that they can be very efficient within the specified accuracy bounds, because the algorithm can concentrate on solving difficult parts of the rendering equation separately (i.e. splitting the image into independent regions, performing several calculation phases etc.), and then combining the result.</span>

<span style="color: #000000">In other methods, the image is calculated progressively - in the beginning the error is large, but gets smaller as the algorithm performs additional calculations. At any one point in time, we have the partial result for the whole image. So, we can terminate the calculation and use the intermediate result.</span>

### **Exact (unbiased or brute-force) methods.**

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Produce very accurate results.</span>

<span style="color: #000000">The only artifact these methods produce is noise.</span>

<span style="color: #000000">Renderers using exact methods typically have only few controls for specifying image quality.</span>

<span style="color: #000000">Typically require very little additional memory.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">Unbiased methods are not adaptive and so are extremely slow for a noiseless image.</span>

<span style="color: #000000">Some effects cannot be computed at all by an exact method (for example, caustics from a point light seen through a perfect mirror).</span>

<span style="color: #000000">It may be difficult to impose a quality requirement on these methods.</span>

<span style="color: #000000">Exact methods typically operate directly on the final image; the GI solution cannot be saved and re-used in any way.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">Path tracing (brute-force GI in some renderers).</span>

<span style="color: #000000">Bi-directional path tracing.</span>

<span style="color: #000000">Metropolis light transport.</span>

### <span style="color: #000000">**Approximate (biased) methods:**</span>

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Adaptive, so typically those are a lot faster than exact methods.</span>

<span style="color: #000000">Can compute some effects that are impossible for an exact method (e.g. caustics from a point light seen through a perfect mirror).</span>

<span style="color: #000000">Quality requirements may be set and the solution can be refined until those requirements are met.</span>

<span style="color: #000000">For some approximate methods, the GI solution can be saved and re-used.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">Results may not be entirely accurate (e.g. may be blurry) although typically the error can be made as small as necessary.</span>

<span style="color: #000000">Artifacts are possible (e.g. light leaks under thin walls etc.).</span>

<span style="color: #000000">More settings for quality control.</span>

<span style="color: #000000">Some approximate methods may require (a lot of) additional memory.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">Photon mapping.</span>

<span style="color: #000000">Irradiance caching.</span>

<span style="color: #000000">Radiosity.</span>

<span style="color: #000000">Light cache in V-Ray.</span>

### <span style="color: #000000">**Hybrid methods: exact methods used for some effects, approximate methods for others.**</span>

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Combine both speed and quality.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">May be more complicated to set up.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">Final gathering with Min/Max radius 0/0 + photon mapping in mental ray.</span>

<span style="color: #000000">Brute Force GI + Light Cache in V-Ray.</span>

<span style="color: #000000">Light tracer with Min/Max rate 0/0 + radiosity in 3ds Max.</span>

<span style="color: #000000">Some methods can be asymptotically unbiased - that is, they start with some bias initially, but it is gradually decreased as the calculation progresses.</span>


## <span style="color: #000000">**II. Gathering vs Shooting Methods**</span>

---

### <span style="color: #000000">**Shooting methods**</span>

<span style="color: #000000">These</span> <span style="color: #000000">start from the lights and distribute light energy throughout the scene. Note that shooting methods can be either exact or approximate.</span>

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Can easily simulate some specific light effects like caustics.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">They don't take into consideration the camera view; thus they might spend a lot of time for parts of the scene that are not visible or do not contribute to the image (e.g. caustics that are not visible - they must still be computed).</span>

<span style="color: #000000">Produce more precise solutions for portions of the scene that are close to lights; regions that are far from light sources may be computed with insufficient precision.</span>

<span style="color: #000000">Cannot simulate efficiently all kinds of light effects, such as object lights and environment lights (skylight); non-physical light sources are difficult to simulate.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">photon mapping (approximate).</span>

<span style="color: #000000">particle tracing (approximate).</span>

<span style="color: #000000">light tracing (exact).</span>

<span style="color: #000000">some radiosity methods (approximate).</span>

### <span style="color: #000000">**Gathering methods**</span>

<span style="color: #000000">These start from the camera and/or the scene geometry. Note that gathering methods can be either exact or approximate.</span>

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">They work based on which parts of the scene we are interested in; therefore, they can be more efficient than shooting methods.</span>

<span style="color: #000000">Can produce a very precise solution for all visible parts of the image.</span>

<span style="color: #000000">Can simulate various light effects (object and environment lights), non-physical lights.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">Some light effects (caustics from point lights or small area lights) are difficult or impossible to simulate.</span>

<span style="color: #000000">Examples</span>

<span style="color: #000000">path tracing (exact)</span>

<span style="color: #000000">irradiance caching (e.g. final gathering in mental ray), (approximate).</span>

<span style="color: #000000">some radiosity methods (approximate).</span>

### <span style="color: #000000">**Hybrid methods**</span>

<span style="color: #000000">These combine shooting and gathering; again, hybrid methods can be either exact or approximate.</span>

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Can simulate nearly all kinds of light effects</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">May be difficult to implement and/or set up.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">final gathering + photon mapping in mental ray (approximate).</span>

<span style="color: #000000">Brute Force GI + Photon Map (Deprecated) in V-Ray (approximate).</span>

<span style="color: #000000">bi-directional path tracing and metropolis light transport (exact).</span>

<span style="color: #000000">some radiosity methods (approximate).</span>


## <span style="color: #000000">**III: Approximate Methods: View-Dependent vs View-Independent Solutions**</span>

---

<span style="color: #000000">Some approximate methods allow caching the GI solution. The cache can be either view-dependent or view-independent.</span>

### <span style="color: #000000">**Shooting methods**</span>

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Shooting methods typically produce a view-independent solution.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">The solution is typically of low quality (blurry and lacking details). Detailed solution requires a lot of time and/or memory.</span>

<span style="color: #000000">Adaptive solutions are difficult to produce.</span>

<span style="color: #000000">Regions that are far from light sources may be computed with insufficient accuracy.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">photon mapping</span>

<span style="color: #000000">some radiosity methods</span>

### <span style="color: #000000">**Gathering methods**</span>

<span style="color: #000000">Gathering methods and some hybrid methods allow for both view-dependent and view-independent solutions.</span>

#### **View-dependent solutions**

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Only the relevant parts of the scene are taken into consideration (no time is wasted on regions that are not visible).</span>

<span style="color: #000000">Can work with any kind of geometry (i.e. no restriction on geometry type).</span>

<span style="color: #000000">Can produce very high-quality results (keeping all the fine details).</span>

<span style="color: #000000">In some methods, view-dependent portions of the solution can be cached as well (glossy reflections, refractions, etc.).</span>

<span style="color: #000000">Require less memory than a view-independent solution.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">Requires updating for different camera positions; still, in some implementations portions of the solution may be re-used.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">Irradiance caching (in V-Ray, mental ray, finalRender, Brazil r/s, 3ds Max's light tracer).</span>

#### <span style="color: #000000">**View-independent solutions**</span>

<span style="color: #000000">Advantages:</span>

<span style="color: #000000">Solution needs to be computed only once.</span>

<span style="color: #000000">Disadvantages:</span>

<span style="color: #000000">All of the scene geometry must be considered, even though some of it may never be visible.</span>

<span style="color: #000000">The type of geometry in the scene is usually restricted to triangular or quadrangular meshes (no procedural or infinite geometry allowed).</span>

<span style="color: #000000">Detailed solutions require lots of memory.</span>

<span style="color: #000000">Only the diffuse portion of the solution can be cached; view-dependent portions (glossy reflections) must still be computed.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">Some radiosity methods.</span>

### <span style="color: #000000">**Hybrid methods**</span>

<span style="color: #000000">Different combinations of view-dependent and view-independent techniques can be combined.</span>

<span style="color: #000000">Examples:</span>

<span style="color: #000000">photon mapping (deprecated) and Light Cache in V-Ray.</span>

<span style="color: #000000">photon mapping and final gathering in mental ray.</span>

<span style="color: #000000">radiosity and light tracer in 3ds Max.</span>


## <span style="color: #000000">**GI Methods Supported by V-Ray**</span>

---

<span style="color: #000000">V-Ray supports a number of different methods for solving the GI equation - exact, approximate, shooting, and gathering. Some methods are more suitable for some specific types of scenes.</span>

### <span style="color: #000000">**Exact methods**</span>

<span style="color: #000000">Brute Force GI in V-Ray is an exact method for calculating the rendering equation.</span>

### <span style="color: #000000">**Approximate methods**</span>

<span style="color: #000000">Light Cache in V-Ray is an approximate method (just as other legacy methods in V-Ray like the Irradiance Map).</span>

### <span style="color: #000000">**Shooting methods**</span>

<span style="color: #000000">The photon map (Deprecated) was the only shooting method in V-Ray. Caustics can also be computed with photon mapping, in combination with a gathering method. </span>

### <span style="color: #000000">**Gathering methods**</span>

<span style="color: #000000">All other methods in V-Ray (</span>Brute Force GI, Light Cache<span style="color: #000000">) are gathering methods.</span>

### <span style="color: #000000">**Hybrid methods**</span>

<span style="color: #000000">V-Ray uses a fixed selection of Brute Force GI for calculating the primary bounces and allows you to combine it with an exact (Brute Force) or approximate (Light Cache) method for secondary bounces.</span>