X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=model_brush.h;h=1621b491b8c15d5d2ccfbaeb903e3fc339a97d5a;hb=4576cbd2790ce45788e128ae6a06676e5f3f03d6;hp=ffe9599fc5efa1b6454d152a9d60212e19ed7dac;hpb=d39f7ad13281cd7e01262f0ca518b78b44a941ab;p=xonotic%2Fdarkplaces.git diff --git a/model_brush.h b/model_brush.h index ffe9599f..1621b491 100644 --- a/model_brush.h +++ b/model_brush.h @@ -62,6 +62,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 @@ -110,6 +112,14 @@ mplane_t; #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 // 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 @@ -117,7 +127,7 @@ mplane_t; typedef struct medge_s { - unsigned short v[2]; + unsigned int v[2]; } medge_t; @@ -141,8 +151,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; @@ -630,17 +640,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 @@ -697,9 +707,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