53 Commits

Author SHA1 Message Date
David Williams
e433a697cb Removed out-of-date PagedVolume documentation and added a little bit in it's place. 2016-01-09 09:47:20 +00:00
David Williams
e89a55d154 Applied default Visual Studio formatting to most files. This is a quick fix for the tabs vs spaces issue that messes up the formatting in any editor (esp. Linux) which handles tabs/spaces differently to Visual Studio. Some parts of the formatting look a bit worse but overall it should be better (or at least more consistent).
I didn't apply the changes to a few macro-heavy files as Visual Studio removes all indentation from macros, whereas the indentation can be handy to see nesting.
2015-12-26 23:11:27 +00:00
David Williams
b3ca051878 Changed 'embedded' licenses from zlib to MIT. 2015-12-26 21:45:41 +00:00
David Williams
354b6aa9d0 When PolyVox files include other PolyVox files the 'PolyVox' part of the path is not needed. This is only needed when examples, tests, and external applications include PolyVox. 2015-12-20 20:56:37 +00:00
David Williams
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
David Williams
1d925a59a1 Fixed crash. 2015-04-16 16:47:12 +02:00
David Williams
9947425169 Fix for code which determines which old chunk to delete. 2015-04-15 16:58:24 +02:00
David Williams
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
David Williams
1e0e8a8c16 Fixed calculation of volume size in bytes. 2015-04-13 23:48:33 +02:00
David Williams
f7c1962773 Removed commented-out code. 2015-04-13 23:32:23 +02:00
David Williams
37c35a08db Added code to ensure the number of chunks doesn't go over our target limit. 2015-04-13 21:30:59 +02:00
David Williams
8757f1e53e Removed unneeded assert. 2015-04-13 21:17:19 +02:00
David Williams
64be18cd14 Tidied up loop for inserting chunk into array. 2015-04-12 20:55:49 +02:00
David Williams
af70096fcc Tidying and adding comments. 2015-04-12 16:46:43 +02:00
David Williams
99390580dd Replaced number with constant. 2015-04-12 10:35:12 +02:00
David Williams
c4cccf9043 Replaced double for loop with cleaner do-while loop. 2015-04-12 09:55:30 +02:00
David Williams
f35581506c Minor optimization - only creating vector if we are going to use it. 2015-04-12 09:42:15 +02:00
David Williams
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
David Williams
5847219331 Fixed bug with chunk timestamp not being updated. 2015-03-30 15:36:28 +02:00
David Williams
9256f3deb5 Fixed compile warning. 2015-03-27 21:23:31 +01:00
David Williams
3facd4df41 Removed commented out code. 2015-03-21 16:27:43 +01:00
David Williams
b027cf1a0c Moved common code into function. 2015-03-21 16:22:23 +01:00
David Williams
778238d11d Moved the test for whether we are accessing the same voxel as last time. 2015-03-21 14:57:48 +01:00
David Williams
d477bec540 Revert "Replaced Vector3D with integer as key to map."
This reverts commit e82d6beca1a5cf7e81c546e6dd0243f54ff5d3e6.
2015-03-21 14:41:15 +01:00
David Williams
672c375a7a Revert "Work on using a bitfield to set up chunk key."
This reverts commit 8bd8f8ba7a91de21fd56d4350f3bf8403a84c4b3.
2015-03-21 14:41:10 +01:00
David Williams
5fc0317260 Revert "Added typedef for chunk key type."
This reverts commit 6419c5827bc99d91dd5e96acd17bd507a30dc106.
2015-03-21 14:41:04 +01:00
David Williams
92eaaae765 Revert "Decided to always use a 64-bit chunk key, rather than trying to make it configurable."
This reverts commit 69f6f4ac3713e7a9eee804773a516cc5c3412183.
2015-03-21 14:40:57 +01:00
David Williams
ceeb8f70ce Revert "Going back to building key by shifting instead of using bitfield."
This reverts commit 0d638f98370907b5ffed6b3460e320f4f9b2cf52.
2015-03-21 14:40:49 +01:00
David Williams
0c619ebec7 Revert "Added typedef for ChunkKey."
This reverts commit 905ec27f47a3e2dc1cba3a3a384b2c7532dab03d.
2015-03-21 14:40:30 +01:00
David Williams
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 fd451be2dd7b65671274791105e76bd6a31a0f79.
2015-03-21 14:40:11 +01:00
David Williams
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
David Williams
905ec27f47 Added typedef for ChunkKey. 2015-03-21 08:12:02 +01:00
David Williams
0d638f9837 Going back to building key by shifting instead of using bitfield. 2015-03-21 08:05:58 +01:00
David Williams
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
David Williams
6419c5827b Added typedef for chunk key type. 2015-03-20 16:59:25 +01:00
David Williams
8bd8f8ba7a Work on using a bitfield to set up chunk key. 2015-03-20 15:48:46 +01:00
David Williams
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
David Williams
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
David Williams
99d0a226c8 Tidying up. 2015-03-08 23:48:55 +01:00
David Williams
72abcd8e9c Chunks are now stored with unique_ptr rather than shared_ptr. 2015-03-08 23:30:12 +01:00
David Williams
aaa6b1dc15 A PagedVolume must now always be provided with a Pager when it is constructed. 2015-03-07 17:01:07 +01:00
David Williams
5a5b2b3875 Spotted an optimization for computing the voxel position. 2015-03-06 23:03:38 +01:00
David Williams
2c0d9cb9e7 Moved contents of initialize() into constructor. 2015-03-05 23:51:16 +01:00
David Williams
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
David Williams
89550fcd44 Fixed warnings. 2015-03-05 00:04:22 +01:00
David Williams
61bffc9783 Removed some not useful functions. 2015-03-04 23:31:24 +01:00
David Williams
1213a4047a Fully stripped out references to wrap modes. 2015-03-04 23:13:37 +01:00
David Williams
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
David Williams
d3618ca688 Removed tracking of whether the PagedVolume::Sampler is currently valid. 2015-03-01 23:32:22 +01:00
David Williams
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