X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=model_brush.h;h=d3865d587cf83931de41541b7f1c449a45e8015c;hb=0be88e0d9213eba81574227fef8bc5bbce7d9732;hp=609793c4201eca2c9ed732e835af19e11f11fdda;hpb=605b22f83aeabb5aa490df3f6714ca468146dd7e;p=xonotic%2Fdarkplaces.git diff --git a/model_brush.h b/model_brush.h index 609793c4..d3865d58 100644 --- a/model_brush.h +++ b/model_brush.h @@ -59,8 +59,6 @@ mplane_t; #define SHADERSTAGE_NORMAL 1 #define SHADERSTAGE_COUNT 2 -#define SHADERFLAGS_NEEDLIGHTMAP 1 - #define SURF_PLANEBACK 2 #define SURF_DRAWSKY 4 #define SURF_DRAWTURB 0x10 @@ -68,8 +66,6 @@ mplane_t; #define SURF_DRAWNOALPHA 0x100 #define SURF_DRAWFULLBRIGHT 0x200 #define SURF_LIGHTBOTHSIDES 0x400 -#define SURF_SHADOWCAST 0x1000 // this polygon can cast stencil shadows -#define SURF_SHADOWLIGHT 0x2000 // this polygon can be lit by stencil shadowing #define SURF_WATERALPHA 0x4000 // this polygon's alpha is modulated by r_wateralpha #define SURF_SOLIDCLIP 0x8000 // this polygon blocks movement @@ -80,17 +76,6 @@ mplane_t; struct entity_render_s; struct texture_s; struct msurface_s; -// change this stuff when real shaders are added -typedef struct Cshader_s -{ - void (*shaderfunc[SHADERSTAGE_COUNT])(const struct entity_render_s *ent, const struct texture_s *texture, struct msurface_s **surfchain); - int flags; -} -Cshader_t; - -extern Cshader_t Cshader_wall_lightmap; -extern Cshader_t Cshader_water; -extern Cshader_t Cshader_sky; typedef struct texture_s { @@ -110,9 +95,6 @@ typedef struct texture_s // loaded the same as model skins skinframe_t skin; - // shader to use for this texture - Cshader_t *shader; - // total frames in sequence and alternate sequence int anim_total[2]; // direct pointers to each of the frames in the sequences @@ -220,10 +202,16 @@ typedef struct msurface_s int poly_numverts; float *poly_verts; + // index into model->brush.shadowmesh + int num_firstshadowmeshtriangle; + // neighboring surfaces (one per poly_numverts) //struct msurface_s **neighborsurfaces; // currently used only for generating static shadow volumes - int castshadow; + int lighttemp_castshadow; + + // avoid redundent surface shadows + int shadowmark; } msurface_t; @@ -240,8 +228,8 @@ typedef struct mnode_s vec3_t mins; vec3_t maxs; + mplane_t *plane; // != NULL // node specific - mplane_t *plane; struct mnode_s *children[2]; unsigned short firstsurface; @@ -262,6 +250,7 @@ typedef struct mleaf_s vec3_t mins; vec3_t maxs; + mplane_t *plane; // == NULL // leaf specific // next leaf in pvschain struct mleaf_s *pvschain; @@ -274,9 +263,8 @@ typedef struct mleaf_s // used by polygon-through-portals visibility checker int portalmarkid; - // decompressed pvs bits (potentially visible set) - // note: never NULL, always present, may be full of 0xFF though - qbyte *pvsdata; + // -1 is not in pvs, >= 0 is pvs bit number + int clusterindex; int *firstmarksurface; int nummarksurfaces; @@ -766,5 +754,8 @@ typedef struct } q3dpvs_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) + #endif