Why is the rendering equation, introduced by Kajiya in 1986, not solvable directly/analytically?
-
5$\begingroup$ Good question, no research effort. $\endgroup$– ivokabelJul 8, 2016 at 5:43
-
$\begingroup$ How much do you know about integral equations in general? Are you asking about an analytical solution to it? $\endgroup$– galoisJul 10, 2016 at 1:38
-
$\begingroup$ Because over the hemisphere, there is an infinity of random points possible, each leads to a single light path (sample). However, the computers have finite computational ability. So, instead of solving the equation analytically we estimate the outcome with the finite solution. $\endgroup$– bimyesterday
2 Answers
I'm sadly not able to add a comment to the answer above (not enough reputation), so I will do it like this.
I'd like to point out that what Dragonseel describes is simply an integral equation (specifically a Fredholm equation of the second kind). There are many such equations which do have an analytic solution; even some forms of the rendering equation have one (e.g. the solution of a white furnace can be given using a simple convergent geometric series, even though the rendering equation is infinitely recursive).
It is also not necessary to bias the estimated solution by bounding the number of recursions. Russian Roulette provides an useful tool for giving us an unbiased solution for an infinitely recursive rendering equation.
The main difficulty lies in the fact that the functions for reflectance (BRDF), emitted radiance and visibility are highly complex and often contain many discontinuities. In these cases there often is no analytic solution, or it is simply unfeasible to find such a solution. This is also true in the one dimensional case; most integrals lack analytic solutions.
Finally I'd like to note that even though most cases of the rendering equation do not have analytic solutions, there is a lot of research in forms of the rendering equation which do have an analytic solution. Using such solutions (as approximations) when possible can significantly reduce noise and can speed up rendering times.
The rendering equation is as follows:
Now, the integral is over the sphere around the point $x$. You integrate over some attenuated light, incoming from every direction.
But how much light comes in? This is the light $L(x',\omega_i)$ that some other point $x'$ reflects in the direction $\omega_i$ of point $x$.
Now you have to calculate how much light that new point $x'$ reflects, which requires solving the rendering equation for that point. And the solution for that point depends on a huge number of other points, including $x$.
In short, the rendering equation is infinitely recursive.
You cannot solve it exactly and analytically because it has infinite integrals over infinite integration domains.
But since light gets weaker each time it is reflected, at some point a human simply cannot notice the difference any more. And so you do not actually solve the rendering equation, but you limit the number of recursions (say reflections) to something that is 'close enough'.
-
1$\begingroup$ Well you probably could solve the render equation for a point analytically if youd have a stupidly simple scene. And possibly you could get an analytical solution for the entire projected image if your scene is even simpler than that. But that would be useless... :) $\endgroup$– joojaaJul 7, 2016 at 20:33
-
3$\begingroup$ The scene would have to be really simple like only a single flat object. Since there is the integration about the whole sphere even if there are any two points which can see each other the rendering equation gets infinite. Each point includes the other in the integration domain. so Only a single reflector that cannot reflect on itself. then you could solve it. Then there would simply no global lighting effects so is comes down to local lighting. And that is solvable. $\endgroup$ Jul 7, 2016 at 20:37
-
-
2$\begingroup$ @joojaa To my understanding, it's not that the rendering equation is impossible to solve in all cases, but rather that for any time it is solvable, it's of no practical use $\endgroup$– galoisJul 10, 2016 at 2:48
-
4$\begingroup$ FYI the Mathjax syntax works on this StackExchange, so if you put $ signs around your identifiers they'll look all math-y. $\endgroup$ Jul 11, 2016 at 2:08