4 unsigned d_8to24table[256];
5 unsigned char d_15to8table[32768]; // LordHavoc: was 64k elements, now 32k like it should be
7 void VID_SetPalette (unsigned char *palette)
12 out = (byte *) d_8to24table; // d_8to24table is accessed as 32bit for speed reasons, but is created as 8bit bytes
13 for (i=0 ; i<255 ; i++)
20 d_8to24table[255] = 0;
23 void VID_Setup15to8Palette ()
32 // JACK: 3D distance calcs - k is last closest, l is the distance.
33 // FIXME: Precalculate this and cache to disk.
34 for (i = 0;i < 32768;i++)
38 000000000011111 = Red = 0x001F
39 000001111100000 = Blue = 0x03E0
40 111110000000000 = Grn = 0x7C00
42 r = ((i & 0x001F) << 3)+4;
43 g = ((i & 0x03E0) >> 2)+4;
44 b = ((i & 0x7C00) >> 7)+4;
45 pal = (unsigned char *)d_8to24table;
46 for (v = 0, k = 0, l = 1000000000;v < 256;v++, pal += 4)
51 j = (r1*r1*2)+(g1*g1*3)+(b1*b1); // LordHavoc: weighting to tune for human eye (added *2 and *3)
62 // LordHavoc: gamma correction does not belong in gl_vidnt.c
64 static float vid_gamma = 1.0;
66 void Check_Gamma (unsigned char *pal)
71 if ((i = COM_CheckParm("-gamma")))
72 vid_gamma = atof(com_argv[i+1]);
75 // if ((gl_renderer && strstr(gl_renderer, "Voodoo")) ||
76 // (gl_vendor && strstr(gl_vendor, "3Dfx")))
78 // else if (gl_vendor && strstr(gl_vendor, "ATI"))
84 if (vid_gamma == 1) // LordHavoc: dodge the math
86 for (i = 0;i < 256;i++)
91 for (i = 0;i < 256;i++)
93 inf = pow((i+1)/256.0, vid_gamma)*255 + 0.5;
95 if (inf > 255) inf = 255;
100 // gamma correct the palette
101 for (i=0 ; i<768 ; i++)
102 pal[i] = qgamma[pal[i]];
103 // note: 32bit uploads are corrected by the upload functions