X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=model_shared.h;h=6f57d464c96a2c98ac08a2421ea93d785dff81b7;hb=129177f4a9098872fde9447d6b4adcbe398be84a;hp=516cf45f805e04889cd7d5576da1a67af66f7d97;hpb=ea4fc545e8444f579d88d8f096b054dcd7bc482f;p=xonotic%2Fdarkplaces.git diff --git a/model_shared.h b/model_shared.h index 516cf45f..6f57d464 100644 --- a/model_shared.h +++ b/model_shared.h @@ -327,16 +327,31 @@ model_brushq2_t; #define Q3SURFACEPARM_TRANS 16777216 #define Q3SURFACEPARM_WATER 33554432 +// various flags from shaders +#define Q3TEXTUREFLAG_TWOSIDED 1 +#define Q3TEXTUREFLAG_ADDITIVE 2 +#define Q3TEXTUREFLAG_NOMIPMAPS 4 +#define Q3TEXTUREFLAG_NOPICMIP 8 +#define Q3TEXTUREFLAG_AUTOSPRITE 16 +#define Q3TEXTUREFLAG_AUTOSPRITE2 32 + +struct q3msurface_s; typedef struct q3mtexture_s { char name[Q3PATHLENGTH]; + char firstpasstexturename[Q3PATHLENGTH]; int surfaceflags; int nativecontents; int supercontents; int surfaceparms; + int textureflags; int number; skinframe_t skin; + + int numfaces; + struct q3msurface_s **facelist; + int *facenumlist; } q3mtexture_t; @@ -363,7 +378,8 @@ typedef struct q3mleaf_s int clusterindex; int areaindex; int numleaffaces; - struct q3mface_s **firstleafface; + struct q3msurface_s **firstleafface; + int *firstleaffacenum; int numleafbrushes; struct q3mbrush_s **firstleafbrush; } @@ -374,7 +390,7 @@ typedef struct q3mmodel_s vec3_t mins; vec3_t maxs; int numfaces; - struct q3mface_s *firstface; + struct q3msurface_s *firstface; int numbrushes; struct q3mbrush_s *firstbrush; } @@ -404,21 +420,17 @@ typedef struct q3meffect_s } q3meffect_t; -typedef struct q3mface_s +typedef struct q3msurface_s { + // FIXME: collisionmarkframe should be kept in a separate array + // FIXME: visframe should be kept in a separate array + // FIXME: shadowmark should be kept in a separate array + struct q3mtexture_s *texture; struct q3meffect_s *effect; rtexture_t *lightmaptexture; - int collisions; // performs per triangle collisions on this surface int collisionmarkframe; // don't collide twice in one trace - int type; - int firstvertex; - int firstelement; - int patchsize[2]; - // used for processing - int markframe; - // (world only) visframe == r_framecount means it is visible this frame - int visframe; + int visframe; // visframe == r_framecount means it is visible this frame // bounding box for culling float mins[3]; float maxs[3]; @@ -442,12 +454,9 @@ typedef struct q3mface_s // index into model->brush.shadowmesh int num_firstshadowmeshtriangle; - + // used for shadow volume generation int shadowmark; - - // temporary use by light processing - int lighttemp_castshadow; } q3msurface_t; @@ -459,6 +468,8 @@ typedef struct model_brushq3_s int num_textures; q3mtexture_t *data_textures; + q3msurface_t **data_texturefaces; + int *data_texturefacenums; int num_planes; mplane_t *data_planes; @@ -474,6 +485,7 @@ typedef struct model_brushq3_s int num_leaffaces; q3msurface_t **data_leaffaces; + int *data_leaffacenums; int num_models; q3mmodel_t *data_models; @@ -680,6 +692,7 @@ skinfile_t *Mod_LoadSkinFiles(void); void Mod_FreeSkinFiles(skinfile_t *skinfile); int Mod_CountSkinFiles(skinfile_t *skinfile); +void Mod_SnapVertices(int numcomponents, int numvertices, float *vertices, float snap); int Mod_RemoveDegenerateTriangles(int numtriangles, const int *inelement3i, int *outelement3i, const float *vertex3f); #endif // MODEL_SHARED_H