mirror of
https://github.com/minetest/minetest.git
synced 2024-08-18 20:44:16 +02:00
Fog: Make fraction of visible distance at which fog starts configurable
Optimise the fetching of global settings 'camera_smoothing', 'cinematic' and 'cinematic_camera_smoothing'. Cache 'cam_smoothing'.
This commit is contained in:
parent
9714cdcf4b
commit
075833e393
@ -529,6 +529,9 @@ ambient_occlusion_gamma (Ambient occlusion gamma) float 2.2 0.25 4.0
|
|||||||
# Enables animation of inventory items.
|
# Enables animation of inventory items.
|
||||||
inventory_items_animations (Inventory items animations) bool false
|
inventory_items_animations (Inventory items animations) bool false
|
||||||
|
|
||||||
|
# Fraction of the visible distance at which fog starts to be rendered
|
||||||
|
fog_start (Fog Start) float 0.4 0.0 0.99
|
||||||
|
|
||||||
[**Menus]
|
[**Menus]
|
||||||
|
|
||||||
# Use a cloud animation for the main menu background.
|
# Use a cloud animation for the main menu background.
|
||||||
|
@ -19,7 +19,7 @@ bool normalTexturePresent = false;
|
|||||||
|
|
||||||
const float e = 2.718281828459;
|
const float e = 2.718281828459;
|
||||||
const float BS = 10.0;
|
const float BS = 10.0;
|
||||||
const float fogStart = 0.4;
|
const float fogStart = FOG_START;
|
||||||
const float fogShadingParameter = 1 / ( 1 - fogStart);
|
const float fogShadingParameter = 1 / ( 1 - fogStart);
|
||||||
|
|
||||||
#ifdef ENABLE_TONE_MAPPING
|
#ifdef ENABLE_TONE_MAPPING
|
||||||
|
@ -21,7 +21,7 @@ bool texSeamless = false;
|
|||||||
|
|
||||||
const float e = 2.718281828459;
|
const float e = 2.718281828459;
|
||||||
const float BS = 10.0;
|
const float BS = 10.0;
|
||||||
const float fogStart = 0.4;
|
const float fogStart = FOG_START;
|
||||||
const float fogShadingParameter = 1 / ( 1 - fogStart);
|
const float fogShadingParameter = 1 / ( 1 - fogStart);
|
||||||
|
|
||||||
#ifdef ENABLE_TONE_MAPPING
|
#ifdef ENABLE_TONE_MAPPING
|
||||||
|
@ -19,7 +19,7 @@ bool texSeamless = false;
|
|||||||
|
|
||||||
const float e = 2.718281828459;
|
const float e = 2.718281828459;
|
||||||
const float BS = 10.0;
|
const float BS = 10.0;
|
||||||
const float fogStart = 0.4;
|
const float fogStart = FOG_START;
|
||||||
const float fogShadingParameter = 1 / ( 1 - fogStart);
|
const float fogShadingParameter = 1 / ( 1 - fogStart);
|
||||||
|
|
||||||
void get_texture_flags()
|
void get_texture_flags()
|
||||||
|
@ -615,6 +615,10 @@
|
|||||||
# type: bool
|
# type: bool
|
||||||
# inventory_items_animations = false
|
# inventory_items_animations = false
|
||||||
|
|
||||||
|
# Fraction of the visible distance at which fog starts to be rendered
|
||||||
|
# Range 0 - 0.99
|
||||||
|
# fog_start = 0.4
|
||||||
|
|
||||||
### Menus
|
### Menus
|
||||||
|
|
||||||
# Use a cloud animation for the main menu background.
|
# Use a cloud animation for the main menu background.
|
||||||
|
@ -106,6 +106,7 @@ void set_default_settings(Settings *settings)
|
|||||||
settings->setDefault("client_unload_unused_data_timeout", "600");
|
settings->setDefault("client_unload_unused_data_timeout", "600");
|
||||||
settings->setDefault("client_mapblock_limit", "5000");
|
settings->setDefault("client_mapblock_limit", "5000");
|
||||||
settings->setDefault("enable_fog", "true");
|
settings->setDefault("enable_fog", "true");
|
||||||
|
settings->setDefault("fog_start", "0.4");
|
||||||
settings->setDefault("fov", "72");
|
settings->setDefault("fov", "72");
|
||||||
settings->setDefault("view_bobbing", "true");
|
settings->setDefault("view_bobbing", "true");
|
||||||
settings->setDefault("leaves_style", "fancy");
|
settings->setDefault("leaves_style", "fancy");
|
||||||
|
37
src/game.cpp
37
src/game.cpp
@ -1825,6 +1825,8 @@ private:
|
|||||||
f32 m_cache_mouse_sensitivity;
|
f32 m_cache_mouse_sensitivity;
|
||||||
f32 m_cache_joystick_frustum_sensitivity;
|
f32 m_cache_joystick_frustum_sensitivity;
|
||||||
f32 m_repeat_right_click_time;
|
f32 m_repeat_right_click_time;
|
||||||
|
f32 m_cache_cam_smoothing;
|
||||||
|
f32 m_cache_fog_start;
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
#ifdef __ANDROID__
|
||||||
bool m_cache_hold_aux1;
|
bool m_cache_hold_aux1;
|
||||||
@ -1876,6 +1878,12 @@ Game::Game() :
|
|||||||
&settingChangedCallback, this);
|
&settingChangedCallback, this);
|
||||||
g_settings->registerChangedCallback("free_move",
|
g_settings->registerChangedCallback("free_move",
|
||||||
&settingChangedCallback, this);
|
&settingChangedCallback, this);
|
||||||
|
g_settings->registerChangedCallback("cinematic",
|
||||||
|
&settingChangedCallback, this);
|
||||||
|
g_settings->registerChangedCallback("cinematic_camera_smoothing",
|
||||||
|
&settingChangedCallback, this);
|
||||||
|
g_settings->registerChangedCallback("camera_smoothing",
|
||||||
|
&settingChangedCallback, this);
|
||||||
|
|
||||||
readSettings();
|
readSettings();
|
||||||
|
|
||||||
@ -1929,6 +1937,12 @@ Game::~Game()
|
|||||||
&settingChangedCallback, this);
|
&settingChangedCallback, this);
|
||||||
g_settings->deregisterChangedCallback("free_move",
|
g_settings->deregisterChangedCallback("free_move",
|
||||||
&settingChangedCallback, this);
|
&settingChangedCallback, this);
|
||||||
|
g_settings->deregisterChangedCallback("cinematic",
|
||||||
|
&settingChangedCallback, this);
|
||||||
|
g_settings->deregisterChangedCallback("cinematic_camera_smoothing",
|
||||||
|
&settingChangedCallback, this);
|
||||||
|
g_settings->deregisterChangedCallback("camera_smoothing",
|
||||||
|
&settingChangedCallback, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Game::startup(bool *kill,
|
bool Game::startup(bool *kill,
|
||||||
@ -2034,16 +2048,10 @@ void Game::run()
|
|||||||
processUserInput(&flags, &runData, dtime);
|
processUserInput(&flags, &runData, dtime);
|
||||||
// Update camera before player movement to avoid camera lag of one frame
|
// Update camera before player movement to avoid camera lag of one frame
|
||||||
updateCameraDirection(&cam_view_target, &flags, dtime);
|
updateCameraDirection(&cam_view_target, &flags, dtime);
|
||||||
float cam_smoothing = 0;
|
|
||||||
if (g_settings->getBool("cinematic"))
|
|
||||||
cam_smoothing = 1 - g_settings->getFloat("cinematic_camera_smoothing");
|
|
||||||
else
|
|
||||||
cam_smoothing = 1 - g_settings->getFloat("camera_smoothing");
|
|
||||||
cam_smoothing = rangelim(cam_smoothing, 0.01f, 1.0f);
|
|
||||||
cam_view.camera_yaw += (cam_view_target.camera_yaw -
|
cam_view.camera_yaw += (cam_view_target.camera_yaw -
|
||||||
cam_view.camera_yaw) * cam_smoothing;
|
cam_view.camera_yaw) * m_cache_cam_smoothing;
|
||||||
cam_view.camera_pitch += (cam_view_target.camera_pitch -
|
cam_view.camera_pitch += (cam_view_target.camera_pitch -
|
||||||
cam_view.camera_pitch) * cam_smoothing;
|
cam_view.camera_pitch) * m_cache_cam_smoothing;
|
||||||
updatePlayerControl(cam_view);
|
updatePlayerControl(cam_view);
|
||||||
step(&dtime);
|
step(&dtime);
|
||||||
processClientEvents(&cam_view_target, &runData.damage_flash);
|
processClientEvents(&cam_view_target, &runData.damage_flash);
|
||||||
@ -4284,7 +4292,7 @@ void Game::updateFrame(ProfilerGraph *graph, RunStats *stats,
|
|||||||
driver->setFog(
|
driver->setFog(
|
||||||
sky->getBgColor(),
|
sky->getBgColor(),
|
||||||
video::EFT_FOG_LINEAR,
|
video::EFT_FOG_LINEAR,
|
||||||
runData->fog_range * 0.4,
|
runData->fog_range * m_cache_fog_start,
|
||||||
runData->fog_range * 1.0,
|
runData->fog_range * 1.0,
|
||||||
0.01,
|
0.01,
|
||||||
false, // pixel fog
|
false, // pixel fog
|
||||||
@ -4660,7 +4668,18 @@ void Game::readSettings()
|
|||||||
m_cache_enable_noclip = g_settings->getBool("noclip");
|
m_cache_enable_noclip = g_settings->getBool("noclip");
|
||||||
m_cache_enable_free_move = g_settings->getBool("free_move");
|
m_cache_enable_free_move = g_settings->getBool("free_move");
|
||||||
|
|
||||||
|
m_cache_fog_start = g_settings->getFloat("fog_start");
|
||||||
|
|
||||||
|
m_cache_cam_smoothing = 0;
|
||||||
|
if (g_settings->getBool("cinematic"))
|
||||||
|
m_cache_cam_smoothing = 1 - g_settings->getFloat("cinematic_camera_smoothing");
|
||||||
|
else
|
||||||
|
m_cache_cam_smoothing = 1 - g_settings->getFloat("camera_smoothing");
|
||||||
|
|
||||||
|
m_cache_fog_start = rangelim(m_cache_fog_start, 0.0f, 0.99f);
|
||||||
|
m_cache_cam_smoothing = rangelim(m_cache_cam_smoothing, 0.01f, 1.0f);
|
||||||
m_cache_mouse_sensitivity = rangelim(m_cache_mouse_sensitivity, 0.001, 100.0);
|
m_cache_mouse_sensitivity = rangelim(m_cache_mouse_sensitivity, 0.001, 100.0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
@ -751,6 +751,10 @@ ShaderInfo generate_shader(std::string name, u8 material_type, u8 drawtype,
|
|||||||
if (g_settings->getBool("tone_mapping"))
|
if (g_settings->getBool("tone_mapping"))
|
||||||
shaders_header += "#define ENABLE_TONE_MAPPING\n";
|
shaders_header += "#define ENABLE_TONE_MAPPING\n";
|
||||||
|
|
||||||
|
shaders_header += "#define FOG_START ";
|
||||||
|
shaders_header += ftos(rangelim(g_settings->getFloat("fog_start"), 0.0f, 0.99f));
|
||||||
|
shaders_header += "\n";
|
||||||
|
|
||||||
// Call addHighLevelShaderMaterial() or addShaderMaterial()
|
// Call addHighLevelShaderMaterial() or addShaderMaterial()
|
||||||
const c8* vertex_program_ptr = 0;
|
const c8* vertex_program_ptr = 0;
|
||||||
const c8* pixel_program_ptr = 0;
|
const c8* pixel_program_ptr = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user