Cleanup: DRW: Use data span to fill lattice line index buffer

Pull Request: https://projects.blender.org/blender/blender/pulls/135921
This commit is contained in:
Hans Goudey
2025-03-12 18:23:24 -04:00
committed by Gitea
parent 284ac406d6
commit 70095e9041

View File

@@ -362,10 +362,11 @@ static gpu::IndexBuf *lattice_batch_cache_get_edges(LatticeRenderData *rdata,
if (cache->edges == nullptr) {
const int vert_len = lattice_render_data_verts_len_get(rdata);
const int edge_len = lattice_render_data_edges_len_get(rdata);
int edge_len_real = 0;
GPUIndexBufBuilder elb;
GPU_indexbuf_init(&elb, GPU_PRIM_LINES, edge_len, vert_len);
GPUIndexBufBuilder builder;
GPU_indexbuf_init(&builder, GPU_PRIM_LINES, edge_len, vert_len);
MutableSpan<uint2> data = GPU_indexbuf_get_data(&builder).cast<uint2>();
int line_index = 0;
#define LATT_INDEX(u, v, w) ((((w) * rdata->dims.v_len + (v)) * rdata->dims.u_len) + (u))
@@ -377,19 +378,13 @@ static gpu::IndexBuf *lattice_batch_cache_get_edges(LatticeRenderData *rdata,
int uxt = ELEM(u, 0, rdata->dims.u_len - 1);
if (w && ((uxt || vxt) || !rdata->show_only_outside)) {
GPU_indexbuf_add_line_verts(&elb, LATT_INDEX(u, v, w - 1), LATT_INDEX(u, v, w));
BLI_assert(edge_len_real <= edge_len);
edge_len_real++;
data[line_index++] = uint2(LATT_INDEX(u, v, w - 1), LATT_INDEX(u, v, w));
}
if (v && ((uxt || wxt) || !rdata->show_only_outside)) {
GPU_indexbuf_add_line_verts(&elb, LATT_INDEX(u, v - 1, w), LATT_INDEX(u, v, w));
BLI_assert(edge_len_real <= edge_len);
edge_len_real++;
data[line_index++] = uint2(LATT_INDEX(u, v - 1, w), LATT_INDEX(u, v, w));
}
if (u && ((vxt || wxt) || !rdata->show_only_outside)) {
GPU_indexbuf_add_line_verts(&elb, LATT_INDEX(u - 1, v, w), LATT_INDEX(u, v, w));
BLI_assert(edge_len_real <= edge_len);
edge_len_real++;
data[line_index++] = uint2(LATT_INDEX(u - 1, v, w), LATT_INDEX(u, v, w));
}
}
}
@@ -398,14 +393,14 @@ static gpu::IndexBuf *lattice_batch_cache_get_edges(LatticeRenderData *rdata,
#undef LATT_INDEX
if (rdata->show_only_outside) {
BLI_assert(edge_len_real <= edge_len);
BLI_assert(line_index <= edge_len);
}
else {
BLI_assert(edge_len_real == edge_len);
BLI_assert(line_index == edge_len);
}
UNUSED_VARS_NDEBUG(edge_len_real);
cache->edges = GPU_indexbuf_build(&elb);
cache->edges = GPU_indexbuf_calloc();
GPU_indexbuf_build_in_place_ex(&builder, 0, vert_len, false, cache->edges);
}
return cache->edges;