]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
r_font_hinting cvar makes more sense: 0 no hinting, 1 force autohinting, 2 fullhintin...
[xonotic/darkplaces.git] / client.h
index ceb699a5c598d39e270a124e7d82f3654b580250..38cf7b84117a21f5fb84fa045627023f4930329c 100644 (file)
--- a/client.h
+++ b/client.h
@@ -143,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
@@ -336,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;
@@ -449,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];
@@ -1490,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)
@@ -1501,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;