Ticket #4626: fog_v3.patch

File fog_v3.patch, 9.5 KB (added by dp304, 6 years ago)
  • binaries/data/config/default.cfg

     
    7474shadowpcf = true
    7575vsync = false
    7676particles = true
     77fog = true
    7778silhouettes = true
    7879showsky = true
    7980
  • binaries/data/mods/public/gui/options/options.json

     
    153153            },
    154154            {
    155155                "type": "boolean",
     156                "label": "Fog",
     157                "tooltip": "Enable fog",
     158                "dependencies": ["preferglsl"],
     159                "config": "fog",
     160                "function": "Renderer_SetFogEnabled"
     161            },
     162            {
     163                "type": "boolean",
    156164                "label": "Post Processing",
    157165                "tooltip": "Use screen-space postprocessing filters (HDR, Bloom, DOF, etc)",
    158166                "config": "postproc",
  • binaries/data/mods/public/shaders/glsl/model_common.fs

     
    225225    color = mix(texdiffuse, color, specular.a);
    226226  #endif
    227227
    228   color = get_fog(color);
     228  #if USE_FOG
     229    color = get_fog(color);
     230  #endif
    229231
    230232  #if !IGNORE_LOS
    231233    float los = texture2D(losTex, v_los).a;
  • binaries/data/mods/public/shaders/glsl/particle.fs

     
    3535    los = los < 0.03 ? 0.0 : los;
    3636    color.rgb *= los;
    3737
    38     gl_FragColor = get_fog(color);
     38    #if USE_FOG
     39        gl_FragColor = get_fog(color);
     40    #else
     41        gl_FragColor = color;
     42    #endif
    3943}
  • binaries/data/mods/public/shaders/glsl/solid_player.fs

     
    2222
    2323void main()
    2424{
    25     gl_FragColor = vec4(get_fog(playerColor.rgb),playerColor.a);
     25    #if USE_FOG
     26        gl_FragColor = vec4(get_fog(playerColor.rgb),playerColor.a);
     27    #else
     28        gl_FragColor = vec4(playerColor.rgb,playerColor.a);
     29    #endif
    2630}
  • binaries/data/mods/public/shaders/glsl/terrain_common.fs

     
    236236    color = mix(texdiffuse, color, specular.a);
    237237  #endif
    238238
    239   color = get_fog(color);
     239  #if USE_FOG
     240    color = get_fog(color);
     241  #endif
    240242
    241243  float los = texture2D(losTex, v_los).a;
    242244  los = los < 0.03 ? 0.0 : los;
  • binaries/data/mods/public/shaders/glsl/water_high.fs

     
    339339    foam1.x = foaminterp.x * WindCosSin.x - foaminterp.z * WindCosSin.y;
    340340   
    341341    float foam = FoamEffects.r * FoamEffects.a*0.4 + pow(foam1.x*(5.0+waviness),(2.6 - waviness/5.5));
    342    
    343     gl_FragColor.rgb = get_fog(color) * losMod + foam * losMod;
     342
     343    #if USE_FOG
     344        gl_FragColor.rgb = get_fog(color) * losMod + foam * losMod;
     345    #else
     346        gl_FragColor.rgb = color * losMod + foam * losMod;
     347    #endif
    344348#else
    345     gl_FragColor.rgb = get_fog(color) * losMod;
     349    #if USE_FOG
     350        gl_FragColor.rgb = get_fog(color) * losMod;
     351    #else
     352        gl_FragColor.rgb = color * losMod;
     353    #endif
    346354#endif
    347355   
    348356gl_FragColor.a = 1.0;
  • source/ps/CStrInternStatic.h

     
    6262X(USE_SHADOW_PCF)
    6363X(USE_SHADOW_SAMPLER)
    6464X(USE_SHADOWS_ON_WATER)
     65X(USE_FOG)
    6566X(WATERTYPE_CLAP)
    6667X(WATERTYPE_LAKE)
    6768X2(_emptystring, "")
  • 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/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;
     
    582583    if (m_LightEnv)
    583584        m->globalContext.Add(CStrIntern("LIGHTING_MODEL_" + m_LightEnv->GetLightingModel()), str_1);
    584585
     586    if (m_Options.m_PreferGLSL && m_Options.m_Fog)
     587        m->globalContext.Add(str_USE_FOG, str_1);
     588
    585589    m->Model.ModShader = LitRenderModifierPtr(new ShaderRenderModifier());
    586590
    587591    bool cpuLighting = (GetRenderPath() == RP_FIXED);
     
    722726            MakeShadersDirty();
    723727            RecomputeSystemShaderDefines();
    724728            break;
     729        case OPT_FOG:
     730            m_Options.m_Fog = value;
     731            MakeShadersDirty();
     732            break;
    725733        case OPT_SILHOUETTES:
    726734            m_Options.m_Silhouettes = value;
    727735            break;
     
    770778            return m_Options.m_Particles;
    771779        case OPT_PREFERGLSL:
    772780            return m_Options.m_PreferGLSL;
     781        case OPT_FOG:
     782            return m_Options.m_Fog;
    773783        case OPT_SILHOUETTES:
    774784            return m_Options.m_Silhouettes;
    775785        case OPT_SHOWSKY:
     
    20852095void CRenderer::MakeShadersDirty()
    20862096{
    20872097    m->ShadersDirty = true;
     2098    m_WaterManager->m_NeedsReloading = true;
    20882099}
    20892100
    20902101CTextureManager& CRenderer::GetTextureManager()
  • 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/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);