Зачем вообще там нужен реимпорт текстур?
Использование любого сжатого формата должно производиться именно из оригинальной исходной текстуры. Исходная текстура — это не одно и то же, что разжатая. Проблема в том, что все без исключения форматы с компрессией являются сжатием с потерями (losy compression), и на самом деле так или иначе «уродуют» текстуру в зависимости от выбранного алгоритма сжатия. Таким образом, из любого сжатого формата восстановить исходную текстуру уже не получится: разжатая текстура будет иметь ровно те же артефакты, что и сжатая. Именно поэтому категорически нельзя делать что-то вроде «ETC2 → ASTC → DXT», поскольку на выходе будет нечто, вобравшее в себя артефакты компрессий всех трех форматов. Всегда нужно работать только с исходной текстурой и никак иначе.
Основной контент в играх — это почти всегда текстурыВот и Юбисофт так думает, меняя почти только их в каждом АК и ФарКрае
Комментарий недоступен
Комментарий недоступен
Спасибо за статью.
Похоже ушла эпоха Gles 2.0 раз такие фичи в продакшене.
Давно не проверял, оказалось 8.5 % устройств всего осталось https://developer.android.com/about/dashboards
Да, с ним уже действительно мало кто работает. На OpenGL ES 2.0 мы только начинали разрабатывать War Robots больше семи лет назад — сейчас на смену ему пришли уже OpenGL ES 3.0 и Vulkan.
Стоил ли того выигрыш по производительности, из-за снижении кол-ва texture bindings? Возможно вы проводили тесты.
Если не брать во внимание плюсы использования с мипмапами, тайлингом.
К сожалению, такими сравнительными цифрами мы не обладаем, поскольку такого a/b-теста не проводили. Вместе с этим в реальных сценариях мы наблюдали более высокую утилизацию текстурного кэша — с 50% выросло до 87%. Можно предположить, что при частой смене текстур (texture binding) кэш почти наверняка инвалидируется. Минимальное количество перепривязок , как происходит в случае с текстурными массивами, позитивно сказывается на переиспользовании данных в кэше.