2008-01-27 11:25:03 +00:00
|
|
|
|
|
|
|
|
2008-11-01 17:36:19 +00:00
|
|
|
#include "gl/gl_include.h"
|
2008-01-27 11:25:03 +00:00
|
|
|
#include "m_menu.h"
|
|
|
|
#include "v_video.h"
|
|
|
|
#include "gl/gl_intern.h"
|
|
|
|
#include "version.h"
|
|
|
|
|
|
|
|
|
|
|
|
extern value_t YesNo[2];
|
|
|
|
extern value_t NoYes[2];
|
|
|
|
extern value_t OnOff[2];
|
|
|
|
extern bool gl_disabled;
|
|
|
|
|
|
|
|
void StartGLLightMenu (void);
|
2008-11-01 17:36:19 +00:00
|
|
|
void StartGLTextureMenu (void);
|
|
|
|
void StartGLPrefMenu (void);
|
|
|
|
void StartGLShaderMenu (void);
|
2008-01-27 11:25:03 +00:00
|
|
|
void StartDisableGL();
|
|
|
|
void ReturnToMainMenu();
|
|
|
|
|
|
|
|
CUSTOM_CVAR(Bool, gl_nogl, false, CVAR_GLOBALCONFIG|CVAR_ARCHIVE|CVAR_NOINITCALL)
|
|
|
|
{
|
|
|
|
Printf("This won't take effect until "GAMENAME" is restarted.\n");
|
|
|
|
}
|
|
|
|
|
2008-01-28 11:24:32 +00:00
|
|
|
CVAR(Bool, gl_vid_compatibility, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG);
|
|
|
|
|
2008-01-27 11:25:03 +00:00
|
|
|
EXTERN_CVAR (Bool, vid_vsync)
|
|
|
|
EXTERN_CVAR(Int, gl_spriteclip)
|
|
|
|
EXTERN_CVAR(Int, gl_lightmode)
|
|
|
|
EXTERN_CVAR(Bool, gl_blendcolormaps)
|
|
|
|
EXTERN_CVAR(Bool, gl_texture_usehires)
|
|
|
|
EXTERN_CVAR(Bool, gl_precache)
|
|
|
|
EXTERN_CVAR(Bool, gl_render_precise)
|
|
|
|
EXTERN_CVAR(Bool, gl_sprite_blend)
|
|
|
|
EXTERN_CVAR(Bool, gl_fakecontrast)
|
|
|
|
EXTERN_CVAR (Bool, gl_lights_additive)
|
|
|
|
EXTERN_CVAR (Float, gl_light_ambient)
|
|
|
|
EXTERN_CVAR(Int, gl_billboard_mode)
|
|
|
|
EXTERN_CVAR(Int, gl_particles_style)
|
|
|
|
|
|
|
|
static value_t SpriteclipModes[]=
|
|
|
|
{
|
|
|
|
{ 0.0, "Never" },
|
|
|
|
{ 1.0, "Smart" },
|
|
|
|
{ 2.0, "Always" },
|
|
|
|
};
|
|
|
|
|
|
|
|
static value_t FilterModes[] =
|
|
|
|
{
|
|
|
|
{ 0.0, "None" },
|
|
|
|
{ 1.0, "None (mipmapped)" },
|
|
|
|
{ 2.0, "Linear" },
|
|
|
|
{ 3.0, "Bilinear" },
|
|
|
|
{ 4.0, "Trilinear" },
|
|
|
|
};
|
|
|
|
|
|
|
|
static value_t TextureFormats[] =
|
|
|
|
{
|
|
|
|
{ 0.0, "RGBA8" },
|
|
|
|
{ 1.0, "RGB5_A1" },
|
|
|
|
{ 2.0, "RGBA4" },
|
|
|
|
{ 3.0, "RGBA2" },
|
2008-06-08 09:24:55 +00:00
|
|
|
// [BB] Added modes for texture compression.
|
|
|
|
{ 4.0, "COMPR_RGBA" },
|
|
|
|
{ 5.0, "S3TC_DXT1" },
|
|
|
|
{ 6.0, "S3TC_DXT3" },
|
|
|
|
{ 7.0, "S3TC_DXT5" },
|
2008-01-27 11:25:03 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
static value_t Anisotropy[] =
|
|
|
|
{
|
|
|
|
{ 1.0, "Off" },
|
|
|
|
{ 2.0, "2x" },
|
|
|
|
{ 4.0, "4x" },
|
|
|
|
{ 8.0, "8x" },
|
|
|
|
{ 16.0, "16x" },
|
|
|
|
};
|
|
|
|
|
|
|
|
static value_t Colormaps[] =
|
|
|
|
{
|
|
|
|
{ 0.0, "Use as palette" },
|
|
|
|
{ 1.0, "Blend" },
|
|
|
|
};
|
|
|
|
|
2008-11-01 23:56:10 +00:00
|
|
|
static value_t LightingModes2[] =
|
2008-01-27 11:25:03 +00:00
|
|
|
{
|
|
|
|
{ 0.0, "Standard" },
|
|
|
|
{ 1.0, "Bright" },
|
|
|
|
{ 3.0, "Doom" },
|
|
|
|
{ 4.0, "Legacy" },
|
|
|
|
};
|
|
|
|
|
2008-11-01 23:56:10 +00:00
|
|
|
static value_t LightingModes[] =
|
2008-11-01 17:36:19 +00:00
|
|
|
{
|
|
|
|
{ 0.0, "Standard" },
|
|
|
|
{ 1.0, "Bright" },
|
|
|
|
{ 2.0, "Doom" },
|
|
|
|
{ 3.0, "Dark" },
|
|
|
|
{ 4.0, "Legacy" },
|
|
|
|
};
|
|
|
|
|
2008-01-27 11:25:03 +00:00
|
|
|
static value_t Precision[] =
|
|
|
|
{
|
|
|
|
{ 0.0, "Speed" },
|
|
|
|
{ 1.0, "Quality" },
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static value_t Hz[] =
|
|
|
|
{
|
|
|
|
{ 0.0, "Optimal" },
|
|
|
|
{ 60.0, "60" },
|
|
|
|
{ 70.0, "70" },
|
|
|
|
{ 72.0, "72" },
|
|
|
|
{ 75.0, "75" },
|
|
|
|
{ 85.0, "85" },
|
|
|
|
{ 100.0, "100" }
|
|
|
|
};
|
|
|
|
|
|
|
|
static value_t BillboardModes[] =
|
|
|
|
{
|
2008-02-14 13:07:19 +00:00
|
|
|
{ 0.0, "Y Axis" },
|
|
|
|
{ 1.0, "X/Y Axis" },
|
2008-01-27 11:25:03 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
static value_t Particles[] =
|
|
|
|
{
|
|
|
|
{ 0.0, "Square" },
|
|
|
|
{ 1.0, "Round" },
|
|
|
|
{ 2.0, "Smooth" },
|
|
|
|
};
|
|
|
|
|
2008-10-31 18:50:35 +00:00
|
|
|
static value_t FogMode[] =
|
|
|
|
{
|
|
|
|
{ 0.0, "Off" },
|
|
|
|
{ 1.0, "Standard" },
|
|
|
|
{ 2.0, "Radial" },
|
|
|
|
};
|
2008-01-27 11:25:03 +00:00
|
|
|
|
2008-11-01 17:36:19 +00:00
|
|
|
static menuitem_t OpenGLItems[] = {
|
|
|
|
{ more, "Disable GL system", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartDisableGL} },
|
|
|
|
{ more, "Dynamic Light Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartGLLightMenu} },
|
|
|
|
{ more, "Texture Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartGLTextureMenu} },
|
|
|
|
{ more, "Shader Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartGLShaderMenu} },
|
|
|
|
{ more, "Preferences", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartGLPrefMenu} },
|
2008-01-27 11:25:03 +00:00
|
|
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
|
|
|
{ discrete, "Vertical Sync", {&vid_vsync}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Rendering quality", {&gl_render_precise}, {2.0}, {0.0}, {0.0}, {Precision} },
|
2008-11-01 17:36:19 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
static menuitem_t OpenGLItems2[] = {
|
|
|
|
{ more, "Disable GL system", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartDisableGL} },
|
|
|
|
{ more, "Dynamic Light Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartGLLightMenu} },
|
|
|
|
{ more, "Texture Options", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartGLTextureMenu} },
|
|
|
|
{ more, "Preferences", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)StartGLPrefMenu} },
|
2008-01-27 11:25:03 +00:00
|
|
|
{ redtext, " ", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
2008-11-01 17:36:19 +00:00
|
|
|
{ discrete, "Vertical Sync", {&vid_vsync}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Rendering quality", {&gl_render_precise}, {2.0}, {0.0}, {0.0}, {Precision} },
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
menuitem_t GLTextureItems[] = {
|
2008-01-27 11:25:03 +00:00
|
|
|
{ discrete, "Textures enabled", {&gl_texture}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ discrete, "Texture Filter mode", {&gl_texture_filter}, {5.0}, {0.0}, {0.0}, {FilterModes} },
|
|
|
|
{ discrete, "Anisotropic filter", {&gl_texture_filter_anisotropic},{5.0},{0.0}, {0.0}, {Anisotropy} },
|
2008-06-08 09:24:55 +00:00
|
|
|
{ discrete, "Texture Format", {&gl_texture_format}, {8.0}, {0.0}, {0.0}, {TextureFormats} },
|
2008-01-27 11:25:03 +00:00
|
|
|
{ discrete, "Enable hires textures", {&gl_texture_usehires}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ discrete, "Precache GL textures", {&gl_precache}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
};
|
|
|
|
|
|
|
|
menuitem_t GLLightItems[] = {
|
|
|
|
{ discrete, "Dynamic Lights enabled", {&gl_lights}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ discrete, "Enable light definitions", {&gl_attachedlights}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ discrete, "Clip lights", {&gl_lights_checkside}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ discrete, "Lights affect sprites", {&gl_light_sprites}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ discrete, "Lights affect particles", {&gl_light_particles}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ discrete, "Force additive lighting", {&gl_lights_additive}, {2.0}, {0.0}, {0.0}, {YesNo} },
|
|
|
|
{ slider, "Light intensity", {&gl_lights_intensity}, {0.0}, {1.0}, {0.1f}, {NULL} },
|
|
|
|
{ slider, "Light size", {&gl_lights_size}, {0.0}, {2.0}, {0.1f}, {NULL} },
|
|
|
|
};
|
|
|
|
|
2008-11-01 17:36:19 +00:00
|
|
|
menuitem_t GLPrefItems[] = {
|
|
|
|
{ discrete, "Sector light mode", {&gl_lightmode}, {4.0}, {0.0}, {0.0}, {LightingModes} },
|
|
|
|
{ discrete, "Fog mode", {&gl_fogmode}, {3.0}, {0.0}, {0.0}, {FogMode} },
|
|
|
|
{ discrete, "Fake contrast", {&gl_fakecontrast}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Environment map on mirrors",{&gl_mirror_envmap}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Enhanced night vision mode",{&gl_enhanced_nightvision}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Adjust sprite clipping", {&gl_spriteclip}, {3.0}, {0.0}, {0.0}, {SpriteclipModes} },
|
|
|
|
{ discrete, "Smooth sprite edges", {&gl_sprite_blend}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Sprite billboard", {&gl_billboard_mode}, {2.0}, {0.0}, {0.0}, {BillboardModes} },
|
|
|
|
{ discrete, "Particle style", {&gl_particles_style}, {3.0}, {0.0}, {0.0}, {Particles} },
|
|
|
|
{ slider, "Ambient light level", {&gl_light_ambient}, {0.0}, {255.0}, {5.0}, {NULL} },
|
|
|
|
};
|
|
|
|
|
|
|
|
menuitem_t GLShaderItems[] = {
|
|
|
|
{ discrete, "Enable brightness maps", {&gl_brightmap_shader}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Shaders for texture warp", {&gl_warp_shader}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Shaders for fog", {&gl_fog_shader}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
|
|
|
{ discrete, "Shaders for colormaps", {&gl_colormap_shader}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
2008-11-02 23:48:39 +00:00
|
|
|
{ discrete, "Shaders for glowing textures", {&gl_glow_shader}, {2.0}, {0.0}, {0.0}, {OnOff} },
|
2008-11-01 17:36:19 +00:00
|
|
|
};
|
|
|
|
|
2008-01-27 11:25:03 +00:00
|
|
|
menuitem_t OpenGLDisabled[] = {
|
|
|
|
{ redtext, "This won't take effect", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
|
|
|
{ redtext, "until "GAMENAME" is restarted.", {NULL}, {0.0}, {0.0}, {0.0}, {NULL} },
|
|
|
|
{ more, "", {NULL}, {0.0}, {0.0}, {0.0}, {(value_t *)ReturnToMainMenu} },
|
|
|
|
};
|
|
|
|
|
|
|
|
menu_t OpenGLMenu = {
|
|
|
|
"OPENGL OPTIONS",
|
|
|
|
0,
|
|
|
|
sizeof(OpenGLItems)/sizeof(OpenGLItems[0]),
|
|
|
|
0,
|
|
|
|
OpenGLItems,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
|
|
|
|
menu_t OpenGLMessage = {
|
|
|
|
"",
|
|
|
|
2,
|
|
|
|
sizeof(OpenGLDisabled)/sizeof(OpenGLDisabled[0]),
|
|
|
|
0,
|
|
|
|
OpenGLDisabled,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
|
|
|
|
menu_t GLLightMenu = {
|
|
|
|
"LIGHT OPTIONS",
|
|
|
|
0,
|
|
|
|
sizeof(GLLightItems)/sizeof(GLLightItems[0]),
|
|
|
|
0,
|
|
|
|
GLLightItems,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
|
2008-11-01 17:36:19 +00:00
|
|
|
menu_t GLTextureMenu = {
|
|
|
|
"TEXTURE OPTIONS",
|
|
|
|
0,
|
|
|
|
sizeof(GLTextureItems)/sizeof(GLTextureItems[0]),
|
|
|
|
0,
|
|
|
|
GLTextureItems,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
|
|
|
|
menu_t GLPrefMenu = {
|
|
|
|
"PREFERENCES",
|
|
|
|
0,
|
|
|
|
sizeof(GLPrefItems)/sizeof(GLPrefItems[0]),
|
|
|
|
0,
|
|
|
|
GLPrefItems,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
|
|
|
|
menu_t GLShaderMenu = {
|
|
|
|
"SHADER OPTIONS",
|
|
|
|
0,
|
|
|
|
sizeof(GLShaderItems)/sizeof(GLShaderItems[0]),
|
|
|
|
0,
|
|
|
|
GLShaderItems,
|
|
|
|
0,
|
|
|
|
};
|
|
|
|
|
2008-01-27 11:25:03 +00:00
|
|
|
void StartDisableGL()
|
|
|
|
{
|
|
|
|
M_SwitchMenu(&OpenGLMessage);
|
|
|
|
gl_nogl=true;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ReturnToMainMenu()
|
|
|
|
{
|
|
|
|
M_StartControlPanel(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
void StartGLMenu (void)
|
|
|
|
{
|
|
|
|
if (!gl_disabled)
|
|
|
|
{
|
|
|
|
M_SwitchMenu(&OpenGLMenu);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
M_SwitchMenu(&OpenGLMessage);
|
|
|
|
gl_nogl=false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void StartGLLightMenu (void)
|
|
|
|
{
|
|
|
|
M_SwitchMenu(&GLLightMenu);
|
|
|
|
}
|
|
|
|
|
2008-11-01 17:36:19 +00:00
|
|
|
void StartGLTextureMenu (void)
|
|
|
|
{
|
|
|
|
M_SwitchMenu(&GLTextureMenu);
|
|
|
|
}
|
|
|
|
|
|
|
|
void StartGLPrefMenu (void)
|
|
|
|
{
|
|
|
|
M_SwitchMenu(&GLPrefMenu);
|
|
|
|
}
|
|
|
|
|
|
|
|
void StartGLShaderMenu (void)
|
|
|
|
{
|
|
|
|
M_SwitchMenu(&GLShaderMenu);
|
|
|
|
}
|
|
|
|
|
|
|
|
void gl_SetupMenu()
|
|
|
|
{
|
|
|
|
// Customize the GL menu depending on shader availability
|
|
|
|
if (!(gl.flags & RFL_GLSL))
|
|
|
|
{
|
|
|
|
menuitem_t *lightmodeitem = &GLPrefItems[0];
|
|
|
|
menuitem_t *fogmodeitem = &GLPrefItems[1];
|
|
|
|
|
|
|
|
lightmodeitem->e.values = LightingModes2;
|
2008-11-01 23:56:10 +00:00
|
|
|
lightmodeitem->b.numvalues = 4;
|
2008-11-01 17:36:19 +00:00
|
|
|
|
|
|
|
fogmodeitem->b.numvalues = 2;
|
|
|
|
|
|
|
|
OpenGLMenu.numitems = sizeof(OpenGLItems2)/sizeof(OpenGLItems2[0]);
|
|
|
|
OpenGLMenu.items = OpenGLItems2;
|
|
|
|
|
|
|
|
// disable features that don't work without shaders.
|
|
|
|
if (gl_lightmode == 2) gl_lightmode = 3;
|
|
|
|
if (gl_fogmode == 2) gl_fogmode = 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
menuitem_t *lightmodeitem = &GLPrefItems[0];
|
|
|
|
menuitem_t *fogmodeitem = &GLPrefItems[1];
|
|
|
|
|
|
|
|
lightmodeitem->e.values = LightingModes;
|
2008-11-01 23:56:10 +00:00
|
|
|
lightmodeitem->b.numvalues = 5;
|
2008-11-01 17:36:19 +00:00
|
|
|
|
|
|
|
OpenGLMenu.numitems = sizeof(OpenGLItems)/sizeof(OpenGLItems[0]);
|
|
|
|
OpenGLMenu.items = OpenGLItems;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-01-27 11:25:03 +00:00
|
|
|
CUSTOM_CVAR (Float, vid_brightness, 0.f, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
|
|
|
{
|
|
|
|
if (screen != NULL)
|
|
|
|
{
|
|
|
|
screen->SetGamma(Gamma); //Brightness (self);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
CUSTOM_CVAR (Float, vid_contrast, 1.f, CVAR_ARCHIVE|CVAR_GLOBALCONFIG)
|
|
|
|
{
|
|
|
|
if (screen != NULL)
|
|
|
|
{
|
|
|
|
screen->SetGamma(Gamma); //SetContrast (self);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|