better version reports (always mention build number)
authorlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 6 Feb 2001 17:26:46 +0000 (17:26 +0000)
committerlordhavoc <lordhavoc@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 6 Feb 2001 17:26:46 +0000 (17:26 +0000)
minor cleanup of qpic system (loading and drawing)
minor improvement to lighting engine tweakability (LIGHTSCALE2)
minor cleanup to texture tracking (totaltexels now called texeldatasize)
r_texturestats texture size reports are now correct (was showing 4x what it should have)
r_texturestats report rearranged to put size on the left for easy sorting in console logs
cruft removal

git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@145 d7cf8633-e32d-0410-b094-e92efae38249

gl_draw.c
gl_rsurf.c
gl_textures.c
host_cmd.c
quakedef.h
r_light.c
r_light.h
sv_main.c
sys_linux.c

index 8b0a437..5a1e715 100644 (file)
--- a/gl_draw.c
+++ b/gl_draw.c
@@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 #include "quakedef.h"
 
-#define GL_COLOR_INDEX8_EXT     0x80E5
+//#define GL_COLOR_INDEX8_EXT     0x80E5
 
 cvar_t         qsg_version = {"qsg_version", "1"};
 cvar_t         scr_conalpha = {"scr_conalpha", "1"};
@@ -36,88 +36,10 @@ int                 char_texture;
 typedef struct
 {
        int             texnum;
-       float   sl, tl, sh, th;
 } glpic_t;
 
 int                    conbacktexnum;
 
-/*
-=============================================================================
-
-  scrap allocation
-
-  Allocate all the little status bar obejcts into a single texture
-  to crutch up stupid hardware / drivers
-
-=============================================================================
-*/
-
-/*
-#define        MAX_SCRAPS              2
-#define        BLOCK_WIDTH             256
-#define        BLOCK_HEIGHT    256
-
-int                    scrap_allocated[MAX_SCRAPS][BLOCK_WIDTH];
-byte           scrap_texels[MAX_SCRAPS][BLOCK_WIDTH*BLOCK_HEIGHT*4];
-qboolean       scrap_dirty;
-
-// returns a texture number and the position inside it
-int Scrap_AllocBlock (int w, int h, int *x, int *y)
-{
-       int             i, j;
-       int             best, best2;
-       int             texnum;
-
-       for (texnum=0 ; texnum<MAX_SCRAPS ; texnum++)
-       {
-               best = BLOCK_HEIGHT;
-
-               for (i=0 ; i<BLOCK_WIDTH-w ; i++)
-               {
-                       best2 = 0;
-
-                       for (j=0 ; j<w ; j++)
-                       {
-                               if (scrap_allocated[texnum][i+j] >= best)
-                                       break;
-                               if (scrap_allocated[texnum][i+j] > best2)
-                                       best2 = scrap_allocated[texnum][i+j];
-                       }
-                       if (j == w)
-                       {       // this is a valid spot
-                               *x = i;
-                               *y = best = best2;
-                       }
-               }
-
-               if (best + h > BLOCK_HEIGHT)
-                       continue;
-
-               for (i=0 ; i<w ; i++)
-                       scrap_allocated[texnum][*x + i] = best + h;
-
-               return texnum;
-       }
-
-       Sys_Error ("Scrap_AllocBlock: full");
-       return 0;
-}
-
-int    scrap_uploads;
-int scraptexnum[MAX_SCRAPS];
-
-void Scrap_Upload (void)
-{
-       int             texnum;
-
-       scrap_uploads++;
-
-       for (texnum=0 ; texnum<MAX_SCRAPS ; texnum++)
-               scraptexnum[texnum] = GL_LoadTexture (va("scrapslot%d", texnum), BLOCK_WIDTH, BLOCK_HEIGHT, scrap_texels[texnum], false, true, 1);
-       scrap_dirty = false;
-}
-*/
-
 //=============================================================================
 /* Support Routines */
 
@@ -137,8 +59,6 @@ byte         menuplyr_pixels[4096];
 int            pic_texels;
 int            pic_count;
 
