Адаптивное масштабируемое сжатие текстур (ASTC ) - это с потерями блочный алгоритм сжатия текстур , разработанный Йорном Нистадом и др. of ARM Ltd. и AMD.
Полная информация об ASTC была впервые публично представлена на конференции High Performance Graphics 2012 в статье Olson et al. под названием «Адаптивное масштабируемое сжатие текстур»
ASTC был принят в качестве официального расширения для OpenGL и OpenGL ES Khronos Group 6 Август 2012.
Оба профиля (LDR и Full) поддерживаются в последних версиях Mali, включая Mali ™ -T620, Mali-T720, Mali-T760, Mali-T820 / T830 и Mali-T860 / T880.
SoC от Nvidia Kepler и Maxwell Tegra.
Intel GPU в Skylake и более поздние процессоры.
В Linux все драйверы Gallium 3D имеют резервное программное обеспечение с 2018 года, поэтому ASTC можно использовать на любом графическом процессоре AMD Radeon.
Метод сжатия является развитием Color Cell Compression с функциями, включая множество близко расположенных дробных битрейтов, несколько цветовых форматов, поддержку для текстур с расширенным динамическим диапазоном (HDR) и поддержки реальных 3D-текстур.
Заявленная основная цель проекта ASTC - дать разработчикам контента возможность лучше контролировать соотношение пространства и качества, присущее любой схеме сжатия с потерями. В ASTC соотношение между смежными битовыми скоростями составляет порядка 25%, что снижает затраты на повышение качества для данной текстуры.
Для кодирования разных активов часто требуются разные цветовые форматы. ASTC поддерживает широкий выбор входных форматов, включая только яркость, альфа-яркость, RGB, RGBA и режимы, оптимизированные для нормалей поверхности. Таким образом, разработчик может выбрать оптимальный формат без необходимости поддерживать несколько различных схем сжатия.
Выбор скорости передачи данных и формата цвета не ограничивает друг друга, поэтому можно выбирать из большого количества комбинаций.
Несмотря на эту гибкость, ASTC обеспечивает лучшее отношение пикового сигнала к шуму, чем PVRTC, S3TC и ETC2 при измерении при 2 и 3,56 бит на тексел. Для текстур HDR он дает результаты, сопоставимые с BC6H при 8 битах на тексель.
Формат кодирования | Описание |
---|---|
L | Только яркость |
LA | Яркость с прозрачностью |
L + A | Яркость с некоррелированной прозрачностью |
X+Y | Нормали поверхности |
RGB | Полноцветный |
XY + Z | Нормали поверхности с некоррелированным Z |
RGBA | Полноцветный с прозрачностью |
RGB+A | Полноцветный с некоррелированной прозрачностью |
Каждый из них может быть закодирован как низкий или высокий динамический диапазон. Кодировщик выбирает цветовые форматы независимо для каждого блока изображения.
Текстуры 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-текстуры 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 глубина.