Google ja Binomial avasid tekstuuride tihendussüsteemi Basis Universal koodi

Google ja Binomial avaldasid allika kood Basis Universal, koodekse, mis võimaldab tõhusat tekstuuride tihendamist ja seotud universaalset failivormingut „.basis” piltide ja videote põhjal tekstuuride levitamiseks. Viidatud rakenduse kood on kirjutatud C++ keeles ja on saadaval ainekood on litsentsitud Apache 2.0 all.

Basis Universal täiendab varem avaldatud 3D-andmete tihendamise süsteemi Draco ning püüab lahendada teksti tarnimise probleemi GPU-de jaoks. Siiani olid arendajad piiratud valikuga kas madala taseme formaatide vahel, mis võimaldavad saavutada kõrget jõudlust, kuid on GPU-spetsiifilised ja võtavad palju ketta ruumi, või muude formaatide vahel, mis võimaldavad suuruse vähenemist, kuid ei suuda GPU tekstuuride jõudlust võistelda.

Formaadi Basis Universal abil on võimalik saavutada GPU tekstuuride sisseehitatud tasemele vastav jõudlus, kuid pakub kõrgemat tihendustaset.
Basis on vaheformaat, mis võimaldab kiiresti kodeerida erinevatesse GPU madalama taseme tekstuuriformaatidesse, mida kasutatakse nii lauaarvutites kui ka mobiilseadmetes. Praegu toetatakse konverteerimist formaatidesse PVRTC1 (4bpp RGB), BC7 (režiim 6 RGB), BC1-5, ETC1 ja ETC2. Edaspidi oodatakse ka ASTC (RGB või RGBA) formaadi ja 4/5 RGBA režiimide toetust BC7 formaadis ning 4bpp RGBA PVRTC1 formaadis.

Google ja Binomial avasid tekstuuride tihendussüsteemi Basis Universal koodi

Basis formaadis tekstuurid võtavad 6-8 korda vähem video mälu ja vajavad edastamiseks umbes kaks korda vähem andmeid kui tüüpilised tekstuurid, mis põhinevad JPEG formaadil, ja 10-25% vähem kui RDO režiimis tekstuurid. Näiteks JPEG pildi suurusega 891 Kb ja tekstuuriga ETC1 suuruses 1 Mb, Basis formaadi andmete suurus on 469 Kb kõrgeima kvaliteedi režiimis. Tekstuuride paigutamisel video mällu, kasutasid testitud JPEG ja PNG formaadis tekstuurid 16 Mb mälu, samas kui Basis formaadi tekstuuride jaoks oli vaja 2 Mb mälu, kui see konverteeriti BC1, PVRTC1 ja ETC1 formaati ning 4 Mb, kui see konverteeriti BC7 formaati.
Basis formaadi puhul oli mälu vajadus 2 Mb, kui see konverteeriti BC1, PVRTC1 ja ETC1 formaati, ning 4 Mb BC7 formaadi puhul.

Google ja Binomial avasid tekstuuride tihendussüsteemi Basis Universal koodi

Oexisting rakenduste üleviimise protsess Basis Universali peale on piisavalt lihtne. Ainsaks, mida on vaja teha, on olemasolevate tekstuuride või piltide ümberkodeerimine uude formaati projekti poolt pakutava tööriista "basisu" abil, valides vajaliku kvaliteeditaseme. Järgmiseks tuleb rakenduses enne joonistamiskoodi algatada basisu dekooder, mis vastutab vaheformaadi tõlkimise eest sellele GPU-le toetatud formaati. Sel ajal jäävad kõik pildid töötlemise ajal kokku surutuks, sealhulgas laetakse need GPU-sse kokkusurutud kujul. Kogu pildi ettevee ettekoodeerimise asemel dekoodib GPU valikuliselt ainult vajalikud osad pildist.

Toetatakse mitmekesiste tekstuurimassiivide (cubemap), mahuliste tekstuuride, tekstuurimassiivide, mipmap-taseme, videoseeriate või suvaliste tekstuurilõikude salvestamist ühte faili. Näiteks on võimalik ühendada ühte faili pildiseeria väikeste videote loomiseks või liita mitmeid tekstuure, kasutades kõigi piltide jaoks ühist paletti ja dedupeeritud tüüpilisi vorme. Basis Universal kodeerija rakendamine toetab mitme haru kodeerimist OpenMP abil. Praegu töötab dekodeerija ainult ühes teemas.

Lisaks saadaval Basis Universal dekodeerija brauseritele, mis on saadaval WebAssembly formaadis, mida saab kasutada WebGL-põhistes veebirakendustes. Lõpuks kavatseb Google saavutada Basis Universali toetamist kõigis peamistes brauserites ja edendada seda kui kergesti ülekantavat tekstuuriformaati WebGL-ile ja tulevikule spetsifikatsioonile. WebGPU, mis on kontseptsiooniliselt sarnane Vulkan, Metal ja Direct3D 12 API-dega.

Tähtsuseteks on, et video sisestamise ja sellele järgnev GPU-poolne töötlemine muudab Basis Universal huvitavaks lahenduseks dünaamiliste kasutajaliideste loomiseks WebAssembly ja WebGL-is, kus võib samaaegselt peegelduda sadu väikeseid videoid minimaalse koormusega CPU-le. Enne SIMD juhiste kasutamise võimalust WebAssembly-s ei ole traditsiooniliste koodekite puhul sellist jõudlust veel saavutatud, seega saavad tekstuuride põhised videod olla kasutusel valdkondades, kus tavalisest videost ei piisa. Praegu on avaldamiseks ette valmistamisel kood, mis sisaldab täiendavaid video optimeerimisi, sealhulgas võimalust kasutada I-kaadreid ja P-kaadreid adaptatiivse täitmise toega (CR).

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster