]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.h
Add more debugging prints in Draw_CachePic, most of these are for edge cases.
[xonotic/darkplaces.git] / model_shared.h
index 54331d1a10b23764b0dd08008ef27901b8297290..298a54093c6c2f99b0290a15ddfbad5a16af6461 100644 (file)
@@ -101,30 +101,6 @@ typedef struct blendweights_s
 }
 blendweights_t;
 
-typedef struct r_vertexgeneric_s
-{
-       // 36 bytes
-       float vertex3f[3];
-       float color4f[4];
-       float texcoord2f[2];
-}
-r_vertexgeneric_t;
-
-typedef struct r_vertexmesh_s
-{
-       // 88 bytes
-       float vertex3f[3];
-       float color4f[4];
-       float texcoordtexture2f[2];
-       float texcoordlightmap2f[2];
-       float svector3f[3];
-       float tvector3f[3];
-       float normal3f[3];
-       unsigned char skeletalindex4ub[4];
-       unsigned char skeletalweight4ub[4];
-}
-r_vertexmesh_t;
-
 typedef struct r_meshbuffer_s
 {
        int bufferobject; // OpenGL
@@ -162,7 +138,6 @@ typedef struct surfmesh_s
        unsigned char *data_skeletalindex4ub;
        unsigned char *data_skeletalweight4ub;
        int *data_lightmapoffsets; // index into surface's lightmap samples for vertex lighting
-       r_vertexmesh_t *data_vertexmesh; // interleaved arrays for D3D
        // vertex buffer object (stores geometry in video memory)
        r_meshbuffer_t *vbo_vertexbuffer;
        int vbooffset_vertex3f;
@@ -174,7 +149,6 @@ typedef struct surfmesh_s
        int vbooffset_lightmapcolor4f;
        int vbooffset_skeletalindex4ub;
        int vbooffset_skeletalweight4ub;
-       int vbooffset_vertexmesh;
        // morph blending, these are zero if model is skeletal or static
        int num_morphframes;
        struct md3vertex_s *data_morphmd3vertex;
@@ -190,9 +164,6 @@ typedef struct surfmesh_s
        // set if there is some kind of animation on this model
        qboolean isanimated;
 
-       // vertex and index buffers for rendering
-       r_meshbuffer_t *vertexmesh_vertexbuffer;
-
        // dynamic mesh building support (Mod_Mesh_*)
        int num_vertexhashsize; // always pow2 for simple masking
        int *data_vertexhash; // hash table - wrapping buffer for storing index of similar vertex with -1 as terminator
@@ -210,44 +181,29 @@ shadowmeshvertexhash_t;
 
 typedef struct shadowmesh_s
 {
-       // next mesh in chain
-       struct shadowmesh_s *next;
-       // used for light mesh (NULL on shadow mesh)
-       rtexture_t *map_diffuse;
-       rtexture_t *map_specular;
-       rtexture_t *map_normal;
-       // buffer sizes
-       int numverts, maxverts;
-       int numtriangles, maxtriangles;
-       // used always
+       mempool_t *mempool;
+
+       int numverts;
+       int maxverts;
        float *vertex3f;
-       // used for light mesh (NULL on shadow mesh)
-       float *svector3f;
-       float *tvector3f;
-       float *normal3f;
-       float *texcoord2f;
-       // used always
+       r_meshbuffer_t *vbo_vertexbuffer;
+       int vbooffset_vertex3f;
+
+       int numtriangles;
+       int maxtriangles;
        int *element3i;
        r_meshbuffer_t *element3i_indexbuffer;
        int element3i_bufferoffset;
        unsigned short *element3s;
        r_meshbuffer_t *element3s_indexbuffer;
        int element3s_bufferoffset;
-       // vertex/index buffers for rendering
-       // (created by Mod_ShadowMesh_Finish if possible)
-       r_vertexmesh_t *vertexmesh; // usually NULL
+
        // used for shadow mapping cubemap side partitioning
        int sideoffsets[6], sidetotals[6];
+
        // these are NULL after Mod_ShadowMesh_Finish is performed, only used
        // while building meshes
        shadowmeshvertexhash_t **vertexhashtable, *vertexhashentries;
-       r_meshbuffer_t *vbo_vertexbuffer;
-       int vbooffset_vertex3f;
-       int vbooffset_svector3f;
-       int vbooffset_tvector3f;
-       int vbooffset_normal3f;
-       int vbooffset_texcoord2f;
-       int vbooffset_vertexmesh;
 }
 shadowmesh_t;
 
@@ -744,9 +700,6 @@ typedef struct msurface_s
        int num_vertices; // number of vertices
        int num_firstvertex; // first vertex
 
-       // shadow volume building information
-       int num_firstshadowmeshtriangle; // index into model->brush.shadowmesh
-
        // mesh information for collisions (only used by q3bsp curves)
        int num_collisiontriangles; // q3bsp
        int num_collisionvertices; // q3bsp
@@ -1159,13 +1112,11 @@ void Mod_MakeSortedSurfaces(dp_model_t *mod);
 // automatically called after model loader returns
 void Mod_BuildVBOs(void);
 
-shadowmesh_t *Mod_ShadowMesh_Alloc(mempool_t *mempool, int maxverts, int maxtriangles, rtexture_t *map_diffuse, rtexture_t *map_specular, rtexture_t *map_normal, int light, int expandable);
-shadowmesh_t *Mod_ShadowMesh_ReAlloc(mempool_t *mempool, shadowmesh_t *oldmesh, int light);
-int Mod_ShadowMesh_AddVertex(shadowmesh_t *mesh, float *vertex14f);
-void Mod_ShadowMesh_AddTriangle(mempool_t *mempool, shadowmesh_t *mesh, rtexture_t *map_diffuse, rtexture_t *map_specular, rtexture_t *map_normal, float *vertex14f);
-void Mod_ShadowMesh_AddMesh(mempool_t *mempool, shadowmesh_t *mesh, rtexture_t *map_diffuse, rtexture_t *map_specular, rtexture_t *map_normal, const float *vertex3f, const float *svector3f, const float *tvector3f, const float *normal3f, const float *texcoord2f, int numtris, const int *element3i);
-shadowmesh_t *Mod_ShadowMesh_Begin(mempool_t *mempool, int maxverts, int maxtriangles, rtexture_t *map_diffuse, rtexture_t *map_specular, rtexture_t *map_normal, int light, int expandable);
-shadowmesh_t *Mod_ShadowMesh_Finish(mempool_t *mempool, shadowmesh_t *firstmesh, qboolean light, qboolean createvbo);
+shadowmesh_t *Mod_ShadowMesh_Alloc(mempool_t *mempool, int maxverts, int maxtriangles);
+int Mod_ShadowMesh_AddVertex(shadowmesh_t *mesh, const float *vertex3f);
+void Mod_ShadowMesh_AddMesh(shadowmesh_t *mesh, const float *vertex3f, int numtris, const int *element3i);
+shadowmesh_t *Mod_ShadowMesh_Begin(mempool_t *mempool, int maxverts, int maxtriangles);
+shadowmesh_t *Mod_ShadowMesh_Finish(shadowmesh_t *firstmesh, qboolean createvbo);
 void Mod_ShadowMesh_CalcBBox(shadowmesh_t *firstmesh, vec3_t mins, vec3_t maxs, vec3_t center, float *radius);
 void Mod_ShadowMesh_Free(shadowmesh_t *mesh);