Ignore near_plane setting on non-Android platforms (#8749)
authorANAND <ClobberXD@gmail.com>
Sat, 28 Mar 2020 20:53:55 +0000 (02:23 +0530)
committerGitHub <noreply@github.com>
Sat, 28 Mar 2020 20:53:55 +0000 (21:53 +0100)
Camera's near-plane will be hard-coded to 0.1 on all non-Android platforms. The upper-bound of this setting has been reduced to 0.25, as 0.5 is just way too high.

builtin/settingtypes.txt
minetest.conf.example
src/client/camera.cpp
src/defaultsettings.cpp

index 2e84138a46b9357488166056001792627fa9b30c..1f2889b45e88d1a0c9bfd47a5f3de1f621ca6990 100644 (file)
@@ -623,11 +623,11 @@ pause_on_lost_focus (Pause on lost window focus) bool false
 #    View distance in nodes.
 viewing_range (Viewing range) int 100 20 4000
 
-#   Camera 'near clipping plane' distance in nodes, between 0 and 0.5.
-#   Most users will not need to change this.
+#   Camera 'near clipping plane' distance in nodes, between 0 and 0.25
+#   Only works on GLES platforms. Most users will not need to change this.
 #   Increasing can reduce artifacting on weaker GPUs.
 #   0.1 = Default, 0.25 = Good value for weaker tablets.
-near_plane (Near clipping plane) float 0.1 0 0.5
+near_plane (Near plane) float 0.1 0 0.25
 
 #    Width component of the initial window size.
 screen_w (Screen width) int 1024 1
index 4b5562649fae81fc86d0f765adb95710dabad413..5bc41a9a41e5fc11290c05846136df77f51e54c5 100644 (file)
 #    type: int min: 20 max: 4000
 # viewing_range = 100
 
-#    Camera 'near clipping plane' distance in nodes, between 0 and 0.5.
-#    Most users will not need to change this.
+#    Camera 'near clipping plane' distance in nodes, between 0 and 0.25
+#    Only works on GLES platforms. Most users will not need to change this.
 #    Increasing can reduce artifacting on weaker GPUs.
 #    0.1 = Default, 0.25 = Good value for weaker tablets.
-#    type: float min: 0 max: 0.5
+#    type: float min: 0 max: 0.25
 # near_plane = 0.1
 
 #    Width component of the initial window size.
 # ask_reconnect_on_crash = false
 
 #    From how far clients know about objects, stated in mapblocks (16 nodes).
-#    
+#
 #    Setting this larger than active_block_range will also cause the server
 #    to maintain active objects up to this distance in the direction the
 #    player is looking. (This can avoid mobs suddenly disappearing from view)
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Second of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise defining giant caverns.
 #    octaves     = 5,
 #    persistence = 0.63,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise defining terrain.
 #    octaves     = 2,
 #    persistence = 0.8,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 ## Mapgen V6
 #    octaves     = 5,
 #    persistence = 0.63,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise defining structure of river canyon walls.
 #    octaves     = 4,
 #    persistence = 0.75,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise defining giant caverns.
 #    octaves     = 5,
 #    persistence = 0.63,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    First of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Second of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise that determines number of dungeons per mapchunk.
 #    octaves     = 2,
 #    persistence = 0.8,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 ## Mapgen Carpathian
 #    octaves     = 5,
 #    persistence = 0.55,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    First of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Second of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise defining giant caverns.
 #    octaves     = 5,
 #    persistence = 0.63,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise that determines number of dungeons per mapchunk.
 #    octaves     = 2,
 #    persistence = 0.8,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 ## Mapgen Flat
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Second of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise that determines number of dungeons per mapchunk.
 #    octaves     = 2,
 #    persistence = 0.8,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 ## Mapgen Fractal
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Second of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    3D noise that determines number of dungeons per mapchunk.
 #    octaves     = 2,
 #    persistence = 0.8,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 ## Mapgen Valleys
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Second of two 3D noises that together define tunnels.
 #    octaves     = 3,
 #    persistence = 0.5,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    The depth of dirt or other biome filler node.
 #    octaves     = 6,
 #    persistence = 0.63,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Defines large-scale river channel structure.
 #    octaves     = 6,
 #    persistence = 0.8,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 #    Amplifies the valleys.
 #    octaves     = 2,
 #    persistence = 0.8,
 #    lacunarity  = 2.0,
-#    flags       = 
+#    flags       =
 # }
 
 ## Advanced
 #    so see a full list at https://content.minetest.net/help/content_flags/
 #    type: string
 # contentdb_flag_blacklist = nonfree, desktop_default
-
index 7062e45314d63fd5c0967cbdc5cbfd8d1fc4595b..871ea709d066b86674adf108e9632a06ba544ee6 100644 (file)
@@ -20,6 +20,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "camera.h"
 #include "debug.h"
 #include "client.h"
+#include "config.h"
 #include "map.h"
 #include "clientmap.h"     // MapDrawControl
 #include "player.h"
@@ -569,10 +570,16 @@ void Camera::update(LocalPlayer* player, f32 frametime, f32 busytime, f32 tool_r
 void Camera::updateViewingRange()
 {
        f32 viewing_range = g_settings->getFloat("viewing_range");
-       f32 near_plane = g_settings->getFloat("near_plane");
+
+       // Ignore near_plane setting on all other platforms to prevent abuse
+#if ENABLE_GLES
+       m_cameranode->setNearValue(rangelim(
+               g_settings->getFloat("near_plane"), 0.0f, 0.25f) * BS);
+#else
+       m_cameranode->setNearValue(0.1f * BS);
+#endif
 
        m_draw_control.wanted_range = std::fmin(adjustDist(viewing_range, getFovMax()), 4000);
-       m_cameranode->setNearValue(rangelim(near_plane, 0.0f, 0.5f) * BS);
        if (m_draw_control.range_all) {
                m_cameranode->setFarValue(100000.0);
                return;
@@ -600,7 +607,7 @@ void Camera::wield(const ItemStack &item)
 
 void Camera::drawWieldedTool(irr::core::matrix4* translation)
 {
-       // Clear Z buffer so that the wielded tool stay in front of world geometry
+       // Clear Z buffer so that the wielded tool stays in front of world geometry
        m_wieldmgr->getVideoDriver()->clearZBuffer();
 
        // Draw the wielded node (in a separate scene manager)
index b6e385a90cecfed673afba324dc88bc6e5cc9059..472522bf4246383fbcc359dc1e484d00634dfdc1 100644 (file)
@@ -165,7 +165,9 @@ void set_default_settings(Settings *settings)
        settings->setDefault("fps_max", "60");
        settings->setDefault("pause_fps_max", "20");
        settings->setDefault("viewing_range", "100");
+#if ENABLE_GLES
        settings->setDefault("near_plane", "0.1");
+#endif
        settings->setDefault("screen_w", "1024");
        settings->setDefault("screen_h", "600");
        settings->setDefault("autosave_screensize", "true");