mirror of
https://github.com/fabiangreffrath/woof.git
synced 2025-09-25 05:48:03 -04:00
unify gamma correction concepts (#848)
* unify gamma correction concepts * fix "gamma correction level" user messages * pointer constness fix * fix config help line
This commit is contained in:
parent
65f3da8c84
commit
1956d6e7e4
@ -1058,29 +1058,34 @@ static void I_RestoreDiskBackground(void)
|
||||
disk_to_draw = 0;
|
||||
}
|
||||
|
||||
static const float gammalevels[18] =
|
||||
static const float gammalevels[9] =
|
||||
{
|
||||
// Darker
|
||||
0.50f, 0.55f, 0.60f, 0.65f, 0.70f, 0.75f, 0.80f, 0.85f, 0.90f,
|
||||
|
||||
// No gamma correction
|
||||
1.0f,
|
||||
|
||||
// Lighter
|
||||
1.125f, 1.25f, 1.375f, 1.5f, 1.625f, 1.75f, 1.875f, 2.0f,
|
||||
};
|
||||
|
||||
static byte gamma2table[18][256];
|
||||
|
||||
static void I_InitGamma2Table(void)
|
||||
{
|
||||
int i, j;
|
||||
int i, j, k;
|
||||
|
||||
for (i = 0; i < 18; ++i)
|
||||
for (i = 0; i < 9; ++i)
|
||||
for (j = 0; j < 256; ++j)
|
||||
{
|
||||
gamma2table[i][j] = (byte)(pow(j / 255.0, 1.0 / gammalevels[i]) * 255.0 + 0.5);
|
||||
}
|
||||
|
||||
// [crispy] 5 original gamma levels
|
||||
for (i = 9, k = 0; i < 18 && k < 5; i += 2, k++)
|
||||
memcpy(gamma2table[i], gammatable[k], 256);
|
||||
|
||||
// [crispy] 4 intermediate gamma levels
|
||||
for (i = 10, k = 0; i < 18 && k < 4; i += 2, k++)
|
||||
for (j = 0; j < 256; ++j)
|
||||
{
|
||||
gamma2table[i][j] = (gammatable[k][j] + gammatable[k + 1][j]) / 2;
|
||||
}
|
||||
}
|
||||
|
||||
int gamma2;
|
||||
@ -1089,21 +1094,12 @@ void I_SetPalette(byte *palette)
|
||||
{
|
||||
// haleyjd
|
||||
int i;
|
||||
byte *gamma;
|
||||
byte *const gamma = gamma2table[gamma2];
|
||||
SDL_Color colors[256];
|
||||
|
||||
if (!in_graphics_mode) // killough 8/11/98
|
||||
return;
|
||||
|
||||
if (gamma2 != 9) // 1.0f
|
||||
{
|
||||
gamma = gamma2table[gamma2];
|
||||
}
|
||||
else
|
||||
{
|
||||
gamma = gammatable[usegamma];
|
||||
}
|
||||
|
||||
for(i = 0; i < 256; ++i)
|
||||
{
|
||||
colors[i].r = gamma[*palette++];
|
||||
|
23
src/m_menu.c
23
src/m_menu.c
@ -3888,19 +3888,18 @@ void static M_SmoothLight(void)
|
||||
|
||||
static const char *gamma_strings[] = {
|
||||
// Darker
|
||||
"0.50", "0.55", "0.60", "0.65", "0.70", "0.75", "0.80", "0.85", "0.90",
|
||||
"-4", "-3.6", "-3.2", "-2.8", "-2.4", "-2.0", "-1.6", "-1.2", "-0.8",
|
||||
|
||||
// No gamma correction
|
||||
"1.0",
|
||||
"0",
|
||||
|
||||
// Lighter
|
||||
"1.125", "1.25", "1.375", "1.5", "1.625", "1.75", "1.875", "2.0",
|
||||
"0.5", "1", "1.5", "2", "2.5", "3", "3.5", "4",
|
||||
NULL
|
||||
};
|
||||
|
||||
static void M_ResetGamma(void)
|
||||
{
|
||||
usegamma = 0;
|
||||
I_SetPalette(W_CacheLumpName("PLAYPAL",PU_CACHE));
|
||||
}
|
||||
|
||||
@ -5518,17 +5517,11 @@ boolean M_Responder (event_t* ev)
|
||||
|
||||
if (M_InputActivated(input_gamma)) // gamma toggle
|
||||
{
|
||||
usegamma++;
|
||||
if (usegamma > 4)
|
||||
usegamma = 0;
|
||||
players[consoleplayer].message =
|
||||
usegamma == 0 ? s_GAMMALVL0 :
|
||||
usegamma == 1 ? s_GAMMALVL1 :
|
||||
usegamma == 2 ? s_GAMMALVL2 :
|
||||
usegamma == 3 ? s_GAMMALVL3 :
|
||||
s_GAMMALVL4;
|
||||
gamma2 = 9; // 1.0f
|
||||
I_SetPalette (W_CacheLumpName ("PLAYPAL",PU_CACHE));
|
||||
gamma2++;
|
||||
if (gamma2 > 17)
|
||||
gamma2 = 0;
|
||||
doomprintf("Gamma correction level %s", gamma_strings[gamma2]);
|
||||
M_ResetGamma();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -276,7 +276,7 @@ default_t defaults[] = {
|
||||
"gamma2",
|
||||
(config_t *) &gamma2, NULL,
|
||||
{9}, {0,17}, number, ss_gen, wad_no,
|
||||
"custom gamma level (0 = 0.5, 9 = 1.0, 17 = 2.0)"
|
||||
"custom gamma level (0 = -4, 9 = 0, 17 = 4)"
|
||||
},
|
||||
|
||||
{
|
||||
@ -609,13 +609,6 @@ default_t defaults[] = {
|
||||
"initial play screen size"
|
||||
},
|
||||
|
||||
{ //jff 3/6/98 fix erroneous upper limit in range
|
||||
"usegamma",
|
||||
(config_t *) &usegamma, NULL,
|
||||
{0}, {0,4}, number, ss_none, wad_no,
|
||||
"screen brightness (gamma correction)"
|
||||
},
|
||||
|
||||
// killough 10/98: compatibility vector:
|
||||
|
||||
{
|
||||
|
@ -150,8 +150,6 @@ byte gammatable[5][256] =
|
||||
251,252,252,253,254,254,255,255}
|
||||
};
|
||||
|
||||
int usegamma;
|
||||
|
||||
//
|
||||
// V_InitColorTranslation
|
||||
//
|
||||
|
@ -97,7 +97,6 @@ typedef enum
|
||||
extern byte *screens[5];
|
||||
extern int dirtybox[4];
|
||||
extern byte gammatable[5][256];
|
||||
extern int usegamma; // killough 11/98
|
||||
|
||||
//jff 4/24/98 loads color translation lumps
|
||||
void V_InitColorTranslation(void);
|
||||
|
Loading…
x
Reference in New Issue
Block a user