From cfdb5e3a8a32fc197877a86e1774d1bc4dbd6cc1 Mon Sep 17 00:00:00 2001 From: havoc Date: Wed, 29 Mar 2006 00:31:12 +0000 Subject: [PATCH] added rampsize parameter to BuildGammaTable8 and 16 git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@6202 d7cf8633-e32d-0410-b094-e92efae38249 --- palette.c | 14 +++++++------- palette.h | 4 ++-- vid_shared.c | 12 ++++++------ 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/palette.c b/palette.c index 8996f011..21974d4d 100644 --- a/palette.c +++ b/palette.c @@ -109,28 +109,28 @@ void Palette_SetupSpecialPalettes(void) palette_font[0] = 0; } -void BuildGammaTable8(float prescale, float gamma, float scale, float base, unsigned char *out) +void BuildGammaTable8(float prescale, float gamma, float scale, float base, unsigned char *out, int rampsize) { int i, adjusted; double invgamma; invgamma = 1.0 / gamma; - prescale /= 255.0f; - for (i = 0;i < 256;i++) + prescale /= (double) (rampsize - 1); + for (i = 0;i < rampsize;i++) { adjusted = (int) (255.0 * (pow((double) i * prescale, invgamma) * scale + base) + 0.5); out[i] = bound(0, adjusted, 255); } } -void BuildGammaTable16(float prescale, float gamma, float scale, float base, unsigned short *out) +void BuildGammaTable16(float prescale, float gamma, float scale, float base, unsigned short *out, int rampsize) { int i, adjusted; double invgamma; invgamma = 1.0 / gamma; - prescale /= 255.0f; - for (i = 0;i < 256;i++) + prescale /= (double) (rampsize - 1); + for (i = 0;i < rampsize;i++) { adjusted = (int) (65535.0 * (pow((double) i * prescale, invgamma) * scale + base) + 0.5); out[i] = bound(0, adjusted, 65535); @@ -164,7 +164,7 @@ void Palette_Init(void) scale = bound(0.01, scale, 10.0); base = bound(0, base, 0.95); - BuildGammaTable8(1.0f, gamma, scale, base, texturegammaramp); + BuildGammaTable8(1.0f, gamma, scale, base, texturegammaramp, 256); palfile = (unsigned char *)FS_LoadFile ("gfx/palette.lmp", tempmempool, false, &filesize); if (palfile && filesize >= 768) diff --git a/palette.h b/palette.h index c0afb198..53281e07 100644 --- a/palette.h +++ b/palette.h @@ -14,8 +14,8 @@ extern unsigned int palette_shirtaswhite[256]; extern unsigned int palette_transparent[256]; // used by hardware gamma functions in vid_* files -void BuildGammaTable8(float prescale, float gamma, float scale, float base, unsigned char *out); -void BuildGammaTable16(float prescale, float gamma, float scale, float base, unsigned short *out); +void BuildGammaTable8(float prescale, float gamma, float scale, float base, unsigned char *out, int rampsize); +void BuildGammaTable16(float prescale, float gamma, float scale, float base, unsigned short *out, int rampsize); void Palette_Init(void); diff --git a/vid_shared.c b/vid_shared.c index 0ffc3628..84129cba 100644 --- a/vid_shared.c +++ b/vid_shared.c @@ -773,15 +773,15 @@ void VID_UpdateGamma(qboolean force, int rampsize) if (cachecolorenable) { - BuildGammaTable16(1.0f, invpow(0.5, 1 - cachegrey[0]), cachewhite[0], cacheblack[0], vid_gammaramps); - BuildGammaTable16(1.0f, invpow(0.5, 1 - cachegrey[1]), cachewhite[1], cacheblack[1], vid_gammaramps + vid_gammarampsize); - BuildGammaTable16(1.0f, invpow(0.5, 1 - cachegrey[2]), cachewhite[2], cacheblack[2], vid_gammaramps + vid_gammarampsize*2); + BuildGammaTable16(1.0f, invpow(0.5, 1 - cachegrey[0]), cachewhite[0], cacheblack[0], vid_gammaramps, rampsize); + BuildGammaTable16(1.0f, invpow(0.5, 1 - cachegrey[1]), cachewhite[1], cacheblack[1], vid_gammaramps + vid_gammarampsize, rampsize); + BuildGammaTable16(1.0f, invpow(0.5, 1 - cachegrey[2]), cachewhite[2], cacheblack[2], vid_gammaramps + vid_gammarampsize*2, rampsize); } else { - BuildGammaTable16(1.0f, cachegamma, cachecontrast, cachebrightness, vid_gammaramps); - BuildGammaTable16(1.0f, cachegamma, cachecontrast, cachebrightness, vid_gammaramps + vid_gammarampsize); - BuildGammaTable16(1.0f, cachegamma, cachecontrast, cachebrightness, vid_gammaramps + vid_gammarampsize*2); + BuildGammaTable16(1.0f, cachegamma, cachecontrast, cachebrightness, vid_gammaramps, rampsize); + BuildGammaTable16(1.0f, cachegamma, cachecontrast, cachebrightness, vid_gammaramps + vid_gammarampsize, rampsize); + BuildGammaTable16(1.0f, cachegamma, cachecontrast, cachebrightness, vid_gammaramps + vid_gammarampsize*2, rampsize); } // LordHavoc: this code came from Ben Winslow and Zinx Verituse, I have -- 2.39.2