diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-11-18 18:07:47 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-11-18 19:13:16 +0300 |
commit | f0be276514f2b7cae27c744ac80f999fbc69f12f (patch) | |
tree | d9ae4b6a4a0fdcde471893b8f3a518561bc24d1b /intern/cycles/scene | |
parent | ed91e759d1f0debce58b10261799378e1639e6c0 (diff) |
Fix T93082: Cycles baking not handling transparency correctly
For baking, replace transparent BSDF with holdout for baking. This ensure no
objects behind are baked, and that the baked image has alpha.
Diffstat (limited to 'intern/cycles/scene')
-rw-r--r-- | intern/cycles/scene/integrator.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/intern/cycles/scene/integrator.cpp b/intern/cycles/scene/integrator.cpp index 737db8b98d5..a97833a8d32 100644 --- a/intern/cycles/scene/integrator.cpp +++ b/intern/cycles/scene/integrator.cpp @@ -14,11 +14,13 @@ * limitations under the License. */ -#include "scene/integrator.h" #include "device/device.h" + #include "scene/background.h" +#include "scene/bake.h" #include "scene/camera.h" #include "scene/film.h" +#include "scene/integrator.h" #include "scene/jitter.h" #include "scene/light.h" #include "scene/object.h" @@ -212,6 +214,11 @@ void Integrator::device_update(Device *device, DeviceScene *dscene, Scene *scene if (!use_emission) { kintegrator->filter_closures |= FILTER_CLOSURE_EMISSION; } + if (scene->bake_manager->get_baking()) { + /* Baking does not need to trace through transparency, we only want to bake + * the object itself. */ + kintegrator->filter_closures |= FILTER_CLOSURE_TRANSPARENT; + } kintegrator->seed = seed; |