diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-04 13:31:20 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-03-04 13:52:49 +0300 |
commit | b526a38ba23554c3815a82559fd1f046edb44e56 (patch) | |
tree | 73e975032c95b4ff3d3a234d4e9901b19aad5d27 /intern/cycles/blender/blender_session.cpp | |
parent | e90a2807bf2ba1f14ceaa7f062fafc94d7e81cbe (diff) |
Cycles: Store various render stages timings
Includes time spent on synchronization and time spent on just
path tracing/denoising.
Diffstat (limited to 'intern/cycles/blender/blender_session.cpp')
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index da2de6692a8..501e4fec13f 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -393,6 +393,15 @@ static void add_cryptomatte_layer(BL::RenderResult& b_rr, string name, string ma 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(Scene *scene, const string& view_layer_name) { BL::RenderResult b_rr = b_engine.get_result(); @@ -426,6 +435,16 @@ void BlenderSession::stamp_view_layer_metadata(Scene *scene, const string& view_ 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()); + b_rr.stamp_data_add_field((prefix + "render_time").c_str(), + make_human_readable_time(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()); } void BlenderSession::render(BL::Depsgraph& b_depsgraph_) |