X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=palette.c;h=c7dd2e85b99a5eb3280d9a66b37b6057e9a6d610;hb=791b65b452170fbf9e53631ddc9d51f417221ce4;hp=76a2de55f1eb7dfd36c961f439cc458775d8e8b2;hpb=c2995f2c4c030b1c3adb163fd84b4ea5b3d2b104;p=xonotic%2Fdarkplaces.git diff --git a/palette.c b/palette.c index 76a2de55..c7dd2e85 100644 --- a/palette.c +++ b/palette.c @@ -2,9 +2,7 @@ #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"}; @@ -14,11 +12,11 @@ cvar_t v_hwgamma = {0, "v_hwgamma", "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++; @@ -29,40 +27,8 @@ void Palette_Setup8to24(void) 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; @@ -174,13 +140,37 @@ void Gamma_Init(void) 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(); } +