Google och Binomial
Basis Universal kompletterar tidigare
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.
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.
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
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
Källa: opennet.ru