Try to tune fog to work well on high-end machines also

This commit is contained in:
Perttu Ahola 2011-10-18 21:08:31 +03:00
parent 28f2fdb6de
commit 9b907dd65a
4 changed files with 17 additions and 11 deletions

@ -342,7 +342,7 @@ void Camera::updateViewingRange(f32 frametime_in)
<<std::endl;*/ <<std::endl;*/
m_draw_control.wanted_min_range = m_viewing_range_min; m_draw_control.wanted_min_range = m_viewing_range_min;
m_draw_control.wanted_max_blocks = (1.5*m_draw_control.blocks_would_have_drawn)+1; m_draw_control.wanted_max_blocks = (2.0*m_draw_control.blocks_would_have_drawn)+1;
if (m_draw_control.wanted_max_blocks < 10) if (m_draw_control.wanted_max_blocks < 10)
m_draw_control.wanted_max_blocks = 10; m_draw_control.wanted_max_blocks = 10;
@ -366,7 +366,7 @@ void Camera::updateViewingRange(f32 frametime_in)
// If needed frametime change is small, just return // If needed frametime change is small, just return
// This value was 0.4 for many months until 2011-10-18 by c55; // This value was 0.4 for many months until 2011-10-18 by c55;
// Let's see how this works out. // Let's see how this works out.
if (fabs(wanted_frametime_change) < m_wanted_frametime*0.25) if (fabs(wanted_frametime_change) < m_wanted_frametime*0.33)
{ {
//dstream<<"ignoring small wanted_frametime_change"<<std::endl; //dstream<<"ignoring small wanted_frametime_change"<<std::endl;
return; return;

@ -45,6 +45,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("keymap_frametime_graph", "KEY_F1"); settings->setDefault("keymap_frametime_graph", "KEY_F1");
settings->setDefault("keymap_screenshot", "KEY_F12"); settings->setDefault("keymap_screenshot", "KEY_F12");
settings->setDefault("keymap_toggle_profiler", "KEY_F2"); settings->setDefault("keymap_toggle_profiler", "KEY_F2");
settings->setDefault("keymap_toggle_force_fog_off", "KEY_F3");
// Some (temporary) keys for debugging // Some (temporary) keys for debugging
settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P"); settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P");

@ -952,6 +952,8 @@ void the_game(
bool show_profiler = false; bool show_profiler = false;
bool force_fog_off = false;
/* /*
Main loop Main loop
*/ */
@ -1323,6 +1325,10 @@ void the_game(
show_profiler = !show_profiler; show_profiler = !show_profiler;
guitext_profiler->setVisible(show_profiler); guitext_profiler->setVisible(show_profiler);
} }
else if(input->wasKeyDown(getKeySetting("keymap_toggle_force_fog_off")))
{
force_fog_off = !force_fog_off;
}
// Item selection with mouse wheel // Item selection with mouse wheel
{ {
@ -1971,7 +1977,7 @@ void the_game(
Fog Fog
*/ */
if(g_settings->getBool("enable_fog") == true) if(g_settings->getBool("enable_fog") == true && !force_fog_off)
{ {
f32 range; f32 range;
if(farmesh) if(farmesh)
@ -1981,12 +1987,11 @@ void the_game(
else else
{ {
range = draw_control.wanted_range*BS + MAP_BLOCKSIZE*BS*1.5; range = draw_control.wanted_range*BS + MAP_BLOCKSIZE*BS*1.5;
range *= 0.9;
if(draw_control.range_all) if(draw_control.range_all)
range = 100000*BS; range = 100000*BS;
/*if(range < 50*BS) /*if(range < 50*BS)
range = range * 0.5 + 25*BS;*/ range = range * 0.5 + 25*BS;*/
// Move the invisible limit a bit further
//range *= 1.2;
} }
driver->setFog( driver->setFog(

@ -3659,13 +3659,13 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
// Take a fair amount as we will be dropping more out later // Take a fair amount as we will be dropping more out later
// Umm... these additions are a bit strange but they are needed. // Umm... these additions are a bit strange but they are needed.
v3s16 p_blocks_min( v3s16 p_blocks_min(
p_nodes_min.X / MAP_BLOCKSIZE - 2, p_nodes_min.X / MAP_BLOCKSIZE - 3,
p_nodes_min.Y / MAP_BLOCKSIZE - 2, p_nodes_min.Y / MAP_BLOCKSIZE - 3,
p_nodes_min.Z / MAP_BLOCKSIZE - 2); p_nodes_min.Z / MAP_BLOCKSIZE - 3);
v3s16 p_blocks_max( v3s16 p_blocks_max(
p_nodes_max.X / MAP_BLOCKSIZE + 0, p_nodes_max.X / MAP_BLOCKSIZE + 1,
p_nodes_max.Y / MAP_BLOCKSIZE + 0, p_nodes_max.Y / MAP_BLOCKSIZE + 1,
p_nodes_max.Z / MAP_BLOCKSIZE + 0); p_nodes_max.Z / MAP_BLOCKSIZE + 1);
u32 vertex_count = 0; u32 vertex_count = 0;
u32 meshbuffer_count = 0; u32 meshbuffer_count = 0;