Opened 7 years ago

Last modified 6 years ago

#4626 closed enhancement

Disable Fog option — at Initial Version

Reported by: elexis Owned by:
Priority: Should Have Milestone: Alpha 23
Component: Core engine Keywords:
Cc: Patch:

Description

There are three reasons why someone would want to disable fog (the graphics effect, not the fog of war):

  • For playing, the fog is often obstructing the view, even if it's visually appealing.
  • For promotional screenshots we want to keep shaders enabled (especially for shadows) and zoom out very far without getting everything fogged.
  • On many maps there is too much fog (they should be fixed some day).

This example shows that we can change the setting at runtime:

Index: source/renderer/RenderModifiers.cpp
===================================================================
--- source/renderer/RenderModifiers.cpp	(revision 19759)
+++ source/renderer/RenderModifiers.cpp	(working copy)
@@ -92,7 +92,6 @@
 		shader->Uniform(str_sunColor, GetLightEnv()->m_SunColor);
 
 		shader->Uniform(str_fogColor, GetLightEnv()->m_FogColor);
-		shader->Uniform(str_fogParams, GetLightEnv()->m_FogFactor, GetLightEnv()->m_FogMax, 0.f, 0.f);
 	}
 
 	if (shader->GetTextureBinding(str_losTex).Active())
Index: source/renderer/TerrainRenderer.cpp
===================================================================
--- source/renderer/TerrainRenderer.cpp	(revision 19759)
+++ source/renderer/TerrainRenderer.cpp	(working copy)
@@ -473,7 +473,6 @@
 	shader->Uniform(str_sunDir, lightEnv.GetSunDir());
 
 	shader->Uniform(str_fogColor, lightEnv.m_FogColor);
-	shader->Uniform(str_fogParams, lightEnv.m_FogFactor, lightEnv.m_FogMax, 0.f, 0.f);
 }
 
 void TerrainRenderer::RenderTerrainShader(const CShaderDefines& context, int cullGroup, ShadowMap* shadow)
@@ -788,7 +787,6 @@
 	m->fancyWaterShader->Uniform(str_losMatrix, losTexture.GetTextureMatrix());
 	m->fancyWaterShader->Uniform(str_cameraPos, camPos);
 	m->fancyWaterShader->Uniform(str_fogColor, lightEnv.m_FogColor);
-	m->fancyWaterShader->Uniform(str_fogParams, lightEnv.m_FogFactor, lightEnv.m_FogMax, 0.f, 0.f);
 	m->fancyWaterShader->Uniform(str_time, (float)time);
 	m->fancyWaterShader->Uniform(str_screenSize, (float)g_Renderer.GetWidth(), (float)g_Renderer.GetHeight(), 0.0f, 0.0f);
 

The setting should depend on GLSL, just like the water settings depend on the non-ugly water setting in gui/options/options.json.

Change History (0)

Note: See TracTickets for help on using tickets.