summaryrefslogtreecommitdiff
path: root/src/utility.cpp
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-11-02 18:13:56 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-11-02 18:13:56 +0200
commit1726b82a16a9778c2c9d34f3676ebed7500cc45a (patch)
tree9a4e758565d5992a959ee7c44aa61502ed0c34a7 /src/utility.cpp
parent03db16d55b87908f2a08f9431162316d02e66233 (diff)
downloadminetest-1726b82a16a9778c2c9d34f3676ebed7500cc45a.tar.gz
minetest-1726b82a16a9778c2c9d34f3676ebed7500cc45a.tar.bz2
minetest-1726b82a16a9778c2c9d34f3676ebed7500cc45a.zip
occlusion culling fix, a little reshaping of map rendering for more useful profiler output and dynamic profiler text size
Diffstat (limited to 'src/utility.cpp')
-rw-r--r--src/utility.cpp28
1 files changed, 14 insertions, 14 deletions
diff --git a/src/utility.cpp b/src/utility.cpp
index 0139281fa..7ffbe7160 100644
--- a/src/utility.cpp
+++ b/src/utility.cpp
@@ -236,21 +236,21 @@ bool isBlockInSight(v3s16 blockpos_b, v3f camera_pos, v3f camera_dir,
// If block is (nearly) touching the camera, don't
// bother validating further (that is, render it anyway)
- if(d > block_max_radius)
- {
- // Cosine of the angle between the camera direction
- // and the block direction (camera_dir is an unit vector)
- f32 cosangle = dforward / d;
-
- // Compensate for the size of the block
- // (as the block has to be shown even if it's a bit off FOV)
- // This is an estimate.
- cosangle += block_max_radius / dforward;
+ if(d < block_max_radius)
+ return true;
+
+ // Cosine of the angle between the camera direction
+ // and the block direction (camera_dir is an unit vector)
+ f32 cosangle = dforward / d;
+
+ // Compensate for the size of the block
+ // (as the block has to be shown even if it's a bit off FOV)
+ // This is an estimate, plus an arbitary factor
+ cosangle += block_max_radius / d * 0.5;
- // If block is not in the field of view, skip it
- if(cosangle < cos(camera_fov / 2))
- return false;
- }
+ // If block is not in the field of view, skip it
+ if(cosangle < cos(camera_fov / 2))
+ return false;
return true;
}