Companiile Google și Binomial texte originale , un codec pentru comprimarea eficientă a texturilor și a formatului de fișier universal asociat „.basis” pentru distribuția texturilor bazate pe imagini și video. Codul implementării de referință este scris în C++ și sub licența Apache 2.0.
Basis Universal completează Formatul Basis Universal oferă performanță la nivelul texturilor native pentru GPU, dar asigură un nivel de compresie mai ridicat.
Basis este un format intermediar, care înainte de aplicare permite re-codificarea rapidă în diverse formate de bază pentru texturi GPU, utilizate atât pe sisteme desktop, cât și pe dispozitive mobile. În prezent se susține traducerea în formate PVRTC1 (4bpp RGB), BC7 (modul 6 RGB), BC1-5, ETC1 și ETC2. În viitor, se așteaptă suport pentru formatul ASTC (RGB sau RGBA) și modurile 4/5 RGBA pentru formatul BC7 și 4bpp RGBA pentru PVRTC1.
Texturile în format basis ocupă de 6-8 ori mai puțină memorie video și necesită transferul a aproximativ de două ori mai puține date în comparație cu texturile tipice bazate pe format JPEG și cu 10-25% mai puțin decât texturile în modul RDO. De exemplu, la un dimensiune a imaginii JPEG de 891 Kb și o textură ETC1 de 1 Mb, dimensiunea datelor în format Basis este de 469 Kb în modul maximă calitate. Când texturile sunt stocate în memoria video, texturile utilizate în teste în format JPEG și PNG au consumat 16 Mb de memorie, în timp ce pentru texturile în format
Basis a fost necesară 2 Mb de memorie în cazul traducerii în BC1, PVRTC1 și ETC1, și 4 Mb în cazul traducerii în BC7.
Basis потребовалось 2 Мб памяти в случае трансляции в BC1, PVRTC1 и ETC1, и 4 Мб в случае трансляции в BC7.
Procesul de transfer al aplicațiilor existente pe Basis Universal este destul de simplu. Este suficient să recodificați texturile sau imaginile existente într-un nou format folosind utilitarul "basisu" furnizat de proiect, alegând nivelul de calitate dorit. Apoi, în aplicație, înainte de codul de redare, trebuie să inițializați recodificatorul basisu, care este responsabil pentru translația formatului intermediar într-un format acceptat de GPU-ul actual. În acest proces, imaginile rămân comprimate pe întreaga lungime de procesare, inclusiv fiind încărcate în formă comprimată în GPU. În loc să recodifice anticipat imaginea în întregime, GPU-ul decodifică selectiv doar părțile necesare ale imaginii.
Se suportă salvarea în același fișier a unor matrice de texturi heterogene (cubemap), texturi volumetrice, matrice de texturi, niveluri mipmap, secvențe video sau fragmente arbitrare de texturi. De exemplu, este posibil să se ambaleze într-un singur fișier o serie de imagini pentru a crea videoclipuri mici sau să se combine mai multe texturi folosind o paletă comună pentru toate imaginile și deduplicarea șabloanelor de imagini tipice. Implementarea codificatorului Basis Universal suportă codificarea pe thread-uri multiple folosind OpenMP. Recodificatorul funcționează deocamdată doar în modul unithread.
În plus decodificatorul Basis Universal pentru browsere, livrat sub formă de WebAssembly, care poate fi folosit în aplicații web bazate pe WebGL. În cele din urmă, Google intenționează să asigure suportul pentru Basis Universal în toate browserele majore și să-l promoveze ca un format portabil de texturi pentru WebGL și viitoarea specificație , similar conceptual cu API Vulkan, Metal și Direct3D 12.
Se remarcă faptul că posibilitatea de a încorpora video cu procesare ulterioară doar pe partea GPU face ca Basis Universal să fie o soluție interesantă pentru crearea de interfețe dinamică ale utilizatorului în WebAssembly și WebGL, în care pot fi reflectate simultan sute de videoclipuri cu o încărcare minimă pe CPU. Până la apariția posibilității utilizării instrucțiunilor SIMD în WebAssembly, un astfel de nivel de performanță nu era realizabil folosind codecuri tradiționale, așa că video bazat pe texturi poate fi folosit în domenii în care video obișnuit nu este aplicabil. În prezent, se pregătește publicarea unui cod cu optimizări suplimentare pentru video, incluzând posibilitatea de utilizare cu suport pentru umplere adaptivă (CR).
Sursa: opennet.ro
