Commit Graph

612 Commits

Author SHA1 Message Date
Pavel Krajcevski
479ba8e76d Fix a bunch of MSVC compiler warnings and errors.
Most notably, we need to actually fix a bug in MSVC that doesn't know how to properly instantiate
enums in partial template specialization. There are more details outlined here:

http://stackoverflow.com/questions/15466594/why-does-msvc-fail-to-compile-this-template-function

The fix in this commit closes #10

Also in this commit is a hacky way to allow GL defines. Apparently "LoadImage" is defined as a
macro even with WIN32_LEAN_AND_MEAN. This means that we have to #undef the code that includes
it, meaning that we also need to make sure not to actually mix GLDefines.h with any file that needs
to use the functions from Windows.h
2014-03-12 02:43:09 -04:00
Pavel Krajcevski
0eae5548a3 Make unit tests a bit more deterministic 2014-03-12 02:42:45 -04:00
Pavel Krajcevski
c5aab908ef Relax the test parameters on eigenvalue calculation 2014-03-12 02:42:09 -04:00
Pavel Krajcevski
ce99d79bab Add some static casts 2014-03-12 02:41:23 -04:00
Pavel Krajcevski
ebfd8f8f81 Override LoadImage for ktx files 2014-03-11 18:27:37 -04:00
Pavel Krajcevski
41a7abcdbb Let the image loader return the actual image pointer instead of having the data be constructed 2014-03-11 18:04:26 -04:00
Pavel Krajcevski
625b202b46 Add travis-ci yml file 2014-03-11 17:27:52 -04:00
Pavel Krajcevski
8acd89cbc5 Add virtual destructor 2014-03-11 17:26:55 -04:00
Pavel Krajcevski
272e753006 Add OpenGL defines for ASTC 2014-03-11 17:26:32 -04:00
Pavel Krajcevski
dd41fc6ba1 Finish first pass of ASTC decompressor
Added color unquantization, the partition selection function, and the
actual lerping of colors once the texels have been decoded.
2014-03-11 16:52:41 -04:00
Pavel Krajcevski
cebce26be1 Change our pixel component type to be signed 2014-03-11 16:52:02 -04:00
Pavel Krajcevski
3dd1444ff6 Add clamping to our pixels 2014-03-11 16:48:25 -04:00
Pavel Krajcevski
86678c0cfe Add 4-value pixel constructor 2014-03-11 16:40:31 -04:00
Pavel Krajcevski
f0110360c4 Add texel unquantization 2014-03-10 18:56:39 -04:00
Pavel Krajcevski
4e45988caa Refactor to FasTC::Replicate where appropriate 2014-03-10 18:56:28 -04:00
Pavel Krajcevski
ed61bcfee4 Add generatl bit replication function 2014-03-10 18:30:27 -04:00
Pavel Krajcevski
0ca2917caa Fix some small compiler warnings. 2014-03-10 15:02:43 -04:00
Pavel Krajcevski
267a959f75 Add some extra PVRTC debugging 2014-03-10 15:02:28 -04:00
Pavel Krajcevski
1f5cb9294c Add ASTCEncoder tests
Start with small tests to make sure that integer sequence encoding is working the way
that it needs to. Ideally there will be many more tests here, but for now we are trying
to get ASTC decompression working and testing is not a priority.
2014-03-10 15:00:30 -04:00
Pavel Krajcevski
fb7d80b385 Break out the integer sequence encoding into its own module. 2014-03-10 14:59:45 -04:00
Pavel Krajcevski
56c199fc5d Add bit counter to utils 2014-03-10 14:58:36 -04:00
Pavel Krajcevski
5a68febdda More work on ASTC decode.
Fixed the notion that the CEM data was right after the first six bits
after the partition mode. It's actually right before the texel weight
data. Still not sure whether or not the texel weights are read in
the opposite order from the color data...

