Сжатие текстур
Трехмерный (3D) компьютерная графика |
---|
Основы |
Основное использование |
Связанные темы |
Сжатие текстур — это специализированная форма сжатия изображений , предназначенная для хранения карт текстур в системах рендеринга трехмерной компьютерной графики . В отличие от обычных алгоритмов сжатия изображений, алгоритмы сжатия текстур оптимизированы для произвольного доступа .
Сжатие текстур можно применять для уменьшения использования памяти во время выполнения. Данные текстур часто являются крупнейшим источником использования памяти в мобильном приложении.
Компромиссы [ править ]
В своей основополагающей статье о сжатии текстур [1] Бирс, Агравала и Чадда перечисляют четыре особенности, которые отличают сжатие текстур от других методов сжатия изображений. Эти особенности:
- Скорость декодирования
- Крайне желательно иметь возможность рендеринга непосредственно из сжатых данных текстуры, поэтому, чтобы не влиять на производительность рендеринга, распаковка должна быть быстрой.
- Произвольный доступ
- Поскольку предсказать порядок, в котором средство рендеринга обращается к текселям , будет сложно, любая схема сжатия текстур должна обеспечивать быстрый произвольный доступ к распакованным данным текстуры. Это имеет тенденцию исключать многие более известные схемы сжатия изображений, такие как JPEG или кодирование длин серий .
- Степень сжатия и качество изображения
- В системе рендеринга сжатие с потерями может быть более терпимым, чем в других случаях использования. Некоторые библиотеки сжатия текстур, такие как crunch, [2] позволяют разработчику гибко находить компромисс между степенью сжатия и качеством изображения, используя такие методы, как оптимизация скорости искажения (RDO).
- Скорость кодирования
- Сжатие текстур более устойчиво к асимметричным скоростям кодирования/декодирования, поскольку процесс кодирования часто выполняется только один раз в процессе разработки приложения.
Учитывая вышеизложенное, большинство алгоритмов сжатия текстур включают в себя ту или иную форму с фиксированной скоростью с потерями векторного квантования небольших блоков пикселей фиксированного размера в небольшие блоки кодовых битов фиксированного размера, иногда с дополнительными дополнительными этапами предварительной и постобработки. Блочное усечение-кодирование — очень простой пример этого семейства алгоритмов.
Поскольку их шаблоны доступа к данным четко определены, распаковка текстур может выполняться «на лету» во время рендеринга как часть общего графического конвейера , что снижает общую пропускную способность и потребности в памяти во всей графической системе. Помимо текстурных карт, сжатие текстур также может использоваться для кодирования других типов карт рендеринга, включая карты рельефа и карты нормалей поверхности . Сжатие текстур также может использоваться вместе с другими формами обработки карт, такими как MIP-карты и анизотропная фильтрация .
Наличие [ править ]
Некоторыми примерами практических систем сжатия текстур являются сжатие текстур S3 (S3TC), PVRTC , сжатие текстур Ericsson (ETC) и адаптивное масштабируемое сжатие текстур (ASTC); они могут поддерживаться специальными функциональными блоками в современных графических процессорах .
OpenGL и OpenGL ES, реализованные на многих картах видеоускорителей и мобильных графических процессорах, могут поддерживать несколько распространенных видов сжатия текстур — обычно за счет использования расширений поставщиков.
Суперсжатие [ править ]
Сжатую текстуру можно дополнительно сжать, что называется «суперсжатием». Форматы сжатия текстур с фиксированной скоростью оптимизированы для произвольного доступа и гораздо менее эффективны по сравнению с форматами изображений, такими как PNG . Добавляя дальнейшее сжатие, программист может уменьшить разрыв в эффективности. Дополнительный слой может быть распакован процессором, чтобы графический процессор получил нормальную сжатую текстуру. [3] или в более новых методах, распакованных самим графическим процессором. Суперсжатие экономит тот же объем видеопамяти, что и обычное сжатие текстур, но экономит больше дискового пространства и размера загрузки. [4]
См. также [ править ]
Ссылки [ править ]
- ^ Эндрю Бирс; Маниш Агравала; Навин Чадда (1996), «Рендеринг на основе сжатых текстур» , Компьютерная графика, Proc. СИГРАФ : 373–378
- ^ «Crunch библиотека сжатия текстур с открытым исходным кодом» . Гитхаб . Проверено 13 сентября 2016 г.
- ^ Стром, Джейкоб; Веннерстен, Пер (5 августа 2011 г.). Сжатие без потерь уже сжатых текстур . HPG '11: Материалы симпозиума ACM SIGGRAPH по высокопроизводительной графике. стр. 177–182. дои : 10.1145/2018323.2018351 .
- ^ Крайцевский, Павел; Пратапа, Шрихари; Маноча, Динеш (11 ноября 2016 г.). «GST: сверхсжатые текстуры, декодируемые с помощью графического процессора» . Транзакции ACM с графикой . 35 (6): 1–10. дои : 10.1145/2980179.2982439 .
Внешние ссылки [ править ]
- http://gamma.cs.unc.edu/GST/ GST: сверхсжатые текстуры, декодируемые графическим процессором.