[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57307] trunk/blender/intern/cycles/ blender/blender_session.cpp: Fix related to #35681: avoid some unnecessary cycles updated when using exclude

Brecht Van Lommel brechtvanlommel at pandora.be
Sun Jun 9 13:57:51 CEST 2013


Revision: 57307
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57307
Author:   blendix
Date:     2013-06-09 11:57:51 +0000 (Sun, 09 Jun 2013)
Log Message:
-----------
Fix related to #35681: avoid some unnecessary cycles updated when using exclude
render layers.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_session.cpp

Modified: trunk/blender/intern/cycles/blender/blender_session.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_session.cpp	2013-06-09 11:57:50 UTC (rev 57306)
+++ trunk/blender/intern/cycles/blender/blender_session.cpp	2013-06-09 11:57:51 UTC (rev 57307)
@@ -101,12 +101,12 @@
 
 	/* create sync */
 	sync = new BlenderSync(b_engine, b_data, b_scene, scene, !background, session->progress, session_params.device.type == DEVICE_CPU);
-	sync->sync_data(b_v3d, b_engine.camera_override());
 
-	if(b_rv3d)
+	/* for final render we will do sync per render layer */
+	if(b_v3d) {
+		sync->sync_data(b_v3d, b_engine.camera_override());
 		sync->sync_view(b_v3d, b_rv3d, width, height);
-	else
-		sync->sync_camera(b_render, b_engine.camera_override(), width, height);
+	}
 
 	/* set buffer parameters */
 	BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_scene, b_v3d, b_rv3d, scene->camera, width, height);
@@ -159,9 +159,12 @@
 
 	/* sync object should be re-created */
 	sync = new BlenderSync(b_engine, b_data, b_scene, scene, !background, session->progress, session_params.device.type == DEVICE_CPU);
-	sync->sync_data(b_v3d, b_engine.camera_override());
-	sync->sync_camera(b_render, b_engine.camera_override(), width, height);
 
+	if(b_rv3d) {
+		sync->sync_data(b_v3d, b_engine.camera_override());
+		sync->sync_camera(b_render, b_engine.camera_override(), width, height);
+	}
+
 	BufferParams buffer_params = BlenderSync::get_buffer_params(b_render, b_scene, PointerRNA_NULL, PointerRNA_NULL, scene->camera, width, height);
 	session->reset(buffer_params, session_params.samples);
 
@@ -368,6 +371,7 @@
 
 		/* update scene */
 		sync->sync_data(b_v3d, b_engine.camera_override(), b_rlay_name.c_str());
+		sync->sync_camera(b_render, b_engine.camera_override(), width, height);
 
 		/* update number of samples per layer */
 		int samples = sync->get_layer_samples();
@@ -452,6 +456,10 @@
 
 void BlenderSession::synchronize()
 {
+	/* only used for viewport render */
+	if(!b_v3d)
+		return;
+
 	/* on session/scene parameter changes, we recreate session entirely */
 	SceneParams scene_params = BlenderSync::get_scene_params(b_scene, background);
 	SessionParams session_params = BlenderSync::get_session_params(b_engine, b_userpref, b_scene, background);




More information about the Bf-blender-cvs mailing list