mirror of
https://github.com/ZDoom/Raze.git
synced 2025-03-13 20:42:11 +00:00
- cleaned up videoUpdatePalette function and removed the hardware texture invalidation from it.
This makes no sense because it'd toss out all the level textures that may still be needed for what probably is only a temporary palette change (like going underwater)
This commit is contained in:
parent
179076c4b1
commit
84b10bdb74
1 changed files with 57 additions and 79 deletions
|
@ -735,105 +735,83 @@ void paletteFreeColorTable(int32_t const id)
|
|||
// setbrightness
|
||||
//
|
||||
// flags:
|
||||
// 1: don't setpalette(), DON'T USE THIS FLAG!
|
||||
// 1: don't setpalette(), not checked anymore.
|
||||
// 2: don't gltexinvalidateall()
|
||||
// 4: don't calc curbrightness from dabrightness, DON'T USE THIS FLAG!
|
||||
// 8: don't gltexinvalidate8()
|
||||
// 16: don't reset palfade*
|
||||
// 32: apply brightness to scene in OpenGL
|
||||
void videoSetPalette(char dabrightness, uint8_t dapalid, uint8_t flags)
|
||||
{
|
||||
int32_t i, j;
|
||||
const uint8_t *dapal;
|
||||
int32_t i, j;
|
||||
const uint8_t* dapal;
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
int32_t paldidchange;
|
||||
#endif
|
||||
int32_t palsumdidchange;
|
||||
// uint32_t lastbright = curbrightness;
|
||||
int32_t paldidchange;
|
||||
int32_t palsumdidchange;
|
||||
// uint32_t lastbright = curbrightness;
|
||||
|
||||
Bassert((flags&4)==0);
|
||||
Bassert((flags & 4) == 0);
|
||||
|
||||
if (/*(unsigned)dapalid >= MAXBASEPALS ||*/ basepaltable[dapalid] == NULL)
|
||||
dapalid = 0;
|
||||
#ifdef USE_OPENGL
|
||||
paldidchange = (curbasepal != dapalid || basepalreset);
|
||||
#endif
|
||||
curbasepal = dapalid;
|
||||
basepalreset = 0;
|
||||
if (/*(unsigned)dapalid >= MAXBASEPALS ||*/ basepaltable[dapalid] == NULL)
|
||||
dapalid = 0;
|
||||
paldidchange = (curbasepal != dapalid || basepalreset);
|
||||
curbasepal = dapalid;
|
||||
basepalreset = 0;
|
||||
|
||||
dapal = basepaltable[curbasepal];
|
||||
dapal = basepaltable[curbasepal];
|
||||
|
||||
if (!(flags&4))
|
||||
{
|
||||
curbrightness = clamp(dabrightness, 0, 15);
|
||||
// if (lastbright != (unsigned)curbrightness)
|
||||
// vid_gamma = 1.0 + ((float)curbrightness / 10.0);
|
||||
}
|
||||
if (!(flags & 4))
|
||||
{
|
||||
curbrightness = clamp(dabrightness, 0, 15);
|
||||
}
|
||||
|
||||
videoSetGamma();
|
||||
j = !0;
|
||||
// In-scene brightness mode for RR's thunderstorm. This shouldn't affect the global gamma ramp.
|
||||
if ((videoGetRenderMode() >= REND_POLYMOST) && (flags & 32))
|
||||
{
|
||||
r_scenebrightness = curbrightness;
|
||||
}
|
||||
else
|
||||
{
|
||||
videoSetGamma();
|
||||
r_scenebrightness = 0;
|
||||
}
|
||||
j = 0; // Assume that the backend can do it.
|
||||
|
||||
for (i=0; i<256; i++)
|
||||
{
|
||||
// save palette without any brightness adjustment
|
||||
curpalette[i].r = dapal[i*3+0];
|
||||
curpalette[i].g = dapal[i*3+1];
|
||||
curpalette[i].b = dapal[i*3+2];
|
||||
curpalette[i].f = 0;
|
||||
for (i = 0; i < 256; i++)
|
||||
{
|
||||
// save palette without any brightness adjustment
|
||||
curpalette[i].r = dapal[i * 3 + 0];
|
||||
curpalette[i].g = dapal[i * 3 + 1];
|
||||
curpalette[i].b = dapal[i * 3 + 2];
|
||||
curpalette[i].f = 0;
|
||||
|
||||
// brightness adjust the palette
|
||||
curpalettefaded[i].b = britable[j][curpalette[i].b];
|
||||
curpalettefaded[i].g = britable[j][curpalette[i].g];
|
||||
curpalettefaded[i].r = britable[j][curpalette[i].r];
|
||||
curpalettefaded[i].f = 0;
|
||||
}
|
||||
// brightness adjust the palette
|
||||
curpalettefaded[i].b = britable[j][curpalette[i].b];
|
||||
curpalettefaded[i].g = britable[j][curpalette[i].g];
|
||||
curpalettefaded[i].r = britable[j][curpalette[i].r];
|
||||
curpalettefaded[i].f = 0;
|
||||
}
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
if ((flags&32) != 0 && videoGetRenderMode() == REND_POLYMOST && playing_rr)
|
||||
r_brightnesshack = j;
|
||||
else
|
||||
r_brightnesshack = 0;
|
||||
#endif
|
||||
if ((flags & 16) && palfadedelta) // keep the fade
|
||||
paletteSetFade(palfadedelta >> 2);
|
||||
|
||||
if ((flags&16) && palfadedelta) // keep the fade
|
||||
paletteSetFade(palfadedelta>>2);
|
||||
static uint32_t lastpalettesum = 0;
|
||||
uint32_t newpalettesum = XXH32((uint8_t*)curpalettefaded, sizeof(curpalettefaded), sizeof(curpalettefaded));
|
||||
|
||||
static uint32_t lastpalettesum=0;
|
||||
uint32_t newpalettesum = XXH32((uint8_t *) curpalettefaded, sizeof(curpalettefaded), sizeof(curpalettefaded));
|
||||
palsumdidchange = (newpalettesum != lastpalettesum);
|
||||
|
||||
palsumdidchange = (newpalettesum != lastpalettesum);
|
||||
if (palsumdidchange || newpalettesum != g_lastpalettesum)
|
||||
{
|
||||
videoUpdatePalette(0, 256);
|
||||
}
|
||||
|
||||
if (palsumdidchange || newpalettesum != g_lastpalettesum)
|
||||
{
|
||||
// if ((flags&1) == 0)
|
||||
videoUpdatePalette(0, 256);
|
||||
}
|
||||
g_lastpalettesum = lastpalettesum = newpalettesum;
|
||||
|
||||
g_lastpalettesum = lastpalettesum = newpalettesum;
|
||||
|
||||
#if 0
|
||||
if (videoGetRenderMode() >= REND_POLYMOST)
|
||||
{
|
||||
// Only reset the textures if the corresponding preserve flags are clear and
|
||||
// either (a) the new palette is different to the last, or (b) the brightness
|
||||
// changed and we couldn't set it using hardware gamma.
|
||||
|
||||
// XXX: no-HW-gamma OpenGL platforms will exhibit bad performance with
|
||||
// simultaneous basepal and tint changes?
|
||||
const int32_t doinvalidate = (paldidchange);
|
||||
|
||||
if (!(flags&2) && doinvalidate)
|
||||
gltexinvalidatetype(INVALIDATE_ALL_NON_INDEXED);
|
||||
if (!(flags&8) && doinvalidate)
|
||||
gltexinvalidatetype(INVALIDATE_ART_NON_INDEXED);
|
||||
}
|
||||
#endif
|
||||
|
||||
if ((flags&16)==0)
|
||||
{
|
||||
palfadergb.r = palfadergb.g = palfadergb.b = 0;
|
||||
palfadedelta = 0;
|
||||
}
|
||||
if ((flags & 16) == 0)
|
||||
{
|
||||
palfadergb.r = palfadergb.g = palfadergb.b = 0;
|
||||
palfadedelta = 0;
|
||||
}
|
||||
}
|
||||
|
||||
palette_t paletteGetColor(int32_t col)
|
||||
|
|
Loading…
Reference in a new issue