Google a Binomial open source Basis Univerzální systém komprese textur

Google a Binomial otevřeno zdrojové texty Univerzální základ, kodek pro účinnou kompresi textur a přidružený univerzální souborový formát ".basis" pro distribuci textur založených na obrázcích a videu. Referenční implementační kód je napsán v C++ a dodáváno licencováno pod Apache 2.0.

Basis Universal doplňuje dříve zveřejněno Draco 3D systém komprese dat a snaží se vyřešit problém s dodáním textur pro GPU. Až dosud se vývojáři omezovali na výběr mezi nízkoúrovňovými formáty, které dosahují vysokého výkonu, ale jsou specifické pro GPU a zabírají hodně místa na disku, a dalšími formáty, které dosahují zmenšení velikosti, ale nemohou konkurovat texturám GPU ve výkonu.

Formát Basis Universal umožňuje dosáhnout výkonu nativních textur GPU, ale poskytuje vyšší úroveň komprese.
Basis je střední formát, který před použitím poskytuje rychlé překódování textur GPU do různých nízkoúrovňových formátů pro použití na stolních systémech i mobilních zařízeních. Aktuálně jsou podporovány formáty PVRTC1 (4bpp RGB), BC7 (režim 6 RGB), BC1-5, ETC1 a ETC2. Očekává se budoucí podpora formátu ASTC (RGB nebo RGBA) a režimů 4/5 RGBA pro BC7 a 4bpp RGBA pro PVRTC1.

Google a Binomial open source Basis Univerzální systém komprese textur

Textury v základním formátu zabírají 6–8krát méně video paměti a vyžadují přenos přibližně poloviny dat než typické textury založené na formátu JPEG a o 10–25 % méně než textury v režimu RDO. Například s velikostí obrázku JPEG 891 KB a texturou ETC1 1 MB je velikost dat ve formátu Basis 469 KB v režimu nejvyšší kvality. Při umísťování textur do video paměti spotřebovaly textury JPEG a PNG použité v testech 16 MB paměti, zatímco textury v
Základ vyžaduje 2 MB paměti pro překlad do BC1, PVRTC1 a ETC1 a 4 MB pro překlad do BC7.

Google a Binomial open source Basis Univerzální systém komprese textur

Proces migrace stávajících aplikací na Basis Universal je poměrně jednoduchý. Stačí překódovat stávající textury nebo obrázky do nového formátu pomocí nástroje „basisu“, který poskytuje projekt, a vybrat požadovanou úroveň kvality. Dále v aplikaci, před vykreslovacím kódem, musíte inicializovat základový transkodér, který je zodpovědný za překlad meziformátu do formátu podporovaného aktuálním GPU. Současně zůstávají obrázky v celém řetězci zpracování komprimované, včetně načítání v komprimované podobě do GPU. Namísto preventivního překódování celého obrazu GPU selektivně dekóduje pouze nezbytné části obrazu.

Podporuje ukládání heterogenních polí textur (cubemap), objemových textur, polí textur, úrovní mipmap, videosekvencí nebo libovolných fragmentů textur do jednoho souboru. Například je možné zabalit sérii obrázků do jednoho souboru a vytvořit tak malá videa nebo zkombinovat několik textur pomocí společné palety pro všechny obrázky a deduplikovat typické obrázkové šablony. Implementace kodéru Basis Universal podporuje vícevláknové kódování pomocí OpenMP. Transkodér v současné době funguje pouze v režimu s jedním vláknem.

Dále k dispozici Základ Univerzální dekodér pro prohlížeče, dodávaný ve formátu WebAssembly, který lze použít ve webových aplikacích založených na WebGL. Nakonec má Google v úmyslu podporovat Basis Universal ve všech hlavních prohlížečích a propagovat jej jako přenosný formát textur pro WebGL a budoucí specifikaci. WebGPU, koncepčně podobný Vulkan, Metal a Direct3D 12 API.

Je třeba poznamenat, že možnost vložení videa s jeho následným zpracováním pouze na straně GPU dělá z Basis Universal zajímavé řešení pro vytváření dynamických uživatelských rozhraní na WebAssembly a WebGL, které dokáže současně zobrazit stovky malých videí s minimální zátěží CPU. Dokud nebude možné použít instrukce SIMD ve WebAssembly s tradičními kodeky, není tato úroveň výkonu ještě dosažitelná, takže video založené na texturách lze použít v oblastech, kde běžné video nelze použít. Kód s dodatečnými optimalizacemi pro video se aktuálně připravuje ke zveřejnění, včetně možnosti použití I-snímky a P-snímky s podporou adaptivního polstrování (CR).

Zdroj: opennet.ru

Přidat komentář