Google a Binomial open source Basis Univerzálny systém kompresie textúr

Google a Binomial otvorené zdrojové texty Univerzálny základ, kodek pre efektívnu kompresiu textúr a pridružený univerzálny formát súboru ".basis" na distribúciu textúr na báze obrázkov a videa. Referenčný implementačný kód je napísaný v C++ a dodávané licencovaný pod Apache 2.0.

Basis Universal dopĺňa predchádzajúce publikovaný Draco 3D systém kompresie dát a snaží sa vyriešiť problém s dodávaním textúr pre GPU. Doteraz sa vývojári obmedzovali na výber medzi nízkoúrovňovými formátmi, ktoré dosahujú vysoký výkon, ale sú špecifické pre GPU a zaberajú veľa miesta na disku, a inými formátmi, ktoré dosahujú zmenšenie veľkosti, ale vo výkone nemôžu konkurovať textúram GPU.

Formát Basis Universal vám umožňuje dosiahnuť výkon natívnych textúr GPU, ale poskytuje vyššiu úroveň kompresie.
Basis je prechodný formát, ktorý poskytuje rýchle prekódovanie textúr GPU do rôznych nízkoúrovňových formátov na použitie v stolných systémoch aj mobilných zariadeniach pred použitím. V súčasnosti sú podporované formáty PVRTC1 (4bpp RGB), BC7 (režim 6 RGB), BC1-5, ETC1 a ETC2. Budúca podpora sa očakáva pre formát ASTC (RGB alebo RGBA) a režimy 4/5 RGBA pre BC7 a 4bpp RGBA pre PVRTC1.

Google a Binomial open source Basis Univerzálny systém kompresie textúr

Textúry v základnom formáte zaberajú 6-8-krát menej video pamäte a vyžadujú prenos približne o polovicu menej údajov ako typické textúry založené na formáte JPEG a o 10-25 % menej ako textúry v režime RDO. Napríklad pri veľkosti obrázku JPEG 891 KB a textúre ETC1 1 MB je veľkosť dát vo formáte Basis 469 KB v režime najvyššej kvality. Pri umiestňovaní textúr do video pamäte spotrebovali textúry JPEG a PNG použité v testoch 16 MB pamäte, zatiaľ čo textúry v
Základ vyžaduje 2 MB pamäte na preklad do BC1, PVRTC1 a ETC1 a 4 MB na preklad do BC7.

Google a Binomial open source Basis Univerzálny systém kompresie textúr

Proces migrácie existujúcich aplikácií na Basis Universal je pomerne jednoduchý. Stačí prekódovať existujúce textúry alebo obrázky do nového formátu pomocou nástroja „basisu“, ktorý poskytuje projekt, výberom požadovanej úrovne kvality. Ďalej v aplikácii musíte pred vykresľovacím kódom inicializovať základný transkodér, ktorý je zodpovedný za preklad medziformátu do formátu podporovaného aktuálnym GPU. Súčasne zostávajú obrázky v celom reťazci spracovania komprimované, vrátane načítania v komprimovanej forme do GPU. Namiesto preventívneho prekódovania celého obrazu GPU selektívne dekóduje len potrebné časti obrazu.

Podporuje ukladanie heterogénnych polí textúr (cubemaps), volumetrických textúr, polí textúr, úrovní mipmap, videosekvencií alebo ľubovoľných fragmentov textúr do jedného súboru. Napríklad je možné zbaliť sériu obrázkov do jedného súboru a vytvoriť tak malé videá alebo skombinovať niekoľko textúr pomocou spoločnej palety pre všetky obrázky a deduplikovať typické šablóny obrázkov. Implementácia kódovača Basis Universal podporuje viacvláknové kódovanie pomocou OpenMP. Transkodér momentálne funguje iba v režime s jedným vláknom.

ďalej k dispozícii Základ Univerzálny dekodér pre prehliadače, dodávaný vo formáte WebAssembly, ktorý možno použiť vo webových aplikáciách založených na WebGL. V konečnom dôsledku má Google v úmysle podporovať Basis Universal vo všetkých hlavných prehliadačoch a propagovať ho ako prenosný formát textúr pre WebGL a budúcu špecifikáciu. WebGPU, koncepčne podobné API Vulkan, Metal a Direct3D 12.

Je potrebné poznamenať, že možnosť vloženia videa s jeho následným spracovaním iba na strane GPU robí z Basis Universal zaujímavé riešenie pre vytváranie dynamických používateľských rozhraní na WebAssembly a WebGL, ktoré dokáže súčasne zobraziť stovky malých videí s minimálnym zaťažením CPU. Kým nebude možné použiť inštrukcie SIMD vo WebAssembly s tradičnými kodekami, táto úroveň výkonu ešte nie je dosiahnuteľná, takže video založené na textúre možno použiť v oblastiach, kde nie je možné použiť konvenčné video. Kód s dodatočnými optimalizáciami pre video sa momentálne pripravuje na zverejnenie, vrátane možnosti použitia I-rámy a P-rámy s podporou adaptívneho polstrovania (CR).

Zdroj: opennet.ru

Pridať komentár