-extern int GL_LoadPicTexture (qpic_t *pic);
-
 qpic_t *Draw_PicFromWad (char *name)
 {
        qpic_t  *p;
@@ -147,40 +67,7 @@ qpic_t *Draw_PicFromWad (char *name)
        p = W_GetLumpName (name);
        gl = (glpic_t *)p->data;
 
-       // load little ones into the scrap
-       /*
-       if (p->width < 64 && p->height < 64)
-       {
-               int             x, y;
-               int             i, j, k;
-               int             texnum;
-
-               texnum = Scrap_AllocBlock (p->width, p->height, &x, &y);
-               scrap_dirty = true;
-               k = 0;
-               for (i=0 ; i<p->height ; i++)
-                       for (j=0 ; j<p->width ; j++, k++)
-                               scrap_texels[texnum][(y+i)*BLOCK_WIDTH + x + j] = p->data[k];
-               if (!scraptexnum[texnum])
-                       scraptexnum[texnum] = GL_LoadTexture (va("scrapslot%d", texnum), BLOCK_WIDTH, BLOCK_HEIGHT, scrap_texels[texnum], false, true, 1);
-               gl->texnum = scraptexnum[texnum];
-               gl->sl = (x+0.01)/(float)BLOCK_WIDTH;
-               gl->sh = (x+p->width-0.01)/(float)BLOCK_WIDTH;
-               gl->tl = (y+0.01)/(float)BLOCK_WIDTH;
-               gl->th = (y+p->height-0.01)/(float)BLOCK_WIDTH;
-
-               pic_count++;
-               pic_texels += p->width*p->height;
-       }
-       else
-       {
-       */
-               gl->texnum = GL_LoadPicTexture (p);
-               gl->sl = 0;
-               gl->sh = 1;
-               gl->tl = 0;
-               gl->th = 1;
-       //}
+       gl->texnum = GL_LoadTexture (name, p->width, p->height, p->data, false, true, 1);
        return p;
 }
 
@@ -226,11 +113,7 @@ qpic_t     *Draw_CachePic (char *path)
        gl = (glpic_t *)pic->pic.data;
        gl->texnum = loadtextureimage(path, 0, 0, false, false);
        if (!gl->texnum)
-               gl->texnum = GL_LoadPicTexture (dat);
-       gl->sl = 0;
-       gl->sh = 1;
-       gl->tl = 0;
-       gl->th = 1;
+               gl->texnum = GL_LoadTexture (path, dat->width, dat->height, dat->data, false, true, 1);
 
        qfree(dat);
 
@@ -245,7 +128,6 @@ Draw_Init
 ===============
 */
 void rmain_registercvars();
-extern int buildnumber;
 
 void gl_draw_start()
 {
@@ -265,8 +147,6 @@ void gl_draw_start()
 
        conbacktexnum = loadtextureimage("gfx/conback", 0, 0, false, false);
 
-//     memset(scraptexnum, 0, sizeof(scraptexnum));
-
        // get the other pics we need
        draw_disc = Draw_PicFromWad ("disc");
 }
@@ -355,8 +235,11 @@ void Draw_Character (int x, int y, int num)
        glEnd ();
 
        // LordHavoc: revert to LINEAR mode
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       if (glwidth < (int) vid.width)
+       {
+               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       }
 }
 
 /*
@@ -404,8 +287,11 @@ void Draw_String (int x, int y, char *str, int maxlen)
        glEnd ();
 
        // LordHavoc: revert to LINEAR mode
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-       glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       if (glwidth < (int) vid.width)
+       {
+               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+               glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       }
 }
 
 void Draw_GenericPic (int texnum, float red, float green, float blue, float alpha, int x, int y, int width, int height)
@@ -429,21 +315,7 @@ Draw_AlphaPic
 */
 void Draw_AlphaPic (int x, int y, qpic_t *pic, float alpha)
 {
-       glpic_t                 *gl;
-
-//     if (scrap_dirty)
-//             Scrap_Upload ();
-       gl = (glpic_t *)pic->data;
-       if (!r_render.value)
-               return;
-       glColor4f(1,1,1,alpha);
-       glBindTexture(GL_TEXTURE_2D, gl->texnum);
-       glBegin (GL_QUADS);
-       glTexCoord2f (gl->sl, gl->tl);glVertex2f (x, y);
-       glTexCoord2f (gl->sh, gl->tl);glVertex2f (x+pic->width, y);
-       glTexCoord2f (gl->sh, gl->th);glVertex2f (x+pic->width, y+pic->height);
-       glTexCoord2f (gl->sl, gl->th);glVertex2f (x, y+pic->height);
-       glEnd ();
+       Draw_GenericPic(((glpic_t *)pic->data)->texnum, 1,1,1,alpha, x,y,pic->width, pic->height);
 }
 
 
@@ -454,21 +326,7 @@ Draw_Pic
 */
 void Draw_Pic (int x, int y, qpic_t *pic)
 {
-       glpic_t                 *gl;
-
-//     if (scrap_dirty)
-//             Scrap_Upload ();
-       gl = (glpic_t *)pic->data;
-       if (!r_render.value)
-               return;
-       glColor3f(1,1,1);
-       glBindTexture(GL_TEXTURE_2D, gl->texnum);
-       glBegin (GL_QUADS);
-       glTexCoord2f (gl->sl, gl->tl);glVertex2f (x, y);
-       glTexCoord2f (gl->sh, gl->tl);glVertex2f (x+pic->width, y);
-       glTexCoord2f (gl->sh, gl->th);glVertex2f (x+pic->width, y+pic->height);
-       glTexCoord2f (gl->sl, gl->th);glVertex2f (x, y+pic->height);
-       glEnd ();
+       Draw_GenericPic(((glpic_t *)pic->data)->texnum, 1,1,1,1, x,y,pic->width, pic->height);
 }
 
 
@@ -496,16 +354,6 @@ void Draw_PicTranslate (int x, int y, qpic_t *pic, byte *translation)
        if (!r_render.value)
                return;
        Draw_GenericPic (c, 1,1,1,1, x, y, pic->width, pic->height);
-       /*
-       glBindTexture(GL_TEXTURE_2D, c);
-       glColor3f(1,1,1);
-       glBegin (GL_QUADS);
-       glTexCoord2f (0, 0);glVertex2f (x, y);
-       glTexCoord2f (1, 0);glVertex2f (x+pic->width, y);
-       glTexCoord2f (1, 1);glVertex2f (x+pic->width, y+pic->height);
-       glTexCoord2f (0, 1);glVertex2f (x, y+pic->height);
-       glEnd ();
-       */
 }
 
 
index 753f5db..70afc09 100644 (file)
@@ -413,7 +413,7 @@ int RSurf_Light(int *dlightbits, glpoly_t *polys)
                                        cg = light->color[1];
                                        cb = light->color[2];
                                        radius = light->radius*light->radius*LIGHTSCALE;
