Cleanup: Pass field directly to mesh render data creation

Avoid the need to set use_hide afterwards when other things are stored directly.
This commit is contained in:
Hans Goudey
2024-02-26 11:34:55 -05:00
parent 85c350e3e9
commit 53f1ebf232
4 changed files with 29 additions and 9 deletions

View File

@@ -696,9 +696,16 @@ void mesh_buffer_cache_create_requested(TaskGraph *task_graph,
double rdata_start = BLI_time_now_seconds();
#endif
MeshRenderData *mr = mesh_render_data_create(
object, mesh, is_editmode, is_paint_mode, is_mode_active, obmat, do_final, do_uvedit, ts);
mr->use_hide = use_hide;
MeshRenderData *mr = mesh_render_data_create(object,
mesh,
is_editmode,
is_paint_mode,
is_mode_active,
obmat,
do_final,
do_uvedit,
use_hide,
ts);
mr->use_subsurf_fdots = mr->mesh && !mr->mesh->runtime->subsurf_face_dot_tags.is_empty();
mr->use_final_mesh = do_final;
mr->use_simplify_normals = (scene->r.mode & R_SIMPLIFY) && (scene->r.mode & R_SIMPLIFY_NORMALS);

View File

@@ -547,6 +547,7 @@ MeshRenderData *mesh_render_data_create(Object *object,
const float obmat[4][4],
const bool do_final,
const bool do_uvedit,
const bool use_hide,
const ToolSettings *ts)
{
MeshRenderData *mr = MEM_new<MeshRenderData>(__func__);
@@ -555,6 +556,8 @@ MeshRenderData *mesh_render_data_create(Object *object,
copy_m4_m4(mr->obmat, obmat);
mr->use_hide = use_hide;
if (is_editmode) {
Mesh *editmesh_eval_final = BKE_object_get_editmesh_eval_final(object);
Mesh *editmesh_eval_cage = BKE_object_get_editmesh_eval_cage(object);
@@ -679,9 +682,11 @@ MeshRenderData *mesh_render_data_create(Object *object,
mr->material_indices = *attributes.lookup<int>("material_index", bke::AttrDomain::Face);
if (is_mode_active || is_paint_mode) {
mr->hide_vert = *attributes.lookup<bool>(".hide_vert", bke::AttrDomain::Point);
mr->hide_edge = *attributes.lookup<bool>(".hide_edge", bke::AttrDomain::Edge);
mr->hide_poly = *attributes.lookup<bool>(".hide_poly", bke::AttrDomain::Face);
if (use_hide) {
mr->hide_vert = *attributes.lookup<bool>(".hide_vert", bke::AttrDomain::Point);
mr->hide_edge = *attributes.lookup<bool>(".hide_edge", bke::AttrDomain::Edge);
mr->hide_poly = *attributes.lookup<bool>(".hide_poly", bke::AttrDomain::Face);
}
mr->select_vert = *attributes.lookup<bool>(".select_vert", bke::AttrDomain::Point);
mr->select_edge = *attributes.lookup<bool>(".select_edge", bke::AttrDomain::Edge);

View File

@@ -2164,9 +2164,16 @@ static bool draw_subdiv_create_requested_buffers(Object *ob,
draw_subdiv_cache_ensure_mat_offsets(draw_cache, mesh_eval, batch_cache.mat_len);
}
MeshRenderData *mr = mesh_render_data_create(
ob, mesh, is_editmode, is_paint_mode, is_mode_active, obmat, do_final, do_uvedit, ts);
mr->use_hide = use_hide;
MeshRenderData *mr = mesh_render_data_create(ob,
mesh,
is_editmode,
is_paint_mode,
is_mode_active,
obmat,
do_final,
do_uvedit,
use_hide,
ts);
draw_cache.use_hide = use_hide;
/* Used for setting loop normals flags. Mapped extraction is only used during edit mode.

View File

@@ -283,6 +283,7 @@ MeshRenderData *mesh_render_data_create(Object *object,
const float obmat[4][4],
bool do_final,
bool do_uvedit,
bool use_hide,
const ToolSettings *ts);
void mesh_render_data_free(MeshRenderData *mr);
void mesh_render_data_update_normals(MeshRenderData &mr, eMRDataType data_flag);