Сжатие текстур
Трехмерный (3D) компьютерная графика |
---|
Основы |
Основное использование |
Связанные темы |
Сжатие текстур — это специализированная форма сжатия изображений , предназначенная для хранения карт текстур в системах рендеринга трехмерной компьютерной графики . В отличие от обычных алгоритмов сжатия изображений, алгоритмы сжатия текстур оптимизированы для произвольного доступа .
Сжатие текстур можно применять для уменьшения использования памяти во время выполнения. Данные текстур часто являются крупнейшим источником использования памяти в мобильном приложении.
Компромиссы
[ редактировать ]В своей основополагающей статье о сжатии текстур [ 1 ] Бирс, Агравала и Чадда перечисляют четыре особенности, которые отличают сжатие текстур от других методов сжатия изображений. Эти особенности:
- Скорость декодирования
- Крайне желательно иметь возможность рендеринга непосредственно из сжатых данных текстуры, поэтому, чтобы не влиять на производительность рендеринга, распаковка должна быть быстрой.
- Произвольный доступ
- Поскольку предсказать порядок, в котором средство рендеринга обращается к текселям , будет сложно, любая схема сжатия текстур должна обеспечивать быстрый произвольный доступ к распакованным данным текстуры. Это имеет тенденцию исключать многие более известные схемы сжатия изображений, такие как JPEG или кодирование длин серий .
- Степень сжатия и качество изображения
- В системе рендеринга сжатие с потерями может быть более терпимым, чем в других случаях использования. Некоторые библиотеки сжатия текстур, такие как crunch, [ 2 ] позволяют разработчику гибко находить компромисс между степенью сжатия и качеством изображения, используя такие методы, как оптимизация скорости искажения (RDO).
- Скорость кодирования
- Сжатие текстур более устойчиво к асимметричным скоростям кодирования/декодирования, поскольку процесс кодирования часто выполняется только один раз в процессе разработки приложения.
Учитывая вышеизложенное, большинство алгоритмов сжатия текстур включают в себя ту или иную форму с потерями векторного квантования с фиксированной скоростью небольших блоков пикселей фиксированного размера в небольшие блоки кодирующих бит фиксированного размера, иногда с дополнительными дополнительными этапами предварительной и постобработки. Блочное усечение-кодирование — очень простой пример этого семейства алгоритмов.
Поскольку их шаблоны доступа к данным четко определены, распаковка текстур может выполняться «на лету» во время рендеринга как часть общего графического конвейера , что снижает общую пропускную способность и потребности в памяти во всей графической системе. Помимо текстурных карт, сжатие текстур также может использоваться для кодирования других типов карт рендеринга, включая карты рельефа и карты нормалей поверхности . Сжатие текстур также может использоваться вместе с другими формами обработки карт, такими как MIP-карты и анизотропная фильтрация .
Доступность
[ редактировать ]Некоторыми примерами практических систем сжатия текстур являются сжатие текстур S3 (S3TC), PVRTC , сжатие текстур Ericsson (ETC) и адаптивное масштабируемое сжатие текстур (ASTC); они могут поддерживаться специальными функциональными блоками в современных графических процессорах .
OpenGL и OpenGL ES, реализованные на многих картах видеоускорителей и мобильных графических процессорах, могут поддерживать несколько распространенных видов сжатия текстур — обычно за счет использования расширений поставщиков.
Суперсжатие
[ редактировать ]Сжатую текстуру можно дополнительно сжать, что называется «суперсжатием». Форматы сжатия текстур с фиксированной скоростью оптимизированы для произвольного доступа и гораздо менее эффективны по сравнению с форматами изображений, такими как PNG . Добавляя дальнейшее сжатие, программист может уменьшить разрыв в эффективности. Дополнительный слой может быть распакован процессором, чтобы графический процессор получил нормальную сжатую текстуру. [ 3 ] или в более новых методах, распакованных самим графическим процессором. Суперсжатие экономит тот же объем видеопамяти, что и обычное сжатие текстур, но экономит больше дискового пространства и размера загрузки. [ 4 ]
Нейронное сжатие текстур
[ редактировать ]Нейронное сжатие текстур материалов с произвольным доступом (нейронное сжатие текстур) — это технология Nvidia , которая обеспечивает два дополнительных уровня детализации (в 16 раз больше текселей , что в четыре раза выше разрешение), сохраняя при этом те же требования к объему памяти, что и традиционные методы сжатия текстур. [ 5 ]
Ключевая идея — сжатие нескольких текстур материалов и их цепочек MIP-карт вместе и использование небольшой нейронной сети , оптимизированной для каждого материала, для их распаковки. [ 6 ]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Эндрю Бирс; Маниш Агравала; Навин Чадда (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 .
- ^ https://www.tomshardware.com/news/nvidia-uses-neural-network-for-innovative-texture-compression-method
- ^ https://research.nvidia.com/publication/2023-08_random-access-neural-compression-material-textures
Внешние ссылки
[ редактировать ]- http://gamma.cs.unc.edu/GST/ GST: сверхсжатые текстуры, декодируемые графическим процессором.