Адаптивное масштабируемое сжатие текстур
Адаптивное масштабируемое сжатие текстур ( ASTC ) — это с потерями, на основе блоков сжатия текстур алгоритм разработанный Йорном Нистадом и др. компаний ARM Ltd. и AMD . [1]
Полная информация об ASTC была впервые представлена публично на конференции High Performance Graphics 2012 в статье Олсона и др. под названием «Адаптивное масштабируемое сжатие текстур». [2]
ASTC был принят в качестве официального расширения для OpenGL и OpenGL ES группой Khronos 6 августа 2012 года. [3]
Аппаратная поддержка
[ редактировать ]Поставщик/продукт | Профиль | Поколение |
---|---|---|
AMD Радеон | ? | |
Графические процессоры Apple | только ЛДР | От А8 до А12 [4] |
Полный | Начиная с А13 [4] | |
Арм Мали | Полный | Начиная с Мали-Т620/Т720/Т820 [5] |
Воображение PowerVR | Полный | Начиная с Series6XT [6] |
Графические процессоры Intel | Полный [7] | Из Скайлейка [8] ; Удалено в Arc / Gen12.5. [9] |
Нвидиа Тегра | ? | Поскольку Кеплер [10] |
Qualcomm Адрено | Полный | ЛДР начиная с серии 4xx, [11] по крайней мере серия 7xx поддерживает расширение GL_KHR_texture_compression_astc_hdr на Android 13 |
В Linux все драйверы Gallium 3D имеют резервную версию программного обеспечения с 2018 года, поэтому ASTC можно использовать на любом графическом процессоре AMD Radeon. [12]
Обзор
[ редактировать ]

