[Bf-blender-cvs] [348acc55510] cycles_procedural_api: Merge branch 'cycles_socket_api' into cycles_procedural_api

Kévin Dietrich noreply at git.blender.org
Thu Nov 5 18:57:51 CET 2020


Commit: 348acc5551033aa79bacfd597452da5711b7179f
Author: Kévin Dietrich
Date:   Mon Nov 2 00:29:23 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rB348acc5551033aa79bacfd597452da5711b7179f

Merge branch 'cycles_socket_api' into cycles_procedural_api

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



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

diff --cc intern/cycles/blender/blender_object.cpp
index dd8a39ef7e8,8475270e871..d0ff7aa67f2
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@@ -512,11 -429,10 +512,11 @@@ void BlenderSync::sync_objects(BL::Deps
      sync_background_light(b_v3d, use_portal);
  
      /* handle removed data and modified pointers */
-     light_map.post_sync(scene);
-     geometry_map.post_sync(scene);
-     object_map.post_sync(scene);
-     particle_system_map.post_sync(scene);
-     procedural_map.post_sync(scene);
+     light_map.post_sync();
+     geometry_map.post_sync();
+     object_map.post_sync();
+     particle_system_map.post_sync();
++    procedural_map.post_sync();
    }
  
    if (motion)
diff --cc intern/cycles/blender/blender_sync.cpp
index 55041f4c8c5,4599d379ed6..c605556b0d4
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@@ -57,12 -56,11 +57,12 @@@ BlenderSync::BlenderSync(BL::RenderEngi
      : b_engine(b_engine),
        b_data(b_data),
        b_scene(b_scene),
-       shader_map(),
-       object_map(),
-       procedural_map(),
-       geometry_map(),
-       light_map(),
-       particle_system_map(),
+       shader_map(scene),
+       object_map(scene),
++      procedural_map(scene),
+       geometry_map(scene),
+       light_map(scene),
+       particle_system_map(scene),
        world_map(NULL),
        world_recalc(false),
        scene(scene),
diff --cc intern/cycles/render/scene.cpp
index 16fe11530b8,98c256a43b5..d8db52e768b
--- a/intern/cycles/render/scene.cpp
+++ b/intern/cycles/render/scene.cpp
@@@ -748,10 -709,58 +748,64 @@@ template<> void Scene::delete_node_impl
    /* don't delete unused shaders, not supported */
  }
  
 +template<> void Scene::delete_node_impl(AlembicProcedural *node)
 +{
 +  delete_node_from_array(procedurals, static_cast<Procedural *>(node));
 +  procedural_manager->need_update = true;
 +}
 +
+ template<typename T>
+ static void remove_nodes_in_set(const set<T *> &nodes_set,
+                                 vector<T *> &nodes_array,
+                                 const NodeOwner *owner)
+ {
+   size_t new_size = nodes_array.size();
+ 
+   for (size_t i = 0; i < new_size; ++i) {
+     T *node = nodes_array[i];
+ 
+     if (nodes_set.find(node) != nodes_set.end()) {
+       std::swap(nodes_array[i], nodes_array[new_size - 1]);
+ 
+       assert(node->get_owner() == owner);
+       delete node;
+ 
+       i -= 1;
+       new_size -= 1;
+     }
+   }
+ 
+   nodes_array.resize(new_size);
+   (void)owner;
+ }
+ 
+ template<> void Scene::delete_nodes(const set<Light *> &nodes, const NodeOwner *owner)
+ {
+   remove_nodes_in_set(nodes, lights, owner);
+   light_manager->tag_update(this);
+ }
+ 
+ template<> void Scene::delete_nodes(const set<Geometry *> &nodes, const NodeOwner *owner)
+ {
+   remove_nodes_in_set(nodes, geometry, owner);
+   geometry_manager->tag_update(this);
+ }
+ 
+ template<> void Scene::delete_nodes(const set<Object *> &nodes, const NodeOwner *owner)
+ {
+   remove_nodes_in_set(nodes, objects, owner);
+   object_manager->tag_update(this);
+ }
+ 
+ template<> void Scene::delete_nodes(const set<ParticleSystem *> &nodes, const NodeOwner *owner)
+ {
+   remove_nodes_in_set(nodes, particle_systems, owner);
+   particle_system_manager->tag_update(this);
+ }
+ 
+ template<> void Scene::delete_nodes(const set<Shader *> & /*nodes*/, const NodeOwner * /*owner*/)
+ {
+   /* don't delete unused shaders, not supported */
+ }
+ 
  CCL_NAMESPACE_END
diff --cc intern/cycles/render/scene.h
index d2efe5f7445,6686327dc49..9286e7814e4
--- a/intern/cycles/render/scene.h
+++ b/intern/cycles/render/scene.h
@@@ -397,8 -393,16 +409,18 @@@ template<> void Scene::delete_node_impl
  
  template<> void Scene::delete_node_impl(Shader *node);
  
 +template<> void Scene::delete_node_impl(AlembicProcedural *node);
 +
+ template<> void Scene::delete_nodes(const set<Light *> &nodes, const NodeOwner *owner);
+ 
+ template<> void Scene::delete_nodes(const set<Geometry *> &nodes, const NodeOwner *owner);
+ 
+ template<> void Scene::delete_nodes(const set<Object *> &nodes, const NodeOwner *owner);
+ 
+ template<> void Scene::delete_nodes(const set<ParticleSystem *> &nodes, const NodeOwner *owner);
+ 
+ template<> void Scene::delete_nodes(const set<Shader *> &nodes, const NodeOwner *owner);
+ 
  CCL_NAMESPACE_END
  
  #endif /*  __SCENE_H__ */



More information about the Bf-blender-cvs mailing list