Google och Binomial open source Basis Universal texturkomprimeringssystem

Google och Binomial öppnade källtexter Universell grund, en codec för effektiv texturkomprimering och ett tillhörande universellt ".basis"-filformat för att distribuera bild- och videobaserade texturer. Referensimplementeringskoden är skriven i C++ och levereras licensierad under Apache 2.0.

Basis Universal kompletterar tidigare publiceras Draco 3D datakomprimeringssystem och försöker lösa problemet med att tillhandahålla texturer för GPU:n. Fram till nu har utvecklare varit begränsade till att välja mellan lågnivåformat som uppnår hög prestanda men som är GPU-specifika och tar upp mycket diskutrymme, och andra format som uppnår storleksminskning men som inte kan konkurrera med GPU-texturer i prestanda.

Basis Universal-formatet låter dig uppnå prestanda hos inbyggda GPU-texturer, men ger en högre nivå av komprimering.
Basis är ett mellanformat som ger snabb omkodning av GPU-texturer till olika lågnivåformat för användning på både stationära system och mobila enheter före användning. För närvarande stöds formaten PVRTC1 (4bpp RGB), BC7 (6 RGB-läge), BC1-5, ETC1 och ETC2. Framtida stöd förväntas för ASTC-format (RGB eller RGBA) och 4/5 RGBA-lägen för BC7 och 4bpp RGBA för PVRTC1.

Google och Binomial open source Basis Universal texturkomprimeringssystem

Texturer i basformatet tar upp 6-8 gånger mindre videominne och kräver överföring av ungefär hälften så mycket data som vanliga texturer baserade på JPEG-formatet och 10-25 % mindre än texturer i RDO-läge. Till exempel, med en JPEG-bildstorlek på 891 KB och en ETC1-struktur på 1 MB, är datastorleken i Basisformatet 469 KB i högsta kvalitetsläget. Vid placering av texturer i videominne förbrukade JPEG- och PNG-texturer som användes i tester 16 MB minne, medan texturer i
Bas krävs 2 MB minne för översättning till BC1, PVRTC1 och ETC1, och 4 MB för översättning till BC7.

Google och Binomial open source Basis Universal texturkomprimeringssystem

Processen att migrera befintliga applikationer till Basis Universal är ganska enkel. Det räcker med att koda om befintliga texturer eller bilder till ett nytt format med hjälp av "basisu" -verktyget som tillhandahålls av projektet och välja önskad kvalitetsnivå. Därefter, i applikationen, innan renderingskoden, måste du initiera basisu-omkodaren, som är ansvarig för att översätta mellanformatet till det format som stöds av den aktuella GPU:n. Samtidigt förblir bilder genom hela bearbetningskedjan komprimerade, inklusive att de laddas i komprimerad form i GPU:n. Istället för att i förebyggande syfte omkoda hela bilden, avkodar GPU:n selektivt endast de nödvändiga delarna av bilden.

Det stöder att spara heterogena texturmatriser (kubkartor), volumetriska texturer, texturmatriser, mipmap-nivåer, videosekvenser eller godtyckliga texturfragment i en fil. Det är till exempel möjligt att packa en serie bilder i en fil för att skapa små videor, eller kombinera flera texturer med en gemensam palett för alla bilder och deduplicera typiska bildmallar. Implementeringen av Basis Universal encoder stöder flertrådig kodning med OpenMP. Omkodaren fungerar för närvarande endast i enkeltrådigt läge.

dessutom tillgängliga Basis Universalavkodare för webbläsare, levereras i WebAssembly-format, som kan användas i WebGL-baserade webbapplikationer. I slutändan avser Google att stödja Basis Universal i alla större webbläsare och marknadsföra det som ett bärbart texturformat för WebGL och en framtida specifikation WebGPU, konceptuellt liknar API:erna Vulkan, Metal och Direct3D 12.

Det noteras att möjligheten att bädda in video med efterföljande bearbetning endast på GPU-sidan gör Basis Universal till en intressant lösning för att skapa dynamiska användargränssnitt på WebAssembly och WebGL, som samtidigt kan visa hundratals små videor med minimal CPU-belastning. Tills SIMD-instruktioner kan användas i WebAssembly med traditionella codecs, är denna prestandanivå ännu inte uppnåbar, så texturbaserad video kan användas i områden där konventionell video inte är tillämplig. Kod med ytterligare optimeringar för video förbereds för närvarande för publicering, inklusive möjligheten att använda I-ramar och P-ramar med stöd för adaptiv stoppning (CR).

Källa: opennet.ru

Lägg en kommentar