I generate random directions from the pdf of D term in GGX BRDF. On the picture, white dots are new directions and the cross is the light direction, with roughness = 1. What should I do with the directions that are generated below the hemisphere? Should and can I just discard them?

Sampled directions


1 Answer 1


Disclaimer: I am assuming that you are implementing a classical Monte Carlo estimator.

The Problem

Discarding samples will change PDF of your sampling technique. You are cutting off part of the sampled domain where PDF is non-zero, which effectively leads to a trimmed version of the original PDF but implicitly re-normalized so the remaining part integrates to 1. If you don't adjust the directly evaluated PDF accordingly, it will lead to a biased estimator.

Practically speaking, implicit re-normalization increases the actual sampling PDF $p^{new}$, and if you use $p^{old}<p^{new}$ in your computations instead, the resulting Monte Carlo estimator will yield brighter values than it should:

$$ \frac{f(x)}{p^{old}(x)} > \frac{f(x)}{p^{new}(x)} $$

A solution

Since adjusting the PDF isn't an easy thing to do, you will most likely need to treat the under-surface samples as valid but with zero contribution. Whether you handle this within your BRDF/BSDF or elsewhere in the renderer is your design decision.

Zero-contribution samples will, obviously, introduce some inefficiency in your renderer.

A better solution

You can improve the efficiency of your estimator by using a better sampling technique which tries to avoid creating samples under the surface. In case of the GGX normal distribution, there have been proposed some solutions by Eric Heitz | Eugene d’Eon in paper Importance Sampling Microfacet-Based BSDFs using the Distribution of Visible Normals. I believe there was one improved version of this technique (other that the one mentioned in the "Related Work" section) but I cannot recall the name of it. Maybe someone else can add it here...

  • $\begingroup$ I've wrestled a little bit with this issue myself but never came to a good conclusion. What would be the effect of reflecting the below hemisphere samples via the surface normal (e.g. flip the normal for that case) ? $\endgroup$
    – PaulHK
    Sep 10, 2020 at 2:42
  • $\begingroup$ @PaulHK, that's a very good question. Reflecting your samples will change the actual shape of the PDF, not just scale as for cutting samples. You would have to adjust PDF evaluation (which should be doable), but it will degrade the importance sampling somehow for grazing angles. It's a matter of practical testing to find out which approach is better. $\endgroup$
    – ivokabel
    Sep 10, 2020 at 11:09
  • $\begingroup$ I suppose if the reflected ray starts from a small distance/epsilon above the surface the ray would re-collide with the same surface, albeit from a more scattered incoming angle. $\endgroup$
    – PaulHK
    Sep 11, 2020 at 17:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.