// LordHavoc: 256 dynamic lights
#define MAX_DLIGHTS 256
-// this is the maximum number of input packets that can be predicted
-#define CL_MAX_USERCMDS 256
+/// this is the maximum number of input packets that can be predicted
+#define CL_MAX_USERCMDS 128
// flags for rtlight rendering
#define LIGHTFLAG_NORMALMODE 1
// note that the world to light matrices are inversely scaled (divided) by lightradius
// core properties
- // matrix for transforming light filter coordinates to world coordinates
+ /// matrix for transforming light filter coordinates to world coordinates
matrix4x4_t matrix_lighttoworld;
- // matrix for transforming world coordinates to light filter coordinates
+ /// matrix for transforming world coordinates to light filter coordinates
matrix4x4_t matrix_worldtolight;
- // typically 1 1 1, can be lower (dim) or higher (overbright)
+ /// typically 1 1 1, can be lower (dim) or higher (overbright)
vec3_t color;
- // size of the light (remove?)
+ /// size of the light (remove?)
vec_t radius;
- // light filter
+ /// light filter
char cubemapname[64];
- // light style to monitor for brightness
+ /// light style to monitor for brightness
int style;
- // whether light should render shadows
+ /// whether light should render shadows
int shadow;
- // intensity of corona to render
+ /// intensity of corona to render
vec_t corona;
- // radius scale of corona to render (1.0 means same as light radius)
+ /// radius scale of corona to render (1.0 means same as light radius)
vec_t coronasizescale;
- // ambient intensity to render
+ /// ambient intensity to render
vec_t ambientscale;
- // diffuse intensity to render
+ /// diffuse intensity to render
vec_t diffusescale;
- // specular intensity to render
+ /// specular intensity to render
vec_t specularscale;
- // LIGHTFLAG_* flags
+ /// LIGHTFLAG_* flags
int flags;
// generated properties
- // used only for shadow volumes
+ /// used only for shadow volumes
vec3_t shadoworigin;
- // culling
+ /// culling
vec3_t cullmins;
vec3_t cullmaxs;
// culling
// rendering properties, updated each time a light is rendered
// this is rtlight->color * d_lightstylevalue
vec3_t currentcolor;
- // used by corona updates, due to occlusion query
+ /// used by corona updates, due to occlusion query
float corona_visibility;
unsigned int corona_queryindex_visiblepixels;
unsigned int corona_queryindex_allpixels;
- // this is R_Shadow_Cubemap(rtlight->cubemapname)
+ /// this is R_Shadow_Cubemap(rtlight->cubemapname)
rtexture_t *currentcubemap;
- // static light info
- // true if this light should be compiled as a static light
+ /// static light info
+ /// true if this light should be compiled as a static light
int isstatic;
- // true if this is a compiled world light, cleared if the light changes
+ /// true if this is a compiled world light, cleared if the light changes
int compiled;
- // premade shadow volumes to render for world entity
+ /// the shadowing mode used to compile this light
+ int shadowmode;
+ /// premade shadow volumes to render for world entity
shadowmesh_t *static_meshchain_shadow_zpass;
shadowmesh_t *static_meshchain_shadow_zfail;
- // used for visibility testing (more exact than bbox)
+ shadowmesh_t *static_meshchain_shadow_shadowmap;
+ /// used for visibility testing (more exact than bbox)
int static_numleafs;
int static_numleafpvsbytes;
int *static_leaflist;
unsigned char *static_leafpvs;
- // surfaces seen by light
+ /// surfaces seen by light
int static_numsurfaces;
int *static_surfacelist;
- // flag bits indicating which triangles of the world model should cast
- // shadows, and which ones should be lit
- //
- // this avoids redundantly scanning the triangles in each surface twice
- // for whether they should cast shadows, once in culling and once in the
- // actual shadowmarklist production.
+ /// flag bits indicating which triangles of the world model should cast
+ /// shadows, and which ones should be lit
+ ///
+ /// this avoids redundantly scanning the triangles in each surface twice
+ /// for whether they should cast shadows, once in culling and once in the
+ /// actual shadowmarklist production.
int static_numshadowtrispvsbytes;
unsigned char *static_shadowtrispvs;
- // this allows the lighting batch code to skip backfaces andother culled
- // triangles not relevant for lighting
- // (important on big surfaces such as terrain)
+ /// this allows the lighting batch code to skip backfaces andother culled
+ /// triangles not relevant for lighting
+ /// (important on big surfaces such as terrain)
int static_numlighttrispvsbytes;
unsigned char *static_lighttrispvs;
+ /// masks of all shadowmap sides that have any potential static receivers or casters
+ int static_shadowmap_receivers;
+ int static_shadowmap_casters;
}
rtlight_t;
float alpha;
// size the model is shown
float scale;
+ // transparent sorting offset
+ float transparent_offset;
// NULL = no model
dp_model_t *model;
// colormod tinting of models
float colormod[3];
+ float glowmod[3];
// interpolated animation - active framegroups and blend factors
framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS];
// subframe numbers (-1 if not used) and their blending scalers (0-1), if interpolation is not desired, use subframeblend[0].subframe
frameblend_t frameblend[MAX_FRAMEBLENDS];
+ // animation cache index
+ int animcacheindex;
+
// current lighting from map (updated ONLY by client code, not renderer)
vec3_t modellight_ambient;
vec3_t modellight_diffuse; // q3bsp
qfile_t *videofile;
// always use this:
// cls.capturevideo.videofile = FS_OpenRealFile(va("%s.%s", cls.capturevideo.basename, cls.capturevideo.formatextension), "wb", false);
- void (*endvideo) ();
+ void (*endvideo) (void);
void (*videoframes) (int num);
void (*soundframe) (const portable_sampleframe_t *paintbuffer, size_t length);
// (kept outside client_state_t because it's used between levels)
protocolversion_t protocol;
+#define MAX_RCONS 16
+ int rcon_trying;
+ lhnetaddress_t rcon_addresses[MAX_RCONS];
+ char rcon_commands[MAX_RCONS][MAX_INPUTLINE];
+ double rcon_timeout[MAX_RCONS];
+ int rcon_ringpos;
+
// connection information
// 0 to SIGNONS
int signon;
PARTICLE_BILLBOARD = 0,
PARTICLE_SPARK = 1,
PARTICLE_ORIENTED_DOUBLESIDED = 2,
- PARTICLE_BEAM = 3,
+ PARTICLE_VBEAM = 3,
+ PARTICLE_HBEAM = 4,
PARTICLE_INVALID = -1
}
porientation_t;
// how long it has been since the previous client frame in real time
// (not game time, for that use cl.time - cl.oldtime)
double realframetime;
+
+ // fade var for fading while dead
+ float deathfade;
+
+ // motionblur alpha level variable
+ float motionbluralpha;
// copy of realtime from last recieved message, for net trouble icon
float last_received_message;
double lastpackettime;
// movement parameters for client prediction
+ unsigned int moveflags;
float movevars_wallfriction;
float movevars_waterfriction;
float movevars_friction;
float movevars_warsowbunny_topspeed;
float movevars_warsowbunny_turnaccel;
float movevars_warsowbunny_backtosideratio;
+ float movevars_ticrate;
// models used by qw protocol
int qw_modelindex_spike;
void CL_Particles_Clear(void);
void CL_Particles_Init(void);
void CL_Particles_Shutdown(void);
+particle_t *CL_NewParticle(unsigned short ptypeindex, int pcolor1, int pcolor2, int ptex, float psize, float psizeincrease, float palpha, float palphafade, float pgravity, float pbounce, float px, float py, float pz, float pvx, float pvy, float pvz, float pairfriction, float pliquidfriction, float originjitter, float velocityjitter, qboolean pqualityreduction, float lifetime, float stretch, pblend_t blendmode, porientation_t orientation, int staincolor1, int staincolor2, int staintex);
typedef enum effectnameindex_s
{
}
r_refdef_stats_t;
+typedef enum r_viewport_type_e
+{
+ R_VIEWPORTTYPE_ORTHO,
+ R_VIEWPORTTYPE_PERSPECTIVE,
+ R_VIEWPORTTYPE_PERSPECTIVE_INFINITEFARCLIP,
+ R_VIEWPORTTYPE_PERSPECTIVECUBESIDE,
+ R_VIEWPORTTYPE_TOTAL
+}
+r_viewport_type_t;
+
+typedef struct r_viewport_s
+{
+ double m[16];
+ matrix4x4_t cameramatrix; // from entity (transforms from camera entity to world)
+ matrix4x4_t viewmatrix; // actual matrix for rendering (transforms to viewspace)
+ matrix4x4_t projectmatrix; // actual projection matrix (transforms from viewspace to screen)
+ int x;
+ int y;
+ int z;
+ int width;
+ int height;
+ int depth;
+ r_viewport_type_t type;
+}
+r_viewport_t;
+
typedef struct r_refdef_view_s
{
// view information (changes multiple times per frame)
int width;
int height;
int depth;
+ r_viewport_t viewport;
// which color components to allow (for anaglyph glasses)
int colormask[4];