Google og Binomial open source Basis Universalt teksturkomprimeringssystem

Google og Binomial åbnet kildetekster Universel basis, et codec til effektiv teksturkomprimering og et tilhørende universelt ".basis" filformat til distribution af billed- og videobaserede teksturer. Referenceimplementeringskoden er skrevet i C++ og leveres licenseret under Apache 2.0.

Basis Universal supplerer tidligere offentliggjort Draco 3D datakomprimeringssystem og forsøger at løse problemet med at levere teksturer til GPU'en. Indtil nu har udviklere været begrænset til at vælge mellem formater på lavt niveau, der opnår høj ydeevne, men er GPU-specifikke og optager meget diskplads, og andre formater, der opnår størrelsesreduktion, men som ikke kan konkurrere med GPU-teksturer i ydeevne.

Basis Universal-formatet giver dig mulighed for at opnå ydeevnen af ​​native GPU-teksturer, men giver et højere niveau af komprimering.
Basis er et mellemformat, der giver hurtig omkodning af GPU-teksturer til forskellige lavniveau-formater til brug på både desktop-systemer og mobile enheder før brug. I øjeblikket understøttes formaterne PVRTC1 (4bpp RGB), BC7 (6 RGB-tilstand), BC1-5, ETC1 og ETC2. Fremtidig understøttelse forventes for ASTC-format (RGB eller RGBA) og 4/5 RGBA-tilstande for BC7 og 4bpp RGBA for PVRTC1.

Google og Binomial open source Basis Universalt teksturkomprimeringssystem

Teksturer i basisformatet optager 6-8 gange mindre videohukommelse og kræver overførsel af cirka halvt så meget data som typiske teksturer baseret på JPEG-formatet og 10-25 % mindre end teksturer i RDO-tilstand. For eksempel, med en JPEG-billedstørrelse på 891 KB og en ETC1-tekstur på 1 MB, er datastørrelsen i Basis-formatet 469 KB i den højeste kvalitetstilstand. Ved placering af teksturer i videohukommelsen forbrugte JPEG- og PNG-teksturer, der blev brugt i test, 16 MB hukommelse, mens teksturer i
Basis krævede 2 MB hukommelse til oversættelse til BC1, PVRTC1 og ETC1 og 4 MB for oversættelse til BC7.

Google og Binomial open source Basis Universalt teksturkomprimeringssystem

Processen med at migrere eksisterende applikationer til Basis Universal er ret enkel. Det er nok at omkode eksisterende teksturer eller billeder til et nyt format ved hjælp af værktøjet "basisu" leveret af projektet, ved at vælge det nødvendige kvalitetsniveau. Dernæst, i applikationen, før gengivelseskoden, skal du initialisere basisu-transkoderen, som er ansvarlig for at oversætte mellemformatet til det format, der understøttes af den aktuelle GPU. Samtidig forbliver billeder gennem hele behandlingskæden komprimerede, inklusive at blive indlæst i komprimeret form i GPU'en. I stedet for præventivt at omkode hele billedet, afkoder GPU'en selektivt kun de nødvendige dele af billedet.

Det understøtter lagring af heterogene teksturarrays (cubemaps), volumetriske teksturer, teksturarrays, mipmap-niveauer, videosekvenser eller vilkårlige teksturfragmenter i én fil. For eksempel er det muligt at pakke en række billeder i én fil for at skabe små videoer, eller kombinere flere teksturer ved hjælp af en fælles palette for alle billeder og deduplikering af typiske billedskabeloner. Basis Universal encoder-implementeringen understøtter multi-threaded-kodning ved hjælp af OpenMP. Transkoderen fungerer i øjeblikket kun i enkelttrådstilstand.

derudover ledig Basis Universal dekoder til browsere, leveret i WebAssembly format, som kan bruges i WebGL-baserede webapplikationer. I sidste ende har Google til hensigt at understøtte Basis Universal i alle større browsere og promovere det som et bærbart teksturformat til WebGL og en fremtidig specifikation WebGPU, konceptuelt ligner Vulkan, Metal og Direct3D 12 API'erne.

Det bemærkes, at muligheden for at indlejre video med dens efterfølgende behandling kun på GPU-siden gør Basis Universal til en interessant løsning til at skabe dynamiske brugergrænseflader på WebAssembly og WebGL, som samtidigt kan vise hundredvis af små videoer med minimal CPU-belastning. Indtil SIMD-instruktioner kan bruges i WebAssembly med traditionelle codecs, er dette niveau af ydeevne endnu ikke opnåeligt, så teksturbaseret video kan bruges i områder, hvor konventionel video ikke er anvendelig. Kode med yderligere optimeringer til video er i øjeblikket ved at blive klargjort til offentliggørelse, herunder muligheden for at bruge I-rammer og P-rammer med adaptiv polstring (CR) støtte.

Kilde: opennet.ru

Tilføj en kommentar