Google og Binomial nettekster , en codec til effektiv komprimering af teksturer og det tilknyttede universelle filformat „.basis“ til distribution af teksturer baseret på billeder og video. Referenceimplementeringen er skrevet i C++ og er under Apache 2.0-licensen.
Basis Universal supplerer tidligere system til komprimering af 3D-data Draco og forsøger at løse problemet med levering af teksturer til GPU. Hidtil har udviklere været begrænset til valget mellem lav-niveau formater, der muliggør høj ydeevne, men er specifikke for GPU og optager meget diskplads, og andre formater, der tilbyder størrelse reduktion, men ikke kan konkurrere med GPU-teksturer på ydeevne.
Basis Universal formatet muliggør ydeevne på niveau med native GPU teksturer, men giver en højere komprimeringsgrad.
Basis er et mellemliggende format, der giver hurtig omkodning til forskellige lav-niveau GPU teksturformater, der anvendes både på desktop systemer og mobile enheder. I øjeblikket understøttes oversættelse til formaterne PVRTC1 (4bpp RGB), BC7 (tilstand 6 RGB), BC1-5, ETC1, og ETC2. I fremtiden forventes det, at formatet ASTC (RGB eller RGBA) og tilstande 4/5 RGBA for formatet BC7 og 4bpp RGBA for PVRTC1 vil blive understøttet.
Teksturer i basis formatet kræver 6-8 gange mindre videohukommelse og kræver en overførsel af omtrent det dobbelte af data sammenlignet med standard teksturer baseret på JPEG og 10-25% mindre end teksturer i RDO-tilstand. For eksempel, med en JPEG-billedstørrelse på 891 Kb, og en ETC1 tekstur i 1 Mb, er datastørrelsen i Basis formatet 469 Kb i højeste kvalitet. Når teksturen placeres i videohukommelsen, krævede de teksturer i JPEG og PNG, der blev brugt i testene, 16 Mb hukommelse, mens teksturer i formatet
Basis krævede 2 Mb hukommelse ved oversættelse til BC1, PVRTC1 og ETC1, og 4 Mb ved oversættelse til BC7.
Processen med at overføre eksisterende applikationer til Basis Universal er ret enkel. Det er tilstrækkeligt at omkode de eksisterende teksturer eller billeder til et nyt format ved hjælp af det værktøj, der leveres af projektet, «basisu», og vælge det ønskede kvalitetsniveau. Derefter i applikationen, før renderingskoden, skal basisu-omkoderen initialiseres, som er ansvarlig for at oversætte det mellemliggende format til det format, som den nuværende GPU understøtter. Billederne forbliver komprimerede gennem hele behandlingskæden, herunder at de indlæses i komprimeret form i GPU'en. I stedet for at omkode billedet på forhånd for fuldt ud, dekoder GPU'en selektivt kun de nødvendige dele af billedet.
Det understøttes at gemme heterogene teksturarrays (cubemap), volumetriske teksturer, teksturarrays, mipmap-niveauer, video-sekvenser eller vilkårlige tekstureafsnit i én fil. For eksempel er det muligt at pakke en række billeder i én fil for at skabe små videoer eller at kombinere flere teksturer ved at bruge en fælles farvepalet og deduplikerede typiske billedmønstre. Implementeringen af Basis Universal-koderen understøtter flertrådet kodning ved hjælp af OpenMP. Omkoderen fungerer indtil videre kun i en enkelt tråd.
Yderligere Basis Universal-dekoderen til browsere leveres i WebAssembly-format, som kan bruges i webapplikationer baseret på WebGL. I sidste ende ønsker Google at opnå understøttelse af Basis Universal i alle større browsere og fremme det som et bærbart teksturformat til WebGL og den fremtidige specifikation , som konceptuelt ligner API Vulkan, Metal og Direct3D 12.
Det bemærkes, at muligheden for at indlejre video med efterfølgende behandling kun på GPU-siden gør Basis Universal til en interessant løsning for at skabe dynamiske brugergrænseflader i WebAssembly og WebGL, hvor hundredvis af små videoer kan afspejles samtidigt med minimal belastning af CPU'en. Indtil muligheden for at bruge SIMD-instruktioner i WebAssembly blev en realitet, var et sådant præstationsniveau med traditionelle kodeker endnu ikke opnåeligt, hvorfor video baseret på teksturer kan anvendes i områder, hvor almindelig video ikke kan bruges. Der er i øjeblikket et kodeprojekt under forberedelse til offentliggørelse med yderligere optimeringer til video, herunder muligheden for at bruge med støtte til adaptiv udfyldning (CR).
Kilde: opennet.ru
