stringtranslate.com

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

Сжатие текстур — это специализированная форма сжатия изображений, разработанная для хранения текстурных карт в системах трехмерного рендеринга компьютерной графики . В отличие от обычных алгоритмов сжатия изображений, алгоритмы сжатия текстур оптимизированы для случайного доступа .

Сжатие текстур может быть применено для уменьшения использования памяти во время выполнения. Данные текстур часто являются крупнейшим источником использования памяти в мобильном приложении.

Компромиссы

В своей основополагающей статье о сжатии текстур [1] Бирс, Агравала и Чаддха перечисляют четыре особенности, которые отличают сжатие текстур от других методов сжатия изображений. Эти особенности:

Скорость декодирования
Крайне желательно иметь возможность выполнять рендеринг непосредственно из сжатых данных текстуры, поэтому, чтобы не влиять на производительность рендеринга, распаковка должна быть быстрой.
Произвольный доступ
Поскольку предсказать порядок, в котором рендерер обращается к текселям , было бы сложно, любая схема сжатия текстур должна обеспечивать быстрый случайный доступ к распакованным данным текстур. Это, как правило, исключает многие более известные схемы сжатия изображений, такие как JPEG или кодирование длины прогона .
Степень сжатия и визуальное качество
В системе рендеринга сжатие с потерями может быть более терпимым, чем в других случаях использования. Некоторые библиотеки сжатия текстур, такие как crunch, [2] позволяют разработчику гибко выбирать компромисс между скоростью сжатия и визуальным качеством, используя такие методы, как оптимизация скорости искажения (RDO).
Скорость кодирования
Сжатие текстур более терпимо к асимметричным скоростям кодирования/декодирования, поскольку процесс кодирования часто выполняется только один раз в процессе создания приложения.

Учитывая вышесказанное, большинство алгоритмов сжатия текстур включают в себя некоторую форму векторного квантования с фиксированной скоростью и потерями небольших блоков пикселей фиксированного размера в небольшие блоки кодирующих бит фиксированного размера, иногда с дополнительными шагами предварительной и последующей обработки. Кодирование с усечением блоков является очень простым примером этого семейства алгоритмов.

Поскольку их шаблоны доступа к данным четко определены, декомпрессия текстур может выполняться «на лету» во время рендеринга как часть общего графического конвейера , что снижает общую пропускную способность и потребности в хранении во всей графической системе. Помимо текстурных карт, сжатие текстур может также использоваться для кодирования других видов карт рендеринга, включая карты рельефа и карты нормалей поверхности . Сжатие текстур также может использоваться вместе с другими формами обработки карт, такими как карты MIP и анизотропная фильтрация .

Доступность

Примерами практических систем сжатия текстур являются S3 Texture Compression (S3TC), PVRTC , Ericsson Texture Compression (ETC) и Adaptive Scalable Texture Compression (ASTC); они могут поддерживаться специальными функциональными блоками в современных графических процессорах .

OpenGL и OpenGL ES, реализованные на многих видеоускорителях и мобильных графических процессорах, могут поддерживать несколько распространенных видов сжатия текстур — как правило, за счет использования расширений поставщиков.

Суперкомпрессия

Сжатая текстура может быть дополнительно сжата в том, что называется «суперсжатием». Форматы сжатия текстур с фиксированной скоростью оптимизированы для произвольного доступа и гораздо менее эффективны по сравнению с форматами изображений, такими как PNG . Добавляя дополнительное сжатие, программист может сократить разрыв в эффективности. Дополнительный слой может быть распакован ЦП, так что ГП получит обычную сжатую текстуру, [3] или, в более новых методах, распакован самим ГП. Суперсжатие экономит тот же объем VRAM, что и обычное сжатие текстур, но экономит больше места на диске и размера загрузки. [4]

Сжатие нейронных текстур

Нейронное сжатие текстур материалов с произвольным доступом (нейронное сжатие текстур) — это технология Nvidia , которая обеспечивает два дополнительных уровня детализации (в 16 раз больше текселей , то есть в четыре раза большее разрешение) при сохранении аналогичных требований к хранению, как и у традиционных методов сжатия текстур. [5]

Основная идея заключается в сжатии нескольких текстур материалов и их цепочек MIP-карт вместе и использовании небольшой нейронной сети , оптимизированной для каждого материала, для их распаковки. [6]


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

Ссылки

  1. ^ Эндрю Бирс; Маниш Агравала; Навин Чаддха (1996), «Рендеринг из сжатых текстур», Computer Graphics, Proc. SIGGRAPH : 373–378
  2. ^ "Crunch библиотека сжатия текстур с открытым исходным кодом". GitHub . Получено 2016-09-13 .
  3. ^ Strom, Jacob; Wennersten, Per (5 августа 2011 г.). Сжатие без потерь уже сжатых текстур . HPG '11: Труды симпозиума ACM SIGGRAPH по высокопроизводительной графике. стр. 177–182. doi :10.1145/2018323.2018351.
  4. ^ Крайцевский, Павел; Пратапа, Шрихари; Маноча, Динеш (11 ноября 2016 г.). «GST: сверхсжатые текстуры, декодируемые графическим процессором». Транзакции ACM с графикой . 35 (6): 1–10. дои : 10.1145/2980179.2982439.
  5. ^ «Nvidia использует нейронную сеть для инновационного метода сжатия текстур». 6 мая 2023 г.
  6. ^ «Сжатие текстур материалов с помощью нейронов произвольного доступа | Исследования».

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