stringtranslate.com

Сжатие текстур Ericsson

Ericsson Texture Compression ( ETC ) — это метод сжатия текстур с потерями , разработанный в сотрудничестве с Ericsson Research в начале 2005 года. Первоначально он был разработан под названием iPACKMAN [1] и основан на более ранней схеме сжатия под названием i PACKMAN [2] .

И Т.Д.1

Оригинальная схема сжатия «ETC1» обеспечивает 6-кратное сжатие 24-битных данных RGB . Она не поддерживает сжатие изображений с компонентами Alpha, хотя для этого есть обходные пути. [3]

ETC1 берет группы 4x4 пиксельных данных и сжимает каждую в одно 64-битное слово. Группа пикселей 4×4 сначала делится на два фрагмента 4×2 — либо по горизонтали, либо по вертикали. Каждой половине присваивается базовый цвет — либо с использованием 4/4/4 RGB, либо присваивая одной из них 5/5/5 RGB, а другой — смещение на 3/3/3 бита от этой базы. Каждая область 4×2 также имеет выбор диапазона яркости в 3 бита. Затем каждый пиксель смещается относительно базового цвета путем добавления одного из четырех знаковых значений к базовому цвету для своей половины группы 4×4.

Этот формат является частью графических расширений стандарта OpenGL ES [4] для встраиваемых устройств, таких как мобильные телефоны , и был одобрен Khronos Group для использования в графическом стандарте WebGL для веб-графики на стороне браузера. [ необходима ссылка ]

Android версии 2.2 (Froyo) включает поддержку ETC1. [5] [3]

ETC2

Схема «ETC2» расширяет ETC1 обратно совместимым способом, обеспечивая более качественное сжатие RGB [6], а также сжатие RGBA (RGB плюс альфа).

Следующие кодеки ETC2 являются обязательными в OpenGL ES 3.0 [7] и OpenGL 4.3: [8]

Также доступны sRGB- варианты вышеуказанных кодеков.

ЕАС

EAC построен на тех же принципах, что и ETC1/ETC2, но используется для одно- или двухканальных данных. Следующие четыре кодека EAC включены в качестве обязательных в OpenGL ES 3.0 и OpenGL 4.3:

Кодирование

Форматы RGBA и RG11 кодируются в 128 бит на блок 4x4, а остальные кодируются в 64 бит на блок. Для RGBA каналы RGB кодируются в обычном 64-битном блоке, в то время как канал A получает свой собственный 64-битный блок. Форматы RG11 кодируются аналогичным образом, с одним 64-битным блоком на компонент.

Программное обеспечение

Программная утилита ETCPACK для сжатия и распаковки текстур ETC1/ETC2 доступна для бесплатной загрузки в виде кода от Ericsson на GitHub. [9]

Смотрите также

Ссылки

  1. ^ iPACKMAN: высококачественное сжатие текстур низкой сложности для мобильных телефонов -- Якоб Стрём (Ericsson Research), Томас Акейнин-Мёллер (Лундский университет)
  2. ^ PACKMAN: Сжатие текстур для мобильных телефонов -- Якоб Стрём (Ericsson Research), Томас Акейнин-Мёллер (Лундский университет).
  3. ^ ab "Пример кода для обработки альфа-каналов в ETC1 из ARM". Архивировано из оригинала 2011-10-27 . Получено 2011-11-03 .
  4. ^ OES_compressed_ETC1_RGB8_texture, Описание алгоритма сжатия ETC1 и формата текстуры в реестре расширений OpenGL ES
  5. Заметки о выпуске Android 2.2. Архивировано 11 октября 2010 г. на Wayback Machine (Froyo)
  6. Статья о ETC2: Сжатие текстур с использованием недопустимых комбинаций
  7. ^ "Спецификация OpenGL ES версии 3.0" (PDF) . Архивировано из оригинала (PDF) 2016-03-06 . Получено 2012-08-07 .
  8. ^ Спецификация OpenGL версии 4.3
  9. ^ Ericsson ETCPACK на Github

Внешние ссылки