X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=client.h;h=38cf7b84117a21f5fb84fa045627023f4930329c;hb=eb4ba64882865ed0e70d3204e80c8f33cb1bc260;hp=9425321450fa02048f5cb003c5463c8a02e7ebf2;hpb=1fb7242bcaf4ab9f47253b8c41288a4a39b12ba1;p=xonotic%2Fdarkplaces.git diff --git a/client.h b/client.h index 94253214..38cf7b84 100644 --- a/client.h +++ b/client.h @@ -32,11 +32,17 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. typedef struct tridecal_s { // color and initial alpha value - unsigned char colors[3][4]; + float texcoord2f[3][2]; + float vertex3f[3][3]; + unsigned char color4ub[3][4]; // 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 int triangleindex; + // for visibility culling + int surfaceindex; + // old decals are killed to obey cl_decals_max + int decalsequence; } tridecal_t; @@ -137,6 +143,29 @@ typedef struct rtlight_s unsigned int corona_queryindex_allpixels; /// this is R_Shadow_Cubemap(rtlight->cubemapname) rtexture_t *currentcubemap; + /// set by R_Shadow_PrepareLight to decide whether R_Shadow_DrawLight should draw it + qboolean draw; + /// these fields are set by R_Shadow_PrepareLight for later drawing + int cached_numlightentities; + int cached_numlightentities_noselfshadow; + int cached_numshadowentities; + int cached_numshadowentities_noselfshadow; + int cached_numsurfaces; + struct entity_render_s **cached_lightentities; + struct entity_render_s **cached_lightentities_noselfshadow; + struct entity_render_s **cached_shadowentities; + struct entity_render_s **cached_shadowentities_noselfshadow; + unsigned char *cached_shadowtrispvs; + unsigned char *cached_lighttrispvs; + int *cached_surfacelist; + // reduced light cullbox from GetLightInfo + vec3_t cached_cullmins; + vec3_t cached_cullmaxs; + // current shadow-caster culling planes based on view + // (any geometry outside these planes can not contribute to the visible + // shadows in any way, and thus can be culled safely) + int cached_numfrustumplanes; + mplane_t cached_frustumplanes[5]; // see R_Shadow_ComputeShadowCasterCullingPlanes /// static light info /// true if this light should be compiled as a static light @@ -330,9 +359,15 @@ typedef struct entity_render_s vec3_t mins, maxs; // 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]; + // skeletal animation data (if skeleton.relativetransforms is not NULL, it overrides frameblend) + skeleton_t *skeleton; - // animation cache index - int animcacheindex; + // animation cache (pointers allocated using R_FrameData_Alloc) + // ONLY valid during R_RenderView! may be NULL (not cached) + float *animcache_vertex3f; + float *animcache_normal3f; + float *animcache_svector3f; + float *animcache_tvector3f; // current lighting from map (updated ONLY by client code, not renderer) vec3_t modellight_ambient; @@ -443,6 +478,7 @@ typedef struct scoreboard_s float qw_entertime; int qw_ping; int qw_packetloss; + int qw_movementloss; int qw_spectator; char qw_team[8]; char qw_skin[MAX_QPATH]; @@ -733,6 +769,7 @@ typedef struct decal_s // fields used by rendering: (44 bytes) unsigned short typeindex; unsigned short texnum; + int decalsequence; vec3_t org; vec3_t normal; float size; @@ -1022,7 +1059,11 @@ typedef struct client_state_s vec3_t playercrouchmins; vec3_t playercrouchmaxs; + // old decals are killed based on this + int decalsequence; + int max_entities; + int max_csqcrenderentities; int max_static_entities; int max_effects; int max_beams; @@ -1034,6 +1075,7 @@ typedef struct client_state_s int max_showlmps; entity_t *entities; + entity_render_t *csqcrenderentities; unsigned char *entities_active; entity_t *static_entities; cl_effect_t *effects; @@ -1289,6 +1331,7 @@ void CL_Effect(vec3_t org, int modelindex, int startframe, int framecount, float void CL_ClearState (void); void CL_ExpandEntities(int num); +void CL_ExpandCSQCRenderEntities(int num); void CL_SetInfo(const char *key, const char *value, qboolean send, qboolean allowstarkey, qboolean allowmodel, qboolean quiet); @@ -1449,7 +1492,8 @@ typedef struct r_refdef_stats_s int lightmapupdates; int lightmapupdatepixels; int particles; - int decals; + int drawndecals; + int totaldecals; int meshes; int meshes_elements; int lights; @@ -1476,7 +1520,7 @@ r_viewport_type_t; typedef struct r_viewport_s { - double m[16]; + float 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) @@ -1487,6 +1531,7 @@ typedef struct r_viewport_s int height; int depth; r_viewport_type_t type; + float screentodepth[2]; // used by deferred renderer to calculate linear depth from device depth coordinates } r_viewport_t; @@ -1555,10 +1600,10 @@ r_refdef_view_t; typedef struct r_refdef_viewcache_s { -#ifdef VIEWCACHEDYNAMIC // updated by gl_main_newmap() int maxentities; int world_numclusters; + int world_numclusterbytes; int world_numleafs; int world_numsurfaces; @@ -1575,13 +1620,6 @@ typedef struct r_refdef_viewcache_s unsigned char *world_surfacevisible; // if true, the view is currently in a leaf without pvs data qboolean world_novis; -#else - unsigned char entityvisible[MAX_EDICTS+512+256]; - unsigned char world_pvsbits[8192]; - unsigned char world_leafvisible[65536]; - unsigned char world_surfacevisible[262144]; - qboolean world_novis; -#endif } r_refdef_viewcache_t;