I finished reading through Björn Engelen's thesis on Probabilistic Visibility and I would like to spend this post to summarize some of his results, explain the idea behind probabilistic visibility and prove that probabilistic visibility works. I will conclude with an implementation of a naïve probabilistic visibility algorithm in my own ray tracer to demonstrate the algoritm.
Since HTML has little support for mathematical formules, the main content will be available in this pdf file: Probabilistic Visibility Post.
The main conclusion will be restated here. It can be proved that the probabilistic visibility estimation will converge to the correct solution. However, since the evaluation is a Monte-Carlo process, it will introduce more variance in the estimation of the radiance. The upside is, that the number of intersections needed to perform the probabilistic evaluation is a lot less than the number of intersections for deterministic evaluation.
The experiments by Björn and the implementation in my own ray tracer confirm these results. Below are some images with an increasing number of shadow rays.
Deterministic visibility (16 shadow rays) |
Probabilistic visibility (16 shadow rays)
|
Deterministic visibility (64 shadow rays) |
Probabilistic Visibility (64 shadow rays) |
Deterministic Visibility (256 shadow rays) |
Probabilistic Visibility (256 shadow rays) |
The number of intersections evolves as shown in the next graph:
And when we divide the number of intersections for deterministic visibility, by the number of probabilistic visibility, it shows that deterministic visibility requires 50% more intersections.
For a more detailed report, consult the pdf.