Google și Binomial open source Basis Sistem universal de compresie a texturii

Google și Binom deschis textele sursă Bază universală, un codec pentru compresia eficientă a texturii și un format de fișier universal „.basis” asociat pentru distribuirea texturilor bazate pe imagini și video. Codul de implementare de referință este scris în C++ și furnizat licențiat sub Apache 2.0.

Baza Universal completează anterior publicat Sistemul de compresie a datelor Draco 3D și încearcă să rezolve problema cu furnizarea de texturi pentru GPU. Până acum, dezvoltatorii s-au limitat să aleagă între formate de nivel scăzut care ating performanțe ridicate, dar sunt specifice GPU-ului și ocupă mult spațiu pe disc și alte formate care ating dimensiunea redusă, dar nu pot concura cu texturile GPU-ului în performanță.

Formatul Basis Universal vă permite să obțineți performanța texturilor GPU native, dar oferă un nivel mai ridicat de compresie.
Baza este un format intermediar care oferă transcodare rapidă a texturilor GPU în diferite formate de nivel scăzut pentru utilizare atât pe sisteme desktop, cât și pe dispozitive mobile înainte de utilizare. În prezent, sunt acceptate formatele PVRTC1 (4bpp RGB), BC7 (modul 6 RGB), BC1-5, ETC1 și ETC2. Se așteaptă suport în viitor pentru formatul ASTC (RGB sau RGBA) și modurile 4/5 RGBA pentru BC7 și 4bpp RGBA pentru PVRTC1.

Google și Binomial open source Basis Sistem universal de compresie a texturii

Texturile în formatul de bază ocupă de 6-8 ori mai puțină memorie video și necesită transferul de aproximativ jumătate din câte date decât texturile tipice bazate pe formatul JPEG și cu 10-25% mai puțin decât texturile în modul RDO. De exemplu, cu o dimensiune a imaginii JPEG de 891 KB și o textură ETC1 de 1 MB, dimensiunea datelor în formatul de bază este de 469 KB în modul de cea mai înaltă calitate. Când plasați texturi în memoria video, texturile JPEG și PNG utilizate în teste au consumat 16 MB de memorie, în timp ce texturile din
De bază sunt necesare 2 MB de memorie pentru traducerea în BC1, PVRTC1 și ETC1 și 4 MB pentru traducerea în BC7.

Google și Binomial open source Basis Sistem universal de compresie a texturii

Procesul de migrare a aplicațiilor existente la Basis Universal este destul de simplu. Este suficient să recodificați texturile sau imaginile existente într-un nou format folosind utilitarul „basisu” oferit de proiect, selectând nivelul de calitate necesar. Apoi, în aplicație, înainte de codul de randare, trebuie să inițializați transcoderul basisu, care este responsabil pentru traducerea formatului intermediar în formatul suportat de GPU-ul curent. În același timp, imaginile de-a lungul întregului lanț de procesare rămân comprimate, inclusiv fiind încărcate sub formă comprimată în GPU. În loc să transcodeze preventiv întreaga imagine, GPU-ul decodifică selectiv doar părțile necesare ale imaginii.

Acceptă salvarea matricelor de textură eterogene (hărți cub), texturi volumetrice, matrice de textură, niveluri mipmap, secvențe video sau fragmente de textură arbitrare într-un singur fișier. De exemplu, este posibil să împachetați o serie de imagini într-un singur fișier pentru a crea videoclipuri mici sau să combinați mai multe texturi folosind o paletă comună pentru toate imaginile și deduplicarea șabloanelor de imagine tipice. Implementarea codificatorului universal de bază acceptă codificarea cu mai multe fire folosind OpenMP. Transcoderul funcționează în prezent numai în modul cu un singur fir.

în plus disponibil Decodor universal de bază pentru browsere, livrat în format WebAssembly, care poate fi utilizat în aplicații web bazate pe WebGL. În cele din urmă, Google intenționează să accepte Basis Universal în toate browserele majore și să-l promoveze ca format de textură portabil pentru WebGL și o specificație viitoare WebGPU, similar conceptual cu API-urile Vulkan, Metal și Direct3D 12.

Se remarcă faptul că capacitatea de a încorpora video cu procesarea sa ulterioară numai pe partea GPU face din Basis Universal o soluție interesantă pentru crearea de interfețe dinamice cu utilizatorul pe WebAssembly și WebGL, care pot afișa simultan sute de videoclipuri mici cu încărcare minimă a CPU. Până când instrucțiunile SIMD pot fi utilizate în WebAssembly cu codecuri tradiționale, acest nivel de performanță nu este încă atins, astfel încât videoclipul bazat pe textură poate fi folosit în zonele în care video convențional nu este aplicabil. Codul cu optimizări suplimentare pentru videoclipuri este în prezent în curs de pregătire pentru publicare, inclusiv capacitatea de utilizare I-cadre și P-cadre cu suport adaptive padding (CR).

Sursa: opennet.ru

Adauga un comentariu