[Bf-blender-cvs] [7172a11018d] refactor-mesh-corners-generic: Merge branch 'master' into refactor-mesh-corners-generic
Hans Goudey
noreply at git.blender.org
Fri Jan 20 20:01:32 CET 2023
Commit: 7172a11018d17886b0a715a0f5641903867f755e
Author: Hans Goudey
Date: Fri Jan 20 12:49:31 2023 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rB7172a11018d17886b0a715a0f5641903867f755e
Merge branch 'master' into refactor-mesh-corners-generic
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/multires_reshape_apply_base.cc
index f4add2491bf,d491f30a1ad..8f7ca2142b4
--- a/source/blender/blenkernel/intern/multires_reshape_apply_base.cc
+++ b/source/blender/blenkernel/intern/multires_reshape_apply_base.cc
@@@ -119,13 -120,15 +118,14 @@@ void multires_reshape_apply_base_refit_
/* Set up poly, loops, and coords in order to call BKE_mesh_calc_poly_normal(). */
fake_poly.totloop = p->totloop;
fake_poly.loopstart = 0;
- int *poly_verts = MEM_malloc_arrayN(p->totloop, sizeof(int), __func__);
- fake_co = MEM_malloc_arrayN(p->totloop, sizeof(float[3]), "fake_co");
- MLoop *fake_loops = static_cast<MLoop *>(
- MEM_malloc_arrayN(p->totloop, sizeof(MLoop), __func__));
++ int *poly_verts = static_cast<int *>(MEM_malloc_arrayN(p->totloop, sizeof(int), __func__));
+ float(*fake_co)[3] = static_cast<float(*)[3]>(
+ MEM_malloc_arrayN(p->totloop, sizeof(float[3]), __func__));
for (int k = 0; k < p->totloop; k++) {
- const int vndx = reshape_context->base_loops[p->loopstart + k].v;
+ const int vndx = reshape_context->base_corner_verts[p->loopstart + k];
- fake_loops[k].v = k;
+ poly_verts[k] = k;
if (vndx == i) {
copy_v3_v3(fake_co[k], center);
diff --cc source/blender/blenkernel/intern/multires_reshape_subdivide.cc
index 2b72103a31c,c65b78cb160..d502466e4d1
--- a/source/blender/blenkernel/intern/multires_reshape_subdivide.cc
+++ b/source/blender/blenkernel/intern/multires_reshape_subdivide.cc
@@@ -30,9 -30,10 +30,10 @@@ static void multires_subdivide_create_o
{
const float(*positions)[3] = BKE_mesh_vert_positions(mesh);
const MPoly *polys = BKE_mesh_polys(mesh);
- const MLoop *loops = BKE_mesh_loops(mesh);
+ const int *corner_verts = BKE_mesh_corner_verts(mesh);
- MDisps *mdisps = CustomData_get_layer_for_write(&mesh->ldata, CD_MDISPS, mesh->totloop);
+ MDisps *mdisps = static_cast<MDisps *>(
+ CustomData_get_layer_for_write(&mesh->ldata, CD_MDISPS, mesh->totloop));
const int totpoly = mesh->totpoly;
for (int p = 0; p < totpoly; p++) {
const MPoly *poly = &polys[p];
diff --cc source/blender/blenkernel/intern/multires_reshape_util.cc
index ce5bed1cecf,aa0fcbb7147..460446f52bf
--- a/source/blender/blenkernel/intern/multires_reshape_util.cc
+++ b/source/blender/blenkernel/intern/multires_reshape_util.cc
@@@ -157,10 -158,9 +158,10 @@@ bool multires_reshape_context_create_fr
reshape_context->base_positions = BKE_mesh_vert_positions(base_mesh);
reshape_context->base_edges = BKE_mesh_edges(base_mesh);
reshape_context->base_polys = BKE_mesh_polys(base_mesh);
- reshape_context->base_loops = BKE_mesh_loops(base_mesh);
+ reshape_context->base_corner_verts = BKE_mesh_corner_verts(base_mesh);
+ reshape_context->base_corner_edges = BKE_mesh_corner_edges(base_mesh);
- reshape_context->subdiv = multires_reshape_create_subdiv(NULL, object, mmd);
+ reshape_context->subdiv = multires_reshape_create_subdiv(nullptr, object, mmd);
reshape_context->need_free_subdiv = true;
reshape_context->reshape.level = multires_get_level(
diff --cc source/blender/blenkernel/intern/pbvh_pixels.cc
index 39301d43eea,b1d635f566e..14a169c84ee
--- a/source/blender/blenkernel/intern/pbvh_pixels.cc
+++ b/source/blender/blenkernel/intern/pbvh_pixels.cc
@@@ -366,7 -366,11 +366,11 @@@ static void update_pixels(PBVH *pbvh, M
const VArraySpan<float2> uv_map = attributes.lookup<float2>(active_uv_name, ATTR_DOMAIN_CORNER);
uv_islands::MeshData mesh_data(
- {pbvh->looptri, pbvh->totprim}, {pbvh->corner_verts, mesh->totloop}, pbvh->totvert, uv_map);
+ {pbvh->looptri, pbvh->totprim},
- {pbvh->mloop, mesh->totloop},
++ {pbvh->corner_verts, mesh->totloop},
+ pbvh->totvert,
+ uv_map,
+ {static_cast<blender::float3 *>(static_cast<void *>(pbvh->vert_positions)), pbvh->totvert});
uv_islands::UVIslands islands(mesh_data);
uv_islands::UVIslandsMask uv_masks;
diff --cc source/blender/blenkernel/intern/pbvh_uv_islands.cc
index 7374631c2ff,16091b32917..bf40bdbd475
--- a/source/blender/blenkernel/intern/pbvh_uv_islands.cc
+++ b/source/blender/blenkernel/intern/pbvh_uv_islands.cc
@@@ -208,13 -208,15 +208,15 @@@ static void mesh_data_init(MeshData &me
}
MeshData::MeshData(const Span<MLoopTri> looptris,
- const Span<MLoop> loops,
+ const Span<int> corner_verts,
const int verts_num,
- const Span<float2> uv_map)
+ const Span<float2> uv_map,
+ const Span<float3> vertex_positions)
: looptris(looptris),
verts_num(verts_num),
- loops(loops),
+ corner_verts(corner_verts),
uv_map(uv_map),
+ vertex_positions(vertex_positions),
vert_to_edge_map(verts_num),
edge_to_primitive_map(0),
primitive_to_edge_map(looptris.size())
diff --cc source/blender/blenkernel/intern/pbvh_uv_islands.hh
index 5cebac81abe,c1a0a4da5d8..91181a78c3f
--- a/source/blender/blenkernel/intern/pbvh_uv_islands.hh
+++ b/source/blender/blenkernel/intern/pbvh_uv_islands.hh
@@@ -120,8 -120,9 +120,9 @@@ struct MeshData
public:
const Span<MLoopTri> looptris;
const int64_t verts_num;
- const Span<MLoop> loops;
+ const Span<int> corner_verts;
const Span<float2> uv_map;
+ const Span<float3> vertex_positions;
VertToEdgeMap vert_to_edge_map;
@@@ -140,9 -141,10 +141,10 @@@
public:
explicit MeshData(Span<MLoopTri> looptris,
- Span<MLoop> loops,
+ const Span<int> corner_verts,
const int verts_num,
- const Span<float2> uv_map);
+ const Span<float2> uv_map,
+ const Span<float3> vertex_positions);
};
struct UVVertex {
diff --cc source/blender/blenkernel/intern/subdiv_converter_mesh.cc
index 4b57d5ab64b,05fa391dcaa..6da760b1c17
--- a/source/blender/blenkernel/intern/subdiv_converter_mesh.cc
+++ b/source/blender/blenkernel/intern/subdiv_converter_mesh.cc
@@@ -132,11 -133,12 +134,11 @@@ static void get_face_vertices(const Ope
int manifold_face_index,
int *manifold_face_vertices)
{
- ConverterStorage *storage = converter->user_data;
+ ConverterStorage *storage = static_cast<ConverterStorage *>(converter->user_data);
const MPoly *poly = &storage->polys[manifold_face_index];
- const MLoop *mloop = storage->loops;
- for (int corner = 0; corner < poly->totloop; corner++) {
- manifold_face_vertices[corner] =
- storage->manifold_vertex_index[mloop[poly->loopstart + corner].v];
+ for (int i = 0; i < poly->totloop; i++) {
+ const int vert = storage->corner_verts[poly->loopstart + i];
+ manifold_face_vertices[i] = storage->manifold_vertex_index[vert];
}
}
@@@ -397,10 -403,11 +402,12 @@@ static void init_user_data(OpenSubdiv_C
user_data->vert_positions = BKE_mesh_vert_positions(mesh);
user_data->edges = BKE_mesh_edges(mesh);
user_data->polys = BKE_mesh_polys(mesh);
- user_data->loops = BKE_mesh_loops(mesh);
+ user_data->corner_verts = BKE_mesh_corner_verts(mesh);
+ user_data->corner_edges = BKE_mesh_corner_edges(mesh);
- user_data->cd_vertex_crease = CustomData_get_layer(&mesh->vdata, CD_CREASE);
- user_data->cd_edge_crease = CustomData_get_layer(&mesh->edata, CD_CREASE);
+ user_data->cd_vertex_crease = static_cast<const float *>(
+ CustomData_get_layer(&mesh->vdata, CD_CREASE));
+ user_data->cd_edge_crease = static_cast<const float *>(
+ CustomData_get_layer(&mesh->edata, CD_CREASE));
user_data->loop_uv_indices = NULL;
initialize_manifold_indices(user_data);
converter->user_data = user_data;
diff --cc source/blender/blenkernel/intern/subsurf_ccg.cc
index 12e8a3e1963,a7342bb93b0..3ddec496020
--- a/source/blender/blenkernel/intern/subsurf_ccg.cc
+++ b/source/blender/blenkernel/intern/subsurf_ccg.cc
@@@ -49,13 -43,9 +43,9 @@@
#include "BKE_scene.h"
#include "BKE_subsurf.h"
- #ifndef USE_DYNSIZE
- # include "BLI_array.h"
- #endif
-
#include "CCGSubSurf.h"
-/* assumes MLoop's are laid out 4 for each poly, in order */
+/* assumes corners are laid out 4 for each poly, in order */
#define USE_LOOP_LAYOUT_FAST
static CCGDerivedMesh *getCCGDerivedMesh(CCGSubSurf *ss,
@@@ -240,7 -231,7 +231,7 @@@ static int getFaceIndex
}
static void get_face_uv_map_vert(
- UvVertMap *vmap, struct MPoly *mpoly, int *poly_verts, int fi, CCGVertHDL *fverts)
- UvVertMap *vmap, MPoly *mpoly, MLoop *ml, int fi, CCGVertHDL *fverts)
++ UvVertMap *vmap, MPoly *mpoly, int *poly_verts, int fi, CCGVertHDL *fverts)
{
UvMapVert *v, *nv;
int j, nverts = mpoly[fi].totloop;
@@@ -285,7 -273,7 +273,7 @@@ static int ss_sync_from_uv(CCGSubSurf *
* Also, initially intention is to treat merged vertices from mirror modifier as seams.
* This fixes a very old regression (2.49 was correct here) */
vmap = BKE_mesh_uv_vert_map_create(
- mpoly, NULL, NULL, corner_verts, mloopuv, totface, totvert, limit, false, true);
- mpoly, nullptr, nullptr, mloop, mloopuv, totface, totvert, limit, false, true);
++ mpoly, nullptr, nullptr, corner_verts, mloopuv, totface, totvert, limit, false, true);
if (!vmap) {
return 0;
}
@@@ -328,15 -316,11 +316,10 @@@
int j, j_next;
CCGFace *origf = ccgSubSurf_getFace(origss, POINTER_FROM_INT(i));
/* uint *fv = &mp->v1; */
- MLoop *ml = mloop + mp->loopstart;
- #ifdef USE_DYNSIZE
- CCGVertHDL fverts[nverts];
- #else
- BLI_array_clear(fverts);
- BLI_array_grow_items(fverts, nverts);
- #endif
+ fverts.reinitialize(nverts);
- get_face_uv_map_vert(vmap, mpoly, &corner_verts[mp->loopstart], i, fverts);
- get_face_uv_map_vert(vmap, mpoly, ml, i, fverts.data());
++ get_face_uv_map_vert(vmap, mpoly, &corner_verts[mp->loopstart], i, fverts.data());
for (j = 0, j_next = nverts - 1; j < nverts; j_next = j++) {
uint v0 = POINTER_AS_UINT(fverts[j
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list