[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