Commit Graph

1965 Commits

Author SHA1 Message Date
7f96005985 Commented out optimized path in sampler as it doesn't work now that we are using Morton ordering for the data in chunks. However, we can probably reinstate such a fast path if we give some thought as to how it should be done. 2015-03-29 09:58:28 +02:00
d3b2dab1ac Switched to using lookup tables for Morton encoding. 2015-03-29 00:17:27 +01:00
d99ed5e624 Implemented morton encoding using standard bit-twidling approach. 2015-03-28 09:46:05 +01:00
1c17a7147b Made test do 10 times more iterations. 2015-03-28 08:42:06 +01:00
9256f3deb5 Fixed compile warning. 2015-03-27 21:23:31 +01:00
322bedc009 Improved test for PagedVolume::Chunk performance. 2015-03-26 23:45:01 +01:00
1d24b189ca Refactoed test code. 2015-03-25 17:12:11 +01:00
931c6cd3ec Added tests for chunk performance. 2015-03-25 16:40:05 +01:00
6516c00e62 Merge branch 'feature/optimize-paged-volume' into develop 2015-03-21 16:30:07 +01:00
3facd4df41 Removed commented out code. 2015-03-21 16:27:43 +01:00
d6c708f869 Merge branch 'develop' into feature/optimize-paged-volume 2015-03-21 16:24:46 +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
0e995b5140 Fixed some compiler warnings. 2015-03-21 07:40:32 +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
cd48c6f611 Made method const. 2015-03-19 23:08:35 +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
d305038c27 Replaced loop with fill. 2015-03-11 23:47:32 +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
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
c98ad8c948 Merge branch 'feature/remove-wrap-modes' into develop 2015-03-07 21:19:21 +01:00
43c203a2c9 Removed declaration of function for which we already removed the definition. 2015-03-07 17:42:31 +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
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
e7f41b7e0f More fixing/tidying of test, related to removing volume size limit. 2015-03-01 08:14:30 +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
7e03c3e05b Compile fixes and tweaks for tests. 2015-02-28 13:43:17 +01:00
09c15173f9 Simplify -std=c++0x flag logic
This could be improved in CMake 3.1 by using CXX_STANDARD and
CXX_STANDARD_REQUIRED (see http://stackoverflow.com/a/20165220/96704)
2015-02-28 10:55:01 +00:00