mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-12-26 03:30:46 +00:00
Polymost: Add HICR_ARTIMMUNITY and DAMETH_ARTIMMUNITY, which currently function identically to NOTEXCOMPRESS and NODOWNSIZE combined, and are only used when:
1. Using an ART tile 2. Using a hightile defined through the tilefromtexture "texture" subtoken 3. Using a hightile that, if downsized, will be smaller than the ART tile for that tilenum (tenuous) git-svn-id: https://svn.eduke32.com/eduke32@5647 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
97219ea3e6
commit
7dd054069f
6 changed files with 24 additions and 15 deletions
|
@ -78,6 +78,7 @@ enum
|
||||||
HICR_FORCEFILTER = 2,
|
HICR_FORCEFILTER = 2,
|
||||||
|
|
||||||
HICR_NODOWNSIZE = 16,
|
HICR_NODOWNSIZE = 16,
|
||||||
|
HICR_ARTIMMUNITY = 32,
|
||||||
};
|
};
|
||||||
|
|
||||||
// hictinting[].f / gloadtile_hi() and mdloadskin() <effect> arg bits
|
// hictinting[].f / gloadtile_hi() and mdloadskin() <effect> arg bits
|
||||||
|
|
|
@ -160,6 +160,9 @@ enum {
|
||||||
DAMETH_NOTEXCOMPRESS = 32768,
|
DAMETH_NOTEXCOMPRESS = 32768,
|
||||||
DAMETH_HASALPHA = 65536,
|
DAMETH_HASALPHA = 65536,
|
||||||
DAMETH_ONEBITALPHA = 131072,
|
DAMETH_ONEBITALPHA = 131072,
|
||||||
|
DAMETH_ARTIMMUNITY = 262144,
|
||||||
|
|
||||||
|
DAMETH_UPLOADTEXTURE_MASK = DAMETH_HI|DAMETH_NODOWNSIZE|DAMETH_NOFIX|DAMETH_NOTEXCOMPRESS|DAMETH_HASALPHA|DAMETH_ONEBITALPHA|DAMETH_ARTIMMUNITY,
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DAMETH_NARROW_MASKPROPS(dameth) (((dameth)&(~DAMETH_TRANS1))|(((dameth)&DAMETH_TRANS1)>>1))
|
#define DAMETH_NARROW_MASKPROPS(dameth) (((dameth)&(~DAMETH_TRANS1))|(((dameth)&DAMETH_TRANS1)>>1))
|
||||||
|
@ -170,6 +173,8 @@ EDUKE32_STATIC_ASSERT(DAMETH_NARROW_MASKPROPS(DAMETH_CLAMPED) == DAMETH_CLAMPED)
|
||||||
EDUKE32_STATIC_ASSERT(TO_DAMETH_NODOWNSIZE(HICR_NODOWNSIZE) == DAMETH_NODOWNSIZE);
|
EDUKE32_STATIC_ASSERT(TO_DAMETH_NODOWNSIZE(HICR_NODOWNSIZE) == DAMETH_NODOWNSIZE);
|
||||||
#define TO_DAMETH_NOTEXCOMPRESS(hicr_flags) (((hicr_flags)&HICR_NOTEXCOMPRESS)<<15)
|
#define TO_DAMETH_NOTEXCOMPRESS(hicr_flags) (((hicr_flags)&HICR_NOTEXCOMPRESS)<<15)
|
||||||
EDUKE32_STATIC_ASSERT(TO_DAMETH_NOTEXCOMPRESS(HICR_NOTEXCOMPRESS) == DAMETH_NOTEXCOMPRESS);
|
EDUKE32_STATIC_ASSERT(TO_DAMETH_NOTEXCOMPRESS(HICR_NOTEXCOMPRESS) == DAMETH_NOTEXCOMPRESS);
|
||||||
|
#define TO_DAMETH_ARTIMMUNITY(hicr_flags) (((hicr_flags)&HICR_ARTIMMUNITY)<<13)
|
||||||
|
EDUKE32_STATIC_ASSERT(TO_DAMETH_ARTIMMUNITY(HICR_ARTIMMUNITY) == DAMETH_ARTIMMUNITY);
|
||||||
|
|
||||||
// Do we want a NPOT-y-as-classic texture for this <dameth> and <ysiz>?
|
// Do we want a NPOT-y-as-classic texture for this <dameth> and <ysiz>?
|
||||||
static inline int polymost_want_npotytex(int32_t dameth, int32_t ysiz)
|
static inline int polymost_want_npotytex(int32_t dameth, int32_t ysiz)
|
||||||
|
|
|
@ -279,7 +279,7 @@ static int32_t Defs_ImportTileFromTexture(char const * const fn, int32_t const t
|
||||||
|
|
||||||
#ifdef USE_OPENGL
|
#ifdef USE_OPENGL
|
||||||
if (istexture)
|
if (istexture)
|
||||||
hicsetsubsttex(tile, 0, fn, (float)(255-alphacut) * (1.f/255.f), 1.0f, 1.0f, 1.0f, 1.0f, HICR_NOTEXCOMPRESS|HICR_NODOWNSIZE);
|
hicsetsubsttex(tile, 0, fn, (float)(255-alphacut) * (1.f/255.f), 1.0f, 1.0f, 1.0f, 1.0f, HICR_ARTIMMUNITY);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -299,7 +299,7 @@ static int32_t Defs_ImportTileFromTexture(char const * const fn, int32_t const t
|
||||||
|
|
||||||
#ifdef USE_OPENGL
|
#ifdef USE_OPENGL
|
||||||
if (istexture)
|
if (istexture)
|
||||||
hicsetsubsttex(tile, 0, fn, (float)(255-alphacut) * (1.f/255.f), 1.0f, 1.0f, 1.0, 1.0, HICR_NOTEXCOMPRESS|HICR_NODOWNSIZE);
|
hicsetsubsttex(tile, 0, fn, (float)(255-alphacut) * (1.f/255.f), 1.0f, 1.0f, 1.0, 1.0, HICR_ARTIMMUNITY);
|
||||||
#else
|
#else
|
||||||
UNREFERENCED_PARAMETER(istexture);
|
UNREFERENCED_PARAMETER(istexture);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -906,6 +906,7 @@ int32_t mdloadskin(md2model_t *m, int32_t number, int32_t pal, int32_t surf)
|
||||||
DAMETH_HI | DAMETH_MASK |
|
DAMETH_HI | DAMETH_MASK |
|
||||||
TO_DAMETH_NODOWNSIZE(sk->flags) |
|
TO_DAMETH_NODOWNSIZE(sk->flags) |
|
||||||
TO_DAMETH_NOTEXCOMPRESS(sk->flags) |
|
TO_DAMETH_NOTEXCOMPRESS(sk->flags) |
|
||||||
|
TO_DAMETH_ARTIMMUNITY(sk->flags) |
|
||||||
(hasalpha ? DAMETH_HASALPHA : 0));
|
(hasalpha ? DAMETH_HASALPHA : 0));
|
||||||
|
|
||||||
Bfree(pic);
|
Bfree(pic);
|
||||||
|
@ -959,17 +960,17 @@ int32_t mdloadskin(md2model_t *m, int32_t number, int32_t pal, int32_t surf)
|
||||||
bglTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
|
bglTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
|
||||||
|
|
||||||
if (glinfo.texcompr && glusetexcompr && glusetexcache)
|
if (glinfo.texcompr && glusetexcompr && glusetexcache)
|
||||||
if (!gotcache && !(sk->flags & HICR_NOTEXCOMPRESS))
|
if (!gotcache && !(sk->flags & HICR_NOTEXCOMPRESS) && !(sk->flags & HICR_ARTIMMUNITY))
|
||||||
{
|
{
|
||||||
const int32_t nonpow2 = check_nonpow2(siz.x) || check_nonpow2(siz.y);
|
const int32_t nonpow2 = check_nonpow2(siz.x) || check_nonpow2(siz.y);
|
||||||
|
|
||||||
// save off the compressed version
|
// save off the compressed version
|
||||||
cachead.quality = (sk->flags & HICR_NODOWNSIZE) ? 0 : r_downsize;
|
cachead.quality = (sk->flags & (HICR_NODOWNSIZE|HICR_ARTIMMUNITY)) ? 0 : r_downsize;
|
||||||
cachead.xdim = tsiz.x>>cachead.quality;
|
cachead.xdim = tsiz.x>>cachead.quality;
|
||||||
cachead.ydim = tsiz.y>>cachead.quality;
|
cachead.ydim = tsiz.y>>cachead.quality;
|
||||||
|
|
||||||
cachead.flags = nonpow2*CACHEAD_NONPOW2 | (hasalpha ? CACHEAD_HASALPHA : 0) |
|
cachead.flags = nonpow2*CACHEAD_NONPOW2 | (hasalpha ? CACHEAD_HASALPHA : 0) |
|
||||||
(sk->flags & HICR_NODOWNSIZE ? CACHEAD_NODOWNSIZE : 0);
|
(sk->flags & (HICR_NODOWNSIZE|HICR_ARTIMMUNITY) ? CACHEAD_NODOWNSIZE : 0);
|
||||||
|
|
||||||
/// OSD_Printf("Caching \"%s\"\n",fn);
|
/// OSD_Printf("Caching \"%s\"\n",fn);
|
||||||
texcache_writetex(fn, picfillen, pal<<8, hicfxmask(pal), &cachead);
|
texcache_writetex(fn, picfillen, pal<<8, hicfxmask(pal), &cachead);
|
||||||
|
|
|
@ -673,13 +673,14 @@ static int32_t polymost_glTexImage2D_error(int32_t * intexfmt, int32_t const **i
|
||||||
void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
||||||
coltype *pic, vec2_t tsiz, int32_t dameth)
|
coltype *pic, vec2_t tsiz, int32_t dameth)
|
||||||
{
|
{
|
||||||
|
const int artimmunity = !!(dameth & DAMETH_ARTIMMUNITY);
|
||||||
const int hi = !!(dameth & DAMETH_HI);
|
const int hi = !!(dameth & DAMETH_HI);
|
||||||
const int nodownsize = !!(dameth & DAMETH_NODOWNSIZE);
|
const int nodownsize = !!(dameth & DAMETH_NODOWNSIZE) || artimmunity;
|
||||||
const int nomiptransfix = !!(dameth & DAMETH_NOFIX);
|
const int nomiptransfix = !!(dameth & DAMETH_NOFIX);
|
||||||
const int hasalpha = !!(dameth & DAMETH_HASALPHA) && (dameth & DAMETH_MASKPROPS) != DAMETH_NOMASK;
|
const int hasalpha = !!(dameth & DAMETH_HASALPHA) && (dameth & DAMETH_MASKPROPS) != DAMETH_NOMASK;
|
||||||
|
|
||||||
#if !defined EDUKE32_GLES
|
#if !defined EDUKE32_GLES
|
||||||
const int texcompress_ok = !(dameth & DAMETH_NOTEXCOMPRESS);
|
const int texcompress_ok = !(dameth & DAMETH_NOTEXCOMPRESS) && !artimmunity;
|
||||||
|
|
||||||
int32_t intexfmt;
|
int32_t intexfmt;
|
||||||
if (glinfo.texcompr && glusetexcompr && texcompress_ok)
|
if (glinfo.texcompr && glusetexcompr && texcompress_ok)
|
||||||
|
@ -693,7 +694,7 @@ void uploadtexture(int32_t doalloc, vec2_t siz, int32_t texfmt,
|
||||||
int32_t intexfmt = **intexfmt_master;
|
int32_t intexfmt = **intexfmt_master;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
dameth &= ~(DAMETH_HI|DAMETH_NODOWNSIZE|DAMETH_NOFIX|DAMETH_NOTEXCOMPRESS|DAMETH_HASALPHA|DAMETH_ONEBITALPHA);
|
dameth &= ~DAMETH_UPLOADTEXTURE_MASK;
|
||||||
|
|
||||||
if (gltexmaxsize <= 0)
|
if (gltexmaxsize <= 0)
|
||||||
{
|
{
|
||||||
|
@ -1002,7 +1003,7 @@ void gloadtile_art(int32_t dapic, int32_t dapal, int32_t tintpalnum, int32_t das
|
||||||
}
|
}
|
||||||
|
|
||||||
uploadtexture(doalloc, siz, GL_RGBA, pic, tsiz,
|
uploadtexture(doalloc, siz, GL_RGBA, pic, tsiz,
|
||||||
dameth | DAMETH_NOFIX | DAMETH_NOTEXCOMPRESS |
|
dameth | DAMETH_ARTIMMUNITY |
|
||||||
(hasalpha ? (DAMETH_HASALPHA|DAMETH_ONEBITALPHA) : 0));
|
(hasalpha ? (DAMETH_HASALPHA|DAMETH_ONEBITALPHA) : 0));
|
||||||
|
|
||||||
Bfree(pic);
|
Bfree(pic);
|
||||||
|
@ -1267,7 +1268,7 @@ int32_t gloadtile_hi(int32_t dapic,int32_t dapalnum, int32_t facen, hicreplctyp
|
||||||
// end CODEDUP
|
// end CODEDUP
|
||||||
|
|
||||||
if (tsiz.x>>r_downsize <= tilesiz[dapic].x || tsiz.y>>r_downsize <= tilesiz[dapic].y)
|
if (tsiz.x>>r_downsize <= tilesiz[dapic].x || tsiz.y>>r_downsize <= tilesiz[dapic].y)
|
||||||
hicr->flags |= (HICR_NODOWNSIZE + HICR_NOTEXCOMPRESS);
|
hicr->flags |= HICR_ARTIMMUNITY;
|
||||||
|
|
||||||
if ((doalloc&3)==1)
|
if ((doalloc&3)==1)
|
||||||
bglGenTextures(1, &pth->glpic); //# of textures (make OpenGL allocate structure)
|
bglGenTextures(1, &pth->glpic); //# of textures (make OpenGL allocate structure)
|
||||||
|
@ -1281,6 +1282,7 @@ int32_t gloadtile_hi(int32_t dapic,int32_t dapalnum, int32_t facen, hicreplctyp
|
||||||
dameth | DAMETH_HI | DAMETH_NOFIX |
|
dameth | DAMETH_HI | DAMETH_NOFIX |
|
||||||
TO_DAMETH_NODOWNSIZE(hicr->flags) |
|
TO_DAMETH_NODOWNSIZE(hicr->flags) |
|
||||||
TO_DAMETH_NOTEXCOMPRESS(hicr->flags) |
|
TO_DAMETH_NOTEXCOMPRESS(hicr->flags) |
|
||||||
|
TO_DAMETH_ARTIMMUNITY(hicr->flags) |
|
||||||
(hasalpha ? DAMETH_HASALPHA : 0));
|
(hasalpha ? DAMETH_HASALPHA : 0));
|
||||||
|
|
||||||
Bfree(pic);
|
Bfree(pic);
|
||||||
|
@ -1301,7 +1303,7 @@ int32_t gloadtile_hi(int32_t dapic,int32_t dapalnum, int32_t facen, hicreplctyp
|
||||||
polymost_setuptexture(dameth, hicr->flags & HICR_FORCEFILTER ? TEXFILTER_ON : -1);
|
polymost_setuptexture(dameth, hicr->flags & HICR_FORCEFILTER ? TEXFILTER_ON : -1);
|
||||||
|
|
||||||
if (tsiz.x>>r_downsize <= tilesiz[dapic].x || tsiz.y>>r_downsize <= tilesiz[dapic].y)
|
if (tsiz.x>>r_downsize <= tilesiz[dapic].x || tsiz.y>>r_downsize <= tilesiz[dapic].y)
|
||||||
hicr->flags |= HICR_NODOWNSIZE | HICR_NOTEXCOMPRESS;
|
hicr->flags |= HICR_ARTIMMUNITY;
|
||||||
|
|
||||||
pth->picnum = dapic;
|
pth->picnum = dapic;
|
||||||
pth->effects = effect;
|
pth->effects = effect;
|
||||||
|
@ -1312,18 +1314,18 @@ int32_t gloadtile_hi(int32_t dapic,int32_t dapalnum, int32_t facen, hicreplctyp
|
||||||
pth->skyface = facen;
|
pth->skyface = facen;
|
||||||
pth->hicr = hicr;
|
pth->hicr = hicr;
|
||||||
|
|
||||||
if (!gotcache && glinfo.texcompr && glusetexcompr && glusetexcache && !(hicr->flags & HICR_NOTEXCOMPRESS))
|
if (!gotcache && glinfo.texcompr && glusetexcompr && glusetexcache && !(hicr->flags & HICR_NOTEXCOMPRESS) && !(hicr->flags & HICR_ARTIMMUNITY))
|
||||||
{
|
{
|
||||||
const int32_t nonpow2 = check_nonpow2(siz.x) || check_nonpow2(siz.y);
|
const int32_t nonpow2 = check_nonpow2(siz.x) || check_nonpow2(siz.y);
|
||||||
|
|
||||||
// save off the compressed version
|
// save off the compressed version
|
||||||
cachead.quality = (hicr->flags & HICR_NODOWNSIZE) ? 0 : r_downsize;
|
cachead.quality = (hicr->flags & (HICR_NODOWNSIZE|HICR_ARTIMMUNITY)) ? 0 : r_downsize;
|
||||||
cachead.xdim = tsiz.x >> cachead.quality;
|
cachead.xdim = tsiz.x >> cachead.quality;
|
||||||
cachead.ydim = tsiz.y >> cachead.quality;
|
cachead.ydim = tsiz.y >> cachead.quality;
|
||||||
|
|
||||||
// handle nodownsize:
|
// handle nodownsize:
|
||||||
cachead.flags = nonpow2 * CACHEAD_NONPOW2 | (hasalpha ? CACHEAD_HASALPHA : 0) |
|
cachead.flags = nonpow2 * CACHEAD_NONPOW2 | (hasalpha ? CACHEAD_HASALPHA : 0) |
|
||||||
(hicr->flags & HICR_NODOWNSIZE ? CACHEAD_NODOWNSIZE : 0);
|
(hicr->flags & (HICR_NODOWNSIZE|HICR_ARTIMMUNITY) ? CACHEAD_NODOWNSIZE : 0);
|
||||||
|
|
||||||
/// OSD_Printf("Caching \"%s\"\n", fn);
|
/// OSD_Printf("Caching \"%s\"\n", fn);
|
||||||
texcache_writetex(fn, picfillen + (dapalnum << 8), dameth, effect, &cachead);
|
texcache_writetex(fn, picfillen + (dapalnum << 8), dameth, effect, &cachead);
|
||||||
|
|
|
@ -507,7 +507,7 @@ int32_t texcache_readtexheader(const char *fn, int32_t len, int32_t dameth, char
|
||||||
if (!(head->flags & CACHEAD_COMPRESSED) && glusetexcache == 2)
|
if (!(head->flags & CACHEAD_COMPRESSED) && glusetexcache == 2)
|
||||||
READTEXHEADER_FAILURE(4);
|
READTEXHEADER_FAILURE(4);
|
||||||
|
|
||||||
// handle nocompress
|
// handle nodownsize
|
||||||
if (!modelp && !(head->flags & CACHEAD_NODOWNSIZE) && head->quality != r_downsize)
|
if (!modelp && !(head->flags & CACHEAD_NODOWNSIZE) && head->quality != r_downsize)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue