[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51551] trunk/blender/intern/cycles/render : Cycles: update buffers only once in a while when progressive refine is used
Sergey Sharybin
sergey.vfx at gmail.com
Tue Oct 23 19:24:24 CEST 2012
Revision: 51551
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51551
Author: nazgul
Date: 2012-10-23 17:24:23 +0000 (Tue, 23 Oct 2012)
Log Message:
-----------
Cycles: update buffers only once in a while when progressive refine is used
It'll mimic the same behavior as regular tile rendering update and it should
give pretty noticeable boost on simpler scenes.
Modified Paths:
--------------
trunk/blender/intern/cycles/render/session.cpp
trunk/blender/intern/cycles/render/session.h
Modified: trunk/blender/intern/cycles/render/session.cpp
===================================================================
--- trunk/blender/intern/cycles/render/session.cpp 2012-10-23 16:46:13 UTC (rev 51550)
+++ trunk/blender/intern/cycles/render/session.cpp 2012-10-23 17:24:23 UTC (rev 51551)
@@ -186,6 +186,7 @@
start_time = time_dt();
reset_time = time_dt();
paused_time = 0.0;
+ last_update_time = time_dt();
if(!params.background)
progress.set_start_time(start_time + paused_time);
@@ -447,6 +448,8 @@
{
bool tiles_written = false;
+ last_update_time = time_dt();
+
{
/* reset once to start */
thread_scoped_lock reset_lock(delayed_reset.mutex);
@@ -807,21 +810,32 @@
bool Session::update_progressive_refine(bool cancel)
{
int sample = tile_manager.state.sample + 1;
+ bool write = sample == params.samples || cancel;
+ double current_time = time_dt();
+
+ if (current_time - last_update_time < 1.0f) {
+ /* if last sample was processed, we need to write buffers anyway */
+ if (!write)
+ return false;
+ }
+
if(params.progressive_refine) {
foreach(RenderBuffers *buffers, tile_buffers) {
RenderTile rtile;
rtile.buffers = buffers;
rtile.sample = sample;
- if(rtile.sample == params.samples || cancel)
+ if(write)
write_render_tile_cb(rtile);
else
update_render_tile_cb(rtile);
}
}
- return sample == params.samples;
+ last_update_time = current_time;
+
+ return write;
}
CCL_NAMESPACE_END
Modified: trunk/blender/intern/cycles/render/session.h
===================================================================
--- trunk/blender/intern/cycles/render/session.h 2012-10-23 16:46:13 UTC (rev 51550)
+++ trunk/blender/intern/cycles/render/session.h 2012-10-23 17:24:23 UTC (rev 51551)
@@ -179,6 +179,7 @@
double paused_time;
/* progressive refine */
+ double last_update_time;
bool update_progressive_refine(bool cancel);
vector<RenderBuffers *> tile_buffers;
More information about the Bf-blender-cvs
mailing list