Commit: 0918461d61127f5d7e9dd7d81441a77b4bdd962d
Author: Campbell Barton
Date:   Tue Jul 14 22:27:25 2015 +1000
Branches: master
https://developer.blender.org/rB0918461d61127f5d7e9dd7d81441a77b4bdd962d

Move from MTFace to MTexPoly w/ texture checks

Part of moving away from MFace.

===================================================================

M       source/blender/blenkernel/BKE_DerivedMesh.h
M       source/blender/blenkernel/intern/cdderivedmesh.c
M       source/blender/blenkernel/intern/editderivedmesh.c
M       source/blender/blenkernel/intern/subsurf_ccg.c
M       source/blender/editors/space_view3d/drawmesh.c
M       source/blender/editors/uvedit/uvedit_ops.c
M       source/blender/gpu/GPU_draw.h
M       source/blender/gpu/intern/gpu_draw.c
M       source/gameengine/Converter/BL_BlenderDataConversion.cpp
M       source/gameengine/Ketsji/BL_Material.cpp
M       source/gameengine/Ketsji/BL_Material.h
M       source/gameengine/Ketsji/KX_BlenderMaterial.cpp
M       source/gameengine/Ketsji/KX_BlenderMaterial.h
M       source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
M       source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
M       
source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
M       source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp

===================================================================

diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h 
b/source/blender/blenkernel/BKE_DerivedMesh.h
index 70ae9cd..984147d 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -142,7 +142,7 @@ typedef int (*DMCompareDrawOptions)(void *userData, int 
cur_index, int next_inde
 typedef void (*DMSetDrawInterpOptions)(void *userData, int index, float t);
 typedef DMDrawOption (*DMSetDrawOptions)(void *userData, int index);
 typedef DMDrawOption (*DMSetDrawOptionsMappedTex)(void *userData, int 
origindex, int mat_nr);
-typedef DMDrawOption (*DMSetDrawOptionsTex)(struct MTFace *tface, const bool 
has_vcol, int matnr);
+typedef DMDrawOption (*DMSetDrawOptionsTex)(struct MTexPoly *mtexpoly, const 
bool has_vcol, int matnr);
 
 typedef enum DMDrawFlag {
        DM_DRAW_USE_COLORS          = (1 << 0),
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c 
b/source/blender/blenkernel/intern/cdderivedmesh.c
index d60c5a5..b03024c 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -471,7 +471,7 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
 {
        CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
        const MFace *mf = DM_get_tessface_data_layer(dm, CD_MFACE);
-       MTFace *tf = DM_get_tessface_data_layer(dm, CD_MTFACE);
+       MTexPoly *mtexpoly = DM_get_poly_data_layer(dm, CD_MTEXPOLY);
        MCol *mcol;
        int i, orig;
        int colType, startFace = 0;
@@ -539,12 +539,14 @@ static void cdDM_drawFacesTex_common(DerivedMesh *dm,
                if (i != tottri - 1)
                        next_actualFace = dm->drawObject->triangle_to_mface[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, (mcol != NULL), mf[actualFace].mat_nr);
+                       MTexPoly *tp = (use_tface && mtexpoly && orig != 
ORIGINDEX_NONE) ? &mtexpoly[orig] : NULL;
+                       draw_option = drawParams(tp, (mcol != NULL), 
mf[actualFace].mat_nr);
                }
                else {
                        if (index_mf_to_mpoly) {
-                               orig = 
DM_origindex_mface_mpoly(index_mf_to_mpoly, 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 --git a/source/blender/blenkernel/intern/editderivedmesh.c 
b/source/blender/blenkernel/intern/editderivedmesh.c
index 63cec62..58f2517 100644
--- a/source/blender/blenkernel/intern/editderivedmesh.c
+++ b/source/blender/blenkernel/intern/editderivedmesh.c
@@ -833,19 +833,15 @@ static void emDM_drawFacesTex_common(DerivedMesh *dm,
                for (i = 0; i < em->tottri; i++) {
                        BMLoop **ltri = looptris[i];
                        MTexPoly *tp = (cd_poly_tex_offset != -1) ? 
BM_ELEM_CD_GET_VOID_P(ltri[0]->f, cd_poly_tex_offset) : NULL;
-                       MTFace mtf = {{{0}}};
                        /*unsigned char *cp = NULL;*/ /*UNUSED*/
                        int drawSmooth = lnors || BM_elem_flag_test(ltri[0]->f, 
BM_ELEM_SMOOTH);
                        DMDrawOption draw_option;
 
                        efa = ltri[0]->f;
 
-                       if (cd_poly_tex_offset != -1) {
-                               ME_MTEXFACE_CPY(&mtf, tp);
+                       if (drawParams) {
+                               draw_option = drawParams(tp, has_vcol, 
efa->mat_nr);
                        }
-
-                       if (drawParams)
-                               draw_option = drawParams(&mtf, has_vcol, 
efa->mat_nr);
                        else if (drawParamsMapped)
                                draw_option = drawParamsMapped(userData, 
BM_elem_index_get(efa), efa->mat_nr);
                        else
@@ -902,19 +898,14 @@ static void emDM_drawFacesTex_common(DerivedMesh *dm,
                for (i = 0; i < em->tottri; i++) {
                        BMLoop **ltri = looptris[i];
                        MTexPoly *tp = (cd_poly_tex_offset != -1) ? 
BM_ELEM_CD_GET_VOID_P(ltri[0]->f, cd_poly_tex_offset) : NULL;
-                       MTFace mtf = {{{0}}};
                        /*unsigned char *cp = NULL;*/ /*UNUSED*/
                        int drawSmooth = lnors || BM_elem_flag_test(ltri[0]->f, 
BM_ELEM_SMOOTH);
                        DMDrawOption draw_option;
 
                        efa = ltri[0]->f;
 
-                       if (cd_poly_tex_offset != -1) {
-                               ME_MTEXFACE_CPY(&mtf, tp);
-                       }
-
                        if (drawParams)
-                               draw_option = drawParams(&mtf, has_vcol, 
efa->mat_nr);
+                               draw_option = drawParams(tp, has_vcol, 
efa->mat_nr);
                        else if (drawParamsMapped)
                                draw_option = drawParamsMapped(userData, 
BM_elem_index_get(efa), efa->mat_nr);
                        else
diff --git a/source/blender/blenkernel/intern/subsurf_ccg.c 
b/source/blender/blenkernel/intern/subsurf_ccg.c
index 3b2cad6..cc68022 100644
--- a/source/blender/blenkernel/intern/subsurf_ccg.c
+++ b/source/blender/blenkernel/intern/subsurf_ccg.c
@@ -2291,8 +2291,13 @@ static void ccgDM_drawFacesTex_common(DerivedMesh *dm,
                        gridOffset += gridFaces * gridFaces * numVerts;
                }
 
-               if (drawParams)
-                       draw_option = drawParams(tf, (mcol != NULL), mat_nr);
+               if (drawParams) {
+                       MTexPoly tpoly;
+                       if (tf) {
+                               ME_MTEXFACE_CPY(&tpoly, tf);
+                       }
+                       draw_option = drawParams(tf ? &tpoly : NULL, (mcol != 
NULL), mat_nr);
+               }
                else if (index != ORIGINDEX_NONE)
                        draw_option = (drawParamsMapped) ? 
drawParamsMapped(userData, index, mat_nr) : DM_DRAW_OPTION_NORMAL;
                else
diff --git a/source/blender/editors/space_view3d/drawmesh.c 
b/source/blender/editors/space_view3d/drawmesh.c
index 96ea5d8..35e2ca8 100644
--- a/source/blender/editors/space_view3d/drawmesh.c
+++ b/source/blender/editors/space_view3d/drawmesh.c
@@ -79,7 +79,7 @@ typedef struct drawMeshFaceSelect_userData {
 typedef struct drawEMTFMapped_userData {
        BMEditMesh *em;
        bool has_mcol;
-       bool has_mtface;
+       int cd_poly_tex_offset;
        MFace *mf;
        MTFace *tf;
 } drawEMTFMapped_userData;
@@ -236,11 +236,11 @@ static struct TextureDrawState {
        bool texpaint_material; /* use material slots for texture painting */
 } Gtexdraw = {NULL, NULL, NULL, false, 0, 0, 0, false, {0, 0, 0, 0}, false, 
false};
 
-static bool set_draw_settings_cached(int clearcache, MTFace *texface, Material 
*ma, struct TextureDrawState gtexdraw)
+static bool set_draw_settings_cached(int clearcache, MTexPoly *texface, 
Material *ma, struct TextureDrawState gtexdraw)
 {
        static Material *c_ma;
        static int c_textured;
-       static MTFace c_texface;
+       static MTexPoly c_texface;
        static int c_backculled;
        static bool c_badtex;
        static int c_lit;
@@ -264,7 +264,7 @@ static bool set_draw_settings_cached(int clearcache, MTFace 
*texface, Material *
 
        if (clearcache) {
                c_textured = c_lit = c_backculled = -1;
-               memset(&c_texface, 0, sizeof(MTFace));
+               memset(&c_texface, 0, sizeof(c_texface));
                c_badtex = false;
                c_has_texface = -1;
                c_ma = NULL;
@@ -534,7 +534,7 @@ static void draw_textured_end(void)
        glPopMatrix();
 }
 
-static DMDrawOption draw_tface__set_draw_legacy(MTFace *tface, const bool 
has_mcol, int matnr)
+static DMDrawOption draw_tface__set_draw_legacy(MTexPoly *mtexpoly, const bool 
has_mcol, int matnr)
 {
        Material *ma = give_current_material(Gtexdraw.ob, matnr + 1);
        bool invalidtexture = false;
@@ -542,9 +542,9 @@ static DMDrawOption draw_tface__set_draw_legacy(MTFace 
*tface, const bool has_mc
        if (ma && (ma->game.flag & GEMAT_INVISIBLE))
                return DM_DRAW_OPTION_SKIP;
 
-       invalidtexture = set_draw_settings_cached(0, tface, ma, Gtexdraw);
+       invalidtexture = set_draw_settings_cached(0, mtexpoly, ma, Gtexdraw);
 
-       if (tface && invalidtexture) {
+       if (mtexpoly && invalidtexture) {
                glColor3ub(0xFF, 0x00, 0xFF);
                return DM_DRAW_OPTION_NO_MCOL; /* Don't set color */
        }
@@ -553,7 +553,7 @@ static DMDrawOption draw_tface__set_draw_legacy(MTFace 
*tface, const bool has_mc
                return DM_DRAW_OPTION_NO_MCOL; /* Don't set color */
        }
        else if (!has_mcol) {
-               if (tface) {
+               if (mtexpoly) {
                        glColor3f(1.0, 1.0, 1.0);
                }
                else {
@@ -575,14 +575,14 @@ static DMDrawOption draw_tface__set_draw_legacy(MTFace 
*tface, const bool has_mc
        }
 }
 
-static DMDrawOption draw_tface__set_draw(MTFace *tface, const bool 
UNUSED(has_mcol), int matnr)
+static DMDrawOption draw_tface__set_draw(MTexPoly *mtexpoly, const bool 
UNUSED(has_mcol), int matnr)
 {
        Material *ma = give_current_material(Gtexdraw.ob, matnr + 1);
 
        if (ma && (ma->game.flag & GEMAT_INVISIBLE)) return DM_DRAW_OPTION_SKIP;
 
-       if (tface || Gtexdraw.is_texpaint)
-               set_draw_settings_cached(0, tface, ma, Gtexdraw);
+       if (mtexpoly || Gtexdraw.is_texpaint)
+               set_draw_settings_cached(0, mtexpoly, ma, Gtexdraw);
 
        /* always use color from mcol, as set in update_tface_color_layer */
        return DM_DRAW_OPTION_NORMAL;
@@ -590,7 +590,7 @@ static DMDrawOption draw_tface__set_draw(MTFace *tface, 
const bool UNUSED(has_mc
 
 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;
        int i, j;
@@ -624,7 +624,7 @@ static void update_tface_color_layer(DerivedMesh *dm, bool 
use_mcol)
                                        finalCol[i * 4 + 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;
@@ -639,7 +639,7 @@ static void update_tface_color_layer(DerivedMesh *dm, bool 
use_mcol)
                        }
                }
                else if (!mcol) {
-                       if (tface) {
+                       if (mtexpoly) {
                                for (j = 0; j < 4; j++) {
                                        finalCol[i * 4 + j].b = 255;
                                        finalCol[i * 4 + j].g = 255;
@@ -691,14 +691,9 @@ static DMDrawOption draw_tface_mapped__set_draw(void 
*userData, int origindex, i
        }
        else {
                MTexPoly *tpoly = (me->mtpoly) ? &me->mtpoly[origindex] : NULL;
-               MTFace mtf = {{{0}}};
                int matnr = mpoly->mat_nr;
-
-               if (tpoly) {
-                       ME_MTEXFACE_CPY(&mtf, tpoly);
-               }
                
-               return draw_tface__set_draw(&mtf, (me->mloopcol != NULL), 
matnr);
+               return draw_tface__set_draw(tpoly, (me->mloopcol != NULL), 
matnr);
        }
 }
 
@@ -717,16 +712,11 @@ static DMDrawOption draw_em_tf_mapped__set_draw(void 
*userData, int origindex, i
                return DM_DRAW_OPTION_SKIP;
        }
        else {
-               MTFace mtf = {{{0}}};
+               MTexPoly *mtexpoly = (data->cd_poly_tex_offset != -1) ?
+                       BM_ELEM_CD_GET_VOID_P(efa, data->cd_poly_tex_offset) : 
NULL;
                int matnr = (mat_nr != -1) ? mat_nr : efa->mat_nr;
 
-               if (data->has_mtface) {
-                       MTexPoly *tpoly = CustomData_bmesh_get(&em->bm->pda

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to