What techniques should someone look at when getting into real time global illumination (for dynamic lighting scenarios)?

It's hard to get a real grip on the different mentioned techniques without knowing anything about the subject. If I wanted to incorporate GI into my graphics engine, where should I start reading as a baseline? Which algorithms are implementable in a reasonable timeframe by someone new (i.e. not a highly specialized algorithm that gains minor performance for months of work) and which are not completely outdated by now (i.e. straight up replaced by something simply prettier and faster)?

Photon mapping seems to come up a lot, and I've read about things like voxel cone tracing and more specific algorithms, e.g. this technique used in CryEngine 3. However, knowing next to nothing about the field it's hard to decide where to start.

What general techniques are worth looking into?

  • \$\begingroup\$ Are you specifically looking for dynamic global illumination? There are many well understood and documented algorithms for static (aka precomputed) global illumination, but I get the feeling you are not looking for those. \$\endgroup\$ Commented Aug 18, 2013 at 20:56
  • 1
    \$\begingroup\$ While an interesting topic, this question is essentially a "What to learn next", and doesn't really have a correct answer. Instead, I only see it generating a list of topics (which I believe is exactly what you're after). It's certainly a cool topic, but it's a discussion topic, and likely not a fit for the site. \$\endgroup\$
    – House
    Commented Aug 18, 2013 at 22:32
  • 1
    \$\begingroup\$ A question about what the current state of the art is would be highly localized in time. \$\endgroup\$
    – user1430
    Commented Aug 19, 2013 at 0:40
  • 1
    \$\begingroup\$ 9 upvotes and closed? Are you serious? @Byte56 \$\endgroup\$
    – ashes999
    Commented Aug 19, 2013 at 2:53
  • 1
    \$\begingroup\$ @JoshPetrie Perhaps when worded as state of the art, but this question has the potential to have very useful answers and the reason for close seems to be rather superficial. \$\endgroup\$ Commented Aug 19, 2013 at 4:58

1 Answer 1


Why don't you look into my MSc thesis?

The result apparently blew too hard for SIGGRAPH to accept (they rejected my paper) and I didn't submit to any other conferences. But it still presents a good introduction to GI, written in typical bobobobo understandability (actually some sections go into a bit too much depth, but hey).

You'll want to look at section 2.4, which very quickly and with references runs through some of the newer real-time gi algorithms including

  • real time ray tracing
  • real time radiosity (enlighten/bf3)
  • deferred shading and screen space methods (ssdo, ssao)
  • precomputed radiance transfer and spherical harmonics

That's all I got in my survey. Disclaimer that I may have missed something.

Anyway, you really have no hope of implementing all of these in 3 months. I'd say pick one and work with it. Real-time ray tracing is by far the most exciting to me, because it's a true gi method. Unlike screen space methods, rtrt isn't a "hack" -- it doesn't suffer from weird effects that ssdo does:

enter image description here

  • \$\begingroup\$ >Anyway, you really have no hope of implementing all of these in 3 months. I'd say pick one and work with it.< That's disappointing. I'm not sure how I would approach a single algorithm in a manner that's worth a bachelors thesis. I think just implementing it to see how it looks isn't nearly enough. And I don't think I'm capable of coming up with my own improvements on a particular algorithm (just don't know anything about the field). Well at least, I'd like to not risk having to spend 6 more months studying on it. \$\endgroup\$
    – TravisG
    Commented Aug 18, 2013 at 22:53
  • \$\begingroup\$ Well, speak with your supervisor. Have you written a raytracer before? At the core of any of these is usually a raytracer. Photon mapping "parks" photons in the scene (by essentially casting rays from the light source into the scene), and after that the scene is raytraced. I honestly think RTRT is the best candidate, because getting a basic raytracer up isn't too difficult, and you can add/cut features as time permits. With some of the more advanced algorithms (such as the one you linked), they are very complicated and have a high barrier to entry. \$\endgroup\$
    – bobobobo
    Commented Aug 18, 2013 at 23:05
  • \$\begingroup\$ This made-by-evan example is a good example of rtrt running in your browser. \$\endgroup\$
    – bobobobo
    Commented Aug 18, 2013 at 23:07

Not the answer you're looking for? Browse other questions tagged .