217 Commits

Author SHA1 Message Date
David Williams
d99ed5e624 Implemented morton encoding using standard bit-twidling approach. 2015-03-28 09:46:05 +01:00
David Williams
9256f3deb5 Fixed compile warning. 2015-03-27 21:23:31 +01:00
David Williams
322bedc009 Improved test for PagedVolume::Chunk performance. 2015-03-26 23:45:01 +01:00
David Williams
3facd4df41 Removed commented out code. 2015-03-21 16:27:43 +01:00
David Williams
d6c708f869 Merge branch 'develop' into feature/optimize-paged-volume 2015-03-21 16:24:46 +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
cd48c6f611 Made method const. 2015-03-19 23:08:35 +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
d305038c27 Replaced loop with fill. 2015-03-11 23:47:32 +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
Matt Williams
639eb6620f Add 'this' pointer disambiguation.
I guess this didn't fail on MSVC due to the different name lookup rules
the use.

Fixes issue 56.
2015-03-08 12:51:00 +00:00
David Williams
c98ad8c948 Merge branch 'feature/remove-wrap-modes' into develop 2015-03-07 21:19:21 +01:00
David Williams
43c203a2c9 Removed declaration of function for which we already removed the definition. 2015-03-07 17:42:31 +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
396d1cfc59 Ambient occlusion test now uses RawVolume, as it need a fixed size volume to create a temporary array. 2015-03-01 09:51:45 +01:00
David Williams
e7f41b7e0f More fixing/tidying of test, related to removing volume size limit. 2015-03-01 08:14:30 +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
Matt Williams
969310f327 Make sure we're notifiying if the docs are available 2015-02-28 10:17:56 +00:00
Matt Williams
65f966555d Move Doxygen stuff into include directory where it is actually used 2015-02-28 10:06:56 +00:00
David Williams
1853a0fc4e Revert "More work on removing wrap modes."
This reverts commit 6817899e6a9f18d708597f6cdabfffed7d4f671f.
2015-02-28 09:58:41 +01:00
David Williams
6817899e6a More work on removing wrap modes. 2015-02-27 15:12:11 +01:00
David Williams
3ace735619 Work on removing wrap modes. 2015-02-27 13:48:31 +01:00
David Williams
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
David Williams
c62bde0066 Work on getting the OpenGL/Qt5 support working with new header-only library. 2015-02-09 22:11:06 +01:00
David Williams
72be03262a Fixed install to work on Windows. 2015-02-07 23:21:25 +01:00
David Williams
7946e55357 Fixed install on Linux. 2015-02-07 23:11:56 +01:00