[Bf-blender-cvs] [785d87ee42a] master: Fix T90017: Bone widget drawing inconsistent with editing

Germano Cavalcante noreply at git.blender.org
Wed Jul 21 19:55:29 CEST 2021


Commit: 785d87ee42aa1bb09c6ab3282b9fd602f9c14d62
Author: Germano Cavalcante
Date:   Wed Jul 21 14:46:41 2021 -0300
Branches: master
https://developer.blender.org/rB785d87ee42aa1bb09c6ab3282b9fd602f9c14d62

Fix T90017: Bone widget drawing inconsistent with editing

The `lines_loose` extractor did not trigger loose geometry caching.

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

M	source/blender/draw/intern/draw_cache_extract.h
M	source/blender/draw/intern/draw_cache_extract_mesh_render_data.c
M	source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc

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

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);



More information about the Bf-blender-cvs mailing list