mirror of
https://github.com/DrBeef/Raze.git
synced 2024-11-16 01:11:28 +00:00
Add compilation switch MODEL_OCCLUSION_CHECKING to polymost.h, leave it enabled.
git-svn-id: https://svn.eduke32.com/eduke32@3040 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
735d1ed77e
commit
b3daea46d6
3 changed files with 28 additions and 7 deletions
|
@ -5,13 +5,17 @@
|
|||
|
||||
#include "hightile.h"
|
||||
|
||||
#define CULL_OFFSET 384
|
||||
#define CULL_DELAY 2
|
||||
#define MAXCULLCHECKS 1024
|
||||
#define MODEL_OCCLUSION_CHECKING
|
||||
|
||||
#ifdef MODEL_OCCLUSION_CHECKING
|
||||
# define CULL_OFFSET 384
|
||||
# define CULL_DELAY 2
|
||||
# define MAXCULLCHECKS 1024
|
||||
|
||||
extern int32_t lastcullcheck;
|
||||
extern char cullmodel[MAXSPRITES];
|
||||
extern int32_t cullcheckcnt;
|
||||
#endif
|
||||
|
||||
extern char TEXCACHEFILE[BMAX_PATH];
|
||||
|
||||
|
|
|
@ -8901,7 +8901,9 @@ killsprite:
|
|||
{
|
||||
#ifdef USE_OPENGL
|
||||
curpolygonoffset = 0;
|
||||
# ifdef MODEL_OCCLUSION_CHECKING
|
||||
cullcheckcnt = 0;
|
||||
# endif
|
||||
#endif
|
||||
pos.x = (float)globalposx;
|
||||
pos.y = (float)globalposy;
|
||||
|
@ -8958,7 +8960,7 @@ killsprite:
|
|||
if (tspriteptr[spritesortcnt] != NULL)
|
||||
drawsprite(spritesortcnt);
|
||||
}
|
||||
#ifdef USE_OPENGL
|
||||
#ifdef MODEL_OCCLUSION_CHECKING
|
||||
if (totalclock < lastcullcheck - CULL_DELAY)
|
||||
lastcullcheck = totalclock;
|
||||
if (totalclock >= lastcullcheck + CULL_DELAY)
|
||||
|
|
|
@ -4815,6 +4815,7 @@ void polymost_drawmaskwall(int32_t damaskwallcnt)
|
|||
drawpoly(dpx,dpy,n,method);
|
||||
}
|
||||
|
||||
#ifdef MODEL_OCCLUSION_CHECKING
|
||||
int32_t lastcullcheck = 0;
|
||||
char cullmodel[MAXSPRITES];
|
||||
int32_t cullcheckcnt = 0;
|
||||
|
@ -4862,6 +4863,7 @@ RECHECK:
|
|||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
void polymost_drawsprite(int32_t snum)
|
||||
{
|
||||
|
@ -4916,6 +4918,8 @@ void polymost_drawsprite(int32_t snum)
|
|||
if (mddraw(tspr)) return;
|
||||
break; // else, render as flat sprite
|
||||
}
|
||||
|
||||
# ifdef MODEL_OCCLUSION_CHECKING
|
||||
if (r_modelocclusionchecking)
|
||||
{
|
||||
if (totalclock >= lastcullcheck + CULL_DELAY && cullcheckcnt < MAXCULLCHECKS && (/*modelptr->usesalpha ||*/ tspr->yrepeat*tilesizy[sprite[tspr->owner].picnum] > 1536 || tspr->xrepeat*tilesizx[sprite[tspr->owner].picnum] > 1536))
|
||||
|
@ -4956,15 +4960,23 @@ void polymost_drawsprite(int32_t snum)
|
|||
}
|
||||
}
|
||||
else cullmodel[tspr->owner] = 0;
|
||||
if (cullmodel[tspr->owner]) break;
|
||||
if (mddraw(tspr)) return;
|
||||
|
||||
if (cullmodel[tspr->owner])
|
||||
break;
|
||||
# endif
|
||||
if (mddraw(tspr))
|
||||
return;
|
||||
|
||||
break; // else, render as flat sprite
|
||||
}
|
||||
|
||||
if (usevoxels && (tspr->cstat&48)!=48 && tiletovox[tspr->picnum] >= 0 && voxmodels[tiletovox[tspr->picnum]])
|
||||
{
|
||||
if (voxdraw(voxmodels[tiletovox[tspr->picnum]], tspr)) return;
|
||||
if (voxdraw(voxmodels[tiletovox[tspr->picnum]], tspr))
|
||||
return;
|
||||
break; // else, render as flat sprite
|
||||
}
|
||||
|
||||
if ((tspr->cstat&48)==48 && voxmodels[tspr->picnum])
|
||||
{
|
||||
voxdraw(voxmodels[tspr->picnum], tspr);
|
||||
|
@ -4972,6 +4984,7 @@ void polymost_drawsprite(int32_t snum)
|
|||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (((tspr->cstat&2) || (gltexmayhavealpha(tspr->picnum,tspr->pal))))
|
||||
{
|
||||
curpolygonoffset += 0.01f;
|
||||
|
@ -4979,6 +4992,7 @@ void polymost_drawsprite(int32_t snum)
|
|||
bglPolygonOffset(-curpolygonoffset, -curpolygonoffset);
|
||||
}
|
||||
#endif
|
||||
|
||||
posx=tspr->x;
|
||||
posy=tspr->y;
|
||||
if (spriteext[tspr->owner].flags&SPREXT_AWAY1)
|
||||
|
@ -4991,6 +5005,7 @@ void polymost_drawsprite(int32_t snum)
|
|||
posx-=(sintable[(tspr->ang+512)&2047]>>13);
|
||||
posy-=(sintable[(tspr->ang)&2047]>>13);
|
||||
}
|
||||
|
||||
oldsizx=tsizx=tilesizx[globalpicnum];
|
||||
oldsizy=tsizy=tilesizy[globalpicnum];
|
||||
if (usehightile && h_xsize[globalpicnum])
|
||||
|
|
Loading…
Reference in a new issue