[Bf-blender-cvs] [117d3c72343] cycles_procedural_api: consolidate flags into a single enumeration

Kévin Dietrich noreply at git.blender.org
Mon Nov 16 13:10:44 CET 2020


Commit: 117d3c723431a92b7cea2cc8be8b627280af83aa
Author: Kévin Dietrich
Date:   Tue Nov 10 15:02:15 2020 +0100
Branches: cycles_procedural_api
https://developer.blender.org/rB117d3c723431a92b7cea2cc8be8b627280af83aa

consolidate flags into a single enumeration

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

M	intern/cycles/blender/blender_object.cpp
M	intern/cycles/blender/blender_particles.cpp
M	intern/cycles/blender/blender_sync.cpp
M	intern/cycles/render/background.cpp
M	intern/cycles/render/bake.cpp
M	intern/cycles/render/film.cpp
M	intern/cycles/render/geometry.cpp
M	intern/cycles/render/geometry.h
M	intern/cycles/render/integrator.cpp
M	intern/cycles/render/integrator.h
M	intern/cycles/render/light.cpp
M	intern/cycles/render/light.h
M	intern/cycles/render/object.cpp
M	intern/cycles/render/object.h
M	intern/cycles/render/osl.cpp
M	intern/cycles/render/scene.cpp
M	intern/cycles/render/scene.h
M	intern/cycles/render/shader.cpp
M	intern/cycles/render/shader.h
M	intern/cycles/render/svm.cpp

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

diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp
index c2e277a372f..752eae077cb 100644
--- a/intern/cycles/blender/blender_object.cpp
+++ b/intern/cycles/blender/blender_object.cpp
@@ -246,7 +246,7 @@ Object *BlenderSync::sync_object(BL::Depsgraph &b_depsgraph,
   /* holdout */
   object->set_use_holdout(use_holdout);
   if (object->use_holdout_is_modified()) {
-    scene->object_manager->tag_update(scene, ObjectManager::HOLDOUT_MODIFIED);
+    scene->object_manager->tag_update(scene, HOLDOUT_MODIFIED);
   }
 
   object->set_visibility(visibility);
diff --git a/intern/cycles/blender/blender_particles.cpp b/intern/cycles/blender/blender_particles.cpp
index d5dd7215c47..4a10042d366 100644
--- a/intern/cycles/blender/blender_particles.cpp
+++ b/intern/cycles/blender/blender_particles.cpp
@@ -85,7 +85,7 @@ bool BlenderSync::sync_dupli_particle(BL::Object &b_ob,
   object->set_particle_index(psys->particles.size() - 1);
 
   if (object->particle_index_is_modified())
-    scene->object_manager->tag_update(scene, ObjectManager::PARTICLE_MODIFIED);
+    scene->object_manager->tag_update(scene, PARTICLE_MODIFIED);
 
   /* return that this object has particle data */
   return true;
diff --git a/intern/cycles/blender/blender_sync.cpp b/intern/cycles/blender/blender_sync.cpp
index 5b05b57dc06..eb58c49a4a1 100644
--- a/intern/cycles/blender/blender_sync.cpp
+++ b/intern/cycles/blender/blender_sync.cpp
@@ -305,7 +305,7 @@ void BlenderSync::sync_integrator()
   integrator->set_sample_clamp_indirect(get_float(cscene, "sample_clamp_indirect"));
   if (!preview) {
     if (integrator->get_motion_blur() != r.use_motion_blur()) {
-      scene->object_manager->tag_update(scene, ObjectManager::MOTION_BLUR_MODIFIED);
+      scene->object_manager->tag_update(scene, MOTION_BLUR_MODIFIED);
       scene->camera->tag_modified();
     }
 
@@ -377,7 +377,8 @@ void BlenderSync::sync_integrator()
     integrator->set_ao_bounces(0);
   }
 
-  integrator->tag_update(scene, Integrator::UPDATE_ALL);
+  /* UPDATE_NONE as we don't want to tag the integrator as modified, just tag dependant things */
+  integrator->tag_update(scene, UPDATE_NONE);
 }
 
 /* Film */
@@ -730,7 +731,7 @@ vector<Pass> BlenderSync::sync_render_passes(BL::RenderLayer &b_rlay,
 
   scene->film->set_pass_alpha_threshold(b_view_layer.pass_alpha_threshold());
   scene->film->tag_passes_update(scene, passes);
-  scene->integrator->tag_update(scene, Integrator::UPDATE_ALL);
+  scene->integrator->tag_update(scene, UPDATE_ALL);
 
   return passes;
 }
diff --git a/intern/cycles/render/background.cpp b/intern/cycles/render/background.cpp
index 1303f894912..1093762f438 100644
--- a/intern/cycles/render/background.cpp
+++ b/intern/cycles/render/background.cpp
@@ -131,7 +131,7 @@ void Background::device_free(Device * /*device*/, DeviceScene * /*dscene*/)
 void Background::tag_update(Scene *scene)
 {
   if (ao_factor_is_modified() || use_ao_is_modified()) {
-    scene->integrator->tag_update(scene, Integrator::BACKGROUND_AO_MODIFIED);
+    scene->integrator->tag_update(scene, BACKGROUND_AO_MODIFIED);
   }
 }
 
diff --git a/intern/cycles/render/bake.cpp b/intern/cycles/render/bake.cpp
index 317a3937cab..2b6293a17e1 100644
--- a/intern/cycles/render/bake.cpp
+++ b/intern/cycles/render/bake.cpp
@@ -114,7 +114,7 @@ void BakeManager::set(Scene *scene,
 
   /* create device and update scene */
   scene->film->tag_modified();
-  scene->integrator->tag_update(scene, Integrator::UPDATE_ALL);
+  scene->integrator->tag_update(scene, UPDATE_ALL);
 
   need_update_ = true;
 }
diff --git a/intern/cycles/render/film.cpp b/intern/cycles/render/film.cpp
index 9b7657802d6..7e9f8c1fcfc 100644
--- a/intern/cycles/render/film.cpp
+++ b/intern/cycles/render/film.cpp
@@ -688,16 +688,16 @@ void Film::device_free(Device * /*device*/, DeviceScene * /*dscene*/, Scene *sce
 void Film::tag_passes_update(Scene *scene, const vector<Pass> &passes_, bool update_passes)
 {
   if (Pass::contains(scene->passes, PASS_UV) != Pass::contains(passes_, PASS_UV)) {
-    scene->geometry_manager->tag_update(scene, GeometryManager::UV_PASS_NEEDED);
+    scene->geometry_manager->tag_update(scene, UV_PASS_NEEDED);
 
     foreach (Shader *shader, scene->shaders)
       shader->need_update_uvs = true;
   }
   else if (Pass::contains(scene->passes, PASS_MOTION) != Pass::contains(passes_, PASS_MOTION)) {
-    scene->geometry_manager->tag_update(scene, GeometryManager::MOTION_PASS_NEEDED);
+    scene->geometry_manager->tag_update(scene, MOTION_PASS_NEEDED);
   }
   else if (Pass::contains(scene->passes, PASS_AO) != Pass::contains(passes_, PASS_AO)) {
-    scene->integrator->tag_update(scene, Integrator::AO_PASS_MODIFIED);
+    scene->integrator->tag_update(scene, AO_PASS_MODIFIED);
   }
 
   if (update_passes) {
diff --git a/intern/cycles/render/geometry.cpp b/intern/cycles/render/geometry.cpp
index f49c421df60..24997b56ae6 100644
--- a/intern/cycles/render/geometry.cpp
+++ b/intern/cycles/render/geometry.cpp
@@ -262,19 +262,19 @@ void Geometry::tag_update(Scene *scene, bool rebuild)
 {
   if (rebuild) {
     need_update_rebuild = true;
-    scene->light_manager->tag_update(scene, LightManager::MESH_NEED_REBUILD);
+    scene->light_manager->tag_update(scene, MESH_NEED_REBUILD);
   }
   else {
     foreach (Node *node, used_shaders) {
       Shader *shader = static_cast<Shader *>(node);
       if (shader->has_surface_emission) {
-        scene->light_manager->tag_update(scene, LightManager::EMISSIVE_MESH_MODIFIED);
+        scene->light_manager->tag_update(scene, EMISSIVE_MESH_MODIFIED);
         break;
       }
     }
   }
 
-  scene->geometry_manager->tag_update(scene, GeometryManager::GEOMETRY_MODIFIED);
+  scene->geometry_manager->tag_update(scene, GEOMETRY_MODIFIED);
 }
 
 /* Geometry Manager */
@@ -1801,7 +1801,7 @@ void GeometryManager::device_update(Device *device,
     }
   }
 
-  update_flags = 0;
+  update_flags = UPDATE_NONE;
 
   if (true_displacement_used) {
     /* Re-tag flags for update, so they're re-evaluated
@@ -1892,18 +1892,19 @@ void GeometryManager::device_free(Device *device, DeviceScene *dscene)
 #endif
 }
 
-void GeometryManager::tag_update(Scene *scene, uint32_t flag)
+void GeometryManager::tag_update(Scene *scene, UpdateFlags flag)
 {
   update_flags |= flag;
 
+  /* do not tag the object manager for an update if it the one who tagged us */
   if ((flag & OBJECT_MANAGER) == 0) {
-    scene->object_manager->tag_update(scene, ObjectManager::GEOMETRY_MANAGER);
+    scene->object_manager->tag_update(scene, GEOMETRY_MANAGER);
   }
 }
 
 bool GeometryManager::need_update() const
 {
-  return update_flags != 0;
+  return update_flags != UPDATE_NONE;
 }
 
 void GeometryManager::collect_statistics(const Scene *scene, RenderStats *stats)
diff --git a/intern/cycles/render/geometry.h b/intern/cycles/render/geometry.h
index 00eff781e7d..07f7f144ad6 100644
--- a/intern/cycles/render/geometry.h
+++ b/intern/cycles/render/geometry.h
@@ -41,6 +41,7 @@ class Scene;
 class SceneParams;
 class Shader;
 class Volume;
+enum UpdateFlags : uint32_t;
 
 /* Geometry
  *
@@ -179,25 +180,11 @@ class GeometryManager {
   };
 
   DeviceUpdateFlags device_update_flags;
-  uint32_t update_flags = 0;
+  UpdateFlags update_flags;
 
   BVH *bvh;
 
  public:
-  enum {
-    MESH_ADDED   = (1 << 0),
-    MESH_REMOVED = (1 << 1),
-    HAIR_ADDED   = (1 << 2),
-    HAIR_REMOVED = (1 << 3),
-    UV_PASS_NEEDED = (1 << 4),
-    MOTION_PASS_NEEDED = (1 << 5),
-    SHADER_ATTRIBUTE_MODIFIED = (1 << 6),
-    OBJECT_MANAGER = (1 << 7),
-    GEOMETRY_MODIFIED = (1 << 8),
-
-    UPDATE_ALL = ~0u,
-  };
-
   /* Update Flags */
   bool need_flags_update;
 
@@ -211,7 +198,7 @@ class GeometryManager {
   void device_free(Device *device, DeviceScene *dscene);
 
   /* Updates */
-  void tag_update(Scene *scene, uint32_t flag);
+  void tag_update(Scene *scene, UpdateFlags flag);
 
   bool need_update() const;
 
diff --git a/intern/cycles/render/integrator.cpp b/intern/cycles/render/integrator.cpp
index a50e8942d2d..4aca96a057b 100644
--- a/intern/cycles/render/integrator.cpp
+++ b/intern/cycles/render/integrator.cpp
@@ -278,7 +278,7 @@ void Integrator::device_free(Device *, DeviceScene *dscene)
   dscene->sample_pattern_lut.free();
 }
 
-void Integrator::tag_update(Scene *scene, uint32_t flag)
+void Integrator::tag_update(Scene *scene, UpdateFlags flag)
 {
   if (flag & UPDATE_ALL) {
     tag_modified();
@@ -292,7 +292,7 @@ void Integrator::tag_update(Scene *scene, uint32_t flag)
   if (filter_glossy_is_modified()) {
     foreach (Shader *shader, scene->shaders) {
       if (shader->has_integrator_dependency) {
-        scene->shader_manager->tag_update(scene, ShaderManager::INTEGRATOR_MODIFIED);
+        scene->shader_manager->tag_update(scene, INTEGRATOR_MODIFIED);
         break;
       }
     }
diff --git a/intern/cycles/render/integrator.h b/intern/cycles/render/integrator.h
index 1c917459c64..7eda02020dc 100644
--- a/intern/cycles/render/integrator.h
+++ b/intern/cycles/render/integrator.h
@@ -26,6 +26,7 @@ CCL_NAMESPACE_BEGIN
 class Device;
 class DeviceScene;
 class Scene;
+enum UpdateFlags : uint32_t;
 
 class Integrator : public Node {
  public:
@@ -89,19 +90,13 @@ class Integrator : public Node {
 
   NODE_SOCKET_API(SamplingPattern, sampling_pattern)
 
-  enum {
-    AO_PASS_MODIFIED = (1 << 0),
-    BACKGROUND_AO_MODIFIED = (1 << 1),
-    UPDATE_ALL = ~0u,
-  };
-
   Integrator();
   ~Integrator();
 
   void device_update(Device *device, DeviceScene *dscene, Scene *scene);
   void device_free(Device *device, DeviceScene *dscene);
 
-  void tag_update(Scene *scene, uint32_t flag);
+  void tag_update(Scene *scene, UpdateFlags flag);
 };
 
 CCL_NAMESPACE_END
diff --git a/intern/cycles/render/light.cpp b/intern/cycles/render/light.cpp
index 5ff4705d6cd..9989fa32f82 100644
--- a/intern/cycles/render/light.cpp
+++ b/intern/cycles/render/light.cpp
@@ -163,7 +163,7 @@ Light::Light() : Node(node_type)
 void Light::tag_update(Scene *scene)
 {
   if (is_modified()) {
-    scene->light_manager->tag_update(scene, LightManager::LIGHT_MODIFIED);
+    scene->light_manager->tag_update(scene, LIGHT_MODIFIED);
   }
 }
 
@@ -1000,7 +1000,7 @@ void LightManage

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list