diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-01-09 20:57:46 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-01-09 20:57:46 +0400 |
commit | 47d9c6689be0448b898d18a1e810d2150867938b (patch) | |
tree | 49fc8403846bcf016e5cb0b6ba4bfd33b793c06c | |
parent | 8f37c143ed0b23257e6da453351f198a35f5677e (diff) |
Cycles: show elapsed time for F12/background render.
-rw-r--r-- | intern/cycles/blender/blender_session.cpp | 6 | ||||
-rw-r--r-- | intern/cycles/render/session.cpp | 18 | ||||
-rw-r--r-- | intern/cycles/util/util_progress.h | 18 |
3 files changed, 31 insertions, 11 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp index 2702327b67f..c7c35b537bd 100644 --- a/intern/cycles/blender/blender_session.cpp +++ b/intern/cycles/blender/blender_session.cpp @@ -298,10 +298,8 @@ void BlenderSession::update_status_progress() get_status(status, substatus); get_progress(progress, total_time); - if(!background) { - BLI_timestr(total_time, time_str); - status = "Time: " + string(time_str) + " | " + status; - } + BLI_timestr(total_time, time_str); + status = "Elapsed: " + string(time_str) + " | " + status; if(substatus.size() > 0) status += " | " + substatus; diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp index 4634e4de0d8..0abc76f7309 100644 --- a/intern/cycles/render/session.cpp +++ b/intern/cycles/render/session.cpp @@ -162,6 +162,9 @@ void Session::run_gpu() reset_time = time_dt(); paused_time = 0.0; + if(!params.background) + progress.set_start_time(start_time - paused_time); + while(!progress.get_cancel()) { /* advance to next tile */ bool no_tiles = !tile_manager.next(); @@ -186,6 +189,9 @@ void Session::run_gpu() pause_cond.wait(pause_lock); paused_time += time_dt() - pause_start; + if(!params.background) + progress.set_start_time(start_time - paused_time); + update_status_time(pause, no_tiles); progress.set_update(); @@ -332,6 +338,9 @@ void Session::run_cpu() pause_cond.wait(pause_lock); paused_time += time_dt() - pause_start; + if(!params.background) + progress.set_start_time(start_time - paused_time); + update_status_time(pause, no_tiles); progress.set_update(); @@ -457,6 +466,9 @@ void Session::reset_(BufferParams& buffer_params, int samples) preview_time = 0.0; paused_time = 0.0; sample = 0; + + if(!params.background) + progress.set_start_time(start_time - paused_time); } void Session::reset(BufferParams& buffer_params, int samples) @@ -556,15 +568,13 @@ void Session::update_status_time(bool show_pause, bool show_done) /* update timing */ if(preview_time == 0.0 && resolution == 1) preview_time = time_dt(); - - double total_time = time_dt() - start_time - paused_time; + double sample_time = (sample == 0)? 0.0: (time_dt() - preview_time - paused_time)/(sample); /* negative can happen when we pause a bit before rendering, can discard that */ - if(total_time < 0.0) total_time = 0.0; if(preview_time < 0.0) preview_time = 0.0; - progress.set_sample(sample + 1, total_time, sample_time); + progress.set_sample(sample + 1, sample_time); } void Session::path_trace(Tile& tile) diff --git a/intern/cycles/util/util_progress.h b/intern/cycles/util/util_progress.h index fc2e4af5ead..acb00b03507 100644 --- a/intern/cycles/util/util_progress.h +++ b/intern/cycles/util/util_progress.h @@ -27,6 +27,7 @@ #include "util_function.h" #include "util_string.h" +#include "util_time.h" #include "util_thread.h" CCL_NAMESPACE_BEGIN @@ -36,6 +37,7 @@ public: Progress() { sample = 0; + start_time = time_dt(); total_time = 0.0f; sample_time = 0.0f; status = "Initializing"; @@ -90,12 +92,19 @@ public: /* sample and timing information */ - void set_sample(int sample_, double total_time_, double sample_time_) + void set_start_time(double start_time_) + { + thread_scoped_lock lock(progress_mutex); + + start_time = start_time; + } + + void set_sample(int sample_, double sample_time_) { thread_scoped_lock lock(progress_mutex); sample = sample_; - total_time = total_time_; + total_time = time_dt() - start_time; sample_time = sample_time_; } @@ -104,7 +113,7 @@ public: thread_scoped_lock lock(progress_mutex); sample_ = sample; - total_time_ = total_time; + total_time_ = (total_time > 0.0)? total_time: 0.0; sample_time_ = sample_time; } @@ -116,6 +125,7 @@ public: thread_scoped_lock lock(progress_mutex); status = status_; substatus = substatus_; + total_time = time_dt() - start_time; } set_update(); @@ -126,6 +136,7 @@ public: { thread_scoped_lock lock(progress_mutex); substatus = substatus_; + total_time = time_dt() - start_time; } set_update(); @@ -158,6 +169,7 @@ protected: int sample; + double start_time; double total_time; double sample_time; |