Google en binomiale iepen boarne Basis Universeel tekstuerkompresjesysteem

Google en binomiaal iepene boarne teksten Universele basis, in codec foar effisjinte tekstuer kompresje en in assosjearre universele ".basis" bestânsformaat foar it fersprieden fan ôfbylding- en fideo-basearre tekstueren. De referinsje ymplemintaasje koade is skreaun yn C ++ en levere lisinsje ûnder Apache 2.0.

Basis Universal komplementearret earder publisearre Draco 3D data kompresje systeem en besiket te lossen it probleem mei it leverjen fan tekstueren foar de GPU. Oant no ta binne ûntwikkelders beheind ta it kiezen tusken formaten op leech nivo dy't hege prestaasjes berikke, mar GPU-spesifyk binne en in protte skiifromte opnimme, en oare formaten dy't grutte reduksje berikke, mar kinne net konkurrearje mei GPU-tekstueren yn prestaasjes.

It Basis Universal-formaat lit jo de prestaasjes fan native GPU-tekstueren berikke, mar leveret in heger nivo fan kompresje.
Basis is in tuskenformaat dat rappe transkodearjen fan GPU-tekstueren leveret nei ferskate formaten op leech nivo foar gebrûk op sawol buroblêdsystemen as mobile apparaten foar gebrûk. Op it stuit stipe binne PVRTC1 (4bpp RGB), BC7 (6 RGB modus), BC1-5, ETC1, en ETC2 formaten. Takomstige stipe wurdt ferwachte foar ASTC-formaat (RGB of RGBA) en 4/5 RGBA-modi foar BC7 en 4bpp RGBA foar PVRTC1.

Google en binomiale iepen boarne Basis Universeel tekstuerkompresjesysteem

Tekstueren yn it basisformaat nimme 6-8 kear minder fideoûnthâld op en fereaskje it oerdragen fan sawat de helte safolle gegevens as typyske tekstueren basearre op it JPEG-formaat en 10-25% minder dan tekstueren yn RDO-modus. Bygelyks, mei in JPEG-ôfbyldingsgrutte fan 891 KB en in ETC1-tekstuer fan 1 MB, is de gegevensgrutte yn it Basisformaat 469 KB yn 'e modus fan heechste kwaliteit. By it pleatsen fan tekstueren yn fideoûnthâld, konsumeare JPEG- en PNG-tekstueren brûkt yn tests 16 MB ûnthâld, wylst tekstueren yn
Basis fereaske 2 MB ûnthâld foar oersetting nei BC1, PVRTC1 en ETC1, en 4 MB foar oersetting nei BC7.

Google en binomiale iepen boarne Basis Universeel tekstuerkompresjesysteem

It proses fan it migrearjen fan besteande applikaasjes nei Basis Universal is frij ienfâldich. It is genôch om besteande tekstueren of ôfbyldings opnij te kodearjen yn in nij formaat mei it hulpprogramma "basisu" oanbean troch it projekt, en selektearje it fereaske kwaliteitsnivo. Folgjende, yn 'e applikaasje, foardat de renderingskoade, moatte jo de basis transcoder inisjalisearje, dy't ferantwurdlik is foar it oersetten fan it tuskenformaat yn it formaat dat wurdt stipe troch de hjoeddeistige GPU. Tagelyk bliuwe ôfbyldings yn 'e heule ferwurkingsketen komprimearre, ynklusyf it laden yn komprimearre foarm yn' e GPU. Ynstee fan pre-emptive transcoding de hiele ôfbylding, de GPU selektyf dekodearret allinnich de nedige dielen fan it byld.

It stipet it bewarjen fan heterogene tekstuer-arrays (cubemaps), volumetryske tekstueren, tekstuer-arrays, mipmap-nivo's, fideosekwinsjes of willekeurige tekstuerfragminten yn ien bestân. It is bygelyks mooglik om in searje ôfbyldings yn ien bestân te pakken om lytse fideo's te meitsjen, of ferskate tekstueren te kombinearjen mei in mienskiplik palet foar alle ôfbyldings en typyske ôfbyldingssjabloanen te deduplikearjen. De ymplemintaasje fan Basis Universele encoder stipet kodearring mei meardere triedden mei OpenMP. De transcoder wurket op it stuit allinich yn single-threaded modus.

Dêrneist beskikber Basis Universele dekoder foar browsers, levere yn WebAssembly-formaat, dat kin brûkt wurde yn WebGL-basearre webapplikaasjes. Uteinlik is Google fan doel Basis Universal te stypjen yn alle grutte browsers en it te befoarderjen as in draachber tekstuerformaat foar WebGL en in takomstige spesifikaasje WebGPU, dat konseptueel fergelykber is mei de Vulkan, Metal en Direct3D 12 API's.

It wurdt opmurken dat de mooglikheid om ynbêde fideo mei syn folgjende ferwurking allinnich op 'e GPU kant makket Basis Universal in nijsgjirrige oplossing foar it meitsjen fan dynamyske brûkersynterfaces op WebAssembly en WebGL, dat kin tagelyk werjaan hûnderten lytse fideos mei minimale CPU load. Oant SIMD-ynstruksjes kinne brûkt wurde yn WebAssembly mei tradisjonele codecs, is dit nivo fan prestaasjes noch net te berikken, sadat tekstuer-basearre fideo kin brûkt wurde yn gebieten dêr't konvinsjonele fideo net fan tapassing is. Koade mei ekstra optimisaasjes foar fideo wurdt op it stuit taret foar publikaasje, ynklusyf de mooglikheid om te brûken I-frames en P-frames mei adaptive padding (CR) stipe.

Boarne: opennet.ru

Add a comment