Polymost: Enumify the lower bits of the method/dameth argument to various functions.

git-svn-id: https://svn.eduke32.com/eduke32@5464 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
hendricks266 2015-12-04 11:52:54 +00:00
parent 0ddba3388f
commit 56f331574d
3 changed files with 48 additions and 36 deletions

View file

@ -139,10 +139,22 @@ static inline float polymost_invsqrt_approximation(float x)
// Flags of the <dameth> argument of various functions // Flags of the <dameth> argument of various functions
enum { enum {
DAMETH_NOMASK = 0,
DAMETH_MASK = 1,
DAMETH_TRANS1 = 2,
DAMETH_TRANS2 = 3,
DAMETH_MASKPROPS = 3,
DAMETH_TEXPROPS = ~3,
DAMETH_CLAMPED = 4, DAMETH_CLAMPED = 4,
DAMETH_WALL = 32, // signals a texture for a wall (for r_npotwallmode) DAMETH_WALL = 32, // signals a texture for a wall (for r_npotwallmode)
// used internally by polymost_domost
DAMETH_BACKFACECULL = -1,
// used internally by uploadtexture
DAMETH_NOCOMPRESS = 4096, DAMETH_NOCOMPRESS = 4096,
DAMETH_HI = 8192, DAMETH_HI = 8192,
DAMETH_NOFIX = 16384, DAMETH_NOFIX = 16384,

View file

@ -1111,7 +1111,7 @@ void polymer_drawrooms(int32_t daposx, int32_t daposy, int32_t da
skyhoriz += 360.0f; skyhoriz += 360.0f;
drawingskybox = 1; drawingskybox = 1;
pth = texcache_fetch(cursky, 0, 0, 0); pth = texcache_fetch(cursky, 0, 0, DAMETH_NOMASK);
drawingskybox = 0; drawingskybox = 0;
// if it's not a skybox, make the sky parallax // if it's not a skybox, make the sky parallax
@ -1661,7 +1661,7 @@ int16_t polymer_addlight(_prlight* light)
loadtile(picnum); loadtile(picnum);
pth = NULL; pth = NULL;
pth = texcache_fetch(picnum, 0, 0, 0); pth = texcache_fetch(picnum, 0, 0, DAMETH_NOMASK);
if (pth) if (pth)
light->lightmap = pth->glpic; light->lightmap = pth->glpic;
@ -2798,7 +2798,7 @@ attributes:
!Bmemcmp(&s->ceilingstat, &sec->ceilingstat, offsetof(sectortype, visibility) - offsetof(sectortype, ceilingstat))) !Bmemcmp(&s->ceilingstat, &sec->ceilingstat, offsetof(sectortype, visibility) - offsetof(sectortype, ceilingstat)))
goto finish; goto finish;
s->floor.bucket = polymer_getbuildmaterial(&s->floor.material, floorpicnum, sec->floorpal, sec->floorshade, sec->visibility, 0); s->floor.bucket = polymer_getbuildmaterial(&s->floor.material, floorpicnum, sec->floorpal, sec->floorshade, sec->visibility, DAMETH_NOMASK);
if (sec->floorstat & 256) { if (sec->floorstat & 256) {
if (sec->floorstat & 128) { if (sec->floorstat & 128) {
@ -2808,7 +2808,7 @@ attributes:
} }
} }
s->ceil.bucket = polymer_getbuildmaterial(&s->ceil.material, ceilingpicnum, sec->ceilingpal, sec->ceilingshade, sec->visibility, 0); s->ceil.bucket = polymer_getbuildmaterial(&s->ceil.material, ceilingpicnum, sec->ceilingpal, sec->ceilingshade, sec->visibility, DAMETH_NOMASK);
if (sec->ceilingstat & 256) { if (sec->ceilingstat & 256) {
if (sec->ceilingstat & 128) { if (sec->ceilingstat & 128) {
@ -4128,7 +4128,7 @@ void polymer_drawsky(int16_t tilenum, char palnum, int8_t shade)
bglScalef(1000.0f, 1000.0f, 1000.0f); bglScalef(1000.0f, 1000.0f, 1000.0f);
drawingskybox = 1; drawingskybox = 1;
pth = texcache_fetch(tilenum,0,0,0); pth = texcache_fetch(tilenum, 0, 0, DAMETH_NOMASK);
drawingskybox = 0; drawingskybox = 0;
if (pth && (pth->flags & PTH_SKYBOX)) if (pth && (pth->flags & PTH_SKYBOX))
@ -4176,7 +4176,7 @@ static void polymer_drawartsky(int16_t tilenum, char palnum, int8_t shad
DO_TILE_ANIM(picnum, 0); DO_TILE_ANIM(picnum, 0);
if (!waloff[picnum]) if (!waloff[picnum])
loadtile(picnum); loadtile(picnum);
pth = texcache_fetch(picnum, palnum, 0, 0); pth = texcache_fetch(picnum, palnum, 0, DAMETH_NOMASK);
glpics[i] = pth ? pth->glpic : 0; glpics[i] = pth ? pth->glpic : 0;
glcolors[i][0] = glcolors[i][1] = glcolors[i][2] = getshadefactor(shade); glcolors[i][0] = glcolors[i][1] = glcolors[i][2] = getshadefactor(shade);
@ -5001,7 +5001,7 @@ static _prbucket* polymer_getbuildmaterial(_prmaterial* material, int16_t tile
} }
// PR_BIT_DIFFUSE_DETAIL_MAP // PR_BIT_DIFFUSE_DETAIL_MAP
if (hicfindsubst(tilenum, DETAILPAL) && (pth = texcache_fetch(tilenum, DETAILPAL, 0, 0)) && if (hicfindsubst(tilenum, DETAILPAL) && (pth = texcache_fetch(tilenum, DETAILPAL, 0, DAMETH_NOMASK)) &&
pth->hicr && (pth->hicr->palnum == DETAILPAL)) pth->hicr && (pth->hicr->palnum == DETAILPAL))
{ {
material->detailmap = pth->glpic; material->detailmap = pth->glpic;
@ -5010,17 +5010,17 @@ static _prbucket* polymer_getbuildmaterial(_prmaterial* material, int16_t tile
} }
// PR_BIT_GLOW_MAP // PR_BIT_GLOW_MAP
if (hicfindsubst(tilenum, GLOWPAL) && (pth = texcache_fetch(tilenum, GLOWPAL, 0, 0)) && if (hicfindsubst(tilenum, GLOWPAL) && (pth = texcache_fetch(tilenum, GLOWPAL, 0, DAMETH_NOMASK)) &&
pth->hicr && (pth->hicr->palnum == GLOWPAL)) pth->hicr && (pth->hicr->palnum == GLOWPAL))
material->glowmap = pth->glpic; material->glowmap = pth->glpic;
// PR_BIT_SPECULAR_MAP // PR_BIT_SPECULAR_MAP
if (hicfindsubst(tilenum, SPECULARPAL) && (pth = texcache_fetch(tilenum, SPECULARPAL, 0, 0)) && if (hicfindsubst(tilenum, SPECULARPAL) && (pth = texcache_fetch(tilenum, SPECULARPAL, 0, DAMETH_NOMASK)) &&
pth->hicr && (pth->hicr->palnum == SPECULARPAL)) pth->hicr && (pth->hicr->palnum == SPECULARPAL))
material->specmap = pth->glpic; material->specmap = pth->glpic;
// PR_BIT_NORMAL_MAP // PR_BIT_NORMAL_MAP
if (hicfindsubst(tilenum, NORMALPAL) && (pth = texcache_fetch(tilenum, NORMALPAL, 0, 0)) && if (hicfindsubst(tilenum, NORMALPAL) && (pth = texcache_fetch(tilenum, NORMALPAL, 0, DAMETH_NOMASK)) &&
pth->hicr && (pth->hicr->palnum == NORMALPAL)) pth->hicr && (pth->hicr->palnum == NORMALPAL))
{ {
material->normalmap = pth->glpic; material->normalmap = pth->glpic;
@ -5731,7 +5731,7 @@ static void polymer_updatelights(void)
loadtile(picnum); loadtile(picnum);
pth = NULL; pth = NULL;
pth = texcache_fetch(picnum, 0, 0, 0); pth = texcache_fetch(picnum, 0, 0, DAMETH_NOMASK);
if (pth) if (pth)
light->lightmap = pth->glpic; light->lightmap = pth->glpic;

View file

@ -595,7 +595,7 @@ static void fixtransparency(coltype *dapic, vec2_t dasiz, vec2_t dasiz2, int32_t
{ {
vec2_t doxy = { dasiz2.x-1, dasiz2.y-1 }; vec2_t doxy = { dasiz2.x-1, dasiz2.y-1 };
if (dameth&4) { doxy.x = min(doxy.x, dasiz.x); doxy.y = min(doxy.y, dasiz.y); } if (dameth & DAMETH_CLAMPED) { doxy.x = min(doxy.x, dasiz.x); doxy.y = min(doxy.y, dasiz.y); }
else { dasiz = dasiz2; } //Make repeating textures duplicate top/left parts else { dasiz = dasiz2; } //Make repeating textures duplicate top/left parts
dasiz.x--; dasiz.y--; //Hacks for optimization inside loop dasiz.x--; dasiz.y--; //Hacks for optimization inside loop
@ -1378,7 +1378,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
if (g_nodraw) return; if (g_nodraw) return;
#endif #endif
if (method == -1 || (uint32_t)globalpicnum >= MAXTILES) return; if (method == DAMETH_BACKFACECULL || (uint32_t)globalpicnum >= MAXTILES) return;
const int32_t method_ = method; const int32_t method_ = method;
@ -1411,7 +1411,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
if (!waloff[globalpicnum]) if (!waloff[globalpicnum])
{ {
tsiz.x = tsiz.y = 1; tsiz.x = tsiz.y = 1;
method = 1; //Hack to update Z-buffer for invalid mirror textures method = DAMETH_MASK; //Hack to update Z-buffer for invalid mirror textures
} }
} }
@ -1452,7 +1452,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
if (skyclamphack) method |= DAMETH_CLAMPED; if (skyclamphack) method |= DAMETH_CLAMPED;
pthtyp *pth = our_texcache_fetch(method&(~3)); pthtyp *pth = our_texcache_fetch(method & DAMETH_TEXPROPS);
if (!pth) if (!pth)
{ {
@ -1505,7 +1505,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
if (r_detailmapping) if (r_detailmapping)
{ {
if (usehightile && !drawingskybox && hicfindsubst(globalpicnum, DETAILPAL) && if (usehightile && !drawingskybox && hicfindsubst(globalpicnum, DETAILPAL) &&
(detailpth = texcache_fetch(globalpicnum, DETAILPAL, 0, method & (~3))) && (detailpth = texcache_fetch(globalpicnum, DETAILPAL, 0, method & DAMETH_TEXPROPS)) &&
detailpth->hicr && detailpth->hicr->palnum == DETAILPAL) detailpth->hicr && detailpth->hicr->palnum == DETAILPAL)
{ {
polymost_setupdetailtexture(++texunits, detailpth ? detailpth->glpic : 0); polymost_setupdetailtexture(++texunits, detailpth ? detailpth->glpic : 0);
@ -1529,7 +1529,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
if (r_glowmapping) if (r_glowmapping)
{ {
if (usehightile && !drawingskybox && hicfindsubst(globalpicnum, GLOWPAL) && if (usehightile && !drawingskybox && hicfindsubst(globalpicnum, GLOWPAL) &&
(glowpth = texcache_fetch(globalpicnum, GLOWPAL, 0, method&(~3))) && (glowpth = texcache_fetch(globalpicnum, GLOWPAL, 0, method & DAMETH_TEXPROPS)) &&
glowpth->hicr && (glowpth->hicr->palnum == GLOWPAL)) glowpth->hicr && (glowpth->hicr->palnum == GLOWPAL))
polymost_setupglowtexture(++texunits, glowpth ? glowpth->glpic : 0); polymost_setupglowtexture(++texunits, glowpth ? glowpth->glpic : 0);
} }
@ -1553,7 +1553,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
; /* do nothing */ ; /* do nothing */
} }
if (!(method&3) && fullbright_pass < 2) if (!(method & DAMETH_MASKPROPS) && fullbright_pass < 2)
{ {
bglDisable(GL_BLEND); bglDisable(GL_BLEND);
bglDisable(GL_ALPHA_TEST); bglDisable(GL_ALPHA_TEST);
@ -1578,7 +1578,7 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
pc[0] = pc[1] = pc[2] = getshadefactor(globalshade); pc[0] = pc[1] = pc[2] = getshadefactor(globalshade);
// spriteext full alpha control // spriteext full alpha control
pc[3] = float_trans[method & 3] * (1.f - drawpoly_alpha); pc[3] = float_trans[method & DAMETH_MASKPROPS] * (1.f - drawpoly_alpha);
if (pth) if (pth)
{ {
@ -1868,7 +1868,7 @@ static inline int32_t vsinsaft(int32_t const i)
return r; return r;
} }
static int32_t domostpolymethod = 0; static int32_t domostpolymethod = DAMETH_NOMASK;
#define DOMOST_OFFSET .01f #define DOMOST_OFFSET .01f
@ -2471,7 +2471,7 @@ static void polymost_internal_nonparallaxed(vec2f_t n0, vec2f_t n1, float ryp0,
} }
} }
domostpolymethod = (globalorientation>>7)&3; domostpolymethod = (globalorientation>>7) & DAMETH_MASKPROPS;
pow2xsplit = 0; pow2xsplit = 0;
drawpoly_alpha = 0.f; drawpoly_alpha = 0.f;
@ -2482,19 +2482,19 @@ static void polymost_internal_nonparallaxed(vec2f_t n0, vec2f_t n1, float ryp0,
if (have_floor) if (have_floor)
{ {
if (globalposz > getflorzofslope(sectnum, globalposx, globalposy)) if (globalposz > getflorzofslope(sectnum, globalposx, globalposy))
domostpolymethod = -1; //Back-face culling domostpolymethod = DAMETH_BACKFACECULL; //Back-face culling
polymost_domost(x0, y0, x1, y1); //flor polymost_domost(x0, y0, x1, y1); //flor
} }
else else
{ {
if (globalposz < getceilzofslope(sectnum, globalposx, globalposy)) if (globalposz < getceilzofslope(sectnum, globalposx, globalposy))
domostpolymethod = -1; //Back-face culling domostpolymethod = DAMETH_BACKFACECULL; //Back-face culling
polymost_domost(x1, y1, x0, y0); //ceil polymost_domost(x1, y1, x0, y0); //ceil
} }
domostpolymethod = 0; domostpolymethod = DAMETH_NOMASK;
} }
static void calc_ypanning(int32_t refposz, float ryp0, float ryp1, static void calc_ypanning(int32_t refposz, float ryp0, float ryp1,
@ -3233,7 +3233,7 @@ static void polymost_drawalls(int32_t const bunch)
float const ogux = xtex.u, oguy = ytex.u, oguo = otex.u; float const ogux = xtex.u, oguy = ytex.u, oguo = otex.u;
Bassert(domostpolymethod == 0); Bassert(domostpolymethod == DAMETH_NOMASK);
domostpolymethod = DAMETH_WALL; domostpolymethod = DAMETH_WALL;
if (nextsectnum >= 0) if (nextsectnum >= 0)
@ -3359,7 +3359,7 @@ static void polymost_drawalls(int32_t const bunch)
} while (0); } while (0);
} }
domostpolymethod = 0; domostpolymethod = DAMETH_NOMASK;
if (nextsectnum >= 0) if (nextsectnum >= 0)
if ((!(gotsector[nextsectnum>>3]&pow2char[nextsectnum&7])) && testvisiblemost(x0,x1)) if ((!(gotsector[nextsectnum>>3]&pow2char[nextsectnum&7])) && testvisiblemost(x0,x1))
@ -3880,14 +3880,14 @@ void polymost_drawmaskwall(int32_t damaskwallcnt)
} }
if (wal->cstat&256) { xtex.v = -xtex.v; ytex.v = -ytex.v; otex.v = -otex.v; } //yflip if (wal->cstat&256) { xtex.v = -xtex.v; ytex.v = -ytex.v; otex.v = -otex.v; } //yflip
int method = 1 | DAMETH_WALL; int method = DAMETH_MASK | DAMETH_WALL;
if (wal->cstat & 128) if (wal->cstat & 128)
{ {
if (!(wal->cstat & 512)) if (!(wal->cstat & 512))
method = 2 | DAMETH_WALL; method = DAMETH_TRANS1 | DAMETH_WALL;
else else
method = 3 | DAMETH_WALL; method = DAMETH_TRANS2 | DAMETH_WALL;
} }
if (!nofog) if (!nofog)
@ -4095,14 +4095,14 @@ void polymost_drawsprite(int32_t snum)
off.y = (int32_t)tspr->yoffset + flag ? h_yoffs[globalpicnum] : picanm[globalpicnum].yofs; off.y = (int32_t)tspr->yoffset + flag ? h_yoffs[globalpicnum] : picanm[globalpicnum].yofs;
} }
int32_t method = 1 + 4; int32_t method = DAMETH_MASK | DAMETH_CLAMPED;
if (tspr->cstat & 2) if (tspr->cstat & 2)
{ {
if (!(tspr->cstat & 512)) if (!(tspr->cstat & 512))
method = 2 + 4; method = DAMETH_TRANS1 | DAMETH_CLAMPED;
else else
method = 3 + 4; method = DAMETH_TRANS2 | DAMETH_CLAMPED;
} }
drawpoly_alpha = spriteext[spritenum].alpha; drawpoly_alpha = spriteext[spritenum].alpha;
@ -4988,14 +4988,14 @@ void polymost_dorotatesprite(int32_t sx, int32_t sy, int32_t z, int16_t a, int16
} }
#endif #endif
int32_t method = 4; //Use OpenGL clamping - dorotatesprite never repeats int32_t method = DAMETH_CLAMPED; //Use OpenGL clamping - dorotatesprite never repeats
if (!(dastat & RS_NOMASK)) if (!(dastat & RS_NOMASK))
{ {
if (dastat & RS_TRANS1) if (dastat & RS_TRANS1)
method |= (dastat & RS_TRANS2) ? 3 : 2; method |= (dastat & RS_TRANS2) ? DAMETH_TRANS2 : DAMETH_TRANS1;
else else
method |= 1; method |= DAMETH_MASK;
} }
drawpoly_alpha = daalpha * (1.0f / 255.0f); drawpoly_alpha = daalpha * (1.0f / 255.0f);
@ -5323,7 +5323,7 @@ void polymost_fillpolygon(int32_t npoints)
if (gloy1 != -1) setpolymost2dview(); //disables blending, texturing, and depth testing if (gloy1 != -1) setpolymost2dview(); //disables blending, texturing, and depth testing
bglEnable(GL_ALPHA_TEST); bglEnable(GL_ALPHA_TEST);
bglEnable(GL_TEXTURE_2D); bglEnable(GL_TEXTURE_2D);
pthtyp *pth = our_texcache_fetch(0); pthtyp *pth = our_texcache_fetch(DAMETH_NOMASK);
bglBindTexture(GL_TEXTURE_2D, pth ? pth->glpic : 0); bglBindTexture(GL_TEXTURE_2D, pth ? pth->glpic : 0);
float const f = getshadefactor(globalshade); float const f = getshadefactor(globalshade);