<p>Radiosity is a way to calculate diffuse GI, i.e. every surface is assumed to be Lambertian surface without specular component. In the radiosity algorithm you split surfaces into small patches and calculate "form factor" between two patches, which defines how much energy is transferred from one patch to the other.</p>

<p>The form factor between patches is calculated using the distance between patches (patches further apart means less energy transferred between them), their respective orientation (two patches facing each other transfer more energy than when they face away from each other), the visibility (if patch is occluded, it doesn't transfer energy to the patch) and their size (larger surfaces emit more energy). The form factor obeys reciprocity which means that the factor for patches A and B can be used for energy transmission calculation from A to B and from B to A.</p>

<p><a href="https://i.sstatic.net/Yh4v5.png" rel="nofollow noreferrer"><img src="https://i.sstatic.net/Yh4v5.png" alt="enter image description here"></a></p>

<p>To calculate radiosity for a patch, you iterate through all patches and accumulate the energy from other patches using their respective form factors and the luminance of each patch. This is a single iteration of the radiosity algorithm, and for multiple light bounces you can run multiple iterations of this same algorithm. This can be implemented for example by rendering scene around each patch to a hemicube and accumulating the result from the cube for each patch.</p>

<p>To answer your question if radiosity is a full GI solution - no it's not. Since all surfaces are Lambertian, there's no specular component to it, so you would need to use other techniques in addition for the full lighting solution. The result of radiosity is usually also cached into lightmaps with limited resolution so you may need to use AO to provide higher frequency lighting details.</p>

CC BY-SA 3.0
2016-10-30T05:49:09.223Z
Do most engines like UE4, Unity, Frostbite etc use this as a global illumination technique alongside other methods? I know UE4 has Lightmass and Unity uses Enlighten, are they basically radiosity 'engines'? What other ways can you bake light or calculate indirect lighting in real time?
Arjan Singh
CC BY-SA 3.0
2016-10-30T16:38:57.687Z
All real-time engines combine some kind of indirect illumination approximation (radiosity based or something else) with other techniques for more complete rendering equation. Your question about different techniques to approximate indirect illumination warrants its own question though as it's too broad of a question to answer in comments.
JarkkoL
CC BY-SA 3.0
2016-11-02T08:23:22.180Z
Could you recommend any good tutorials on the topic?
Arjan Singh
CC BY-SA 3.0
2016-10-29T17:43:48.003Z
2017-08-17T20:22:34.490Z
2017-08-17T20:22:34.490Z
JarkkoL
<p>After reading a wikipedia article about <strong><a href="https://en.wikipedia.org/wiki/Global_illumination">Global Illumination</a></strong> It mentions a variety of techniques like Ray Tracing, Path Tracing and Ambient Occlusion. One technique it mentions is <strong>Radiosity</strong> which I don't know much about.</p>

<p>After a quick google search I found this <a href="https://mynameismjp.wordpress.com/2011/01/31/radiosity-dx11-style/"><strong>blog post</strong></a> which discusses what it is, a basic overview &amp; implementation details. However I'm still a little confused. So from what I gather it is a way to precompute diffuse lighting on to a lightmap <strong>to give the illusion of light bounces?</strong> Could someone explain it to me over here without all the jargon? Is this technique used alongside techniques like <strong>Image Based Lighting &amp; Ambient Occlusion</strong> or is it intended to be an entire Global Illumination technique by itself? </p>

<lighting><physically-based><global-illumination><ambient-occlusion><radiosity>
What is Radiosity?
Arjan Singh
# What is Radiosity?

(Asked by: username_0 on 2016-10-29)

After reading a wikipedia article about **[Global Illumination](https://en.wikipedia.org/wiki/Global_illumination)** It mentions a variety of techniques like Ray Tracing, Path Tracing and Ambient Occlusion. One technique it mentions is **Radiosity** which I don't know much about.

After a quick google search I found this [**blog post**](https://mynameismjp.wordpress.com/2011/01/31/radiosity-dx11-style/) which discusses what it is, a basic overview & implementation details. However I'm still a little confused. So from what I gather it is a way to precompute diffuse lighting on to a lightmap **to give the illusion of light bounces?** Could someone explain it to me over here without all the jargon? Is this technique used alongside techniques like **Image Based Lighting & Ambient Occlusion** or is it intended to be an entire Global Illumination technique by itself?

**Tags:** lighting, physically-based, global-illumination, ambient-occlusion, radiosity


---

## 1 answers

### Answer by username_1 on 2016-10-29. Score: 3 | Accepted answer

Radiosity is a way to calculate diffuse GI, i.e. every surface is assumed to be Lambertian surface without specular component. In the radiosity algorithm you split surfaces into small patches and calculate "form factor" between two patches, which defines how much energy is transferred from one patch to the other.

The form factor between patches is calculated using the distance between patches (patches further apart means less energy transferred between them), their respective orientation (two patches facing each other transfer more energy than when they face away from each other), the visibility (if patch is occluded, it doesn't transfer energy to the patch) and their size (larger surfaces emit more energy). The form factor obeys reciprocity which means that the factor for patches A and B can be used for energy transmission calculation from A to B and from B to A.

[![enter image description here](https://i.sstatic.net/Yh4v5.png)](https://i.sstatic.net/Yh4v5.png)

To calculate radiosity for a patch, you iterate through all patches and accumulate the energy from other patches using their respective form factors and the luminance of each patch. This is a single iteration of the radiosity algorithm, and for multiple light bounces you can run multiple iterations of this same algorithm. This can be implemented for example by rendering scene around each patch to a hemicube and accumulating the result from the cube for each patch.

To answer your question if radiosity is a full GI solution - no it's not. Since all surfaces are Lambertian, there's no specular component to it, so you would need to use other techniques in addition for the full lighting solution. The result of radiosity is usually also cached into lightmaps with limited resolution so you may need to use AO to provide higher frequency lighting details.

> **Comments:**
> **username_0**: Do most engines like UE4, Unity, Frostbite etc use this as a global illumination technique alongside other methods? I know UE4 has Lightmass and Unity uses Enlighten, are they basically radiosity 'engines'? What other ways can you bake light or calculate indirect lighting in real time?  
> **username_1**: All real-time engines combine some kind of indirect illumination approximation (radiosity based or something else) with other techniques for more complete rendering equation. Your question about different techniques to approximate indirect illumination warrants its own question though as it's too broad of a question to answer in comments.  
> **username_0**: Could you recommend any good tutorials on the topic?  

---

