Phaton gathering
#41
Posted 17 March 2012 - 01:15 AM
As for the photon search radius, do you mean that I should start with a big radius, like x10 and bring it down a bit on every itteration till it's zero and then stop? If I use something like this...
radius = 10 for example
beta = 0.8
for each itteration {
alpha = (radius*beta+beta) / (radius*beta+1);
radius *= alpha;
}
#42
Posted 17 March 2012 - 01:51 AM
#43
Posted 17 March 2012 - 02:10 AM
#44
Posted 17 March 2012 - 02:41 AM
The progressive photon mapping paper I linked earlier outlines an algorithm that continuously shoots more photons and tightens the radius within one render, but it operates with a bit of a different data model. Read the paper for details.
#45
Posted 17 March 2012 - 03:00 AM
#46
Posted 17 March 2012 - 03:18 AM
#47
Posted 17 March 2012 - 11:23 AM
Reedbeta, on 17 March 2012 - 12:29 AM, said:
Unbiased: the correct answer is computed on average;
Consistent: converges towards the correct solution when given more samples.
#48
Posted 17 March 2012 - 06:10 PM
#49
Posted 17 March 2012 - 07:02 PM
Unbiased: Expected value of estimator is what you want to compute.
Consistent: lim_ {n->inf}(estimator) = what you want to compute (with probability one, and for whatever n is, e.g. number of photons).
In other words: Maybe the expected value of your estimator is off, but you can get arbitrary close to what you want by increasing n.
For unbiased estimators, the only error you have is the variance of the estimator.
For biased estimators, however, there is (usually a systematic) source of additional error (the bias).
Mostly this has theoretical consequences (e.g. for calculating convergence rates), and often (e.g. in computer graphics) there are biased estimators that converge more quickly than unbiased ones (much, much, much more quickly).
Just not to the exact result.
As long as you have some idea of what our bias is, it is safe to use biased estimators.
But there are also some practical consequences.
For example you can take n independent runs of an unbiased estimator and average them and can expect the error to decrease.
With an biased estimator you can average as many runs as you like, if there is a systematic error in each run, it will stay in the final result.
As was pointed our earlier in this thread, this IS of practical consequence for photon mapping.
The problem with (classical, not progressive) photon mapping is that the bias vanishes only as the number of photons (in ONE PASS) approaches infinity.
But the number of photons is bounded relatively tightly, because you'll run out of storage quickly.
So you can average 10 path tracing runs (or just let it run longer), but averaging 10 photon mapping runs with N photons each does probably not work (not that I tried it).
This was the primary motivation for progressive photon mapping.
(I actually ran into this problem when I worked on cluster rendering. Let each machine compute the whole image and average? Beep, not so easy for biased algorithms.)
Also, I'd like to point out that _estimators_ are biased or unbiased.
You state what you want to compute, and then you come up with an estimator for that.
It is perfectly valid to have an estimator that only computes direct illumination or only diffuse interreflection.
It is still unbiased, as long the expected value is the direct illumination or diffuse interreflections.
Otherwise, as was already pointed out, nothing we do in computer graphics would be really unbiased, e.g. because of machine precision. (Not that it would matter in practice.)
EDIT: Little Add-on:
Since I used path tracing as an example for "unbiased" above, I should probably add that the variants of path tracing that are usually implemented technically aren't really unbiased.
And not just because of floats and pseudorandom numbers.
Almost all tricks that you have to use to make the original estimator remotely practical introduce bias.
Examples are: limiting path length, clamping low throughput paths, next event estimation, adaptive sampling (although I'm not 100% sure with that one, it's probably unbiased if you do it right)
But the bias is in general considered negligible.
#50
Posted 18 March 2012 - 03:53 PM
Quote
And the above is also my answer to Reedbeta's post:
Reedbeta, on 17 March 2012 - 06:10 PM, said:
By the way:
macnihilist, on 17 March 2012 - 07:02 PM, said:
Examples are: limiting path length, clamping low throughput paths, next event estimation, adaptive sampling (although I'm not 100% sure with that one, it's probably unbiased if you do it right)
#51
Posted 18 March 2012 - 09:27 PM
Take Russian roulette for example, since you brought it up. The way I see it, it does not really limit path lengths, it just makes long paths less likely. So in the end you still have to cut them somewhere. Of course, you can make the probability of long paths so ridiculously low that this is merely a technicality. Still, if you take the biased-unbiased thing _really_ seriously, you can regard any practical implementation of path tracing with Russian roulette as biased. (But that is more my personal opinion, not a well established fact, as far as I know, so you people should probably take it with a grain of salt.)
#52
Posted 18 March 2012 - 09:45 PM
#53
Posted 18 March 2012 - 09:53 PM
#54
Posted 18 March 2012 - 10:35 PM
OK, it's true that averaging a large number of photon-mapping renders still leaves error on the table, due to the photon search radius in each component image. On the other hand, after thinking about it more, I think progressive photon mapping suffers from an inverse issue: while it allows arbitrarily many photons to be accumulated and gradually decreases the search radius to zero, it has a fixed, finite number of "hit points" at which it accumulates those photons.
So:
classical photon mapping: finite photon count, unbounded sample count
progressive photon mapping: finite sample count, unbounded photon count
Therefore PPM is biased and inconsistent too, under the conventional definitions, since there is error "baked in" to the chosen set of hit points. Now, if you averaged a large number of renders using PPM, you'd get different hit points for each, reducing the error associated with them - but then you must either cut off each render at a finite number of photons, reintroducing bias, or you return to having an unbounded amount of memory to store an unbounded number of hitpoints onto which you accumulate an unbounded number of photons.
Conclusion: truly unbiased rendering is not possible without an unbounded amount of memory. If you ignore numerical precision limits, then path-tracing and friends do not need unbounded memory, but photon-mapping algorithms still do.
(At least, the photon-mapping algorithms currently known still do. I can't rule out the possibility that there is some clever way of recycling hitpoints in the PPM algorithm that would solve the issue...)
#55
Posted 19 March 2012 - 06:55 AM
Reedbeta, on 18 March 2012 - 10:35 PM, said:
I haven't looked at PPM to an extend that I'd _really_ understand it, but I'm pretty sure it is biased and consistent. Maybe it's just per definition ("I only want to estimate the radiance leaving that point in that direction" instead of "I want to estimate the averaged (ir)radiance that reaches a virtual sensor in this camera"); I don't know for sure atm. Also, at least stochastic PPM should be able overcome the fixed shading samples and stay consistent.
#56
Posted 19 March 2012 - 04:13 PM
#57
Posted 21 March 2012 - 06:37 AM
macnihilist, on 19 March 2012 - 06:55 AM, said:
Yes, I think that's the case. PPM correctly estimates incoming radiance at a set of points, but doesn't support integrating incoming radiance over a domain - which isn't just for "distribution ray tracing" stuff like defocus, motion blur, and glossy reflections; it's also needed for just plain old antialiasing if you want to do it properly (with stochastic subpixel sampling and a good reconstruction filter).
Anyway, the SPPM technique is very nice and seems to solve this problem. I didn't follow all the details of their derivation why it works, but the test images are quite nice.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users












