Google og Binomial åpen kildekode Basis Universalt teksturkomprimeringssystem

Google og Binomial åpnet kildetekster Universell basis, en kodek for effektiv teksturkomprimering og et tilhørende universelt ".basis"-filformat for distribusjon av bilde- og videobaserte teksturer. Referanseimplementeringskoden er skrevet i C++ og medfølgende lisensiert under Apache 2.0.

Basis Universal utfyller tidligere publisert Draco 3D datakomprimeringssystem og prøver å løse problemet med å levere teksturer til GPU. Frem til nå har utviklere vært begrenset til å velge mellom formater på lavt nivå som oppnår høy ytelse, men som er GPU-spesifikke og tar opp mye diskplass, og andre formater som oppnår størrelsesreduksjon, men som ikke kan konkurrere med GPU-teksturer i ytelse.

Basis Universal-formatet lar deg oppnå ytelsen til native GPU-teksturer, men gir et høyere komprimeringsnivå.
Basis er et mellomformat som gir rask omkoding av GPU-teksturer til ulike lavnivåformater for bruk på både stasjonære systemer og mobile enheter før bruk. For øyeblikket støttes PVRTC1 (4bpp RGB), BC7 (6 RGB-modus), BC1-5, ETC1 og ETC2 formater. Fremtidig støtte forventes for ASTC-format (RGB eller RGBA) og 4/5 RGBA-moduser for BC7 og 4bpp RGBA for PVRTC1.

Google og Binomial åpen kildekode Basis Universalt teksturkomprimeringssystem

Teksturer i basisformatet tar opp 6–8 ganger mindre videominne og krever overføring av omtrent halvparten så mye data som typiske teksturer basert på JPEG-formatet og 10–25 % mindre enn teksturer i RDO-modus. For eksempel, med en JPEG-bildestørrelse på 891 KB og en ETC1-tekstur på 1 MB, er datastørrelsen i Basis-formatet 469 KB i høyeste kvalitetsmodus. Ved plassering av teksturer i videominne forbrukte JPEG- og PNG-teksturer brukt i tester 16 MB minne, mens teksturer i
Grunnlaget kreves 2 MB minne for oversettelse til BC1, PVRTC1 og ETC1, og 4 MB for oversettelse til BC7.

Google og Binomial åpen kildekode Basis Universalt teksturkomprimeringssystem

Prosessen med å migrere eksisterende applikasjoner til Basis Universal er ganske enkel. Det er nok å omkode eksisterende teksturer eller bilder til et nytt format ved å bruke "basisu" -verktøyet levert av prosjektet, og velge det nødvendige kvalitetsnivået. Deretter, i applikasjonen, før gjengivelseskoden, må du initialisere basisu-transkoderen, som er ansvarlig for å oversette mellomformatet til formatet som støttes av gjeldende GPU. Samtidig forblir bilder gjennom hele prosesseringskjeden komprimerte, inkludert å lastes inn i komprimert form i GPUen. I stedet for på forhånd å omkode hele bildet, dekoder GPU selektivt bare de nødvendige delene av bildet.

Den støtter lagring av heterogene teksturmatriser (kubekart), volumetriske teksturer, teksturmatriser, mipmap-nivåer, videosekvenser eller vilkårlige teksturfragmenter i én fil. For eksempel er det mulig å pakke en serie bilder i én fil for å lage små videoer, eller kombinere flere teksturer ved å bruke en felles palett for alle bilder og deduplisere typiske bildemaler. Implementeringen av Basis Universal-koderen støtter flertrådskoding ved bruk av OpenMP. Transkoderen fungerer foreløpig bare i entrådsmodus.

i tillegg tilgjengelig Basis Universaldekoder for nettlesere, levert i WebAssembly-format, som kan brukes i WebGL-baserte webapplikasjoner. Til syvende og sist har Google til hensikt å støtte Basis Universal i alle større nettlesere og markedsføre det som et bærbart teksturformat for WebGL og en fremtidig spesifikasjon WebGPU, konseptuelt lik APIene Vulkan, Metal og Direct3D 12.

Det bemerkes at muligheten til å bygge inn video med påfølgende behandling kun på GPU-siden gjør Basis Universal til en interessant løsning for å lage dynamiske brukergrensesnitt på WebAssembly og WebGL, som samtidig kan vise hundrevis av små videoer med minimal CPU-belastning. Inntil SIMD-instruksjoner kan brukes i WebAssembly med tradisjonelle kodeker, er dette ytelsesnivået ennå ikke oppnåelig, så teksturbasert video kan brukes i områder der konvensjonell video ikke er aktuelt. Kode med ekstra optimaliseringer for video forberedes for øyeblikket for publisering, inkludert muligheten til å bruke I-rammer og P-rammer med støtte for adaptiv polstring (CR).

Kilde: opennet.ru

Legg til en kommentar