X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fdarkplaces.git;a=blobdiff_plain;f=model_brush.h;h=1bf8be8d355cdc1a5a79503e132c40e86b416263;hp=fe3adef4ec14a54e88c6f87ea97b1bb8ed047e84;hb=9f3549cd70f8ba966afc2fdf9da239ca2a444b2e;hpb=b8f115ebdfbd188caf85378e66e16ea15ac638aa diff --git a/model_brush.h b/model_brush.h index fe3adef4..1bf8be8d 100644 --- a/model_brush.h +++ b/model_brush.h @@ -61,64 +61,31 @@ mplane_t; #define SHADERSTAGE_NORMAL 1 #define SHADERSTAGE_COUNT 2 -#define SURF_PLANEBACK 2 -#define SURF_DRAWSKY 4 -#define SURF_DRAWTURB 0x10 -#define SURF_LIGHTMAP 0x20 -#define SURF_DRAWNOALPHA 0x100 -#define SURF_DRAWFULLBRIGHT 0x200 -#define SURF_LIGHTBOTHSIDES 0x400 -#define SURF_WATERALPHA 0x4000 // this polygon's alpha is modulated by r_wateralpha -#define SURF_SOLIDCLIP 0x8000 // this polygon blocks movement - -#define SURFRENDER_OPAQUE 0 -#define SURFRENDER_ALPHA 1 -#define SURFRENDER_ADD 2 - -struct entity_render_s; -struct texture_s; -struct msurface_s; - -typedef struct texture_s -{ - // q1bsp - // name - //char name[16]; - // size - unsigned int width, height; - // SURF_ flags - unsigned int flags; - - // type of rendering (SURFRENDER_ value) - int rendertype; - - // loaded the same as model skins - skinframe_t skin; - - // total frames in sequence and alternate sequence - int anim_total[2]; - // direct pointers to each of the frames in the sequences - // (indexed as [alternate][frame]) - struct texture_s *anim_frames[2][10]; - // set if animated or there is an alternate frame set - // (this is an optimization in the renderer) - int animated; - // the current texture frame in animation - struct texture_s *currentframe; - // current alpha of the texture - float currentalpha; - - // q3bsp - char name[Q3PATHLENGTH]; - char firstpasstexturename[Q3PATHLENGTH]; // used only during loading - int surfaceflags; - int supercontents; - int surfaceparms; - int textureflags; - - //skinframe_t skin; -} -texture_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 +#define MATERIALFLAG_ADD 4 +// turn off depth test on this material +#define MATERIALFLAG_NODEPTHTEST 8 +// multiply alpha by r_wateralpha cvar +#define MATERIALFLAG_WATERALPHA 16 +// draw with no lighting +#define MATERIALFLAG_FULLBRIGHT 32 +// drawn as a normal lightmapped wall +#define MATERIALFLAG_WALL 64 +// swirling water effect +#define MATERIALFLAG_WATER 128 +// this surface shows the sky +// skipped if transparent +#define MATERIALFLAG_SKY 256 +// skips drawing the surface +#define MATERIALFLAG_NODRAW 512 +// probably used only on q1bsp water +#define MATERIALFLAG_LIGHTBOTHSIDES 1024 typedef struct { @@ -126,58 +93,9 @@ typedef struct } medge_t; -typedef struct -{ - float vecs[2][4]; - texture_t *texture; - int flags; -} -mtexinfo_t; - -struct q3meffect_s; -typedef struct msurface_s -{ - // bounding box for onscreen checks - vec3_t mins; - vec3_t maxs; - // the texture to use on the surface - texture_t *texture; - // the lightmap texture fragment to use on the rendering mesh - rtexture_t *lightmaptexture; - // mesh for rendering - surfmesh_t mesh; - // index into model->brush.shadowmesh - int num_firstshadowmeshtriangle; - - // the node plane this is on, backwards if SURF_PLANEBACK flag set - mplane_t *plane; // q1bsp - // SURF_ flags - int flags; // q1bsp - // texture mapping properties used by this surface - mtexinfo_t *texinfo; // q1bsp - // if lightmap settings changed, this forces update - int cached_dlight; // q1bsp - // index into d_lightstylevalue array, 255 means not used (black) - qbyte styles[MAXLIGHTMAPS]; // q1bsp - // RGB lighting data [numstyles][height][width][3] - qbyte *samples; // q1bsp - // stain to apply on lightmap (soot/dirt/blood/whatever) - qbyte *stainsamples; // q1bsp - // the stride when building lightmaps to comply with fragment update - int lightmaptexturestride; // q1bsp - int texturemins[2]; // q1bsp - int extents[2]; // q1bsp - // if this == r_framecount there are dynamic lights on the surface - int dlightframe; // q1bsp - // which dynamic lights are touching this surface - // (only access this if dlightframe is current) - int dlightbits[8]; // q1bsp - - struct q3meffect_s *effect; // q3bsp - // FIXME: collisionmarkframe should be kept in a separate array - int collisionmarkframe; // q3bsp // don't collide twice in one trace -} -msurface_t; +struct entity_render_s; +struct texture_s; +struct msurface_s; typedef struct mnode_s { @@ -293,9 +211,6 @@ typedef struct mlight_s } mlight_t; -extern rtexture_t *r_notexture; -extern texture_t r_notexture_mip; - struct model_s; void Mod_Q1BSP_Load(struct model_s *mod, void *buffer); void Mod_IBSP_Load(struct model_s *mod, void *buffer); @@ -593,7 +508,7 @@ typedef struct } q3dmeshvertex_t; -typedef struct +typedef struct q3deffect_s { char shadername[Q3PATHLENGTH]; int brushindex; @@ -777,14 +692,6 @@ typedef struct q3mbrushside_s } q3mbrushside_t; -typedef struct q3meffect_s -{ - char shadername[Q3PATHLENGTH]; - struct q3mbrush_s *brush; - int unknown; // 5 or -1 -} -q3meffect_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)