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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs