# Rendering Equation for photons carrying flux

I am trying to understand the mathematical/physical foundations of photon mapping better.

In the forward photon tracing step it is established, that the rays are carrying portions of total power (flux) rather than radiance as it is typically done in other types of ray-tracing algorithms.

However, in all articles and tutorials I could never find a precise explanation how such flux-carrying path interacts with materials? In other words - what is the rendering equation for interaction between flux-path and a surface?

What I typically found is an algorithm, based on Russian Roulette, for building a light path. But not a foundation equation that lead to that algorithm.

In particular, I am interested in:

• Should the equation include the cosine of the incident angle or not? I suspect it shouldn't be there, as the power remains constant, but it is spread over a bigger area (thus reducing the radiance at each point, but not total flux).

• Should the BRDF function be somehow (re)normalized? For example, for a perfect diffusive material, the BRDF is a constant not greater than 1/pi, so that it is energy conserving. But for a flux-based equation, assuming it is different, energy conservation may set a different maximum value.

Note, the very similar question:

Rendering equation for Photon Mapping

refers to a different step of the photon mapping algorithm. It asks for the rendering equation where the radiance is being estimated based on the nearest stored photons. Instead, I am asking for the flux-surface interaction in an earlier stage of the algorithm, when photons are being generated and propagated.

## migrated from stackoverflow.comDec 24 '18 at 9:24

This question came from our site for professional and enthusiast programmers.

• not my cup of tea but I would expect that for solids Fresnell equation will give you ratio between how much energy is reflected/refracter/absorbed so you just configure the pseudo random generator that decide between reflect/refract to match the probability distribution. The frequency of light is not changing so nor the energy quantum should have any change ... with gases its different as there you got absorbtion/excitation instead which affects also the energy/frequency output I think... – Spektre Dec 17 '18 at 8:24
• From "A Practical Guide to GI using PMs", organized by Henrik Jensen: "Photon tracing works in exactly the same way as ray tracing except for the fact that photons propagate flux whereas rays gather radiance. This is an important distinction since the interaction of a photon with a material can be different [...]. A notable example is refraction where radiance is changed based on the relative index of refraction — this does not happen to photons" - so, I would be careful using Fresnell equations as it depends on refractive indices. That's why I want to understand the underlying equation. – CygnusX1 Dec 20 '18 at 15:35
• I thought the Fresnel equation told the probability for a photon to get reflected (instead of refracted). Is that not the case? – Julien Guertault Dec 25 '18 at 3:28
• @JulienGuertault Unless we touch quantum effects and discuss individual real photons, there is no randomness in physics of light. Any randomness is our algorithmic approximation to reduce the complexity of computation. Fresnell equations are expressed in terms of irradiance (applicable to radiance as well) and account for the fact that parallel beams of light, after refraction (using Snell's law) are closer to each other (or further apart, depending on the refraction index). This changes radiance, but not flux. Obviously, Fresnell is more, e.g. it also depends on polarisation... – CygnusX1 Dec 25 '18 at 19:55

It'd be hell a lot easier if this were on graphicsexchange, since I can't use latex here but anyways.

In the first pass of Photon Mapping you don't need to use the Flux form of rendering equation. You just divide the original flux coming from the light source among the N photons, then for each photon you use Russian Roulette to determine whether it reflects, transmits or gets absorbed and store the incoming flux.

In the second pass you need to find radiance but you have information in Flux form. The rendering equation can be simply transformed.

So all you need to do is divide the flux stored for each photon by the area. Note that the Area is often denoted as A= pi r^2 Since we are concerned with a hemisphere and the underlying area is just a circle.

About your 2nd point, I don't think the BRDF needs to be re-normalized or whatsoever since the equation is essentially the same. Note that the second term in the last equation is still a radiance written in flux form. (BRDF has units of inverse solid angle thus making the whole term radiance).

• Thank you for your answer, but this is not exactly what I asked for. I know how to find radiance out from flux. I am asking for the underlying Rendering Equation formula that is "hidden" behind the Russian Roulette step. The RR is one of possible many algorithms to approximate some underlying physical formula and I am asking what that underlying physical formula is. – CygnusX1 Dec 19 '18 at 8:14
• Hmm my bad, I misunderstood your question but I still don't get what you mean by " The RR is one of possible many algorithms to approximate some underlying physical formula". Isn't RR just a way to terminate paths with negligible wieghts without introducing bias. What sort of "underlying physical formula" are you talking about? – gallickgunner Dec 19 '18 at 9:22
• It's similar to the relation of a regular path tracer (it often uses RR too) to a Rendering Equation. The former is a way to approximate the latter. – CygnusX1 Dec 19 '18 at 14:23
• Ok it seems you think that RR is a sort of approximate solution to something when it isn't afaik. RR was introduced as early as in 1960s and was used to terminate paths in MC methods used to simulate Neutron Transport without introducing bias. Arvo and Kirk were the first ones to adapt RR being used in Physics and engg. to here in monte carlo path tracing etc. Try moving this over to the graphicsexchange as it's mostly a theoretical question and maybe someone there can answer better. – gallickgunner Dec 20 '18 at 12:41
• RR and MC methods are - by their nature - an approximate, a way to compute infinite light paths in finite time. I will follow your suggestion asking it at graphicsexchange. (Is there a way to move a question, or should I re-ask it?) – CygnusX1 Dec 20 '18 at 15:23
{"extraction_info": {"found_math": true, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 1, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0, "math_score": 0.8701300621032715, "perplexity": 769.6507231010025}, "config": {"markdown_headings": true, "markdown_code": true, "boilerplate_config": {"ratio_threshold": 0.18, "absolute_threshold": 10, "end_threshold": 15, "enable": true}, "remove_buttons": true, "remove_image_figures": true, "remove_link_clusters": true, "table_config": {"min_rows": 2, "min_cols": 3, "format": "plain"}, "remove_chinese": true, "remove_edit_buttons": true, "extract_latex": true}, "warc_path": "s3://commoncrawl/crawl-data/CC-MAIN-2019-18/segments/1555578530505.30/warc/CC-MAIN-20190421080255-20190421102255-00237.warc.gz"}