Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/blender/blender_session.cpp
| Show First 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | BlenderSession::BlenderSession(BL::RenderEngine& b_engine, | ||||
| BL::Depsgraph& b_depsgraph, | BL::Depsgraph& b_depsgraph, | ||||
| BL::Scene& b_scene) | BL::Scene& b_scene) | ||||
| : b_engine(b_engine), | : b_engine(b_engine), | ||||
| b_userpref(b_userpref), | b_userpref(b_userpref), | ||||
| b_data(b_data), | b_data(b_data), | ||||
| b_render(b_engine.render()), | b_render(b_engine.render()), | ||||
| 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()), | ||||
| b_v3d(PointerRNA_NULL), | b_v3d(PointerRNA_NULL), | ||||
| b_rv3d(PointerRNA_NULL), | b_rv3d(PointerRNA_NULL), | ||||
| python_thread_state(NULL) | python_thread_state(NULL) | ||||
| { | { | ||||
| /* offline render */ | /* offline render */ | ||||
| width = render_resolution_x(b_render); | width = render_resolution_x(b_render); | ||||
| height = render_resolution_y(b_render); | height = render_resolution_y(b_render); | ||||
| Show All 13 Lines | BlenderSession::BlenderSession(BL::RenderEngine& b_engine, | ||||
| BL::RegionView3D& b_rv3d, | BL::RegionView3D& b_rv3d, | ||||
| int width, int height) | int width, int height) | ||||
| : b_engine(b_engine), | : b_engine(b_engine), | ||||
| b_userpref(b_userpref), | b_userpref(b_userpref), | ||||
| b_data(b_data), | b_data(b_data), | ||||
| b_render(b_scene.render()), | b_render(b_scene.render()), | ||||
| 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()), | ||||
| b_v3d(b_v3d), | b_v3d(b_v3d), | ||||
| b_rv3d(b_rv3d), | b_rv3d(b_rv3d), | ||||
| width(width), | width(width), | ||||
| height(height), | height(height), | ||||
| python_thread_state(NULL) | python_thread_state(NULL) | ||||
| { | { | ||||
| /* 3d view render */ | /* 3d view render */ | ||||
| ▲ Show 20 Lines • Show All 58 Lines • ▼ Show 20 Lines | if(session_pause == false) { | ||||
| width, height, | width, height, | ||||
| &python_thread_state, | &python_thread_state, | ||||
| b_rlay_name.c_str()); | b_rlay_name.c_str()); | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| /* for final render we will do full data sync per render layer, only | /* for final render we will do full data sync per render layer, only | ||||
| * do some basic syncing here, no objects or materials for speed */ | * 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_integrator(); | ||||
| sync->sync_camera(b_render, b_camera_override, width, height, ""); | sync->sync_camera(b_render, b_camera_override, width, height, ""); | ||||
| } | } | ||||
| /* set buffer parameters */ | /* set buffer parameters */ | ||||
| BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height); | BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height); | ||||
| session->reset(buffer_params, session_params.samples); | session->reset(buffer_params, session_params.samples); | ||||
| Show All 40 Lines | void BlenderSession::reset_session(BL::BlendData& b_data_, BL::Scene& b_scene_) | ||||
| session->stats.mem_peak = session->stats.mem_used; | session->stats.mem_peak = session->stats.mem_used; | ||||
| /* sync object should be re-created */ | /* sync object should be re-created */ | ||||
| sync = new BlenderSync(b_engine, b_data, b_depsgraph, 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 | /* for final render we will do full data sync per render layer, only | ||||
| * do some basic syncing here, no objects or materials for speed */ | * do some basic syncing here, no objects or materials for speed */ | ||||
| BL::Object b_camera_override(b_engine.camera_override()); | 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_integrator(); | ||||
| sync->sync_camera(b_render, b_camera_override, width, height, ""); | sync->sync_camera(b_render, b_camera_override, width, height, ""); | ||||
| BL::SpaceView3D b_null_space_view3d(PointerRNA_NULL); | BL::SpaceView3D b_null_space_view3d(PointerRNA_NULL); | ||||
| BL::RegionView3D b_null_region_view3d(PointerRNA_NULL); | BL::RegionView3D b_null_region_view3d(PointerRNA_NULL); | ||||
| BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, | BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, | ||||
| b_null_space_view3d, | b_null_space_view3d, | ||||
| b_null_region_view3d, | b_null_region_view3d, | ||||
| ▲ Show 20 Lines • Show All 144 Lines • ▼ Show 20 Lines | void BlenderSession::render() | ||||
| session->write_render_tile_cb = function_bind(&BlenderSession::write_render_tile, this, _1); | session->write_render_tile_cb = function_bind(&BlenderSession::write_render_tile, this, _1); | ||||
| session->update_render_tile_cb = function_bind(&BlenderSession::update_render_tile, this, _1, _2); | session->update_render_tile_cb = function_bind(&BlenderSession::update_render_tile, this, _1, _2); | ||||
| /* get buffer parameters */ | /* get buffer parameters */ | ||||
| SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background); | SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background); | ||||
| BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height); | BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_v3d, b_rv3d, scene->camera, width, height); | ||||
| /* render each layer */ | /* render each layer */ | ||||
| BL::Scene::render_layers_iterator b_layer_iter; | BL::Scene::view_layers_iterator b_layer_iter; | ||||
| BL::RenderResult::views_iterator b_view_iter; | BL::RenderResult::views_iterator b_view_iter; | ||||
| /* We do some special meta attributes when we only have single layer. */ | /* We do some special meta attributes when we only have single layer. */ | ||||
| const bool is_single_layer = (b_scene.render_layers.length() == 1); | const bool is_single_layer = (b_scene.view_layers.length() == 1); | ||||
| for(b_scene.render_layers.begin(b_layer_iter); b_layer_iter != b_scene.render_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(); | b_rlay_name = b_layer_iter->name(); | ||||
| /* temporary render result to find needed passes and views */ | /* temporary render result to find needed passes and views */ | ||||
| BL::RenderResult b_rr = begin_render_result(b_engine, 0, 0, 1, 1, b_rlay_name.c_str(), NULL); | BL::RenderResult b_rr = begin_render_result(b_engine, 0, 0, 1, 1, b_rlay_name.c_str(), NULL); | ||||
| BL::RenderResult::layers_iterator b_single_rlay; | BL::RenderResult::layers_iterator b_single_rlay; | ||||
| b_rr.layers.begin(b_single_rlay); | b_rr.layers.begin(b_single_rlay); | ||||
| /* layer will be missing if it was disabled in the UI */ | /* layer will be missing if it was disabled in the UI */ | ||||
| ▲ Show 20 Lines • Show All 905 Lines • ▼ Show 20 Lines | else { | ||||
| /* TODO(sergey): Check we're indeed in shader node tree. */ | /* TODO(sergey): Check we're indeed in shader node tree. */ | ||||
| PointerRNA ptr; | PointerRNA ptr; | ||||
| RNA_pointer_create(NULL, &RNA_Node, builtin_data, &ptr); | RNA_pointer_create(NULL, &RNA_Node, builtin_data, &ptr); | ||||
| BL::Node b_node(ptr); | BL::Node b_node(ptr); | ||||
| if(b_node.is_a(&RNA_ShaderNodeTexPointDensity)) { | if(b_node.is_a(&RNA_ShaderNodeTexPointDensity)) { | ||||
| BL::ShaderNodeTexPointDensity b_point_density_node(b_node); | BL::ShaderNodeTexPointDensity b_point_density_node(b_node); | ||||
| int length; | int length; | ||||
| int settings = background ? 1 : 0; /* 1 - render settings, 0 - vewport settings. */ | int settings = background ? 1 : 0; /* 1 - render settings, 0 - vewport settings. */ | ||||
| b_point_density_node.calc_point_density(b_scene, b_scene_layer, settings, &length, &pixels); | b_point_density_node.calc_point_density(b_scene, b_view_layer, settings, &length, &pixels); | ||||
| } | } | ||||
| } | } | ||||
| return false; | return false; | ||||
| } | } | ||||
| void BlenderSession::update_resumable_tile_manager(int num_samples) | void BlenderSession::update_resumable_tile_manager(int num_samples) | ||||
| { | { | ||||
| Show All 36 Lines | |||||