[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49158] branches/soc-2011-tomato/intern/ cycles: Tomato Cycles: code reshuffle to make data flow more obvious
Sergey Sharybin
sergey.vfx at gmail.com
Tue Jul 24 00:06:47 CEST 2012
Revision: 49158
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49158
Author: nazgul
Date: 2012-07-23 22:06:43 +0000 (Mon, 23 Jul 2012)
Log Message:
-----------
Tomato Cycles: code reshuffle to make data flow more obvious
Should be no functional changes
Modified Paths:
--------------
branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp
branches/soc-2011-tomato/intern/cycles/blender/blender_session.h
branches/soc-2011-tomato/intern/cycles/render/session.cpp
branches/soc-2011-tomato/intern/cycles/render/session.h
Modified: branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp 2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.cpp 2012-07-23 22:06:43 UTC (rev 49158)
@@ -189,7 +189,7 @@
RE_engine_end_result((RenderEngine*)b_engine.ptr.data, (RenderResult*)b_rr.ptr.data, (int)cancel);
}
-void BlenderSession::write_render_buffers(RenderBuffers *buffers, bool final_sample)
+void BlenderSession::do_write_update_render_buffers(RenderBuffers *buffers, bool do_update, bool do_write)
{
BufferParams& params = buffers->params;
int x = params.full_x - session->tile_manager.params.full_x;
@@ -210,16 +210,28 @@
BL::RenderLayer b_rlay = *b_single_rlay;
/* write result */
- write_render_result(b_rr, b_rlay, buffers);
+ if (do_update)
+ write_render_result(b_rr, b_rlay, buffers);
- if (final_sample)
+ if (do_write)
end_render_result(b_engine, b_rr);
}
+void BlenderSession::write_render_buffers(RenderBuffers *buffers)
+{
+ do_write_update_render_buffers(buffers, true, true);
+}
+
+void BlenderSession::update_render_buffers(RenderBuffers *buffers)
+{
+ do_write_update_render_buffers(buffers, true, false);
+}
+
void BlenderSession::render()
{
/* set callback to write out render results */
- session->write_render_buffers_cb = function_bind(&BlenderSession::write_render_buffers, this, _1, _2);
+ session->write_render_buffers_cb = function_bind(&BlenderSession::write_render_buffers, this, _1);
+ session->update_render_buffers_cb = function_bind(&BlenderSession::update_render_buffers, this, _1);
/* get buffer parameters */
SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);
@@ -290,6 +302,7 @@
/* clear callback */
session->write_render_buffers_cb = NULL;
+ session->update_render_buffers_cb = NULL;
}
void BlenderSession::write_render_result(BL::RenderResult b_rr, BL::RenderLayer b_rlay, RenderBuffers *buffers)
Modified: branches/soc-2011-tomato/intern/cycles/blender/blender_session.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/blender/blender_session.h 2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/blender/blender_session.h 2012-07-23 22:06:43 UTC (rev 49158)
@@ -47,8 +47,10 @@
/* offline render */
void render();
+ void do_write_update_render_buffers(RenderBuffers *buffers, bool do_update, bool do_write);
void write_render_result(BL::RenderResult b_rr, BL::RenderLayer b_rlay, RenderBuffers *buffers);
- void write_render_buffers(RenderBuffers *buffers, bool final_sample);
+ void write_render_buffers(RenderBuffers *buffers);
+ void update_render_buffers(RenderBuffers *buffers);
/* interactive updates */
void synchronize();
Modified: branches/soc-2011-tomato/intern/cycles/render/session.cpp
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/session.cpp 2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/render/session.cpp 2012-07-23 22:06:43 UTC (rev 49158)
@@ -377,11 +377,11 @@
{
thread_scoped_lock tile_lock(tile_mutex);
- if(write_render_buffers_cb) {
+ if(update_render_buffers_cb) {
/* todo: optimize this by making it thread safe and removing lock */
if(!progress.get_cancel())
- write_render_buffers_cb(rtile.buffers, false);
+ update_render_buffers_cb(rtile.buffers);
}
update_status_time();
@@ -394,7 +394,7 @@
if(write_render_buffers_cb) {
/* todo: optimize this by making it thread safe and removing lock */
if(!progress.get_cancel())
- write_render_buffers_cb(rtile.buffers, true);
+ write_render_buffers_cb(rtile.buffers);
delete rtile.buffers;
}
Modified: branches/soc-2011-tomato/intern/cycles/render/session.h
===================================================================
--- branches/soc-2011-tomato/intern/cycles/render/session.h 2012-07-23 21:47:11 UTC (rev 49157)
+++ branches/soc-2011-tomato/intern/cycles/render/session.h 2012-07-23 22:06:43 UTC (rev 49158)
@@ -105,7 +105,8 @@
TileManager tile_manager;
int sample;
- boost::function<void(RenderBuffers*, bool)> write_render_buffers_cb;
+ boost::function<void(RenderBuffers*)> write_render_buffers_cb;
+ boost::function<void(RenderBuffers*)> update_render_buffers_cb;
Session(const SessionParams& params);
~Session();
More information about the Bf-blender-cvs
mailing list