URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 117436
[ Назад ]

Исходное сообщение
"Google и Binomial открыли код системы сжатия текстур Basis U..."

Отправлено opennews , 24-Май-19 12:23 
Компании Google и Binomial открыли (https://opensource.googleblog.com/2019/05/google-and-binomia... исходные тексты Basis Universal (https://github.com/binomialLLC/basis_universal), кодека для эффективного сжатия текстур и связанного с ним универсального файлового формата ".basis" для распространения текстур  на базе изображений и видео.  Код эталонной реализации написан на языке С++ и поставляется (https://github.com/binomialLLC/basis_universal) под лицензией Apache 2.0.

Basis Universal дополняет ранее опубликованную (https://www.opennet.me/opennews/art.shtml?num=45853) систему сжатия 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. Перекодировщик пока работает только в однопоточном режиме.

Дополнительно доступен (https://github.com/BinomialLLC/basis_universal/blob/master/w... декодировщик Basis Universal для браузеров, поставляемый в формате WebAssembly, который можно использовать в web-приложениях на базе WebGL. В конечном счёте, Google намерен добиться поддержи Basis Universal во всех основных браузерах и продвинуть его в качестве переносимого формата текстур для WebGL и будущей спецификации WebGPU (https://en.wikipedia.org/wiki/WebGPU), концептуально схожей с API Vulkan, Metal и Direct3D 12.


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

URL: https://opensource.googleblog.com/2019/05/google-and-binomia...
Новость: https://www.opennet.me/opennews/art.shtml?num=50732


Содержание

Сообщения в этом обсуждении
"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 12:23 
PVRTC это конечно хорошо (нет, все ненавидят pоwеrvr), но как это соотносится с S3TC? И чего не сравнивают с актуальным ASTC? Мне нравится формулировка "ожидается".

"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 20:51 
Актуальный это ETC1 или не?

"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Stax , 25-Май-19 15:23 
ASTC вроде как самый актуальный

"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 16:10 
> Отмечается, что возможность встраивания видео с его последующей обработкой только на стороне GPU делает Basis Universal интересным решением

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


"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 19:12 
Какой из текущих форматов универсальный?

"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 19:18 
Крайний.

"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 19:17 
Мало стандартов?

"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 20:01 
"Google намерен добиться поддержи Basis Universal во всех основных браузерах и продвинуть его в качестве переносимого формата текстур"
чтобы потом была возможность отключать как с Андроид для хуавей

"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 24-Май-19 22:39 
>будущей спецификации WebGPU, концептуально схожей с API Vulkan, Metal и Direct3D 12.

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


"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 25-Май-19 10:57 
> Они бы ещё WebUSB

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

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


"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено InuYasha , 25-Май-19 11:24 
DDS уже не торт? хотя, там сжатие такое, что от вида текстур блевать охота. Вспоминаем квадратные носы в первом Скайриме. (да, я в курсе, что в ДДС куча видов сжатия).

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


"Google и Binomial открыли код системы сжатия текстур Basis U..."
Отправлено Аноним , 31-Май-19 07:55 
а чо не "год рар"?