]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_shared.h
changed qc profiling to use doubles instead of ints for profile counters, so it can...
[xonotic/darkplaces.git] / model_shared.h
index e1fc004a53899f7d33c75441dc9293e963a436a3..f7b2445c5246736bb8ac2fb61ace85aff022b321 100644 (file)
@@ -72,15 +72,6 @@ typedef struct overridetagnameset_s
 }
 overridetagnameset_t;
 
-typedef struct surfmeshvertexboneweight_s
-{
-       unsigned int vertexindex;
-       unsigned int boneindex;
-       float origin[3];
-       float weight;
-}
-surfmeshvertexboneweight_t;
-
 // used for mesh lists in q1bsp/q3bsp map models
 // (the surfaces reference portions of these meshes)
 typedef struct surfmesh_s
@@ -100,9 +91,9 @@ typedef struct surfmesh_s
        // morph blending, these are zero if model is skeletal or static
        int num_morphframes;
        float *data_morphvertex3f;
-       // skeletal blending, these are zero if model is morph or static
-       int num_vertexboneweights;
-       surfmeshvertexboneweight_t *data_vertexboneweights;
+       // skeletal blending, these are NULL if model is morph or static
+       int *data_vertexweightindex4i;
+       float *data_vertexweightinfluence4f;
 }
 surfmesh_t;
 
@@ -144,9 +135,7 @@ shadowmesh_t;
 typedef enum texturelayertype_e
 {
        TEXTURELAYERTYPE_INVALID,
-       TEXTURELAYERTYPE_LITTEXTURE_COMBINE,
-       TEXTURELAYERTYPE_LITTEXTURE_MULTIPASS,
-       TEXTURELAYERTYPE_LITTEXTURE_VERTEX,
+       TEXTURELAYERTYPE_LITTEXTURE,
        TEXTURELAYERTYPE_TEXTURE,
        TEXTURELAYERTYPE_FOG,
 }
@@ -215,12 +204,14 @@ typedef struct texture_s
        float specularscale;
        float specularpower;
 
+       // from q3 shaders
+       int customblendfunc[2];
+
        int currentnumlayers;
        texturelayer_t currentlayers[16];
 
        // q3bsp
        char name[64];
-       char firstpasstexturename[64]; // used only during loading
        int surfaceflags;
        int supercontents;
        int surfaceparms;
@@ -447,9 +438,10 @@ typedef struct model_brushq3_s
        int num_models;
        q3dmodel_t *data_models;
 
-       // freed after loading!
+       // used only during loading - freed after loading!
        int num_vertices;
        float *data_vertex3f;
+       float *data_normal3f;
        float *data_texcoordtexture2f;
        float *data_texcoordlightmap2f;
        float *data_color4f;
@@ -550,6 +542,8 @@ typedef struct model_s
        aliasbone_t             *data_bones;
        int                             num_poses;
        float                   *data_poses;
+       float                   *data_basebonepose;
+       float                   *data_baseboneposeinverse;
        // textures of this model
        int                             num_textures;
        texture_t               *data_textures;
@@ -616,7 +610,7 @@ int Mod_BuildVertexRemapTableFromElements(int numelements, const int *elements,
 void Mod_BuildTriangleNeighbors(int *neighbors, const int *elements, int numtriangles);
 void Mod_ValidateElements(int *elements, int numtriangles, int firstvertex, int numverts, const char *filename, int fileline);
 void Mod_BuildNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const int *elements, float *normal3f, qboolean areaweighting);
-void Mod_BuildTextureVectorsAndNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex, const float *texcoord, const int *elements, float *svectors, float *tvectors, float *normals, qboolean areaweighting);
+void Mod_BuildTextureVectorsFromNormals(int firstvertex, int numvertices, int numtriangles, const float *vertex3f, const float *texcoord2f, const float *normal3f, const int *elements, float *svector3f, float *tvector3f, qboolean areaweighting);
 
 void Mod_AllocSurfMesh(mempool_t *mempool, int numvertices, int numtriangles, qboolean lightmapoffsets, qboolean vertexcolors, qboolean neighbors);
 
@@ -675,7 +669,7 @@ void R_Q1BSP_DrawLight(struct entity_render_s *ent, int numsurfaces, const int *
 // alias models
 struct frameblend_s;
 void Mod_AliasInit(void);
-void Mod_Alias_GetMesh_Vertex3f(const model_t *model, const struct frameblend_s *frameblend, float *out3f);
+void Mod_Alias_GetMesh_Vertices(const model_t *model, const struct frameblend_s *frameblend, float *vertex3f, float *normal3f, float *svector3f, float *tvector3f);
 int Mod_Alias_GetTagMatrix(const model_t *model, int poseframe, int tagindex, matrix4x4_t *outmatrix);
 int Mod_Alias_GetTagIndexForName(const model_t *model, unsigned int skin, const char *tagname);