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

Reply via email to