[Feature Request] Better support of the integrated DDS plugin, also add import/export for BC6 and BC7.
For All operating systems but preferably Windows.
GIMP's DDS plugin is rather weak, it uses an old ugly algorithm for DXT1 and DXT5 compression which causes a lot of jaggies to appear. It also has low support for BC4 and BC5, meanwhile, no support at all for BC6 or BC7.
I propose the plugin to be updated, if not, completely replaced/overhauled through the use of a tool made by GPUOpen-Tools, named Compressonator, the link is here: https://github.com/GPUOpen-Tools/compressonator
For further details, Compressonator has a much better compression algorithm for DXT1, in which if you set the "Quality" option to 1.0 in it, it will be exactly like DXT5 but at much lower space, this is good for much older games. It also has support for Channel Weighting, this is for those that want to manually change how the compression works, extremely useful for games that use unorthodox normal map formats (such as all the STALKER series games, Spellforce 3...), presets could even be made in GIMP but it's not necessary. It also has support for "DXT1 Alpha", this is more for "special cases" though, if you'd like to add it, go ahead, but it's completely optional. "Refine Steps" is yet another special case, but more useful when doing Channel Weighting, so it's an optional addition as well.
For comparisons, I have saved a 1024x1024 weapon texture in GIMP and did the same (by using the uncompressed source texture and saving as .tga) with Compressonator, default settings for DXT1 except for Quality which is set to 1.0 and these are the results:
Original uncompressed texture GIMP Compressonator And this is both textures merged into "Difference"
To further my details, please observe the bottom-right, that is the gun's grip. In GIMP, the contrast and gamma got compromised and you'll notice the "green slime" that DXT1 is fond of appear more often. Compressonator has it made a bit "flat", but the contrast and gamma is still kept fairly well. The presence of that "green slime" is also rather minimal. Also, to the left of the grip, you will see some small parts of the weapon, you will notice that Compressonator, while still having issues, kept the "integrity" of the pixels better than GIMP.
The same goes for DXT5. I use DXT5 for normal maps, in my case, for STALKER normal maps which are unorthodox (Red Channel is the Specular/Roughness Channel, Green is the Z channel [which is actually unused], Blue is Y- [due to DirectX] and Alpha is the Red Channel itself, X.) and sadly GIMP's compression with DXT5 is rather poor. For comparisons: Original uncompressed texture GIMP Compressonator
The best comparison I can give is by showing you the same image, one from GIMP and another from Compressonator, through only the Blue Channel. GIMP Compressonator
As you can notice, Compressonator is MUCH better when compressing with DXT5 for Normal Maps, this is due to the fact that, in comparison to GIMP, there are no visible vibrant bright "lines", as seen to the left, as seen on the sights...It also keeps the lines much more uniform, this can be seen at the bottom.
For this reason, I propose Compressonator's DXT and BC compression algorithms to be used instead of the current ones, as well as add some further options that I mentioned (DXT1 and DXT5 have the same options, by the way). Do note, as mentioned before, Compressonator separates DXT and BC and I have noticed that this does make a difference, because saving as BC1 in Compressonator will make STALKER games crash, so this might need to be taken note if implementing Compressonator's algorithms to GIMP.
And also, GIMP needs to be able to import and export BC6 and BC7, Compressonator handles that perfectly fine and also has a Quality option, which can be added if needed but I have noticed little difference between 1.0 and its default 0.05.
As short notice, this is Compressonator's License: https://github.com/GPUOpen-Tools/compressonator/tree/master/license
And the source codes, specifically for dxt, bc6 and bc7 should be here: https://github.com/GPUOpen-Tools/compressonator/tree/master/cmp_compressonatorlib
I have no knowledge of coding, but I believe that, if anything, at the very least BC6 and BC7 can be implemented, for import and export both.
I hope this helps and can be implemented, either officially into GIMP or as a plugin, whichever way works. If you need further information, I'll try my best to help. If you need my help testing, I will be glad to test it for you.