Метод сжатия представляет собой эволюцию сжатия цветовых ячеек с такими функциями, как многочисленные близко расположенные дробные скорости передачи данных, несколько цветовых форматов, поддержка текстур с расширенным динамическим диапазоном (HDR) и поддержка реальных 3D-текстур.
Заявленная основная цель разработки ASTC — дать разработчикам контента возможность лучше контролировать соотношение пространства и качества, присущее любой схеме сжатия с потерями. При использовании ASTC соотношение между скоростями соседних битов составляет порядка 25%, что делает повышение качества данной текстуры менее затратным.
Для кодирования разных ресурсов часто требуются разные цветовые форматы. ASTC обеспечивает широкий выбор входных форматов, включая только яркость, яркость-альфа, RGB, RGBA и режимы, оптимизированные для нормалей поверхности. Таким образом, разработчик может выбрать оптимальный формат без необходимости поддерживать несколько различных схем сжатия.
Выбор скорости передачи данных и формата цвета не ограничивает друг друга, поэтому можно выбирать из большого количества комбинаций.
Несмотря на эту гибкость, ASTC достигает лучших пиковых отношений сигнал/шум, чем PVRTC , S3TC и ETC2 , при измерении при 2 и 3,56 битах на тексель . [2] Для HDR-текстур он дает результаты, сравнимые с BC6H при 8 битах на тексель. [2]
Поддерживаемые цветовые форматы
[ редактировать ]ASTC поддерживает от 1 до 4 каналов. В режимах с 2–4 каналами один из каналов можно считать «некоррелированным» и получить для прогнозирования отдельный градиент. В любом случае данные декодируются как RGBA. [13]
Количество каналов | Интерпретация RGBA | Описание |
---|---|---|
1 | л | Только яркость: для RGB установлено то же значение в декодированном буфере, для альфа установлено значение 1. |
2 | ТО | Яркость с прозрачностью |
2 | Л+А | Яркость с некоррелированной прозрачностью |
3 | RGB | Полноцветный, альфа установлена на 1. |
3 | РГ+Б | Полноцветный с некоррелирующим синим (фактически не используется для цветопередачи) |
4 | РГБА | Полноцветный с прозрачностью |
4 | RGB+А | Полноцветный с некоррелированной прозрачностью |
Каждый из них может быть закодирован как низкий или высокий динамический диапазон. Кодер выбирает цветовые форматы независимо для каждого блока изображения.
На практике ASTC может использоваться для представления данных, отличных от цвета. Например, формат L+A может использоваться для представления «X+Y», карты нормалей с некоррелированными компонентами; формат «RG+B» может использоваться для представления XY+Z. [14] astc-encoder
программное обеспечение, поставляемое ARM, поддерживает генерацию «X+Y» с -normal
вариант. Ожидается, что шейдер будет обрабатывать декодированный результат как свернутую текстуру . [15]
Размер 2D-блоков и скорость передачи данных
[ редактировать ]Текстуры ASTC сжимаются с использованием фиксированного размера блока в 128 бит, но с переменным размером блока от 4×4 текселей до 12×12 текселей. Таким образом, доступные скорости передачи данных варьируются от 8 бит на тексель до 0,89 бит на тексель с небольшими шагами между ними.
Блок следа | Битрейт | Приращение |
---|---|---|
4×4 | 8.00 | 25% |
5×4 | 6.40 | 25% |
5×5 | 5.12 | 20% |
6×5 | 4.27 | 20% |
6×6 | 3.56 | 14% |
8×5 | 3.20 | 20% |
8×6 | 2.67 | 5% |
10×5 | 2.56 | 20% |
10×6 | 2.13 | 7% |
8×8 | 2.00 | 25% |
10×8 | 1.60 | 25% |
10×10 | 1.28 | 20% |
12×10 | 1.07 | 20% |
12×12 | 0.89 |
В приведенной выше таблице столбец «Приращение» показывает дополнительный объем памяти, необходимый для хранения текстуры с использованием этой скорости передачи данных, по сравнению со следующей наименьшей скоростью передачи данных. Следы блоков представлены как ширина × высота.
Размер 3D-блоков и скорость передачи данных
[ редактировать ]3D-текстуры ASTC сжимаются с использованием фиксированного размера блока в 128 бит, как и 2D, но с переменным размером блока от 3×3×3 текселей до 6×6×6 текселей. Таким образом, доступные скорости передачи данных варьируются от 4,74 бит на тексел до 0,59 бит на тексель с небольшими шагами между ними.
Блок следа | Битрейт | Приращение |
---|---|---|
3×3×3 | 4.74 | 33% |
4×3×3 | 3.56 | 33% |
4×4×3 | 2.67 | 33% |
4×4×4 | 2.00 | 25% |
5×4×4 | 1.60 | 25% |
5×5×4 | 1.28 | 50% |
5×5×5 | 1.02 | 20% |
6×5×5 | 0.85 | 20% |
6×6×5 | 0.71 | 20% |
6×6×6 | 0.59 |
Следы блоков представлены в виде ширины × высоты × глубины.
Универсальный АСТК
[ редактировать ]UASTC (универсальный ASTC) — это подмножество ASTC, определяемое биномом. Этот формат используется в их « суперсжатом » формате текстур GPU Basis Universal, который добавляет дополнительное сжатие по сравнению со сжатыми форматами текстур, такими как UASTC и ETC1S , и позволяет эффективно конвертировать из UASTC/ETC1S в форматы сжатых текстур, которые могут напрямую использоваться графическими процессорами. [16] UASTC, как часть Basis Universal, является частью формата файлов KTX (Khronos Texture). [17]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ «Технология адаптивного масштабируемого сжатия текстур (ASTC), разработанная ARM и AMD» .
- ^ Перейти обратно: а б с «Адаптивное масштабируемое сжатие текстур» (PDF) . ГПГ 2012 . Проверено 27 июня 2012 г.
- ^ «Хронос выпускает спецификацию сжатия текстур нового поколения ATSC» . The Khronos Group Inc. 6 августа 2012 г. Проверено 6 августа 2012 г.
- ^ Перейти обратно: а б «Таблицы наборов характеристик металла» (PDF) . Apple Inc. 21 октября 2020 г. Проверено 31 августа 2021 г.
- ^ «Технические данные графического процессора Arm Mali» (PDF) . Арм Лимитед . 2021 . Проверено 31 августа 2021 г.
- ^ «Архитектура нового поколения PowerVR Series6XT от Imagination обеспечивает повышение производительности до 50% и улучшенное управление питанием» . Технологии воображения . 06.01.2014 . Проверено 21 августа 2021 г.
- ^ «Intel Skylake добавляет сжатие текстур ASTC, скоро появится поддержка открытого исходного кода» . Фороникс . 20 мая 2015 г. Проверено 31 августа 2021 г.
- ^ «Руководство разработчика графических API для процессоров Intel Core 6-го поколения» . Архивировано из оригинала 20 июля 2017 г.
- ^ Майкл Ларабель (07.10.2021). «Intel удаляет оборудование ASTC из графики Gen12.5+» . Фороникс . Проверено 10 июля 2022 г.
- ^ «API Вулкан» (PDF) .
- ^ «Руководство разработчика Qualcomm Adreno OpenGL ES» (PDF) . Квалкомм . 01.05.2015 . Проверено 31 августа 2021 г.
- ^ «[Mesa-dev] [ИСПРАВЛЕНИЕ 0/7] Сжатие текстур ASTC для всех драйверов Gallium» . Lists.freedesktop.org. 23 июля 2018 года . Проверено 1 сентября 2022 г.
- ^ «Спецификация формата данных Khronos v1.1 rev 9» . Реестр.khronos.org .
- ^ «Хронос выпускает спецификацию сжатия текстур нового поколения ASTC» . Группа «Хронос» . 6 августа 2012 г.
- ^ «Эффективное кодирование ASTC [astc-encoder/Docs/Encoding.md по адресу 2042cfc1a507c0414fb41dce1603ed53c503a0da · ARM-software/astc-encoder]» . Гитхаб .
Лучший способ хранения карт нормалей с использованием ASTC аналогичен схеме, используемой BC5; сохраните компоненты X и Y нормали единичной длины. Компонент Z нормали может быть восстановлен в коде шейдера на основе знания того, что вектор имеет единичную длину. Чтобы закодировать это, нам нужно сохранить только два входных компонента в сжатых данных и, следовательно, использовать swizzle кодирования rrrg для выравнивания данных с конечной точкой ASTC яркость+альфа.
- ^ «Спецификация текстуры UASTC» . Гитхаб .
- ^ «KTX — формат контейнера текстур графического процессора» . Группа «Хронос» . 16 апреля 2021 г.