diff options
Diffstat (limited to 'intern/cycles/blender/blender_session.cpp')
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index d9301125641..60e49161be2 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -52,12 +52,15 @@ int BlenderSession::end_resumable_chunk = 0; BlenderSession::BlenderSession(BL::RenderEngine& b_engine, BL::UserPreferences& b_userpref, BL::BlendData& b_data, + BL::Depsgraph& b_depsgraph, BL::Scene& b_scene) : b_engine(b_engine), b_userpref(b_userpref), b_data(b_data), b_render(b_engine.render()), + b_depsgraph(b_depsgraph), b_scene(b_scene), + b_view_layer(b_engine.view_layer()), b_v3d(PointerRNA_NULL), b_rv3d(PointerRNA_NULL), python_thread_state(NULL) @@ -76,6 +79,7 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine, BlenderSession::BlenderSession(BL::RenderEngine& b_engine, BL::UserPreferences& b_userpref, BL::BlendData& b_data, + BL::Depsgraph& b_depsgraph, BL::Scene& b_scene, BL::SpaceView3D& b_v3d, BL::RegionView3D& b_rv3d, @@ -84,7 +88,9 @@ BlenderSession::BlenderSession(BL::RenderEngine& b_engine, b_userpref(b_userpref), b_data(b_data), b_render(b_scene.render()), + b_depsgraph(b_depsgraph), b_scene(b_scene), + b_view_layer(b_engine.view_layer()), b_v3d(b_v3d), b_rv3d(b_rv3d), width(width), @@ -142,7 +148,7 @@ void BlenderSession::create_session() session->scene = scene; /* create sync */ - sync = new BlenderSync(b_engine, b_data, b_scene, scene, !background, session->progress); + sync = new BlenderSync(b_engine, b_data, b_depsgraph, b_scene, scene, !background, session->progress); BL::Object b_camera_override(b_engine.camera_override()); if(b_v3d) { if(session_pause == false) { @@ -159,7 +165,7 @@ void BlenderSession::create_session() else { /* for final render we will do full data sync per render layer, only * do some basic syncing here, no objects or materials for speed */ - sync->sync_render_layers(b_v3d, NULL); + sync->sync_view_layers(b_v3d, NULL); sync->sync_integrator(); sync->sync_camera(b_render, b_camera_override, width, height, ""); } @@ -211,12 +217,12 @@ void BlenderSession::reset_session(BL::BlendData& b_data_, BL::Scene& b_scene_) session->stats.mem_peak = session->stats.mem_used; /* sync object should be re-created */ - sync = new BlenderSync(b_engine, b_data, b_scene, scene, !background, session->progress); + sync = new BlenderSync(b_engine, b_data, b_depsgraph, b_scene, scene, !background, session->progress); /* for final render we will do full data sync per render layer, only * do some basic syncing here, no objects or materials for speed */ BL::Object b_camera_override(b_engine.camera_override()); - sync->sync_render_layers(b_v3d, NULL); + sync->sync_view_layers(b_v3d, NULL); sync->sync_integrator(); sync->sync_camera(b_render, b_camera_override, width, height, ""); @@ -377,14 +383,13 @@ void BlenderSession::render() BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height); /* render each layer */ - BL::RenderSettings r = b_scene.render(); - BL::RenderSettings::layers_iterator b_layer_iter; + BL::Scene::view_layers_iterator b_layer_iter; BL::RenderResult::views_iterator b_view_iter; /* We do some special meta attributes when we only have single layer. */ - const bool is_single_layer = (r.layers.length() == 1); + const bool is_single_layer = (b_scene.view_layers.length() == 1); - for(r.layers.begin(b_layer_iter); b_layer_iter != r.layers.end(); ++b_layer_iter) { + for(b_scene.view_layers.begin(b_layer_iter); b_layer_iter != b_scene.view_layers.end(); ++b_layer_iter) { b_rlay_name = b_layer_iter->name(); /* temporary render result to find needed passes and views */ @@ -1306,7 +1311,7 @@ bool BlenderSession::builtin_image_float_pixels(const string &builtin_name, BL::ShaderNodeTexPointDensity b_point_density_node(b_node); int length; int settings = background ? 1 : 0; /* 1 - render settings, 0 - vewport settings. */ - b_point_density_node.calc_point_density(b_scene, settings, &length, &pixels); + b_point_density_node.calc_point_density(b_scene, b_view_layer, settings, &length, &pixels); } } |