1) Jensen's Book ("Realistic Image Synthesis Using Photon Mapping")
- He, basically, invented photon mapping.
- Noticeably, The forward of the book (by Pat Hanrahan) cleverly clarifies the big picture about -radiosity, monte carlo ray tracing, and photon mapping and how are they co-related.
- The book also includes a photon mapping implementation.
- The first edition of the book had some errors, corrections to which are described here.
2) The Basic Monte Carlo Integration Technique
- The appendix A of Jensen's book has an excellent description of basic Monte Carlo integration.
- I couldn't find a better description of variance and standard deviation than this one.
3) Ray Tracing and photon mapping implementation here. It is based on this paper. The source code is a little weird ;-) I couldn't make it work in first 10 minutes, So I left it.
What am I planning to do with Photon mapping?
I shortlisted GPU photon mapping, volume rendering (participating media) as something that I would like to do with photon mapping. It turned out that it's going to be somewhat volume rendering, precisely, underwater illumination. I will be maintaining a separate post dedicated to the important resources that talk about underwater illumination ( with photon mapping or even with other techniques, for reference).
A few quick must-know-answer types questions:
1) Photon mapping's light transport notation?
Photon Map Creation Phase : L(S|D)*D
Photon Gathering/ Ray Tracing Phase : LS*E | DS*E
2) Is real time photon mapping possible today? Whats the fastest FPS for fairly complex scenes (remember- one of the motivations of saying NO to radiosity and YES to photon mapping is complex scenes; And one of the motivations of saying NO to Monte Carlo and YES to photon mapping is performance). Get the fastest FPS numbers for both CPU and GPU implementations.
4) On the same lines, photon mapping on GPU--Whats the state of the art?
5) Seems like some people prefer photon mapping, mainly because of caustics. If you try to think why radiosity won't give you caustics, then you would see that caustics involves specular objects, which radiosity is useless for. So, thats fairly straightforward for radiosity.
But, Why Monte Carlo ray tracing would not give you good caustics?
A phd dissertation helped me answer this question to a good degree. It says - "A major drawback of backward raytracing is the inability to adequately handle caustics. These are highly directional global illumination components which occur through specular reﬂections onto diffuse surfaces. They are often noticeable as iridescent highlights on otherwise dull materials from nearby specular objects. Since a backward raytracer traces rays from the observer toward the light sources it cannot predict the occurrence of caustics, as this would imply knowledge of which paths contribute to the caustic and ultimately reach the light source. Without such knowledge, rendering caustics with a backward raytracer borders on an exercise in futility, as the chances of ﬁnding paths which contribute to a caustic are miniscule.(sic)"
The dissertation also provides a few visuals to clarify the point. I found those pictures necessary to understand the point completely. Following visual from the same may help