From f0be276514f2b7cae27c744ac80f999fbc69f12f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 18 Nov 2021 16:07:47 +0100 Subject: 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. --- intern/cycles/scene/integrator.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'intern/cycles/scene') 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; -- cgit v1.2.3