Cycles: better path termination for transparency.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Tue, 20 Feb 2018 13:22:40 +0000 (14:22 +0100)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Wed, 21 Feb 2018 23:55:32 +0000 (00:55 +0100)
commit2d81758aa650256d6b6ed283e43b6c35808ed205
treedb336da6924982031bbcc30844b496d600fd407a
parent84e92f9b3c50433221a4c30f3a14713d99680f3a
Cycles: better path termination for transparency.

We now continue transparent paths after diffuse/glossy/transmission/volume
bounces are exceeded. This avoids unexpected boundaries in volumes with
transparent boundaries. It is also required for MIS to work correctly with
transparent surfaces, as we also continue through these in shadow rays.

The main visible changes is that volumes will now be lit by the background
even at volume bounces 0, same as surfaces.

Fixes T53914 and T54103.
15 files changed:
intern/cycles/kernel/closure/bsdf_transparent.h
intern/cycles/kernel/kernel_bake.h
intern/cycles/kernel/kernel_emission.h
intern/cycles/kernel/kernel_path.h
intern/cycles/kernel/kernel_path_branched.h
intern/cycles/kernel/kernel_path_state.h
intern/cycles/kernel/kernel_shader.h
intern/cycles/kernel/kernel_shadow.h
intern/cycles/kernel/kernel_subsurface.h
intern/cycles/kernel/kernel_types.h
intern/cycles/kernel/kernel_volume.h
intern/cycles/kernel/osl/osl_closures.cpp
intern/cycles/kernel/split/kernel_shader_eval.h
intern/cycles/kernel/svm/svm_closure.h
intern/cycles/render/osl.cpp