Google и Binomial с отворен код База Универсална система за компресиране на текстури

Google и бином отвори програмен код Универсална основа, кодек за ефективно компресиране на текстури и свързан универсален файлов формат ".basis" за разпространение на базирани на изображения и видео текстури. Референтният код за внедряване е написан на C++ и предоставени лицензиран под Apache 2.0.

Basis Universal допълва предишното публикувани Draco 3D система за компресиране на данни и се опитва да реши проблема с доставянето на текстури за 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.

Google и Binomial с отворен код База Универсална система за компресиране на текстури

Текстурите в основния формат заемат 6-8 пъти по-малко видео памет и изискват прехвърляне на приблизително половината от данните, отколкото типичните текстури, базирани на JPEG формат и 10-25% по-малко от текстурите в режим RDO. Например, с размер на JPEG изображение от 891 KB и ETC1 текстура от 1 MB, размерът на данните във формат Basis е 469 KB в режим на най-високо качество. При поставяне на текстури във видео паметта, JPEG и PNG текстурите, използвани в тестовете, изразходват 16 MB памет, докато текстурите в
Основата изисква 2 MB памет за превод към BC1, PVRTC1 и ETC1 и 4 MB за превод към BC7.

Google и Binomial с отворен код База Универсална система за компресиране на текстури

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

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

Освен това на разположение Basis Универсален декодер за браузъри, доставен във формат WebAssembly, който може да се използва в базирани на WebGL уеб приложения. В крайна сметка Google възнамерява да поддържа Basis Universal във всички основни браузъри и да го рекламира като преносим текстурен формат за WebGL и бъдеща спецификация WebGPU, концептуално подобен на API на Vulkan, Metal и Direct3D 12.

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

Източник: opennet.ru

Добавяне на нов коментар