Differential D13909 Diff 47373 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 281 Lines • ▼ Show 20 Lines | static void extract_edit_data_iter_subdiv_bm(const DRWSubdivCache *subdiv_cache, | ||||
| uint end_loop_idx = (subdiv_quad_index + 1) * 4; | uint end_loop_idx = (subdiv_quad_index + 1) * 4; | ||||
| for (uint i = start_loop_idx; i < end_loop_idx; i++) { | for (uint i = start_loop_idx; i < end_loop_idx; i++) { | ||||
| const int vert_origindex = subdiv_loop_vert_index[i]; | const int vert_origindex = subdiv_loop_vert_index[i]; | ||||
| const int edge_origindex = subdiv_loop_edge_index[i]; | const int edge_origindex = subdiv_loop_edge_index[i]; | ||||
| EditLoopData *edit_loop_data = &vbo_data[i]; | EditLoopData *edit_loop_data = &vbo_data[i]; | ||||
| memset(edit_loop_data, 0, sizeof(EditLoopData)); | memset(edit_loop_data, 0, sizeof(EditLoopData)); | ||||
| if (vert_origindex != -1) { | if ((vert_origindex != -1) && | ||||
| /* This check is needed when there is a modifier between the | |||||
| * original edit-mesh and the open-subdiv modifier. */ | |||||
| (vert_origindex < mr->vert_len)) { | |||||
| const BMVert *eve = bm_original_vert_get(mr, vert_origindex); | const BMVert *eve = bm_original_vert_get(mr, vert_origindex); | ||||
| if (eve) { | if (eve) { | ||||
| mesh_render_data_vert_flag(mr, eve, edit_loop_data); | mesh_render_data_vert_flag(mr, eve, edit_loop_data); | ||||
| } | } | ||||
| } | } | ||||
| if (edge_origindex != -1) { | if ((edge_origindex != -1) && | ||||
| /* This check is needed when there is a modifier between the | |||||
| * original edit-mesh and the open-subdiv modifier. */ | |||||
| (edge_origindex < mr->edge_len)) { | |||||
| const BMEdge *eed = bm_original_edge_get(mr, edge_origindex); | const BMEdge *eed = bm_original_edge_get(mr, edge_origindex); | ||||
| if (eed) { | if (eed) { | ||||
| mesh_render_data_edge_flag(mr, eed, edit_loop_data); | mesh_render_data_edge_flag(mr, eed, edit_loop_data); | ||||
| } | } | ||||
| } | } | ||||
| /* 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, edit_loop_data); | ||||
| ▲ Show 20 Lines • Show All 66 Lines • Show Last 20 Lines | |||||