Cycles: use defensive sampling for picking BSDFs and BSSRDFs.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Wed, 13 Sep 2017 16:28:31 +0000 (18:28 +0200)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Wed, 20 Sep 2017 17:38:08 +0000 (19:38 +0200)
commit90d4b823d72922922bb3d0af48ec2f592d210cdd
tree4b1a369c372d2223a8083a5abae41adc77dbe605
parent095a01a73a35d3af57573fc724d381bcca019f54
Cycles: use defensive sampling for picking BSDFs and BSSRDFs.

For the first bounce we now give each BSDF or BSSRDF a minimum sample weight,
which helps reduce noise for a typical case where you have a glossy BSDF with
a small weight due to Fresnel, but not necessarily small contribution relative
to a diffuse or transmission BSDF below.

We can probably find a better heuristic that also enables this on further
bounces, for example when looking through a perfect mirror, but I wasn't able
to find a robust one so far.
intern/cycles/kernel/kernel_path.h
intern/cycles/kernel/kernel_shader.h
intern/cycles/kernel/split/kernel_shader_eval.h