Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Компромиссы [ править ]

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

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

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

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

Доступность [ править ]

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

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

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

См. Также [ править ]

  • Блочное кодирование с усечением (BTC)
  • Векторное квантование
  • Сжатие цветных ячеек

Ссылки [ править ]

  1. ^ Эндрю Бирс; Маниш Агравала; Навин Чадда (1996), «Рендеринг из сжатых текстур» , Компьютерная графика, Proc. SIGGRAPH : 373-378
  2. ^ "crunch open source библиотека сжатия текстур" . GitHub . Проверено 13 сентября 2016 .

Внешние ссылки [ править ]

  • http://gamma.cs.unc.edu/GST/ GST: сверхсжатые текстуры с возможностью декодирования с помощью графического процессора