From 785d87ee42aa1bb09c6ab3282b9fd602f9c14d62 Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Wed, 21 Jul 2021 14:46:41 -0300 Subject: Fix T90017: Bone widget drawing inconsistent with editing The `lines_loose` extractor did not trigger loose geometry caching. --- source/blender/draw/intern/draw_cache_extract.h | 5 +++-- source/blender/draw/intern/draw_cache_extract_mesh_render_data.c | 2 +- source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) (limited to 'source/blender/draw') diff --git a/source/blender/draw/intern/draw_cache_extract.h b/source/blender/draw/intern/draw_cache_extract.h index a0694a08f0b..f2f769534ca 100644 --- a/source/blender/draw/intern/draw_cache_extract.h +++ b/source/blender/draw/intern/draw_cache_extract.h @@ -81,9 +81,10 @@ typedef enum eMRDataType { MR_DATA_POLY_NOR = 1 << 1, MR_DATA_LOOP_NOR = 1 << 2, MR_DATA_LOOPTRI = 1 << 3, + MR_DATA_LOOSE_GEOM = 1 << 4, /** Force loop normals calculation. */ - MR_DATA_TAN_LOOP_NOR = 1 << 4, - MR_DATA_MAT_OFFSETS = 1 << 5, + MR_DATA_TAN_LOOP_NOR = 1 << 5, + MR_DATA_MAT_OFFSETS = 1 << 6, } eMRDataType; ENUM_OPERATORS(eMRDataType, MR_DATA_MAT_OFFSETS) diff --git a/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c b/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c index 041dd07b367..bec21bd5a8c 100644 --- a/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c +++ b/source/blender/draw/intern/draw_cache_extract_mesh_render_data.c @@ -170,7 +170,7 @@ void mesh_render_data_update_loose_geom(MeshRenderData *mr, const eMRIterType iter_type, const eMRDataType data_flag) { - if (iter_type & (MR_ITER_LEDGE | MR_ITER_LVERT)) { + if ((iter_type & (MR_ITER_LEDGE | MR_ITER_LVERT)) || (data_flag & MR_DATA_LOOSE_GEOM)) { mesh_render_data_loose_geom_ensure(mr, cache); mesh_render_data_loose_geom_load(mr, cache); } diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc index 2c2603af1b2..6c677debf88 100644 --- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc +++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc @@ -237,7 +237,7 @@ constexpr MeshExtract create_extractor_lines_loose_only() { MeshExtract extractor = {nullptr}; extractor.init = extract_lines_loose_only_init; - extractor.data_type = MR_DATA_NONE; + extractor.data_type = MR_DATA_LOOSE_GEOM; extractor.data_size = 0; extractor.use_threading = false; extractor.mesh_buffer_offset = offsetof(MeshBufferCache, ibo.lines_loose); -- cgit v1.2.3