diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-01-19 17:08:58 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-01-19 17:23:21 +0300 |
commit | 7fd4c440ec2207eb80be13bf14eefa940e39d43e (patch) | |
tree | 79aba07d072455e95ff3467b1e227ff7ee82b51b /intern/cycles/render/mesh.h | |
parent | 18ae259cc4b60a670f4bf5cbd621bbe420c0c24b (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.h | 4 |
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); |