From 5a8bc1158ab3341f35fe8b00283d410200b37722 Mon Sep 17 00:00:00 2001 From: JoshuaJB Date: Tue, 22 Apr 2014 05:09:31 +0000 Subject: [PATCH] Add some more GUI graphics settings while fixing some persistence issues. Refs #2310 This was SVN commit r14967. --- .../data/mods/public/gui/options/options.js | 39 +++++++++---------- source/renderer/Renderer.cpp | 4 ++ source/renderer/Renderer.h | 4 +- .../scripting/JSInterface_Renderer.cpp | 4 ++ .../renderer/scripting/JSInterface_Renderer.h | 2 + 5 files changed, 31 insertions(+), 22 deletions(-) diff --git a/binaries/data/mods/public/gui/options/options.js b/binaries/data/mods/public/gui/options/options.js index 4b5cf8417a..5f84b434df 100644 --- a/binaries/data/mods/public/gui/options/options.js +++ b/binaries/data/mods/public/gui/options/options.js @@ -10,19 +10,22 @@ var options = { ], "graphicsSetting": [ - [translate("Prefer GLSL"), translate("Use OpenGL 2.0 shaders (recommended)"), {"renderer":"PreferGLSL"}, "boolean"], - [translate("Shadows"), translate("Enable shadows"), {"renderer":"Shadows"}, "boolean"], - [translate("Particles"), translate("Enable particles"), {"renderer":"Particles"}, "boolean"], - [translate("Show Sky"), translate("Render Sky"), {"renderer":"ShowSky"}, "boolean"], - [translate("Unit Silhouettes"), translate("Show outlines of units behind buildings"), {"renderer":"Silhouettes"}, "boolean"], - [translate("Shadow Filtering"), translate("Smooth shadows"), {"renderer":"ShadowPCF"}, "boolean"], - [translate("HQ Waviness"), translate("Use real normals for ocean-wave rendering, instead of applying them as a flat texture"), {"renderer":"WaterNormal"}, "boolean"], - [translate("Real Water Depth"), translate("Use actual water depth in rendering calculations"), {"renderer":"WaterRealDepth"}, "boolean"], - [translate("Water Reflections"), translate("Allow water to reflect a mirror image"), {"renderer":"WaterReflection"}, "boolean"], - [translate("Water Refraction"), translate("Use a real water refraction map and not transparency"), {"renderer":"WaterRefraction"}, "boolean"], - [translate("Shore Foam"), translate("Show foam on water near shore depending on water waviness"), {"renderer":"WaterFoam"}, "boolean"], - [translate("Shore Waves"), translate("Show breaking waves on water near shore (Requires HQ Waviness)"), {"renderer":"WaterCoastalWaves"}, "boolean"], - [translate("Water Shadows"), translate("Cast shadows on water"), {"renderer":"WaterShadow"}, "boolean"], + [translate("Prefer GLSL"), translate("Use OpenGL 2.0 shaders (recommended)"), {"renderer":"PreferGLSL", "config":"preferglsl"}, "boolean"], + [translate("Post Processing"), translate("Use screen-space postprocessing filters (HDR, Bloom, DOF, etc)"), {"renderer":"Postproc", "config":"postproc"}, "boolean"], + [translate("Shadows"), translate("Enable shadows"), {"renderer":"Shadows", "config":"shadows"}, "boolean"], + [translate("Particles"), translate("Enable particles"), {"renderer":"Particles", "config":"particles"}, "boolean"], + [translate("Show Sky"), translate("Render Sky"), {"renderer":"ShowSky", "config":"showsky"}, "boolean"], + [translate("Smooth LOS"), translate("Lift darkness and fog-of-war smoothly (Requires Prefer GLSL)."), {"renderer":"SmoothLOS", "config":"smoothlos"}, "boolean"], + [translate("Unit Silhouettes"), translate("Show outlines of units behind buildings"), {"renderer":"Silhouettes", "config":"silhouettes"}, "boolean"], + [translate("Shadow Filtering"), translate("Smooth shadows"), {"renderer":"ShadowPCF", "config":"shadowpcf"}, "boolean"], + [translate("HQ Waviness"), translate("Use real normals for ocean-wave rendering, instead of applying them as a flat texture"), {"renderer":"WaterNormal", "config":"waternormals"}, "boolean"], + [translate("Real Water Depth"), translate("Use actual water depth in rendering calculations"), {"renderer":"WaterRealDepth", "config":"waterrealdepth"}, "boolean"], + [translate("Water Reflections"), translate("Allow water to reflect a mirror image"), {"renderer":"WaterReflection", "config":"waterreflection"}, "boolean"], + [translate("Water Refraction"), translate("Use a real water refraction map and not transparency"), {"renderer":"WaterRefraction", "config":"waterrefraction"}, "boolean"], + [translate("Shore Foam"), translate("Show foam on water near shore depending on water waviness"), {"renderer":"WaterFoam", "config":"waterfoam"}, "boolean"], + [translate("Shore Waves"), translate("Show breaking waves on water near shore (Requires HQ Waviness)"), {"renderer":"WaterCoastalWaves", "config":"watercoastalwaves"}, "boolean"], + [translate("Water Shadows"), translate("Cast shadows on water"), {"renderer":"WaterShadow", "config":"watershadows"}, "boolean"], + [translate("VSync"), translate("Run vertical sync to fix screen tearing. REQUIRES GAME RESTART"), {"config":"vsync"}, "boolean"], ], "soundSetting": [ @@ -96,30 +99,26 @@ function setupControl(option, i, prefix) { case "config": // Load initial value if not yet loaded. - if (!checked || typeof checked != boolean) + if (!checked || typeof checked != "boolean") checked = Engine.ConfigDB_GetValue("user", option[2][action]) === "true" ? true : false; // Hacky macro to create the callback. var callback = function(key) { return function() - { Engine.ConfigDB_CreateValue("user", key, String(this.checked)); - }; }(option[2][action]); // Merge the new callback with any existing callbacks. onPress = mergeFunctions(callback, onPress); break; case "renderer": // Load initial value if not yet loaded. - if (!checked || typeof checked != boolean) + if (!checked || typeof checked != "boolean") checked = eval("Engine.Renderer_Get" + option[2][action] + "Enabled()"); // Hacky macro to create the callback. var callback = function(key) { return function() - { eval("Engine.Renderer_Set" + key + "Enabled(" + this.checked + ")"); - }; }(option[2][action]); // Merge the new callback with any existing callbacks. onPress = mergeFunctions(callback, onPress); @@ -154,9 +153,7 @@ function setupControl(option, i, prefix) var callback = function(key) { return function() - { Engine.ConfigDB_CreateValue("user", key, String(this.caption)); - }; }(option[2][action]); // Merge the new callback with any existing callbacks. onPress = mergeFunctions(callback, onPress); diff --git a/source/renderer/Renderer.cpp b/source/renderer/Renderer.cpp index 863e0a250c..c97aae7cc4 100644 --- a/source/renderer/Renderer.cpp +++ b/source/renderer/Renderer.cpp @@ -763,6 +763,10 @@ bool CRenderer::GetOptionBool(enum Option opt) const return m_Options.m_Silhouettes; case OPT_SHOWSKY: return m_Options.m_ShowSky; + case OPT_SMOOTHLOS: + return m_Options.m_SmoothLOS; + case OPT_POSTPROC: + return m_Options.m_Postproc; default: debug_warn(L"CRenderer::GetOptionBool: unknown option"); break; diff --git a/source/renderer/Renderer.h b/source/renderer/Renderer.h index 926cd8e9b8..644fcd8d11 100644 --- a/source/renderer/Renderer.h +++ b/source/renderer/Renderer.h @@ -91,7 +91,9 @@ public: OPT_PARTICLES, OPT_PREFERGLSL, OPT_SILHOUETTES, - OPT_SHOWSKY + OPT_SHOWSKY, + OPT_SMOOTHLOS, + OPT_POSTPROC, }; enum RenderPath { diff --git a/source/renderer/scripting/JSInterface_Renderer.cpp b/source/renderer/scripting/JSInterface_Renderer.cpp index 5d906ebb4b..ec95a951a1 100644 --- a/source/renderer/scripting/JSInterface_Renderer.cpp +++ b/source/renderer/scripting/JSInterface_Renderer.cpp @@ -44,6 +44,8 @@ IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERCOASTALWAVES, WaterCoastalWaves); IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERSHADOW, WaterShadow); IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SILHOUETTES, Silhouettes); IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHOWSKY, ShowSky); +IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SMOOTHLOS, SmoothLOS); +IMPLEMENT_BOOLEAN_SCRIPT_SETTING(POSTPROC, Postproc); #undef IMPLEMENT_BOOLEAN_SCRIPT_SETTING @@ -79,6 +81,8 @@ void JSI_Renderer::RegisterScriptFunctions(ScriptInterface& scriptInterface) REGISTER_BOOLEAN_SCRIPT_SETTING(WaterShadow); REGISTER_BOOLEAN_SCRIPT_SETTING(Silhouettes); REGISTER_BOOLEAN_SCRIPT_SETTING(ShowSky); + REGISTER_BOOLEAN_SCRIPT_SETTING(SmoothLOS); + REGISTER_BOOLEAN_SCRIPT_SETTING(Postproc); } #undef REGISTER_BOOLEAN_SCRIPT_SETTING diff --git a/source/renderer/scripting/JSInterface_Renderer.h b/source/renderer/scripting/JSInterface_Renderer.h index 16a4dd5224..d4879cf163 100644 --- a/source/renderer/scripting/JSInterface_Renderer.h +++ b/source/renderer/scripting/JSInterface_Renderer.h @@ -43,6 +43,8 @@ namespace JSI_Renderer DECLARE_BOOLEAN_SCRIPT_SETTING(WaterShadow); DECLARE_BOOLEAN_SCRIPT_SETTING(Silhouettes); DECLARE_BOOLEAN_SCRIPT_SETTING(ShowSky); + DECLARE_BOOLEAN_SCRIPT_SETTING(SmoothLOS); + DECLARE_BOOLEAN_SCRIPT_SETTING(Postproc); void RegisterScriptFunctions(ScriptInterface& scriptInterface); }