X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=model_brush.h;h=d1d51fabd854e48edb53689763624e62bf071726;hb=d935102f6ffdbfed14a50ee67f0231407c2073db;hp=652c91394f7033eb637efd3a075dc01eeda4f9bb;hpb=442ae8d71106818c529dd5ff5c6d2110966f5d32;p=xonotic%2Fdarkplaces.git diff --git a/model_brush.h b/model_brush.h index 652c9139..d1d51fab 100644 --- a/model_brush.h +++ b/model_brush.h @@ -48,11 +48,18 @@ mvertex_t; // plane_t structure typedef struct mplane_s { - vec3_t normal; - float dist; + union + { + struct + { + vec3_t normal; + vec_t dist; + }; + vec4_t normal_and_dist; + }; // for texture axis selection and fast side tests - int type; - int signbits; + int type; // set by PlaneClassify() + int signbits; // set by PlaneClassify() } mplane_t; @@ -62,6 +69,8 @@ mplane_t; //#define SURF_PLANEBACK 2 +// indicates that all triangles of the surface should be added to the BIH collision system +#define MATERIALFLAG_MESHCOLLISIONS 1 // use alpha blend on this material #define MATERIALFLAG_ALPHA 2 // use additive blend on this material @@ -108,12 +117,26 @@ mplane_t; #define MATERIALFLAG_MODELLIGHT 4194304 // add directional model lighting to this material (q3bsp lightgrid only) #define MATERIALFLAG_MODELLIGHT_DIRECTIONAL 8388608 +// causes RSurf_GetCurrentTexture to leave alone certain fields +#define MATERIALFLAG_CUSTOMSURFACE 16777216 +// causes MATERIALFLAG_BLENDED to render a depth pass before rendering, hiding backfaces and other hidden geometry +#define MATERIALFLAG_TRANSDEPTH 33554432 +// like refraction, but doesn't distort etc. +#define MATERIALFLAG_CAMERA 67108864 +// disable rtlight on surface, use R_LightPoint instead +#define MATERIALFLAG_NORTLIGHT 134217728 +// alphagen vertex +#define MATERIALFLAG_ALPHAGEN_VERTEX 268435456 +// use occlusion buffer for corona +#define MATERIALFLAG_OCCLUDE 536870912 // combined mask of all attributes that require depth sorted rendering #define MATERIALFLAGMASK_DEPTHSORTED (MATERIALFLAG_BLENDED | MATERIALFLAG_NODEPTHTEST) +// combined mask of all attributes that cause some sort of transparency +#define MATERIALFLAGMASK_TRANSLUCENT (MATERIALFLAG_WATERALPHA | MATERIALFLAG_SKY | MATERIALFLAG_NODRAW | MATERIALFLAG_ALPHATEST | MATERIALFLAG_BLENDED | MATERIALFLAG_WATERSHADER | MATERIALFLAG_REFRACTION) typedef struct medge_s { - unsigned short v[2]; + unsigned int v[2]; } medge_t; @@ -137,8 +160,8 @@ typedef struct mnode_s struct mnode_s *children[2]; // q1bsp specific - unsigned short firstsurface; - unsigned short numsurfaces; + unsigned int firstsurface; + unsigned int numsurfaces; } mnode_t; @@ -211,6 +234,7 @@ svbspmesh_t; // Q2 bsp stuff +#define Q2BSPMAGIC ('I' + 'B' * 256 + 'S' * 65536 + 'P' * 16777216) #define Q2BSPVERSION 38 // leaffaces, leafbrushes, planes, and verts are still bounded by @@ -309,9 +333,13 @@ typedef struct q2dmodel_s #define Q2SURF_FLOWING 0x40 // scroll towards angle #define Q2SURF_NODRAW 0x80 // don't bother referencing the texture +#define Q2SURF_HINT 0x100 // make a primary bsp splitter +#define Q2SURF_SKIP 0x200 // completely ignore, allowing non-closed brushes +#define Q2SURF_ALPHATEST 0x02000000 // alpha test masking of color 255 in wal textures (supported by modded engines) +/* typedef struct q2dnode_s { int planenum; @@ -322,13 +350,12 @@ typedef struct q2dnode_s unsigned short numfaces; // counting both sides } q2dnode_t; - typedef struct q2texinfo_s { float vecs[2][4]; // [s/t][xyz offset] int flags; // miptex flags + overrides int value; // light emission, etc - char texture[32]; // texture name (textures/*.wal) + char texture[32]; // texture name (textures/something.wal) int nexttexinfo; // for animations, -1 = end of chain } q2texinfo_t; @@ -388,6 +415,7 @@ typedef struct q2darea_s int numareaportals; int firstareaportal; } q2darea_t; +*/ //Q3 bsp stuff @@ -626,17 +654,17 @@ q3dpvs_t; #define Q3SURFACEFLAG_NODAMAGE 1 #define Q3SURFACEFLAG_SLICK 2 #define Q3SURFACEFLAG_SKY 4 -#define Q3SURFACEFLAG_LADDER 8 +#define Q3SURFACEFLAG_LADDER 8 // has no surfaceparm #define Q3SURFACEFLAG_NOIMPACT 16 #define Q3SURFACEFLAG_NOMARKS 32 -#define Q3SURFACEFLAG_FLESH 64 +#define Q3SURFACEFLAG_FLESH 64 // has no surfaceparm #define Q3SURFACEFLAG_NODRAW 128 #define Q3SURFACEFLAG_HINT 256 -#define Q3SURFACEFLAG_SKIP 512 +#define Q3SURFACEFLAG_SKIP 512 // has no surfaceparm #define Q3SURFACEFLAG_NOLIGHTMAP 1024 #define Q3SURFACEFLAG_POINTLIGHT 2048 #define Q3SURFACEFLAG_METALSTEPS 4096 -#define Q3SURFACEFLAG_NOSTEPS 8192 +#define Q3SURFACEFLAG_NOSTEPS 8192 // has no surfaceparm #define Q3SURFACEFLAG_NONSOLID 16384 #define Q3SURFACEFLAG_LIGHTFILTER 32768 #define Q3SURFACEFLAG_ALPHASHADOW 65536 @@ -665,7 +693,7 @@ q3dpvs_t; #define Q3SURFACEPARM_ORIGIN 262144 #define Q3SURFACEPARM_PLAYERCLIP 524288 #define Q3SURFACEPARM_SKY 1048576 -#define Q3SURFACEPARM_SLICK 2197152 +#define Q3SURFACEPARM_SLICK 2097152 #define Q3SURFACEPARM_SLIME 4194304 #define Q3SURFACEPARM_STRUCTURAL 8388608 #define Q3SURFACEPARM_TRANS 16777216 @@ -693,9 +721,10 @@ typedef struct q3mbrushside_s } q3mbrushside_t; -#define CHECKPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] & (1 << ((b) & 7))) : false) -#define SETPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] |= (1 << ((b) & 7))) : false) -#define CLEARPVSBIT(pvs,b) ((b) >= 0 ? ((pvs)[(b) >> 3] &= ~(1 << ((b) & 7))) : false) +// the first cast is to shut up a stupid warning by clang, the second cast is to make both sides have the same type +#define CHECKPVSBIT(pvs,b) ((b) >= 0 ? (unsigned char) ((pvs)[(b) >> 3] & (1 << ((b) & 7))) : (unsigned char) false) +#define SETPVSBIT(pvs,b) (void) ((b) >= 0 ? (unsigned char) ((pvs)[(b) >> 3] |= (1 << ((b) & 7))) : (unsigned char) false) +#define CLEARPVSBIT(pvs,b) (void) ((b) >= 0 ? (unsigned char) ((pvs)[(b) >> 3] &= ~(1 << ((b) & 7))) : (unsigned char) false) #endif