[Bf-blender-cvs] [d0c28587141] refactor-mesh-corners-generic: 104 remaining uses of MLoop
Hans Goudey
noreply at git.blender.org
Mon Dec 5 05:58:56 CET 2022
Commit: d0c28587141830894b8a6c491bfdee28515f9003
Author: Hans Goudey
Date: Sun Dec 4 22:58:47 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rBd0c28587141830894b8a6c491bfdee28515f9003
104 remaining uses of MLoop
===================================================================
M source/blender/blenkernel/BKE_mesh.h
M source/blender/blenkernel/intern/DerivedMesh.cc
M source/blender/blenkernel/intern/dynamicpaint.c
M source/blender/blenkernel/intern/fluid.c
M source/blender/blenkernel/intern/mesh.cc
M source/blender/blenkernel/intern/mesh_boolean_convert.cc
M source/blender/blenkernel/intern/mesh_merge.c
M source/blender/blenkernel/intern/mesh_merge_customdata.cc
M source/blender/blenkernel/intern/mesh_mirror.cc
M source/blender/blenkernel/intern/mesh_validate.cc
M source/blender/blenkernel/intern/multires_reshape_subdivide.c
M source/blender/blenkernel/intern/multires_reshape_util.c
M source/blender/draw/intern/draw_cache_extract_mesh_render_data.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_ibo_points.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_attributes.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edit_data.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edituv_data.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_pos.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_fdots_uv.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_lnor.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_mesh_analysis.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_orco.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_pos_nor.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_sculpt_data.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_select_idx.cc
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
M source/blender/editors/armature/meshlaplacian.c
M source/blender/editors/object/object_bake_api.c
M source/blender/editors/sculpt_paint/paint_mask.c
M source/blender/gpencil_modifiers/intern/lineart/lineart_cpu.cc
M source/blender/gpu/intern/gpu_shader_builder_stubs.cc
M source/blender/io/collada/MeshImporter.cpp
M source/blender/makesdna/DNA_meshdata_types.h
M source/blender/makesrna/intern/rna_mesh.c
M source/blender/makesrna/intern/rna_mesh_api.c
M source/blender/modifiers/intern/MOD_array.c
M source/blender/modifiers/intern/MOD_build.c
M source/blender/modifiers/intern/MOD_collision.c
M source/blender/modifiers/intern/MOD_correctivesmooth.c
M source/blender/modifiers/intern/MOD_displace.cc
M source/blender/modifiers/intern/MOD_laplaciansmooth.c
M source/blender/modifiers/intern/MOD_mask.cc
M source/blender/modifiers/intern/MOD_meshcache.c
M source/blender/modifiers/intern/MOD_remesh.c
M source/blender/modifiers/intern/MOD_screw.c
M source/blender/modifiers/intern/MOD_solidify_extrude.c
M source/blender/modifiers/intern/MOD_solidify_nonmanifold.c
M source/blender/nodes/geometry/nodes/node_geo_extrude_mesh.cc
M source/blender/nodes/geometry/nodes/node_geo_mesh_primitive_uv_sphere.cc
M source/blender/render/intern/multires_bake.cc
===================================================================
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index caf8fba8c03..5b841f0de3c 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -540,7 +540,7 @@ enum {
* Collection of #MLoopNorSpace basic storage & pre-allocation.
*/
typedef struct MLoopNorSpaceArray {
- MLoopNorSpace **lspacearr; /* MLoop aligned array */
+ MLoopNorSpace **lspacearr; /* Face corner aligned array */
struct LinkNode
*loops_pool; /* Allocated once, avoids to call BLI_linklist_prepend_arena() for each loop! */
char data_type; /* Whether we store loop indices, or pointers to BMLoop. */
@@ -756,12 +756,12 @@ void BKE_mesh_calc_volume(const float (*positions)[3],
int mverts_num,
const struct MLoopTri *mlooptri,
int looptri_num,
- const struct MLoop *mloop,
+ const int *corner_verts,
float *r_volume,
float r_center[3]);
/**
- * Flip a single MLoop's #MDisps structure,
+ * Flip a single corner's #MDisps structure,
* low level function to be called from face-flipping code which re-arranged the mdisps themselves.
*/
void BKE_mesh_mdisp_flip(struct MDisps *md, bool use_loop_mdisp_flip);
diff --git a/source/blender/blenkernel/intern/DerivedMesh.cc b/source/blender/blenkernel/intern/DerivedMesh.cc
index 1cb28e718c5..ccc69d33235 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.cc
+++ b/source/blender/blenkernel/intern/DerivedMesh.cc
@@ -1938,7 +1938,7 @@ static void mesh_init_origspace(Mesh *mesh)
// const int numloop = mesh->totloop;
const Span<float3> positions = mesh->positions();
const Span<MPoly> polys = mesh->polys();
- const Span<MLoop> loops = mesh->loops();
+ const Span<int> corner_verts = mesh->corner_verts();
const MPoly *mp = polys.data();
int i, j, k;
@@ -1954,20 +1954,21 @@ static void mesh_init_origspace(Mesh *mesh)
}
}
else {
- const MLoop *l = &loops[mp->loopstart];
float p_nor[3], co[3];
float mat[3][3];
float min[2] = {FLT_MAX, FLT_MAX}, max[2] = {-FLT_MAX, -FLT_MAX};
float translate[2], scale[2];
- BKE_mesh_calc_poly_normal(
- mp, l, reinterpret_cast<const float(*)[3]>(positions.data()), p_nor);
+ BKE_mesh_calc_poly_normal(mp,
+ &corner_verts[mp->loopstart],
+ reinterpret_cast<const float(*)[3]>(positions.data()),
+ p_nor);
axis_dominant_v3_to_m3(mat, p_nor);
vcos_2d.resize(mp->totloop);
- for (j = 0; j < mp->totloop; j++, l++) {
- mul_v3_m3v3(co, mat, positions[l->v]);
+ for (j = 0; j < mp->totloop; j++) {
+ mul_v3_m3v3(co, mat, positions[corner_verts[mp->totloop + j]]);
copy_v2_v2(vcos_2d[j], co);
for (k = 0; k < 2; k++) {
diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c
index 5cc1da276d5..7ed22399f6f 100644
--- a/source/blender/blenkernel/intern/dynamicpaint.c
+++ b/source/blender/blenkernel/intern/dynamicpaint.c
@@ -1404,7 +1404,7 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, const b
int numOfPolys = mesh->totpoly;
const MEdge *edges = BKE_mesh_edges(mesh);
const MPoly *polys = BKE_mesh_polys(mesh);
- const MLoop *loops = BKE_mesh_loops(mesh);
+ const int *corner_verts = BKE_mesh_corner_verts(mesh);
/* count number of edges per vertex */
for (int i = 0; i < numOfEdges; i++) {
@@ -1419,7 +1419,7 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, const b
* to locate points on "mesh edge" */
for (int i = 0; i < numOfPolys; i++) {
for (int j = 0; j < polys[i].totloop; j++) {
- temp_data[loops[polys[i].loopstart + j].v]++;
+ temp_data[corner_verts[polys[i].loopstart + j]]++;
}
}
@@ -1467,7 +1467,7 @@ static void dynamicPaint_initAdjacencyData(DynamicPaintSurface *surface, const b
typedef struct DynamicPaintSetInitColorData {
const DynamicPaintSurface *surface;
- const MLoop *mloop;
+ const int *corner_verts;
const MLoopUV *mloopuv;
const MLoopTri *mlooptri;
const MLoopCol *mloopcol;
@@ -1484,7 +1484,7 @@ static void dynamic_paint_set_init_color_tex_to_vcol_cb(
const PaintSurfaceData *sData = data->surface->data;
PaintPoint *pPoint = (PaintPoint *)sData->type_data;
- const MLoop *mloop = data->mloop;
+ const int *corner_verts = data->corner_verts;
const MLoopTri *mlooptri = data->mlooptri;
const MLoopUV *mloopuv = data->mloopuv;
struct ImagePool *pool = data->pool;
@@ -1496,7 +1496,7 @@ static void dynamic_paint_set_init_color_tex_to_vcol_cb(
for (int j = 3; j--;) {
TexResult texres = {0};
- const uint vert = mloop[mlooptri[i].tri[j]].v;
+ const int vert = corner_verts[mlooptri[i].tri[j]];
/* remap to [-1.0, 1.0] */
uv[0] = mloopuv[mlooptri[i].tri[j]].uv[0] * 2.0f - 1.0f;
@@ -1604,7 +1604,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
else if (surface->init_color_type == MOD_DPAINT_INITIAL_TEXTURE) {
Tex *tex = surface->init_texture;
- const MLoop *mloop = BKE_mesh_loops(mesh);
+ const int *corner_verts = BKE_mesh_corner_verts(mesh);
const MLoopTri *mlooptri = BKE_mesh_runtime_looptri_ensure(mesh);
const int tottri = BKE_mesh_runtime_looptri_len(mesh);
@@ -1628,7 +1628,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
DynamicPaintSetInitColorData data = {
.surface = surface,
- .mloop = mloop,
+ .corner_verts = corner_verts,
.mlooptri = mlooptri,
.mloopuv = mloopuv,
.pool = pool,
@@ -1660,7 +1660,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
/* for vertex surface, just copy colors from mcol */
if (surface->format == MOD_DPAINT_SURFACE_F_VERTEX) {
- const MLoop *mloop = BKE_mesh_loops(mesh);
+ const int *corner_verts = BKE_mesh_corner_verts(mesh);
const int totloop = mesh->totloop;
const MLoopCol *col = CustomData_get_layer_named(
&mesh->ldata, CD_PROP_BYTE_COLOR, surface->init_layername);
@@ -1669,7 +1669,7 @@ static void dynamicPaint_setInitialColor(const Scene *scene, DynamicPaintSurface
}
for (int i = 0; i < totloop; i++) {
- rgba_uchar_to_float(pPoint[mloop[i].v].color, (const uchar *)&col[i].r);
+ rgba_uchar_to_float(pPoint[corner_verts[i]].color, (const uchar *)&col[i].r);
}
}
else if (surface->format == MOD_DPAINT_SURFACE_F_IMAGESEQ) {
@@ -1776,7 +1776,7 @@ typedef struct DynamicPaintModifierApplyData {
float (*positions)[3];
const float (*vert_normals)[3];
- const MLoop *mloop;
+ const int *corner_verts;
const MPoly *mpoly;
float (*fcolor)[4];
@@ -1843,7 +1843,7 @@ static void dynamic_paint_apply_surface_vpaint_cb(void *__restrict userdata,
{
const DynamicPaintModifierApplyData *data = userdata;
- const MLoop *mloop = data->mloop;
+ const int *corner_verts = data->corner_verts;
const MPoly *mpoly = data->mpoly;
const DynamicPaintSurface *surface = data->surface;
@@ -1855,7 +1855,7 @@ static void dynamic_paint_apply_surface_vpaint_cb(void *__restrict userdata,
for (int j = 0; j < mpoly[p_index].totloop; j++) {
const int l_index = mpoly[p_index].loopstart + j;
- const int v_index = mloop[l_index].v;
+ const int v_index = corner_verts[l_index];
/* save layer data to output layer */
/* apply color */
@@ -1910,7 +1910,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *
/* vertex color paint */
if (surface->type == MOD_DPAINT_SURFACE_T_PAINT) {
- const MLoop *mloop = BKE_mesh_loops(result);
+ const int *corner_verts = BKE_mesh_corner_verts(result);
const int totloop = result->totloop;
const MPoly *mpoly = BKE_mesh_polys(result);
const int totpoly = result->totpoly;
@@ -1961,7 +1961,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *
}
data.ob = ob;
- data.mloop = mloop;
+ data.corner_verts = corner_verts;
data.mpoly = mpoly;
data.mloopcol = mloopcol;
data.mloopcol_wet = mloopcol_wet;
@@ -2183,7 +2183,7 @@ typedef struct DynamicPaintCreateUVSurfaceData {
const MLoopTri *mlooptri;
const MLoopUV *mloopuv;
- const MLoop *mloop;
+ const int *corner_verts;
const int tottri;
const Bounds2D *faceBB;
@@ -2201,7 +2201,7 @@ static void dynamic_paint_create_uv_surface_direct_cb(
const MLoopTri *mlooptri = data->mlooptri;
const MLoopUV *mloopuv = data->mloopuv;
- const MLoop *mloop = data->mloop;
+ const int *corner_verts = data->corner_verts;
const int tottri = data->tottri;
const Bounds2D *faceBB = data->faceBB;
@@ -2273,9 +2273,9 @@ static void dynamic_paint_create_uv_surface_direct_cb(
tPoint->tri_index = i;
/* save vertex indexes */
- tPoint->v1 = mloop[mlooptri[i].tri[0]].v;
- tPoint->v2 = mloop[mlooptri[i].tri[1]].v;
- tPoint->v3 = mloop[mlooptri[i].tri[2]].v;
+ tPoint->v1 = corner_verts[mlooptri[i].tri[0]];
+ tPoint->v2 = corner_verts[mlooptri[i].tri[1]];
+ tPoint->v3 = corner_verts[mlooptri[i].tri[2]];
sample = 5; /* make sure we exit sample loop as well */
break;
@@ -2296,7 +2296,7 @@ static void dynamic_paint_create_uv_surface_neighbor_cb(
const MLoopTri *mlooptri = data->mlooptri;
const MLoopUV *mloopuv = data->mloopuv;
- const MLoop *mloop = data->mloop;
+ const int *corner_verts = data->corner_verts;
uint32_t *active_points = data->active_points;
@@ -2361,9 +2361,9 @@ static void dynamic_paint_create_uv_surface_neighbor_cb(
}
/* save vertex indexes */
- tPoint->v1 = mloop[ml
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list