]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - csprogs.c
use larger batches for shadowmaps
[xonotic/darkplaces.git] / csprogs.c
index 18d5c642a242da18e4b4c0473b278539e2e29be5..75e7f106918eb59aeeadd92057756d1350ad8839 100644 (file)
--- a/csprogs.c
+++ b/csprogs.c
@@ -153,6 +153,7 @@ void CSQC_Think (prvm_edict_t *ed)
 }
 
 extern cvar_t cl_noplayershadow;
+extern cvar_t r_equalize_entities_fullbright;
 qboolean CSQC_AddRenderEdict(prvm_edict_t *ed)
 {
        int renderflags;
@@ -250,11 +251,11 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed)
 
        if(renderflags)
        {
-               if(renderflags & RF_VIEWMODEL)  entrender->flags |= RENDER_VIEWMODEL;
+               if(renderflags & RF_VIEWMODEL)  entrender->flags |= RENDER_VIEWMODEL | RENDER_NODEPTHTEST;
                if(renderflags & RF_EXTERNALMODEL)entrender->flags |= RENDER_EXTERIORMODEL;
                if(renderflags & RF_NOCULL)             entrender->flags |= RENDER_NOCULL;
-               if(renderflags & RF_DEPTHHACK)  entrender->effects |= EF_NODEPTHTEST;
-               if(renderflags & RF_ADDITIVE)           entrender->effects |= EF_ADDITIVE;
+               if(renderflags & RF_DEPTHHACK)  entrender->flags |= RENDER_NODEPTHTEST;
+               if(renderflags & RF_ADDITIVE)           entrender->flags |= RENDER_ADDITIVE;
 
        }
 
@@ -268,8 +269,13 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed)
 
        entrender->flags &= ~(RENDER_SHADOW | RENDER_LIGHT | RENDER_NOSELFSHADOW);
        // either fullbright or lit
-       if (!(entrender->effects & EF_FULLBRIGHT) && !r_fullbright.integer)
-               entrender->flags |= RENDER_LIGHT;
+       if(!r_fullbright.integer)
+       {
+               if (!(entrender->effects & EF_FULLBRIGHT))
+                       entrender->flags |= RENDER_LIGHT;
+               else if(r_equalize_entities_fullbright.integer)
+                       entrender->flags |= RENDER_LIGHT | RENDER_EQUALIZE;
+       }
        // hide player shadow during intermission or nehahra movie
        if (!(entrender->effects & (EF_NOSHADOW | EF_ADDITIVE | EF_NODEPTHTEST))
         &&  (entrender->alpha >= 1)
@@ -280,6 +286,12 @@ qboolean CSQC_AddRenderEdict(prvm_edict_t *ed)
                entrender->flags |= RENDER_NOSELFSHADOW;
        if (entrender->effects & EF_NOSELFSHADOW)
                entrender->flags |= RENDER_NOSELFSHADOW;
+       if (entrender->effects & EF_NODEPTHTEST)
+               entrender->flags |= RENDER_NODEPTHTEST;
+       if (entrender->effects & EF_ADDITIVE)
+               entrender->flags |= RENDER_ADDITIVE;
+       if (entrender->effects & EF_DOUBLESIDED)
+               entrender->flags |= RENDER_DOUBLESIDED;
 
        // make the other useful stuff
        CL_UpdateRenderEntity(entrender);
@@ -732,6 +744,7 @@ void CL_VM_CB_FreeEdict(prvm_edict_t *ed)
        World_UnlinkEdict(ed);
        memset(ed->fields.client, 0, sizeof(*ed->fields.client));
        World_Physics_RemoveFromEntity(&cl.world, ed);
+       World_Physics_RemoveJointFromEntity(&cl.world, ed);
 }
 
 void CL_VM_CB_CountEdicts(void)