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:
authorBrecht Van Lommel <brecht@blender.org>2021-09-24 17:16:16 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-09-24 17:34:15 +0300
commitc0db8e3b41e21bb6f8327a038601827a0d20a9cc (patch)
treecb38e0f0af122df622ae5ebbc9f8c60f813df66a /intern/cycles/render
parent585998987ab1a948d3aee7e377764fe2900b4e03 (diff)
Fix T91660: Cycles remaining render time does not take into account time limit
Diffstat (limited to 'intern/cycles/render')
-rw-r--r--intern/cycles/render/session.cpp19
-rw-r--r--intern/cycles/render/session.h2
2 files changed, 21 insertions, 0 deletions
diff --git a/intern/cycles/render/session.cpp b/intern/cycles/render/session.cpp
index a8957b8def6..56d92fb0ad8 100644
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@ -519,6 +519,25 @@ void Session::set_gpu_display(unique_ptr<GPUDisplay> gpu_display)
path_trace_->set_gpu_display(move(gpu_display));
}
+double Session::get_estimated_remaining_time() const
+{
+ const float completed = progress.get_progress();
+ if (completed == 0.0f) {
+ return 0.0;
+ }
+
+ double total_time, render_time;
+ progress.get_time(total_time, render_time);
+ double remaining = (1.0 - (double)completed) * (render_time / (double)completed);
+
+ const double time_limit = render_scheduler_.get_time_limit();
+ if (time_limit != 0.0) {
+ remaining = min(remaining, max(time_limit - render_time, 0.0));
+ }
+
+ return remaining;
+}
+
void Session::wait()
{
if (session_thread_) {
diff --git a/intern/cycles/render/session.h b/intern/cycles/render/session.h
index 5623604bfe8..e3056e7778b 100644
--- a/intern/cycles/render/session.h
+++ b/intern/cycles/render/session.h
@@ -145,6 +145,8 @@ class Session {
void set_gpu_display(unique_ptr<GPUDisplay> gpu_display);
+ double get_estimated_remaining_time() const;
+
void device_free();
/* Returns the rendering progress or 0 if no progress can be determined