From 2b21cac1d80454bd23c5f60c4570b30edba62584 Mon Sep 17 00:00:00 2001
From: Lars Hofhansl <larsh@apache.org>
Date: Fri, 4 Nov 2016 00:13:17 -0700
Subject: [PATCH] Occlusion culling: Fix 'end offset' distance, half this for
 centre point

'endoff', the maximum diagonal of a mapblock, was incorrectly calculated.
Half this value for the centre point of the mapblock.
---
 src/clientmap.cpp | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/clientmap.cpp b/src/clientmap.cpp
index 60170ab70..1d856520b 100644
--- a/src/clientmap.cpp
+++ b/src/clientmap.cpp
@@ -293,13 +293,14 @@ void ClientMap::updateDrawList(video::IVideoDriver* driver)
 			float step = BS * 1;
 			float stepfac = 1.1;
 			float startoff = BS * 1;
-			float endoff = -BS*MAP_BLOCKSIZE * 1.42 * 1.42;
+			// - Length of the diagonal of a mapblock.
+			float endoff = -BS * MAP_BLOCKSIZE * 1.732050807569;
 			v3s16 spn = cam_pos_nodes + v3s16(0, 0, 0);
 			s16 bs2 = MAP_BLOCKSIZE / 2 + 1;
 			u32 needed_count = 1;
 			if (occlusion_culling_enabled &&
 					isOccluded(this, spn, cpn + v3s16(0, 0, 0),
-						step, stepfac, startoff, endoff, needed_count, nodemgr) &&
+						step, stepfac, startoff, endoff / 2, needed_count, nodemgr) &&
 					isOccluded(this, spn, cpn + v3s16(bs2,bs2,bs2),
 						step, stepfac, startoff, endoff, needed_count, nodemgr) &&
 					isOccluded(this, spn, cpn + v3s16(bs2,bs2,-bs2),
-- 
GitLab