summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-10-18 21:08:31 +0300
committerPerttu Ahola <celeron55@gmail.com>2011-10-18 21:08:31 +0300
commit9b907dd65a2c045d10605894fdaea504200e2be7 (patch)
tree411bffac25c47471bdd05eabcbf7c210ec3a231d /src
parent28f2fdb6dec0c54ce9e32df79a73ef19aee03fd5 (diff)
downloadminetest-9b907dd65a2c045d10605894fdaea504200e2be7.tar.gz
minetest-9b907dd65a2c045d10605894fdaea504200e2be7.tar.bz2
minetest-9b907dd65a2c045d10605894fdaea504200e2be7.zip
Try to tune fog to work well on high-end machines also
Diffstat (limited to 'src')
-rw-r--r--src/camera.cpp4
-rw-r--r--src/defaultsettings.cpp1
-rw-r--r--src/game.cpp11
-rw-r--r--src/map.cpp12
4 files changed, 17 insertions, 11 deletions
diff --git a/src/camera.cpp b/src/camera.cpp
index ecb5a17f4..a32336714 100644
--- a/src/camera.cpp
+++ b/src/camera.cpp
@@ -342,7 +342,7 @@ void Camera::updateViewingRange(f32 frametime_in)
<<std::endl;*/
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)
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
// This value was 0.4 for many months until 2011-10-18 by c55;
// 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;
return;
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index b05d060ac..d88440812 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -45,6 +45,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("keymap_frametime_graph", "KEY_F1");
settings->setDefault("keymap_screenshot", "KEY_F12");
settings->setDefault("keymap_toggle_profiler", "KEY_F2");
+ settings->setDefault("keymap_toggle_force_fog_off", "KEY_F3");
// Some (temporary) keys for debugging
settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P");
diff --git a/src/game.cpp b/src/game.cpp
index e3380ace4..c67660ec8 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -952,6 +952,8 @@ void the_game(
bool show_profiler = false;
+ bool force_fog_off = false;
+
/*
Main loop
*/
@@ -1323,6 +1325,10 @@ void the_game(
show_profiler = !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
{
@@ -1971,7 +1977,7 @@ void the_game(
Fog
*/
- if(g_settings->getBool("enable_fog") == true)
+ if(g_settings->getBool("enable_fog") == true && !force_fog_off)
{
f32 range;
if(farmesh)
@@ -1981,12 +1987,11 @@ void the_game(
else
{
range = draw_control.wanted_range*BS + MAP_BLOCKSIZE*BS*1.5;
+ range *= 0.9;
if(draw_control.range_all)
range = 100000*BS;
/*if(range < 50*BS)
range = range * 0.5 + 25*BS;*/
- // Move the invisible limit a bit further
- //range *= 1.2;
}
driver->setFog(
diff --git a/src/map.cpp b/src/map.cpp
index febc40ddd..ba4130ca2 100644
--- a/src/map.cpp
+++ b/src/map.cpp
@@ -3659,13 +3659,13 @@ void ClientMap::renderMap(video::IVideoDriver* driver, s32 pass)
// Take a fair amount as we will be dropping more out later
// Umm... these additions are a bit strange but they are needed.
v3s16 p_blocks_min(
- p_nodes_min.X / MAP_BLOCKSIZE - 2,
- p_nodes_min.Y / MAP_BLOCKSIZE - 2,
- p_nodes_min.Z / MAP_BLOCKSIZE - 2);
+ p_nodes_min.X / MAP_BLOCKSIZE - 3,
+ p_nodes_min.Y / MAP_BLOCKSIZE - 3,
+ p_nodes_min.Z / MAP_BLOCKSIZE - 3);
v3s16 p_blocks_max(
- p_nodes_max.X / MAP_BLOCKSIZE + 0,
- p_nodes_max.Y / MAP_BLOCKSIZE + 0,
- p_nodes_max.Z / MAP_BLOCKSIZE + 0);
+ p_nodes_max.X / MAP_BLOCKSIZE + 1,
+ p_nodes_max.Y / MAP_BLOCKSIZE + 1,
+ p_nodes_max.Z / MAP_BLOCKSIZE + 1);
u32 vertex_count = 0;
u32 meshbuffer_count = 0;