From dcdc37ea354f66f1a20f02af05e670e9c76a474e Mon Sep 17 00:00:00 2001 From: Denis Pauk Date: Mon, 17 Jan 2022 23:42:01 +0200 Subject: [PATCH] gl1: Scale 3x for nolerp 8bit textures --- src/client/refresh/gl1/gl1_image.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/client/refresh/gl1/gl1_image.c b/src/client/refresh/gl1/gl1_image.c index 299a0a0f..e794b6fb 100644 --- a/src/client/refresh/gl1/gl1_image.c +++ b/src/client/refresh/gl1/gl1_image.c @@ -353,9 +353,10 @@ R_ImageList_f(void) break; } - R_Printf(PRINT_ALL, " %3i %3i %s: %s %s\n", + R_Printf(PRINT_ALL, " %3i %3i %s: %s (%dx%d) %s\n", image->upload_width, image->upload_height, - palstrings[image->paletted], image->name, in_use); + palstrings[image->paletted], image->name, + image->width, image->height, in_use); } R_Printf(PRINT_ALL, @@ -951,9 +952,24 @@ R_LoadPic(char *name, byte *pic, int width, int realwidth, // resize 8bit images only when we forced such logic if (r_scale8bittextures->value) { - byte *image_converted = malloc(width * height * 4); - scale2x(pic, image_converted, width, height); - image->has_alpha = R_Upload8(image_converted, width * 2, height * 2, + byte *image_converted; + int scale = 2; + + // scale 3 times if lerp image + if (!nolerp && (vid.height >= 240 * 3)) + scale = 3; + + image_converted = malloc(width * height * scale * scale); + if (!image_converted) + return NULL; + + if (scale == 3) { + scale3x(pic, image_converted, width, height); + } else { + scale2x(pic, image_converted, width, height); + } + + image->has_alpha = R_Upload8(image_converted, width * scale, height * scale, (image->type != it_pic && image->type != it_sky), image->type == it_sky); free(image_converted);