mirror of
https://github.com/yquake2/yquake2remaster.git
synced 2024-11-25 05:51:01 +00:00
Add vk_nolerp_list support
This commit is contained in:
parent
539fea96bb
commit
b7bdd0be72
8 changed files with 42 additions and 28 deletions
|
@ -341,6 +341,11 @@ it's `+set busywait 0` (setting the `busywait` cvar) and `-portable`
|
||||||
* `2` - try to load the pack or scale up all 8bit textures if pack is
|
* `2` - try to load the pack or scale up all 8bit textures if pack is
|
||||||
not installed.
|
not installed.
|
||||||
|
|
||||||
|
* **vk_nolerp_list**: list separate by spaces of textures omitted from
|
||||||
|
bilinear filtering. Used by default to exclude the console and HUD
|
||||||
|
fonts. Make sure to include the default values when extending the
|
||||||
|
list.
|
||||||
|
|
||||||
* **vk_strings**: Print some basic Vulkan/GPU information.
|
* **vk_strings**: Print some basic Vulkan/GPU information.
|
||||||
|
|
||||||
* **vk_mem**: Print dynamic vertex/index/uniform/triangle fan buffer
|
* **vk_mem**: Print dynamic vertex/index/uniform/triangle fan buffer
|
||||||
|
|
|
@ -162,6 +162,7 @@ extern cvar_t *vk_aniso;
|
||||||
extern cvar_t *vk_sampleshading;
|
extern cvar_t *vk_sampleshading;
|
||||||
extern cvar_t *vk_device_idx;
|
extern cvar_t *vk_device_idx;
|
||||||
extern cvar_t *vk_retexturing;
|
extern cvar_t *vk_retexturing;
|
||||||
|
extern cvar_t *vk_nolerp_list;
|
||||||
|
|
||||||
extern cvar_t *vid_fullscreen;
|
extern cvar_t *vid_fullscreen;
|
||||||
extern cvar_t *vid_gamma;
|
extern cvar_t *vid_gamma;
|
||||||
|
@ -225,8 +226,8 @@ struct image_s *RE_RegisterSkin (char *name);
|
||||||
void LoadPCX (char *filename, byte **pic, byte **palette, int *width, int *height);
|
void LoadPCX (char *filename, byte **pic, byte **palette, int *width, int *height);
|
||||||
image_t *Vk_LoadPic(char *name, byte *pic, int width, int realwidth,
|
image_t *Vk_LoadPic(char *name, byte *pic, int width, int realwidth,
|
||||||
int height, int realheight, imagetype_t type,
|
int height, int realheight, imagetype_t type,
|
||||||
int bits, qvksampler_t *samplerType);
|
int bits);
|
||||||
image_t *Vk_FindImage (char *name, imagetype_t type, qvksampler_t *samplerType);
|
image_t *Vk_FindImage (char *name, imagetype_t type);
|
||||||
void Vk_TextureMode( char *string );
|
void Vk_TextureMode( char *string );
|
||||||
void Vk_LmapTextureMode( char *string );
|
void Vk_LmapTextureMode( char *string );
|
||||||
void Vk_ImageList_f (void);
|
void Vk_ImageList_f (void);
|
||||||
|
|
|
@ -31,9 +31,7 @@ Draw_InitLocal
|
||||||
*/
|
*/
|
||||||
void Draw_InitLocal (void)
|
void Draw_InitLocal (void)
|
||||||
{
|
{
|
||||||
// load console characters (don't bilerp characters)
|
draw_chars = Vk_FindImage("pics/conchars.pcx", it_pic);
|
||||||
qvksampler_t samplerType = S_NEAREST;
|
|
||||||
draw_chars = Vk_FindImage("pics/conchars.pcx", it_pic, &samplerType);
|
|
||||||
if (!draw_chars)
|
if (!draw_chars)
|
||||||
{
|
{
|
||||||
ri.Sys_Error(ERR_FATAL, "%s: Couldn't load pics/conchars.pcx", __func__);
|
ri.Sys_Error(ERR_FATAL, "%s: Couldn't load pics/conchars.pcx", __func__);
|
||||||
|
@ -91,10 +89,10 @@ image_t *RE_Draw_FindPic (char *name)
|
||||||
char fullname[MAX_QPATH];
|
char fullname[MAX_QPATH];
|
||||||
|
|
||||||
Com_sprintf(fullname, sizeof(fullname), "pics/%s.pcx", name);
|
Com_sprintf(fullname, sizeof(fullname), "pics/%s.pcx", name);
|
||||||
vk = Vk_FindImage(fullname, it_pic, NULL);
|
vk = Vk_FindImage(fullname, it_pic);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
vk = Vk_FindImage(name + 1, it_pic, NULL);
|
vk = Vk_FindImage(name + 1, it_pic);
|
||||||
|
|
||||||
return vk;
|
return vk;
|
||||||
}
|
}
|
||||||
|
|
|
@ -939,12 +939,19 @@ This is also used as an entry point for the generated r_notexture
|
||||||
image_t *
|
image_t *
|
||||||
Vk_LoadPic(char *name, byte *pic, int width, int realwidth,
|
Vk_LoadPic(char *name, byte *pic, int width, int realwidth,
|
||||||
int height, int realheight, imagetype_t type,
|
int height, int realheight, imagetype_t type,
|
||||||
int bits, qvksampler_t *samplerType)
|
int bits)
|
||||||
{
|
{
|
||||||
image_t *image;
|
image_t *image;
|
||||||
byte *texBuffer;
|
byte *texBuffer;
|
||||||
int upload_width, upload_height;
|
int upload_width, upload_height;
|
||||||
|
|
||||||
|
qboolean nolerp = false;
|
||||||
|
|
||||||
|
if (vk_nolerp_list != NULL && vk_nolerp_list->string != NULL)
|
||||||
|
{
|
||||||
|
nolerp = strstr(vk_nolerp_list->string, name) != NULL;
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
// find a free image_t
|
// find a free image_t
|
||||||
|
@ -998,7 +1005,7 @@ Vk_LoadPic(char *name, byte *pic, int width, int realwidth,
|
||||||
|
|
||||||
QVk_CreateTexture(&image->vk_texture, (unsigned char*)texBuffer,
|
QVk_CreateTexture(&image->vk_texture, (unsigned char*)texBuffer,
|
||||||
image->upload_width, image->upload_height,
|
image->upload_width, image->upload_height,
|
||||||
samplerType ? *samplerType : vk_current_sampler);
|
nolerp ? S_NEAREST : vk_current_sampler);
|
||||||
QVk_DebugSetObjectName((uint64_t)image->vk_texture.resource.image,
|
QVk_DebugSetObjectName((uint64_t)image->vk_texture.resource.image,
|
||||||
VK_OBJECT_TYPE_IMAGE, va("Image: %s", name));
|
VK_OBJECT_TYPE_IMAGE, va("Image: %s", name));
|
||||||
QVk_DebugSetObjectName((uint64_t)image->vk_texture.imageView,
|
QVk_DebugSetObjectName((uint64_t)image->vk_texture.imageView,
|
||||||
|
@ -1041,7 +1048,7 @@ static image_t *Vk_LoadWal (char *name, imagetype_t type)
|
||||||
image = Vk_LoadPic(name, (byte *)mt + ofs,
|
image = Vk_LoadPic(name, (byte *)mt + ofs,
|
||||||
width, width,
|
width, width,
|
||||||
height, height,
|
height, height,
|
||||||
type, 8, NULL);
|
type, 8);
|
||||||
|
|
||||||
ri.FS_FreeFile ((void *)mt);
|
ri.FS_FreeFile ((void *)mt);
|
||||||
|
|
||||||
|
@ -1049,7 +1056,7 @@ static image_t *Vk_LoadWal (char *name, imagetype_t type)
|
||||||
}
|
}
|
||||||
|
|
||||||
static image_t*
|
static image_t*
|
||||||
Vk_LoadHiColorImage(char *name, const char* namewe, const char *ext, imagetype_t type, qvksampler_t *samplerType)
|
Vk_LoadHiColorImage(char *name, const char* namewe, const char *ext, imagetype_t type)
|
||||||
{
|
{
|
||||||
image_t *image = NULL;
|
image_t *image = NULL;
|
||||||
byte *pic = NULL;
|
byte *pic = NULL;
|
||||||
|
@ -1083,7 +1090,7 @@ Vk_LoadHiColorImage(char *name, const char* namewe, const char *ext, imagetype_t
|
||||||
image = Vk_LoadPic(name, pic,
|
image = Vk_LoadPic(name, pic,
|
||||||
width, realwidth,
|
width, realwidth,
|
||||||
height, realheight,
|
height, realheight,
|
||||||
type, 32, samplerType);
|
type, 32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1096,14 +1103,14 @@ Vk_LoadHiColorImage(char *name, const char* namewe, const char *ext, imagetype_t
|
||||||
}
|
}
|
||||||
|
|
||||||
static image_t*
|
static image_t*
|
||||||
Vk_LoadImage(char *name, const char* namewe, const char *ext, imagetype_t type, qvksampler_t *samplerType)
|
Vk_LoadImage(char *name, const char* namewe, const char *ext, imagetype_t type)
|
||||||
{
|
{
|
||||||
image_t *image = NULL;
|
image_t *image = NULL;
|
||||||
|
|
||||||
// with retexturing
|
// with retexturing
|
||||||
if (vk_retexturing->value)
|
if (vk_retexturing->value)
|
||||||
{
|
{
|
||||||
image = Vk_LoadHiColorImage(name, namewe, ext, type, samplerType);
|
image = Vk_LoadHiColorImage(name, namewe, ext, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!image)
|
if (!image)
|
||||||
|
@ -1126,7 +1133,7 @@ Vk_LoadImage(char *name, const char* namewe, const char *ext, imagetype_t type,
|
||||||
image = Vk_LoadPic(name, pic,
|
image = Vk_LoadPic(name, pic,
|
||||||
width, width,
|
width, width,
|
||||||
height, height,
|
height, height,
|
||||||
type, 8, samplerType);
|
type, 8);
|
||||||
|
|
||||||
if (palette)
|
if (palette)
|
||||||
free(palette);
|
free(palette);
|
||||||
|
@ -1144,7 +1151,7 @@ Vk_LoadImage(char *name, const char* namewe, const char *ext, imagetype_t type,
|
||||||
image = Vk_LoadPic(name, pic,
|
image = Vk_LoadPic(name, pic,
|
||||||
width, width,
|
width, width,
|
||||||
height, height,
|
height, height,
|
||||||
type, 32, samplerType);
|
type, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pic)
|
if (pic)
|
||||||
|
@ -1161,7 +1168,7 @@ Vk_FindImage
|
||||||
Finds or loads the given image
|
Finds or loads the given image
|
||||||
===============
|
===============
|
||||||
*/
|
*/
|
||||||
image_t *Vk_FindImage (char *name, imagetype_t type, qvksampler_t *samplerType)
|
image_t *Vk_FindImage (char *name, imagetype_t type)
|
||||||
{
|
{
|
||||||
image_t *image;
|
image_t *image;
|
||||||
int i, len;
|
int i, len;
|
||||||
|
@ -1211,7 +1218,7 @@ image_t *Vk_FindImage (char *name, imagetype_t type, qvksampler_t *samplerType)
|
||||||
//
|
//
|
||||||
// load the pic from disk
|
// load the pic from disk
|
||||||
//
|
//
|
||||||
return Vk_LoadImage(name, namewe, ext, type, samplerType);
|
return Vk_LoadImage(name, namewe, ext, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1222,7 +1229,7 @@ RE_RegisterSkin
|
||||||
*/
|
*/
|
||||||
struct image_s *RE_RegisterSkin (char *name)
|
struct image_s *RE_RegisterSkin (char *name)
|
||||||
{
|
{
|
||||||
return Vk_FindImage (name, it_skin, NULL);
|
return Vk_FindImage (name, it_skin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -433,7 +433,7 @@ static void Mod_LoadTexinfo (lump_t *l)
|
||||||
out->next = NULL;
|
out->next = NULL;
|
||||||
Com_sprintf (name, sizeof(name), "textures/%s.wal", in->texture);
|
Com_sprintf (name, sizeof(name), "textures/%s.wal", in->texture);
|
||||||
|
|
||||||
out->image = Vk_FindImage (name, it_wall, NULL);
|
out->image = Vk_FindImage (name, it_wall);
|
||||||
if (!out->image)
|
if (!out->image)
|
||||||
{
|
{
|
||||||
R_Printf(PRINT_ALL, "Couldn't load %s\n", name);
|
R_Printf(PRINT_ALL, "Couldn't load %s\n", name);
|
||||||
|
@ -1010,7 +1010,7 @@ static void Mod_LoadAliasModel (model_t *mod, void *buffer)
|
||||||
for (i=0 ; i<pheader->num_skins ; i++)
|
for (i=0 ; i<pheader->num_skins ; i++)
|
||||||
{
|
{
|
||||||
mod->skins[i] = Vk_FindImage ((char *)pheader + pheader->ofs_skins + i*MAX_SKINNAME
|
mod->skins[i] = Vk_FindImage ((char *)pheader + pheader->ofs_skins + i*MAX_SKINNAME
|
||||||
, it_skin, NULL);
|
, it_skin);
|
||||||
}
|
}
|
||||||
|
|
||||||
mod->mins[0] = -32;
|
mod->mins[0] = -32;
|
||||||
|
@ -1063,7 +1063,7 @@ static void Mod_LoadSpriteModel (model_t *mod, void *buffer)
|
||||||
sprout->frames[i].origin_y = LittleLong (sprin->frames[i].origin_y);
|
sprout->frames[i].origin_y = LittleLong (sprin->frames[i].origin_y);
|
||||||
memcpy (sprout->frames[i].name, sprin->frames[i].name, MAX_SKINNAME);
|
memcpy (sprout->frames[i].name, sprin->frames[i].name, MAX_SKINNAME);
|
||||||
mod->skins[i] = Vk_FindImage (sprout->frames[i].name,
|
mod->skins[i] = Vk_FindImage (sprout->frames[i].name,
|
||||||
it_sprite, NULL);
|
it_sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
mod->type = mod_sprite;
|
mod->type = mod_sprite;
|
||||||
|
@ -1125,13 +1125,13 @@ struct model_s *RE_RegisterModel (char *name)
|
||||||
|
|
||||||
sprout = (dsprite_t *)mod->extradata;
|
sprout = (dsprite_t *)mod->extradata;
|
||||||
for (i=0 ; i<sprout->numframes ; i++)
|
for (i=0 ; i<sprout->numframes ; i++)
|
||||||
mod->skins[i] = Vk_FindImage (sprout->frames[i].name, it_sprite, NULL);
|
mod->skins[i] = Vk_FindImage (sprout->frames[i].name, it_sprite);
|
||||||
}
|
}
|
||||||
else if (mod->type == mod_alias)
|
else if (mod->type == mod_alias)
|
||||||
{
|
{
|
||||||
pheader = (dmdl_t *)mod->extradata;
|
pheader = (dmdl_t *)mod->extradata;
|
||||||
for (i=0 ; i<pheader->num_skins ; i++)
|
for (i=0 ; i<pheader->num_skins ; i++)
|
||||||
mod->skins[i] = Vk_FindImage ((char *)pheader + pheader->ofs_skins + i*MAX_SKINNAME, it_skin, NULL);
|
mod->skins[i] = Vk_FindImage ((char *)pheader + pheader->ofs_skins + i*MAX_SKINNAME, it_skin);
|
||||||
//PGM
|
//PGM
|
||||||
mod->numframes = pheader->num_frames;
|
mod->numframes = pheader->num_frames;
|
||||||
//PGM
|
//PGM
|
||||||
|
|
|
@ -123,6 +123,7 @@ cvar_t *vk_mip_nearfilter;
|
||||||
cvar_t *vk_sampleshading;
|
cvar_t *vk_sampleshading;
|
||||||
cvar_t *vk_device_idx;
|
cvar_t *vk_device_idx;
|
||||||
cvar_t *vk_retexturing;
|
cvar_t *vk_retexturing;
|
||||||
|
cvar_t *vk_nolerp_list;
|
||||||
|
|
||||||
cvar_t *vid_fullscreen;
|
cvar_t *vid_fullscreen;
|
||||||
cvar_t *vid_gamma;
|
cvar_t *vid_gamma;
|
||||||
|
@ -1177,6 +1178,8 @@ R_Register( void )
|
||||||
vk_sampleshading = ri.Cvar_Get("vk_sampleshading", "1", CVAR_ARCHIVE);
|
vk_sampleshading = ri.Cvar_Get("vk_sampleshading", "1", CVAR_ARCHIVE);
|
||||||
vk_device_idx = ri.Cvar_Get("vk_device", "-1", CVAR_ARCHIVE);
|
vk_device_idx = ri.Cvar_Get("vk_device", "-1", CVAR_ARCHIVE);
|
||||||
vk_retexturing = ri.Cvar_Get("vk_retexturing", "1", CVAR_ARCHIVE);
|
vk_retexturing = ri.Cvar_Get("vk_retexturing", "1", CVAR_ARCHIVE);
|
||||||
|
/* don't bilerp characters and crosshairs */
|
||||||
|
vk_nolerp_list = ri.Cvar_Get("vk_nolerp_list", "pics/conchars.pcx pics/ch1.pcx pics/ch2.pcx pics/ch3.pcx", 0);
|
||||||
|
|
||||||
// clamp vk_msaa to accepted range so that video menu doesn't crash on us
|
// clamp vk_msaa to accepted range so that video menu doesn't crash on us
|
||||||
if (vk_msaa->value < 0)
|
if (vk_msaa->value < 0)
|
||||||
|
|
|
@ -58,7 +58,7 @@ void RE_InitParticleTexture (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r_particletexture = Vk_LoadPic("***particle***", (byte *)data,
|
r_particletexture = Vk_LoadPic("***particle***", (byte *)data,
|
||||||
8, 8, 8, 8, it_sprite, 32, NULL);
|
8, 8, 8, 8, it_sprite, 32);
|
||||||
|
|
||||||
//
|
//
|
||||||
// particle texture
|
// particle texture
|
||||||
|
@ -74,7 +74,7 @@ void RE_InitParticleTexture (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r_squaretexture = Vk_LoadPic("***square***", (byte *)data,
|
r_squaretexture = Vk_LoadPic("***square***", (byte *)data,
|
||||||
8, 8, 8, 8, it_sprite, 32, NULL);
|
8, 8, 8, 8, it_sprite, 32);
|
||||||
|
|
||||||
//
|
//
|
||||||
// also use this for bad textures, but without alpha
|
// also use this for bad textures, but without alpha
|
||||||
|
@ -90,7 +90,7 @@ void RE_InitParticleTexture (void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r_notexture = Vk_LoadPic("***r_notexture***", (byte *)data,
|
r_notexture = Vk_LoadPic("***r_notexture***", (byte *)data,
|
||||||
8, 8, 8, 8, it_wall, 32, NULL);
|
8, 8, 8, 8, it_wall, 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -686,7 +686,7 @@ void RE_SetSky (char *name, float rotate, vec3_t axis)
|
||||||
|
|
||||||
Com_sprintf(pathname, sizeof(pathname), "env/%s%s.tga", skyname, suf[i]);
|
Com_sprintf(pathname, sizeof(pathname), "env/%s%s.tga", skyname, suf[i]);
|
||||||
|
|
||||||
sky_images[i] = Vk_FindImage(pathname, it_sky, NULL);
|
sky_images[i] = Vk_FindImage(pathname, it_sky);
|
||||||
if (!sky_images[i])
|
if (!sky_images[i])
|
||||||
sky_images[i] = r_notexture;
|
sky_images[i] = r_notexture;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue