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 <brechtvanlommel@pandora.be>2012-06-20 18:24:52 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-06-20 18:24:52 +0400
commite3e75b393600954796127f229d3b3c35dddc9d7c (patch)
tree3e24c7aa2e8075f9679bcee3e7ff05071bf72809 /intern/cycles
parentaa30e2027222c2fd0f3d616cf1689bb4f3d98495 (diff)
Fix #31883: cycles vectors pass rendering crash with some render layers using
it and others not.
Diffstat (limited to 'intern/cycles')
-rw-r--r--intern/cycles/blender/blender_session.cpp2
-rw-r--r--intern/cycles/render/film.cpp11
-rw-r--r--intern/cycles/render/film.h1
3 files changed, 13 insertions, 1 deletions
diff --git a/intern/cycles/blender/blender_session.cpp b/intern/cycles/blender/blender_session.cpp
index 12d7d00fb61..d09e43bd76d 100644
--- a/intern/cycles/blender/blender_session.cpp
+++ b/intern/cycles/blender/blender_session.cpp
@@ -218,7 +218,7 @@ void BlenderSession::render()
}
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);
diff --git a/intern/cycles/render/film.cpp b/intern/cycles/render/film.cpp
index 035821fadde..fdf25ca7908 100644
--- a/intern/cycles/render/film.cpp
+++ b/intern/cycles/render/film.cpp
@@ -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 @@ bool Film::modified(const Film& film)
&& 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;
diff --git a/intern/cycles/render/film.h b/intern/cycles/render/film.h
index c7d2ee24388..52d1a8428f8 100644
--- a/intern/cycles/render/film.h
+++ b/intern/cycles/render/film.h
@@ -56,6 +56,7 @@ public:
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);
};