diff options
author | Jacques Lucke <jacques@blender.org> | 2022-09-23 13:39:56 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-09-23 13:41:22 +0300 |
commit | e5d4afd5bac71e29ba71ecf091feaa0d70b70260 (patch) | |
tree | bb42b190977e6bd306e969093a093fc8d4c98bae /source/blender/draw/intern/draw_manager.c | |
parent | eb54502d9d29b18cbeda22125a601f3ce0bc423e (diff) |
Depsgraph: generalize passing parameters to depsgraph object iterator
This makes it easier to pass more parameters to the iterator in the future.
Differential Revision: https://developer.blender.org/D16047
Diffstat (limited to 'source/blender/draw/intern/draw_manager.c')
-rw-r--r-- | source/blender/draw/intern/draw_manager.c | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c index eab79652762..d9d7528f642 100644 --- a/source/blender/draw/intern/draw_manager.c +++ b/source/blender/draw/intern/draw_manager.c @@ -969,10 +969,13 @@ void DRW_cache_free_old_batches(Main *bmain) /* TODO(fclem): This is not optimal since it iter over all dupli instances. * In this case only the source object should be tagged. */ - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN (depsgraph, ob) { + DEGObjectIterSettings deg_iter_settings = {}; + deg_iter_settings.depsgraph = depsgraph; + deg_iter_settings.flags = DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS; + DEG_OBJECT_ITER_BEGIN (°_iter_settings, ob) { DRW_batch_cache_free_old(ob, ctime); } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END; + DEG_OBJECT_ITER_END; } } } @@ -1689,7 +1692,10 @@ void DRW_draw_render_loop_ex(struct Depsgraph *depsgraph, if (do_populate_loop) { DST.dupli_origin = NULL; DST.dupli_origin_data = NULL; - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN (depsgraph, ob) { + DEGObjectIterSettings deg_iter_settings = {}; + deg_iter_settings.depsgraph = depsgraph; + deg_iter_settings.flags = DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS; + DEG_OBJECT_ITER_BEGIN (°_iter_settings, ob) { if ((object_type_exclude_viewport & (1 << ob->type)) != 0) { continue; } @@ -1701,7 +1707,7 @@ void DRW_draw_render_loop_ex(struct Depsgraph *depsgraph, drw_duplidata_load(ob); drw_engines_cache_populate(ob); } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END; + DEG_OBJECT_ITER_END; } drw_duplidata_free(); @@ -1841,14 +1847,17 @@ bool DRW_render_check_grease_pencil(Depsgraph *depsgraph) return false; } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN (depsgraph, ob) { + DEGObjectIterSettings deg_iter_settings = {}; + deg_iter_settings.depsgraph = depsgraph; + deg_iter_settings.flags = DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS; + DEG_OBJECT_ITER_BEGIN (°_iter_settings, ob) { if (ob->type == OB_GPENCIL) { if (DRW_object_visibility_in_active_context(ob) & OB_VISIBLE_SELF) { return true; } } } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END; + DEG_OBJECT_ITER_END; return false; } @@ -2051,7 +2060,10 @@ void DRW_render_object_iter( 0; DST.dupli_origin = NULL; DST.dupli_origin_data = NULL; - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN (depsgraph, ob) { + DEGObjectIterSettings deg_iter_settings = {}; + deg_iter_settings.depsgraph = depsgraph; + deg_iter_settings.flags = DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS; + DEG_OBJECT_ITER_BEGIN (°_iter_settings, ob) { if ((object_type_exclude_viewport & (1 << ob->type)) == 0) { DST.dupli_parent = data_.dupli_parent; DST.dupli_source = data_.dupli_object_current; @@ -2067,7 +2079,7 @@ void DRW_render_object_iter( } } } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END; + DEG_OBJECT_ITER_END; drw_duplidata_free(); drw_task_graph_deinit(); @@ -2195,10 +2207,13 @@ void DRW_draw_render_loop_2d_ex(struct Depsgraph *depsgraph, /* Only iterate over objects when overlay uses object data. */ if (do_populate_loop) { - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN (depsgraph, ob) { + DEGObjectIterSettings deg_iter_settings = {}; + deg_iter_settings.depsgraph = depsgraph; + deg_iter_settings.flags = DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS; + DEG_OBJECT_ITER_BEGIN (°_iter_settings, ob) { drw_engines_cache_populate(ob); } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END; + DEG_OBJECT_ITER_END; } drw_engines_cache_finish(); @@ -2479,7 +2494,10 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph, bool filter_exclude = false; DST.dupli_origin = NULL; DST.dupli_origin_data = NULL; - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN (depsgraph, ob) { + DEGObjectIterSettings deg_iter_settings = {}; + deg_iter_settings.depsgraph = depsgraph; + deg_iter_settings.flags = DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS; + DEG_OBJECT_ITER_BEGIN (°_iter_settings, ob) { if (!BKE_object_is_visible_in_viewport(v3d, ob)) { continue; } @@ -2515,7 +2533,7 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph, drw_engines_cache_populate(ob); } } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END; + DEG_OBJECT_ITER_END; } drw_duplidata_free(); @@ -2641,7 +2659,10 @@ static void drw_draw_depth_loop_impl(struct Depsgraph *depsgraph, const int object_type_exclude_viewport = v3d->object_type_exclude_viewport; DST.dupli_origin = NULL; DST.dupli_origin_data = NULL; - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN (DST.draw_ctx.depsgraph, ob) { + DEGObjectIterSettings deg_iter_settings = {}; + deg_iter_settings.depsgraph = DST.draw_ctx.depsgraph; + deg_iter_settings.flags = DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS; + DEG_OBJECT_ITER_BEGIN (°_iter_settings, ob) { if ((object_type_exclude_viewport & (1 << ob->type)) != 0) { continue; } @@ -2653,7 +2674,7 @@ static void drw_draw_depth_loop_impl(struct Depsgraph *depsgraph, drw_duplidata_load(ob); drw_engines_cache_populate(ob); } - DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END; + DEG_OBJECT_ITER_END; drw_duplidata_free(); drw_engines_cache_finish(); |