David Williams
135aa96bdf
Further fixes for move...() functions.
2015-04-01 23:34:57 +02:00
David Williams
056cae39b5
Fixed sampler move...() functions to work with Morton ordering.
2015-04-01 22:57:22 +02:00
David Williams
b518978cd6
Enlarged lookup tables to 256 elements.
2015-04-01 22:34:42 +02:00
David Williams
65f39e7b57
Made the values signed ints, as otherwise the casting was doing something strange on 64-bit systems.
2015-04-01 16:29:19 +02:00
David Williams
5d220c5d57
Added extra lookup tables to avoid the need to multiply y/z deltas by 2/4 each time.
2015-03-31 23:58:01 +02:00
David Williams
60612c5583
Implemented use of delta for the rest of the peek functions.
2015-03-31 19:55:22 +02:00
David Williams
afd0650230
Implemented peeking in positive x and negative x directions using Matt's delta lookup table.
2015-03-31 16:33:56 +02:00
David Williams
120b8e84cc
Added position in chunk and pointer to current chunk data to sampler.
2015-03-30 23:33:51 +02:00
David Williams
d34c1d227c
Merge branch 'develop' into feature/morton-encoding
2015-03-30 15:38:34 +02:00
David Williams
5847219331
Fixed bug with chunk timestamp not being updated.
2015-03-30 15:36:28 +02:00
David Williams
b415e5c5f3
calculateAmbientOcclusion() now works with both RawVolume and PagedVolume.
2015-03-30 11:44:25 +02:00
David Williams
d000616d3e
Revert "Ambient occlusion test now uses RawVolume, as it need a fixed size volume to create a temporary array."
...
This reverts commit 396d1cfc599e6837cf38bc1a95e680e9721ea844.
2015-03-30 11:24:48 +02:00
David Williams
413bb95b1a
Passing parameter as const ref.
2015-03-30 11:01:08 +02:00
David Williams
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
David Williams
d3b2dab1ac
Switched to using lookup tables for Morton encoding.
2015-03-29 00:17:27 +01:00
David Williams
d99ed5e624
Implemented morton encoding using standard bit-twidling approach.
2015-03-28 09:46:05 +01:00
David Williams
1c17a7147b
Made test do 10 times more iterations.
2015-03-28 08:42:06 +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
1d24b189ca
Refactoed test code.
2015-03-25 17:12:11 +01:00
David Williams
931c6cd3ec
Added tests for chunk performance.
2015-03-25 16:40:05 +01:00
David Williams
6516c00e62
Merge branch 'feature/optimize-paged-volume' into develop
2015-03-21 16:30:07 +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
0e995b5140
Fixed some compiler warnings.
2015-03-21 07:40:32 +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