Ticket #4626: fog_v1.patch

File fog_v1.patch, 8.0 KB (added by dp304, 6 years ago)
  • binaries/data/mods/public/gui/options/options.json

     
    198198            },
    199199            {
    200200                "type": "boolean",
     201                "label": "Fog",
     202                "tooltip": "Enable fog",
     203                "config": "fog",
     204                "function": "Renderer_SetFogEnabled"
     205            },
     206            {
     207                "type": "boolean",
    201208                "label": "Unit Silhouettes",
    202209                "tooltip": "Show outlines of units behind buildings",
    203210                "config": "silhouettes",
  • source/graphics/ParticleEmitter.cpp

     
    185185    const CLightEnv& lightEnv = g_Renderer.GetLightEnv();
    186186    shader->Uniform(str_sunColor, lightEnv.m_SunColor);
    187187    shader->Uniform(str_fogColor, lightEnv.m_FogColor);
    188     shader->Uniform(str_fogParams, lightEnv.m_FogFactor, lightEnv.m_FogMax, 0.f, 0.f);
     188    shader->Uniform(str_fogParams, (g_Renderer.m_Options.m_Fog ? lightEnv.m_FogFactor : 0.f), lightEnv.m_FogMax, 0.f, 0.f);
    189189
    190190    shader->BindTexture(str_baseTex, m_Type->m_Texture);
    191191    pglBlendEquationEXT(m_Type->m_BlendEquation);
  • source/ps/GameSetup/Config.cpp

     
    5050bool g_WaterShadows = false;
    5151
    5252bool g_Particles = false;
     53bool g_Fog = true;
    5354bool g_Silhouettes = false;
    5455bool g_ShowSky = false;
    5556
     
    105106
    106107    CFG_GET_VAL("renderpath", g_RenderPath);
    107108    CFG_GET_VAL("particles", g_Particles);
     109    CFG_GET_VAL("fog", g_Fog);
    108110    CFG_GET_VAL("silhouettes", g_Silhouettes);
    109111    CFG_GET_VAL("showsky", g_ShowSky);
    110112    CFG_GET_VAL("preferglsl", g_PreferGLSL);
  • source/ps/GameSetup/Config.h

     
    6767extern bool g_ShadowPCF;
    6868// flag to switch on particles rendering
    6969extern bool g_Particles;
     70// flag to switch on fog
     71extern bool g_Fog;
    7072// flag to switch on unit silhouettes
    7173extern bool g_Silhouettes;
    7274// flag to switch on sky rendering
  • source/ps/GameSetup/GameSetup.cpp

     
    632632    g_ConfigDB.SetValueBool(CFG_SYSTEM, "shadowpcf", g_ShadowPCF);
    633633    g_Renderer.SetOptionBool(CRenderer::OPT_PARTICLES, g_Particles);
    634634    g_ConfigDB.SetValueBool(CFG_SYSTEM, "particles", g_Particles);
     635    g_Renderer.SetOptionBool(CRenderer::OPT_FOG, g_Fog);
     636    g_ConfigDB.SetValueBool(CFG_SYSTEM, "fog", g_Fog);
    635637    g_Renderer.SetOptionBool(CRenderer::OPT_SILHOUETTES, g_Silhouettes);
    636638    g_ConfigDB.SetValueBool(CFG_SYSTEM, "silhouettes", g_Silhouettes);
    637639    g_Renderer.SetOptionBool(CRenderer::OPT_SHOWSKY, g_ShowSky);
  • source/renderer/RenderModifiers.cpp

     
    9292        shader->Uniform(str_sunColor, GetLightEnv()->m_SunColor);
    9393
    9494        shader->Uniform(str_fogColor, GetLightEnv()->m_FogColor);
    95         shader->Uniform(str_fogParams, GetLightEnv()->m_FogFactor, GetLightEnv()->m_FogMax, 0.f, 0.f);
     95        shader->Uniform(str_fogParams, (g_Renderer.m_Options.m_Fog ? GetLightEnv()->m_FogFactor : 0.f), GetLightEnv()->m_FogMax, 0.f, 0.f);
    9696    }
    9797
    9898    if (shader->GetTextureBinding(str_losTex).Active())
  • source/renderer/Renderer.cpp

     
    441441    m_Options.m_ARBProgramShadow = true;
    442442    m_Options.m_ShadowPCF = false;
    443443    m_Options.m_Particles = false;
     444    m_Options.m_Fog = false;
    444445    m_Options.m_Silhouettes = false;
    445446    m_Options.m_PreferGLSL = false;
    446447    m_Options.m_ForceAlphaTest = false;
     
    722723            MakeShadersDirty();
    723724            RecomputeSystemShaderDefines();
    724725            break;
     726        case OPT_FOG:
     727            m_Options.m_Fog = value;
     728            MakeShadersDirty();
     729            break;
    725730        case OPT_SILHOUETTES:
    726731            m_Options.m_Silhouettes = value;
    727732            break;
     
    770775            return m_Options.m_Particles;
    771776        case OPT_PREFERGLSL:
    772777            return m_Options.m_PreferGLSL;
     778        case OPT_FOG:
     779            return m_Options.m_Fog;
    773780        case OPT_SILHOUETTES:
    774781            return m_Options.m_Silhouettes;
    775782        case OPT_SHOWSKY:
  • source/renderer/Renderer.h

     
    8585        OPT_SHADOWPCF,
    8686        OPT_PARTICLES,
    8787        OPT_PREFERGLSL,
     88        OPT_FOG,
    8889        OPT_SILHOUETTES,
    8990        OPT_SHOWSKY,
    9091        OPT_SMOOTHLOS,
     
    154155        bool m_PreferGLSL;
    155156        bool m_ForceAlphaTest;
    156157        bool m_GPUSkinning;
     158        bool m_Fog;
    157159        bool m_Silhouettes;
    158160        bool m_SmoothLOS;
    159161        bool m_ShowSky;
  • source/renderer/TerrainRenderer.cpp

     
    473473    shader->Uniform(str_sunDir, lightEnv.GetSunDir());
    474474
    475475    shader->Uniform(str_fogColor, lightEnv.m_FogColor);
    476     shader->Uniform(str_fogParams, lightEnv.m_FogFactor, lightEnv.m_FogMax, 0.f, 0.f);
     476    shader->Uniform(str_fogParams, (g_Renderer.m_Options.m_Fog ? lightEnv.m_FogFactor : 0.f), lightEnv.m_FogMax, 0.f, 0.f);
    477477}
    478478
    479479void TerrainRenderer::RenderTerrainShader(const CShaderDefines& context, int cullGroup, ShadowMap* shadow)
     
    788788    m->fancyWaterShader->Uniform(str_losMatrix, losTexture.GetTextureMatrix());
    789789    m->fancyWaterShader->Uniform(str_cameraPos, camPos);
    790790    m->fancyWaterShader->Uniform(str_fogColor, lightEnv.m_FogColor);
    791     m->fancyWaterShader->Uniform(str_fogParams, lightEnv.m_FogFactor, lightEnv.m_FogMax, 0.f, 0.f);
     791    m->fancyWaterShader->Uniform(str_fogParams, (g_Renderer.m_Options.m_Fog ? lightEnv.m_FogFactor : 0.f), lightEnv.m_FogMax, 0.f, 0.f);
    792792    m->fancyWaterShader->Uniform(str_time, (float)time);
    793793    m->fancyWaterShader->Uniform(str_screenSize, (float)g_Renderer.GetWidth(), (float)g_Renderer.GetHeight(), 0.0f, 0.0f);
    794794
  • source/renderer/scripting/JSInterface_Renderer.cpp

     
    4343IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREFLECTION, WaterReflection);
    4444IMPLEMENT_BOOLEAN_SCRIPT_SETTING(WATERREFRACTION, WaterRefraction);
    4545IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHADOWSONWATER, WaterShadows);
     46IMPLEMENT_BOOLEAN_SCRIPT_SETTING(FOG, Fog);
    4647IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SILHOUETTES, Silhouettes);
    4748IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SHOWSKY, ShowSky);
    4849IMPLEMENT_BOOLEAN_SCRIPT_SETTING(SMOOTHLOS, SmoothLOS);
     
    8687    REGISTER_BOOLEAN_SCRIPT_SETTING(WaterReflection);
    8788    REGISTER_BOOLEAN_SCRIPT_SETTING(WaterRefraction);
    8889    REGISTER_BOOLEAN_SCRIPT_SETTING(WaterShadows);
     90    REGISTER_BOOLEAN_SCRIPT_SETTING(Fog);
    8991    REGISTER_BOOLEAN_SCRIPT_SETTING(Silhouettes);
    9092    REGISTER_BOOLEAN_SCRIPT_SETTING(ShowSky);
    9193    REGISTER_BOOLEAN_SCRIPT_SETTING(SmoothLOS);
  • source/renderer/scripting/JSInterface_Renderer.h

     
    4141    DECLARE_BOOLEAN_SCRIPT_SETTING(WaterReflection);
    4242    DECLARE_BOOLEAN_SCRIPT_SETTING(WaterRefraction);
    4343    DECLARE_BOOLEAN_SCRIPT_SETTING(WaterShadows);
     44    DECLARE_BOOLEAN_SCRIPT_SETTING(Fog);
    4445    DECLARE_BOOLEAN_SCRIPT_SETTING(Silhouettes);
    4546    DECLARE_BOOLEAN_SCRIPT_SETTING(ShowSky);
    4647    DECLARE_BOOLEAN_SCRIPT_SETTING(SmoothLOS);