Disclaimer:
Please, pay attention this is comparison of sizes and quality and nothing more. I don’t take into account all aspects.
BasisU and WebP are totally different. Both have it’s pros and cons. I did these tests just because some html5 games have higher priority in disk space (download size) but not memory or decoding speed. It is important for some but not for all the games.
I use the newest version (latest master 427ebe62ebd6c7fed40994b1f963e66aa3993fce) basisu at the moment.
So, it seems like UASTC has too good quality for the goal we want to achieve, but ETC1s has too low quality for our goal =)
I tested everything for texture without premultiplied alpha (not sure what the reason of quality issue in case we use it, it’s separate thing for the other investigation)
It seems like for the best quality of ETC1s we should use:
./basisu -comp_level 6 test.png -q 255 -linear -max_endpoints 16128 -max_selectors 16128
Also, I played a bit with RDO for UASTC, but even with extreme values result was far away from the goal.
So, I kept only one with the smallest size + norm quality:
./basisu -uastc -uastc_rdo_m test.png -uastc_rdo_l 5 -uastc_rdo_d 8192 -uastc_level 0
I tested two WebP versions. The newest WebP(1.2) and WebP we previously used in Defold (0.5).
WEBP_LOSSY_NORMAL:
cwebp -q 75 test.png -o test.webp
WEBP_LOSSY_HIGH:
cwebp -q 90 test.png -o test.webp
I didn’t measure decompression and compression speed and the other metrics, but I noticed that webp 1.2 decoder twice as bigger that webp 0.5 decoder JFYI.
Arhive:
webp vs basis.zip (2.5 MB)