From: lhofhansl Date: Mon, 31 Oct 2016 03:35:55 +0000 (-0700) Subject: Optionally disable optimization that causes underwater and cave rendering glitches... X-Git-Tag: 0.4.15~145 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=e1842ed370f7cab23e460979a08886b5df38e1b3;p=oweals%2Fminetest.git Optionally disable optimization that causes underwater and cave rendering glitches. (#4686) --- diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 492d7c79d..e48fc9bc5 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -849,6 +849,13 @@ liquid_queue_purge_time (Liquid queue purge time) int 0 # Liquid update interval in seconds. liquid_update (Liquid update tick) float 1.0 +# At this distance the server will aggressively optimize which blocks are sent to clients. +# Small values potentially improve performance a lot, at the expense of visible rendering glitches. +# (some blocks will not be rendered under water and in caves, as well as sometimes on land) +# Setting this to a value greater than max_block_send_distance disables this optimization. +# Stated in mapblocks (16 nodes) +block_send_optimize_distance (block send optimize distance) int 4 2 + [*Mapgen] # Name of map generator to be used when creating a new world. diff --git a/src/clientiface.cpp b/src/clientiface.cpp index d2e3a6da0..7dce77cd7 100644 --- a/src/clientiface.cpp +++ b/src/clientiface.cpp @@ -174,6 +174,8 @@ void RemoteClient::GetNextBlocks ( s32 new_nearest_unsent_d = -1; const s16 full_d_max = g_settings->getS16("max_block_send_distance"); + const s16 d_opt = g_settings->getS16("block_send_optimize_distance"); + s16 d_max = full_d_max; s16 d_max_gen = g_settings->getS16("max_block_generate_distance"); @@ -300,7 +302,7 @@ void RemoteClient::GetNextBlocks ( Block is near ground level if night-time mesh differs from day-time mesh. */ - if(d >= 4) + if(d >= d_opt) { if(block->getDayNightDiff() == false) continue; diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index a64840a8f..2cb57532d 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -279,6 +279,7 @@ void set_default_settings(Settings *settings) settings->setDefault("max_simultaneous_block_sends_server_total", "40"); settings->setDefault("max_block_send_distance", "9"); settings->setDefault("max_block_generate_distance", "7"); + settings->setDefault("block_send_optimize_distance", "4"); settings->setDefault("max_clearobjects_extra_loaded_blocks", "4096"); settings->setDefault("time_send_interval", "5"); settings->setDefault("time_speed", "72");