mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 08:51:24 +00:00
Factor out hictinting array accesses.
git-svn-id: https://svn.eduke32.com/eduke32@6216 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
70245fc4f1
commit
a032b829bf
6 changed files with 58 additions and 42 deletions
|
@ -48,23 +48,26 @@ hicreplctyp * hicfindskybox(int picnum, int palnum);
|
|||
|
||||
static inline int have_basepal_tint(void)
|
||||
{
|
||||
return (hictinting[MAXPALOOKUPS-1].r != 255 ||
|
||||
hictinting[MAXPALOOKUPS-1].g != 255 ||
|
||||
hictinting[MAXPALOOKUPS-1].b != 255);
|
||||
polytint_t const & tint = hictinting[MAXPALOOKUPS-1];
|
||||
return (tint.r != 255 ||
|
||||
tint.g != 255 ||
|
||||
tint.b != 255);
|
||||
}
|
||||
|
||||
static inline void hictinting_apply(float *color, int32_t palnum)
|
||||
{
|
||||
color[0] *= (float)hictinting[palnum].r * (1.f/255.f);
|
||||
color[1] *= (float)hictinting[palnum].g * (1.f/255.f);
|
||||
color[2] *= (float)hictinting[palnum].b * (1.f/255.f);
|
||||
polytint_t const & tint = hictinting[palnum];
|
||||
color[0] *= (float)tint.r * (1.f/255.f);
|
||||
color[1] *= (float)tint.g * (1.f/255.f);
|
||||
color[2] *= (float)tint.b * (1.f/255.f);
|
||||
}
|
||||
|
||||
static inline void hictinting_apply_ub(uint8_t *color, int32_t palnum)
|
||||
{
|
||||
color[0] = (uint8_t)(color[0] * (float)hictinting[palnum].r * (1.f/255.f));
|
||||
color[1] = (uint8_t)(color[1] * (float)hictinting[palnum].g * (1.f/255.f));
|
||||
color[2] = (uint8_t)(color[2] * (float)hictinting[palnum].b * (1.f/255.f));
|
||||
polytint_t const & tint = hictinting[palnum];
|
||||
color[0] = (uint8_t)(color[0] * (float)tint.r * (1.f/255.f));
|
||||
color[1] = (uint8_t)(color[1] * (float)tint.g * (1.f/255.f));
|
||||
color[2] = (uint8_t)(color[2] * (float)tint.b * (1.f/255.f));
|
||||
}
|
||||
|
||||
// texcacheheader cachead.flags bits
|
||||
|
|
|
@ -76,8 +76,9 @@ void hicinit(void)
|
|||
|
||||
for (i=0; i<MAXPALOOKUPS; i++) // all tints should be 100%
|
||||
{
|
||||
hictinting[i].r = hictinting[i].g = hictinting[i].b = 0xff;
|
||||
hictinting[i].f = 0;
|
||||
polytint_t & tint = hictinting[i];
|
||||
tint.r = tint.g = tint.b = 0xff;
|
||||
tint.f = 0;
|
||||
}
|
||||
|
||||
if (hicinitcounter)
|
||||
|
@ -123,10 +124,11 @@ void hicsetpalettetint(int32_t palnum, char r, char g, char b, polytintflags_t e
|
|||
if ((uint32_t)palnum >= (uint32_t)MAXPALOOKUPS) return;
|
||||
if (!hicinitcounter) hicinit();
|
||||
|
||||
hictinting[palnum].r = r;
|
||||
hictinting[palnum].g = g;
|
||||
hictinting[palnum].b = b;
|
||||
hictinting[palnum].f = effect;
|
||||
polytint_t & tint = hictinting[palnum];
|
||||
tint.r = r;
|
||||
tint.g = g;
|
||||
tint.b = b;
|
||||
tint.f = effect;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -823,9 +823,10 @@ int32_t mdloadskin(md2model_t *m, int32_t number, int32_t pal, int32_t surf)
|
|||
|
||||
char *cptr = britable[gammabrightness ? 0 : curbrightness];
|
||||
|
||||
int32_t r = (glinfo.bgra) ? hictinting[pal].r : hictinting[pal].b;
|
||||
int32_t g = hictinting[pal].g;
|
||||
int32_t b = (glinfo.bgra) ? hictinting[pal].b : hictinting[pal].r;
|
||||
polytint_t const & tint = hictinting[pal];
|
||||
int32_t r = (glinfo.bgra) ? tint.r : tint.b;
|
||||
int32_t g = tint.g;
|
||||
int32_t b = (glinfo.bgra) ? tint.b : tint.r;
|
||||
|
||||
char al = 255;
|
||||
char onebitalpha = 1;
|
||||
|
@ -2192,7 +2193,8 @@ static int32_t polymost_md3draw(md3model_t *m, const uspritetype *tspr)
|
|||
|
||||
// tinting
|
||||
pc[0] = pc[1] = pc[2] = ((float)(numshades-min(max((globalshade * shadescale)+m->shadeoff,0),numshades)))/((float)numshades);
|
||||
if (!(hictinting[globalpal].f & HICTINT_PRECOMPUTED))
|
||||
polytintflags_t const tintflags = hictinting[globalpal].f;
|
||||
if (!(tintflags & HICTINT_PRECOMPUTED))
|
||||
{
|
||||
if (!(m->flags&1))
|
||||
hictinting_apply(pc, globalpal);
|
||||
|
|
|
@ -4198,14 +4198,15 @@ static void polymer_drawartsky(int16_t tilenum, char palnum, int8_t shad
|
|||
if (pth)
|
||||
{
|
||||
// tinting
|
||||
if (!(hictinting[palnum].f & HICTINT_PRECOMPUTED))
|
||||
polytintflags_t const tintflags = hictinting[palnum].f;
|
||||
if (!(tintflags & HICTINT_PRECOMPUTED))
|
||||
{
|
||||
if (pth->flags & PTH_HIGHTILE)
|
||||
{
|
||||
if (pth->palnum != palnum || (pth->effects & HICTINT_IN_MEMORY) || (hictinting[palnum].f & HICTINT_APPLYOVERALTPAL))
|
||||
if (pth->palnum != palnum || (pth->effects & HICTINT_IN_MEMORY) || (tintflags & HICTINT_APPLYOVERALTPAL))
|
||||
hictinting_apply(glcolors[i], palnum);
|
||||
}
|
||||
else if (hictinting[palnum].f & HICTINT_USEONART)
|
||||
else if (tintflags & HICTINT_USEONART)
|
||||
hictinting_apply(glcolors[i], palnum);
|
||||
}
|
||||
|
||||
|
@ -4289,14 +4290,15 @@ static void polymer_drawskybox(int16_t tilenum, char palnum, int8_t shad
|
|||
if (pth)
|
||||
{
|
||||
// tinting
|
||||
if (!(hictinting[palnum].f & HICTINT_PRECOMPUTED))
|
||||
polytintflags_t const tintflags = hictinting[palnum].f;
|
||||
if (!(tintflags & HICTINT_PRECOMPUTED))
|
||||
{
|
||||
if (pth->flags & PTH_HIGHTILE)
|
||||
{
|
||||
if (pth->palnum != palnum || (pth->effects & HICTINT_IN_MEMORY) || (hictinting[palnum].f & HICTINT_APPLYOVERALTPAL))
|
||||
if (pth->palnum != palnum || (pth->effects & HICTINT_IN_MEMORY) || (tintflags & HICTINT_APPLYOVERALTPAL))
|
||||
hictinting_apply(color, palnum);
|
||||
}
|
||||
else if (hictinting[palnum].f & HICTINT_USEONART)
|
||||
else if (tintflags & HICTINT_USEONART)
|
||||
hictinting_apply(color, palnum);
|
||||
}
|
||||
|
||||
|
@ -4517,7 +4519,8 @@ static void polymer_drawmdsprite(uspritetype *tspr)
|
|||
prhighpalookups[curbasepal][tspr->pal].map);
|
||||
|
||||
// tinting
|
||||
if (!usinghighpal && !(hictinting[tspr->pal].f & HICTINT_PRECOMPUTED))
|
||||
polytintflags_t const tintflags = hictinting[tspr->pal].f;
|
||||
if (!usinghighpal && !(tintflags & HICTINT_PRECOMPUTED))
|
||||
{
|
||||
if (!(m->flags&1))
|
||||
hictinting_apply_ub(color, tspr->pal);
|
||||
|
@ -4990,14 +4993,15 @@ static _prbucket* polymer_getbuildmaterial(_prmaterial* material, int16_t tile
|
|||
(GLubyte)(getshadefactor(shade) * 0xFF);
|
||||
|
||||
// tinting
|
||||
if (!(hictinting[pal].f & HICTINT_PRECOMPUTED))
|
||||
polytintflags_t const tintflags = hictinting[pal].f;
|
||||
if (!(tintflags & HICTINT_PRECOMPUTED))
|
||||
{
|
||||
if (pth->flags & PTH_HIGHTILE)
|
||||
{
|
||||
if (pth->palnum != pal || (pth->effects & HICTINT_IN_MEMORY) || (hictinting[pal].f & HICTINT_APPLYOVERALTPAL))
|
||||
if (pth->palnum != pal || (pth->effects & HICTINT_IN_MEMORY) || (tintflags & HICTINT_APPLYOVERALTPAL))
|
||||
hictinting_apply_ub(material->diffusemodulation, pal);
|
||||
}
|
||||
else if (hictinting[pal].f & HICTINT_USEONART)
|
||||
else if (tintflags & HICTINT_USEONART)
|
||||
hictinting_apply_ub(material->diffusemodulation, pal);
|
||||
}
|
||||
|
||||
|
|
|
@ -1374,9 +1374,10 @@ int32_t gloadtile_hi(int32_t dapic,int32_t dapalnum, int32_t facen, hicreplctyp
|
|||
|
||||
char *cptr = britable[gammabrightness ? 0 : curbrightness];
|
||||
|
||||
int32_t r = (glinfo.bgra) ? hictinting[dapalnum].r : hictinting[dapalnum].b;
|
||||
int32_t g = hictinting[dapalnum].g;
|
||||
int32_t b = (glinfo.bgra) ? hictinting[dapalnum].b : hictinting[dapalnum].r;
|
||||
polytint_t const & tint = hictinting[dapalnum];
|
||||
int32_t r = (glinfo.bgra) ? tint.r : tint.b;
|
||||
int32_t g = tint.g;
|
||||
int32_t b = (glinfo.bgra) ? tint.b : tint.r;
|
||||
|
||||
char al = 255;
|
||||
char onebitalpha = 1;
|
||||
|
@ -1835,14 +1836,15 @@ static void polymost_drawpoly(vec2f_t const * const dpxy, int32_t const n, int32
|
|||
if (pth)
|
||||
{
|
||||
// tinting
|
||||
if (!(hictinting[globalpal].f & HICTINT_PRECOMPUTED))
|
||||
polytintflags_t const tintflags = hictinting[globalpal].f;
|
||||
if (!(tintflags & HICTINT_PRECOMPUTED))
|
||||
{
|
||||
if (pth->flags & PTH_HIGHTILE)
|
||||
{
|
||||
if (pth->palnum != globalpal || (pth->effects & HICTINT_IN_MEMORY) || (hictinting[globalpal].f & HICTINT_APPLYOVERALTPAL))
|
||||
if (pth->palnum != globalpal || (pth->effects & HICTINT_IN_MEMORY) || (tintflags & HICTINT_APPLYOVERALTPAL))
|
||||
hictinting_apply(pc, globalpal);
|
||||
}
|
||||
else if (hictinting[globalpal].f & HICTINT_USEONART)
|
||||
else if (tintflags & HICTINT_USEONART)
|
||||
hictinting_apply(pc, globalpal);
|
||||
}
|
||||
|
||||
|
|
|
@ -33,11 +33,12 @@ static pthtyp *texcache_tryart(int32_t const dapicnum, int32_t const dapalnum, i
|
|||
pthtyp *pth;
|
||||
int32_t tintpalnum = -1;
|
||||
int32_t searchpalnum = dapalnum;
|
||||
polytintflags_t const tintflags = hictinting[dapalnum].f;
|
||||
|
||||
if (hictinting[dapalnum].f & HICTINT_USEONART)
|
||||
if (tintflags & HICTINT_USEONART)
|
||||
{
|
||||
tintpalnum = dapalnum;
|
||||
if (!(hictinting[dapalnum].f & HICTINT_APPLYOVERPALSWAP))
|
||||
if (!(tintflags & HICTINT_APPLYOVERPALSWAP))
|
||||
searchpalnum = 0;
|
||||
}
|
||||
|
||||
|
@ -127,14 +128,16 @@ pthtyp *texcache_fetch(int32_t dapicnum, int32_t dapalnum, int32_t dashade, int3
|
|||
* effects are applied to the palette 0 texture if it exists
|
||||
*/
|
||||
|
||||
const int32_t checktintpal = (hictinting[dapalnum].f & HICTINT_APPLYOVERALTPAL) ? 0 : si->palnum;
|
||||
const int32_t checkcachepal = (hictinting[dapalnum].f & HICTINT_IN_MEMORY) || ((hictinting[dapalnum].f & HICTINT_APPLYOVERALTPAL) && si->palnum > 0) ? dapalnum : si->palnum;
|
||||
polytintflags_t const tintflags = hictinting[dapalnum].f;
|
||||
|
||||
const int32_t checktintpal = (tintflags & HICTINT_APPLYOVERALTPAL) ? 0 : si->palnum;
|
||||
const int32_t checkcachepal = (tintflags & HICTINT_IN_MEMORY) || ((tintflags & HICTINT_APPLYOVERALTPAL) && si->palnum > 0) ? dapalnum : si->palnum;
|
||||
|
||||
// load a replacement
|
||||
for (pthtyp *pth = texcache.list[j]; pth; pth = pth->next)
|
||||
{
|
||||
if (pth->picnum == dapicnum && pth->palnum == checkcachepal &&
|
||||
(checktintpal > 0 ? 1 : (pth->effects == hictinting[dapalnum].f)) &&
|
||||
(checktintpal > 0 ? 1 : (pth->effects == tintflags)) &&
|
||||
(pth->flags & (PTH_CLAMPED | PTH_HIGHTILE | PTH_SKYBOX | PTH_NOTRANSFIX)) ==
|
||||
(TO_PTH_CLAMPED(dameth) | TO_PTH_NOTRANSFIX(dameth) |
|
||||
PTH_HIGHTILE | (drawingskybox > 0) * PTH_SKYBOX) &&
|
||||
|
@ -145,7 +148,7 @@ pthtyp *texcache_fetch(int32_t dapicnum, int32_t dapalnum, int32_t dashade, int3
|
|||
pth->flags &= ~PTH_INVALIDATED;
|
||||
|
||||
int32_t tilestat = gloadtile_hi(dapicnum, dapalnum, drawingskybox, si, dameth, pth, 0,
|
||||
(checktintpal > 0) ? 0 : hictinting[dapalnum].f); // reload tile
|
||||
(checktintpal > 0) ? 0 : tintflags); // reload tile
|
||||
|
||||
if (!tilestat)
|
||||
continue;
|
||||
|
@ -166,7 +169,7 @@ pthtyp *texcache_fetch(int32_t dapicnum, int32_t dapalnum, int32_t dashade, int3
|
|||
return pth;
|
||||
|
||||
int32_t tilestat =
|
||||
gloadtile_hi(dapicnum, dapalnum, drawingskybox, si, dameth, pth, 1, (checktintpal > 0) ? 0 : hictinting[dapalnum].f);
|
||||
gloadtile_hi(dapicnum, dapalnum, drawingskybox, si, dameth, pth, 1, (checktintpal > 0) ? 0 : tintflags);
|
||||
|
||||
if (!tilestat)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue