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]