diff options
Diffstat (limited to 'source/blender/render/intern')
-rw-r--r-- | source/blender/render/intern/bake.c | 42 | ||||
-rw-r--r-- | source/blender/render/intern/multires_bake.c | 18 | ||||
-rw-r--r-- | source/blender/render/intern/texture_margin.cc | 8 | ||||
-rw-r--r-- | source/blender/render/intern/texture_pointdensity.c | 7 |
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: |