<p>Radiosity does not account for specular reflections (i.e. it only handles diffuse reflections). Whitted's ray-tracing only considers glossy or diffuse reflection, possibly mirror-reflected. And finally, Kajiya's path-tracing is the most general one [2], handling any number of diffuse, glossy and specular reflections.</p>

<p>So I think it depends on what you means by "ray-tracing": the technique developed by Whitted or any kind of "tracing rays"...</p>

<p>Side-note: Heckbert [1] (or Shirley?) devised a classification of light scattering events which took place as the light traveled from the luminaire to the eye. In general it has the following form:</p>

<pre><code>L(S|D)*E
</code></pre>

<p>"L" stands for luminaire, "D" for diffuse reflection, "S" for specular reflection or refraction, "E" for eye, and the symbols "*", "|", "()", "[]" come from regular expressions notation and denote "zero or more", "or", "grouping", "one of", respectively. Veach [3] extended the notation in his famous dissertation by "D" for Lambertian, "S" for specular and "G" for glossy reflection, and "T" for transmission.</p>

<p>In particular, the following techniques are classified as:</p>

<ul>
<li><p>OpenGL shading: <code>EDL</code></p></li>
<li><p>Appel's ray-casting: <code>E(D|G)L</code></p></li>
<li><p>Whitted's ray-tracing: <code>E[S*](D|G)L</code></p></li>
<li><p>Kajiya's path-tracing: <code>E[(D|G|S)+(D|G)]L</code></p></li>
<li><p>Golar's radiosity: <code>ED*L</code></p></li>
</ul>

<p>[1] Paul S. Heckbert. Adaptive radiosity textures for bidirectional ray tracing. SIGGRAPH Computer Graphics, Volume 24, Number 4, August 1990</p>

<p>[2] The Siggraph 2001 course "State of the Art in Monte Carlo Ray Tracing for Realistic Image Synthesis" says the following: "Distributed ray tracing and path tracing
includes multiple bounces involving non-specular scattering such as <code>E(D|G)*L</code>. However, even these methods ignore paths of the form <code>E(D|G)S*L</code>; that is, multiple specular bounces from the light source as in a caustic."</p>

<p>[3] Eric Veach. Robust Monte Carlo Methods for Light Transport Simulation. Ph.D. dissertation, Stanford University, December 1997</p>

