From: havoc Date: Fri, 24 Aug 2007 02:33:01 +0000 (+0000) Subject: no longer compresses embedded textures (in q1 and hl formats) because X-Git-Tag: xonotic-v0.1.0preview~2940 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=d3f83f79787c8c4ce195593917333a941f1be6e2;p=xonotic%2Fdarkplaces.git no longer compresses embedded textures (in q1 and hl formats) because they tend to use little video memory to begin with git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7534 d7cf8633-e32d-0410-b094-e92efae38249 --- diff --git a/gl_draw.c b/gl_draw.c index 1f2dfe42..000a391d 100644 --- a/gl_draw.c +++ b/gl_draw.c @@ -339,15 +339,13 @@ cachepic_t *Draw_CachePic (const char *path, qboolean persistent) flags |= TEXF_PRECACHE; if (!strcmp(path, "gfx/colorcontrol/ditherpattern")) flags |= TEXF_CLAMP; - if (gl_texturecompression_2d.integer) - flags |= TEXF_COMPRESS; // load a high quality image from disk if possible - pic->tex = loadtextureimage(drawtexturepool, path, 0, 0, false, flags); + pic->tex = loadtextureimage(drawtexturepool, path, 0, 0, false, flags | (gl_texturecompression_2d.integer ? TEXF_COMPRESS : 0)); if (pic->tex == NULL && !strncmp(path, "gfx/", 4)) { // compatibility with older versions which did not require gfx/ prefix - pic->tex = loadtextureimage(drawtexturepool, path + 4, 0, 0, false, flags); + pic->tex = loadtextureimage(drawtexturepool, path + 4, 0, 0, false, flags | (gl_texturecompression_2d.integer ? TEXF_COMPRESS : 0)); } // if a high quality image was loaded, set the pic's size to match it, just // in case there's no low quality version to get the size from diff --git a/gl_rsurf.c b/gl_rsurf.c index da62f71e..1dd4c27c 100644 --- a/gl_rsurf.c +++ b/gl_rsurf.c @@ -1170,7 +1170,7 @@ void R_ReplaceWorldTexture (void) { if(t->width && !strcasecmp(t->name, r)) { - if ((skinframe = R_SkinFrame_LoadExternal((char*)newt, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | TEXF_PICMIP | TEXF_COMPRESS, true))) + if ((skinframe = R_SkinFrame_LoadExternal((char*)newt, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | TEXF_PICMIP, true))) { t->skinframes[0] = skinframe; Con_Printf("%s replaced with %s\n", r, newt); diff --git a/model_alias.c b/model_alias.c index fa8db9a8..ec808b70 100644 --- a/model_alias.c +++ b/model_alias.c @@ -1020,7 +1020,7 @@ void Mod_IDP0_Load(model_t *mod, void *buffer, void *bufferend) { tempskinframe = R_SkinFrame_LoadExternal(name, (r_mipskins.integer ? TEXF_MIPMAP : 0) | TEXF_ALPHA | TEXF_PICMIP | TEXF_COMPRESS, false); if (!tempskinframe) - tempskinframe = R_SkinFrame_LoadInternal(name, (r_mipskins.integer ? TEXF_MIPMAP : 0) | TEXF_PICMIP | TEXF_COMPRESS, true, r_fullbrights.integer, (unsigned char *)datapointer, skinwidth, skinheight, 8, NULL, NULL); + tempskinframe = R_SkinFrame_LoadInternal(name, (r_mipskins.integer ? TEXF_MIPMAP : 0) | TEXF_PICMIP, true, r_fullbrights.integer, (unsigned char *)datapointer, skinwidth, skinheight, 8, NULL, NULL); Mod_BuildAliasSkinFromSkinFrame(loadmodel->data_textures + totalskins * loadmodel->num_surfaces, tempskinframe); } datapointer += skinwidth * skinheight; diff --git a/model_brush.c b/model_brush.c index aaafcc15..e1accd99 100644 --- a/model_brush.c +++ b/model_brush.c @@ -1261,7 +1261,7 @@ void R_Q1BSP_LoadSplitSky (unsigned char *src, int width, int height, int bytesp // if sky isn't the right size, just use it as a solid layer if (width != 256 || height != 128) { - loadmodel->brush.solidskytexture = R_LoadTexture2D(loadmodel->texturepool, "sky_solidtexture", width, height, src, bytesperpixel == 4 ? TEXTYPE_RGBA : TEXTYPE_PALETTE, TEXF_PRECACHE | (gl_texturecompression_sky.integer ? TEXF_COMPRESS : 0), bytesperpixel == 1 ? palette_complete : NULL); + loadmodel->brush.solidskytexture = R_LoadTexture2D(loadmodel->texturepool, "sky_solidtexture", width, height, src, bytesperpixel == 4 ? TEXTYPE_RGBA : TEXTYPE_PALETTE, TEXF_PRECACHE, bytesperpixel == 1 ? palette_complete : NULL); loadmodel->brush.alphaskytexture = NULL; return; } @@ -1313,8 +1313,8 @@ void R_Q1BSP_LoadSplitSky (unsigned char *src, int width, int height, int bytesp } } - loadmodel->brush.solidskytexture = R_LoadTexture2D(loadmodel->texturepool, "sky_solidtexture", 128, 128, (unsigned char *) solidpixels, TEXTYPE_RGBA, TEXF_PRECACHE | (gl_texturecompression_sky.integer ? TEXF_COMPRESS : 0), NULL); - loadmodel->brush.alphaskytexture = R_LoadTexture2D(loadmodel->texturepool, "sky_alphatexture", 128, 128, (unsigned char *) alphapixels, TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE | (gl_texturecompression_sky.integer ? TEXF_COMPRESS : 0), NULL); + loadmodel->brush.solidskytexture = R_LoadTexture2D(loadmodel->texturepool, "sky_solidtexture", 128, 128, (unsigned char *) solidpixels, TEXTYPE_RGBA, TEXF_PRECACHE, NULL); + loadmodel->brush.alphaskytexture = R_LoadTexture2D(loadmodel->texturepool, "sky_alphatexture", 128, 128, (unsigned char *) alphapixels, TEXTYPE_RGBA, TEXF_ALPHA | TEXF_PRECACHE, NULL); } static void Mod_Q1BSP_LoadTextures(lump_t *l) @@ -1517,13 +1517,13 @@ static void Mod_Q1BSP_LoadTextures(lump_t *l) { tx->width = image_width; tx->height = image_height; - skinframe = R_SkinFrame_LoadInternal(tx->name, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | (r_picmipworld.integer ? TEXF_PICMIP : 0) | TEXF_COMPRESS, false, false, pixels, image_width, image_height, 32, NULL, NULL); + skinframe = R_SkinFrame_LoadInternal(tx->name, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | (r_picmipworld.integer ? TEXF_PICMIP : 0), false, false, pixels, image_width, image_height, 32, NULL, NULL); } if (freepixels) Mem_Free(freepixels); } else if (mtdata) // texture included - skinframe = R_SkinFrame_LoadInternal(tx->name, TEXF_MIPMAP | TEXF_PRECACHE | (r_picmipworld.integer ? TEXF_PICMIP : 0) | TEXF_COMPRESS, false, r_fullbrights.integer, mtdata, tx->width, tx->height, 8, NULL, NULL); + skinframe = R_SkinFrame_LoadInternal(tx->name, TEXF_MIPMAP | TEXF_PRECACHE | (r_picmipworld.integer ? TEXF_PICMIP : 0), false, r_fullbrights.integer, mtdata, tx->width, tx->height, 8, NULL, NULL); } // if skinframe is still NULL the "missing" texture will be used if (skinframe) diff --git a/model_sprite.c b/model_sprite.c index 7111d27f..d22f105f 100644 --- a/model_sprite.c +++ b/model_sprite.c @@ -66,7 +66,7 @@ static void Mod_Sprite_SharedSetup(const unsigned char *datapointer, int version float modelradius, interval; char name[MAX_QPATH], fogname[MAX_QPATH]; const void *startframes; - int texflags = (r_mipsprites.integer ? TEXF_MIPMAP : 0) | (r_picmipsprites.integer ? TEXF_PICMIP : 0) | TEXF_COMPRESS | TEXF_ALPHA | TEXF_CLAMP | TEXF_PRECACHE; + int texflags = (r_mipsprites.integer ? TEXF_MIPMAP : 0) | (r_picmipsprites.integer ? TEXF_PICMIP : 0) | TEXF_ALPHA | TEXF_CLAMP | TEXF_PRECACHE; modelradius = 0; if (loadmodel->numframes < 1) @@ -180,7 +180,7 @@ static void Mod_Sprite_SharedSetup(const unsigned char *datapointer, int version sprintf (name, "%s_%i_%i", loadmodel->name, i, j); else sprintf (name, "%s_%i", loadmodel->name, i); - if (!(skinframe = R_SkinFrame_LoadExternal(name, texflags, false))) + if (!(skinframe = R_SkinFrame_LoadExternal(name, texflags | TEXF_COMPRESS, false))) { if (groupframes > 1) sprintf (fogname, "%s_%i_%ifog", loadmodel->name, i, j); diff --git a/r_explosion.c b/r_explosion.c index ac5581e4..48ce2ef3 100644 --- a/r_explosion.c +++ b/r_explosion.c @@ -79,11 +79,11 @@ static void r_explosion_start(void) data[y][x][3] = bound(0, a, 255); } } - explosiontexture = R_LoadTexture2D(explosiontexturepool, "explosiontexture", 128, 128, &data[0][0][0], TEXTYPE_RGBA, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | TEXF_COMPRESS, NULL); + explosiontexture = R_LoadTexture2D(explosiontexturepool, "explosiontexture", 128, 128, &data[0][0][0], TEXTYPE_RGBA, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE, NULL); for (y = 0;y < 128;y++) for (x = 0;x < 128;x++) data[y][x][0] = data[y][x][1] = data[y][x][2] = 255; - explosiontexturefog = R_LoadTexture2D(explosiontexturepool, "explosiontexturefog", 128, 128, &data[0][0][0], TEXTYPE_RGBA, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE | TEXF_COMPRESS, NULL); + explosiontexturefog = R_LoadTexture2D(explosiontexturepool, "explosiontexturefog", 128, 128, &data[0][0][0], TEXTYPE_RGBA, TEXF_MIPMAP | TEXF_ALPHA | TEXF_PRECACHE, NULL); // note that explosions survive the restart }