]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - client.h
improved shadowmap side culling
[xonotic/darkplaces.git] / client.h
index 38b6f2682c5a1953ffbe846413b0dd9518b7a810..d9fb6ab51362ec9b36cf0939c943735baccd88d7 100644 (file)
--- a/client.h
+++ b/client.h
@@ -122,9 +122,12 @@ typedef struct rtlight_s
        int isstatic;
        /// true if this is a compiled world light, cleared if the light changes
        int compiled;
        int isstatic;
        /// true if this is a compiled world light, cleared if the light changes
        int compiled;
+       /// 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;
        /// premade shadow volumes to render for world entity
        shadowmesh_t *static_meshchain_shadow_zpass;
        shadowmesh_t *static_meshchain_shadow_zfail;
+       shadowmesh_t *static_meshchain_shadow_shadowmap;
        /// used for visibility testing (more exact than bbox)
        int static_numleafs;
        int static_numleafpvsbytes;
        /// used for visibility testing (more exact than bbox)
        int static_numleafs;
        int static_numleafpvsbytes;
@@ -146,6 +149,9 @@ typedef struct rtlight_s
        /// (important on big surfaces such as terrain)
        int static_numlighttrispvsbytes;
        unsigned char *static_lighttrispvs;
        /// (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;
 
 }
 rtlight_t;
 
@@ -268,6 +274,8 @@ typedef struct entity_render_s
        float alpha;
        // size the model is shown
        float scale;
        float alpha;
        // size the model is shown
        float scale;
+       // transparent sorting offset
+       float transparent_offset;
 
        // NULL = no model
        dp_model_t *model;
 
        // NULL = no model
        dp_model_t *model;
@@ -287,6 +295,7 @@ typedef struct entity_render_s
 
        // colormod tinting of models
        float colormod[3];
 
        // colormod tinting of models
        float colormod[3];
+       float glowmod[3];
 
        // interpolated animation - active framegroups and blend factors
        framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS];
 
        // interpolated animation - active framegroups and blend factors
        framegroupblend_t framegroupblend[MAX_FRAMEGROUPBLENDS];
@@ -1337,6 +1346,7 @@ extern cvar_t cl_decals_fadetime;
 void CL_Particles_Clear(void);
 void CL_Particles_Init(void);
 void CL_Particles_Shutdown(void);
 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
 {
 
 typedef enum effectnameindex_s
 {