Commit Graph

49 Commits

Author SHA1 Message Date
f16a247934 Changed implementation of logging macros.
We have observed some strange performance-related behavior as described here: https://stackoverflow.com/questions/29652787/adding-stringstream-cout-hurts-performance-even-when-the-code-is-never-called

This set of changes addresses this problem. The old macros would simply expand the logging code in place, whereas we now have logging functions and the macros call these. Overall I believe it is tidier.
2015-05-07 22:58:00 +02:00
1d925a59a1 Fixed crash. 2015-04-16 16:47:12 +02:00
9947425169 Fix for code which determines which old chunk to delete. 2015-04-15 16:58:24 +02:00
12fdeb8e52 Removed old chunk map.
Removed flush(Region) function as it's a bit trickier to implement with the new hash table, and it's not clear that we need it.
2015-04-13 23:51:18 +02:00
1e0e8a8c16 Fixed calculation of volume size in bytes. 2015-04-13 23:48:33 +02:00
f7c1962773 Removed commented-out code. 2015-04-13 23:32:23 +02:00
37c35a08db Added code to ensure the number of chunks doesn't go over our target limit. 2015-04-13 21:30:59 +02:00
8757f1e53e Removed unneeded assert. 2015-04-13 21:17:19 +02:00
64be18cd14 Tidied up loop for inserting chunk into array. 2015-04-12 20:55:49 +02:00
af70096fcc Tidying and adding comments. 2015-04-12 16:46:43 +02:00
99390580dd Replaced number with constant. 2015-04-12 10:35:12 +02:00
c4cccf9043 Replaced double for loop with cleaner do-while loop. 2015-04-12 09:55:30 +02:00
f35581506c Minor optimization - only creating vector if we are going to use it. 2015-04-12 09:42:15 +02:00
a2fe1944af Initial work on replacing std::unordered_map with a specialized hash table for looking up chunks based on their 3D position. 2015-04-09 23:44:25 +02:00
5847219331 Fixed bug with chunk timestamp not being updated. 2015-03-30 15:36:28 +02:00
9256f3deb5 Fixed compile warning. 2015-03-27 21:23:31 +01:00
3facd4df41 Removed commented out code. 2015-03-21 16:27:43 +01:00
b027cf1a0c Moved common code into function. 2015-03-21 16:22:23 +01:00
778238d11d Moved the test for whether we are accessing the same voxel as last time. 2015-03-21 14:57:48 +01:00
d477bec540 Revert "Replaced Vector3D with integer as key to map."
This reverts commit e82d6beca1.
2015-03-21 14:41:15 +01:00
672c375a7a Revert "Work on using a bitfield to set up chunk key."
This reverts commit 8bd8f8ba7a.
2015-03-21 14:41:10 +01:00
5fc0317260 Revert "Added typedef for chunk key type."
This reverts commit 6419c5827b.
2015-03-21 14:41:04 +01:00
92eaaae765 Revert "Decided to always use a 64-bit chunk key, rather than trying to make it configurable."
This reverts commit 69f6f4ac37.
2015-03-21 14:40:57 +01:00
ceeb8f70ce Revert "Going back to building key by shifting instead of using bitfield."
This reverts commit 0d638f9837.
2015-03-21 14:40:49 +01:00
0c619ebec7 Revert "Added typedef for ChunkKey."
This reverts commit 905ec27f47.
2015-03-21 14:40:30 +01:00
f574563672 Revert "New, safer method of packing which makes careful use of casting to avoid problems with e.g. signed integer sign extension."
This reverts commit fd451be2dd.
2015-03-21 14:40:11 +01:00
fd451be2dd New, safer method of packing which makes careful use of casting to avoid problems with e.g. signed integer sign extension. 2015-03-21 08:48:45 +01:00
905ec27f47 Added typedef for ChunkKey. 2015-03-21 08:12:02 +01:00
0d638f9837 Going back to building key by shifting instead of using bitfield. 2015-03-21 08:05:58 +01:00
69f6f4ac37 Decided to always use a 64-bit chunk key, rather than trying to make it configurable. 2015-03-20 23:09:38 +01:00
6419c5827b Added typedef for chunk key type. 2015-03-20 16:59:25 +01:00
8bd8f8ba7a Work on using a bitfield to set up chunk key. 2015-03-20 15:48:46 +01:00
e82d6beca1 Replaced Vector3D with integer as key to map.
Chunks of voxel data are stored in a map, and it is quite common to need to search the map for a particular chunk. The key type used to be a Vector3D (i.e. the position of the chunk in 3D space) which makes conceptual sense but is relatively slow. Using a Vector3D as a key seems to have overhead, probably in terms of copying and performing comparisons. It seems to be significantly faster to use an integer as a key, so we now take the 3D position and pack it into a single integer by bitshifting.

Naturally this reduces the range of positions we can store - a 32-bit int can only encode 3 x 10-bit values, which means our volume can only be 1024 chunks in each direction (with a chunk often being 32x32x32 voxels). This should still be large enough for most uses, but an upcoming change will allow 64-bit keys to be used (at least on 64-bit builds) which then allows 21 bits of precision  per component. This is so large that it's almost infinite for any practical purposes.
2015-03-15 09:32:42 +01:00
741234e4a5 Small speed improvement by storing variables separately (rather than in Vector3D) to void construction/comparison overhead. 2015-03-09 23:52:56 +01:00
99d0a226c8 Tidying up. 2015-03-08 23:48:55 +01:00
72abcd8e9c Chunks are now stored with unique_ptr rather than shared_ptr. 2015-03-08 23:30:12 +01:00
aaa6b1dc15 A PagedVolume must now always be provided with a Pager when it is constructed. 2015-03-07 17:01:07 +01:00
5a5b2b3875 Spotted an optimization for computing the voxel position. 2015-03-06 23:03:38 +01:00
2c0d9cb9e7 Moved contents of initialize() into constructor. 2015-03-05 23:51:16 +01:00
c804190d84 Removed the ability to set the target memory usage after construction, and this is now just done through the constructor. I don't think the functionality was useful, and this simplifies more logic. 2015-03-05 23:42:50 +01:00
89550fcd44 Fixed warnings. 2015-03-05 00:04:22 +01:00
61bffc9783 Removed some not useful functions. 2015-03-04 23:31:24 +01:00
1213a4047a Fully stripped out references to wrap modes. 2015-03-04 23:13:37 +01:00
bd6efe8c3c Stuff related to valid regions is being moved from BaseVolum to RawVolume, as PagedVolume is now infinite. 2015-03-04 22:42:14 +01:00
d3618ca688 Removed tracking of whether the PagedVolume::Sampler is currently valid. 2015-03-01 23:32:22 +01:00
bfc7dfdc1b Removed the ability to specify a region in the PagedVolume's constructor, and updated the tests and examples where required. 2015-02-28 23:31:23 +01:00
3ace735619 Work on removing wrap modes. 2015-02-27 13:48:31 +01:00
64d010527b Removed old getVoxelAt()/setVoxelAt() functions. they've been flagged as deprecated for a while now, and are replaced by just getVoxel()/setVoxel(). 2015-02-27 11:07:15 +01:00
049a77cd0c Moved all headers from 'PolyVoxCore' to 'PolyVox', as we no longer have the core/util distinction. 2015-02-07 17:26:36 +01:00