Also, added some preliminary integer sequence decoding. This will need
to be tested before we actually figure out if we did it correctly or not...
2014-03-07 19:32:15 -05:00
Pavel Krajcevski
94db169582 Add a utility Bits class to help work with bit ranges in integers. Ideally we should add a bunch of other classical bitwise operations here 2014-03-07 19:31:22 -05:00
Pavel Krajcevski
8b9849182a Add additional error check. 2014-02-28 19:04:25 -05:00
Pavel Krajcevski
be24a67bfc Add color endpoint mode decoding 2014-02-27 17:02:38 -05:00
Pavel Krajcevski
90448df333 Add initial block mode decoding 2014-02-27 16:19:34 -05:00
Pavel Krajcevski
9eb6eb8692 Merge branch 'ModularizeBPTC' into DecompressASTC 2014-02-27 14:21:15 -05:00
Pavel Krajcevski
c6948e8421 Merge branch 'master' into ModularizeBPTC 2014-02-27 14:20:50 -05:00
Pavel Krajcevski
b75a66fdbf Initial ASTC decoder commit 2014-02-27 12:10:51 -05:00
Pavel Krajcevski
a7a389b41c Remove this folder since I don't think that this tool is gonna happen 2014-02-27 11:55:00 -05:00
Pavel Krajcevski
ba0b5df59e Finish matrix unit tests 2014-02-21 17:45:07 -05:00
Pavel Krajcevski
8b9e8cd9b5 Add matrix multiplication infrastructure 2014-02-21 16:18:00 -05:00
Pavel Krajcevski
05eeb09f36 Constify 2014-02-21 16:11:49 -05:00
Pavel Krajcevski
0c4b226c78 Add matrix transpose 2014-02-20 16:15:13 -05:00
Pavel Krajcevski
98bc157e00 Add matrix multiplication test 2014-02-20 16:11:25 -05:00
Pavel Krajcevski
d4ec0a3b3b Stub out remaining tests 2014-02-20 15:48:08 -05:00
Pavel Krajcevski
4ca6141be6 Add simple 4x4 matrix file 2014-02-20 15:47:48 -05:00
Pavel Krajcevski
2af172e5e5 Add power method iteration for square matrices 2014-02-20 15:47:14 -05:00
Pavel Krajcevski
7ed5c13405 Allow additional indexable types
Instead of using operator() to index into the second operand of the
VectorAddition function, use operator[]. This way we can add to pointers
and std::vector types as well.
2014-02-20 15:36:59 -05:00
Pavel Krajcevski
1b7691993d Add initial matrix tests 2014-02-20 15:34:12 -05:00
Pavel Krajcevski
62cce58c2f Fix some of the vector multiplication and divide routines.
In general, we want the scalar division of vectors and matrices to
have the matrix come first and the scalar come second. It doesn't make
sense to divide a scalar by a vector or to divide a matrix by a vector,
so these should now produce errors at compile time.

Also, make sure to add additional types that can be multiplied together
using the * operator. If we multiply two vectors together, that's a dot
product. The size restrictions should be enforced at compile time by the
template parameters for VectorBase<T, N>::Dot

In this way, we can support vector/matrix multiplication by retaining the
* operator as well.
2014-02-20 14:49:35 -05:00
Pavel Krajcevski
2d7ee21fb7 Let the compiler choose what precision we want to do the vector-scalar multiplication/division in. 2014-02-19 19:36:28 -05:00
Pavel Krajcevski
366a7cdfe4 Add some YCoCg tests 2014-02-19 19:35:29 -05:00
Pavel Krajcevski
9dc23db287 Add YCoCg pixel type 2014-02-18 13:25:29 -05:00
Pavel Krajcevski
4fc75f22dc Fix vector operators to avoid needing overloads 2014-02-17 13:02:43 -05:00
Pavel Krajcevski
0875ee0ddb Constify 2014-02-16 18:29:08 -05:00
Pavel Krajcevski
2213e1b7d6 Add tests for special vector cases 2014-02-16 18:28:37 -05:00
Pavel Krajcevski
45b739a44a Add some tests for VectorBase 2014-02-16 17:17:25 -05:00
Pavel Krajcevski
92f5893650 Add first vector tests 2014-02-16 13:20:43 -05:00
Pavel Krajcevski
9f0603aaa8 Add scaling tests to make sure that bit depths are preserved. 2014-02-16 12:33:05 -05:00