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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs