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:
authorSergey Sharybin <sergey.vfx@gmail.com>2015-01-19 17:08:58 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2015-01-19 17:23:21 +0300
commit7fd4c440ec2207eb80be13bf14eefa940e39d43e (patch)
tree79aba07d072455e95ff3467b1e227ff7ee82b51b /intern/cycles/render/scene.cpp
parent18ae259cc4b60a670f4bf5cbd621bbe420c0c24b (diff)
Fix T43311: using displacement shader crashes blender
Issue was caused by wrong order of scene device update, which could lead to missing object flags in shader kernel. This patch solves a bit more than that making sure objects flags are always properly updated, so adding/removing volume BSDF will properly reflect on viewport where camera might become being in volume and so.
Diffstat (limited to 'intern/cycles/render/scene.cpp')
-rw-r--r--intern/cycles/render/scene.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/intern/cycles/render/scene.cpp b/intern/cycles/render/scene.cpp
index ee7cef1950b..bb7c03cbe6d 100644
--- a/intern/cycles/render/scene.cpp
+++ b/intern/cycles/render/scene.cpp
@@ -170,8 +170,8 @@ void Scene::device_update(Device *device_, Progress& progress)
if(progress.get_cancel() || device->have_error()) return;
- progress.set_status("Updating Meshes");
- mesh_manager->device_update(device, &dscene, this, progress);
+ progress.set_status("Updating Meshes Flags");
+ mesh_manager->device_update_flags(device, &dscene, this, progress);
if(progress.get_cancel() || device->have_error()) return;
@@ -180,6 +180,11 @@ void Scene::device_update(Device *device_, Progress& progress)
if(progress.get_cancel() || device->have_error()) return;
+ progress.set_status("Updating Meshes");
+ mesh_manager->device_update(device, &dscene, this, progress);
+
+ if(progress.get_cancel() || device->have_error()) return;
+
progress.set_status("Updating Hair Systems");
curve_system_manager->device_update(device, &dscene, this, progress);