Differential D14365 Diff 59272 source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edit_data.cc
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edit_data.cc
| Show First 20 Lines • Show All 132 Lines • ▼ Show 20 Lines | static void extract_edit_data_iter_poly_bm(const MeshRenderData *mr, | ||||
| BMLoop *l_iter, *l_first; | BMLoop *l_iter, *l_first; | ||||
| l_iter = l_first = BM_FACE_FIRST_LOOP(f); | l_iter = l_first = BM_FACE_FIRST_LOOP(f); | ||||
| do { | do { | ||||
| const int l_index = BM_elem_index_get(l_iter); | const int l_index = BM_elem_index_get(l_iter); | ||||
| EditLoopData *data = vbo_data + l_index; | EditLoopData *data = vbo_data + l_index; | ||||
| memset(data, 0x0, sizeof(*data)); | memset(data, 0x0, sizeof(*data)); | ||||
| mesh_render_data_face_flag(mr, f, -1, data); | mesh_render_data_face_flag(mr, f, {-1, -1, -1, -1}, data); | ||||
| mesh_render_data_edge_flag(mr, l_iter->e, data); | mesh_render_data_edge_flag(mr, l_iter->e, data); | ||||
| mesh_render_data_vert_flag(mr, l_iter->v, data); | mesh_render_data_vert_flag(mr, l_iter->v, data); | ||||
| } while ((l_iter = l_iter->next) != l_first); | } while ((l_iter = l_iter->next) != l_first); | ||||
| } | } | ||||
| static void extract_edit_data_iter_poly_mesh(const MeshRenderData *mr, | static void extract_edit_data_iter_poly_mesh(const MeshRenderData *mr, | ||||
| const MPoly *mp, | const MPoly *mp, | ||||
| const int mp_index, | const int mp_index, | ||||
| void *_data) | void *_data) | ||||
| { | { | ||||
| EditLoopData *vbo_data = *(EditLoopData **)_data; | EditLoopData *vbo_data = *(EditLoopData **)_data; | ||||
| const MLoop *mloop = mr->mloop; | const MLoop *mloop = mr->mloop; | ||||
| const int ml_index_end = mp->loopstart + mp->totloop; | const int ml_index_end = mp->loopstart + mp->totloop; | ||||
| for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) { | for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) { | ||||
| const MLoop *ml = &mloop[ml_index]; | const MLoop *ml = &mloop[ml_index]; | ||||
| EditLoopData *data = vbo_data + ml_index; | EditLoopData *data = vbo_data + ml_index; | ||||
| memset(data, 0x0, sizeof(*data)); | memset(data, 0x0, sizeof(*data)); | ||||
| BMFace *efa = bm_original_face_get(mr, mp_index); | BMFace *efa = bm_original_face_get(mr, mp_index); | ||||
| BMEdge *eed = bm_original_edge_get(mr, ml->e); | BMEdge *eed = bm_original_edge_get(mr, ml->e); | ||||
| BMVert *eve = bm_original_vert_get(mr, ml->v); | BMVert *eve = bm_original_vert_get(mr, ml->v); | ||||
| if (efa) { | if (efa) { | ||||
| mesh_render_data_face_flag(mr, efa, -1, data); | mesh_render_data_face_flag(mr, efa, {-1, -1, -1, -1}, data); | ||||
| } | } | ||||
| if (eed) { | if (eed) { | ||||
| mesh_render_data_edge_flag(mr, eed, data); | mesh_render_data_edge_flag(mr, eed, data); | ||||
| } | } | ||||
| if (eve) { | if (eve) { | ||||
| mesh_render_data_vert_flag(mr, eve, data); | mesh_render_data_vert_flag(mr, eve, data); | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 110 Lines • ▼ Show 20 Lines | if (edge_origindex != -1) { | ||||
| /* NOTE: #subdiv_loop_edge_index already has the origindex layer baked in. */ | /* NOTE: #subdiv_loop_edge_index already has the origindex layer baked in. */ | ||||
| const BMEdge *eed = BM_edge_at_index(mr->bm, edge_origindex); | const BMEdge *eed = BM_edge_at_index(mr->bm, edge_origindex); | ||||
| mesh_render_data_edge_flag(mr, eed, edit_loop_data); | mesh_render_data_edge_flag(mr, eed, edit_loop_data); | ||||
| } | } | ||||
| /* coarse_quad can be null when called by the mesh iteration below. */ | /* coarse_quad can be null when called by the mesh iteration below. */ | ||||
| if (coarse_quad) { | if (coarse_quad) { | ||||
| /* The -1 parameter is for edit_uvs, which we don't do here. */ | /* The -1 parameter is for edit_uvs, which we don't do here. */ | ||||
| mesh_render_data_face_flag(mr, coarse_quad, -1, edit_loop_data); | mesh_render_data_face_flag(mr, coarse_quad, {-1, -1, -1, -1}, edit_loop_data); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void extract_edit_data_iter_subdiv_mesh(const DRWSubdivCache *subdiv_cache, | static void extract_edit_data_iter_subdiv_mesh(const DRWSubdivCache *subdiv_cache, | ||||
| const MeshRenderData *mr, | const MeshRenderData *mr, | ||||
| void *_data, | void *_data, | ||||
| uint subdiv_quad_index, | uint subdiv_quad_index, | ||||
| ▲ Show 20 Lines • Show All 70 Lines • Show Last 20 Lines | |||||