Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/blender/sync.cpp
| Show First 20 Lines • Show All 623 Lines • ▼ Show 20 Lines | static Pass *pass_add(Scene *scene, | ||||
| pass->set_type(type); | pass->set_type(type); | ||||
| pass->set_name(ustring(name)); | pass->set_name(ustring(name)); | ||||
| pass->set_mode(mode); | pass->set_mode(mode); | ||||
| return pass; | return pass; | ||||
| } | } | ||||
| static Pass *pass_add_lpe(Scene *scene, const char *name, const char *expression) | |||||
| { | |||||
| Pass *pass = scene->create_node<Pass>(); | |||||
| pass->set_type(PASS_AOV_LPE); | |||||
| pass->set_name(ustring(name)); | |||||
| pass->set_mode(PassMode::DENOISED); | |||||
| pass->set_light_path_expression(ustring(expression)); | |||||
| return pass; | |||||
| } | |||||
| void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_view_layer) | void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_view_layer) | ||||
| { | { | ||||
| PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); | PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles"); | ||||
| /* Delete all existing passes. */ | /* Delete all existing passes. */ | ||||
| set<Pass *> clear_passes(scene->passes.begin(), scene->passes.end()); | set<Pass *> clear_passes(scene->passes.begin(), scene->passes.end()); | ||||
| scene->delete_nodes(clear_passes); | scene->delete_nodes(clear_passes); | ||||
| ▲ Show 20 Lines • Show All 101 Lines • ▼ Show 20 Lines | void BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay, BL::ViewLayer &b_view_layer) | ||||
| BL::ViewLayer::aovs_iterator b_aov_iter; | BL::ViewLayer::aovs_iterator b_aov_iter; | ||||
| for (b_view_layer.aovs.begin(b_aov_iter); b_aov_iter != b_view_layer.aovs.end(); ++b_aov_iter) { | for (b_view_layer.aovs.begin(b_aov_iter); b_aov_iter != b_view_layer.aovs.end(); ++b_aov_iter) { | ||||
| BL::AOV b_aov(*b_aov_iter); | BL::AOV b_aov(*b_aov_iter); | ||||
| if (!b_aov.is_valid()) { | if (!b_aov.is_valid()) { | ||||
| continue; | continue; | ||||
| } | } | ||||
| string name = b_aov.name(); | string name = b_aov.name(); | ||||
| bool is_color = b_aov.type() == BL::AOV::type_COLOR; | |||||
| if (is_color) { | switch (b_aov.type()) { | ||||
| case BL::AOV::type_COLOR: { | |||||
| b_engine.add_pass(name.c_str(), 4, "RGBA", b_view_layer.name().c_str()); | b_engine.add_pass(name.c_str(), 4, "RGBA", b_view_layer.name().c_str()); | ||||
| pass_add(scene, PASS_AOV_COLOR, name.c_str()); | pass_add(scene, PASS_AOV_COLOR, name.c_str()); | ||||
| break; | |||||
| } | } | ||||
| else { | case BL::AOV::type_VALUE: { | ||||
| b_engine.add_pass(name.c_str(), 1, "X", b_view_layer.name().c_str()); | b_engine.add_pass(name.c_str(), 1, "X", b_view_layer.name().c_str()); | ||||
| pass_add(scene, PASS_AOV_VALUE, name.c_str()); | pass_add(scene, PASS_AOV_VALUE, name.c_str()); | ||||
| break; | |||||
| } | |||||
| case BL::AOV::type_LPE: { | |||||
| string expression = b_aov.light_path_expression(); | |||||
| if (!expression.empty()) { | |||||
| b_engine.add_pass(name.c_str(), 4, "RGBA", b_view_layer.name().c_str()); | |||||
| pass_add_lpe(scene, name.c_str(), b_aov.light_path_expression().c_str()); | |||||
| } | |||||
| break; | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| /* Light Group passes. */ | /* Light Group passes. */ | ||||
| BL::ViewLayer::lightgroups_iterator b_lightgroup_iter; | BL::ViewLayer::lightgroups_iterator b_lightgroup_iter; | ||||
| for (b_view_layer.lightgroups.begin(b_lightgroup_iter); | for (b_view_layer.lightgroups.begin(b_lightgroup_iter); | ||||
| b_lightgroup_iter != b_view_layer.lightgroups.end(); | b_lightgroup_iter != b_view_layer.lightgroups.end(); | ||||
| ++b_lightgroup_iter) { | ++b_lightgroup_iter) { | ||||
| ▲ Show 20 Lines • Show All 277 Lines • Show Last 20 Lines | |||||