#include "quakedef.h"
unsigned int d_8to24table[256];
-//byte d_15to8table[32768];
-byte host_basepal[768];
-byte texgamma[256];
+qbyte host_basepal[768];
cvar_t v_gamma = {CVAR_SAVE, "v_gamma", "1"};
cvar_t v_contrast = {CVAR_SAVE, "v_contrast", "1"};
void Palette_Setup8to24(void)
{
- byte *in, *out;
- unsigned short i;
+ int i;
+ qbyte *in, *out;
in = host_basepal;
- out = (byte *) d_8to24table; // d_8to24table is accessed as 32bit for speed reasons, but is created as 8bit bytes
+ out = (qbyte *) d_8to24table; // d_8to24table is accessed as 32bit for speed reasons, but is created as 8bit bytes
for (i=0 ; i<255 ; i++)
{
*out++ = *in++;
d_8to24table[255] = 0; // completely transparent black
}
-/*
-void Palette_Setup15to8(void)
-{
- byte *pal;
- unsigned r,g,b;
- unsigned v;
- int r1,g1,b1;
- int j,k,l;
- unsigned short i;
-
- for (i = 0;i < 32768;i++)
- {
- r = ((i & 0x001F) << 3)+4;
- g = ((i & 0x03E0) >> 2)+4;
- b = ((i & 0x7C00) >> 7)+4;
- pal = (unsigned char *)d_8to24table;
- for (v = 0, k = 0, l = 1000000000;v < 256;v++, pal += 4)
- {
- r1 = r - pal[0];
- g1 = g - pal[1];
- b1 = b - pal[2];
- j = r1*r1+g1*g1+b1*b1;
- if (j < l)
- {
- k = v;
- l = j;
- }
- }
- d_15to8table[i] = k;
- }
-}
-*/
-void BuildGammaTable8(float prescale, float gamma, float scale, float base, byte *out)
+void BuildGammaTable8(float prescale, float gamma, float scale, float base, qbyte *out)
{
int i, adjusted;
double invgamma, d;
void Palette_Init(void)
{
- byte *pal;
- pal = (byte *)COM_LoadFile ("gfx/palette.lmp", false);
+ int i;
+ float gamma, scale, base;
+ qbyte *pal;
+ qbyte temp[256];
+ pal = (qbyte *)COM_LoadFile ("gfx/palette.lmp", false);
if (!pal)
Sys_Error ("Couldn't load gfx/palette.lmp");
memcpy(host_basepal, pal, 765);
Mem_Free(pal);
host_basepal[765] = host_basepal[766] = host_basepal[767] = 0; // LordHavoc: force the transparent color to black
+
+ gamma = 1;
+ scale = 1;
+ base = 0;
+ i = COM_CheckParm("-texgamma");
+ if (i)
+ gamma = atof(com_argv[i + 1]);
+ i = COM_CheckParm("-texcontrast");
+ if (i)
+ scale = atof(com_argv[i + 1]);
+ i = COM_CheckParm("-texbrightness");
+ if (i)
+ base = atof(com_argv[i + 1]);
+ gamma = bound(0.01, gamma, 10.0);
+ scale = bound(0.01, scale, 10.0);
+ base = bound(0, base, 0.95);
+
+ BuildGammaTable8(1.0f, gamma, scale, base, temp);
+ for (i = 3;i < 765;i++)
+ host_basepal[i] = temp[host_basepal[i]];
+
Palette_Setup8to24();
-// Palette_Setup15to8();
}
+