[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