[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48122] trunk/blender/intern/cycles: Fix #31883: cycles vectors pass rendering crash with some render layers using

Brecht Van Lommel brechtvanlommel at pandora.be
Wed Jun 20 16:24:52 CEST 2012


Revision: 48122
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48122
Author:   blendix
Date:     2012-06-20 14:24:52 +0000 (Wed, 20 Jun 2012)
Log Message:
-----------
Fix #31883: cycles vectors pass rendering crash with some render layers using
it and others not.

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

Modified: trunk/blender/intern/cycles/blender/blender_session.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_session.cpp	2012-06-20 14:20:03 UTC (rev 48121)
+++ trunk/blender/intern/cycles/blender/blender_session.cpp	2012-06-20 14:24:52 UTC (rev 48122)
@@ -218,7 +218,7 @@
 		}
 
 		buffer_params.passes = passes;
-		scene->film->passes = passes;
+		scene->film->tag_passes_update(scene, passes);
 		scene->film->tag_update(scene);
 		scene->integrator->tag_update(scene);
 

Modified: trunk/blender/intern/cycles/render/film.cpp
===================================================================
--- trunk/blender/intern/cycles/render/film.cpp	2012-06-20 14:20:03 UTC (rev 48121)
+++ trunk/blender/intern/cycles/render/film.cpp	2012-06-20 14:24:52 UTC (rev 48122)
@@ -20,6 +20,7 @@
 #include "device.h"
 #include "film.h"
 #include "integrator.h"
+#include "mesh.h"
 #include "scene.h"
 
 #include "util_algorithm.h"
@@ -296,6 +297,16 @@
 		&& Pass::equals(passes, film.passes));
 }
 
+void Film::tag_passes_update(Scene *scene, const vector<Pass>& passes_)
+{
+	if(Pass::contains(passes, PASS_UV) != Pass::contains(passes_, PASS_UV))
+		scene->mesh_manager->tag_update(scene);
+	else if(Pass::contains(passes, PASS_MOTION) != Pass::contains(passes_, PASS_MOTION))
+		scene->mesh_manager->tag_update(scene);
+
+	passes = passes_;
+}
+
 void Film::tag_update(Scene *scene)
 {
 	need_update = true;

Modified: trunk/blender/intern/cycles/render/film.h
===================================================================
--- trunk/blender/intern/cycles/render/film.h	2012-06-20 14:20:03 UTC (rev 48121)
+++ trunk/blender/intern/cycles/render/film.h	2012-06-20 14:24:52 UTC (rev 48122)
@@ -56,6 +56,7 @@
 	void device_free(Device *device, DeviceScene *dscene);
 
 	bool modified(const Film& film);
+	void tag_passes_update(Scene *scene, const vector<Pass>& passes_);
 	void tag_update(Scene *scene);
 };
 




More information about the Bf-blender-cvs mailing list