[Bf-blender-cvs] [fc99c57] temp-derivedmesh-looptri: Merge branch 'master' into temp-derivedmesh-looptri
Campbell Barton
noreply at git.blender.org
Tue Jul 14 15:15:51 CEST 2015
Commit: fc99c5759217ac2853ec521ca1896c0009ccda1a
Author: Campbell Barton
Date: Tue Jul 14 23:00:55 2015 +1000
Branches: temp-derivedmesh-looptri
https://developer.blender.org/rBfc99c5759217ac2853ec521ca1896c0009ccda1a
Merge branch 'master' into temp-derivedmesh-looptri
===================================================================
===================================================================
diff --cc source/blender/blenkernel/intern/cdderivedmesh.c
index 4b1bd2b,b03024c..f67a019
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@@ -479,9 -470,9 +479,9 @@@ static void cdDM_drawFacesTex_common(De
void *userData, DMDrawFlag uvflag)
{
CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
- MTFace *tf = DM_get_tessface_data_layer(dm, CD_MTFACE);
- const MFace *mf = DM_get_tessface_data_layer(dm, CD_MFACE);
+ MTexPoly *mtexpoly = DM_get_poly_data_layer(dm, CD_MTEXPOLY);
- MCol *mcol;
+ const MPoly *mpoly = cddm->mpoly;
+ MLoopCol *mloopcol;
int i, orig;
int colType, startFace = 0;
bool use_tface = (uvflag & DM_DRAW_USE_ACTIVE_UV) != 0;
@@@ -540,14 -537,16 +540,14 @@@
int flush = 0;
if (i != tottri - 1)
- next_actualFace = dm->drawObject->triangle_to_mface[i + 1];
+ next_actualFace = dm->drawObject->triangle_to_mpoly[i + 1];
- orig = index_mf_to_mpoly ? DM_origindex_mface_mpoly(index_mf_to_mpoly, index_mp_to_orig, actualFace) : ORIGINDEX_NONE;
-
if (drawParams) {
- draw_option = drawParams(use_tface && tf ? &tf[actualFace] : NULL, (mloopcol != NULL), mpoly[actualFace].mat_nr);
- MTexPoly *tp = (use_tface && mtexpoly && orig != ORIGINDEX_NONE) ? &mtexpoly[orig] : NULL;
- draw_option = drawParams(tp, (mcol != NULL), mf[actualFace].mat_nr);
++ draw_option = drawParams(use_tface && mtexpoly ? &mtexpoly[actualFace] : NULL, (mloopcol != NULL), mpoly[actualFace].mat_nr);
}
else {
- if (index_mf_to_mpoly) {
+ if (index_mp_to_orig) {
+ orig = index_mp_to_orig[actualFace];
if (orig == ORIGINDEX_NONE) {
/* XXX, this is not really correct
* it will draw the previous faces context for this one when we don't know its settings.
diff --cc source/blender/editors/space_view3d/drawmesh.c
index 1ef3894,35e2ca8..11b4079
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@@ -79,9 -79,9 +79,9 @@@ typedef struct drawMeshFaceSelect_userD
typedef struct drawEMTFMapped_userData {
BMEditMesh *em;
bool has_mcol;
- bool has_mtface;
+ int cd_poly_tex_offset;
- MFace *mf;
- MTFace *tf;
+ const MPoly *mp;
+ const MTexPoly *tf;
} drawEMTFMapped_userData;
typedef struct drawTFace_userData {
@@@ -590,65 -590,60 +590,65 @@@ static DMDrawOption draw_tface__set_dra
static void update_tface_color_layer(DerivedMesh *dm, bool use_mcol)
{
- MTFace *tface = DM_get_tessface_data_layer(dm, CD_MTFACE);
+ MTexPoly *mtexpoly = DM_get_poly_data_layer(dm, CD_MTEXPOLY);
- MFace *mface = dm->getTessFaceArray(dm);
- MCol *finalCol;
+ const MPoly *mpoly = dm->getPolyArray(dm);
+ const MLoopTri *lt = dm->looptris.array;
+ MLoopCol *finalCol;
int i, j;
- MCol *mcol = NULL;
+ MLoopCol *mloopcol = NULL;
if (use_mcol) {
- mcol = dm->getTessFaceDataArray(dm, CD_PREVIEW_MCOL);
- if (!mcol)
- mcol = dm->getTessFaceDataArray(dm, CD_MCOL);
+ mloopcol = dm->getLoopDataArray(dm, CD_PREVIEW_MLOOPCOL);
+ if (!mloopcol)
+ mloopcol = dm->getLoopDataArray(dm, CD_MLOOPCOL);
}
- if (CustomData_has_layer(&dm->faceData, CD_TEXTURE_MCOL)) {
- finalCol = CustomData_get_layer(&dm->faceData, CD_TEXTURE_MCOL);
+ if (CustomData_has_layer(&dm->loopData, CD_TEXTURE_MLOOPCOL)) {
+ finalCol = CustomData_get_layer(&dm->loopData, CD_TEXTURE_MLOOPCOL);
}
else {
- finalCol = MEM_mallocN(sizeof(MCol) * 4 * dm->getNumTessFaces(dm), "add_tface_color_layer");
-
- CustomData_add_layer(&dm->faceData, CD_TEXTURE_MCOL, CD_ASSIGN, finalCol, dm->numTessFaceData);
+ finalCol = MEM_mallocN(sizeof(MLoopCol) * dm->numLoopData, "add_tface_color_layer");
+ CustomData_add_layer(&dm->loopData, CD_TEXTURE_MLOOPCOL, CD_ASSIGN, finalCol, dm->numLoopData);
}
- for (i = 0; i < dm->getNumTessFaces(dm); i++) {
- Material *ma = give_current_material(Gtexdraw.ob, mface[i].mat_nr + 1);
+ for (i = 0; i < dm->looptris.num; i++) {
+ const MPoly *mp = &mpoly[lt->poly];
+ const unsigned int *ltri = lt->tri;
+ Material *ma = give_current_material(Gtexdraw.ob, mp->mat_nr + 1);
if (ma && (ma->game.flag & GEMAT_INVISIBLE)) {
- if (mcol)
- memcpy(&finalCol[i * 4], &mcol[i * 4], sizeof(MCol) * 4);
+ if (mloopcol) {
+ for (j = 0; j < 3; j++) {
+ finalCol[ltri[j]] = mloopcol[ltri[j]];
+ }
+ }
else
- for (j = 0; j < 4; j++) {
- finalCol[i * 4 + j].b = 255;
- finalCol[i * 4 + j].g = 255;
- finalCol[i * 4 + j].r = 255;
+ for (j = 0; j < 3; j++) {
+ finalCol[ltri[j]].b = 255;
+ finalCol[ltri[j]].g = 255;
+ finalCol[ltri[j]].r = 255;
}
}
- else if (tface && set_draw_settings_cached(0, tface, ma, Gtexdraw)) {
+ else if (mtexpoly && set_draw_settings_cached(0, mtexpoly, ma, Gtexdraw)) {
- for (j = 0; j < 4; j++) {
- finalCol[i * 4 + j].b = 255;
- finalCol[i * 4 + j].g = 0;
- finalCol[i * 4 + j].r = 255;
+ for (j = 0; j < 3; j++) {
+ finalCol[ltri[j]].b = 255;
+ finalCol[ltri[j]].g = 0;
+ finalCol[ltri[j]].r = 255;
}
}
else if (ma && (ma->shade_flag & MA_OBCOLOR)) {
- for (j = 0; j < 4; j++) {
- finalCol[i * 4 + j].b = Gtexdraw.obcol[0];
- finalCol[i * 4 + j].g = Gtexdraw.obcol[1];
- finalCol[i * 4 + j].r = Gtexdraw.obcol[2];
+ for (j = 0; j < 3; j++) {
+ finalCol[ltri[j]].b = Gtexdraw.obcol[0];
+ finalCol[ltri[j]].g = Gtexdraw.obcol[1];
+ finalCol[ltri[j]].r = Gtexdraw.obcol[2];
}
}
- else if (!mcol) {
+ else if (!mloopcol) {
- if (tface) {
+ if (mtexpoly) {
- for (j = 0; j < 4; j++) {
- finalCol[i * 4 + j].b = 255;
- finalCol[i * 4 + j].g = 255;
- finalCol[i * 4 + j].r = 255;
+ for (j = 0; j < 3; j++) {
+ finalCol[ltri[j]].b = 255;
+ finalCol[ltri[j]].g = 255;
+ finalCol[ltri[j]].r = 255;
}
}
else {
@@@ -922,9 -924,10 +927,10 @@@ static void draw_mesh_textured_old(Scen
data.em = me->edit_btmesh;
data.has_mcol = CustomData_has_layer(&me->edit_btmesh->bm->ldata, CD_MLOOPCOL);
- data.has_mtface = CustomData_has_layer(&me->edit_btmesh->bm->pdata, CD_MTEXPOLY);
+ data.cd_poly_tex_offset = CustomData_get_offset(&me->edit_btmesh->bm->pdata, CD_MTEXPOLY);
+
- data.mf = DM_get_tessface_data_layer(dm, CD_MFACE);
- data.tf = DM_get_tessface_data_layer(dm, CD_MTFACE);
+ data.mp = DM_get_poly_data_layer(dm, CD_MPOLY);
+ data.tf = DM_get_poly_data_layer(dm, CD_MTEXPOLY);
dm->drawMappedFacesTex(dm, draw_em_tf_mapped__set_draw, compareDrawOptionsEm, &data, 0);
}
More information about the Bf-blender-cvs
mailing list