Commit: fa59c6a3e7d72d57faadcf0795848b4c3b8381d9 Author: Brecht Van Lommel Date: Tue Mar 19 18:54:17 2019 +0100 Branches: master https://developer.blender.org/rBfa59c6a3e7d72d57faadcf0795848b4c3b8381d9
Merge branch 'blender2.7' =================================================================== =================================================================== diff --cc intern/cycles/blender/blender_session.cpp index a06135b5362,87dc39ca676..cf856c3b3d4 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@@ -393,25 -379,12 +393,16 @@@ static void add_cryptomatte_layer(BL::R render_add_metadata(b_rr, prefix+"manifest", manifest); } - /* TODO(sergey): Ideally this will be an utility function in util string.h, but - * currently is relying on Blender side function, so can not do that. */ - static string make_human_readable_time(double time) - { - char time_str[128]; - BLI_timecode_string_from_time_simple(time_str, sizeof(time_str), time); - return time_str; - } - -void BlenderSession::stamp_view_layer_metadata_do(const string& prefix) +void BlenderSession::stamp_view_layer_metadata(Scene *scene, const string& view_layer_name) { BL::RenderResult b_rr = b_engine.get_result(); + string prefix = "cycles." + view_layer_name + "."; + /* Configured number of samples for the view layer. */ - b_rr.stamp_data_add_field((prefix + "samples").c_str(), - to_string(session->params.samples).c_str()); + b_rr.stamp_data_add_field( + (prefix + "samples").c_str(), + to_string(session->params.samples).c_str()); + /* Store ranged samples information. */ if(session->tile_manager.range_num_samples != -1) { b_rr.stamp_data_add_field( @@@ -421,36 -394,15 +412,36 @@@ (prefix + "range_num_samples").c_str(), to_string(session->tile_manager.range_num_samples).c_str()); } -} -void BlenderSession::stamp_view_layer_metadata(const string& view_layer_name) -{ - stamp_view_layer_metadata_do("cycles." + view_layer_name + "."); + /* Write cryptomatte metadata. */ + if(scene->film->cryptomatte_passes & CRYPT_OBJECT) { + add_cryptomatte_layer(b_rr, view_layer_name + ".CryptoObject", + scene->object_manager->get_cryptomatte_objects(scene)); + } + if(scene->film->cryptomatte_passes & CRYPT_MATERIAL) { + add_cryptomatte_layer(b_rr, view_layer_name + ".CryptoMaterial", + scene->shader_manager->get_cryptomatte_materials(scene)); + } + if(scene->film->cryptomatte_passes & CRYPT_ASSET) { + add_cryptomatte_layer(b_rr, view_layer_name + ".CryptoAsset", + scene->object_manager->get_cryptomatte_assets(scene)); + } + + /* Store synchronization and bare-render times. */ + double total_time, render_time; + session->progress.get_time(total_time, render_time); + b_rr.stamp_data_add_field((prefix + "total_time").c_str(), - make_human_readable_time(total_time).c_str()); ++ time_human_readable_from_seconds(total_time).c_str()); + b_rr.stamp_data_add_field((prefix + "render_time").c_str(), - make_human_readable_time(render_time).c_str()); ++ time_human_readable_from_seconds(render_time).c_str()); + b_rr.stamp_data_add_field((prefix + "synchronization_time").c_str(), - make_human_readable_time(total_time - render_time).c_str()); ++ time_human_readable_from_seconds(total_time - render_time).c_str()); } -void BlenderSession::render() +void BlenderSession::render(BL::Depsgraph& b_depsgraph_) { + b_depsgraph = b_depsgraph_; + /* set callback to write out render results */ 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); @@@ -1011,10 -957,9 +1002,9 @@@ void BlenderSession::update_bake_progre void BlenderSession::update_status_progress() { string timestatus, status, substatus, kernel_status; - string scene = ""; + string scene_status = ""; float progress; double total_time, remaining_time = 0, render_time; - char time_str[128]; float mem_used = (float)session->stats.mem_used / 1024.0f / 1024.0f; float mem_peak = (float)session->stats.mem_peak / 1024.0f / 1024.0f; @@@ -1026,27 -971,29 +1016,26 @@@ remaining_time = (1.0 - (double)progress) * (render_time / (double)progress); if(background) { - scene += " | " + b_scene.name(); + scene_status += " | " + scene->name; if(b_rlay_name != "") - scene += ", " + b_rlay_name; + scene_status += ", " + b_rlay_name; if(b_rview_name != "") - scene += ", " + b_rview_name; - } - else { - timestatus = "Time:" + time_human_readable_from_seconds(total_time) + " | "; - } + scene_status += ", " + b_rview_name; - if(remaining_time > 0) { - timestatus += "Remaining:" + time_human_readable_from_seconds(remaining_time) + " | "; - } + if(remaining_time > 0) { - BLI_timecode_string_from_time_simple(time_str, sizeof(time_str), remaining_time); - timestatus += "Remaining:" + string(time_str) + " | "; ++ timestatus += "Remaining:" + time_human_readable_from_seconds(remaining_time) + " | "; + } - timestatus += string_printf("Mem:%.2fM, Peak:%.2fM", (double)mem_used, (double)mem_peak); + timestatus += string_printf("Mem:%.2fM, Peak:%.2fM", (double)mem_used, (double)mem_peak); - if(status.size() > 0) - status = " | " + status; - if(substatus.size() > 0) - status += " | " + substatus; - if(kernel_status.size() > 0) - status += " | " + kernel_status; + if(status.size() > 0) + status = " | " + status; + if(substatus.size() > 0) + status += " | " + substatus; + if(kernel_status.size() > 0) + status += " | " + kernel_status; + } double current_time = time_dt(); /* When rendering in a window, redraw the status at least once per second to keep the elapsed and remaining time up-to-date. diff --cc intern/cycles/blender/blender_util.h index b9a1de08705,a2c1a68c454..ec836bd5ec1 --- a/intern/cycles/blender/blender_util.h +++ b/intern/cycles/blender/blender_util.h @@@ -32,8 -32,7 +32,7 @@@ * todo: clean this up ... */ extern "C" { - size_t BLI_timecode_string_from_time_simple(char *str, size_t maxlen, double time_seconds); -void BKE_image_user_frame_calc(void *iuser, int cfra, int fieldnr); +void BKE_image_user_frame_calc(void *iuser, int cfra); void BKE_image_user_file_path(void *iuser, void *ima, char *path); unsigned char *BKE_image_get_pixels_for_frame(void *image, int frame); float *BKE_image_get_float_pixels_for_frame(void *image, int frame); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs