Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2019-03-04 13:31:20 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2019-03-04 13:52:49 +0300
commitb526a38ba23554c3815a82559fd1f046edb44e56 (patch)
tree73e975032c95b4ff3d3a234d4e9901b19aad5d27 /intern/cycles/blender/blender_session.cpp
parente90a2807bf2ba1f14ceaa7f062fafc94d7e81cbe (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.cpp19
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_)