//#define SURF_PLANEBACK 2
-// set for anything to be transparent sorted
-#define MATERIALFLAG_TRANSPARENT 1
// use alpha blend on this material
#define MATERIALFLAG_ALPHA 2
// use additive blend on this material
#define MATERIALFLAG_NODRAW 512
// probably used only on q1bsp water
#define MATERIALFLAG_LIGHTBOTHSIDES 1024
+// use alpha test on this material
+#define MATERIALFLAG_ALPHATEST 2048
+// treat this material as a blended transparency (as opposed to an alpha test
+// transparency), this causes special fog behavior, and disables glDepthMask
+#define MATERIALFLAG_BLENDED 4096
+// render using a custom blendfunc
+#define MATERIALFLAG_CUSTOMBLEND 8192
+// do not cast shadows from this material
+#define MATERIALFLAG_NOSHADOW 16384
+// render using vertex alpha (q3bsp) as texture blend parameter between foreground (normal) skinframe and background skinframe
+#define MATERIALFLAG_VERTEXTEXTUREBLEND 32768
+// disables GL_CULL_FACE on this texture (making it double sided)
+#define MATERIALFLAG_NOCULLFACE 65536
+// render with a very short depth range (like 10% of normal), this causes entities to appear infront of most of the scene
+#define MATERIALFLAG_SHORTDEPTHRANGE 131072
+// combined mask of all attributes that require depth sorted rendering
+#define MATERIALFLAGMASK_DEPTHSORTED (MATERIALFLAG_BLENDED | MATERIALFLAG_NODEPTHTEST)
typedef struct medge_s
{
// for bounding box culling
vec3_t mins;
vec3_t maxs;
+ // supercontents from all brushes inside this node or leaf
+ int combinedsupercontents;
// this part unique to node
struct mnode_s *children[2];
// for bounding box culling
vec3_t mins;
vec3_t maxs;
+ // supercontents from all brushes inside this node or leaf
+ int combinedsupercontents;
// this part unique to leaf
// common
int clusterindex; // -1 is not in pvs, >= 0 is pvs bit number
int areaindex; // q3bsp
+ int containscollisionsurfaces; // indicates whether the leafsurfaces contains q3 patches
int numleafsurfaces;
int *firstleafsurface;
int numleafbrushes; // q3bsp
#define Q3SURFACEPARM_TRANS 16777216
#define Q3SURFACEPARM_WATER 33554432
#define Q3SURFACEPARM_POINTLIGHT 67108864
+#define Q3SURFACEPARM_HINT 134217728
+#define Q3SURFACEPARM_DUST 268435456
+#define Q3SURFACEPARM_BOTCLIP 536870912
+#define Q3SURFACEPARM_LIGHTGRID 1073741824
+#define Q3SURFACEPARM_ANTIPORTAL 2147483648u
-// various flags from shaders
+// various flags from shaders, used for special effects not otherwise classified
#define Q3TEXTUREFLAG_TWOSIDED 1
-#define Q3TEXTUREFLAG_ADDITIVE 2
-#define Q3TEXTUREFLAG_NOMIPMAPS 4
-#define Q3TEXTUREFLAG_NOPICMIP 8
-#define Q3TEXTUREFLAG_AUTOSPRITE 16
-#define Q3TEXTUREFLAG_AUTOSPRITE2 32
-#define Q3TEXTUREFLAG_ALPHATEST 64
+#define Q3TEXTUREFLAG_AUTOSPRITE 2
+#define Q3TEXTUREFLAG_AUTOSPRITE2 4
+#define Q3TEXTUREFLAG_NOPICMIP 16
typedef struct q3mbrush_s
{