[Bf-blender-cvs] [f2cc6c9254b] blender2.8: TexFace removal part 2

Campbell Barton noreply at git.blender.org
Wed May 24 17:36:22 CEST 2017


Commit: f2cc6c9254be5fe093e112f3b6e2192b392a1843
Author: Campbell Barton
Date:   Thu May 25 00:34:14 2017 +1000
Branches: blender2.8
https://developer.blender.org/rBf2cc6c9254be5fe093e112f3b6e2192b392a1843

TexFace removal part 2

- Derived-mesh drawing.
- All non UV members of TexFace structs.

MTexPoly is now redundant but keeping with a dummy member,
will check on complete removal later.

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

M	source/blender/blenkernel/BKE_DerivedMesh.h
M	source/blender/blenkernel/intern/DerivedMesh.c
M	source/blender/blenkernel/intern/cdderivedmesh.c
M	source/blender/blenkernel/intern/customdata.c
M	source/blender/blenkernel/intern/editderivedmesh.c
M	source/blender/blenkernel/intern/mesh_evaluate.c
M	source/blender/blenkernel/intern/subsurf_ccg.c
M	source/blender/blenloader/intern/versioning_legacy.c
M	source/blender/editors/include/ED_mesh.h
M	source/blender/editors/include/ED_uvedit.h
M	source/blender/editors/mesh/editmesh_utils.c
M	source/blender/editors/space_image/space_image.c
M	source/blender/editors/space_view3d/drawmesh.c
M	source/blender/editors/space_view3d/view3d_view.c
M	source/blender/editors/uvedit/uvedit_draw.c
M	source/blender/editors/uvedit/uvedit_intern.h
M	source/blender/editors/uvedit/uvedit_ops.c
M	source/blender/editors/uvedit/uvedit_unwrap_ops.c
M	source/blender/gpu/GPU_draw.h
M	source/blender/gpu/intern/gpu_draw.c
M	source/blender/makesdna/DNA_meshdata_types.h
M	source/blender/makesdna/DNA_space_types.h
M	source/blender/makesrna/intern/rna_mesh.c
M	source/blender/modifiers/intern/MOD_uvproject.c
M	source/blender/render/intern/source/multires_bake.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/Physics/Bullet/CcdPhysicsController.cpp
M	source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
M	source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
M	source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp

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

diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 1ac1fd10da6..116724463ca 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -142,8 +142,6 @@ typedef int (*DMSetMaterial)(int mat_nr, void *attribs);
 typedef int (*DMCompareDrawOptions)(void *userData, int cur_index, int next_index);
 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 MTexPoly *mtexpoly, const bool has_vcol, int matnr);
 
 typedef enum DMDrawFlag {
 	DM_DRAW_USE_COLORS          = (1 << 0),
@@ -406,14 +404,6 @@ struct DerivedMesh {
 	void (*drawFacesSolid)(DerivedMesh *dm, float (*partial_redraw_planes)[4],
 	                       bool fast, DMSetMaterial setMaterial);
 
-	/** Draw all faces using MTFace
-	 * - Drawing options too complicated to enumerate, look at code.
-	 */
-	void (*drawFacesTex)(DerivedMesh *dm,
-	                     DMSetDrawOptionsTex setDrawOptions,
-	                     DMCompareDrawOptions compareDrawOptions,
-	                     void *userData, DMDrawFlag flag);
-
 	/** Draw all faces with GLSL materials
 	 *  o setMaterial is called for every different material nr
 	 *  o Only if setMaterial returns true
@@ -440,14 +430,6 @@ struct DerivedMesh {
 	                        void *userData,
 	                        DMDrawFlag flag);
 
-	/** Draw mapped faces using MTFace
-	 * - Drawing options too complicated to enumerate, look at code.
-	 */
-	void (*drawMappedFacesTex)(DerivedMesh *dm,
-	                           DMSetDrawOptionsMappedTex setDrawOptions,
-	                           DMCompareDrawOptions compareDrawOptions,
-	                           void *userData, DMDrawFlag flag);
-
 	/** Draw mapped faces with GLSL materials
 	 * - setMaterial is called for every different material nr
 	 * - setDrawOptions is called for every face
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index a6b9a048763..871a25b0d7e 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -3556,15 +3556,6 @@ static void navmesh_drawColored(DerivedMesh *dm)
 	immUnbindProgram();
 }
 
-static void navmesh_DM_drawFacesTex(
-        DerivedMesh *dm,
-        DMSetDrawOptionsTex UNUSED(setDrawOptions),
-        DMCompareDrawOptions UNUSED(compareDrawOptions),
-        void *UNUSED(userData), DMDrawFlag UNUSED(flag))
-{
-	navmesh_drawColored(dm);
-}
-
 static void navmesh_DM_drawFacesSolid(
         DerivedMesh *dm,
         float (*partial_redraw_planes)[4],
@@ -3598,7 +3589,6 @@ static DerivedMesh *navmesh_dm_createNavMeshForVisualization(DerivedMesh *dm)
 	recastData = (int *)CustomData_get_layer(&result->polyData, CD_RECAST);
 
 	/* note: This is not good design! - really should not be doing this */
-	result->drawFacesTex =  navmesh_DM_drawFacesTex;
 	result->drawFacesSolid = navmesh_DM_drawFacesSolid;
 
 
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 54ccad64c90..63d105e24b1 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -527,165 +527,6 @@ static void cdDM_drawFacesSolid(
 	immUnbindProgram();
 }
 
-static void cdDM_drawFacesTex_common(
-        DerivedMesh *dm,
-        DMSetDrawOptionsTex drawParams,
-        DMSetDrawOptionsMappedTex drawParamsMapped,
-        DMCompareDrawOptions compareDrawOptions,
-        void *userData, DMDrawFlag flag)
-{
-	CDDerivedMesh *cddm = (CDDerivedMesh *) dm;
-	const MPoly *mpoly = cddm->mpoly;
-	MTexPoly *mtexpoly = DM_get_poly_data_layer(dm, CD_MTEXPOLY);
-	const  MLoopCol *mloopcol = NULL;
-	int i;
-	int colType, start_element, tot_drawn;
-	const bool use_hide = (flag & DM_DRAW_SKIP_HIDDEN) != 0;
-	const bool use_tface = (flag & DM_DRAW_USE_ACTIVE_UV) != 0;
-	const bool use_colors = (flag & DM_DRAW_USE_COLORS) != 0;
-	int totpoly;
-	int next_actualFace;
-	int mat_index;
-	int tot_element;
-
-	/* double lookup */
-	const int *index_mp_to_orig  = dm->getPolyDataArray(dm, CD_ORIGINDEX);
-
-	/* TODO: not entirely correct, but currently dynamic topology will
-	 *       destroy UVs anyway, so textured display wouldn't work anyway
-	 *
-	 *       this will do more like solid view with lights set up for
-	 *       textured view, but object itself will be displayed gray
-	 *       (the same as it'll display without UV maps in textured view)
-	 */
-	if (cddm->pbvh) {
-		if (cddm->pbvh_draw &&
-		    BKE_pbvh_type(cddm->pbvh) == PBVH_BMESH &&
-		    BKE_pbvh_has_faces(cddm->pbvh))
-		{
-			GPU_set_tpage(NULL, false, false);
-			BKE_pbvh_draw(cddm->pbvh, NULL, NULL, NULL, false, false);
-			return;
-		}
-		else {
-			cdDM_update_normals_from_pbvh(dm);
-		}
-	}
-
-	if (use_colors) {
-		colType = CD_TEXTURE_MLOOPCOL;
-		mloopcol = dm->getLoopDataArray(dm, colType);
-		if (!mloopcol) {
-			colType = CD_PREVIEW_MLOOPCOL;
-			mloopcol = dm->getLoopDataArray(dm, colType);
-		}
-		if (!mloopcol) {
-			colType = CD_MLOOPCOL;
-			mloopcol = dm->getLoopDataArray(dm, colType);
-		}
-	}
-
-	GPU_vertex_setup(dm);
-	GPU_normal_setup(dm);
-	GPU_triangle_setup(dm);
-	if (flag & DM_DRAW_USE_TEXPAINT_UV)
-		GPU_texpaint_uv_setup(dm);
-	else
-		GPU_uv_setup(dm);
-	if (mloopcol) {
-		GPU_color_setup(dm, colType);
-	}
-
-	/* lastFlag = 0; */ /* UNUSED */
-	for (mat_index = 0; mat_index < dm->drawObject->totmaterial; mat_index++) {
-		GPUBufferMaterial *bufmat = dm->drawObject->materials + mat_index;
-		next_actualFace = bufmat->polys[0];
-		totpoly = bufmat->totpolys;
-
-		tot_element = 0;
-		tot_drawn = 0;
-		start_element = 0;
-
-		for (i = 0; i < totpoly; i++) {
-			int actualFace = bufmat->polys[i];
-			DMDrawOption draw_option = DM_DRAW_OPTION_NORMAL;
-			int flush = 0;
-			int tot_tri_verts;
-
-			if (i != totpoly - 1)
-				next_actualFace = bufmat->polys[i + 1];
-
-			if (use_hide && (mpoly[actualFace].flag & ME_HIDE)) {
-				draw_option = DM_DRAW_OPTION_SKIP;
-			}
-			else if (drawParams) {
-				MTexPoly *tp = use_tface && mtexpoly ? &mtexpoly[actualFace] : NULL;
-				draw_option = drawParams(tp, (mloopcol != NULL), mpoly[actualFace].mat_nr);
-			}
-			else {
-				if (index_mp_to_orig) {
-					const int 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.
-						 * but better then skipping it altogether. - campbell */
-						draw_option = DM_DRAW_OPTION_NORMAL;
-					}
-					else if (drawParamsMapped) {
-						draw_option = drawParamsMapped(userData, orig, mpoly[actualFace].mat_nr);
-					}
-				}
-				else if (drawParamsMapped) {
-					draw_option = drawParamsMapped(userData, actualFace, mpoly[actualFace].mat_nr);
-				}
-			}
-
-			/* flush buffer if current triangle isn't drawable or it's last triangle */
-			flush = (draw_option == DM_DRAW_OPTION_SKIP) || (i == totpoly - 1);
-
-			if (!flush && compareDrawOptions) {
-				/* also compare draw options and flush buffer if they're different
-				 * need for face selection highlight in edit mode */
-				flush |= compareDrawOptions(userData, actualFace, next_actualFace) == 0;
-			}
-
-			tot_tri_verts = ME_POLY_TRI_TOT(&mpoly[actualFace]) * 3;
-			tot_element += tot_tri_verts;
-
-			if (flush) {
-				if (draw_option != DM_DRAW_OPTION_SKIP)
-					tot_drawn += tot_tri_verts;
-
-				if (tot_drawn) {
-					if (mloopcol && draw_option != DM_DRAW_OPTION_NO_MCOL)
-						GPU_color_switch(1);
-					else
-						GPU_color_switch(0);
-
-					GPU_buffer_draw_elements(dm->drawObject->triangles, GL_TRIANGLES, bufmat->start + start_element, tot_drawn);
-					tot_drawn = 0;
-				}
-				start_element = tot_element;
-			}
-			else {
-				tot_drawn += tot_tri_verts;
-			}
-		}
-	}
-
-	GPU_buffers_unbind();
-	
-}
-
-static void cdDM_drawFacesTex(
-        DerivedMesh *dm,
-        DMSetDrawOptionsTex setDrawOptions,
-        DMCompareDrawOptions compareDrawOptions,
-        void *userData, DMDrawFlag flag)
-{
-	cdDM_drawFacesTex_common(dm, setDrawOptions, NULL, compareDrawOptions, userData, flag);
-}
-
 static void cdDM_drawMappedFaces(
         DerivedMesh *dm,
         DMSetDrawOptions setDrawOptions,
@@ -890,15 +731,6 @@ static void cdDM_drawMappedFaces(
 
 }
 
-static void cdDM_drawMappedFacesTex(
-        DerivedMesh *dm,
-        DMSetDrawOptionsMappedTex setDrawOptions,
-        DMCompareDrawOptions compareDrawOptions,
-        void *userData, DMDrawFlag flag)
-{
-	cdDM_drawFacesTex_common(dm, NULL, setDrawOptions, compareDrawOptions, userData, flag);
-}
-
 static void cddm_draw_attrib_vertex(
         DMVertexAttribs *attribs, const MVert *mvert, int a, int index, int loop, int vert,
         const float *lnor, const bool smoothnormal)
@@ -2061,10 +1893,8 @@ static CDDerivedMesh *cdDM_create(const char *desc)
 	dm->drawMappedEdges = cdDM_drawMappedEdges;
 
 	dm->drawFacesSolid = cdDM_drawFacesSolid;
-	dm->drawFacesTex = cdDM_drawFacesTex;
 	dm->drawFacesGLSL = cdDM_drawFacesGLSL;
 	dm->drawMappedFaces = cdDM_drawMappedFaces;
-	dm->drawMappedFacesTex = cdDM_drawMappedFacesTex;
 	dm->drawMappedFacesGLSL = cdDM_drawMappedFacesGLSL;
 	dm->drawMappedFacesMat = cdDM_drawMappedFacesMat;
 
@@ -2219,9 +2049,8 @@ static void loops_to_customdata_corners(
         int numCol, int numTex)
 {
 	const BMLoop *l;
-	BMFace *f = l3[0]->f;
+//	BMFace *f = l3[0]->f;
 	MTFace *texface;
-	MTexPoly *texpoly;
 	MCol *mcol;
 	MLoopCol *mloopcol;
 	MLoopUV *mloopuv;
@@ -2229,9 +2058,6 @@ static void loops_to_customdata_corners(
 
 	for (i = 0; i < numTex; i++) {
 		texface = CustomData_get_n(facedata, CD_MTFACE, cdindex, i);
-		texpoly = CustomData_bmesh_get_n(&bm->pdata, f->head.data, CD_MTEXPOLY, i);
-		
-		ME_MTEXFACE_CPY(texface, texpoly);
 	
 		for (j = 0; j < 3; j++) {
 			l = l3[j];
diff --git a/source/blender/blenkernel/intern/customdata.c b/source/blender/blenkernel/i

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list