Commit Graph

112 Commits

Author SHA1 Message Date
Pavel Krajcevski
4afacf384d Add preliminary forward DCT 2015-02-11 23:39:32 -08:00
Pavel Krajcevski
325a2ac96d Add utility function for splitting images into images of pixel channels. 2015-01-26 17:27:35 -05:00
Pavel Krajcevski
fb7805d875 Bring CMake integration up to date.
- Add a way to generate a FasTCConfig.cmake file so that you can
use cmake without having to install it.
- Add install paths for users that want to install it.
- Hide all public headers in FasTC/ qualified include path, this way we
know what files are public directly from the source. Also, it lets us
define build-tree and install-tree include directories a lot easier.
2014-11-18 17:07:26 -05:00
Pavel Krajcevski
4cacc3c5be Take some breaks 2014-11-05 18:04:57 -05:00
Pavel Krajcevski
edfc6bde78 Be a little more defensive about calculating SSIM 2014-08-26 13:34:35 -04:00
Pavel Krajcevski
c40829a3b7 Fix some compiler warnings 2014-04-15 14:18:12 -04:00
Pavel Krajcevski
5725220ba6 Merge branch 'master' into ModularizeBPTC 2014-03-23 17:41:46 -04:00
Pavel Krajcevski
fe69dc9fb5 Fix small bug with large consequences 2014-03-21 20:26:45 -04:00
Pavel Krajcevski
dcc12eb28a Intel compiler hates floats 2014-03-21 20:25:59 -04:00
Pavel Krajcevski
2b17cf6f97 Add scalar-matrix multiplication 2014-03-21 01:17:19 -04:00
Pavel Krajcevski
63b8744917 Pull out multiplication routines so that they can be specialized if need be 2014-03-21 01:16:45 -04:00
Pavel Krajcevski
31c799a02a Add equality operators 2014-03-21 01:15:35 -04:00
Pavel Krajcevski
037cb0951b Built-in rand was causing severe perf issues. 2014-03-21 01:13:57 -04:00
Pavel Krajcevski
675ebc28a1 Add matrix equality operator 2014-03-20 18:33:24 -04:00
Pavel Krajcevski
ff210ed741 Fix serious bug in Image.cpp 2014-03-18 19:37:26 -04:00
Pavel Krajcevski
b1ef548a7c Fix test iteration constant 2014-03-13 21:45:03 -04:00
Pavel Krajcevski
0afa26ac74 Add proper return value 2014-03-12 19:38:17 -04:00
Pavel Krajcevski
b5f3cde554 Add ASTC compression formats 2014-03-12 14:02:34 -04:00
Pavel Krajcevski
7ee0df9a5a Add 2bpp PVRTC compression format 2014-03-12 14:01:31 -04:00
Pavel Krajcevski
0a4726bfe2 Merge branch 'master' into DecompressASTC 2014-03-12 13:29:17 -04:00
Pavel Krajcevski
cc566471e9 Disambiguate the sqrts we're using 2014-03-12 12:12:20 -04:00
Pavel Krajcevski
6fdc3814b1 Seriously, I hate compiler warnings 2014-03-12 03:51:16 -04:00
Pavel Krajcevski
02e1749051 More compiler warnings 2014-03-12 03:46:23 -04:00
Pavel Krajcevski
caf4864761 More compiler warnings. 2014-03-12 03:40:45 -04:00
Pavel Krajcevski
c5d0a803e9 One more small piece of determinism 2014-03-12 03:31:53 -04:00
Pavel Krajcevski
7ecb217d20 More determinism 2014-03-12 03:29:05 -04:00
Pavel Krajcevski
88821fbbb0 Prevent the compiler from deciding whether or not the float is big enough to overflow or not... 2014-03-12 03:02:17 -04:00
Pavel Krajcevski
e96cecc13a Add some typename specifiers 2014-03-12 03:01:28 -04:00
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
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
ed61bcfee4 Add generatl bit replication function 2014-03-10 18:30:27 -04: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
c6948e8421 Merge branch 'master' into ModularizeBPTC 2014-02-27 14:20:50 -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