CC BY-SA 3.0
2015-08-25T22:20:52.263Z
The notation for path tracing suggests that it can't handle paths like `ES*L` but of course it can if they are area lights (not punctual lights). Plus, I think that statement in your reference [2] is just plain wrong. Path tracing doesn't ignore caustics; it's just not very efficient at them (photon mapping, Metropolis, VCM etc. are better).
Nathan Reed
CC BY-SA 3.0
2015-08-26T01:17:20.417Z
Thanks Ecir for the explanation (specially the regex... I wonder if they ever considered E{2} for both eyes ;). When I mentioned "ray tracing" I was kind of quoting the tutorial of Cornell University, they didn't mention any specific technique, that's why I was doubting if radiosity was a type or partly belonged to ray tracing. So if you were to create a diffuse reflection, would you choose path-tracing over radiosity? Why (which one would be more efficient)?
Armfoot
CC BY-SA 3.0
2015-08-26T21:10:36.907Z
@NathanReed I asked about it at [ompf2](http://ompf2.com/viewtopic.php?f=6&t=2057) and ingenious says: "The only type of light paths that a forward path tracer cannot sample is E(D|G)*S+L, where L is a light source whose definition involves a delta distribution, either in the directional emission or the positional. Examples are point lights and directional lights. Such paths can be described using Veach's extended notation for luminaires and sensors, see section 8.3.2 in his thesis."
Ecir Hana
CC BY-SA 3.0
2015-08-26T21:19:59.523Z
@Armfoot I would definitely go with path tracing. Lots of research, books, code to learn from. I don't know which would be faster, though, too many variables (acceleration structure, shading system, ...). Radiosity apparently simulates the heat propagation after splitting the scene into many tiny triangles ([FEM](https://en.wikipedia.org/wiki/Finite_element_method)), I never tried it and the only product to used it I know of was Autodesk Lightscape. Last but not least, are you really sure you will ever need only diffuse reflections?
Ecir Hana
CC BY-SA 3.0
2015-08-26T21:34:20.893Z
@Armfoot The notation doesn't use E{2} for the same reason that it doesn't use L{n} for multiple lights. This describes a single path, or a single sample. The way that we normally formalise Monte Carlo rendering is to take the Kajiya rendering equation, and then turn it into a random variable, the expected value of which is the solution to the equation. You can then calculate the value of a pixel by taking lots of samples and estimating the mean. Light paths more or less correspond to Feynman diagrams.
Pseudonym
CC BY-SA 3.0
2015-08-27T10:14:45.790Z
Thanks again Ecir, I get your point: if we can have a lot more with one method, it's kind of pointless to pursue another if we don't know exactly how better it will perform.
Armfoot
CC BY-SA 3.0
2015-08-27T10:22:20.827Z
I was trying to make a little joke when I mentioned E{2} @Pseudonym but thanks for further explaining why it's a single path and the reason behind it :)
Armfoot
CC BY-SA 4.0
2019-01-23T17:55:32.867Z
What I'm not clear on is what the difference is between EDL vs ED*L? Is EDL not multiplicative?
Engineer
CC BY-SA 3.0
2015-08-25T16:47:01.460Z
2015-08-25T22:00:23.613Z
2015-08-25T22:00:23.613Z
Ecir Hana
<p>Radiosity is basically what allows this:
<a href="https://i.sstatic.net/j9CFM.jpg" rel="noreferrer"><img src="https://i.sstatic.net/j9CFM.jpg" alt="Direct Illumination VS Radiosity" /></a></p>
<p>In a tutorial of <a href="http://www.graphics.cornell.edu/online/tutorial/radiosity/" rel="noreferrer">Cornell University about Radiosity</a> it is mentioned that:</p>
<blockquote>
<p>A ray-traced version of the image shows only the light reaching the viewer by direct reflection -- hence misses the color effects.</p>
</blockquote>
<p>However in <a href="https://en.wikipedia.org/wiki/Radiosity_%28computer_graphics%29" rel="noreferrer">Wikipedia</a>:</p>
<blockquote>
<p>Radiosity is a global illumination algorithm in the sense that the illumination arriving on a surface comes not just directly from the light sources, but also from other surfaces reflecting light.</p>
<p>...</p>
<p>The <a href="https://en.wikipedia.org/wiki/Radiosity_(computer_graphics)#Confusion_about_terminology" rel="noreferrer">radiosity method</a> in the current computer graphics context derives from (and is fundamentally the same as) the radiosity method in heat transfer.</p>
</blockquote>
<p>And if <a href="https://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29" rel="noreferrer">ray tracing</a> is capable of:</p>
<blockquote>
<p>simulating a wide variety of optical effects, such as reflection (<a href="https://en.wikipedia.org/wiki/Diffuse_reflection" rel="noreferrer">diffuse reflection</a>) and <a href="https://en.wikipedia.org/wiki/Light_scattering" rel="noreferrer"><strong>scattering</strong> (i.e. the deflection of a ray from a straight path, for example by irregularities in the propagation medium, particles, or in the interface between two media)</a></p>
</blockquote>
<p>Has that tutorial not considered these effects or are there radiosity methods that can be used in ray tracing in order to enable them?</p>
<p>If not, couldn't these optical effects simulate radiosity entirely or is the <a href="https://en.wikipedia.org/wiki/Radiosity_(computer_graphics)#Overview_of_the_radiosity_algorithm" rel="noreferrer">radiosity algorithm</a> more efficient in solving the diffuse reflection problem?</p>

<raytracing><reflection><scattering><radiosity>
Radiosity VS Ray tracing
Armfoot
# Radiosity VS Ray tracing

(Asked by: username_0 on 2015-08-25)

Radiosity is basically what allows this:
[![Direct Illumination VS Radiosity](https://i.sstatic.net/j9CFM.jpg)](https://i.sstatic.net/j9CFM.jpg)

In a tutorial of [Cornell University about Radiosity](http://www.graphics.cornell.edu/online/tutorial/radiosity/) it is mentioned that:

> A ray-traced version of the image shows only the light reaching the viewer by direct reflection -- hence misses the color effects.

However in [Wikipedia](https://en.wikipedia.org/wiki/Radiosity_%28computer_graphics%29):

> Radiosity is a global illumination algorithm in the sense that the illumination arriving on a surface comes not just directly from the light sources, but also from other surfaces reflecting light.
>
> ...
>
> The [radiosity method](https://en.wikipedia.org/wiki/Radiosity_(computer_graphics)#Confusion_about_terminology) in the current computer graphics context derives from (and is fundamentally the same as) the radiosity method in heat transfer.

And if [ray tracing](https://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29) is capable of:

> simulating a wide variety of optical effects, such as reflection ([diffuse reflection](https://en.wikipedia.org/wiki/Diffuse_reflection)) and [**scattering** (i.e. the deflection of a ray from a straight path, for example by irregularities in the propagation medium, particles, or in the interface between two media)](https://en.wikipedia.org/wiki/Light_scattering)

Has that tutorial not considered these effects or are there radiosity methods that can be used in ray tracing in order to enable them?

If not, couldn't these optical effects simulate radiosity entirely or is the [radiosity algorithm](https://en.wikipedia.org/wiki/Radiosity_(computer_graphics)#Overview_of_the_radiosity_algorithm) more efficient in solving the diffuse reflection problem?

**Tags:** raytracing, reflection, scattering, radiosity


---

## 1 answers

### Answer by username_1 on 2015-08-25. Score: 15 | Accepted answer

Radiosity does not account for specular reflections (i.e. it only handles diffuse reflections). Whitted's ray-tracing only considers glossy or diffuse reflection, possibly mirror-reflected. And finally, Kajiya's path-tracing is the most general one [2], handling any number of diffuse, glossy and specular reflections.

So I think it depends on what you means by "ray-tracing": the technique developed by Whitted or any kind of "tracing rays"...

Side-note: Heckbert [1] (or Shirley?) devised a classification of light scattering events which took place as the light traveled from the luminaire to the eye. In general it has the following form:

```
L(S|D)*E

```

"L" stands for luminaire, "D" for diffuse reflection, "S" for specular reflection or refraction, "E" for eye, and the symbols "\*", "|", "()", "[]" come from regular expressions notation and denote "zero or more", "or", "grouping", "one of", respectively. Veach [3] extended the notation in his famous dissertation by "D" for Lambertian, "S" for specular and "G" for glossy reflection, and "T" for transmission.

In particular, the following techniques are classified as:

* OpenGL shading: `EDL`
* Appel's ray-casting: `E(D|G)L`
* Whitted's ray-tracing: `E[S*](D|G)L`
* Kajiya's path-tracing: `E[(D|G|S)+(D|G)]L`
* Golar's radiosity: `ED*L`

[1] Paul S. Heckbert. Adaptive radiosity textures for bidirectional ray tracing. SIGGRAPH Computer Graphics, Volume 24, Number 4, August 1990

[2] The Siggraph 2001 course "State of the Art in Monte Carlo Ray Tracing for Realistic Image Synthesis" says the following: "Distributed ray tracing and path tracing
includes multiple bounces involving non-specular scattering such as `E(D|G)*L`. However, even these methods ignore paths of the form `E(D|G)S*L`; that is, multiple specular bounces from the light source as in a caustic."

[3] Eric Veach. Robust Monte Carlo Methods for Light Transport Simulation. Ph.D. dissertation, Stanford University, December 1997

> **Comments:**
> **username_2**: The notation for path tracing suggests that it can't handle paths like `ES*L` but of course it can if they are area lights (not punctual lights). Plus, I think that statement in your reference [2] is just plain wrong. Path tracing doesn't ignore caustics; it's just not very efficient at them (photon mapping, Metropolis, VCM etc. are better).  
> **username_0**: Thanks username_1 for the explanation (specially the regex... I wonder if they ever considered E{2} for both eyes ;). When I mentioned "ray tracing" I was kind of quoting the tutorial of Cornell University, they didn't mention any specific technique, that's why I was doubting if radiosity was a type or partly belonged to ray tracing. So if you were to create a diffuse reflection, would you choose path-tracing over radiosity? Why (which one would be more efficient)?  
> **username_1**: @username_2 I asked about it at [ompf2](http://ompf2.com/viewtopic.php?f=6&t=2057) and ingenious says: "The only type of light paths that a forward path tracer cannot sample is E(D|G)*S+L, where L is a light source whose definition involves a delta distribution, either in the directional emission or the positional. Examples are point lights and directional lights. Such paths can be described using Veach's extended notation for luminaires and sensors, see section 8.3.2 in his thesis."  
> **username_1**: @username_0 I would definitely go with path tracing. Lots of research, books, code to learn from. I don't know which would be faster, though, too many variables (acceleration structure, shading system, ...). Radiosity apparently simulates the heat propagation after splitting the scene into many tiny triangles ([FEM](https://en.wikipedia.org/wiki/Finite_element_method)), I never tried it and the only product to used it I know of was Autodesk Lightscape. Last but not least, are you really sure you will ever need only diffuse reflections?  
> **username_3**: @username_0 The notation doesn't use E{2} for the same reason that it doesn't use L{n} for multiple lights. This describes a single path, or a single sample. The way that we normally formalise Monte Carlo rendering is to take the Kajiya rendering equation, and then turn it into a random variable, the expected value of which is the solution to the equation. You can then calculate the value of a pixel by taking lots of samples and estimating the mean. Light paths more or less correspond to Feynman diagrams.  
> **username_0**: Thanks again username_1, I get your point: if we can have a lot more with one method, it's kind of pointless to pursue another if we don't know exactly how better it will perform.  
> **username_0**: I was trying to make a little joke when I mentioned E{2} @username_3 but thanks for further explaining why it's a single path and the reason behind it :)  
> **username_4**: What I'm not clear on is what the difference is between EDL vs ED*L? Is EDL not multiplicative?  

---

