Commit Graph

1000 Commits

Author SHA1 Message Date
cc1e1e477c Extractor can now use a Controller to define voxel type and threshold
In future, it will also be used to extract pre-computed gradients and
intersection points.
2014-01-11 23:57:34 +00:00
4e13f0afa5 Checking for zero exactly gives better solutions to QEF 2014-01-11 22:23:55 +00:00
81ce31432c Rearrange some things to keep definitions in sensible places 2014-01-11 22:23:14 +00:00
6294013709 Use the C++ versions of these functions 2014-01-11 20:29:54 +00:00
2cfaf241c8 Explicitly cast these to floats 2014-01-11 20:28:53 +00:00
63f0def22f Require that the voxel is a signed type
This means that a static_cast<float> is no longer needed to calculate the
gradient. A static_assert provides user feedback.

The next step here would be to use a MarchingCubesController-type solution
to define the density value from a voxel. This way, also the gradient can
be stored.
2014-01-11 19:59:19 +00:00
af308cb187 Change logic for calculating whether there was an intersection 2014-01-11 19:55:56 +00:00
1d7d66a1de Add some (commented-out) logging for timings 2014-01-10 19:14:01 +00:00
c92b933254 A few consistency tweaks 2014-01-10 19:13:21 +00:00
ac3fb84055 Calculate gradients first to reduce number of calculations
Gives about a 2× speedup.
2014-01-10 19:12:45 +00:00
20b8b8fc3d Add const. Gives a few percent performance improvement. 2014-01-09 23:00:25 +00:00
601b2a6d21 Improved performance of Dual Contouring
Performance is up from 10 times slower than MC to only 3 times.
About a third of that time is spent calculating gradients.
2014-01-09 20:07:15 +00:00
7877600538 Add first draft of Dual Contouring surface extractor 2014-01-07 17:18:01 +00:00
3db5e1b2f6 Added microsecond precision to timers. 2013-11-14 15:35:41 +01:00
5294efc473 Clear the 'last accessed block' flag before flushing the volume. 2013-11-12 16:57:11 +01:00
85d8bdb30c Rearranged some code to try and improve the robustness of block paging and compression. 2013-11-12 16:47:57 +01:00
1c5a3f7ef5 Reverted attempts to suppress GCC warnings and just removed the offending asserts instead.
Revert "Added asserts to catch invalid material/density values."

This reverts commit 8943822046.
2013-10-25 12:44:40 +02:00
afddb59d69 Reverted attempt to avoid warnings. Just suppressed them instead.
Revert "Attempting to work around a GCC warning."

This reverts commit 3fe92086f1.
2013-10-24 14:37:18 +02:00
3fe92086f1 Attempting to work around a GCC warning. 2013-10-23 16:33:42 +02:00
8943822046 Added asserts to catch invalid material/density values. 2013-10-20 09:12:37 +02:00
29bded222f Removed unnecessary error handling. 2013-10-04 13:56:31 +02:00
21001d6862 Removed wrapper for class which was removed. 2013-10-04 13:35:31 +02:00
1531e1cd00 Switched some code to size_t for compatibility with Miniz. 2013-10-04 13:30:30 +02:00
4d683627da Added some comments. 2013-10-03 16:56:14 +02:00
d17c1b404b Bit more tidying of Miniz code. 2013-10-03 16:45:46 +02:00
ef615cc838 Added missing file. 2013-10-03 16:26:43 +02:00
498f21f63f Replaced arrays with std::vector. 2013-10-02 16:48:30 +02:00
a4e09c2481 Small fixes (including crash fix). 2013-10-02 15:36:21 +02:00
29ca1e763f Renamed functions to avoid confusion. 2013-10-02 15:09:55 +02:00
513c3a90b0 Rearranging some miniz code to simplify it a bit. 2013-10-01 16:33:39 +02:00
319a0ce352 Removed old compression classes. 2013-10-01 15:58:32 +02:00
f63bb510b3 Merged some code from MinizCompressor into MinizBlockCompressor. We don't really need two separate classes for this stuff. 2013-10-01 15:51:23 +02:00
4ee2a61a15 Added a siply wrapper .h/cpp pair to abstract away the fact that miniz in provided as a single .c file which we include directly, and to avoid linker problems. 2013-10-01 15:33:40 +02:00
f81b42747b Implement Timer for C++11
This uses std::chrono::system_clock
2013-08-22 20:40:45 +01:00
55dc066a3f Fixed bug with MinizBlockCompressor always saving out 10,000 bytes of data. 2013-08-19 16:27:52 +02:00
07f1ca42d2 Uncompressed blocks are now flushed before compressed blocks. 2013-08-12 21:04:55 +02:00
6fb30a40f5 Bringing across Region enhancements from Cubiquity branch. 2013-08-09 20:39:17 +02:00
b9546ddcfa Extra checks in during marching cubes to try and catch corrupt data. 2013-08-09 14:09:59 +02:00
7c74e1faff Move Timer.h to correct location
Also add a missing semi-colon.
2013-08-08 10:42:57 +01:00
2f99964606 Tidying timer. 2013-08-07 23:24:20 +02:00
9ad4c3fcf7 Initial checkin of Timer class. 2013-08-07 23:07:26 +02:00
a308102585 VS2012 compile warning fix. 2013-08-07 14:53:08 +02:00
acf5bef5e7 Merge branch 'feature/large-volume-tidying' into develop 2013-08-01 16:34:38 +02:00
e485265dd8 Fixes to allow the SWIG/Python bindings to build again. 2013-08-01 16:08:44 +02:00
dcf86a905c Split Block, CompressedBlock and UncompressedBlock into separate files. It's tidier, and maybe better for SWIG? 2013-08-01 15:32:12 +02:00
6f17e0faa6 The 'Block' class is no longer considered just to be an implementation details of LargeVolume. Users may need to interact with them directly of they implement their own paging or compression systems. 2013-08-01 15:19:10 +02:00
9503d975c1 GCC compile fixes. 2013-07-31 16:37:39 +02:00
4478e365c9 Removed RLECompressor as the code is now in RLEBlockCompressor.
Things are starting to get back under control. All tests pass, and all examples except PagingExample work.
2013-07-30 17:01:27 +02:00
fa8813ba86 FilePager now cleans up after itself. 2013-07-30 16:34:40 +02:00
d1138dcdb1 Some new block compression code as I rework the previous code... 2013-07-30 16:01:03 +02:00