The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Google и Binomial открыли код системы сжатия текстур Basis Universal

24.05.2019 10:28

Компании Google и Binomial открыли исходные тексты Basis Universal, кодека для эффективного сжатия текстур и связанного с ним универсального файлового формата ".basis" для распространения текстур на базе изображений и видео. Код эталонной реализации написан на языке С++ и поставляется под лицензией Apache 2.0.

Basis Universal дополняет ранее опубликованную систему сжатия 3D-данных Draco и пытается решить проблему с поставкой текстур для GPU. До сих пор разработчики были ограничены выбором между низкоуровневыми форматами, позволяющими добиться высокой производительности, но специфичными для GPU и занимающими много места на диске, и другими форматами, которые позволяют добиться уменьшения размера, но не могут конкурировать с GPU-текстурами по производительности.

Формат Basis Universal позволяет добиться производительности уровня родных для GPU текстур, но обеспечивает более высокий уровень сжатия. Basis является промежуточным форматом, перед применением обеспечивающим быстрое перекодирование в различные низкоуровневые форматы текстур GPU, применяемых как на настольных системах, так и на мобильных устройствах. В настоящее время поддерживается трансляция в форматы PVRTC1 (4bpp RGB), BC7 (режим 6 RGB), BC1-5, ETC1, и ETC2. В дальнейшем ожидается поддержка формата ASTC (RGB или RGBA) и режимов 4/5 RGBA для формата BC7 и 4bpp RGBA для PVRTC1.

Текстуры в формате basis занимают в 6-8 раз меньше видеопамяти и требует передачи примерно в два раза меньше данных, чем типовые текстуры на основе формата JPEG и на 10-25% меньше, чем текстуры в режиме RDO. Например, при размере JPEG-изображения в 891 Кб, а текстуры ETC1 в 1 Мб, размер данных в формате Basis составляет 469 Кб в режиме наивысшего качества. При размещении текстуры в видеопамяти, используемые в тестах текстуры в формате JPEG и PNG израсходовали 16 Мб памяти, в то время как для текстур в формате Basis потребовалось 2 Мб памяти в случае трансляции в BC1, PVRTC1 и ETC1, и 4 Мб в случае трансляции в BC7.

Процесс перевода существующих приложений на Basis Universal достаточно прост. Достаточно перекодировать имеющиеся текстуры или изображения в новый формат при помощи предоставляемой проектом утилиты "basisu", выбрав необходимый уровень качества. Далее в приложении перед кодом отрисовки нужно инициализировать перекодировщик basisu, который отвечает за трансляцию промежуточного формата в поддерживаемый текущим GPU формат. При этом изображения на всей цепочке обработки остаются сжатыми, в том числе загружаются в сжатом виде в GPU. Вместо упреждающего перекодирования изображения целиком, GPU выборочно декодирует только необходимые части изображения.

Поддерживается сохранение в одном файле неоднородных массивов текстур (cubemap), объёмных текстур, массивов текстур, уровней mipmap, последовательностей видео или произвольных отрывков текстур. Например, возможна упаковка в одном файле серии изображений для создания небольших видео или объединение нескольких текстур с использованием общей для всех изображений палитры и дедупликацией типовых шаблонов изображений. Реализация кодировщика Basis Universal поддерживает многопоточное кодирование с использованием OpenMP. Перекодировщик пока работает только в однопоточном режиме.

Дополнительно доступен декодировщик Basis Universal для браузеров, поставляемый в формате WebAssembly, который можно использовать в web-приложениях на базе WebGL. В конечном счёте, Google намерен добиться поддержи Basis Universal во всех основных браузерах и продвинуть его в качестве переносимого формата текстур для WebGL и будущей спецификации WebGPU, концептуально схожей с API Vulkan, Metal и Direct3D 12.

