Radiosity is basically what allows this:

In a tutorial of Cornell University about 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:

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 in the current computer graphics context derives from (and is fundamentally the same as) the radiosity method in heat transfer.

And if ray tracing is capable of:

simulating a wide variety of optical effects, such as reflection (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)

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 more efficient in solving the diffuse reflection problem?

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

• 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). Commented Aug 25, 2015 at 22:20
• 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)? Commented Aug 26, 2015 at 1:17
• @NathanReed I asked about it at ompf2 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." Commented Aug 26, 2015 at 21:10
• @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), 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? Commented Aug 26, 2015 at 21:19
• @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. Commented Aug 26, 2015 at 21:34