Адаптивное масштабируемое сжатие текстур - Adaptive Scalable Texture Compression
Адаптивное масштабируемое сжатие текстур (ASTC) это с потерями блочный сжатие текстуры алгоритм разработан Jørn Nystad et al. из ARM Ltd. и AMD.[1]
Полная информация об ASTC была впервые публично представлена на конференции High Performance Graphics 2012 в статье Olson et al. под названием «Адаптивное масштабируемое сжатие текстур»[2]
ASTC был принят как официальное расширение для обоих OpenGL и OpenGL ES посредством Хронос Групп 6 августа 2012 г.[3]
Поддержка оборудования
Оба профиля (LDR и Full) поддерживаются последней версией Мали версии, включая Mali ™ -T620, Mali-T720, Mali-T760, Mali-T820 / T830 и Mali-T860 / T880.
Nvidia's Кеплер и Максвелл -основан Тегра SoC.[4]
Графические процессоры Intel в Skylake и более поздние процессоры. [5]
В Linux все драйверы Gallium 3D имеют резервное программное обеспечение с 2018 года, поэтому ASTC можно использовать на любом графическом процессоре AMD Radeon.[6]
Обзор
Метод сжатия - это эволюция Сжатие цветных ячеек с такими функциями, как множество близко расположенных дробных битрейтов, несколько цветовых форматов, поддержка текстур с расширенным динамическим диапазоном (HDR) и поддержка реальных 3D-текстур.
Заявленная основная цель проекта ASTC - дать разработчикам контента возможность лучше контролировать компромисс между пространством и качеством, присущий любой схеме сжатия с потерями. В ASTC соотношение между смежными битовыми скоростями составляет порядка 25%, что снижает затраты на повышение качества для данной текстуры.
Для кодирования разных ресурсов часто требуются разные цветовые форматы. ASTC поддерживает широкий выбор входных форматов, включая только яркость, альфа-яркость, RGB, RGBA и режимы, оптимизированные для нормалей поверхности. Таким образом, разработчик может выбрать оптимальный формат без необходимости поддерживать несколько различных схем сжатия.
Выбор скорости передачи данных и цветового формата не ограничивает друг друга, поэтому можно выбирать из большого количества комбинаций.
Несмотря на такую гибкость, ASTC обеспечивает лучшее отношение пикового сигнала к шуму, чем PVRTC, S3TC, и ETC2 при измерении при 2 и 3,56 бит на тексель.[2] Для текстур HDR он дает результаты, сопоставимые с BC6H при 8 битах на тексель.[2]
Поддерживаемые цветовые форматы
Формат кодирования | Описание |
---|---|
L | Только яркость |
ЛА | Яркость с прозрачностью |
L + A | Яркость с некоррелированной прозрачностью |
X + Y | Нормали поверхности |
RGB | Полноцветный |
XY + Z | Нормали к поверхности с некоррелированными Z |
RGBA | Полный цвет с прозрачностью |
RGB + A | Полный цвет с некоррелированной прозрачностью |
Каждый из них может быть закодирован как низкий или высокий динамический диапазон. Кодировщик выбирает цветовые форматы независимо для каждого блока изображения.
Последовательность 2D-блоков и скорость передачи данных
Текстуры ASTC сжимаются с использованием фиксированного размера блока 128 бит, но с переменным размером блока в диапазоне от 4x4 текселей до 12x12 текселей. Таким образом, доступные битовые скорости варьируются от 8 бит на тексель до 0,89 бит на тексел с небольшими шагами между ними.
Отпечаток блока | Битрейт | Приращение |
---|---|---|
4x4 | 8.00 | 25% |
5x4 | 6.40 | 25% |
5x5 | 5.12 | 20% |
6x5 | 4.27 | 20% |
6x6 | 3.56 | 14% |
8x5 | 3.20 | 20% |
8x6 | 2.67 | 5% |
10x5 | 2.56 | 20% |
10x6 | 2.13 | 7% |
8x8 | 2.00 | 25% |
10x8 | 1.60 | 25% |
10x10 | 1.28 | 20% |
12x10 | 1.07 | 20% |
12x12 | 0.89 |
В приведенной выше таблице столбец «Приращение» показывает дополнительную память, необходимую для хранения текстуры с использованием этой скорости передачи данных, по сравнению со следующей наименьшей скоростью. Посадочные места блока представлены как ширина x высота.
Отпечатки 3D-блоков и скорость передачи данных
3D-текстуры ASTC сжимаются с использованием фиксированного размера блока 128 бит, как для 2D, но с переменным размером блока в диапазоне от 3x3x3 текселей до 6x6x6 текселей. Таким образом, доступные битовые скорости варьируются от 4,74 бит на тексель до 0,59 бит на тексель с небольшими шагами между ними.
Отпечаток блока | Битрейт | Приращение |
---|---|---|
3x3x3 | 4.74 | 33% |
4x3x3 | 3.56 | 33% |
4x4x3 | 2.67 | 33% |
4x4x4 | 2.00 | 25% |
5x4x4 | 1.60 | 25% |
5x5x4 | 1.28 | 25% |
5x5x5 | 1.02 | 20% |
6x5x5 | 0.85 | 20% |
6x6x5 | 0.71 | 20% |
6x6x6 | 0.59 |
Посадочные места блока представлены как ширина x высота x глубина.
Смотрите также
- 3Dc
- Сжатие текстур Ericsson (ТАК ДАЛЕЕ)
- PVRTC
- S3TC
Рекомендации
- ^ «Технология адаптивного масштабируемого сжатия текстур (ASTC), разработанная ARM® и AMD».
- ^ а б c «Адаптивное масштабируемое сжатие текстур» (PDF). HPG 2012. Получено 2012-06-27.
- ^ "Khronos выпускает спецификацию сжатия текстур нового поколения ATSC". Khronos Group Inc. 2012-08-06. Получено 2012-08-06.
- ^ «Вулкан API» (PDF).
- ^ «Руководство разработчика графического API для процессоров Intel® Core ™ 6-го поколения».
- ^ https://lists.freedesktop.org/archives/mesa-dev/2018-July/200867.html