Commit Graph

406 Commits

Author SHA1 Message Date
Pavel Krajcevski
a80944901e Refactor CompressionJob struct.
In order to better facilitate the change from block stream order to non-block stream order,
a lot of changes were introduced to the way that we feed texture data to the compressors. This
data is embodied in the CompressionJob struct. We have made it so that the compression job
points to both the in and out pointers for our compressed and uncompressed data. Furthermore,
we have made sure that the struct also contains the format that its compressing for, so that if
any threading programs would like to chop up a compression job into smaller chunks based on the
format, it doesn't need to know the format explicitly, it just needs to know certain properties
about the format.

Moreover, the user can now define the start and end pixels from which we would like to compress
to. We can compress subsets of data by changing the in and out pointers and the width and height
values. The compressors will read data linearly until they reach the out pixels based on the width
of the given pixel.
2013-11-08 16:31:19 -05:00
Pavel Krajcevski
f70b26a47f Change interface of compression/decompression jobs. 2013-11-06 18:55:53 -05:00
Pavel Krajcevski
8e76d149ba Remove a bunch of code that assumes that we get our pixel data in block stream order... 2013-11-06 18:23:19 -05:00
Pavel Krajcevski
f67bcc400b Add ETC1 to unix cl tool 2013-10-24 10:27:37 -04:00
Pavel Krajcevski
bae71bbe4f Add Rich Geldreich's ETC1 compressor. 2013-10-21 17:23:33 -04:00
Pavel Krajcevski
692cfbcf77 Some compiler SNAFUs on windows. 2013-10-21 15:49:42 -04:00
Pavel Krajcevski
53403fd1a9 Merge branch 'CompressPVRTC' of git.cs.unc.edu:pavel/FasTC into CompressPVRTC 2013-10-21 14:27:01 -04:00
Pavel Krajcevski
5fb39cf5c5 Add LUTs for areas of constant intensity. 2013-10-21 14:26:21 -04:00
Pavel Krajcevski
3bb68cd8ad Debug refactoring. 2013-10-18 04:13:12 -04:00
Pavel Krajcevski
22246810d6 Report entropy when compressing a texture. 2013-10-18 04:12:49 -04:00
Pavel Krajcevski
f597ec2f77 Add entropy calculation to images. 2013-10-18 04:12:32 -04:00
Pavel Krajcevski
54f5030aeb Add some minor code changes. 2013-10-16 19:35:34 -04:00
Pavel Krajcevski
674c18b9d9 Add DXT encoder from J.M.P. Van Waveren 2013-10-16 16:40:38 -04:00
Pavel Krajcevski
4f2db726b7 Get rid of unnecessary include 2013-10-16 10:40:56 -04:00
Pavel Krajcevski
838d1f7b6e Some small refactoring. 2013-10-15 13:56:40 -04:00
Pavel Krajcevski
bcf7c5c389 Some more compiler error and warning fixes. 2013-10-15 10:32:38 -04:00
Pavel Krajcevski
89110be602 Get rid of a bunch of MSVC compiler warnings. 2013-10-15 00:31:33 -04:00
Pavel Krajcevski
a9d8f4ca6e Fix some win32 bugs. 2013-10-14 23:25:02 -04:00
Pavel Krajcevski
7ec457faa9 Remove some dead code 2013-10-14 21:16:32 -04:00
Pavel Krajcevski
48d0cae9f0 Some bug fixes and optimizations. 2013-10-14 20:59:46 -04:00
Pavel Krajcevski
c8101b46f7 Make sure not to break compilation if we don't have any atomics. 2013-10-14 20:58:11 -04:00
Pavel Krajcevski
0ecd678a58 Support loading paletted PNG images. 2013-10-14 20:56:55 -04:00
Pavel Krajcevski
d0260d3755 Don't memset if we don't need to. 2013-10-14 17:49:45 -04:00
Pavel Krajcevski
0b85431526 Get rid of unused variable 2013-10-14 17:48:00 -04:00
Pavel Krajcevski
4f44826056 Since all of our texture dimensions are powers of two, we can optimize out the modulo in favor of a mask. 2013-10-14 17:45:26 -04:00
Pavel Krajcevski
87f1e06cb5 Fix a couple of bugs with both block ordering and indexing 2013-10-14 17:45:17 -04:00
Pavel Krajcevski
0188006ce3 Assert that our width and height are powers of two. 2013-10-14 17:45:06 -04:00
Pavel Krajcevski
345292e36a Grab compressor from experimental branch 2013-10-14 17:43:29 -04:00
Pavel Krajcevski
f1b564fdb2 Only report MSSIM 2013-10-12 16:37:48 -04:00
Pavel Krajcevski
996c81ef01 Specialize the FilterValid routine to not consider the pixels as pixels but rather as values. This seems somewhat inelegant but it's fine in terms of a quick fix. 2013-10-12 16:32:09 -04:00
Pavel Krajcevski
5af29c87d0 Fix bug with kernel generation. 2013-10-11 21:38:49 -04:00
Pavel Krajcevski
68f2f4a8b3 If the intensity is greater than one, then we're treating it as a float value, so when packing it into a pixel, just pack the value instead of scaling it to 255... 2013-10-11 21:38:28 -04:00
Pavel Krajcevski
d3fd98c8fa Fix Intensity calculation for pixel. 2013-10-11 21:37:06 -04:00
Pavel Krajcevski
e21ffecfa3 Small tool to compare two images with all of the metrics that we have encoded. 2013-10-11 20:53:44 -04:00
Pavel Krajcevski
e2be925265 Fix bug where we were writing ARGB instead of RGBA, again a victim of stupid block stream ordering. 2013-10-11 20:53:22 -04:00
Pavel Krajcevski
a2bf21e515 Require pthreads lib on some platforms. 2013-10-11 19:42:00 -04:00
Pavel Krajcevski
86bb0f6d0e Add SSIM report to command line tools... 2013-10-11 13:09:33 -04:00
Pavel Krajcevski
855683983c SSIM measurement is usually the smallest SSIm index, so report that instead of MSSIM, but if the user wants SSIM we can do that, too. 2013-10-11 13:06:29 -04:00
Pavel Krajcevski
2d8c291107 Fix some small bugs with SSIM. 2013-10-11 13:05:59 -04:00
Pavel Krajcevski
8d37d6eee5 Add MSSIM metric for images based on matlab implementation. 2013-10-11 12:12:32 -04:00
Pavel Krajcevski
42c6f85642 Add some convenience Image functions. 2013-10-11 12:12:08 -04:00
Pavel Krajcevski
dd1c3351ea Fix small bug in Gaussian kernel generation. 2013-10-11 12:11:32 -04:00
Pavel Krajcevski
bf5429cd0c Add Gaussian kernel generating function. 2013-10-10 20:06:12 -04:00
Pavel Krajcevski
654ee23446 Force PSNR comparison between images to use the same pixeltype 2013-10-10 20:06:02 -04:00
Pavel Krajcevski
72697f650c Add filtering operation. 2013-10-10 19:36:19 -04:00
Pavel Krajcevski
076ca07bcf Fix color into rgba packing. 2013-10-10 19:36:10 -04:00
Pavel Krajcevski
b07fe9b670 Make IPixels single vectors in order to allow us to use their operators and other convenience functions. 2013-10-10 14:36:45 -04:00
Pavel Krajcevski
127fd7b365 Add Image template instantiation for IPixel 2013-10-10 11:35:28 -04:00
Pavel Krajcevski
ad5f012a4c Add the ability to treat intensity pixels as floats. 2013-10-10 11:35:01 -04:00
Pavel Krajcevski
51cec12938 Add intensity pixels 2013-10-10 11:27:54 -04:00