#define MATERIALFLAG_WATERALPHA 16
// draw with no lighting
#define MATERIALFLAG_FULLBRIGHT 32
-// drawn as a normal lightmapped wall
+// drawn as a normal surface (alternative to SKY)
#define MATERIALFLAG_WALL 64
-// swirling water effect
-#define MATERIALFLAG_WATER 128
-// this surface shows the sky
+// this surface shows the sky in its place, alternative to WALL
// skipped if transparent
-#define MATERIALFLAG_SKY 256
+#define MATERIALFLAG_SKY 128
+// swirling water effect (used with MATERIALFLAG_WALL)
+#define MATERIALFLAG_WATERSCROLL 256
// skips drawing the surface
#define MATERIALFLAG_NODRAW 512
// probably used only on q1bsp water
#define MATERIALFLAG_REFRACTION 524288
// render reflection
#define MATERIALFLAG_REFLECTION 1048576
-// render water, comprising refraction and reflection (note: this is always opaque, the shader does the alpha effect)
-#define MATERIALFLAG_SORTTRANSPARENT 2097152
+// use model lighting on this material (q1bsp lightmap sampling or q3bsp lightgrid, implies FULLBRIGHT is false)
+#define MATERIALFLAG_MODELLIGHT 4194304
+// add directional model lighting to this material (q3bsp lightgrid only)
+#define MATERIALFLAG_MODELLIGHT_DIRECTIONAL 8388608
// combined mask of all attributes that require depth sorted rendering
-#define MATERIALFLAGMASK_DEPTHSORTED (MATERIALFLAG_SORTTRANSPARENT | MATERIALFLAG_BLENDED | MATERIALFLAG_NODEPTHTEST)
+#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
{
//Q3 bsp stuff
#define Q3BSPVERSION 46
+#define Q3BSPVERSION_LIVE 47
+#define Q3BSPVERSION_IG 48
#define Q3LUMP_ENTITIES 0 // entities to spawn (used by server and client)
#define Q3LUMP_TEXTURES 1 // textures used (used by faces)
#define Q3LUMP_LIGHTGRID 15 // lighting as a voxel grid (used by rendering)
#define Q3LUMP_PVS 16 // potentially visible set; bit[clusters][clusters] (used by rendering)
#define Q3HEADER_LUMPS 17
+#define Q3LUMP_ADVERTISEMENTS 17 // quake live stuff written by zeroradiant's q3map2 (ignored by DP)
+#define Q3HEADER_LUMPS_LIVE 18
+#define Q3HEADER_LUMPS_MAX 18
typedef struct q3dheader_s
{
int ident;
int version;
- lump_t lumps[Q3HEADER_LUMPS];
+ lump_t lumps[Q3HEADER_LUMPS_MAX];
} q3dheader_t;
typedef struct q3dtexture_s
}
q3dbrushside_t;
+typedef struct q3dbrushside_ig_s
+{
+ int planeindex;
+ int textureindex;
+ int surfaceflags;
+}
+q3dbrushside_ig_t;
+
typedef struct q3dvertex_s
{
float origin3f[3];
}
q3deffect_t;
-#define Q3FACETYPE_POLYGON 1 // common
+#define Q3FACETYPE_FLAT 1 // common
#define Q3FACETYPE_PATCH 2 // common
#define Q3FACETYPE_MESH 3 // common
#define Q3FACETYPE_FLARE 4 // rare (is this ever used?)
unknown;
struct
{
- // Q3FACETYPE_POLYGON
- // polygon is simply a convex polygon, renderable as a mesh
+ // Q3FACETYPE_FLAT
+ // mesh is a collection of triangles on a plane, renderable as a mesh (NOT a polygon)
float lightmap_origin[3];
float lightmap_vectors[2][3];
float normal[3];
int unused1[2];
}
- polygon;
+ flat;
struct
{
// Q3FACETYPE_PATCH
#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