я свое мнение не навязываю, но поделюсь выводами, которые я сделал изучая компрессию и допустимые варианты для мобил
TLDR:
На оперативу
для мобил такой водопад ASTC(6x6 или 4x4 если уж совсем надо идеально)
——если не поддерживается——>
pvrtc4bbp для ios или etc2 для андроид
——если не поддерживается——>
RGBA, а что поделать
На размер на диске (скачки)
webplossy поверх rgba но можно и для pvrtc или etc1 (про etc2 не уверен) применить
——
самым лучшим вариантом является astс - это просто боженька компрессий. Мэтры которые даже снят компрессию пророчат ему то, что он станет убийцей всех форматов если придет на компы (с эпл m1 это уже начинается и надеюсь остальные подхватят, но посмотрим).
У него соотношение качество/размер очень классное + есть возможность играться с качеством меняя размер блока.
https://android-developers.googleblog.com/2015/01/efficient-game-textures-with-hardware.html6x6 подойдет почти всем при этом в памяти занимает меньше даже чем pvrtc4bbp.
Я приводил пример где
astc6x6 - 1.8Mb
pvrtc 4bbp - 2Mb
etc2 - 4Mb
Для приверед есть astc 4x4 - там к качеству не придраться совсем.
но из-за того, что покрытие не 100% приходится рассматривать pvrtc(4bbp) и etc2 (etc1 даже не рассматриваем т.к. без слез на качество не взглянуть, может где-то и подойдет но не для 2d игр)
pvrtc нужен чтобы иметь сжатые текстуры на старых ios девайсах. т.к. аппаратная поддержка astc появилась только с A7 (iphone6) а iphone5s хоть уже и на метале, но все щее не поддерживает astc
etc2 для андроидов, что не поддерживают astc, статистика тут
https://developer.android.com/guide/app-bundle/asset-delivery/texture-compressionetc2 поддерживается всеми устройствами с opengl3, поэтому если у вас есть такое ограничение - то поздравляю, etc2 ваш вариант. А вот если вы поддерживаете es2 то придется думать еще и про раритеты всякие.
В Defold мы взяли basis чтобы решить вопрос компрессий как с точки зрения энкодера (кросплатформенный pvrtc энкодер это тот еще головняк) так и с вопроссом транскодинга в рантайме.
Сейчас у нас вот такие водопады для текстур:
https://github.com/defold/defold/blob/dev/engine/graphics/src/graphics.cpp#L248-L290Правки еще вносятся и форматы уточняются т.к. тема обширная, но пока все выглядит так. Сам подход гарантирует ,что будет отожрато минимум оперативки.
Но! на многих WEB проектах (дефолд кросплатформенный, поэтому все делается с учетом всех платформ),мы столкнулись с тем, что людям плевать на оперативку, а самым важным является размер билда на диске (сколько качать пользователю). И, как оказалось, наилучший вариант по размеру/качеству выдает webp lossy.
Его дефолд выпили в пользу базиса. Но, возможно, для таких вот проектов он будет впилен обратно отдельным модулем.