-                                       radius2 = radius * (256.0f / LIGHTSCALE);
+                                       radius2 = radius * (256.0f / LIGHTSCALE2);
                                        wv = wvert;
                                        for (p = polys;p;p = p->next)
                                        {
index e2b6aea..8afef82 100644 (file)
@@ -17,7 +17,7 @@ int           texels;
 typedef struct
 {
        int             texnum;
-       int             totaltexels;
+       int             texeldatasize;
        byte    *texels[MAXMIPS];
        unsigned short texelsize[MAXMIPS][2];
        char    identifier[64];
@@ -107,25 +107,26 @@ void GL_TextureStats_Print(char *name, int total, int crc, int mip, int alpha)
                name = "<unnamed>";
        while (name[c] && c < 28)
                n[c++] = name[c];
-       while (c < 28)
-               n[c++] = ' ';
+       // no need to pad since the name was moved to last
+//     while (c < 28)
+//             n[c++] = ' ';
        n[c] = 0;
-       Con_Printf("%s %5i %04X %s %s\n", n, total, crc, mip ? "yes" : "no ", alpha ? "yes  " : "no   ");
+       Con_Printf("%5i %04X %s %s %s\n", total, crc, mip ? "yes" : "no ", alpha ? "yes  " : "no   ", n);
 }
 
 void GL_TextureStats_f(void)
 {
        int i, s = 0, sc = 0, t = 0;
        gltexture_t *glt;
-       Con_Printf("name                        kbytes crc  mip alpha\n");
+       Con_Printf("kbytes crc  mip alpha name\n");
        for (i = 0, glt = gltextures;i < numgltextures;i++, glt++)
        {
-               GL_TextureStats_Print(glt->identifier, ((glt->totaltexels * 4) + 512) >> 10, glt->crc, glt->mipmap, glt->alpha);
-               t += glt->totaltexels;
+               GL_TextureStats_Print(glt->identifier, (glt->texeldatasize + 512) >> 10, glt->crc, glt->mipmap, glt->alpha);
+               t += glt->texeldatasize;
                if (glt->identifier[0] == '&')
                {
                        sc++;
-                       s += glt->totaltexels;
+                       s += glt->texeldatasize;
                }
        }
        Con_Printf("%i textures, totalling %.3fMB, %i are (usually) unnecessary model skins totalling %.3fMB\n", numgltextures, t / 1048576.0, sc, s / 1048576.0);
@@ -137,18 +138,16 @@ void GL_TextureStats_PrintTotal(void)
        gltexture_t *glt;
        for (i = 0, glt = gltextures;i < numgltextures;i++, glt++)
        {
-               t += glt->totaltexels;
+               t += glt->texeldatasize;
                if (glt->identifier[0] == '&')
                {
                        sc++;
-                       s += glt->totaltexels;
+                       s += glt->texeldatasize;
                }
        }
        Con_Printf("%i textures, totalling %.3fMB, %i are (usually) unnecessary model skins totalling %.3fMB\n", numgltextures, t / 1048576.0, sc, s / 1048576.0);
 }
 
-extern int buildnumber;
-
 char engineversion[40];
 
 void GL_UploadTexture (gltexture_t *glt);
@@ -332,7 +331,7 @@ void GL_FreeTexels(gltexture_t *glt)
 
 void GL_AllocTexels(gltexture_t *glt, int width, int height, int mipmapped)
 {
-       int i, w, h, size, done;
+       int i, w, h, size;
        if (glt->texels[0])
                GL_FreeTexels(glt);
        glt->texelsize[0][0] = width;
@@ -342,12 +341,11 @@ void GL_AllocTexels(gltexture_t *glt, int width, int height, int mipmapped)
                size = 0;
                w = width;h = height;
                i = 0;
-               done = false;
-               for (i = 0;i < MAXMIPS;i++)
+               while (i < MAXMIPS)
                {
                        glt->texelsize[i][0] = w;
                        glt->texelsize[i][1] = h;
-                       glt->texels[i] = (void *)size;
+                       glt->texels[i++] = (void *)size;
                        size += w*h*4;
                        if (w > 1)
                        {
@@ -358,12 +356,9 @@ void GL_AllocTexels(gltexture_t *glt, int width, int height, int mipmapped)
                        else if (h > 1)
                                h >>= 1;
                        else
-                       {
-                               i++;
                                break;
-                       }
                }
-               glt->totaltexels = size;
+               glt->texeldatasize = size;
                while (i < MAXMIPS)
                        glt->texels[i++] = NULL;
                glt->texels[0] = qmalloc(size);
@@ -373,7 +368,7 @@ void GL_AllocTexels(gltexture_t *glt, int width, int height, int mipmapped)
        else
        {
                size = width*height*4;
-               glt->totaltexels = size;
+               glt->texeldatasize = size;
                glt->texels[0] = qmalloc(size);
                for (i = 1;i < MAXMIPS;i++)
                        glt->texels[i] = NULL;
@@ -503,7 +498,6 @@ int GL_LoadTexture (char *identifier, int width, int height, byte *data, qboolea
                                {
                                        Con_DPrintf("GL_LoadTexture: cache mismatch, replacing old texture\n");
                                        goto GL_LoadTexture_setup; // drop out with glt pointing to the texture to replace
-                                       //Sys_Error ("GL_LoadTexture: cache mismatch");
                                }
                                if ((gl_lerpimages.value != 0) != glt->lerped)
                                        goto GL_LoadTexture_setup; // drop out with glt pointing to the texture to replace
@@ -624,16 +618,6 @@ GL_LoadTexture_setup:
        return glt->texnum;
 }
 
-/*
-================
-GL_LoadPicTexture
-================
-*/
-int GL_LoadPicTexture (qpic_t *pic)
-{
-       return GL_LoadTexture ("", pic->width, pic->height, pic->data, false, true, 1);
-}
-
 int GL_GetTextureSlots (int count)
 {
        gltexture_t             *glt, *first;
index 5051ed0..f757184 100644 (file)
@@ -80,7 +80,7 @@ void Host_Status_f (void)
                print = SV_ClientPrintf;
 
        print ("host:    %s\n", Cvar_VariableString ("hostname"));
-       print ("version: %4.2f\n", VERSION);
+       print ("version: %4.2f (build %i)\n", VERSION, buildnumber);
        if (tcpipAvailable)
                print ("tcp/ip:  %s\n", my_tcpip_address);
        if (ipxAvailable)
@@ -708,7 +708,7 @@ void Host_Name_f (void)
        
 void Host_Version_f (void)
 {
-       Con_Printf ("Version %4.2f\n", VERSION);
+       Con_Printf ("Version %4.2f (build %i)\n", VERSION, buildnumber);
        Con_Printf ("Exe: "__TIME__" "__DATE__"\n");
 }
 
index 7f274b7..e49cc20 100644 (file)
@@ -22,6 +22,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #define        QUAKE_GAME                      // as opposed to utilities
 
 #define        VERSION                         1.50
+extern int buildnumber;
 
 #ifndef FALSE
 #define FALSE 0
index 63dfe26..04504d2 100644 (file)
--- a/r_light.c
+++ b/r_light.c
@@ -579,7 +579,7 @@ void R_DynamicLightPoint(vec3_t color, vec3_t org, int *dlightbits)
                                r = cl_dlights[k].radius*cl_dlights[k].radius*LIGHTSCALE;
                                if (f < r)
                                {
-                                       brightness = r * 16.0f / f;
+                                       brightness = r * (256.0f / LIGHTSCALE2) / f;
                                        color[0] += brightness * cl_dlights[k].color[0];
                                        color[1] += brightness * cl_dlights[k].color[1];
                                        color[2] += brightness * cl_dlights[k].color[2];
@@ -608,7 +608,7 @@ void R_DynamicLightPointNoMask(vec3_t color, vec3_t org)
                r = cl_dlights[i].radius*cl_dlights[i].radius*LIGHTSCALE;
                if (f < r)
                {
-                       brightness = r * 16.0f / f;
+                       brightness = r * (256.0f / LIGHTSCALE2) / f;
                        if (cl_dlights[i].dark)
                                brightness = -brightness;
                        color[0] += brightness * cl_dlights[i].color[0];
@@ -701,7 +701,7 @@ void R_LightModel(int numverts, vec3_t center, vec3_t basecolor)
                                nearlight[nearlights].color[0] = cl_dlights[i].color[0] * cl_dlights[i].radius * cl_dlights[i].radius * mod[0];
                                nearlight[nearlights].color[1] = cl_dlights[i].color[1] * cl_dlights[i].radius * cl_dlights[i].radius * mod[1];
                                nearlight[nearlights].color[2] = cl_dlights[i].color[2] * cl_dlights[i].radius * cl_dlights[i].radius * mod[2];
-                               t1 = (128.0f / LIGHTSCALE) / t2;
+                               t1 = (128.0f / LIGHTSCALE2) / t2;
                                basecolor[0] += nearlight[nearlights].color[0] * t1;
                                basecolor[1] += nearlight[nearlights].color[1] * t1;
                                basecolor[2] += nearlight[nearlights].color[2] * t1;
@@ -728,7 +728,7 @@ void R_LightModel(int numverts, vec3_t center, vec3_t basecolor)
                                dist[0] = cl_dlights[i].color[0] * cl_dlights[i].radius * cl_dlights[i].radius * mod[0];
                                dist[1] = cl_dlights[i].color[1] * cl_dlights[i].radius * cl_dlights[i].radius * mod[1];
                                dist[2] = cl_dlights[i].color[2] * cl_dlights[i].radius * cl_dlights[i].radius * mod[2];
-                               t1 = (192.0f / LIGHTSCALE) / t2;
+                               t1 = (224.0f / LIGHTSCALE2) / t2;
                                basecolor[0] += dist[0] * t1;
                                basecolor[1] += dist[1] * t1;
                                basecolor[2] += dist[2] * t1;
index b52a4cd..bd8167b 100644 (file)
--- a/r_light.h
+++ b/r_light.h
@@ -15,3 +15,4 @@ typedef struct
 // LordHavoc: this affects the lighting scale of the whole game
 #define LIGHTOFFSET 16384.0f
 #define LIGHTSCALE 4.0f
+#define LIGHTSCALE2 4.0f
index 4514e97..27ed2e5 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -192,7 +192,7 @@ void SV_SendServerinfo (client_t *client)
        char                    message[2048];
 
        MSG_WriteByte (&client->message, svc_print);
-       sprintf (message, "%c\nDARKPLACES VERSION %4.2f SERVER (%i CRC)", 2, VERSION, pr_crc);
+       sprintf (message, "%c\nDARKPLACES VERSION %4.2f BUILD %i SERVER (%i CRC)", 2, VERSION, buildnumber, pr_crc);
        MSG_WriteString (&client->message,message);
 
        MSG_WriteByte (&client->message, svc_serverinfo);
index fd1e536..c5b9b13 100644 (file)
@@ -438,7 +438,7 @@ int main (int c, char **v)
        else
        {
                fcntl(0, F_SETFL, fcntl (0, F_GETFL, 0) | FNDELAY);
-               printf ("Linux DarkPlaces -- Version %0.3f\n", VERSION);
+               printf ("Linux DarkPlaces -- Version %0.3f (build %i)\n", VERSION, buildnumber);
        }
 
        oldtime = Sys_FloatTime () - 0.1;