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/mesh.h
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/mesh.h')
-rw-r--r--intern/cycles/render/mesh.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/intern/cycles/render/mesh.h b/intern/cycles/render/mesh.h
index 90894564591..62e775e5bc9 100644
--- a/intern/cycles/render/mesh.h
+++ b/intern/cycles/render/mesh.h
@@ -79,7 +79,7 @@ public:
vector<uint> shader;
vector<bool> smooth;
- bool has_volume; /* Set in the device_update(). */
+ bool has_volume; /* Set in the device_update_flags(). */
vector<float4> curve_keys; /* co + radius */
vector<Curve> curves;
@@ -145,6 +145,7 @@ public:
BVH *bvh;
bool need_update;
+ bool need_flags_update;
MeshManager();
~MeshManager();
@@ -160,6 +161,7 @@ public:
void device_update_mesh(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
void device_update_attributes(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
void device_update_bvh(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
+ void device_update_flags(Device *device, DeviceScene *dscene, Scene *scene, Progress& progress);
void device_free(Device *device, DeviceScene *dscene);
void tag_update(Scene *scene);