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
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
David Williams
7e03c3e05b
Compile fixes and tweaks for tests.
2015-02-28 13:43:17 +01:00
Matt Williams
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
Matt Williams
41d5ea6178
Move FindQt5Test logic inside tests directory
2015-02-28 10:40:05 +00:00
Matt Williams
d9dae773dc
Simplify the BUILD_EXAMPLES logic
2015-02-28 10:24:32 +00:00
Matt Williams
32b07659a8
Move all the examples' CMake logic into the examples directory
2015-02-28 10:19:17 +00: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
Matt Williams
cb1cd58288
Remove all mention of LIBRARY_TYPE as PolyVox is now header-only
2015-02-28 09:56:12 +00:00
David Williams
f262c0e8f5
Revert "Removing tests which depend on wrap modes, in preparation for removing the wrap modes themselves."
...
This reverts commit 917d3b8c953c7fa6ceb3ab232dab54b78d57751c.
2015-02-28 09:59:28 +01:00
David Williams
416ae8eb7f
Revert "Removed 'AllInternal' part of function name as it is now redundant."
...
This reverts commit 42e8b2cf4478b40663437df724a2cd292255671f.
2015-02-28 09:59:11 +01: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
42e8b2cf44
Removed 'AllInternal' part of function name as it is now redundant.
2015-02-26 22:15:19 +01:00
David Williams
917d3b8c95
Removing tests which depend on wrap modes, in preparation for removing the wrap modes themselves.
2015-02-26 17:07:00 +01:00
David Williams
7ac652e92b
More compile fixes for GCC. Because our openGLWidget is now templatized we need to explicitly use 'this->' to access base members (and the gl...() functions are provided by the base class in Qt). See http://stackoverflow.com/a/15505043
2015-02-25 16:11:22 +01:00
David Williams
f7af804ccf
Compile fix for GCC.
2015-02-25 15:57:59 +01:00
David Williams
1f3dc558da
Added missing header.
2015-02-24 23:46:35 +01:00
David Williams
2ec29e33b7
Tidying up OpenGLWidget.
2015-02-24 23:44:04 +01:00
David Williams
fbb7ff4728
Merge branch 'feature/example-refactor' into develop
2015-02-24 22:23:57 +01:00
David Williams
e985dce075
Templatized OpenGLWidget so users can specify the version of OpenGL to support.
2015-02-24 22:17:46 +01:00
David Williams
d3b71a92b9
Tidying up code.
2015-02-24 16:53:34 +01:00
David Williams
9547824f14
Renamed matrices. I quite like names such as 'modelToWorldMatrix' and 'cameraToClipMatrix' because they were very explicit about what the transform was doing. However OpenGL uses common terms such as 'model matrix' and 'projection matrix', so other people wlil be able to follow the code more easily if we stick to these conventions.
2015-02-24 16:08:55 +01:00
David Williams
7262ca313e
More work splitting example framework into two pieces.
2015-02-20 16:56:03 +01:00
David Williams
838407ba4f
Started splitting example framework into to two classes. One will be general purpose (for use in Cubiquity, etc), and the other will have PolyVox specific stuff.
2015-02-20 16:20:09 +01:00
David Williams
9c93c5fc36
Switched examples to use FPS-style first person perspective camera.
2015-02-20 15:28:54 +01:00
David Williams
565aa21799
Refactoring example code.
2015-02-20 11:23:17 +01:00
David Williams
3f849e19a4
Started refactoring examples and got DecodeOnGPUExample working.
2015-02-15 12:03:31 +01:00
David Williams
92daf9a0c0
Fixed CMake script for DecodeOnGPU example, though it's currently disabled due to compile errors.
2015-02-14 09:30:59 +01:00
David Williams
28c516b5ad
Merge branch 'feature/opengl' into develop
2015-02-10 23:44:14 +01:00