Cyb3rdemon
In response to your question: Photon tracing is the only rendering technique that can guarantee exact physically accurate rendering. Theoretically, because it simulates light transport as it occurs in reality (not a bidirectional process), a photon tracer can be written such that, given infinitely accurate & precise data describing a scene, there will be no difference between an uncompressed digital photograph of that scene and a photon traced image of the same scene. Any difference present is the result of propagated floating-point error and/or the failure to/decision not to incorporate something. For example, most implementations will not take the effect of gravity into account because it adds significant additional algorithmic complexity to account for something that, in most non-exotic cases, will not affect the rendering enough to change the value of any component of any pixel in the rendered image by a measurable amount (i.e. 1/256th of the maximum value). Photon tracing wastes nothing. It potentially (depends on implementation) performs the minimum amount of computation necessary to render the scene as it would appear in reality. Let's make one thing clear. Photon tracing is not a reasonable way to implement a realtime renderer or even a production renderer, nor was it ever intended to be such. Photon tracing has a few uses/purposes, primarily rendering reference images or in physical simulation. The truth is, photon tracing can do things that bidirectional path tracing simply can not do, and almost everything that it does, it does in an elegantly simple, logical, easily extensible, structured process. There is no need to generate maps or or do any of the myriad of techniques for speeding rendering through approximate means that have been conceived in the history of ray tracing. Time can be accounted for in a photon tracer, and so can countless physical properties that are dependent on time. For example, the optical properties of materials vary with temperature, and this can be accounted for (without approximation) in a photon tracer written as a time-based discrete events engine where the long-term or permanent absorption of photons increases temperature. Similarly, only photon tracing is capable of (correctly) accounting for photoluminescence. I could go on and on, listing the countless things photon tracing can do that bidirectional path tracing can't, but I've got a feeling you won't be interested because I'm guessing you're into production rendering rather than obsessively producing physically perfect images or extreme rendering (i.e. accounting for things like temperature, time, and photoluminescence). On second thought, I suppose there are a few benefits that might actually be meaningful to you. Photon tracing does diffraction, frustrated total internal reflection, depth of field and chromatic dispersion better than (read "correctly, unlike") bidirectional path tracing. The ray tracing crowd would likely ask the same question of bidirectional path tracing that you asked of photon tracing, since a sophisticated ray tracer will approximate global illumination, caustics, depth of field, etc. well enough that most people won't be able to tell the difference between its rendering and that produced by a bidirectional path tracer. Even fewer people will be able to tell the difference between the latter and that produced by a photon tracer. It's really just a matter of how much you care about that little extra accuracy and how much you care about rendering time. DanielDeibler (talk) 02:38, 26 March 2009 (UTC)