From: Rob Blanckaert Date: Sat, 7 Oct 2017 13:11:48 +0000 (-0400) Subject: Add setting for near plane distance. (#6395) X-Git-Tag: 5.0.0~787 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=3c93a56e16f03893f97b7d28b0a8a0e302cb55ca;p=oweals%2Fminetest.git Add setting for near plane distance. (#6395) * Allow setting the near plane * - Add near_plane limit of 0.5 to prevent x-ray. - Add more details to near_plane setting. --- diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt index 51d34e4b6..11651c9b2 100644 --- a/builtin/settingtypes.txt +++ b/builtin/settingtypes.txt @@ -532,6 +532,12 @@ pause_fps_max (FPS in pause menu) int 20 # View distance in nodes. viewing_range (Viewing range) int 100 20 4000 +# Camera near plane distance in nodes, between 0 and 0.5 +# 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 plane) float 0.1 0 0.5 + # Width component of the initial window size. screen_w (Screen width) int 1024 diff --git a/src/camera.cpp b/src/camera.cpp index 29ff27f8f..e0028f480 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -549,7 +549,9 @@ 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"); m_draw_control.wanted_range = viewing_range; + m_cameranode->setNearValue(rangelim(near_plane, 0.0f, 0.5f) * BS); if (m_draw_control.range_all) { m_cameranode->setFarValue(100000.0); return; diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index 3c826dd2e..58ea0c77a 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -149,6 +149,7 @@ void set_default_settings(Settings *settings) settings->setDefault("fps_max", "60"); settings->setDefault("pause_fps_max", "20"); settings->setDefault("viewing_range", "100"); + settings->setDefault("near_plane", "0.1"); settings->setDefault("screen_w", "1024"); settings->setDefault("screen_h", "600"); settings->setDefault("autosave_screensize", "true");