Отмечается, что возможность встраивания видео с его последующей обработкой только на стороне GPU делает Basis Universal интересным решением для создания динамических интерфейсов пользователя на WebAssembly и WebGL, в которых могут одновременно отражаться сотни небольших видео с минимальной нагрузкой на CPU. До появления возможности использования инструкций SIMD в WebAssembly при традиционных кодеках подобный уровень производительности пока недостижим, поэтому видео на основе текстур может использоваться в областях, где обычное видео неприменимо. В настоящее время готовится к публикации код с дополнительными оптимизациями для видео, включающий возможность использования I-кадров и P-кадров с поддержкой адаптивного заполнения (CR).

  1. Главная ссылка к новости (https://opensource.googleblog....)
  2. OpenNews: Представлен быстрый упаковщик текстур ETC2
  3. OpenNews: В MESA реализована поддержка сжатия текстур BPTC
  4. OpenNews: Google открыл код Seuratо, системы оптимизации 3D-сцен
  5. OpenNews: Компания Google представила новый алгоритм сжатия данных Brotli
  6. OpenNews: Компания Google открыла код Draco, библиотеки для эффективного сжатия 3D-графики
Лицензия: CC-BY
Тип: Интересно / К сведению
Ключевые слова: google, draco, 3d, texture
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (12) Ajax | 1 уровень | Линейный | Раскрыть всё | RSS
  • 1.1, Аноним (1), 12:23, 24/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    PVRTC это конечно хорошо (нет, все ненавидят pоwеrvr), но как это соотносится с S3TC? И чего не сравнивают с актуальным ASTC? Мне нравится формулировка "ожидается".
     
     
  • 2.8, Аноним (8), 20:51, 24/05/2019 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Актуальный это ETC1 или не?
     
     
  • 3.12, Stax (ok), 15:23, 25/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    ASTC вроде как самый актуальный
     

  • 1.3, Аноним (3), 16:10, 24/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Отмечается, что возможность встраивания видео с его последующей обработкой только на стороне GPU делает Basis Universal интересным решением

    Ну опять в команду затесались комбайнёры. Ну есть у вас универсальный формат для текстур ну оставьте его таким. Неет....

     
     
  • 2.4, Аноним (4), 19:12, 24/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Какой из текущих форматов универсальный?
     
     
  • 3.6, Аноним (6), 19:18, 24/05/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Крайний.
     

  • 1.5, Аноним (6), 19:17, 24/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Мало стандартов?
     
  • 1.7, Аноним (7), 20:01, 24/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +6 +/
    "Google намерен добиться поддержи Basis Universal во всех основных браузерах и продвинуть его в качестве переносимого формата текстур"
    чтобы потом была возможность отключать как с Андроид для хуавей
     
  • 1.9, Аноним (9), 22:39, 24/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >будущей спецификации WebGPU, концептуально схожей с API Vulkan, Metal и Direct3D 12.

    Они бы ещё WebUSB, WebHDD, WebUEFI, WebTEE и WebManagementEngine предложили.

     
     
  • 2.10, Аноним (10), 10:57, 25/05/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Они бы ещё WebUSB

    Ты анончик отстал: https://en.wikipedia.org/wiki/WebUSB

    А Basis годная вещь, игроразрабы одобряют.

     

  • 1.11, InuYasha (?), 11:24, 25/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    DDS уже не торт? хотя, там сжатие такое, что от вида текстур блевать охота. Вспоминаем квадратные носы в первом Скайриме. (да, я в курсе, что в ДДС куча видов сжатия).

    А в итоге что с этими форматами? Они предлагают сжатие в хранилище и разжатие на стороне ГПУ во время прекэша? Или ГПУ вообще будет разжимать прям вот во время отрисовки? o_O А как тогда шейдеры? Это нужна прям неимоверная заточенность под эти алгоритмы. Раньше-то - хоть в жпеге храни (если тебе за это по дыхалке не дадут) - а в видеопамяти всё равно RGBA во все поля.

     
  • 1.13, Аноним (-), 07:55, 31/05/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а чо не "год рар"?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру