- converted the Polymost CVARs.

This commit is contained in:
Christoph Oelckers 2019-10-23 21:11:37 +02:00
parent c1041a9c37
commit 20df360778
28 changed files with 237 additions and 550 deletions

View file

@ -1546,7 +1546,7 @@ void SetVideoMode(CGameMenuItemChain *pItem)
UNREFERENCED_PARAMETER(pItem);
resolution_t p = { xres, yres, fullscreen, bpp, 0 };
int32_t prend = videoGetRenderMode();
int32_t pvsync = vsync;
int32_t pvsync = vid_vsync;
int32_t nResolution = itemOptionsDisplayModeResolution.m_nFocus;
resolution_t n = { gResolution[nResolution].xdim, gResolution[nResolution].ydim,
@ -1565,13 +1565,13 @@ void SetVideoMode(CGameMenuItemChain *pItem)
else
{
onvideomodechange(p.bppmax > 8);
vsync = videoSetVsync(pvsync);
vid_vsync = videoSetVsync(pvsync);
}
}
else onvideomodechange(n.bppmax > 8);
viewResizeView(gViewSize);
vsync = videoSetVsync(nvsync);
vid_vsync = videoSetVsync(nvsync);
gSetup.fullscreen = fullscreen;
gSetup.xdim = xres;
gSetup.ydim = yres;
@ -1612,7 +1612,7 @@ void SetupVideoModeMenu(CGameMenuItemChain *pItem)
#endif
for (int i = 0; i < 3; i++)
{
if (vsync == nVSyncValues[i])
if (vid_vsync == nVSyncValues[i])
{
itemOptionsDisplayModeVSync.m_nFocus = i;
break;
@ -1667,7 +1667,7 @@ void SetupVideoPolymostMenu(CGameMenuItemChain *pItem)
itemOptionsDisplayPolymostTextureMode.m_nFocus = 0;
for (int i = 0; i < 2; i++)
{
if (nTextureModeValues[i] == gltexfiltermode)
if (nTextureModeValues[i] == hw_texfilter)
{
itemOptionsDisplayPolymostTextureMode.m_nFocus = i;
break;
@ -1676,36 +1676,36 @@ void SetupVideoPolymostMenu(CGameMenuItemChain *pItem)
itemOptionsDisplayPolymostAnisotropy.m_nFocus = 0;
for (int i = 0; i < 6; i++)
{
if (nAnisotropyValues[i] == glanisotropy)
if (nAnisotropyValues[i] == hw_anisotropy)
{
itemOptionsDisplayPolymostAnisotropy.m_nFocus = i;
break;
}
}
itemOptionsDisplayPolymostTrueColorTextures.at20 = usehightile;
itemOptionsDisplayPolymostTrueColorTextures.at20 = hw_hightile;
itemOptionsDisplayPolymostTexQuality.m_nFocus = r_downsize;
itemOptionsDisplayPolymostPreloadCache.at20 = r_precache;
itemOptionsDisplayPolymostDetailTex.at20 = r_detailmapping;
itemOptionsDisplayPolymostGlowTex.at20 = r_glowmapping;
itemOptionsDisplayPolymost3DModels.at20 = usemodels;
itemOptionsDisplayPolymostDetailTex.at20 = hw_detailmapping;
itemOptionsDisplayPolymostGlowTex.at20 = hw_glowmapping;
itemOptionsDisplayPolymost3DModels.at20 = hw_models;
itemOptionsDisplayPolymostDeliriumBlur.at20 = gDeliriumBlur;
}
void UpdateTextureMode(CGameMenuItemZCycle *pItem)
{
gltexfiltermode = nTextureModeValues[pItem->m_nFocus];
hw_texfilter = nTextureModeValues[pItem->m_nFocus];
gltexapplyprops();
}
void UpdateAnisotropy(CGameMenuItemZCycle *pItem)
{
glanisotropy = nAnisotropyValues[pItem->m_nFocus];
hw_anisotropy = nAnisotropyValues[pItem->m_nFocus];
gltexapplyprops();
}
void UpdateTrueColorTextures(CGameMenuItemZBool *pItem)
{
usehightile = pItem->at20;
hw_hightile = pItem->at20;
}
#endif
@ -1732,17 +1732,17 @@ void UpdatePreloadCache(CGameMenuItemZBool *pItem)
void UpdateDetailTex(CGameMenuItemZBool *pItem)
{
r_detailmapping = pItem->at20;
hw_detailmapping = pItem->at20;
}
void UpdateGlowTex(CGameMenuItemZBool *pItem)
{
r_glowmapping = pItem->at20;
hw_glowmapping = pItem->at20;
}
void Update3DModels(CGameMenuItemZBool *pItem)
{
usemodels = pItem->at20;
hw_models = pItem->at20;
}
void UpdateDeliriumBlur(CGameMenuItemZBool *pItem)
@ -1753,13 +1753,13 @@ void UpdateDeliriumBlur(CGameMenuItemZBool *pItem)
void PreDrawDisplayPolymost(CGameMenuItem *pItem)
{
if (pItem == &itemOptionsDisplayPolymostTexQuality)
pItem->bEnable = usehightile;
pItem->bEnable = hw_hightile;
else if (pItem == &itemOptionsDisplayPolymostPreloadCache)
pItem->bEnable = usehightile;
pItem->bEnable = hw_hightile;
else if (pItem == &itemOptionsDisplayPolymostDetailTex)
pItem->bEnable = usehightile;
pItem->bEnable = hw_hightile;
else if (pItem == &itemOptionsDisplayPolymostGlowTex)
pItem->bEnable = usehightile;
pItem->bEnable = hw_hightile;
}
#endif

View file

@ -770,11 +770,6 @@ int32_t registerosdcommands(void)
{
char buffer[256];
//
// if (VOLUMEONE)
// OSD_RegisterFunction("changelevel","changelevel <level>: warps to the given level", osdcmd_changelevel);
// else
// {
OSD_RegisterFunction("changelevel","changelevel <volume> <level>: warps to the given level", osdcmd_changelevel);
OSD_RegisterFunction("map","map <mapfile>: loads the given user map", osdcmd_map);
OSD_RegisterFunction("demo","demo <demofile or demonum>: starts the given demo", osdcmd_demo);

View file

@ -2283,11 +2283,11 @@ void viewProcessSprites(int32_t cX, int32_t cY, int32_t cZ, int32_t cA, int32_t
case 7:
{
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pTSprite->picnum, pTSprite->pal) >= 0 && !(spriteext[nSprite].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pTSprite->picnum, pTSprite->pal) >= 0 && !(spriteext[nSprite].flags&SPREXT_NOTMD))
break;
#endif
// Can be overridden by def script
if (usevoxels && gDetail >= 4 && videoGetRenderMode() != REND_POLYMER && tiletovox[pTSprite->picnum] == -1 && voxelIndex[pTSprite->picnum] != -1)
if (r_voxels && gDetail >= 4 && videoGetRenderMode() != REND_POLYMER && tiletovox[pTSprite->picnum] == -1 && voxelIndex[pTSprite->picnum] != -1)
{
if ((pTSprite->flags&kHitagRespawn) == 0)
{
@ -2312,7 +2312,7 @@ void viewProcessSprites(int32_t cX, int32_t cY, int32_t cZ, int32_t cA, int32_t
nAnim--;
}
if ((pTSprite->cstat&48) != 48 && usevoxels && videoGetRenderMode() != REND_POLYMER)
if ((pTSprite->cstat&48) != 48 && r_voxels && videoGetRenderMode() != REND_POLYMER)
{
int nAnimTile = pTSprite->picnum + animateoffs_replace(pTSprite->picnum, 32768+pTSprite->owner);
@ -3562,7 +3562,7 @@ void viewLoadingScreenWide(void)
{
videoClearScreen(0);
#ifdef USE_OPENGL
if ((blood_globalflags&BLOOD_FORCE_WIDELOADSCREEN) || (bLoadScreenCrcMatch && !(usehightile && h_xsize[kLoadScreen])))
if ((blood_globalflags&BLOOD_FORCE_WIDELOADSCREEN) || (bLoadScreenCrcMatch && !(hw_hightile && h_xsize[kLoadScreen])))
#else
if ((blood_globalflags&BLOOD_FORCE_WIDELOADSCREEN) || bLoadScreenCrcMatch)
#endif

View file

@ -21,7 +21,6 @@ extern char quitevent, appactive;
extern char modechange;
extern char nogl;
extern int32_t vsync;
extern int32_t swapcomplete;
extern int32_t r_borderless;
extern int32_t r_displayindex;
@ -34,7 +33,6 @@ extern uint32_t r_screenxy;
extern int32_t xres, yres, bpp, fullscreen, bytesperline, refreshfreq;
extern intptr_t frameplace;
extern char offscreenrendering;
extern int32_t nofog;
void calc_ylookup(int32_t bpl, int32_t lastyidx);

View file

@ -30,6 +30,7 @@ static_assert('\xff' == 255, "Char must be unsigned!");
#include "vfs.h"
#include "cache1d.h"
#include "textures.h"
#include "c_cvars.h"
enum rendmode_t {
REND_CLASSIC,
@ -850,11 +851,10 @@ extern float debug1, debug2;
#endif
extern int16_t tiletovox[MAXTILES];
extern int32_t usevoxels, voxscale[MAXVOXELS];
extern int32_t voxscale[MAXVOXELS];
extern char g_haveVoxels;
#ifdef USE_OPENGL
extern int32_t usemodels, usehightile;
extern int32_t rendmode;
#endif
extern uint8_t globalr, globalg, globalb;
@ -1290,9 +1290,6 @@ enum cutsceneflags {
extern int32_t benchmarkScreenshot;
#ifdef USE_OPENGL
extern int32_t glanisotropy;
extern int32_t gltexfiltermode;
extern int32_t r_useindexedcolortextures;
enum {
TEXFILTER_OFF = 0, // GL_NEAREST
@ -1305,17 +1302,20 @@ extern int32_t gltexmaxsize;
void gltexapplyprops (void);
void texcache_invalidate(void);
# ifdef USE_GLEXT
extern int32_t r_detailmapping;
extern int32_t r_glowmapping;
# endif
EXTERN_CVAR(Bool, hw_detailmapping)
EXTERN_CVAR(Bool, hw_glowmapping)
EXTERN_CVAR(Bool, hw_animsmoothing)
EXTERN_CVAR(Bool, hw_hightile)
EXTERN_CVAR(Bool, hw_models)
EXTERN_CVAR(Float, hw_shadescale)
EXTERN_CVAR(Int, vid_vsync)
EXTERN_CVAR(Int, hw_anisotropy)
EXTERN_CVAR(Int, hw_texfilter)
EXTERN_CVAR(Bool, hw_useindexedcolortextures)
EXTERN_CVAR(Bool, hw_parallaxskypanning)
EXTERN_CVAR(Bool, r_voxels)
# ifdef USE_GLEXT
extern int32_t r_vbocount;
# endif
extern int32_t r_animsmoothing;
extern int32_t r_parallaxskyclamping;
extern int32_t r_parallaxskypanning;
extern int32_t r_downsize;
extern int32_t r_downsizevar;
extern int32_t mdtims, omdtims;
@ -1379,9 +1379,9 @@ static FORCE_INLINE bool tilehasmodelorvoxel(int const tilenume, int pal)
UNREFERENCED_PARAMETER(pal);
return
#ifdef USE_OPENGL
(videoGetRenderMode() >= REND_POLYMOST && mdinited && usemodels && tile2model[Ptile2tile(tilenume, pal)].modelid != -1) ||
(videoGetRenderMode() >= REND_POLYMOST && mdinited && hw_models && tile2model[Ptile2tile(tilenume, pal)].modelid != -1) ||
#endif
(videoGetRenderMode() <= REND_POLYMOST && usevoxels && tiletovox[tilenume] != -1);
(videoGetRenderMode() <= REND_POLYMOST && r_voxels && tiletovox[tilenume] != -1);
}
int32_t md_defineframe(int32_t modelid, const char *framename, int32_t tilenume,

View file

@ -5,6 +5,7 @@
#ifndef osd_h_
#define osd_h_
#include <functional>
#include "vfs.h"
#include "mutex.h"

View file

@ -21,12 +21,6 @@ extern float gcosang, gsinang, gcosang2, gsinang2;
extern float gchang, gshang, gctang, gstang;
extern float gvrcorrection;
struct glfiltermodes {
const char *name;
};
#define NUMGLFILTERMODES 6
extern struct glfiltermodes glfiltermodes[NUMGLFILTERMODES];
extern void Polymost_prepare_loadboard(void);
void polymost_outputGLDebugMessage(uint8_t severity, const char* format, ...);
@ -63,8 +57,6 @@ int32_t polymost_printext256(int32_t xpos, int32_t ypos, int16_t col, int16_t ba
extern float curpolygonoffset;
extern float shadescale;
extern int32_t shadescale_unbounded;
extern uint8_t alphahackarray[MAXTILES];
extern int32_t r_scenebrightness;

View file

@ -362,7 +362,7 @@ void animvpx_setup_glstate(int32_t animvpx_flags)
texture = GLInterface.NewTexture();
if ((animvpx_flags & CUTSCENE_TEXTUREFILTER && gltexfiltermode == TEXFILTER_ON) || animvpx_flags & CUTSCENE_FORCEFILTER ||
if ((animvpx_flags & CUTSCENE_TEXTUREFILTER && hw_texfilter == TEXFILTER_ON) || animvpx_flags & CUTSCENE_FORCEFILTER ||
(!(animvpx_flags & CUTSCENE_TEXTUREFILTER) && !(animvpx_flags & CUTSCENE_FORCENOFILTER))) // if no flags, then use filter for IVFs
{
sampler = SamplerClampXY;

View file

@ -201,7 +201,6 @@ void makeasmwriteable(void)
{
}
int32_t vsync=0;
int32_t g_logFlushWindow = 1;
#ifdef USE_OPENGL
@ -218,67 +217,6 @@ struct glinfo_t glinfo =
// Used to register the game's / editor's osdcmd_vidmode() functions here.
int32_t (*baselayer_osdcmd_vidmode_func)(osdcmdptr_t parm);
static int osdfunc_setrendermode(osdcmdptr_t parm)
{
if (parm->numparms != 1)
return OSDCMD_SHOWHELP;
int32_t m = Bstrtol(parm->parms[0], NULL, 10);
if (m != REND_CLASSIC && m != REND_POLYMOST && m != REND_POLYMER)
return OSDCMD_SHOWHELP;
if ((m==REND_CLASSIC) != (bpp==8) && baselayer_osdcmd_vidmode_func)
{
// Mismatch between video mode and requested renderer, do auto switch.
osdfuncparm_t parm;
char arg[4];
const char *ptrptr[1];
ptrptr[0] = arg;
Bmemset(&parm, 0, sizeof(parm));
if (m==REND_CLASSIC)
Bmemcpy(&arg, "8", 2);
else
Bmemcpy(&arg, "32", 3);
// CAUTION: we assume that the osdcmd_vidmode function doesn't use any
// other member!
parm.numparms = 1;
parm.parms = ptrptr;
baselayer_osdcmd_vidmode_func(&parm);
}
videoSetRenderMode(m);
char const *renderer = "other";
switch (videoGetRenderMode())
{
case REND_CLASSIC:
#ifdef NOASM
renderer = "classic software (C)";
#else
renderer = "classic software (ASM)";
#endif
break;
case REND_POLYMOST:
renderer = "polygonal OpenGL";
break;
#ifdef POLYMER
case REND_POLYMER:
renderer = "great justice (Polymer)";
break;
#endif
}
OSD_Printf("Rendering method changed to %s\n", renderer);
return OSDCMD_OK;
}
#ifdef DEBUGGINGAIDS
static int osdcmd_hicsetpalettetint(osdcmdptr_t parm)
@ -311,21 +249,6 @@ int osdcmd_glinfo(osdcmdptr_t UNUSED(parm))
}
#endif
static int osdcmd_cvar_set_baselayer(osdcmdptr_t parm)
{
int32_t r = osdcmd_cvar_set(parm);
if (r != OSDCMD_OK) return r;
if (!Bstrcasecmp(parm->name, "vid_gamma") || !Bstrcasecmp(parm->name, "vid_brightness") || !Bstrcasecmp(parm->name, "vid_contrast"))
{
videoSetPalette(GAMMA_CALC,0,0);
return r;
}
return r;
}
int32_t baselayer_init(void)
{
@ -336,36 +259,8 @@ int32_t baselayer_init(void)
#else
# define SCREENASPECT_CVAR_TYPE (CVAR_UINT)
#endif
static osdcvardata_t cvars_engine[] =
{
{ "lz4compressionlevel","adjust LZ4 compression level used for savegames",(void *) &lz4CompressionLevel, CVAR_INT, 1, 32 },
{ "r_borderless", "borderless windowed mode: 0: never 1: always 2: if resolution matches desktop", (void *) &r_borderless, CVAR_INT|CVAR_RESTARTVID, 0, 2 },
{ "r_displayindex","index of output display",(void *)&r_displayindex, CVAR_INT|CVAR_RESTARTVID, 0, 10 },
{ "r_usenewaspect","enable/disable new screen aspect ratio determination code",(void *) &r_usenewaspect, CVAR_BOOL, 0, 1 },
{ "r_screenaspect","if using r_usenewaspect and in fullscreen, screen aspect ratio in the form XXYY, e.g. 1609 for 16:9",
(void *) &r_screenxy, SCREENASPECT_CVAR_TYPE, 0, 9999 },
{ "r_fpgrouscan","use floating-point numbers for slope rendering",(void *) &r_fpgrouscan, CVAR_BOOL, 0, 1 },
{ "r_novoxmips","turn off/on the use of mipmaps when rendering 8-bit voxels",(void *) &novoxmips, CVAR_BOOL, 0, 1 },
{ "r_voxels","enable/disable automatic sprite->voxel rendering",(void *) &usevoxels, CVAR_BOOL, 0, 1 },
#ifdef YAX_ENABLE
{ "r_tror_nomaskpass", "enable/disable additional pass in TROR software rendering", (void *)&r_tror_nomaskpass, CVAR_BOOL, 0, 1 },
#endif
{ "r_windowpositioning", "enable/disable window position memory", (void *) &windowpos, CVAR_BOOL, 0, 1 },
{ "vid_gamma","adjusts gamma component of gamma ramp",(void *) &g_videoGamma, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
{ "vid_contrast","adjusts contrast component of gamma ramp",(void *) &g_videoContrast, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
{ "vid_brightness","adjusts brightness component of gamma ramp",(void *) &g_videoBrightness, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
};
for (auto & i : cvars_engine)
OSD_RegisterCvar(&i, (i.flags & CVAR_FUNCPTR) ? osdcmd_cvar_set_baselayer : osdcmd_cvar_set);
#ifdef USE_OPENGL
OSD_RegisterFunction("setrendermode","setrendermode <number>: sets the engine's rendering mode.\n"
"Mode numbers are:\n"
" 0 - Classic Build software\n"
" 3 - Polygonal OpenGL\n"
,
osdfunc_setrendermode);
# ifdef DEBUGGINGAIDS
OSD_RegisterFunction("hicsetpalettetint","hicsetpalettetint: sets palette tinting values",osdcmd_hicsetpalettetint);

View file

@ -96,7 +96,6 @@ static TArray<TArray<uint8_t>> voxelmemory;
void (*loadvoxel_replace)(int32_t voxindex) = NULL;
int16_t tiletovox[MAXTILES];
int32_t usevoxels = 1;
#ifdef USE_OPENGL
static char *voxfilenames[MAXVOXELS];
#endif
@ -5176,7 +5175,7 @@ static void classicDrawSprite(int32_t snum)
if ((cstat&48)==48)
vtilenum = tilenum; // if the game wants voxels, it gets voxels
else if ((cstat & 48) != 32 && usevoxels && tiletovox[tilenum] != -1 && spritenum != -1 && !(spriteext[spritenum].flags&SPREXT_NOTMD))
else if ((cstat & 48) != 32 && r_voxels && tiletovox[tilenum] != -1 && spritenum != -1 && !(spriteext[spritenum].flags&SPREXT_NOTMD))
{
vtilenum = tiletovox[tilenum];
cstat |= 48;
@ -8876,7 +8875,7 @@ void renderDrawMasks(void)
const int32_t xs = tspriteptr[i]->x-globalposx, ys = tspriteptr[i]->y-globalposy;
const int32_t yp = dmulscale6(xs,cosviewingrangeglobalang,ys,sinviewingrangeglobalang);
#ifdef USE_OPENGL
const int32_t modelp = (usemodels && tile2model[tspriteptr[i]->picnum].modelid >= 0);
const int32_t modelp = (hw_models && tile2model[tspriteptr[i]->picnum].modelid >= 0);
#endif
if (yp > (4<<8))

View file

@ -533,7 +533,7 @@ void updateanimation(md2model_t *m, tspriteptr_t tspr, uint8_t lpal)
OSD_Printf("1: c > n\n");
#endif
int32_t const smoothdurationp = (r_animsmoothing && (tile2model[tile].smoothduration != 0));
int32_t const smoothdurationp = (hw_animsmoothing && (tile2model[tile].smoothduration != 0));
spritesmooth_t * const smooth = &spritesmooth[((unsigned)tspr->owner < MAXSPRITES+MAXUNIQHUDID) ? tspr->owner : MAXSPRITES+MAXUNIQHUDID-1];
spriteext_t * const sprext = &spriteext[((unsigned)tspr->owner < MAXSPRITES+MAXUNIQHUDID) ? tspr->owner : MAXSPRITES+MAXUNIQHUDID-1];
@ -630,7 +630,7 @@ void updateanimation(md2model_t *m, tspriteptr_t tspr, uint8_t lpal)
{ if (i > j-65536) i = j-65536; }
else { if (i >= j) { i -= j; if (i >= j) i %= j; } }
if (r_animsmoothing && smooth->mdsmooth)
if (hw_animsmoothing && smooth->mdsmooth)
{
m->nframe = anim ? anim->startframe : smooth->mdcurframe;
m->cframe = smooth->mdoldframe;
@ -665,7 +665,7 @@ void updateanimation(md2model_t *m, tspriteptr_t tspr, uint8_t lpal)
#endif
m->nframe = m->cframe+1;
if (anim && m->nframe > anim->endframe) // VERIFY: (!(r_animsmoothing && smooth->mdsmooth)) implies (anim!=NULL) ?
if (anim && m->nframe > anim->endframe) // VERIFY: (!(hw_animsmoothing && smooth->mdsmooth)) implies (anim!=NULL) ?
m->nframe = anim->startframe;
smooth->mdoldframe = m->cframe;
@ -1617,7 +1617,7 @@ static int32_t polymost_md3draw(md3model_t *m, tspriteptr_t tspr)
GLInterface.SetCull(Cull_Back, winding);
// tinting
pc[0] = pc[1] = pc[2] = ((float)numshades - min(max((globalshade * shadescale) + m->shadeoff, 0.f), (float)numshades)) / (float)numshades;
pc[0] = pc[1] = pc[2] = ((float)numshades - min(max((globalshade * hw_shadescale) + m->shadeoff, 0.f), (float)numshades)) / (float)numshades;
auto h = hictinting[globalpal];
GLInterface.SetTinting(h.f, PalEntry(h.sr, h.sg, h.sb), PalEntry(h.r, h.g, h.b));
@ -1740,14 +1740,14 @@ static int32_t polymost_md3draw(md3model_t *m, tspriteptr_t tspr)
// The data lookup here is one incredible mess. Thanks to whoever cooked this up... :(
if (!(tspr->extra&TSPR_EXTRA_MDHACK))
{
det = tex = r_detailmapping ? mdloadskin((md2model_t *) m, tile2model[Ptile2tile(tspr->picnum, lpal)].skinnum, DETAILPAL, surfi, nullptr) : nullptr;
det = tex = hw_detailmapping ? mdloadskin((md2model_t *) m, tile2model[Ptile2tile(tspr->picnum, lpal)].skinnum, DETAILPAL, surfi, nullptr) : nullptr;
if (det)
{
for (auto sk = m->skinmap; sk; sk = sk->next)
if ((int32_t) sk->palette == DETAILPAL && sk->skinnum == tile2model[Ptile2tile(tspr->picnum, lpal)].skinnum && sk->surfnum == surfi)
detscale = sk->param;
}
glow = r_glowmapping ? mdloadskin((md2model_t *) m, tile2model[Ptile2tile(tspr->picnum, lpal)].skinnum, GLOWPAL, surfi, nullptr) : 0;
glow = hw_glowmapping ? mdloadskin((md2model_t *) m, tile2model[Ptile2tile(tspr->picnum, lpal)].skinnum, GLOWPAL, surfi, nullptr) : 0;
}
GLInterface.SetModelTexture(tex, globalpal, xpanning, ypanning, det, detscale, glow);

View file

@ -16,20 +16,71 @@ Ken Silverman's official web site: http://www.advsys.net/ken
#include "textures.h"
#include "bitmap.h"
#include "../../glbackend/glbackend.h"
#include "c_cvars.h"
#include "gamecvars.h"
CVAR(Bool, hw_detailmapping, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
CVAR(Bool, hw_glowmapping, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
CVAR(Bool, hw_polygonmode, 0, 0)
CVARD(Bool, hw_animsmoothing, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "enable/disable model animation smoothing")
CVARD(Bool, hw_hightile, true, CVAR_ARCHIVE|CVAR_GLOBALCONFIG, "enable/disable hightile texture rendering")
CVARD(Bool, hw_models, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "enable/disable model rendering")
CVARD(Bool, hw_parallaxskypanning, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "enable/disable parallaxed floor/ceiling panning when drawing a parallaxing sky")
//{ "r_projectionhack", "enable/disable projection hack", (void*)&glprojectionhacks, CVAR_INT, 0, 2 }, What is this?
CVARD(Bool, hw_shadeinterpolate, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "enable/disable shade interpolation")
CVARD(Float, hw_shadescale, 1.0f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "multiplier for shading")
CVARD(Bool, hw_useindexedcolortextures, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "enable/disable indexed color texture rendering")
CUSTOM_CVAR(Int, vid_vsync, 1, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
{
static bool recursion;
if (!recursion)
{
recursion = true;
self = videoSetVsync(self);
recursion = false;
}
}
CUSTOM_CVARD(Int, hw_texfilter, TEXFILTER_ON, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "changes the texture filtering settings")
{
static const char* const glfiltermodes[] =
{
"NEAREST",
"LINEAR",
"NEAREST_MIPMAP_NEAREST",
"LINEAR_MIPMAP_NEAREST",
"NEAREST_MIPMAP_LINEAR",
"LINEAR_MIPMAP_LINEAR",
"LINEAR_MIPMAP_LINEAR with NEAREST mag"
};
if (self < 0 || self > 6) self = 0;
else
{
gltexapplyprops();
OSD_Printf("Texture filtering mode changed to %s\n", glfiltermodes[hw_texfilter]);
}
}
CUSTOM_CVARD(Int, hw_anisotropy, 4, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "changes the OpenGL texture anisotropy setting")
{
gltexapplyprops();
}
//{ "r_yshearing", "enable/disable y-shearing", (void*)&r_yshearing, CVAR_BOOL, 0, 1 }, disabled because not fully functional
// For testing - will be removed later.
CVAR(Int, skytile, 0, 0)
extern char textfont[2048], smalltextfont[2048];
bool playing_rr;
bool playing_blood;
int skytile;
int32_t rendmode=0;
int32_t usemodels=1;
int32_t usehightile=1;
int fixpalette = 0, fixpalswap = 0;
typedef struct { float x, cy[2], fy[2]; int32_t tag; int16_t n, p, ctag, ftag; } vsptyp;
#define VSPMAX 2048 //<- careful!
@ -54,9 +105,6 @@ static float dxb1[MAXWALLSB], dxb2[MAXWALLSB];
#define SOFTROTMAT 0
float shadescale = 1.0f;
int32_t shadescale_unbounded = 0;
int32_t r_pogoDebug = 0;
int32_t polymostcenterhoriz = 100;
@ -81,34 +129,16 @@ int psectnum, pwallnum, pbottomwall, pisbottomwall, psearchstat;
static int32_t drawpoly_srepeat = 0, drawpoly_trepeat = 0;
#define MAX_DRAWPOLY_VERTS 8
struct glfiltermodes glfiltermodes[NUMGLFILTERMODES] =
{
{"NEAREST"},
{"LINEAR"},
{"NEAREST_MIPMAP_NEAREST"},
{"LINEAR_MIPMAP_NEAREST"},
{"NEAREST_MIPMAP_LINEAR"},
{"LINEAR_MIPMAP_LINEAR"}
};
int32_t glanisotropy = 0; // 0 = maximum supported by card
int32_t gltexfiltermode = TEXFILTER_OFF;
int32_t r_polygonmode = 0; // 0:GL_FILL,1:GL_LINE,2:GL_POINT //FUK
static int32_t lastglpolygonmode = 0; //FUK
#ifdef USE_GLEXT
int32_t glmultisample = 0, glnvmultisamplehint = 0;
int32_t r_detailmapping = 1;
int32_t r_glowmapping = 1;
#endif
int32_t glprojectionhacks = 2;
static FHardwareTexture *polymosttext = 0;
int32_t glrendmode = REND_POLYMOST;
int32_t r_shadeinterpolate = 1;
int32_t r_animsmoothing = 1;
int32_t r_downsize = 0;
int32_t r_downsizevar = -1;
int32_t r_scenebrightness = 0;
@ -122,8 +152,6 @@ int32_t r_yshearing = 0;
// used for fogcalc
static float fogresult, fogresult2;
int32_t r_useindexedcolortextures = -1;
static inline float float_trans(uint32_t maskprops, uint8_t blend)
{
switch (maskprops)
@ -140,7 +168,6 @@ char ptempbuf[MAXWALLSB<<1];
// polymost ART sky control
int32_t r_parallaxskyclamping = 1;
int32_t r_parallaxskypanning = 1;
#define MIN_CACHETIME_PRINT 10
@ -166,11 +193,11 @@ void gltexapplyprops(void)
if (GLInterface.glinfo.maxanisotropy > 1.f)
{
if (glanisotropy <= 0 || glanisotropy > GLInterface.glinfo.maxanisotropy)
glanisotropy = (int32_t)GLInterface.glinfo.maxanisotropy;
if (hw_anisotropy <= 0 || hw_anisotropy > GLInterface.glinfo.maxanisotropy)
hw_anisotropy = (int32_t)GLInterface.glinfo.maxanisotropy;
}
GLInterface.mSamplers->SetTextureFilterMode(gltexfiltermode, glanisotropy);
GLInterface.mSamplers->SetTextureFilterMode(hw_texfilter, hw_anisotropy);
// do not force switch indexed textures with the filter.
}
@ -308,12 +335,12 @@ static float get_projhack_ratio(void)
static void resizeglcheck(void)
{
//FUK
if (lastglpolygonmode != r_polygonmode)
if (lastglpolygonmode != hw_polygonmode)
{
lastglpolygonmode = r_polygonmode;
GLInterface.SetWireframe(r_polygonmode == 1);
lastglpolygonmode = hw_polygonmode;
GLInterface.SetWireframe(hw_polygonmode == 1);
}
if (r_polygonmode) //FUK
if (hw_polygonmode) //FUK
{
GLInterface.ClearScreen(1, 1, 1, true);
}
@ -403,7 +430,7 @@ int32_t polymost_maskWallHasTranslucency(uwalltype const * const wall)
auto tex = TileFiles.tiles[wall->picnum];
auto si = tex->FindReplacement(wall->pal);
if (si && usehightile) tex = si->faces[0];
if (si && hw_hightile) tex = si->faces[0];
if (tex->Get8BitPixels()) return false;
return tex && tex->GetTranslucency();
}
@ -416,7 +443,7 @@ int32_t polymost_spriteHasTranslucency(uspritetype const * const tspr)
auto tex = TileFiles.tiles[tspr->picnum];
auto si = tex->FindReplacement(tspr->shade, 0);
if (si && usehightile) tex = si->faces[0];
if (si && hw_hightile) tex = si->faces[0];
if (tex->Get8BitPixels()) return false;
return tex && tex->GetTranslucency();
}
@ -2017,7 +2044,7 @@ static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, i
xtex.u = otex.d * (t * double(((uint64_t)xdimscale * yxaspect) * viewingrange)) *
(1.0 / (16384.0 * 65536.0 * 65536.0 * 5.0 * 1024.0));
ytex.v = vv[1];
otex.v = r_parallaxskypanning ? vv[0] + dd*(float)global_cf_ypanning*(float)ti*(1.f/256.f) : vv[0];
otex.v = hw_parallaxskypanning ? vv[0] + dd*(float)global_cf_ypanning*(float)ti*(1.f/256.f) : vv[0];
float x0 = xys[0].x, x1 = xys[0].x;
@ -2028,7 +2055,7 @@ static void polymost_flatskyrender(vec2f_t const* const dpxy, int32_t const n, i
}
int const npot = (1<<(picsiz[globalpicnum]&15)) != tilesiz.x;
int const xpanning = (r_parallaxskypanning?global_cf_xpanning:0);
int const xpanning = (hw_parallaxskypanning?global_cf_xpanning:0);
GLInterface.SetClamp((npot || xpanning != 0) ? 0 : 2);
@ -2322,7 +2349,7 @@ static void polymost_drawalls(int32_t const bunch)
skyzbufferhack = 1;
//if (!usehightile || !hicfindskybox(globalpicnum, globalpal))
//if (!hw_hightile || !hicfindskybox(globalpicnum, globalpal))
{
float const ghorizbak = ghoriz;
pow2xsplit = 0;
@ -2580,7 +2607,7 @@ static void polymost_drawalls(int32_t const bunch)
skyzbufferhack = 1;
//if (!usehightile || !hicfindskybox(globalpicnum, globalpal))
//if (!hw_hightile || !hicfindskybox(globalpicnum, globalpal))
{
float const ghorizbak = ghoriz;
pow2xsplit = 0;
@ -3046,11 +3073,11 @@ void polymost_scansector(int32_t sectnum)
vec2_t const s = { spr->x-globalposx, spr->y-globalposy };
if ((spr->cstat&48) ||
(usemodels && tile2model[spr->picnum].modelid>=0) ||
(hw_models && tile2model[spr->picnum].modelid>=0) ||
((s.x * gcosang) + (s.y * gsinang) > 0))
{
if ((spr->cstat&(64+48))!=(64+16) ||
(usevoxels && tiletovox[spr->picnum] >= 0 && voxmodels[tiletovox[spr->picnum]]) ||
(r_voxels && tiletovox[spr->picnum] >= 0 && voxmodels[tiletovox[spr->picnum]]) ||
dmulscale6(sintable[(spr->ang+512)&2047],-s.x, sintable[spr->ang&2047],-s.y) > 0)
if (renderAddTsprite(z, sectnum))
break;
@ -3319,7 +3346,7 @@ void polymost_drawrooms()
ghoriz = fix16_to_float(qglobalhoriz);
ghorizcorrect = fix16_to_float((100-polymostcenterhoriz)*divscale16(xdimenscale, viewingrange));
GLInterface.SetShadeInterpolate(r_shadeinterpolate);
GLInterface.SetShadeInterpolate(hw_shadeinterpolate);
//global cos/sin height angle
if (r_yshearing)
@ -3945,7 +3972,7 @@ void polymost_drawsprite(int32_t snum)
if ((globalorientation & 48) != 48) // only non-voxel sprites should do this
{
int const flag = usehightile && h_xsize[globalpicnum];
int const flag = hw_hightile && h_xsize[globalpicnum];
off = { (int32_t)tspr->xoffset + (flag ? h_xoffs[globalpicnum] : picanm[globalpicnum].xofs),
(int32_t)tspr->yoffset + (flag ? h_yoffs[globalpicnum] : picanm[globalpicnum].yofs) };
}
@ -3964,14 +3991,14 @@ void polymost_drawsprite(int32_t snum)
while (!(spriteext[spritenum].flags & SPREXT_NOTMD))
{
if (usemodels && tile2model[Ptile2tile(tspr->picnum, tspr->pal)].modelid >= 0 &&
if (hw_models && tile2model[Ptile2tile(tspr->picnum, tspr->pal)].modelid >= 0 &&
tile2model[Ptile2tile(tspr->picnum, tspr->pal)].framenum >= 0)
{
if (polymost_mddraw(tspr)) return;
break; // else, render as flat sprite
}
if (usevoxels && (tspr->cstat & 48) != 48 && tiletovox[tspr->picnum] >= 0 && voxmodels[tiletovox[tspr->picnum]])
if (r_voxels && (tspr->cstat & 48) != 48 && tiletovox[tspr->picnum] >= 0 && voxmodels[tiletovox[tspr->picnum]])
{
if (polymost_voxdraw(voxmodels[tiletovox[tspr->picnum]], tspr)) return;
break; // else, render as flat sprite
@ -4002,7 +4029,7 @@ void polymost_drawsprite(int32_t snum)
vec2_16_t const oldsiz = tilesiz[globalpicnum];
vec2_t tsiz = { oldsiz.x, oldsiz.y };
if (usehightile && h_xsize[globalpicnum])
if (hw_hightile && h_xsize[globalpicnum])
tsiz = { h_xsize[globalpicnum], h_ysize[globalpicnum] };
if (tsiz.x <= 0 || tsiz.y <= 0)
@ -4723,7 +4750,7 @@ void polymost_dorotatesprite(int32_t sx, int32_t sy, int32_t z, int16_t a, int16
int8_t dashade, uint8_t dapalnum, int32_t dastat, uint8_t daalpha, uint8_t dablend,
int32_t cx1, int32_t cy1, int32_t cx2, int32_t cy2, int32_t uniqid)
{
if (usemodels && tile2model[picnum].hudmem[(dastat&4)>>2])
if (hw_models && tile2model[picnum].hudmem[(dastat&4)>>2])
{
polymost_dorotatespritemodel(sx, sy, z, a, picnum, dashade, dapalnum, dastat, daalpha, dablend, uniqid);
return;
@ -5346,229 +5373,10 @@ int32_t polymost_printext256(int32_t xpos, int32_t ypos, int16_t col, int16_t ba
return 0;
}
// This is for testing the shade map calculator needed for true color shading.
void palookupinfo()
{
auto pal = basepaltable[0];
int black = -1, white = -1;
int brightness = 0;
int brightest = -1, darkest = -1;
int brightlum = 0, darklum = 255;
for (int i = 0; i < 765; i += 3)
{
if (pal[i] == 0 && pal[i + 1] == 0 && pal[i + 2] == 0) black = i;
if (pal[i] == 255 && pal[i + 1] == 255 && pal[i + 2] == 255) white = i/3;
int lumi = Luminance(pal[i], pal[i + 1], pal[i + 2]);
brightness += lumi;
if (lumi < darklum)
{
darklum = lumi;
darkest = i;
}
if (lumi > brightlum)
{
brightlum = lumi;
brightest = i;
}
}
brightness /= 255;
OSD_Printf("Black at index %d, white at index %d, avg. luminance %d\n", black, white, brightness);
if (black == -1)
{
OSD_Printf("No black found - using nearest color %02x %02x %02x\n", pal[darkest], pal[darkest + 1], pal[darkest + 2]);
black = darkest;
}
if (white == -1)
{
OSD_Printf("No white found - using nearest color %02x %02x %02x\n", pal[brightest], pal[brightest + 1], pal[brightest + 2]);
white = brightest;
}
for (int i = 0; i < 256; i++)
{
if (palookup[i] == nullptr || (i > 0 && palookup[i] == palookup[0]))
{
// Either the same as the base of not present.
continue;
}
OSD_Printf("palookup[%d]:\n", i);
float lum0 = 0;
TArray<PalEntry> blacks, whites;
TArray<float> abslum, rellum, fadelum;
for (int j = 0; j < numshades - 1; j++) // do not count the last one, it doesn't look correct in most lookups - this value needs to be extrapolated from the rest.
{
int map = palookup[i][j * 256 + black] * 3;
PalEntry blackmap(pal[map], pal[map + 1], pal[map + 2]);
map = palookup[i][j * 256 + white] * 3;
PalEntry whitemap(pal[map], pal[map + 1], pal[map + 2]);
blacks.Push(blackmap);
whites.Push(whitemap);
float mylum = 0;
int palcnt = 0;
for (int k = 0; k < 255; k++)
{
if (!IsPaletteIndexFullbright(i))
{
map = palookup[i][j * 256 + k] * 3;
mylum += Luminance(pal[map], pal[map + 1], pal[map + 2]);
palcnt++;
}
}
mylum /= 255 * palcnt;
if (j == 0)
{
lum0 = mylum;
if (lum0 == 0) lum0 = 1; // for always-black palettes.
}
abslum.Push(mylum);
rellum.Push(mylum / lum0);
fadelum.Push((mylum - blackmap.Luminance() / 255.f) / lum0);
}
TArray<float> interlum;
auto lastblack = blacks.Last();
auto& array = (lastblack.r < 6 && lastblack.g < 6 && lastblack.b < 6) ? rellum : fadelum;
float range = array[0] - array.Last();
for (int i = 0; i < numshades - 1; i++)
{
float interval = array[0] - i * range / (numshades-2);
interlum.Push(interval);
}
OSD_Printf(" fades to %02x %02x %02x\n", lastblack.r, lastblack.g, lastblack.b);
for (int i = 0; i < numshades - 1; i++)
{
OSD_Printf(" Shade %d: relative luminance = %2.4f, interpolated luminance: %2.4f\n", i, array[i], interlum[i]);
}
OSD_Printf("-------------------------\n");
}
}
// Console commands by JBF
static int32_t gltexturemode(osdcmdptr_t parm)
{
int32_t m;
char *p;
if (parm->numparms != 1)
{
OSD_Printf("Current texturing mode is %s\n", glfiltermodes[gltexfiltermode].name);
OSD_Printf(" Vaild modes are:\n");
for (m = 0; m < NUMGLFILTERMODES; m++)
OSD_Printf(" %d - %s\n", m, glfiltermodes[m].name);
return OSDCMD_OK;
}
m = Bstrtoul(parm->parms[0], &p, 10);
if (p == parm->parms[0])
{
// string
for (m = 0; m < NUMGLFILTERMODES; m++)
{
if (!Bstrcasecmp(parm->parms[0], glfiltermodes[m].name))
break;
}
if (m == NUMGLFILTERMODES)
m = gltexfiltermode; // no change
}
else
{
m = clamp(m, 0, NUMGLFILTERMODES-1);
}
gltexfiltermode = m;
gltexapplyprops();
OSD_Printf("Texture filtering mode changed to %s\n", glfiltermodes[gltexfiltermode].name);
return OSDCMD_OK;
}
static int osdcmd_cvar_set_polymost(osdcmdptr_t parm)
{
int32_t r = osdcmd_cvar_set(parm);
if (xdim == 0 || ydim == 0 || bpp == 0) // video not set up yet
{
return r;
}
if (r == OSDCMD_OK)
{
if (!Bstrcasecmp(parm->name, "r_palookupinfo"))
palookupinfo();
else if (!Bstrcasecmp(parm->name, "r_swapinterval"))
vsync = videoSetVsync(vsync);
else if (!Bstrcasecmp(parm->name, "r_downsize"))
{
if (r_downsizevar == -1)
r_downsizevar = r_downsize;
if (in3dmode() && r_downsize != r_downsizevar)
{
videoResetMode();
if (videoSetGameMode(fullscreen,xres,yres,bpp,upscalefactor))
OSD_Printf("restartvid: Reset failed...\n");
}
r_downsizevar = r_downsize;
}
else if (!Bstrcasecmp(parm->name, "r_anisotropy"))
gltexapplyprops();
else if (!Bstrcasecmp(parm->name, "r_texfilter"))
gltexturemode(parm);
}
return r;
}
int r_palookupinfo;
void polymost_initosdfuncs(void)
{
uint32_t i;
static osdcvardata_t cvars_polymost[] =
{
#ifdef USE_GLEXT
{ "r_detailmapping","enable/disable detail mapping",(void *) &r_detailmapping, CVAR_BOOL, 0, 1 },
{ "r_glowmapping","enable/disable glow mapping",(void *) &r_glowmapping, CVAR_BOOL, 0, 1 },
#endif
{ "r_polygonmode","debugging feature",(void *) &r_polygonmode, CVAR_INT | CVAR_NOSAVE, 0, 3 },
{ "r_animsmoothing","enable/disable model animation smoothing",(void *) &r_animsmoothing, CVAR_BOOL, 0, 1 },
{ "r_anisotropy", "changes the OpenGL texture anisotropy setting", (void *) &glanisotropy, CVAR_INT|CVAR_FUNCPTR, 0, 16 },
{ "r_hightile","enable/disable hightile texture rendering",(void *) &usehightile, CVAR_BOOL, 0, 1 },
{ "r_models", "enable/disable model rendering", (void *)&usemodels, CVAR_BOOL, 0, 1 },
{ "r_nofog", "enable/disable GL fog", (void *)&nofog, CVAR_BOOL, 0, 1},
{ "r_parallaxskyclamping","enable/disable parallaxed floor/ceiling sky texture clamping", (void *) &r_parallaxskyclamping, CVAR_BOOL, 0, 1 },
{ "r_parallaxskypanning","enable/disable parallaxed floor/ceiling panning when drawing a parallaxing sky", (void *) &r_parallaxskypanning, CVAR_BOOL, 0, 1 },
{ "r_projectionhack", "enable/disable projection hack", (void *) &glprojectionhacks, CVAR_INT, 0, 2 },
{ "r_shadeinterpolate", "enable/disable shade interpolation", (void *) &r_shadeinterpolate, CVAR_BOOL, 0, 1 },
{ "r_shadescale","multiplier for shading",(void *) &shadescale, CVAR_FLOAT, 0, 10 },
{ "r_shadescale_unbounded","enable/disable allowance of complete blackness",(void *) &shadescale_unbounded, CVAR_BOOL, 0, 1 },
{ "r_swapinterval","sets the GL swap interval (VSync)",(void *) &vsync, CVAR_INT|CVAR_FUNCPTR, -1, 1 },
{ "r_texfilter", "changes the texture filtering settings (may require restart)", (void *) &gltexfiltermode, CVAR_INT|CVAR_FUNCPTR, 0, 5 },
{ "r_useindexedcolortextures", "enable/disable indexed color texture rendering", (void *) &r_useindexedcolortextures, CVAR_INT, 0, 1 },
{ "r_yshearing", "enable/disable y-shearing", (void*)&r_yshearing, CVAR_BOOL, 0, 1 },
// For testing - will be removed later.
{ "r_palookupinfo", "", (void*)&r_palookupinfo, CVAR_INT|CVAR_FUNCPTR, 0, 1 },
{ "fixpalette", "", (void*)& fixpalette, CVAR_INT, 0, 256 },
{ "fixpalswap", "", (void*)& fixpalswap, CVAR_INT, 0, 256 },
{ "skytile", "", (void*)&skytile, CVAR_INT, 0, 30720 },
};
for (i=0; i<ARRAY_SIZE(cvars_polymost); i++)
OSD_RegisterCvar(&cvars_polymost[i], (cvars_polymost[i].flags & CVAR_FUNCPTR) ? osdcmd_cvar_set_polymost : osdcmd_cvar_set);
}
void polymost_precache(int32_t dapicnum, int32_t dapalnum, int32_t datype)
@ -5586,7 +5394,7 @@ void polymost_precache(int32_t dapicnum, int32_t dapalnum, int32_t datype)
GLInterface.SetTexture(dapicnum, TileFiles.tiles[dapicnum], dapalnum, 0, -1);
hicprecaching = 0;
if (datype == 0 || !usemodels) return;
if (datype == 0 || !hw_models) return;
int const mid = md_tilehasmodel(dapicnum, dapalnum);

View file

@ -99,7 +99,6 @@ int32_t lockcount=0;
char modechange=1;
char offscreenrendering=0;
char videomodereset = 0;
int32_t nofog=0;
static uint16_t sysgamma[3][256];
#ifdef USE_OPENGL
// OpenGL stuff
@ -541,15 +540,9 @@ int main(int argc, char *argv[])
int32_t r;
#ifdef USE_OPENGL
char *argp;
if ((argp = Bgetenv("BUILD_NOFOG")) != NULL)
nofog = Batol(argp);
#ifndef _WIN32
setenv("__GL_THREADED_OPTIMIZATIONS", "1", 0);
#endif
#endif
buildkeytranslationtable();
@ -753,7 +746,7 @@ void uninitsystem(void)
//
void system_getcvars(void)
{
vsync = videoSetVsync(vsync);
vid_vsync = videoSetVsync(vid_vsync);
}
//
@ -1384,7 +1377,7 @@ void sdlayer_setvideomode_opengl(void)
else if (!currentGame.Compare("IonFury")) GLInterface.SetShadeDiv(30);
else GLInterface.SetShadeDiv(26);
GLInterface.mSamplers->SetTextureFilterMode(gltexfiltermode, glanisotropy);
GLInterface.mSamplers->SetTextureFilterMode(hw_texfilter, hw_anisotropy);
}

View file

@ -1078,7 +1078,7 @@ int32_t polymost_voxdraw(voxmodel_t *m, tspriteptr_t const tspr)
float pc[4];
pc[0] = pc[1] = pc[2] = ((float)numshades - min(max((globalshade * shadescale) + m->shadeoff, 0.f), (float)numshades)) / (float)numshades;
pc[0] = pc[1] = pc[2] = ((float)numshades - min(max((globalshade * hw_shadescale) + m->shadeoff, 0.f), (float)numshades)) / (float)numshades;
auto& h = hictinting[globalpal];
GLInterface.SetTinting(h.f, PalEntry(h.sr, h.sg, h.sb), PalEntry(h.r, h.g, h.b));

View file

@ -367,11 +367,10 @@ CUSTOM_CVARD(String, wchoice, "3457860291", CVAR_ARCHIVE | CVAR_NOINITCALL | CVA
}
#if 0
CVARD(Bool, r_voxels, true, CVAR_ARCHIVE, "enable/disable automatic sprite->voxel rendering")
// These I don't care about.
//{ "r_upscalefactor", "increase performance by rendering at upscalefactor less than the screen resolution and upscale to the full resolution in the software renderer", (void *)&ud.detail, CVAR_INT|CVAR_FUNCPTR, 1, 16 },
//{ "r_upscalefactor", "increase performance by rendering at upscalefactor less than the screen resolution and upscale to the full resolution in the software renderer", (void *)&gUpscaleFactor, CVAR_INT|CVAR_FUNCPTR, 1, 16
#if 0
// These have to wait until the HUD code is cleaned up (no idea which may survive and which won't.)
/*
@ -425,4 +424,20 @@ CUSTOM_CVARD(String, wchoice, "3457860291", CVAR_ARCHIVE | CVAR_NOINITCALL | CVA
}
*/
/* Baselayer CVARs. Some are pointless, some not worth bothering before the backend is swappewd out, the only relevant one was r_voxels.
static osdcvardata_t cvars_engine[] =
{
{ "lz4compressionlevel","adjust LZ4 compression level used for savegames",(void *) &lz4CompressionLevel, CVAR_INT, 1, 32 },
{ "r_borderless", "borderless windowed mode: 0: never 1: always 2: if resolution matches desktop", (void *) &r_borderless, CVAR_INT|CVAR_RESTARTVID, 0, 2 },
{ "r_displayindex","index of output display",(void *)&r_displayindex, CVAR_INT|CVAR_RESTARTVID, 0, 10 },
{ "r_usenewaspect","enable/disable new screen aspect ratio determination code",(void *) &r_usenewaspect, CVAR_BOOL, 0, 1 },
{ "r_screenaspect","if using r_usenewaspect and in fullscreen, screen aspect ratio in the form XXYY, e.g. 1609 for 16:9",
(void *) &r_screenxy, SCREENASPECT_CVAR_TYPE, 0, 9999 },
{ "r_windowpositioning", "enable/disable window position memory", (void *) &windowpos, CVAR_BOOL, 0, 1 },
//{ "vid_gamma","adjusts gamma component of gamma ramp",(void *) &g_videoGamma, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
//{ "vid_contrast","adjusts contrast component of gamma ramp",(void *) &g_videoContrast, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
//{ "vid_brightness","adjusts brightness component of gamma ramp",(void *) &g_videoBrightness, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
};
*/
#endif

View file

@ -64,6 +64,8 @@ EXTERN_CVAR(Float, r_ambientlight)
EXTERN_CVAR(Bool, r_shadows)
EXTERN_CVAR(Bool, r_rotatespritenowidescreen)
EXTERN_CVAR(Bool, r_precache)
EXTERN_CVAR(Bool, r_voxels)
EXTERN_CVAR(Bool, in_joystick)
EXTERN_CVAR(Bool, in_mouse)

View file

@ -419,7 +419,7 @@ int32_t Anim_Play(const char *fn)
// ANM playback --- v v v ---
#ifdef USE_OPENGL
int32_t ogltexfiltermode = gltexfiltermode;
int32_t ogltexfiltermode = hw_texfilter;
#endif
TArray<uint8_t> buffer;
auto fr = kopenFileReader(fn, 0);
@ -459,11 +459,8 @@ int32_t Anim_Play(const char *fn)
P_SetGamePalette(g_player[myconnectindex].ps, ANIMPAL, 8 + 2);
#ifdef USE_OPENGL
if ((anim->frameflags & CUTSCENE_TEXTUREFILTER && gltexfiltermode == TEXFILTER_ON) || anim->frameflags & CUTSCENE_FORCEFILTER)
gltexfiltermode = TEXFILTER_ON;
else
gltexfiltermode = TEXFILTER_OFF;
gltexapplyprops();
if ((anim->frameflags & CUTSCENE_TEXTUREFILTER && hw_texfilter == TEXFILTER_ON) || anim->frameflags & CUTSCENE_FORCEFILTER)
hw_texfilter = TEXFILTER_ON;
#endif
ototalclock = totalclock;
@ -553,7 +550,7 @@ int32_t Anim_Play(const char *fn)
end_anim_restore_gl:
#ifdef USE_OPENGL
gltexfiltermode = ogltexfiltermode;
hw_texfilter = ogltexfiltermode;
gltexapplyprops();
#endif
end_anim:

View file

@ -552,7 +552,7 @@ enum UserdefsLabel_t
USERDEFS_M_ORIGIN_Y,
USERDEFS_PLAYERBEST,
USERDEFS_MUSICTOGGLE,
USERDEFS_USEVOXELS,
USERDEF_USEVOXELS,
USERDEFS_USEHIGHTILE,
USERDEFS_USEMODELS,
USERDEFS_GAMETYPEFLAGS,

View file

@ -1281,9 +1281,9 @@ const memberlabel_t UserdefsLabels[]=
{ "m_origin_y", USERDEFS_M_ORIGIN_Y, 0, 0, -1 },
{ "playerbest", USERDEFS_PLAYERBEST, 0, 0, -1 },
{ "musictoggle", USERDEFS_MUSICTOGGLE, 0, 0, -1 },
{ "usevoxels", USERDEFS_USEVOXELS, 0, 0, -1 },
{ "usehightile", USERDEFS_USEHIGHTILE, 0, 0, -1 },
{ "usemodels", USERDEFS_USEMODELS, 0, 0, -1 },
{ "r_voxels", USERDEF_USEVOXELS, 0, 0, -1 },
{ "hw_hightile", USERDEFS_USEHIGHTILE, 0, 0, -1 },
{ "hw_models", USERDEFS_USEMODELS, 0, 0, -1 },
{ "gametypeflags", USERDEFS_GAMETYPEFLAGS, 0, 0, -1 },
{ "m_gametypeflags", USERDEFS_M_GAMETYPEFLAGS, 0, 0, -1 },
{ "globalflags", USERDEFS_GLOBALFLAGS, 0, 0, -1 },
@ -1475,18 +1475,10 @@ int32_t __fastcall VM_GetUserdef(int32_t labelNum, int const lParm2)
case USERDEFS_M_ORIGIN_X: labelNum = ud.returnvar[0]; break;
case USERDEFS_M_ORIGIN_Y: labelNum = ud.returnvar[1]; break;
case USERDEFS_PLAYERBEST: labelNum = ud.playerbest; break;
case USERDEFS_MUSICTOGGLE: labelNum = mus_enabled; break;
case USERDEFS_USEVOXELS: labelNum = usevoxels; break;
case USERDEFS_USEHIGHTILE:
#ifdef USE_OPENGL
labelNum = usehightile; break;
#endif
case USERDEFS_USEMODELS:
#ifdef USE_OPENGL
labelNum = usemodels; break;
#else
labelNum = 0; break;
#endif
case USERDEFS_MUSICTOGGLE: labelNum = mus_enabled; break;
case USERDEF_USEVOXELS: labelNum = r_voxels; break;
case USERDEFS_USEHIGHTILE: labelNum = hw_hightile; break;
case USERDEFS_USEMODELS: labelNum = hw_models; break;
case USERDEFS_GAMETYPEFLAGS: labelNum = g_gametypeFlags[ud.coop]; break;
case USERDEFS_M_GAMETYPEFLAGS: labelNum = g_gametypeFlags[ud.m_coop]; break;
case USERDEFS_GLOBALFLAGS: labelNum = globalflags; break;
@ -1504,7 +1496,7 @@ int32_t __fastcall VM_GetUserdef(int32_t labelNum, int const lParm2)
case USERDEFS_SCREENAREA_Y2: labelNum = ud.returnvar[2]; break;
case USERDEFS_SCREENFADE: labelNum = ud.screenfade; break;
case USERDEFS_MENUBACKGROUND: labelNum = ud.menubackground; break;
case USERDEFS_STATUSBARFLAGS: labelNum = 0/*ud.statusbarflags*/; break;
case USERDEFS_STATUSBARFLAGS: labelNum = ud.statusbarflags; break;
case USERDEFS_STATUSBARRANGE: labelNum = ud.statusbarrange; break;
case USERDEFS_STATUSBARCUSTOM: labelNum = hud_custom; break;
case USERDEFS_HUDONTOP: labelNum = ud.hudontop; break;

View file

@ -556,7 +556,7 @@ static MenuOption_t MEO_DISPLAYSETUP_ASPECTRATIO = MAKE_MENUOPTION(&MF_Redfont,
static MenuEntry_t ME_DISPLAYSETUP_ASPECTRATIO = MAKE_MENUENTRY( "Widescreen:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_ASPECTRATIO, Option );
#endif
static MenuOption_t MEO_DISPLAYSETUP_VOXELS = MAKE_MENUOPTION(&MF_Redfont, &MEOS_OffOn, &usevoxels);
static MenuOption_t MEO_DISPLAYSETUP_VOXELS = MAKE_MENUOPTION(&MF_Redfont, &MEOS_OffOn, &r_voxels.Value);
static MenuEntry_t ME_DISPLAYSETUP_VOXELS = MAKE_MENUENTRY( "Voxels:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_VOXELS, Option );
static MenuRangeInt32_t MEO_DISPLAYSETUP_FOV = MAKE_MENURANGE( &r_fov.Value, &MF_Redfont, 70, 120, 0, 11, 1 );
@ -571,13 +571,13 @@ static MenuEntry_t ME_DISPLAYSETUP_FOV = MAKE_MENUENTRY( "FOV:", &MF_Redfont, &M
static char const *MEOSN_DISPLAYSETUP_TEXFILTER[] = { "Classic", "Filtered" };
static int32_t MEOSV_DISPLAYSETUP_TEXFILTER[] = { TEXFILTER_OFF, TEXFILTER_ON };
static MenuOptionSet_t MEOS_DISPLAYSETUP_TEXFILTER = MAKE_MENUOPTIONSET( MEOSN_DISPLAYSETUP_TEXFILTER, MEOSV_DISPLAYSETUP_TEXFILTER, 0x2 );
static MenuOption_t MEO_DISPLAYSETUP_TEXFILTER = MAKE_MENUOPTION( &MF_Redfont, &MEOS_DISPLAYSETUP_TEXFILTER, &gltexfiltermode );
static MenuOption_t MEO_DISPLAYSETUP_TEXFILTER = MAKE_MENUOPTION( &MF_Redfont, &MEOS_DISPLAYSETUP_TEXFILTER, &hw_texfilter.Value );
static MenuEntry_t ME_DISPLAYSETUP_TEXFILTER = MAKE_MENUENTRY( "Texture Mode:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_TEXFILTER, Option );
static char const *MEOSN_DISPLAYSETUP_ANISOTROPY[] = { "Max", "None", "2x", "4x", "8x", "16x", };
static int32_t MEOSV_DISPLAYSETUP_ANISOTROPY[] = { 0, 1, 2, 4, 8, 16, };
static MenuOptionSet_t MEOS_DISPLAYSETUP_ANISOTROPY = MAKE_MENUOPTIONSET( MEOSN_DISPLAYSETUP_ANISOTROPY, MEOSV_DISPLAYSETUP_ANISOTROPY, 0x0 );
static MenuOption_t MEO_DISPLAYSETUP_ANISOTROPY = MAKE_MENUOPTION(&MF_Redfont, &MEOS_DISPLAYSETUP_ANISOTROPY, &glanisotropy);
static MenuOption_t MEO_DISPLAYSETUP_ANISOTROPY = MAKE_MENUOPTION(&MF_Redfont, &MEOS_DISPLAYSETUP_ANISOTROPY, &hw_anisotropy.Value);
static MenuEntry_t ME_DISPLAYSETUP_ANISOTROPY = MAKE_MENUENTRY( "Anisotropy:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_ANISOTROPY, Option );
#endif
# endif
@ -1024,7 +1024,7 @@ static MenuEntry_t *MEL_INTERNAL_JOYSTICKAXIS_DIGITAL[] = {
};
#ifdef USE_OPENGL
static MenuOption_t MEO_RENDERERSETUP_HIGHTILE = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &usehightile );
static MenuOption_t MEO_RENDERERSETUP_HIGHTILE = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &hw_hightile.Value );
static MenuEntry_t ME_RENDERERSETUP_HIGHTILE = MAKE_MENUENTRY( "True color textures:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_HIGHTILE, Option );
static char const *MEOSN_RENDERERSETUP_TEXQUALITY [] = { "Full", "Half", "Barf", };
@ -1040,12 +1040,12 @@ static char const *MEOSN_RENDERERSETUP_TEXCACHE[] = { "Off", "On", "Compr.", };
static MenuOptionSet_t MEOS_RENDERERSETUP_TEXCACHE = MAKE_MENUOPTIONSET( MEOSN_RENDERERSETUP_TEXCACHE, NULL, 0x2 );
# endif
# ifdef USE_GLEXT
static MenuOption_t MEO_RENDERERSETUP_DETAILTEX = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &r_detailmapping );
static MenuOption_t MEO_RENDERERSETUP_DETAILTEX = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &hw_detailmapping.Value );
static MenuEntry_t ME_RENDERERSETUP_DETAILTEX = MAKE_MENUENTRY( "Detail textures:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_DETAILTEX, Option );
static MenuOption_t MEO_RENDERERSETUP_GLOWTEX = MAKE_MENUOPTION(&MF_Bluefont, &MEOS_NoYes, &r_glowmapping);
static MenuOption_t MEO_RENDERERSETUP_GLOWTEX = MAKE_MENUOPTION(&MF_Bluefont, &MEOS_NoYes, &hw_glowmapping.Value);
static MenuEntry_t ME_RENDERERSETUP_GLOWTEX = MAKE_MENUENTRY("Glow textures:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_GLOWTEX, Option);
# endif
static MenuOption_t MEO_RENDERERSETUP_MODELS = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &usemodels );
static MenuOption_t MEO_RENDERERSETUP_MODELS = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &hw_models.Value );
static MenuEntry_t ME_RENDERERSETUP_MODELS = MAKE_MENUENTRY( "3D models:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_MODELS, Option );
#endif
@ -2022,9 +2022,9 @@ static void Menu_Pre(MenuID_t cm)
#ifdef TEXFILTER_MENU_OPTIONS
if (videoGetRenderMode() != REND_CLASSIC)
{
//POGOTODO: allow setting anisotropy again while r_useindexedcolortextures is set when support is added down the line
// don't allow setting anisotropy while in POLYMOST and r_useindexedcolortextures is enabled
MenuEntry_DisableOnCondition(&ME_DISPLAYSETUP_ANISOTROPY, videoGetRenderMode() == REND_POLYMOST && r_useindexedcolortextures);
//POGOTODO: allow setting anisotropy again while hw_useindexedcolortextures is set when support is added down the line
// don't allow setting anisotropy while in POLYMOST and hw_useindexedcolortextures is enabled
MenuEntry_DisableOnCondition(&ME_DISPLAYSETUP_ANISOTROPY, videoGetRenderMode() == REND_POLYMOST && hw_useindexedcolortextures);
for (i = (int32_t) ARRAY_SIZE(MEOSV_DISPLAYSETUP_ANISOTROPY) - 1; i >= 0; --i)
{
@ -2041,11 +2041,11 @@ static void Menu_Pre(MenuID_t cm)
case MENU_POLYMER:
case MENU_POLYMOST:
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_TEXQUALITY, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_PRECACHE, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_TEXQUALITY, !hw_hightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_PRECACHE, !hw_hightile);
# ifdef USE_GLEXT
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_DETAILTEX, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_GLOWTEX, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_DETAILTEX, !hw_hightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_GLOWTEX, !hw_hightile);
# endif
#endif
break;
@ -2093,7 +2093,7 @@ static void Menu_Pre(MenuID_t cm)
MenuEntry_DisableOnCondition(&ME_VIDEOSETUP_APPLY,
(xres == resolution[nr].xdim && yres == resolution[nr].ydim &&
videoGetRenderMode() == newrendermode && fullscreen == newfullscreen
&& vsync == newvsync && r_borderless == newborderless
&& vid_vsync == newvsync && r_borderless == newborderless
)
|| (newrendermode != REND_CLASSIC && resolution[nr].bppmax <= 8));
MenuEntry_DisableOnCondition(&ME_VIDEOSETUP_BORDERLESS, newfullscreen);
@ -3174,7 +3174,7 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry)
{
resolution_t p = { xres, yres, fullscreen, bpp, 0 };
int32_t prend = videoGetRenderMode();
int32_t pvsync = vsync;
int32_t pvsync = vid_vsync;
int pborderless = r_borderless;
resolution_t n = { resolution[newresolution].xdim, resolution[newresolution].ydim,
@ -3198,13 +3198,13 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry)
else
{
onvideomodechange(p.bppmax > 8);
vsync = videoSetVsync(pvsync);
vid_vsync = videoSetVsync(pvsync);
}
}
else
{
videoSetRenderMode(newrendermode);
vsync = videoSetVsync(newvsync);
vid_vsync = videoSetVsync(newvsync);
onvideomodechange(n.bppmax > 8);
}
@ -4234,7 +4234,7 @@ static void Menu_AboutToStartDisplaying(Menu_t * m)
}
newrendermode = videoGetRenderMode();
newfullscreen = fullscreen;
newvsync = vsync;
newvsync = vid_vsync;
newborderless = r_borderless;
break;

View file

@ -1799,7 +1799,7 @@ static void G_DrawTileScaled(int drawX, int drawY, int tileNum, int drawShade, i
#endif
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(tileNum,drawPal) >= 0)
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(tileNum,drawPal) >= 0)
drawYOffset += (224<<16)-weapsc(224<<16);
#endif
rotatesprite(weapsc(drawX<<16) + (drawXOffset-weapsc(drawXOffset)),
@ -1831,7 +1831,7 @@ static void G_DrawWeaponTile(int weaponX, int weaponY, int weaponTile, int weapo
{
if (weaponTile >= CHAINGUN + 1 && weaponTile <= CHAINGUN + 4)
{
if (!usemodels || md_tilehasmodel(weaponTile, weaponPal) < 0)
if (!hw_models || md_tilehasmodel(weaponTile, weaponPal) < 0)
{
// HACK: Draw the upper part of the chaingun two screen
// pixels (not texels; multiplied by weapon scale) lower

View file

@ -41,9 +41,9 @@
#include "bitmap.h"
#include "../../glbackend/glbackend.h"
// External CVARs.
extern int r_detailmapping, r_glowmapping, usehightile, r_useindexedcolortextures;
extern int fixpalette, fixpalswap;
// Test CVARs.
CVAR(Int, fixpalette, 0, 0)
CVAR(Int, fixpalswap, 0, 0)
template<class T>
@ -165,12 +165,12 @@ bool GLInstance::SetTextureInternal(int picnum, FTexture* tex, int palette, int
GLInterface.SetPalette(usepalette);
GLInterface.SetPalswap(usepalswap);
TextureType = r_useindexedcolortextures? TT_INDEXED : TT_TRUECOLOR;
TextureType = hw_useindexedcolortextures? TT_INDEXED : TT_TRUECOLOR;
int lookuppal = 0;
VSMatrix texmat;
auto rep = usehightile? tex->FindReplacement(palette) : nullptr;
auto rep = hw_hightile? tex->FindReplacement(palette) : nullptr;
if (rep)
{
// Hightile replacements have only one texture representation and it is always the base.
@ -180,7 +180,7 @@ bool GLInstance::SetTextureInternal(int picnum, FTexture* tex, int palette, int
else
{
// Only look up the palette if we really want to use it (i.e. when creating a true color texture of an ART tile.)
if (!r_useindexedcolortextures) lookuppal = palmanager.LookupPalette(usepalette, usepalswap, false);
if (!hw_useindexedcolortextures) lookuppal = palmanager.LookupPalette(usepalette, usepalswap, false);
}
// Load the main texture
@ -206,7 +206,7 @@ bool GLInstance::SetTextureInternal(int picnum, FTexture* tex, int palette, int
}
// Also load additional layers needed for this texture.
if (r_detailmapping && usehightile)
if (hw_detailmapping && hw_hightile)
{
float detscalex = detscale, detscaley = detscale;
if (!(method & DAMETH_MODEL))
@ -237,7 +237,7 @@ bool GLInstance::SetTextureInternal(int picnum, FTexture* tex, int palette, int
if (MatrixChange & 2) GLInterface.SetMatrix(Matrix_Detail, &texmat);
}
}
if (r_glowmapping && usehightile)
if (hw_glowmapping && hw_hightile)
{
if (!(method & DAMETH_MODEL))
{

View file

@ -449,7 +449,7 @@ int32_t Anim_Play(const char *fn)
// ANM playback --- v v v ---
#ifdef USE_OPENGL
int32_t ogltexfiltermode = gltexfiltermode;
int32_t ogltexfiltermode = hw_texfilter;
#endif
auto fr = kopenFileReader(fn, 0);
@ -579,7 +579,7 @@ int32_t Anim_Play(const char *fn)
end_anim_restore_gl:
#ifdef USE_OPENGL
gltexfiltermode = ogltexfiltermode;
hw_texfilter = ogltexfiltermode;
gltexapplyprops();
#endif
end_anim:

View file

@ -4788,7 +4788,7 @@ void G_DoSpriteAnimations(int32_t ourx, int32_t oury, int32_t ourz, int32_t oura
continue;
case CHAIR3__STATIC:
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(t->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(t->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
t->cstat &= ~4;
break;
@ -5098,7 +5098,7 @@ default_case1:
else if (sprite[pSprite->owner].picnum == MAMA)
{
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(t->picnum, t->pal) >= 0 &&
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(t->picnum, t->pal) >= 0 &&
!(spriteext[i].flags & SPREXT_NOTMD))
{
int32_t v = getangle(t->xvel, t->zvel >> 4);
@ -5117,7 +5117,7 @@ default_case1:
case EMPTYBIKE__STATICRR:
if (!RRRA) goto default_case2;
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(t->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(t->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
t->cstat &= ~4;
break;
@ -5129,7 +5129,7 @@ default_case1:
case EMPTYBOAT__STATICRR:
if (!RRRA) goto default_case2;
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(t->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(t->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
t->cstat &= ~4;
break;
@ -5140,7 +5140,7 @@ default_case1:
break;
case RPG__STATIC:
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(t->picnum,t->pal) >= 0 &&
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(t->picnum,t->pal) >= 0 &&
!(spriteext[i].flags & SPREXT_NOTMD))
{
int32_t v = getangle(t->xvel, t->zvel>>4);
@ -5156,7 +5156,7 @@ default_case1:
case RPG2__STATICRR:
if (!RRRA) goto default_case2;
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(t->picnum,t->pal) >= 0 &&
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(t->picnum,t->pal) >= 0 &&
!(spriteext[i].flags & SPREXT_NOTMD))
{
int32_t v = getangle(t->xvel, t->zvel>>4);
@ -5172,7 +5172,7 @@ default_case1:
case RECON__STATIC:
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(t->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(t->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
t->cstat &= ~4;
break;
@ -5198,7 +5198,7 @@ default_case1:
g_player[playerNum].ps->q16ang
+ mulscale16((((g_player[playerNum].ps->q16ang + 1024 - g_player[playerNum].ps->oq16ang) & 2047) - 1024), smoothratio));
#ifdef USE_OPENGL
if (bpp > 8 && usemodels && md_tilehasmodel(t->picnum, t->pal) >= 0)
if (bpp > 8 && hw_models && md_tilehasmodel(t->picnum, t->pal) >= 0)
{
static int32_t targetang = 0;
@ -5295,7 +5295,7 @@ default_case1:
if (pSprite->owner == -1)
{
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pSprite->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pSprite->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
frameOffset = 0;
t->cstat &= ~4;
@ -5349,7 +5349,7 @@ default_case1:
}
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pSprite->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pSprite->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
frameOffset = 0;
t->cstat &= ~4;
@ -5391,7 +5391,7 @@ PALONLY:
scrofs_action = 0;
curframe = 0;
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pSprite->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pSprite->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
frameOffset = 0;
t->cstat &= ~4;
@ -5418,7 +5418,7 @@ PALONLY:
scrofs_action = 0;
curframe = 0;
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pSprite->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pSprite->picnum, t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
frameOffset = 0;
t->cstat &= ~4;
@ -5537,7 +5537,7 @@ default_case2:
l = klabs(l);
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pSprite->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pSprite->picnum,t->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
frameOffset = 0;
t->cstat &= ~4;
@ -5676,7 +5676,7 @@ skip:
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST)
{
if (usemodels && md_tilehasmodel(t->picnum,t->pal) >= 0)
if (hw_models && md_tilehasmodel(t->picnum,t->pal) >= 0)
{
tsprShadow->yrepeat = 0;
// 512:trans reverse
@ -5859,7 +5859,7 @@ rrcoolexplosion1:
break;
case PLAYERONWATER__STATIC:
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pSprite->picnum,pSprite->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pSprite->picnum,pSprite->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
frameOffset = 0;
t->cstat &= ~4;
@ -5920,7 +5920,7 @@ rrcoolexplosion1:
case CAMERA1__STATIC:
case RAT__STATIC:
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(pSprite->picnum,pSprite->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(pSprite->picnum,pSprite->pal) >= 0 && !(spriteext[i].flags&SPREXT_NOTMD))
{
t->cstat &= ~4;
break;

View file

@ -551,13 +551,13 @@ static MenuEntry_t ME_DISPLAYSETUP_FOV = MAKE_MENUENTRY( "FOV:", &MF_Redfont, &M
static char const *MEOSN_DISPLAYSETUP_TEXFILTER[] = { "Classic", "Filtered" };
static int32_t MEOSV_DISPLAYSETUP_TEXFILTER[] = { TEXFILTER_OFF, TEXFILTER_ON };
static MenuOptionSet_t MEOS_DISPLAYSETUP_TEXFILTER = MAKE_MENUOPTIONSET( MEOSN_DISPLAYSETUP_TEXFILTER, MEOSV_DISPLAYSETUP_TEXFILTER, 0x2 );
static MenuOption_t MEO_DISPLAYSETUP_TEXFILTER = MAKE_MENUOPTION( &MF_Redfont, &MEOS_DISPLAYSETUP_TEXFILTER, &gltexfiltermode );
static MenuOption_t MEO_DISPLAYSETUP_TEXFILTER = MAKE_MENUOPTION( &MF_Redfont, &MEOS_DISPLAYSETUP_TEXFILTER, &hw_texfilter.Value);
static MenuEntry_t ME_DISPLAYSETUP_TEXFILTER = MAKE_MENUENTRY( "Texture Mode:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_TEXFILTER, Option );
static char const *MEOSN_DISPLAYSETUP_ANISOTROPY[] = { "Max", "None", "2x", "4x", "8x", "16x", };
static int32_t MEOSV_DISPLAYSETUP_ANISOTROPY[] = { 0, 1, 2, 4, 8, 16, };
static MenuOptionSet_t MEOS_DISPLAYSETUP_ANISOTROPY = MAKE_MENUOPTIONSET( MEOSN_DISPLAYSETUP_ANISOTROPY, MEOSV_DISPLAYSETUP_ANISOTROPY, 0x0 );
static MenuOption_t MEO_DISPLAYSETUP_ANISOTROPY = MAKE_MENUOPTION(&MF_Redfont, &MEOS_DISPLAYSETUP_ANISOTROPY, &glanisotropy);
static MenuOption_t MEO_DISPLAYSETUP_ANISOTROPY = MAKE_MENUOPTION(&MF_Redfont, &MEOS_DISPLAYSETUP_ANISOTROPY, &hw_anisotropy.Value);
static MenuEntry_t ME_DISPLAYSETUP_ANISOTROPY = MAKE_MENUENTRY( "Anisotropy:", &MF_Redfont, &MEF_BigOptionsRt, &MEO_DISPLAYSETUP_ANISOTROPY, Option );
# endif
@ -984,7 +984,7 @@ static MenuEntry_t *MEL_INTERNAL_JOYSTICKAXIS_DIGITAL[] = {
};
#ifdef USE_OPENGL
static MenuOption_t MEO_RENDERERSETUP_HIGHTILE = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &usehightile );
static MenuOption_t MEO_RENDERERSETUP_HIGHTILE = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &hw_hightile.Value );
static MenuEntry_t ME_RENDERERSETUP_HIGHTILE = MAKE_MENUENTRY( "True color textures:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_HIGHTILE, Option );
static char const *MEOSN_RENDERERSETUP_TEXQUALITY [] = { "Full", "Half", "Barf", };
@ -1000,12 +1000,12 @@ static char const *MEOSN_RENDERERSETUP_TEXCACHE[] = { "Off", "On", "Compr.", };
static MenuOptionSet_t MEOS_RENDERERSETUP_TEXCACHE = MAKE_MENUOPTIONSET( MEOSN_RENDERERSETUP_TEXCACHE, NULL, 0x2 );
# endif
# ifdef USE_GLEXT
static MenuOption_t MEO_RENDERERSETUP_DETAILTEX = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &r_detailmapping );
static MenuOption_t MEO_RENDERERSETUP_DETAILTEX = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &hw_detailmapping.Value);
static MenuEntry_t ME_RENDERERSETUP_DETAILTEX = MAKE_MENUENTRY( "Detail textures:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_DETAILTEX, Option );
static MenuOption_t MEO_RENDERERSETUP_GLOWTEX = MAKE_MENUOPTION(&MF_Bluefont, &MEOS_NoYes, &r_glowmapping);
static MenuOption_t MEO_RENDERERSETUP_GLOWTEX = MAKE_MENUOPTION(&MF_Bluefont, &MEOS_NoYes, &hw_glowmapping.Value);
static MenuEntry_t ME_RENDERERSETUP_GLOWTEX = MAKE_MENUENTRY("Glow textures:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_GLOWTEX, Option);
# endif
static MenuOption_t MEO_RENDERERSETUP_MODELS = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &usemodels );
static MenuOption_t MEO_RENDERERSETUP_MODELS = MAKE_MENUOPTION( &MF_Bluefont, &MEOS_NoYes, &hw_models.Value );
static MenuEntry_t ME_RENDERERSETUP_MODELS = MAKE_MENUENTRY( "3D models:", &MF_Bluefont, &MEF_SmallOptions, &MEO_RENDERERSETUP_MODELS, Option );
#endif
@ -1991,11 +1991,11 @@ static void Menu_Pre(MenuID_t cm)
if (videoGetRenderMode() != REND_CLASSIC)
{
//POGOTODO: allow setting anisotropy again while r_useindexedcolortextures is set when support is added down the line
// don't allow setting anisotropy or changing palette emulation while in POLYMOST and r_useindexedcolortextures is enabled
MenuEntry_DisableOnCondition(&ME_DISPLAYSETUP_ANISOTROPY, videoGetRenderMode() == REND_POLYMOST && r_useindexedcolortextures);
//POGOTODO: allow setting anisotropy again while hw_useindexedcolortextures is set when support is added down the line
// don't allow setting anisotropy or changing palette emulation while in POLYMOST and hw_useindexedcolortextures is enabled
MenuEntry_DisableOnCondition(&ME_DISPLAYSETUP_ANISOTROPY, videoGetRenderMode() == REND_POLYMOST && hw_useindexedcolortextures);
#ifdef EDUKE32_SIMPLE_MENU
MenuEntry_DisableOnCondition(&ME_DISPLAYSETUP_PALETTEEMULATION, videoGetRenderMode() == REND_POLYMOST && r_useindexedcolortextures);
MenuEntry_DisableOnCondition(&ME_DISPLAYSETUP_PALETTEEMULATION, videoGetRenderMode() == REND_POLYMOST && hw_useindexedcolortextures);
#endif
for (i = (int32_t) ARRAY_SIZE(MEOSV_DISPLAYSETUP_ANISOTROPY) - 1; i >= 0; --i)
@ -2011,11 +2011,11 @@ static void Menu_Pre(MenuID_t cm)
case MENU_POLYMER:
case MENU_POLYMOST:
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_TEXQUALITY, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_PRECACHE, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_TEXQUALITY, !hw_hightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_PRECACHE, !hw_hightile);
# ifdef USE_GLEXT
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_DETAILTEX, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_GLOWTEX, !usehightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_DETAILTEX, !hw_hightile);
MenuEntry_DisableOnCondition(&ME_RENDERERSETUP_GLOWTEX, !hw_hightile);
# endif
break;
#endif
@ -2030,7 +2030,7 @@ static void Menu_Pre(MenuID_t cm)
MenuEntry_DisableOnCondition(&ME_VIDEOSETUP_APPLY,
(xres == resolution[nr].xdim && yres == resolution[nr].ydim &&
videoGetRenderMode() == newrendermode && fullscreen == newfullscreen
&& vsync == newvsync
&& vid_vsync == newvsync
)
|| (newrendermode != REND_CLASSIC && resolution[nr].bppmax <= 8));
@ -3576,7 +3576,7 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry)
{
resolution_t p = { xres, yres, fullscreen, bpp, 0 };
int32_t prend = videoGetRenderMode();
int32_t pvsync = vsync;
int32_t pvsync = vid_vsync;
resolution_t n = { resolution[newresolution].xdim, resolution[newresolution].ydim,
(resolution[newresolution].flags & RES_FS) ? newfullscreen : 0,
@ -3594,7 +3594,7 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry)
else
{
onvideomodechange(p.bppmax > 8);
vsync = videoSetVsync(pvsync);
vid_vsync = videoSetVsync(pvsync);
}
}
else onvideomodechange(n.bppmax > 8);
@ -3602,7 +3602,7 @@ static void Menu_EntryLinkActivate(MenuEntry_t *entry)
g_restorePalette = -1;
G_UpdateScreenArea();
videoSetRenderMode(nrend);
vsync = videoSetVsync(nvsync);
vid_vsync = videoSetVsync(nvsync);
ud.setup.fullscreen = fullscreen;
ud.setup.xdim = xres;
ud.setup.ydim = yres;
@ -4571,7 +4571,7 @@ static void Menu_AboutToStartDisplaying(Menu_t * m)
}
newrendermode = videoGetRenderMode();
newfullscreen = fullscreen;
newvsync = vsync;
newvsync = vid_vsync;
break;
case MENU_ADVSOUND:

View file

@ -1481,7 +1481,7 @@ static void G_DrawTileScaled(int drawX, int drawY, int tileNum, int drawShade, i
#endif
#ifdef USE_OPENGL
if (videoGetRenderMode() >= REND_POLYMOST && usemodels && md_tilehasmodel(tileNum,drawPal) >= 0)
if (videoGetRenderMode() >= REND_POLYMOST && hw_models && md_tilehasmodel(tileNum,drawPal) >= 0)
drawYOffset += (224<<16)-weapsc(224<<16);
#endif
rotatesprite(weapsc(drawX<<16) + (drawXOffset-weapsc(drawXOffset)),
@ -1513,7 +1513,7 @@ static void G_DrawWeaponTile(int weaponX, int weaponY, int weaponTile, int weapo
{
if (!RR && weaponTile >= CHAINGUN + 1 && weaponTile <= CHAINGUN + 4)
{
if (!usemodels || md_tilehasmodel(weaponTile, weaponPal) < 0)
if (!hw_models || md_tilehasmodel(weaponTile, weaponPal) < 0)
{
// HACK: Draw the upper part of the chaingun two screen
// pixels (not texels; multiplied by weapon scale) lower

View file

@ -1078,7 +1078,7 @@ JAnalyzeSprites(uspritetype * tspr)
// Take care of autosizing
DoAutoSize(tspr);
if (videoGetRenderMode() >= REND_POLYMOST && md_tilehasmodel(tspr->picnum, 0) >= 0 && usemodels) return;
if (videoGetRenderMode() >= REND_POLYMOST && md_tilehasmodel(tspr->picnum, 0) >= 0 && hw_models) return;
// Check for voxels
//if (bVoxelsOn)

View file

@ -4786,7 +4786,7 @@ unsigned char palette_data[256][3]; // Global palette array
// V E R T I C A L R E T R A C E V A R I A B L E S //////////////////////////////////////////
#define VGA_INPUT_STATUS_1 0x3DA // VGA status register 1, bit 3 is the vsync
#define VGA_INPUT_STATUS_1 0x3DA // VGA status register 1, bit 3 is the vid_vsync
// 1 = retrace in progress
// 0 = no retrace
#define VGA_VSYNC_MASK 0x08 // Masks off unwanted bits of status register.
@ -4805,7 +4805,7 @@ WaitForVsync(void)
while (inp(VGA_INPUT_STATUS_1) & VGA_VSYNC_MASK) ;
// Retrace in progress, wait.
// Wait for vsync, and exit.
// Wait for vid_vsync, and exit.
while (!inp(VGA_INPUT_STATUS_1) & VGA_VSYNC_MASK) ;
}