diff options
author | Brecht Van Lommel <brecht@blender.org> | 2020-10-30 19:37:23 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2020-10-30 19:37:23 +0300 |
commit | 02702235522be0b224779d5ff7338ba3309323f0 (patch) | |
tree | d5feccd515d51bfea65d72dc69898ca291681b14 /intern | |
parent | 62e532785dfd5bd25fb6b1269ec41ea81a32c4c9 (diff) | |
parent | 8b806c86e12e92ffc8b486a69ce4de5938f09b4a (diff) |
Merge branch 'blender-v2.91-release'
Diffstat (limited to 'intern')
-rw-r--r-- | intern/cycles/render/geometry.cpp | 5 | ||||
-rw-r--r-- | intern/cycles/render/volume.cpp | 1 |
2 files changed, 5 insertions, 1 deletions
diff --git a/intern/cycles/render/geometry.cpp b/intern/cycles/render/geometry.cpp index cbd5e7e83fb..9457d5e0205 100644 --- a/intern/cycles/render/geometry.cpp +++ b/intern/cycles/render/geometry.cpp @@ -1249,7 +1249,10 @@ void GeometryManager::device_update_preprocess(Device *device, Scene *scene, Pro } } - if (geom->need_update_rebuild && geom->type == Geometry::VOLUME) { + /* Re-create volume mesh if we will rebuild or refit the BVH. Note we + * should only do it in that case, otherwise the BVH and mesh can go + * out of sync. */ + if (geom->need_update && geom->type == Geometry::VOLUME) { /* Create volume meshes if there is voxel data. */ if (!volume_images_updated) { progress.set_status("Updating Meshes Volume Bounds"); diff --git a/intern/cycles/render/volume.cpp b/intern/cycles/render/volume.cpp index 89777d8669b..a8edc04f8a9 100644 --- a/intern/cycles/render/volume.cpp +++ b/intern/cycles/render/volume.cpp @@ -583,6 +583,7 @@ void GeometryManager::create_volume_mesh(Volume *volume, Progress &progress) volume->clear(); volume->reserve_mesh(vertices.size(), indices.size() / 3); volume->used_shaders.push_back(volume_shader); + volume->need_update = true; volume->need_update_rebuild = true; for (size_t i = 0; i < vertices.size(); ++i) { |