Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/blender/blender_sync.cpp
| Show First 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | BlenderSync::BlenderSync(BL::RenderEngine& b_engine, | ||||
| BL::Scene& b_scene, | BL::Scene& b_scene, | ||||
| Scene *scene, | Scene *scene, | ||||
| bool preview, | bool preview, | ||||
| Progress &progress) | Progress &progress) | ||||
| : b_engine(b_engine), | : b_engine(b_engine), | ||||
| b_data(b_data), | b_data(b_data), | ||||
| b_depsgraph(b_depsgraph), | b_depsgraph(b_depsgraph), | ||||
| b_scene(b_scene), | b_scene(b_scene), | ||||
| b_scene_layer(b_engine.scene_layer()), | b_view_layer(b_engine.view_layer()), | ||||
| shader_map(&scene->shaders), | shader_map(&scene->shaders), | ||||
| object_map(&scene->objects), | object_map(&scene->objects), | ||||
| mesh_map(&scene->meshes), | mesh_map(&scene->meshes), | ||||
| light_map(&scene->lights), | light_map(&scene->lights), | ||||
| particle_system_map(&scene->particle_systems), | particle_system_map(&scene->particle_systems), | ||||
| world_map(NULL), | world_map(NULL), | ||||
| world_recalc(false), | world_recalc(false), | ||||
| scene(scene), | scene(scene), | ||||
| ▲ Show 20 Lines • Show All 128 Lines • ▼ Show 20 Lines | |||||
| void BlenderSync::sync_data(BL::RenderSettings& b_render, | void BlenderSync::sync_data(BL::RenderSettings& b_render, | ||||
| BL::SpaceView3D& b_v3d, | BL::SpaceView3D& b_v3d, | ||||
| BL::Object& b_override, | BL::Object& b_override, | ||||
| int width, int height, | int width, int height, | ||||
| void **python_thread_state, | void **python_thread_state, | ||||
| const char *layer) | const char *layer) | ||||
| { | { | ||||
| sync_render_layers(b_v3d, layer); | sync_view_layers(b_v3d, layer); | ||||
| sync_integrator(); | sync_integrator(); | ||||
| sync_film(); | sync_film(); | ||||
| sync_shaders(); | sync_shaders(); | ||||
| sync_images(); | sync_images(); | ||||
| sync_curve_settings(); | sync_curve_settings(); | ||||
| mesh_synced.clear(); /* use for objects and motion sync */ | mesh_synced.clear(); /* use for objects and motion sync */ | ||||
| ▲ Show 20 Lines • Show All 161 Lines • ▼ Show 20 Lines | void BlenderSync::sync_film() | ||||
| } | } | ||||
| if(film->modified(prevfilm)) | if(film->modified(prevfilm)) | ||||
| film->tag_update(scene); | film->tag_update(scene); | ||||
| } | } | ||||
| /* Render Layer */ | /* Render Layer */ | ||||
| void BlenderSync::sync_render_layers(BL::SpaceView3D& b_v3d, const char *layer) | void BlenderSync::sync_view_layers(BL::SpaceView3D& b_v3d, const char *layer) | ||||
| { | { | ||||
| string layername; | string layername; | ||||
| /* 3d view */ | /* 3d view */ | ||||
| if(b_v3d) { | if(b_v3d) { | ||||
| layername = b_scene.render_layers.active().name(); | layername = b_scene.view_layers.active().name(); | ||||
| layer = layername.c_str(); | layer = layername.c_str(); | ||||
| } | } | ||||
| /* render layer */ | /* render layer */ | ||||
| BL::Scene::render_layers_iterator b_rlay; | BL::Scene::view_layers_iterator b_rlay; | ||||
| bool first_layer = true; | bool first_layer = true; | ||||
| uint layer_override = get_layer(b_engine.layer_override()); | uint layer_override = get_layer(b_engine.layer_override()); | ||||
| uint scene_layers = layer_override ? layer_override : get_layer(b_scene.layers()); | uint view_layers = layer_override ? layer_override : get_layer(b_scene.layers()); | ||||
| for(b_scene.render_layers.begin(b_rlay); b_rlay != b_scene.render_layers.end(); ++b_rlay) { | for(b_scene.view_layers.begin(b_rlay); b_rlay != b_scene.view_layers.end(); ++b_rlay) { | ||||
| if((!layer && first_layer) || (layer && b_rlay->name() == layer)) { | if((!layer && first_layer) || (layer && b_rlay->name() == layer)) { | ||||
| render_layer.name = b_rlay->name(); | view_layer.name = b_rlay->name(); | ||||
| render_layer.holdout_layer = 0; | view_layer.holdout_layer = 0; | ||||
| render_layer.exclude_layer = 0; | view_layer.exclude_layer = 0; | ||||
| render_layer.scene_layer = scene_layers & ~render_layer.exclude_layer; | view_layer.view_layer = view_layers & ~view_layer.exclude_layer; | ||||
| render_layer.scene_layer |= render_layer.exclude_layer & render_layer.holdout_layer; | view_layer.view_layer |= view_layer.exclude_layer & view_layer.holdout_layer; | ||||
| render_layer.layer = (1 << 20) - 1; | view_layer.layer = (1 << 20) - 1; | ||||
| render_layer.layer |= render_layer.holdout_layer; | view_layer.layer |= view_layer.holdout_layer; | ||||
| render_layer.material_override = PointerRNA_NULL; | view_layer.material_override = PointerRNA_NULL; | ||||
| render_layer.use_background_shader = b_rlay->use_sky(); | view_layer.use_background_shader = b_rlay->use_sky(); | ||||
| render_layer.use_background_ao = b_rlay->use_ao(); | view_layer.use_background_ao = b_rlay->use_ao(); | ||||
| render_layer.use_surfaces = b_rlay->use_solid(); | view_layer.use_surfaces = b_rlay->use_solid(); | ||||
| render_layer.use_hair = b_rlay->use_strand(); | view_layer.use_hair = b_rlay->use_strand(); | ||||
| render_layer.bound_samples = false; | view_layer.bound_samples = false; | ||||
| render_layer.samples = 0; | view_layer.samples = 0; | ||||
| } | } | ||||
| first_layer = false; | first_layer = false; | ||||
| } | } | ||||
| } | } | ||||
| /* Images */ | /* Images */ | ||||
| void BlenderSync::sync_images() | void BlenderSync::sync_images() | ||||
| ▲ Show 20 Lines • Show All 97 Lines • ▼ Show 20 Lines | #define MAP_PASS(passname, offset) if(name == passname) return offset; | ||||
| MAP_PASS("Image", DENOISING_PASS_COLOR); | MAP_PASS("Image", DENOISING_PASS_COLOR); | ||||
| MAP_PASS("Image Variance", DENOISING_PASS_COLOR_VAR); | MAP_PASS("Image Variance", DENOISING_PASS_COLOR_VAR); | ||||
| #undef MAP_PASS | #undef MAP_PASS | ||||
| return -1; | return -1; | ||||
| } | } | ||||
| array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay, | array<Pass> BlenderSync::sync_render_passes(BL::RenderLayer& b_rlay, | ||||
| BL::SceneLayer& b_slay, | BL::ViewLayer& b_slay, | ||||
| const SessionParams &session_params) | const SessionParams &session_params) | ||||
| { | { | ||||
| array<Pass> passes; | array<Pass> passes; | ||||
| Pass::add(PASS_COMBINED, passes); | Pass::add(PASS_COMBINED, passes); | ||||
| if(!session_params.device.advanced_shading) { | if(!session_params.device.advanced_shading) { | ||||
| return passes; | return passes; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 277 Lines • ▼ Show 20 Lines | SessionParams BlenderSync::get_session_params(BL::RenderEngine& b_engine, | ||||
| params.reset_timeout = (double)get_float(cscene, "debug_reset_timeout"); | params.reset_timeout = (double)get_float(cscene, "debug_reset_timeout"); | ||||
| params.text_timeout = (double)get_float(cscene, "debug_text_timeout"); | params.text_timeout = (double)get_float(cscene, "debug_text_timeout"); | ||||
| /* progressive refine */ | /* progressive refine */ | ||||
| params.progressive_refine = get_boolean(cscene, "use_progressive_refine") && | params.progressive_refine = get_boolean(cscene, "use_progressive_refine") && | ||||
| !b_r.use_save_buffers(); | !b_r.use_save_buffers(); | ||||
| if(params.progressive_refine) { | if(params.progressive_refine) { | ||||
| BL::Scene::render_layers_iterator b_rlay; | BL::Scene::view_layers_iterator b_rlay; | ||||
| for(b_scene.render_layers.begin(b_rlay); b_rlay != b_scene.render_layers.end(); ++b_rlay) { | for(b_scene.view_layers.begin(b_rlay); b_rlay != b_scene.view_layers.end(); ++b_rlay) { | ||||
| PointerRNA crl = RNA_pointer_get(&b_rlay->ptr, "cycles"); | PointerRNA crl = RNA_pointer_get(&b_rlay->ptr, "cycles"); | ||||
| if(get_boolean(crl, "use_denoising")) { | if(get_boolean(crl, "use_denoising")) { | ||||
| params.progressive_refine = false; | params.progressive_refine = false; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| if(background) { | if(background) { | ||||
| Show All 35 Lines | |||||