Hi everyone, this is the first version of JSquish (~1.82MB).
JSquish is a Java port of the DXT compression library Squish. See this article for details. I will release the full source code after I fix a minor implementation issue.
The above archive contains the library JAR, which is also executable. It’s a tiny LWJGL application that can be used to compare the different DXT compression methods. There are four methods that can be switched (press ‘C’):
- Uncompressed
The original texture - Compressed - Driver
The texture is compressed by the OpenGL driver (using the EXT_texture_compression_s3tc formats) - Compressed - Range Fit
The texture is compressed using the Range Fit method. This is a very fast method, with comparable results to the driver one. - Compressed - Cluster Fit
The texture is compressed using the Cluster Fit method. This method was the real motivation for writing a Java port of the Squish library. It’s an embarrassingly slow method (only useful for offline compression), but gives amazing results compared to the driver implementation.
I urge you to try your own textures (press ‘O’ to load a new image) and see the quality difference of the Cluster Fit method. Try relatively small images first, to get a feeling of how slow it is. ;D
SCREENSHOTS (click for hi-res)
[tr][td]Uncompressed[/td][td]Compressed - Cluster Fit[/td][/tr]
[tr]
[td]
http://www.zdimensions.gr/spasi/public/061026_JSquish/uncompressed_sm.jpg
[/td]
[td]
http://www.zdimensions.gr/spasi/public/061026_JSquish/compressed_cluster_sm.jpg
[/td]
[/tr]
[tr][td]Compressed - Driver[/td][td][center]Compressed - Range Fit[/td][/tr]
[tr]
[td]
http://www.zdimensions.gr/spasi/public/061026_JSquish/compressed_driver_sm.jpg
[/td]
[td]
http://www.zdimensions.gr/spasi/public/061026_JSquish/compressed_range_sm.jpg
[/td]
[/tr]
I made the exact same thing some time ago. Time to do some performance comparisons 

I’m kind of stumped as to what could be causing this, especially since my profiler is telling me the exact opposite. The search continues…