Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/blender/session.cpp
| Show First 20 Lines • Show All 600 Lines • ▼ Show 20 Lines | void BlenderSession::bake(BL::Depsgraph &b_depsgraph_, | ||||
| /* Add render pass that we want to bake, and name it Combined so that it is | /* Add render pass that we want to bake, and name it Combined so that it is | ||||
| * used as that on the Blender side. */ | * used as that on the Blender side. */ | ||||
| Pass *pass = scene->create_node<Pass>(); | Pass *pass = scene->create_node<Pass>(); | ||||
| pass->set_name(ustring("Combined")); | pass->set_name(ustring("Combined")); | ||||
| pass->set_type(bake_type_to_pass(bake_type, bake_filter)); | pass->set_type(bake_type_to_pass(bake_type, bake_filter)); | ||||
| pass->set_include_albedo((bake_filter & BL::BakeSettings::pass_filter_COLOR)); | pass->set_include_albedo((bake_filter & BL::BakeSettings::pass_filter_COLOR)); | ||||
| if (pass->get_type() == PASS_COMBINED) { | session->set_display_driver(nullptr); | ||||
| session->set_output_driver(make_unique<BlenderOutputDriver>(b_engine)); | |||||
| if (!session->progress.get_cancel()) { | |||||
| /* Sync scene. */ | |||||
| BL::Object b_camera_override(b_engine.camera_override()); | |||||
| sync->sync_camera(b_render, b_camera_override, width, height, ""); | |||||
| sync->sync_data( | |||||
| b_render, b_depsgraph, b_v3d, b_camera_override, width, height, &python_thread_state); | |||||
| /* Filtering settings for combined pass. */ | /* Filtering settings for combined pass. */ | ||||
| if (pass->get_type() == PASS_COMBINED) { | |||||
| Integrator *integrator = scene->integrator; | Integrator *integrator = scene->integrator; | ||||
| integrator->set_use_direct_light((bake_filter & BL::BakeSettings::pass_filter_DIRECT) != 0); | integrator->set_use_direct_light((bake_filter & BL::BakeSettings::pass_filter_DIRECT) != 0); | ||||
| integrator->set_use_indirect_light((bake_filter & BL::BakeSettings::pass_filter_INDIRECT) != | integrator->set_use_indirect_light((bake_filter & BL::BakeSettings::pass_filter_INDIRECT) != | ||||
| 0); | 0); | ||||
| integrator->set_use_diffuse((bake_filter & BL::BakeSettings::pass_filter_DIFFUSE) != 0); | integrator->set_use_diffuse((bake_filter & BL::BakeSettings::pass_filter_DIFFUSE) != 0); | ||||
| integrator->set_use_glossy((bake_filter & BL::BakeSettings::pass_filter_GLOSSY) != 0); | integrator->set_use_glossy((bake_filter & BL::BakeSettings::pass_filter_GLOSSY) != 0); | ||||
| integrator->set_use_transmission((bake_filter & BL::BakeSettings::pass_filter_TRANSMISSION) != | integrator->set_use_transmission( | ||||
| 0); | (bake_filter & BL::BakeSettings::pass_filter_TRANSMISSION) != 0); | ||||
| integrator->set_use_emission((bake_filter & BL::BakeSettings::pass_filter_EMIT) != 0); | integrator->set_use_emission((bake_filter & BL::BakeSettings::pass_filter_EMIT) != 0); | ||||
| } | } | ||||
| session->set_display_driver(nullptr); | /* Always use transpanent background for baking. */ | ||||
| session->set_output_driver(make_unique<BlenderOutputDriver>(b_engine)); | scene->background->set_transparent(true); | ||||
| if (!session->progress.get_cancel()) { | /* Load built-in images from Blender. */ | ||||
| /* Sync scene. */ | |||||
| BL::Object b_camera_override(b_engine.camera_override()); | |||||
| sync->sync_camera(b_render, b_camera_override, width, height, ""); | |||||
| sync->sync_data( | |||||
| b_render, b_depsgraph, b_v3d, b_camera_override, width, height, &python_thread_state); | |||||
| builtin_images_load(); | builtin_images_load(); | ||||
| } | } | ||||
| /* Object might have been disabled for rendering or excluded in some | /* Object might have been disabled for rendering or excluded in some | ||||
| * other way, in that case Blender will report a warning afterwards. */ | * other way, in that case Blender will report a warning afterwards. */ | ||||
| bool object_found = false; | bool object_found = false; | ||||
| foreach (Object *ob, scene->objects) { | foreach (Object *ob, scene->objects) { | ||||
| if (ob->name == b_object.name()) { | if (ob->name == b_object.name()) { | ||||
| ▲ Show 20 Lines • Show All 378 Lines • Show Last 20 Lines | |||||