Commit: 9a55cb40342d3e700d5ae95e18ffcbcc0c743a4e
Author: Hans Goudey
Date: Mon May 30 20:57:58 2022 +0200
Branches: refactor-mesh-hide-generic
https://developer.blender.org/rB9a55cb40342d3e700d5ae95e18ffcbcc0c743a4e
Fixes to subdivision drawing code
===================================================================
M source/blender/draw/intern/draw_cache_impl_subdivision.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_lines.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
===================================================================
diff --git a/source/blender/draw/intern/draw_cache_impl_subdivision.cc
b/source/blender/draw/intern/draw_cache_impl_subdivision.cc
index a0c7e064e00..60a5fc803ce 100644
--- a/source/blender/draw/intern/draw_cache_impl_subdivision.cc
+++ b/source/blender/draw/intern/draw_cache_impl_subdivision.cc
@@ -667,7 +667,9 @@ static void
draw_subdiv_cache_extra_coarse_face_data_bm(BMesh *bm,
}
}
-static void draw_subdiv_cache_extra_coarse_face_data_mesh(Mesh *mesh, uint32_t
*flags_data)
+static void draw_subdiv_cache_extra_coarse_face_data_mesh(const MeshRenderData
*mr,
+ Mesh *mesh,
+ uint32_t *flags_data)
{
for (int i = 0; i < mesh->totpoly; i++) {
uint32_t flag = 0;
@@ -677,7 +679,7 @@ static void
draw_subdiv_cache_extra_coarse_face_data_mesh(Mesh *mesh, uint32_t *
if ((mesh->mpoly[i].flag & ME_FACE_SEL) != 0) {
flag |= SUBDIV_COARSE_FACE_FLAG_SELECT;
}
- if ((mesh->mpoly[i].flag & ME_HIDE) != 0) {
+ if (mr->face_hide && mr->face_hide[i]) {
flag |= SUBDIV_COARSE_FACE_FLAG_HIDDEN;
}
flags_data[i] = (uint)(mesh->mpoly[i].loopstart) | (flag <<
SUBDIV_COARSE_FACE_FLAG_OFFSET);
@@ -690,7 +692,7 @@ static void
draw_subdiv_cache_extra_coarse_face_data_mapped(Mesh *mesh,
uint32_t
*flags_data)
{
if (bm == nullptr) {
- draw_subdiv_cache_extra_coarse_face_data_mesh(mesh, flags_data);
+ draw_subdiv_cache_extra_coarse_face_data_mesh(mr, mesh, flags_data);
return;
}
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 ded32f69726..6df22e4ed2d 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
@@ -184,7 +184,7 @@ static void extract_lines_loose_geom_subdiv(const
DRWSubdivCache *subdiv_cache,
const MEdge *medge = mr->medge;
for (DRWSubdivLooseEdge edge : loose_edges) {
- *flags_data++ = (medge[edge.coarse_edge_index].flag & ME_HIDE) != 0;
+ *flags_data++ = mr->edge_hide && mr->edge_hide[edge.coarse_edge_index];
}
GPUIndexBuf *ibo = static_cast<GPUIndexBuf *>(buffer);
diff --git
a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
index 1b60f278a85..411e000f361 100644
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
@@ -181,8 +181,7 @@ static void
extract_points_iter_subdiv_common(GPUIndexBufBuilder *elb,
}
}
else {
- const MVert *mv = &mr->mvert[coarse_vertex_index];
- if (mr->use_hide && (mv->flag & ME_HIDE)) {
+ if (mr->use_hide && mr->vert_hide && mr->vert_hide[coarse_vertex_index])
{
GPU_indexbuf_set_point_restart(elb, coarse_vertex_index);
continue;
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs