]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - model_brush.h
reworked transparent sorting of MATERIALFLAG_BLENDED to not sort water
[xonotic/darkplaces.git] / model_brush.h
index 40b5e53c9f3d8fb22de91d4a512a1466752423db..20dd05b2c315a31ff5fa7b281514624608e5ee49 100644 (file)
@@ -29,7 +29,6 @@ BRUSH MODELS
 ==============================================================================
 */
 
-#define Q3PATHLENGTH 64
 
 
 //
@@ -63,8 +62,6 @@ mplane_t;
 
 //#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
@@ -93,6 +90,26 @@ mplane_t;
 #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
+// render water, comprising refraction and reflection (note: this is always opaque, the shader does the alpha effect)
+#define MATERIALFLAG_WATERSHADER 262144
+// render refraction (note: this is just a way to distort the background, otherwise useless)
+#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
 
 typedef struct medge_s
 {
@@ -113,6 +130,8 @@ typedef struct mnode_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];
@@ -132,11 +151,14 @@ typedef struct mleaf_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 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
@@ -147,9 +169,15 @@ typedef struct mleaf_s
 }
 mleaf_t;
 
+typedef struct mclipnode_s
+{
+       int                     planenum;
+       int                     children[2];    // negative numbers are contents
+} mclipnode_t;
+
 typedef struct hull_s
 {
-       dclipnode_t *clipnodes;
+       mclipnode_t *clipnodes;
        mplane_t *planes;
        int firstclipnode;
        int lastclipnode;
@@ -630,13 +658,11 @@ q3dpvs_t;
 #define Q3SURFACEPARM_TRANS 16777216
 #define Q3SURFACEPARM_WATER 33554432
 #define Q3SURFACEPARM_POINTLIGHT 67108864
-
-// various flags from shaders, used for special effects not otherwise classified
-#define Q3TEXTUREFLAG_TWOSIDED 1
-#define Q3TEXTUREFLAG_AUTOSPRITE 2
-#define Q3TEXTUREFLAG_AUTOSPRITE2 4
-#define Q3TEXTUREFLAG_ALPHATEST 8
-#define Q3TEXTUREFLAG_NOPICMIP 16
+#define Q3SURFACEPARM_HINT 134217728
+#define Q3SURFACEPARM_DUST 268435456
+#define Q3SURFACEPARM_BOTCLIP 536870912
+#define Q3SURFACEPARM_LIGHTGRID 1073741824
+#define Q3SURFACEPARM_ANTIPORTAL 2147483648u
 
 typedef struct q3mbrush_s
 {