X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=client.h;h=af4134347343ac1a33145f132ab8c4ca4fd4758e;hb=55e7612699b19253bb0dff70074e09dae5acdbb5;hp=8a8e192c9f70ee5108a4eacb962e1481c849c452;hpb=728e717bdc878f4ef2fb4311619b232949fb16aa;p=xonotic%2Fdarkplaces.git diff --git a/client.h b/client.h index 8a8e192c..af413434 100644 --- a/client.h +++ b/client.h @@ -34,7 +34,8 @@ typedef struct tridecal_s // color and initial alpha value float texcoord2f[3][2]; float vertex3f[3][3]; - unsigned char color4ub[3][4]; + float color4f[3][4]; + float plane[4]; // backface culling // how long this decal has lived so far (the actual fade begins at cl_decals_time) float lived; // if >= 0 this indicates the decal should follow an animated triangle @@ -89,6 +90,13 @@ typedef struct beam_s } beam_t; +typedef struct rtlight_particle_s +{ + float origin[3]; + float color[3]; +} +rtlight_particle_t; + typedef struct rtlight_s { // shadow volumes are done entirely in model space, so there are no matrices for dealing with them... they just use the origin @@ -202,6 +210,11 @@ typedef struct rtlight_s /// masks of all shadowmap sides that have any potential static receivers or casters int static_shadowmap_receivers; int static_shadowmap_casters; + /// particle-tracing cache for global illumination + int particlecache_numparticles; + int particlecache_maxparticles; + int particlecache_updateparticle; + rtlight_particle_t *particlecache_particles; } rtlight_t; @@ -369,8 +382,7 @@ typedef struct entity_render_s float *animcache_svector3f; float *animcache_tvector3f; // interleaved arrays for rendering and dynamic vertex buffers for them - r_vertexposition_t *animcache_vertexposition; - r_meshbuffer_t *animcache_vertexpositionbuffer; + r_meshbuffer_t *animcache_vertex3fbuffer; r_vertexmesh_t *animcache_vertexmesh; r_meshbuffer_t *animcache_vertexmeshbuffer; @@ -387,6 +399,9 @@ typedef struct entity_render_s // FIELDS UPDATED BY RENDERER: // last time visible during trace culling double last_trace_visibility; + + // user wavefunc parameters (from csqc) + float userwavefunc_param[Q3WAVEFUNC_USER_COUNT]; } entity_render_t; @@ -534,7 +549,7 @@ qw_downloadtype_t; typedef enum capturevideoformat_e { CAPTUREVIDEOFORMAT_AVI_I420, - CAPTUREVIDEOFORMAT_OGG_VORBIS_THEORA, + CAPTUREVIDEOFORMAT_OGG_VORBIS_THEORA } capturevideoformat_t; @@ -707,8 +722,19 @@ typedef struct client_static_s // password spectator name team skin topcolor bottomcolor rate noaim msg *ver *ip char userinfo[MAX_USERINFO_STRING]; + // extra user info for the "connect" command + char connect_userinfo[MAX_USERINFO_STRING]; + // video capture stuff capturevideostate_t capturevideo; + + // crypto channel + crypto_t crypto; + + // ProQuake compatibility stuff + int proquake_servermod; // 0 = not proquake, 1 = proquake + int proquake_serverversion; // actual proquake server version * 10 (3.40 = 34, etc) + int proquake_serverflags; // 0 (PQF_CHEATFREE not supported) } client_static_t; @@ -974,6 +1000,9 @@ typedef struct client_state_s qboolean oldonground; double lastongroundtime; double hitgroundtime; + float bob2_smooth; + float bobfall_speed; + float bobfall_swing; // don't change view angle, full screen, etc int intermission; @@ -1194,12 +1223,14 @@ typedef struct client_state_s float movevars_airstrafeaccel_qw; float movevars_aircontrol; float movevars_aircontrol_power; + float movevars_aircontrol_penalty; float movevars_warsowbunny_airforwardaccel; float movevars_warsowbunny_accel; float movevars_warsowbunny_topspeed; float movevars_warsowbunny_turnaccel; float movevars_warsowbunny_backtosideratio; float movevars_ticrate; + float movevars_airspeedlimit_nonqw; // models used by qw protocol int qw_modelindex_spike; @@ -1326,7 +1357,7 @@ void CL_Locs_FindLocationName(char *buffer, size_t buffersize, vec3_t point); void CL_Shutdown (void); void CL_Init (void); -void CL_EstablishConnection(const char *host); +void CL_EstablishConnection(const char *host, int firstarg); void CL_Disconnect (void); void CL_Disconnect_f (void); @@ -1534,14 +1565,24 @@ typedef struct r_refdef_stats_s int particles; int drawndecals; int totaldecals; - int meshes; - int meshes_elements; + int draws; + int draws_vertices; + int draws_elements; int lights; int lights_clears; int lights_scissored; int lights_lighttriangles; int lights_shadowtriangles; int lights_dynamicshadowtriangles; + int bouncegrid_lights; + int bouncegrid_particles; + int bouncegrid_traces; + int bouncegrid_hits; + int bouncegrid_splats; + int bouncegrid_bounces; + int collisioncache_animated; + int collisioncache_cached; + int collisioncache_traced; int bloom; int bloom_copypixels; int bloom_drawpixels; @@ -1549,6 +1590,8 @@ typedef struct r_refdef_stats_s int indexbufferuploadsize; int vertexbufferuploadcount; int vertexbufferuploadsize; + int framedatacurrent; + int framedatasize; } r_refdef_stats_t; @@ -1614,7 +1657,7 @@ typedef struct r_refdef_view_s int width; int height; int depth; - r_viewport_t viewport; + r_viewport_t viewport; // note: if r_viewscale is used, the viewport.width and viewport.height may be less than width and height // which color components to allow (for anaglyph glasses) int colormask[4]; @@ -1690,6 +1733,7 @@ typedef struct r_refdef_scene_s { entity_render_t *tempentities; int numtempentities; int maxtempentities; + qboolean expandtempentities; // renderable dynamic lights rtlight_t *lights[MAX_DLIGHTS]; @@ -1767,7 +1811,7 @@ typedef struct r_refdef_s float fog_height_texcoordscale; char fogheighttexturename[64]; // detects changes to active fog height texture - qboolean draw2dstage; + int draw2dstage; // 0 = no, 1 = yes, other value = needs setting up again // true during envmap command capture qboolean envmap; @@ -1781,6 +1825,9 @@ typedef struct r_refdef_s float shadowpolygonfactor; float shadowpolygonoffset; + // how long R_RenderView took on the previous frame + double lastdrawscreentime; + // rendering stats for r_speeds display // (these are incremented in many places) r_refdef_stats_t stats;