Google ir Binomial atviro kodo Basis Universali tekstūrų suspaudimo sistema

„Google“ ir „Binomial“. atidaryta šaltinių tekstai Visuotinis pagrindas, efektyviam tekstūrų glaudinimo kodekas ir susijęs universalus „.basis“ failo formatas, skirtas vaizdų ir vaizdo įrašų tekstūroms platinti. Nuorodos įgyvendinimo kodas parašytas C++ ir tiekiama licencijuota pagal Apache 2.0.

Basis Universal papildė anksčiau paskelbta Draco 3D duomenų glaudinimo sistema ir bando išspręsti problemą, susijusią su tekstūrų tiekimu GPU. Iki šiol kūrėjai apsiribodavo pasirinkimu tarp žemo lygio formatų, kurie pasiekia aukštą našumą, tačiau yra būdingi GPU ir užima daug vietos diske, ir kitus formatus, kurie sumažina dydį, bet negali konkuruoti su GPU tekstūromis.

„Basis Universal“ formatas leidžia pasiekti vietinių GPU tekstūrų našumą, tačiau užtikrina aukštesnį glaudinimo lygį.
„Basis“ yra tarpinis formatas, užtikrinantis greitą GPU tekstūrų perkodavimą į įvairius žemo lygio formatus, skirtus naudoti tiek stalinių kompiuterių sistemose, tiek mobiliuosiuose įrenginiuose prieš naudojant. Šiuo metu palaikomi PVRTC1 (4 bpp RGB), BC7 (6 RGB režimas), BC1-5, ETC1 ir ETC2 formatai. Tikimasi, kad ateityje palaikys ASTC formatą (RGB arba RGBA) ir 4/5 RGBA režimus, skirtus BC7, ir 4 bpp RGBA, skirtą PVRTC1.

Google ir Binomial atviro kodo Basis Universali tekstūrų suspaudimo sistema

Pagrindinio formato tekstūros užima 6–8 kartus mažiau vaizdo atminties ir reikalauja maždaug perpus mažiau duomenų nei įprastoms JPEG formato tekstūroms ir 10–25 % mažiau nei tekstūroms RDO režimu. Pavyzdžiui, kai JPEG vaizdo dydis yra 891 KB, o ETC1 tekstūra yra 1 MB, duomenų dydis Basis formatu yra 469 KB aukščiausios kokybės režimu. Dedant tekstūras į vaizdo atmintį, testuose naudotos JPEG ir PNG tekstūros sunaudojo 16 MB atminties, o tekstūros
Pagrindas reikalingas 2 MB atminties vertimui į BC1, PVRTC1 ir ETC1 ir 4 MB verčiant į BC7.

Google ir Binomial atviro kodo Basis Universali tekstūrų suspaudimo sistema

Esamų programų perkėlimo į Basis Universal procesas yra gana paprastas. Pakanka esamas tekstūras ar vaizdus perkoduoti į naują formatą naudojant projekto teikiamą „basisu“ įrankį, pasirenkant reikiamą kokybės lygį. Tada programoje, prieš pateikiant kodą, reikia inicijuoti baseu transkoderį, kuris yra atsakingas už tarpinio formato vertimą į dabartinio GPU palaikomą formatą. Tuo pačiu metu vaizdai visoje apdorojimo grandinėje išlieka suspausti, įskaitant suglaudintą įkėlimą į GPU. Užuot iš anksto perkodavęs visą vaizdą, GPU selektyviai iššifruoja tik būtinas vaizdo dalis.

Tai palaiko nevienalyčių tekstūrų masyvų (kubinių schemų), tūrinių tekstūrų, tekstūrų masyvų, mipmap lygių, vaizdo įrašų sekų ar savavališkų tekstūrų fragmentų išsaugojimą viename faile. Pavyzdžiui, galima supakuoti vaizdų serijas į vieną failą, kad būtų sukurti maži vaizdo įrašai, arba sujungti kelias tekstūras, naudojant bendrą visų vaizdų paletę ir panaikinant tipiškų vaizdų šablonų kopijas. „Basis Universal“ kodavimo priemonė palaiko kelių gijų kodavimą naudojant OpenMP. Šiuo metu transkoderis veikia tik vienos gijos režimu.

Be prieinama Pagrindas Universalus naršyklėms skirtas dekoderis, pateikiamas WebAssembly formatu, kurį galima naudoti WebGL pagrįstose žiniatinklio programose. Galiausiai „Google“ ketina palaikyti „Basis Universal“ visose pagrindinėse naršyklėse ir reklamuoti ją kaip nešiojamą WebGL tekstūros formatą ir būsimą specifikaciją. „WebGPU“, konceptualiai panašus į Vulkan, Metal ir Direct3D 12 API.

Pažymėtina, kad galimybė įterpti vaizdo įrašą su tolesniu apdorojimu tik GPU pusėje daro „Basis Universal“ įdomiu sprendimu kuriant dinamines vartotojo sąsajas „WebAssembly“ ir „WebGL“, kurios vienu metu gali rodyti šimtus mažų vaizdo įrašų su minimalia procesoriaus apkrova. Kol SIMD instrukcijos negali būti naudojamos WebAssembly su tradiciniais kodekais, toks našumo lygis dar nepasiekiamas, todėl tekstūra pagrįstas vaizdo įrašas gali būti naudojamas tose srityse, kuriose įprastas vaizdo įrašas netaikomas. Šiuo metu publikavimui ruošiamas kodas su papildomais vaizdo įrašų optimizavimais, įskaitant galimybę naudoti I-frames ir P-frames su adaptyviojo pamušalo (CR) atrama.

Šaltinis: opennet.ru

Добавить комментарий