[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