diff --git a/binaries/data/config/default.cfg b/binaries/data/config/default.cfg index a3682e5fff..1ae80ba36d 100644 --- a/binaries/data/config/default.cfg +++ b/binaries/data/config/default.cfg @@ -35,6 +35,7 @@ shadows = true shadowpcf = true vsync = false particles = true +silhouettes = true nos3tc = false noautomipmap = true @@ -116,6 +117,7 @@ hotkey.bigscreenshot = "Shift+F2" ; Take large BMP screenshot hotkey.togglefullscreen = "Alt+Return" ; Toggle fullscreen/windowed mode hotkey.screenshot.watermark = "K" ; Toggle product/company watermark for official screenshots hotkey.wireframe = "Alt+W" ; Toggle wireframe mode +hotkey.silhouettes = "Alt+S" ; Toggle unit silhouettes ; > CAMERA SETTINGS hotkey.camera.reset = "H" ; Reset camera rotation to default. @@ -222,8 +224,6 @@ profiler2.gpu.arb.enable = true ; Allow GL_ARB_timer_query timing mo profiler2.gpu.ext.enable = true ; Allow GL_EXT_timer_query timing mode when available profiler2.gpu.intel.enable = true ; Allow GL_INTEL_performance_queries timing mode when available -hotkey.attackmove = Super - ; > QUICKSAVE hotkey.quicksave = "Shift+F5" hotkey.quickload = "Shift+F8" diff --git a/binaries/data/mods/public/gui/session/session.xml b/binaries/data/mods/public/gui/session/session.xml index c000681c82..99f3be72f4 100644 --- a/binaries/data/mods/public/gui/session/session.xml +++ b/binaries/data/mods/public/gui/session/session.xml @@ -55,6 +55,11 @@ openMenu(); + + + + renderer.silhouettes = !renderer.silhouettes; + diff --git a/source/ps/GameSetup/Config.cpp b/source/ps/GameSetup/Config.cpp index 7c98ba0f43..9743527884 100644 --- a/source/ps/GameSetup/Config.cpp +++ b/source/ps/GameSetup/Config.cpp @@ -39,6 +39,7 @@ bool g_Shadows = false; bool g_ShadowPCF = false; bool g_FancyWater = false; bool g_Particles = false; +bool g_Silhouettes = false; float g_Gamma = 1.0f; @@ -79,6 +80,7 @@ static void LoadGlobals() CFG_GET_USER_VAL("fancywater", Bool, g_FancyWater); CFG_GET_USER_VAL("renderpath", String, g_RenderPath); CFG_GET_USER_VAL("particles", Bool, g_Particles); + CFG_GET_USER_VAL("particles", Bool, g_Silhouettes); float gain = -1.0f; CFG_GET_USER_VAL("sound.mastergain", Float, gain); diff --git a/source/ps/GameSetup/Config.h b/source/ps/GameSetup/Config.h index abfae85ad7..3c4489358d 100644 --- a/source/ps/GameSetup/Config.h +++ b/source/ps/GameSetup/Config.h @@ -52,6 +52,8 @@ extern bool g_FancyWater; extern bool g_ShadowPCF; // flag to switch on particles rendering extern bool g_Particles; +// flag to switch on unit silhouettes +extern bool g_Silhouettes; extern float g_Gamma; // name of configured render path (depending on OpenGL extensions, this may not be diff --git a/source/ps/GameSetup/GameSetup.cpp b/source/ps/GameSetup/GameSetup.cpp index 67622d6416..17931db234 100644 --- a/source/ps/GameSetup/GameSetup.cpp +++ b/source/ps/GameSetup/GameSetup.cpp @@ -583,6 +583,7 @@ static void InitRenderer() g_Renderer.SetRenderPath(CRenderer::GetRenderPathByName(g_RenderPath)); g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWPCF, g_ShadowPCF); g_Renderer.SetOptionBool(CRenderer::OPT_PARTICLES, g_Particles); + g_Renderer.SetOptionBool(CRenderer::OPT_SILHOUETTES, g_Silhouettes); // create terrain related stuff new CTerrainTextureManager; diff --git a/source/renderer/Renderer.cpp b/source/renderer/Renderer.cpp index 6673350781..9dcefff892 100644 --- a/source/renderer/Renderer.cpp +++ b/source/renderer/Renderer.cpp @@ -426,6 +426,7 @@ CRenderer::CRenderer() m_Options.m_ARBProgramShadow = true; m_Options.m_ShadowPCF = false; m_Options.m_Particles = false; + m_Options.m_Silhouettes = false; m_Options.m_PreferGLSL = false; m_Options.m_ForceAlphaTest = false; m_Options.m_GPUSkinning = false; @@ -459,6 +460,7 @@ CRenderer::CRenderer() AddLocalProperty(L"waterShininess", &m->waterManager.m_Shininess, false); AddLocalProperty(L"waterSpecularStrength", &m->waterManager.m_SpecularStrength, false); AddLocalProperty(L"waterWaviness", &m->waterManager.m_Waviness, false); + AddLocalProperty(L"silhouettes", &m_Options.m_Silhouettes, false); RegisterFileReloadFunc(ReloadChangedFileCB, this); } @@ -665,6 +667,9 @@ void CRenderer::SetOptionBool(enum Option opt,bool value) case OPT_PARTICLES: m_Options.m_Particles = value; break; + case OPT_SILHOUETTES: + m_Options.m_Silhouettes = value; + break; default: debug_warn(L"CRenderer::SetOptionBool: unknown option"); break; @@ -686,6 +691,8 @@ bool CRenderer::GetOptionBool(enum Option opt) const return m_Options.m_ShadowPCF; case OPT_PARTICLES: return m_Options.m_Particles; + case OPT_SILHOUETTES: + return m_Options.m_Silhouettes; default: debug_warn(L"CRenderer::GetOptionBool: unknown option"); break; @@ -1460,7 +1467,10 @@ void CRenderer::RenderSubmissions() ogl_WarnIfError(); } - RenderSilhouettes(context); + if (m_Options.m_Silhouettes) + { + RenderSilhouettes(context); + } #if !CONFIG2_GLES // Clean up texture blend mode so particles and other things render OK diff --git a/source/renderer/Renderer.h b/source/renderer/Renderer.h index 16bbc189c1..7edabe0de2 100644 --- a/source/renderer/Renderer.h +++ b/source/renderer/Renderer.h @@ -79,7 +79,8 @@ public: OPT_SHADOWS, OPT_FANCYWATER, OPT_SHADOWPCF, - OPT_PARTICLES + OPT_PARTICLES, + OPT_SILHOUETTES }; enum RenderPath { @@ -127,6 +128,7 @@ public: bool m_PreferGLSL; bool m_ForceAlphaTest; bool m_GPUSkinning; + bool m_Silhouettes; } m_Options; struct Caps {