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/render/intern')
-rw-r--r--source/blender/render/intern/bake.c42
-rw-r--r--source/blender/render/intern/multires_bake.c18
-rw-r--r--source/blender/render/intern/texture_margin.cc8
-rw-r--r--source/blender/render/intern/texture_pointdensity.c7
4 files changed, 38 insertions, 37 deletions
diff --git a/source/blender/render/intern/bake.c b/source/blender/render/intern/bake.c
index d9f7f9fa0af..8e413d3b80a 100644
--- a/source/blender/render/intern/bake.c
+++ b/source/blender/render/intern/bake.c
@@ -92,7 +92,7 @@ typedef struct TSpace {
} TSpace;
typedef struct TriTessFace {
- const MVert *mverts[3];
+ const float *positions[3];
const float *vert_normals[3];
const TSpace *tspace[3];
const float *loop_normal[3];
@@ -194,9 +194,9 @@ static void calc_point_from_barycentric_cage(TriTessFace *triangles_low,
triangle[1] = &triangles_cage[primitive_id];
for (i = 0; i < 2; i++) {
- copy_v3_v3(data[i][0], triangle[i]->mverts[0]->co);
- copy_v3_v3(data[i][1], triangle[i]->mverts[1]->co);
- copy_v3_v3(data[i][2], triangle[i]->mverts[2]->co);
+ copy_v3_v3(data[i][0], triangle[i]->positions[0]);
+ copy_v3_v3(data[i][1], triangle[i]->positions[1]);
+ copy_v3_v3(data[i][2], triangle[i]->positions[2]);
interp_barycentric_tri_v3(data[i], u, v, coord[i]);
}
@@ -236,9 +236,9 @@ static void calc_point_from_barycentric_extrusion(TriTessFace *triangles,
TriTessFace *triangle = &triangles[primitive_id];
is_smooth = triangle->is_smooth || is_cage;
- copy_v3_v3(data[0], triangle->mverts[0]->co);
- copy_v3_v3(data[1], triangle->mverts[1]->co);
- copy_v3_v3(data[2], triangle->mverts[2]->co);
+ copy_v3_v3(data[0], triangle->positions[0]);
+ copy_v3_v3(data[1], triangle->positions[1]);
+ copy_v3_v3(data[2], triangle->positions[2]);
interp_barycentric_tri_v3(data, u, v, coord);
@@ -393,8 +393,8 @@ static bool cast_ray_highpoly(BVHTreeFromMesh *treeData,
/* compute position differentials on low poly object */
float duco_low[3], dvco_low[3], dxco[3], dyco[3];
- sub_v3_v3v3(duco_low, triangle_low->mverts[0]->co, triangle_low->mverts[2]->co);
- sub_v3_v3v3(dvco_low, triangle_low->mverts[1]->co, triangle_low->mverts[2]->co);
+ sub_v3_v3v3(duco_low, triangle_low->positions[0], triangle_low->positions[2]);
+ sub_v3_v3v3(dvco_low, triangle_low->positions[1], triangle_low->positions[2]);
mul_v3_v3fl(dxco, duco_low, pixel_low->du_dx);
madd_v3_v3fl(dxco, dvco_low, pixel_low->dv_dx);
@@ -415,9 +415,9 @@ static bool cast_ray_highpoly(BVHTreeFromMesh *treeData,
/* compute barycentric differentials from position differentials */
barycentric_differentials_from_position(hits[hit_mesh].co,
- triangle_high->mverts[0]->co,
- triangle_high->mverts[1]->co,
- triangle_high->mverts[2]->co,
+ triangle_high->positions[0],
+ triangle_high->positions[1],
+ triangle_high->positions[2],
dxco,
dyco,
triangle_high->normal,
@@ -459,7 +459,7 @@ static TriTessFace *mesh_calc_tri_tessface(Mesh *me, bool tangent, Mesh *me_eval
uint mpoly_prev = UINT_MAX;
float no[3];
- const MVert *verts = BKE_mesh_verts(me);
+ const float(*positions)[3] = BKE_mesh_positions(me);
const MPoly *polys = BKE_mesh_polys(me);
const MLoop *loops = BKE_mesh_loops(me);
@@ -473,10 +473,10 @@ static TriTessFace *mesh_calc_tri_tessface(Mesh *me, bool tangent, Mesh *me_eval
if (precomputed_normals != NULL) {
BKE_mesh_recalc_looptri_with_normals(
- loops, polys, verts, me->totloop, me->totpoly, looptri, precomputed_normals);
+ loops, polys, positions, me->totloop, me->totpoly, looptri, precomputed_normals);
}
else {
- BKE_mesh_recalc_looptri(loops, polys, verts, me->totloop, me->totpoly, looptri);
+ BKE_mesh_recalc_looptri(loops, polys, positions, me->totloop, me->totpoly, looptri);
}
const TSpace *tspace = NULL;
@@ -497,9 +497,9 @@ static TriTessFace *mesh_calc_tri_tessface(Mesh *me, bool tangent, Mesh *me_eval
const MLoopTri *lt = &looptri[i];
const MPoly *mp = &polys[lt->poly];
- triangles[i].mverts[0] = &verts[loops[lt->tri[0]].v];
- triangles[i].mverts[1] = &verts[loops[lt->tri[1]].v];
- triangles[i].mverts[2] = &verts[loops[lt->tri[2]].v];
+ triangles[i].positions[0] = positions[loops[lt->tri[0]].v];
+ triangles[i].positions[1] = positions[loops[lt->tri[1]].v];
+ triangles[i].positions[2] = positions[loops[lt->tri[2]].v];
triangles[i].vert_normals[0] = vert_normals[loops[lt->tri[0]].v];
triangles[i].vert_normals[1] = vert_normals[loops[lt->tri[1]].v];
triangles[i].vert_normals[2] = vert_normals[loops[lt->tri[2]].v];
@@ -519,7 +519,7 @@ static TriTessFace *mesh_calc_tri_tessface(Mesh *me, bool tangent, Mesh *me_eval
if (calculate_normal) {
if (lt->poly != mpoly_prev) {
- BKE_mesh_calc_poly_normal(mp, &loops[mp->loopstart], verts, no);
+ BKE_mesh_calc_poly_normal(mp, &loops[mp->loopstart], positions, no);
mpoly_prev = lt->poly;
}
copy_v3_v3(triangles[i].normal, no);
@@ -741,10 +741,10 @@ void RE_bake_pixels_populate(Mesh *me,
const int tottri = poly_to_tri_count(me->totpoly, me->totloop);
MLoopTri *looptri = MEM_mallocN(sizeof(*looptri) * tottri, __func__);
- const MVert *verts = BKE_mesh_verts(me);
+ const float(*positions)[3] = BKE_mesh_positions(me);
const MPoly *polys = BKE_mesh_polys(me);
const MLoop *loops = BKE_mesh_loops(me);
- BKE_mesh_recalc_looptri(loops, polys, verts, me->totloop, me->totpoly, looptri);
+ BKE_mesh_recalc_looptri(loops, polys, positions, me->totloop, me->totpoly, looptri);
const int *material_indices = BKE_mesh_material_indices(me);
const int materials_num = targets->materials_num;
diff --git a/source/blender/render/intern/multires_bake.c b/source/blender/render/intern/multires_bake.c
index cfb91e86ad9..706f6558506 100644
--- a/source/blender/render/intern/multires_bake.c
+++ b/source/blender/render/intern/multires_bake.c
@@ -60,7 +60,7 @@ typedef struct MultiresBakeResult {
} MultiresBakeResult;
typedef struct {
- MVert *mvert;
+ const float (*positions)[3];
const float (*vert_normals)[3];
MPoly *mpoly;
const int *material_indices;
@@ -125,7 +125,7 @@ static void multiresbake_get_normal(const MResolvePixelData *data,
copy_v3_v3(r_normal, data->precomputed_normals[poly_index]);
}
else {
- BKE_mesh_calc_poly_normal(mp, &data->mloop[mp->loopstart], data->mvert, r_normal);
+ BKE_mesh_calc_poly_normal(mp, &data->mloop[mp->loopstart], data->positions, r_normal);
}
}
}
@@ -472,7 +472,7 @@ static void do_multires_bake(MultiresBakeRender *bkr,
MultiresBakeThread *handles;
MultiresBakeQueue queue;
- MVert *mvert = dm->getVertArray(dm);
+ const float(*positions)[3] = (float(*)[3])dm->getVertArray(dm);
MPoly *mpoly = dm->getPolyArray(dm);
MLoop *mloop = dm->getLoopArray(dm);
MLoopUV *mloopuv = dm->getLoopDataArray(dm, CD_MLOOPUV);
@@ -485,9 +485,8 @@ static void do_multires_bake(MultiresBakeRender *bkr,
Mesh *temp_mesh = BKE_mesh_new_nomain(
dm->getNumVerts(dm), dm->getNumEdges(dm), 0, dm->getNumLoops(dm), dm->getNumPolys(dm));
- memcpy(BKE_mesh_verts_for_write(temp_mesh),
- dm->getVertArray(dm),
- temp_mesh->totvert * sizeof(MVert));
+ memcpy(
+ BKE_mesh_positions_for_write(temp_mesh), positions, temp_mesh->totvert * sizeof(float[3]));
memcpy(BKE_mesh_edges_for_write(temp_mesh),
dm->getEdgeArray(dm),
temp_mesh->totedge * sizeof(MEdge));
@@ -503,7 +502,7 @@ static void do_multires_bake(MultiresBakeRender *bkr,
if (require_tangent) {
if (CustomData_get_layer_index(&dm->loopData, CD_TANGENT) == -1) {
BKE_mesh_calc_loop_tangent_ex(
- dm->getVertArray(dm),
+ positions,
dm->getPolyArray(dm),
dm->getNumPolys(dm),
dm->getLoopArray(dm),
@@ -555,7 +554,7 @@ static void do_multires_bake(MultiresBakeRender *bkr,
handle->data.mpoly = mpoly;
handle->data.material_indices = CustomData_get_layer_named(
&dm->polyData, CD_PROP_INT32, "material_index");
- handle->data.mvert = mvert;
+ handle->data.positions = positions;
handle->data.vert_normals = vert_normals;
handle->data.mloopuv = mloopuv;
BKE_image_get_tile_uv(ima, tile->tile_number, handle->data.uv_offset);
@@ -674,8 +673,7 @@ static void get_ccgdm_data(DerivedMesh *lodm,
mpoly = lodm->getPolyArray(lodm) + poly_index;
g_index = grid_offset[poly_index];
- S = mdisp_rot_face_to_crn(lodm->getVertArray(lodm),
- mpoly,
+ S = mdisp_rot_face_to_crn(mpoly,
lodm->getLoopArray(lodm),
lt,
face_side,
diff --git a/source/blender/render/intern/texture_margin.cc b/source/blender/render/intern/texture_margin.cc
index 3366111ed33..109e32875c5 100644
--- a/source/blender/render/intern/texture_margin.cc
+++ b/source/blender/render/intern/texture_margin.cc
@@ -515,8 +515,12 @@ static void generate_margin(ImBuf *ibuf,
tottri = poly_to_tri_count(me->totpoly, me->totloop);
looptri_mem = static_cast<MLoopTri *>(MEM_mallocN(sizeof(*looptri) * tottri, __func__));
- BKE_mesh_recalc_looptri(
- mloop, mpoly, me->verts().data(), me->totloop, me->totpoly, looptri_mem);
+ BKE_mesh_recalc_looptri(mloop,
+ mpoly,
+ reinterpret_cast<const float(*)[3]>(me->positions().data()),
+ me->totloop,
+ me->totpoly,
+ looptri_mem);
looptri = looptri_mem;
}
else {
diff --git a/source/blender/render/intern/texture_pointdensity.c b/source/blender/render/intern/texture_pointdensity.c
index 09173aaa0e3..5b716f87eaf 100644
--- a/source/blender/render/intern/texture_pointdensity.c
+++ b/source/blender/render/intern/texture_pointdensity.c
@@ -361,7 +361,6 @@ static void pointdensity_cache_object(PointDensity *pd, Object *ob)
{
float *data_color;
int i;
- const MVert *mvert = NULL, *mv;
Mesh *mesh = ob->data;
#if 0 /* UNUSED */
@@ -377,7 +376,7 @@ static void pointdensity_cache_object(PointDensity *pd, Object *ob)
}
#endif
- mvert = BKE_mesh_verts(mesh); /* local object space */
+ const float(*positions)[3] = BKE_mesh_positions(mesh); /* local object space */
pd->totpoints = mesh->totvert;
if (pd->totpoints == 0) {
return;
@@ -387,10 +386,10 @@ static void pointdensity_cache_object(PointDensity *pd, Object *ob)
alloc_point_data(pd);
point_data_pointers(pd, NULL, NULL, &data_color);
- for (i = 0, mv = mvert; i < pd->totpoints; i++, mv++) {
+ for (i = 0; i < pd->totpoints; i++) {
float co[3];
- copy_v3_v3(co, mv->co);
+ copy_v3_v3(co, positions[i]);
switch (pd->ob_cache_space) {
case TEX_PD_OBJECTSPACE: