[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15671] branches/apricot/source: Apricot Branch

Brecht Van Lommel brechtvanlommel at pandora.be
Mon Jul 21 17:35:11 CEST 2008


Revision: 15671
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15671
Author:   blendix
Date:     2008-07-21 17:35:11 +0200 (Mon, 21 Jul 2008)

Log Message:
-----------
Apricot Branch
==============

* Refactoring in the texture and material drawing code, moving
  code into the gpu module, removing the duplicated versions
  in the game engine.
* Made game engine text drawing work with GLSL. It works based
  on filling in the default uv layer, so it requires a texture
  with the text image and mapped as uv's to work.

Modified Paths:
--------------
    branches/apricot/source/blender/blenkernel/BKE_DerivedMesh.h
    branches/apricot/source/blender/blenkernel/BKE_bad_level_calls.h
    branches/apricot/source/blender/blenkernel/BKE_mesh.h
    branches/apricot/source/blender/blenkernel/bad_level_call_stubs/stubs.c
    branches/apricot/source/blender/blenkernel/intern/DerivedMesh.c
    branches/apricot/source/blender/blenkernel/intern/cdderivedmesh.c
    branches/apricot/source/blender/blenkernel/intern/image.c
    branches/apricot/source/blender/blenkernel/intern/mesh.c
    branches/apricot/source/blender/blenkernel/intern/subsurf_ccg.c
    branches/apricot/source/blender/gpu/intern/gpu_codegen.c
    branches/apricot/source/blender/include/BDR_drawmesh.h
    branches/apricot/source/blender/include/BDR_drawobject.h
    branches/apricot/source/blender/python/CMakeLists.txt
    branches/apricot/source/blender/python/SConscript
    branches/apricot/source/blender/python/api2_2x/Blender.c
    branches/apricot/source/blender/python/api2_2x/Image.c
    branches/apricot/source/blender/python/api2_2x/Makefile
    branches/apricot/source/blender/src/drawmesh.c
    branches/apricot/source/blender/src/drawobject.c
    branches/apricot/source/blender/src/drawview.c
    branches/apricot/source/blender/src/editface.c
    branches/apricot/source/blender/src/editsima.c
    branches/apricot/source/blender/src/headerbuttons.c
    branches/apricot/source/blender/src/imagepaint.c
    branches/apricot/source/blender/src/meshtools.c
    branches/apricot/source/blender/src/sculptmode.c
    branches/apricot/source/blender/src/space.c
    branches/apricot/source/blender/src/verse_image.c
    branches/apricot/source/creator/Makefile
    branches/apricot/source/creator/SConscript
    branches/apricot/source/creator/creator.c
    branches/apricot/source/gameengine/BlenderRoutines/KX_BlenderGL.cpp
    branches/apricot/source/gameengine/BlenderRoutines/KX_BlenderGL.h
    branches/apricot/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
    branches/apricot/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
    branches/apricot/source/gameengine/GamePlayer/common/CMakeLists.txt
    branches/apricot/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
    branches/apricot/source/gameengine/GamePlayer/common/GPC_RenderTools.h
    branches/apricot/source/gameengine/GamePlayer/common/SConscript
    branches/apricot/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
    branches/apricot/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
    branches/apricot/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
    branches/apricot/source/gameengine/Rasterizer/RAS_IRenderTools.h
    branches/apricot/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp

Added Paths:
-----------
    branches/apricot/source/blender/gpu/GPU_draw.h
    branches/apricot/source/blender/gpu/intern/gpu_draw.c

Removed Paths:
-------------
    branches/apricot/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
    branches/apricot/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.h

Modified: branches/apricot/source/blender/blenkernel/BKE_DerivedMesh.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_DerivedMesh.h	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/BKE_DerivedMesh.h	2008-07-21 15:35:11 UTC (rev 15671)
@@ -199,7 +199,8 @@
 	 *
 	 * Also called for *final* editmode DerivedMeshes
 	 */
-	void (*drawFacesSolid)(DerivedMesh *dm, int (*setMaterial)(int));
+	void (*drawFacesSolid)(DerivedMesh *dm,
+	                       int (*setMaterial)(int, void *attribs));
 
 	/* Draw all faces
 	 *  o If useTwoSided, draw front and back using col arrays
@@ -221,7 +222,7 @@
 	 *  o Only if setMaterial returns true
 	 */
 	void (*drawFacesGLSL)(DerivedMesh *dm,
-		int (*setMaterial)(int, struct GPUVertexAttribs *attribs));
+		int (*setMaterial)(int, void *attribs));
 
 	/* Draw mapped faces (no color, or texture)
 	 *  o Only if !setDrawOptions or
@@ -255,7 +256,7 @@
 	 *  o Only if setMaterial and setDrawOptions return true
 	 */
 	void (*drawMappedFacesGLSL)(DerivedMesh *dm,
-		int (*setMaterial)(int, struct GPUVertexAttribs *attribs),
+		int (*setMaterial)(int, void *attribs),
 		int (*setDrawOptions)(void *userData, int index), void *userData);
 
 	/* Draw mapped edges as lines

Modified: branches/apricot/source/blender/blenkernel/BKE_bad_level_calls.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_bad_level_calls.h	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/BKE_bad_level_calls.h	2008-07-21 15:35:11 UTC (rev 15671)
@@ -115,10 +115,6 @@
 void docenter_new(void);
 int saveover(char *str);
 
-/* image.c */
-#include "DNA_image_types.h"
-void free_realtime_image(Image *ima); // has to become a callback, opengl stuff
-
 /* ipo.c */
 void copy_view3d_lock(short val);	// was a hack, to make scene layer ipo's possible
 

Modified: branches/apricot/source/blender/blenkernel/BKE_mesh.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_mesh.h	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/BKE_mesh.h	2008-07-21 15:35:11 UTC (rev 15671)
@@ -68,7 +68,6 @@
 void nurbs_to_mesh(struct Object *ob);
 void free_dverts(struct MDeformVert *dvert, int totvert);
 void copy_dverts(struct MDeformVert *dst, struct MDeformVert *src, int totvert); /* __NLA */
-int update_realtime_texture(struct MTFace *tface, double time);
 void mesh_delete_material_index(struct Mesh *me, int index);
 void mesh_set_smooth_flag(struct Object *meshOb, int enableSmooth);
 

Modified: branches/apricot/source/blender/blenkernel/bad_level_call_stubs/stubs.c
===================================================================
--- branches/apricot/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/bad_level_call_stubs/stubs.c	2008-07-21 15:35:11 UTC (rev 15671)
@@ -173,10 +173,6 @@
 void docenter_new(void){}
 int saveover(char *str){ return 0;}
 
-/* image.c */
-#include "DNA_image_types.h"
-void free_realtime_image(Image *ima){} // has to become a callback, opengl stuff
-
 /* ipo.c */
 void copy_view3d_lock(short val){}	// was a hack, to make scene layer ipo's possible
 

Modified: branches/apricot/source/blender/blenkernel/intern/DerivedMesh.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/DerivedMesh.c	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/intern/DerivedMesh.c	2008-07-21 15:35:11 UTC (rev 15671)
@@ -909,7 +909,7 @@
 }
 
 static void emDM_drawMappedFacesGLSL(DerivedMesh *dm,
-               int (*setMaterial)(int, GPUVertexAttribs *attribs),
+               int (*setMaterial)(int, void *attribs),
                int (*setDrawOptions)(void *userData, int index), void *userData) 
 {
 	EditMeshDerivedMesh *emdm= (EditMeshDerivedMesh*) dm;
@@ -1042,7 +1042,7 @@
 }
 
 static void emDM_drawFacesGLSL(DerivedMesh *dm,
-               int (*setMaterial)(int, GPUVertexAttribs *attribs))
+               int (*setMaterial)(int, void *attribs))
 {
 	dm->drawMappedFacesGLSL(dm, setMaterial, NULL, NULL);
 }
@@ -1767,7 +1767,7 @@
 }
 
 /* draw all VerseFaces */
-static void vDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int))
+static void vDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs))
 {
 	VDerivedMesh *vdm = (VDerivedMesh*)dm;
 	struct VerseFace *vface;
@@ -1876,6 +1876,8 @@
 		int (*setDrawParams)(void *userData, int index),
 		void *userData)
 {
+	/* not supported yet */
+	vDM_drawFacesText(dm, NULL);
 }
 
 /**/

Modified: branches/apricot/source/blender/blenkernel/intern/cdderivedmesh.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/cdderivedmesh.c	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/intern/cdderivedmesh.c	2008-07-21 15:35:11 UTC (rev 15671)
@@ -254,7 +254,7 @@
 	glEnd();
 }
 
-static void cdDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int))
+static void cdDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs))
 {
 	CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
 	MVert *mvert = cddm->mvert;
@@ -282,7 +282,7 @@
 		   || new_shademodel != shademodel) {
 			glEnd();
 
-			drawCurrentMat = setMaterial(matnr = new_matnr);
+			drawCurrentMat = setMaterial(matnr = new_matnr, NULL);
 
 			glShadeModel(shademodel = new_shademodel);
 			glBegin(glmode = new_glmode);
@@ -583,7 +583,7 @@
 	cdDM_drawFacesTex_common(dm, NULL, setDrawOptions, userData);
 }
 
-static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, GPUVertexAttribs *attribs), int (*setDrawOptions)(void *userData, int index), void *userData)
+static void cdDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, void *attribs), int (*setDrawOptions)(void *userData, int index), void *userData)
 {
 	CDDerivedMesh *cddm = (CDDerivedMesh*) dm;
 	GPUVertexAttribs gattribs;
@@ -688,7 +688,7 @@
 	glShadeModel(GL_FLAT);
 }
 
-static void cdDM_drawFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, GPUVertexAttribs *attribs))
+static void cdDM_drawFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, void *attribs))
 {
 	dm->drawMappedFacesGLSL(dm, setMaterial, NULL, NULL);
 }

Modified: branches/apricot/source/blender/blenkernel/intern/image.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/image.c	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/intern/image.c	2008-07-21 15:35:11 UTC (rev 15671)
@@ -53,6 +53,7 @@
 #include "DNA_packedFile_types.h"
 #include "DNA_scene_types.h"
 #include "DNA_camera_types.h"
+#include "DNA_sequence_types.h"
 #include "DNA_texture_types.h"
 #include "DNA_userdef_types.h"
 
@@ -77,9 +78,6 @@
 
 #include "RE_pipeline.h"
 
-/* bad level; call to free_realtime_image */
-#include "BKE_bad_level_calls.h"	
-
 /* for stamp drawing to an image */
 #include "BMF_Api.h"
 
@@ -87,6 +85,7 @@
 #include "BSE_time.h"
 
 #include "GPU_extensions.h"
+#include "GPU_draw.h"
 
 /* max int, to indicate we don't store sequences in ibuf */
 #define IMA_NO_INDEX	0x7FEFEFEF
@@ -240,7 +239,7 @@
 		ima->rr= NULL;
 	}	
 	
-	free_realtime_image(ima);
+	GPU_free_image(ima);
 	
 	ima->ok= IMA_OK;
 }
@@ -620,7 +619,7 @@
 			   This gives textures a "second chance" to be used before dying.
 			*/
 			if(ima->bindcode || ima->repbind) {
-				free_realtime_image(ima);
+				GPU_free_image(ima);
 				ima->lastused = ctime;
 			}
 			/* Otherwise, just kill the buffers */

Modified: branches/apricot/source/blender/blenkernel/intern/mesh.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/mesh.c	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/intern/mesh.c	2008-07-21 15:35:11 UTC (rev 15671)
@@ -79,45 +79,6 @@
 #include "BLI_editVert.h"
 #include "BLI_arithb.h"
 
-int update_realtime_texture(MTFace *tface, double time)
-{
-	Image *ima;
-	int	inc = 0;
-	float	diff;
-	int	newframe;
-
-	ima = tface->tpage;
-
-	if (!ima)
-		return 0;
-
-	if (ima->lastupdate<0)
-		ima->lastupdate = 0;
-
-	if (ima->lastupdate>time)
-		ima->lastupdate=(float)time;
-
-	if(ima->tpageflag & IMA_TWINANIM) {
-		if(ima->twend >= ima->xrep*ima->yrep) ima->twend= ima->xrep*ima->yrep-1;
-		
-		/* check: is the bindcode not in the array? Then free. (still to do) */
-		
-		diff = (float)(time-ima->lastupdate);
-
-		inc = (int)(diff*(float)ima->animspeed);
-
-		ima->lastupdate+=((float)inc/(float)ima->animspeed);
-
-		newframe = ima->lastframe+inc;
-
-		if (newframe > (int)ima->twend)
-			newframe = (int)ima->twsta-1 + (newframe-ima->twend)%(ima->twend-ima->twsta);
-
-		ima->lastframe = newframe;
-	}
-	return inc;
-}
-
 void mesh_update_customdata_pointers(Mesh *me)
 {
 	me->mvert = CustomData_get_layer(&me->vdata, CD_MVERT);

Modified: branches/apricot/source/blender/blenkernel/intern/subsurf_ccg.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/subsurf_ccg.c	2008-07-21 13:47:42 UTC (rev 15670)
+++ branches/apricot/source/blender/blenkernel/intern/subsurf_ccg.c	2008-07-21 15:35:11 UTC (rev 15671)
@@ -1602,7 +1602,7 @@
 }
 
 	/* Only used by non-editmesh types */
-static void ccgDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int)) {
+static void ccgDM_drawFacesSolid(DerivedMesh *dm, int (*setMaterial)(int, void *attribs)) {
 	CCGDerivedMesh *ccgdm = (CCGDerivedMesh*) dm;
 	CCGSubSurf *ss = ccgdm->ss;
 	CCGFaceIterator *fi = ccgSubSurf_getFaceIterator(ss);
@@ -1624,7 +1624,7 @@
 			mat_nr= 0;
 		}
 		
-		if (!setMaterial(mat_nr+1))
+		if (!setMaterial(mat_nr+1, NULL))
 			continue;
 
 		glShadeModel(drawSmooth? GL_SMOOTH: GL_FLAT);
@@ -1671,7 +1671,7 @@
 }
 
 	/* Only used by non-editmesh types */
-static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, GPUVertexAttribs *attribs), int (*setDrawOptions)(void *userData, int index), void *userData) {
+static void ccgDM_drawMappedFacesGLSL(DerivedMesh *dm, int (*setMaterial)(int, void *attribs), int (*setDrawOptions)(void *userData, int index), void *userData) {

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list