- split gl_texture_hqresize into two variables - one for mode, one for multiplier.

This commit is contained in:
Rachael Alexanderson 2018-12-10 14:25:29 -05:00
parent cbb5f8a0dc
commit 28516c2def
7 changed files with 179 additions and 163 deletions

View file

@ -60,6 +60,8 @@ EXTERN_CVAR (Color, am_fdwallcolor)
EXTERN_CVAR (Color, am_cdwallcolor)
EXTERN_CVAR (Float, spc_amp)
EXTERN_CVAR (Bool, wi_percents)
EXTERN_CVAR (Int, gl_texture_hqresizemode)
EXTERN_CVAR (Int, gl_texture_hqresizemult)
FGameConfigFile::FGameConfigFile ()
{
@ -395,6 +397,93 @@ void FGameConfigFile::DoGlobalSetup ()
FBaseCVar *var = FindCVar("snd_hrtf", NULL);
if (var != NULL) var->ResetToDefault();
}
if (last < 216)
{
FBaseCVar *var = FindCVar("gl_texture_hqresize", NULL);
if (var != NULL)
{
auto v = var->GetGenericRep(CVAR_Int);
switch (v.Int)
{
case 1:
gl_texture_hqresizemode = 1; gl_texture_hqresizemult = 2;
break;
case 2:
gl_texture_hqresizemode = 1; gl_texture_hqresizemult = 3;
break;
case 3:
gl_texture_hqresizemode = 1; gl_texture_hqresizemult = 4;
break;
case 4:
gl_texture_hqresizemode = 2; gl_texture_hqresizemult = 2;
break;
case 5:
gl_texture_hqresizemode = 2; gl_texture_hqresizemult = 3;
break;
case 6:
gl_texture_hqresizemode = 2; gl_texture_hqresizemult = 4;
break;
case 7:
gl_texture_hqresizemode = 3; gl_texture_hqresizemult = 2;
break;
case 8:
gl_texture_hqresizemode = 3; gl_texture_hqresizemult = 3;
break;
case 9:
gl_texture_hqresizemode = 3; gl_texture_hqresizemult = 4;
break;
case 10:
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 2;
break;
case 11:
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 3;
break;
case 12:
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 4;
break;
case 18:
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 5;
break;
case 19:
gl_texture_hqresizemode = 4; gl_texture_hqresizemult = 6;
break;
case 13:
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 2;
break;
case 14:
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 3;
break;
case 15:
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 4;
break;
case 16:
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 5;
break;
case 17:
gl_texture_hqresizemode = 5; gl_texture_hqresizemult = 6;
break;
case 20:
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 2;
break;
case 21:
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 3;
break;
case 22:
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 4;
break;
case 23:
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 5;
break;
case 24:
gl_texture_hqresizemode = 6; gl_texture_hqresizemult = 6;
break;
case 0:
default:
gl_texture_hqresizemode = 0; gl_texture_hqresizemult = 1;
break;
}
}
}
}
}
}

View file

@ -78,7 +78,7 @@ namespace
}
void R_ShowCurrentScaling();
CUSTOM_CVAR(Float, vid_scalefactor, 1.0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
CUSTOM_CVAR(Float, vid_scalefactor, 1.0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
{
setsizeneeded = true;
if (self < 0.05 || self > 2.0)

View file

@ -45,18 +45,22 @@
#include "parallel_for.h"
#include "hwrenderer/textures/hw_material.h"
CUSTOM_CVAR(Int, gl_texture_hqresize, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
EXTERN_CVAR(Int, gl_texture_hqresizemult)
CUSTOM_CVAR(Int, gl_texture_hqresizemode, 0, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
{
if (self < 0 || self > 24)
{
if (self < 0 || self > 6)
self = 0;
}
#ifndef HAVE_MMX
// This is to allow the menu option to work properly so that these filters can be skipped while cycling through them.
if (self == 7) self = 10;
if (self == 8) self = 10;
if (self == 9) self = 6;
#endif
if ((gl_texture_hqresizemult > 4) && (self < 4) && (self > 0))
gl_texture_hqresizemult = 4;
FMaterial::FlushAll();
}
CUSTOM_CVAR(Int, gl_texture_hqresizemult, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG | CVAR_NOINITCALL)
{
if (self < 1 || self > 6)
self = 1;
if ((self > 4) && (gl_texture_hqresizemode < 4) && (gl_texture_hqresizemode > 0))
self = 4;
FMaterial::FlushAll();
}
@ -385,64 +389,60 @@ unsigned char *FTexture::CreateUpsampledTextureBuffer (unsigned char *inputBuffe
if (inputBuffer)
{
int type = gl_texture_hqresize;
int type = gl_texture_hqresizemode;
int mult = gl_texture_hqresizemult;
outWidth = inWidth;
outHeight = inHeight;
#ifdef HAVE_MMX
// hqNx MMX does not preserve the alpha channel so fall back to C-version for such textures
if (hasAlpha && type > 6 && type <= 9)
if (hasAlpha && type == 3)
{
type -= 3;
type = 2;
}
#endif
if (mult < 2)
type = 0;
switch (type)
{
case 1:
return scaleNxHelper( &scale2x, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
switch(mult)
{
case 2:
return scaleNxHelper( &scale2x, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 3:
return scaleNxHelper( &scale3x, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
default:
return scaleNxHelper( &scale4x, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
}
case 2:
return scaleNxHelper( &scale3x, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 3:
return scaleNxHelper( &scale4x, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 4:
return hqNxHelper( &hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 5:
return hqNxHelper( &hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 6:
return hqNxHelper( &hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
switch(mult)
{
case 2:
return hqNxHelper( &hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 3:
return hqNxHelper( &hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
default:
return hqNxHelper( &hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
}
#ifdef HAVE_MMX
case 7:
return hqNxAsmHelper( &HQnX_asm::hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 8:
return hqNxAsmHelper( &HQnX_asm::hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 9:
return hqNxAsmHelper( &HQnX_asm::hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 3:
switch(mult)
{
case 2:
return hqNxAsmHelper( &HQnX_asm::hq2x_32, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 3:
return hqNxAsmHelper( &HQnX_asm::hq3x_32, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
default:
return hqNxAsmHelper( &HQnX_asm::hq4x_32, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
}
#endif
case 10:
case 11:
case 12:
return xbrzHelper(xbrz::scale, type - 8, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 13:
case 14:
case 15:
case 16:
case 17:
return xbrzHelper(xbrzOldScale, type - 11, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 18:
case 19:
return xbrzHelper(xbrz::scale, type - 13, inputBuffer, inWidth, inHeight, outWidth, outHeight);
case 20:
return normalNxHelper( &normalNx, 2, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 21:
return normalNxHelper( &normalNx, 3, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 22:
return normalNxHelper( &normalNx, 4, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 23:
return normalNxHelper( &normalNx, 5, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 24:
return normalNxHelper( &normalNx, 6, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 4:
return xbrzHelper(xbrz::scale, mult, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 5:
return xbrzHelper(xbrzOldScale, mult, inputBuffer, inWidth, inHeight, outWidth, outHeight );
case 6:
return normalNxHelper( &normalNx, mult, inputBuffer, inWidth, inHeight, outWidth, outHeight );
}
}
return inputBuffer;

View file

@ -68,7 +68,7 @@ const char *GetVersionString();
// Version stored in the ini's [LastRun] section.
// Bump it if you made some configuration change that you want to
// be able to migrate in FGameConfigFile::DoGlobalSetup().
#define LASTRUNVERSION "215"
#define LASTRUNVERSION "216"
// Protocol version used in demos.
// Bump it if you change existing DEM_ commands or add new ones.

View file

@ -2783,7 +2783,8 @@ GLTEXMNU_ANISOTROPIC = "Anisotropic filter";
GLTEXMNU_TEXFORMAT = "Texture Format";
GLTEXMNU_ENABLEHIRES = "Enable hires textures";
GLTEXMNU_HQRESIZE = "High Quality Resize mode";
GLTEXMNU_HQRESIZEWARN = "This mode requires %d times more video memory";
GLTEXMNU_HQRESIZEMULT = "High Quality Resize multiplier";
GLTEXMNU_HQRESIZEWARN = "This mode requires %d times more video memory";
GLTEXMNU_RESIZETEX = "Resize textures";
GLTEXMNU_RESIZESPR = "Resize sprites";
GLTEXMNU_RESIZEFNT = "Resize fonts";
@ -2881,30 +2882,12 @@ OPTVAL_YAXIS = "Y Axis";
OPTVAL_XYAXIS = "X/Y Axis";
OPTVAL_SQUARE = "Square";
OPTVAL_ROUND = "Round";
OPTVAL_SCALE2X = "Scale2x";
OPTVAL_SCALE3X = "Scale3x";
OPTVAL_SCALE4X = "Scale4x";
OPTVAL_NORMAL2X = "Normal2x";
OPTVAL_NORMAL3X = "Normal3x";
OPTVAL_NORMAL4X = "Normal4x";
OPTVAL_NORMAL5X = "Normal5x";
OPTVAL_NORMAL6X = "Normal6x";
OPTVAL_HQ2X = "hq2x";
OPTVAL_HQ3X = "hq3x";
OPTVAL_HQ4X = "hq4x";
OPTVAL_HQ2XMMX = "hq2x MMX";
OPTVAL_HQ3XMMX = "hq3x MMX";
OPTVAL_HQ4XMMX = "hq4x MMX";
OPTVAL_2XBRZ = "2xBRZ";
OPTVAL_3XBRZ = "3xBRZ";
OPTVAL_4XBRZ = "4xBRZ";
OPTVAL_5XBRZ = "5xBRZ";
OPTVAL_6XBRZ = "6xBRZ";
OPTVAL_OLD_2XBRZ = "Old 2xBRZ";
OPTVAL_OLD_3XBRZ = "Old 3xBRZ";
OPTVAL_OLD_4XBRZ = "Old 4xBRZ";
OPTVAL_OLD_5XBRZ = "Old 5xBRZ";
OPTVAL_OLD_6XBRZ = "Old 6xBRZ";
OPTVAL_SCALENX = "ScaleNx";
OPTVAL_NORMALNX = "NormalNx";
OPTVAL_HQNX = "hqNx";
OPTVAL_HQNXMMX = "hqNx MMX";
OPTVAL_NXBRZ = "xBRZ";
OPTVAL_OLD_NXBRZ = "Old xBRZ";
OPTVAL_RADIAL = "Radial";
OPTVAL_PIXELFUZZ = "Pixel fuzz";
OPTVAL_SMOOTHFUZZ = "Smooth fuzz";

View file

@ -2151,51 +2151,32 @@ OptionValue "Particles"
OptionValue "HqResizeModes"
{
0, "$OPTVAL_OFF"
1, "$OPTVAL_SCALE2X"
2, "$OPTVAL_SCALE3X"
3, "$OPTVAL_SCALE4X"
4, "$OPTVAL_HQ2X"
5, "$OPTVAL_HQ3X"
6, "$OPTVAL_HQ4X"
7, "$OPTVAL_HQ2XMMX"
8, "$OPTVAL_HQ3XMMX"
9, "$OPTVAL_HQ4XMMX"
10, "$OPTVAL_2XBRZ"
11, "$OPTVAL_3XBRZ"
12, "$OPTVAL_4XBRZ"
18, "$OPTVAL_5XBRZ"
19, "$OPTVAL_6XBRZ"
13, "$OPTVAL_OLD_2XBRZ"
14, "$OPTVAL_OLD_3XBRZ"
15, "$OPTVAL_OLD_4XBRZ"
16, "$OPTVAL_OLD_5XBRZ"
17, "$OPTVAL_OLD_6XBRZ"
20, "$OPTVAL_NORMAL2X"
21, "$OPTVAL_NORMAL3X"
22, "$OPTVAL_NORMAL4X"
23, "$OPTVAL_NORMAL5X"
24, "$OPTVAL_NORMAL6X"
1, "$OPTVAL_SCALENX"
2, "$OPTVAL_HQNX"
3, "$OPTVAL_HQNXMMX"
4, "$OPTVAL_NXBRZ"
5, "$OPTVAL_OLD_NXBRZ"
6, "$OPTVAL_NORMALNX"
}
OptionValue "HqResizeMultipliers"
{
1, "$OPTVAL_OFF"
2, "2x"
3, "3x"
4, "4x"
5, "5x"
6, "6x"
}
OptionValue "HqResizeModesNoMMX"
{
0, "$OPTVAL_OFF"
1, "$OPTVAL_SCALE2X"
2, "$OPTVAL_SCALE3X"
3, "$OPTVAL_SCALE4X"
4, "$OPTVAL_HQ2X"
5, "$OPTVAL_HQ3X"
6, "$OPTVAL_HQ4X"
10, "$OPTVAL_2XBRZ"
11, "$OPTVAL_3XBRZ"
12, "$OPTVAL_4XBRZ"
18, "$OPTVAL_5XBRZ"
19, "$OPTVAL_6XBRZ"
13, "$OPTVAL_OLD_2XBRZ"
14, "$OPTVAL_OLD_3XBRZ"
15, "$OPTVAL_OLD_4XBRZ"
16, "$OPTVAL_OLD_5XBRZ"
17, "$OPTVAL_OLD_6XBRZ"
1, "$OPTVAL_SCALENX"
2, "$OPTVAL_HQNX"
4, "$OPTVAL_NXBRZ"
5, "$OPTVAL_OLD_NXBRZ"
6, "$OPTVAL_NORMALNX"
}
OptionValue "FogMode"
@ -2262,12 +2243,13 @@ OptionMenu "GLTextureGLOptions" protected
ifOption(MMX)
{
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresize, "HqResizeModes"
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresizemode, "HqResizeModes"
}
else
{
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresize, "HqResizeModesNoMMX"
Option "$GLTEXMNU_HQRESIZE", gl_texture_hqresizemode, "HqResizeModesNoMMX"
}
Option "$GLTEXMNU_HQRESIZEMULT", gl_texture_hqresizemult, "HqResizeMultipliers"
StaticText "!HQRESIZE_WARNING!"
Option "$GLTEXMNU_RESIZETEX", gl_texture_hqresize_textures, "OnOff"

View file

@ -579,47 +579,9 @@ class GLTextureGLOptions : OptionMenu
{
string message;
if (gl_texture_hqresize > 0)
if (gl_texture_hqresizemult > 1 && gl_texture_hqresizemode > 0)
{
int multiplier;
switch (gl_texture_hqresize)
{
case 1:
case 4:
case 7:
case 10:
case 13:
case 20:
multiplier = 4;
break;
case 2:
case 5:
case 8:
case 11:
case 14:
case 21:
multiplier = 9;
break;
case 3:
case 6:
case 9:
case 12:
case 15:
case 22:
multiplier = 16;
break;
case 16:
case 18:
case 23:
multiplier = 25;
break;
case 17:
case 19:
case 24:
multiplier = 36;
break;
}
int multiplier = gl_texture_hqresizemult * gl_texture_hqresizemult;
string localized = StringTable.Localize("$GLTEXMNU_HQRESIZEWARN");
message = String.Format(localized, multiplier);