[Bf-blender-cvs] [b6988de22a9] master: Merge branch 'blender-v2.91-release'

Brecht Van Lommel noreply at git.blender.org
Thu Nov 12 20:36:10 CET 2020


Commit: b6988de22a9c1b78fe4f5ddedfd4467db1d8e209
Author: Brecht Van Lommel
Date:   Thu Nov 12 20:19:30 2020 +0100
Branches: master
https://developer.blender.org/rBb6988de22a9c1b78fe4f5ddedfd4467db1d8e209

Merge branch 'blender-v2.91-release'

===================================================================



===================================================================

diff --cc intern/cycles/blender/blender_volume.cpp
index 1843fecd586,48ae5a2c5ae..094d4bbc08c
--- a/intern/cycles/blender/blender_volume.cpp
+++ b/intern/cycles/blender/blender_volume.cpp
@@@ -307,24 -300,12 +300,9 @@@ static void sync_volume_object(BL::Blen
    }
  }
  
- /* If the voxel attributes change, we need to rebuild the bounding mesh. */
- static vector<int> get_voxel_image_slots(Mesh *mesh)
- {
-   vector<int> slots;
-   for (const Attribute &attr : mesh->attributes.attributes) {
-     if (attr.element == ATTR_ELEMENT_VOXEL) {
-       slots.push_back(attr.data_voxel().svm_slot());
-     }
-   }
- 
-   return slots;
- }
- 
 -void BlenderSync::sync_volume(BL::Object &b_ob,
 -                              Volume *volume,
 -                              const vector<Shader *> &used_shaders)
 +void BlenderSync::sync_volume(BL::Object &b_ob, Volume *volume)
  {
-   vector<int> old_voxel_slots = get_voxel_image_slots(volume);
- 
 -  volume->clear();
 -  volume->used_shaders = used_shaders;
 +  volume->clear(true);
  
    if (view_layer.use_volumes) {
      if (b_ob.type() == BL::Object::type_VOLUME) {
diff --cc intern/cycles/render/session.cpp
index a60542259f6,8f64495c76b..524a0e3b9d4
--- a/intern/cycles/render/session.cpp
+++ b/intern/cycles/render/session.cpp
@@@ -98,23 -94,9 +98,9 @@@ Session::Session(const SessionParams &p
  
  Session::~Session()
  {
-   if (session_thread) {
-     /* wait for session thread to end */
-     progress.set_cancel("Exiting");
- 
-     gpu_need_display_buffer_update = false;
-     gpu_need_display_buffer_update_cond.notify_all();
- 
-     {
-       thread_scoped_lock pause_lock(pause_mutex);
-       pause = false;
-     }
-     pause_cond.notify_all();
- 
-     wait();
-   }
+   cancel();
  
 -  if (params.write_render_cb) {
 +  if (buffers && params.write_render_cb) {
      /* Copy to display buffer and write out image if requested */
      delete display;
  
diff --cc intern/cycles/render/volume.cpp
index 63261d6a247,9e633b27cc9..64196cdd8a8
--- a/intern/cycles/render/volume.cpp
+++ b/intern/cycles/render/volume.cpp
@@@ -491,6 -495,37 +491,39 @@@ void GeometryManager::create_volume_mes
    string msg = string_printf("Computing Volume Mesh %s", volume->name.c_str());
    progress.set_status("Updating Mesh", msg);
  
+   /* Find shader and compute padding based on volume shader interpolation settings. */
+   Shader *volume_shader = NULL;
+   int pad_size = 0;
+ 
 -  foreach (Shader *shader, volume->used_shaders) {
++  foreach (Node *node, volume->get_used_shaders()) {
++    Shader *shader = static_cast<Shader *>(node);
++
+     if (!shader->has_volume) {
+       continue;
+     }
+ 
+     volume_shader = shader;
+ 
 -    if (shader->volume_interpolation_method == VOLUME_INTERPOLATION_LINEAR) {
++    if (shader->get_volume_interpolation_method() == VOLUME_INTERPOLATION_LINEAR) {
+       pad_size = max(1, pad_size);
+     }
 -    else if (shader->volume_interpolation_method == VOLUME_INTERPOLATION_CUBIC) {
++    else if (shader->get_volume_interpolation_method() == VOLUME_INTERPOLATION_CUBIC) {
+       pad_size = max(2, pad_size);
+     }
+ 
+     break;
+   }
+ 
+   /* Clear existing volume mesh, done here in case we early out due to
+    * empty grid or missing volume shader. */
+   volume->clear();
+   volume->need_update_rebuild = true;
+ 
+   if (!volume_shader) {
+     return;
+   }
+ 
+   /* Create volume mesh builder. */
    VolumeMeshBuilder builder;
  
  #ifdef WITH_OPENVDB
@@@ -583,11 -592,8 +590,9 @@@
    vector<float3> face_normals;
    builder.create_mesh(vertices, indices, face_normals, face_overlap_avoidance);
  
-   volume->clear();
    volume->reserve_mesh(vertices.size(), indices.size() / 3);
 -  volume->used_shaders.push_back(volume_shader);
++  volume->used_shaders.clear();
 +  volume->used_shaders.push_back_slow(volume_shader);
-   volume->tag_modified();
-   volume->need_update_rebuild = true;
  
    for (size_t i = 0; i < vertices.size(); ++i) {
      volume->add_vertex(vertices[i]);



More information about the Bf-blender-cvs mailing list