Basis Universal: Полное руководство по универсальному сжатию текстур
Basis Universal — это революционная система сжатия текстур, которая решает одну из самых больших проблем при разработке кроссплатформенной графики: управление различными форматами сжатия текстур на разных платформах и устройствах. Basis Universal, разработанный Binomial LLC и в настоящее время поддерживаемый как проект с открытым исходным кодом, предоставляет единый формат файлов сжатых текстур, который можно во время выполнения перекодировать в любой собственный формат сжатия графического процессора.
Что такое базис универсальный?
Basis Universal — это «суперсжатая» система сжатия текстур графического процессора, которая создает сильно сжатые промежуточные файлы текстур. Эти файлы можно быстро перекодировать во время выполнения в любой формат со сжатием графическим процессором, который поддерживает целевая платформа, включая ETC1, ETC2, ASTC, BC1-7 и PVRTC.
Ключевым нововведением Basis Universal является возможность хранить данные текстур в независимом от платформы формате, а затем перекодировать их в оптимальный собственный формат для целевого устройства. Это означает, что разработчики могут отправить один файл текстуры, который будет работать везде: от мобильных телефонов до настольных компьютеров и игровых консолей.
Basis Universal поддерживает два основных режима сжатия: ETC1S (для максимального сжатия) и UASTC (для высочайшего качества). Оба режима обеспечивают превосходную степень сжатия, сохраняя при этом качество изображения, подходящее для современных графических приложений.
Основные характеристики Basis Universal
Универсальное транскодирование
Один сжатый файл можно перекодировать в любой собственный формат графического процессора (ETC1/2, ASTC, BC1-7, PVRTC) во время выполнения.
Высокая степень сжатия
Режим ETC1S обеспечивает исключительную степень сжатия (до 10:1 или выше) с хорошим качеством изображения.
Режим УАСТК
Сжатие UASTC (Universal ASTC) обеспечивает качество, конкурирующее с форматами BC7 и ASTC.
Быстрое транскодирование
Транскодирование во время выполнения происходит чрезвычайно быстро (обычно миллисекунды на текстуру) с минимальными затратами памяти.
Базовые универсальные режимы сжатия
Basis Universal предлагает два различных режима сжатия, каждый из которых оптимизирован для разных случаев использования:
Режим ETC1S
Обеспечивает очень высокую степень сжатия, обычно от 6:1 до 10:1, с хорошим визуальным качеством. Идеально подходит для большинства диффузных текстур, элементов пользовательского интерфейса и контента, где размер файла важнее идеальной визуальной точности.
Подходит для: мобильных приложений, веб-контента, диффузных текстур, элементов пользовательского интерфейса.
Режим УАСТК
Обеспечивает превосходное качество изображения, сравнимое или превосходящее качество BC7 и ASTC, со степенью сжатия от 3:1 до 4:1. Идеально подходит для текстур с высокой детализацией, карт нормалей и контента, где качество изображения имеет первостепенное значение.
Подходит для: нормальных карт, детальных текстур, ресурсов героев, приложений для ПК/консолей.
Базовый универсальный рабочий процесс
Типичный рабочий процесс Basis Universal включает три основных этапа:
1. Сжатие исходного кода
Сжимайте исходные текстуры (PNG, TGA и т. д.) в файлы .basis, используя режим ETC1S или UASTC. Обычно это делается в процессе создания актива.
2. Транскодирование во время выполнения
При запуске или загрузке приложения перекодируйте файлы .basis в оптимальный собственный формат для целевой платформы (ETC2 для Android, ASTC для iOS, BC7 для Windows и т. д.).
3. Рендеринг с помощью графического процессора
Используйте перекодированные данные текстуры напрямую с помощью встроенного оборудования сжатия текстур графического процессора, обеспечивая оптимальную производительность.
Преимущества Базис Универсал
Единый конвейер активов
Устраните необходимость поддерживать несколько версий формата текстур для разных платформ.
Уменьшенный размер упаковки
Значительно меньшие пакеты приложений по сравнению с поставкой нескольких вариантов формата.
Меньшее использование полосы пропускания
Более быстрая загрузка и сокращение использования данных, что особенно важно для веб-приложений и мобильных приложений.
Гибкость платформы
Легко ориентируйтесь на новые платформы без повторного сжатия исходных текстур.
Ограничения и соображения
Накладные расходы на транскодирование
Требуется перекодирование во время выполнения, что приводит к небольшому снижению производительности при загрузке текстур.
Потеря сжатия
Как и при любом сжатии с потерями, существует некоторая потеря качества по сравнению с несжатыми текстурами.
Требования к памяти
Транскодирование требует временной памяти как для сжатых, так и для транскодированных данных.
Сложность интеграции
Требуется интеграция библиотек Basis Universal и кода транскодирования во время выполнения.
Идеальные варианты использования
WebGL-приложения
Идеально подходит для веб-3D-приложений, где критически важны развертывание одного файла и быстрая загрузка.
Кроссплатформенный мобильный
Идеально подходит для мобильных приложений, ориентированных как на Android, так и на iOS, с единым конвейером текстур.
Web3 и блокчейн-игры
Отлично подходит для игр на основе блокчейна, где размер активов и скорость передачи имеют решающее значение.
Мультиплатформенные игры
Упрощает управление ресурсами для игр, ориентированных на несколько платформ и магазинов приложений.
Basis Universal против других форматов
Чем Basis Universal отличается от традиционных подходов:
Традиционный подход
Доставка нескольких вариантов формата (ETC2 для Android, ASTC для iOS, BC7 для Windows) → Увеличенный размер пакета, сложный конвейер ресурсов.
Базовый универсальный подход
Отправка отдельных файлов .basis → Перекодирование во время выполнения в оптимальный формат → Меньшие пакеты, более простой конвейер
Хранилище: требования к хранению текстур снижены на 50-80%.
Пропускная способность: снижение пропускной способности загрузки на 50–90 %.
Время сборки: более быстрая сборка с одним шагом сжатия.
Качество: визуальное качество, сравнимое с собственными форматами.
Лучшие практики
- Используйте режим ETC1S для большинства диффузных текстур и элементов пользовательского интерфейса, где размер файла важен.
- Используйте режим UASTC для обычных карт, детальных текстур и ресурсов героев, где качество изображения имеет решающее значение.
- Перекодируйте текстуры во время загрузки ресурса, а не при запуске приложения, чтобы избежать блокировки.
- При выборе между режимами ETC1S и UASTC учитывайте форматы сжатия целевой платформы.
- Протестируйте перекодированные текстуры на целевых платформах, чтобы убедиться, что качество изображения соответствует требованиям.
- Кэшируйте перекодированные текстуры, когда это возможно, чтобы избежать повторного перекодирования одних и тех же ресурсов.
Заключение
Basis Universal представляет собой значительный прогресс в технологии сжатия текстур, решая давнюю проблему управления несколькими форматами текстур на разных платформах. Его универсальный подход к перекодированию обеспечивает как технические, так и бизнес-преимущества: от уменьшенных размеров пакетов до упрощенных конвейеров активов.
Для кросс-платформенных приложений, веб-интерфейсов и сценариев, где размер загрузки и пропускная способность имеют решающее значение, Basis Universal предлагает привлекательное решение, которое не ставит под угрозу визуальное качество или производительность. Поскольку графическая индустрия продолжает двигаться в сторону кроссплатформенной разработки, такие инструменты, как Basis Universal, будут становиться все более важными для эффективного управления текстурами.
Дополнительная литература и ресурсы
Расширьте свои знания с помощью этих авторитетных ресурсов:
- Базовый универсальный репозиторий GitHub - Официальный репозиторий Basis Universal с исходным кодом и документацией.
- Базовая универсальная документация - Полная документация и примеры использования.
- Универсальные транскодеры Khronos Basis - Библиотека транскодирования, поддерживаемая Khronos, для веб- и мобильных платформ.
- Базовый универсальный технический документ - Оригинальная исследовательская статья, описывающая алгоритм сжатия Basis Universal.
- Руководство по сжатию текстур WebGL - Руководство Google по сжатию текстур в веб-приложениях