Cycles: show elapsed time for F12/background render.
This commit is contained in:
@@ -298,10 +298,8 @@ void BlenderSession::update_status_progress()
|
|||||||
get_status(status, substatus);
|
get_status(status, substatus);
|
||||||
get_progress(progress, total_time);
|
get_progress(progress, total_time);
|
||||||
|
|
||||||
if(!background) {
|
BLI_timestr(total_time, time_str);
|
||||||
BLI_timestr(total_time, time_str);
|
status = "Elapsed: " + string(time_str) + " | " + status;
|
||||||
status = "Time: " + string(time_str) + " | " + status;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(substatus.size() > 0)
|
if(substatus.size() > 0)
|
||||||
status += " | " + substatus;
|
status += " | " + substatus;
|
||||||
|
@@ -162,6 +162,9 @@ void Session::run_gpu()
|
|||||||
reset_time = time_dt();
|
reset_time = time_dt();
|
||||||
paused_time = 0.0;
|
paused_time = 0.0;
|
||||||
|
|
||||||
|
if(!params.background)
|
||||||
|
progress.set_start_time(start_time - paused_time);
|
||||||
|
|
||||||
while(!progress.get_cancel()) {
|
while(!progress.get_cancel()) {
|
||||||
/* advance to next tile */
|
/* advance to next tile */
|
||||||
bool no_tiles = !tile_manager.next();
|
bool no_tiles = !tile_manager.next();
|
||||||
@@ -186,6 +189,9 @@ void Session::run_gpu()
|
|||||||
pause_cond.wait(pause_lock);
|
pause_cond.wait(pause_lock);
|
||||||
paused_time += time_dt() - pause_start;
|
paused_time += time_dt() - pause_start;
|
||||||
|
|
||||||
|
if(!params.background)
|
||||||
|
progress.set_start_time(start_time - paused_time);
|
||||||
|
|
||||||
update_status_time(pause, no_tiles);
|
update_status_time(pause, no_tiles);
|
||||||
progress.set_update();
|
progress.set_update();
|
||||||
|
|
||||||
@@ -332,6 +338,9 @@ void Session::run_cpu()
|
|||||||
pause_cond.wait(pause_lock);
|
pause_cond.wait(pause_lock);
|
||||||
paused_time += time_dt() - pause_start;
|
paused_time += time_dt() - pause_start;
|
||||||
|
|
||||||
|
if(!params.background)
|
||||||
|
progress.set_start_time(start_time - paused_time);
|
||||||
|
|
||||||
update_status_time(pause, no_tiles);
|
update_status_time(pause, no_tiles);
|
||||||
progress.set_update();
|
progress.set_update();
|
||||||
|
|
||||||
@@ -457,6 +466,9 @@ void Session::reset_(BufferParams& buffer_params, int samples)
|
|||||||
preview_time = 0.0;
|
preview_time = 0.0;
|
||||||
paused_time = 0.0;
|
paused_time = 0.0;
|
||||||
sample = 0;
|
sample = 0;
|
||||||
|
|
||||||
|
if(!params.background)
|
||||||
|
progress.set_start_time(start_time - paused_time);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Session::reset(BufferParams& buffer_params, int samples)
|
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 */
|
/* update timing */
|
||||||
if(preview_time == 0.0 && resolution == 1)
|
if(preview_time == 0.0 && resolution == 1)
|
||||||
preview_time = time_dt();
|
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);
|
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 */
|
/* 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;
|
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)
|
void Session::path_trace(Tile& tile)
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "util_function.h"
|
#include "util_function.h"
|
||||||
#include "util_string.h"
|
#include "util_string.h"
|
||||||
|
#include "util_time.h"
|
||||||
#include "util_thread.h"
|
#include "util_thread.h"
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
@@ -36,6 +37,7 @@ public:
|
|||||||
Progress()
|
Progress()
|
||||||
{
|
{
|
||||||
sample = 0;
|
sample = 0;
|
||||||
|
start_time = time_dt();
|
||||||
total_time = 0.0f;
|
total_time = 0.0f;
|
||||||
sample_time = 0.0f;
|
sample_time = 0.0f;
|
||||||
status = "Initializing";
|
status = "Initializing";
|
||||||
@@ -90,12 +92,19 @@ public:
|
|||||||
|
|
||||||
/* sample and timing information */
|
/* 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);
|
thread_scoped_lock lock(progress_mutex);
|
||||||
|
|
||||||
sample = sample_;
|
sample = sample_;
|
||||||
total_time = total_time_;
|
total_time = time_dt() - start_time;
|
||||||
sample_time = sample_time_;
|
sample_time = sample_time_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,7 +113,7 @@ public:
|
|||||||
thread_scoped_lock lock(progress_mutex);
|
thread_scoped_lock lock(progress_mutex);
|
||||||
|
|
||||||
sample_ = sample;
|
sample_ = sample;
|
||||||
total_time_ = total_time;
|
total_time_ = (total_time > 0.0)? total_time: 0.0;
|
||||||
sample_time_ = sample_time;
|
sample_time_ = sample_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,6 +125,7 @@ public:
|
|||||||
thread_scoped_lock lock(progress_mutex);
|
thread_scoped_lock lock(progress_mutex);
|
||||||
status = status_;
|
status = status_;
|
||||||
substatus = substatus_;
|
substatus = substatus_;
|
||||||
|
total_time = time_dt() - start_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_update();
|
set_update();
|
||||||
@@ -126,6 +136,7 @@ public:
|
|||||||
{
|
{
|
||||||
thread_scoped_lock lock(progress_mutex);
|
thread_scoped_lock lock(progress_mutex);
|
||||||
substatus = substatus_;
|
substatus = substatus_;
|
||||||
|
total_time = time_dt() - start_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
set_update();
|
set_update();
|
||||||
@@ -158,6 +169,7 @@ protected:
|
|||||||
|
|
||||||
int sample;
|
int sample;
|
||||||
|
|
||||||
|
double start_time;
|
||||||
double total_time;
|
double total_time;
|
||||||
double sample_time;
|
double sample_time;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user