Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/draw/intern/draw_cache_impl_subdivision.cc')
-rw-r--r--source/blender/draw/intern/draw_cache_impl_subdivision.cc35
1 files changed, 18 insertions, 17 deletions
diff --git a/source/blender/draw/intern/draw_cache_impl_subdivision.cc b/source/blender/draw/intern/draw_cache_impl_subdivision.cc
index 6a9e6c126e9..e31ac72c94d 100644
--- a/source/blender/draw/intern/draw_cache_impl_subdivision.cc
+++ b/source/blender/draw/intern/draw_cache_impl_subdivision.cc
@@ -2159,7 +2159,7 @@ void DRW_subdivide_loose_geom(DRWSubdivCache *subdiv_cache, MeshBufferCache *cac
int subd_vert_offset = 0;
/* Subdivide each loose coarse edge. */
- const Span<MVert> coarse_verts = coarse_mesh->verts();
+ const Span<float3> coarse_positions = coarse_mesh->positions();
const Span<MEdge> coarse_edges = coarse_mesh->edges();
int *vert_to_edge_buffer;
@@ -2183,13 +2183,14 @@ void DRW_subdivide_loose_geom(DRWSubdivCache *subdiv_cache, MeshBufferCache *cac
DRWSubdivLooseVertex &subd_v1 = loose_subd_verts[subd_vert_offset];
subd_v1.coarse_vertex_index = (i == 0) ? coarse_edge->v1 : -1u;
const float u1 = i * inv_resolution_1;
- BKE_subdiv_mesh_interpolate_position_on_edge(coarse_verts.data(),
- coarse_edges.data(),
- vert_to_edge_map,
- coarse_edge_index,
- is_simple,
- u1,
- subd_v1.co);
+ BKE_subdiv_mesh_interpolate_position_on_edge(
+ reinterpret_cast<const float(*)[3]>(coarse_positions.data()),
+ coarse_edges.data(),
+ vert_to_edge_map,
+ coarse_edge_index,
+ is_simple,
+ u1,
+ subd_v1.co);
subd_edge.loose_subdiv_v1_index = subd_vert_offset++;
@@ -2197,13 +2198,14 @@ void DRW_subdivide_loose_geom(DRWSubdivCache *subdiv_cache, MeshBufferCache *cac
DRWSubdivLooseVertex &subd_v2 = loose_subd_verts[subd_vert_offset];
subd_v2.coarse_vertex_index = ((i + 1) == resolution - 1) ? coarse_edge->v2 : -1u;
const float u2 = (i + 1) * inv_resolution_1;
- BKE_subdiv_mesh_interpolate_position_on_edge(coarse_verts.data(),
- coarse_edges.data(),
- vert_to_edge_map,
- coarse_edge_index,
- is_simple,
- u2,
- subd_v2.co);
+ BKE_subdiv_mesh_interpolate_position_on_edge(
+ reinterpret_cast<const float(*)[3]>(coarse_positions.data()),
+ coarse_edges.data(),
+ vert_to_edge_map,
+ coarse_edge_index,
+ is_simple,
+ u2,
+ subd_v2.co);
subd_edge.loose_subdiv_v2_index = subd_vert_offset++;
}
@@ -2215,11 +2217,10 @@ void DRW_subdivide_loose_geom(DRWSubdivCache *subdiv_cache, MeshBufferCache *cac
/* Copy the remaining loose_verts. */
for (int i = 0; i < coarse_loose_vert_len; i++) {
const int coarse_vertex_index = cache->loose_geom.verts[i];
- const MVert &coarse_vertex = coarse_verts[coarse_vertex_index];
DRWSubdivLooseVertex &subd_v = loose_subd_verts[subd_vert_offset++];
subd_v.coarse_vertex_index = cache->loose_geom.verts[i];
- copy_v3_v3(subd_v.co, coarse_vertex.co);
+ copy_v3_v3(subd_v.co, coarse_positions[coarse_vertex_index]);
}
subdiv_cache->loose_geom.edges = loose_subd_edges;