From: Lars Hofhansl Date: Fri, 4 Nov 2016 07:13:17 +0000 (-0700) Subject: Occlusion culling: Fix 'end offset' distance, half this for centre point X-Git-Tag: 0.4.15~129 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=2b21cac1d80454bd23c5f60c4570b30edba62584;p=oweals%2Fminetest.git 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. --- 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),