Google și Binomial au lansat codul sistemului de compresie a texturilor Basis Universal

Companiile Google și Binomial au lansat texte originale Basis Universal, 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 este livrat sub licența Apache 2.0.

Basis Universal completează sistemul de comprimare a datelor 3D Draco, publicat anterior, și încearcă să rezolve problema furnizării texturilor pentru GPU. Până acum, dezvoltatorii au fost limitați în alegerea între formate de bază care permit performanțe ridicate, dar sunt specifice pentru GPU și ocupă mult spațiu pe disc, și alte formate care permit reducerea dimensiunii, dar nu pot concura cu texturile GPU în performanță. 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

Google și Binomial au lansat codul sistemului de compresie a texturilor Basis Universal

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.

Google și Binomial au lansat codul sistemului de compresie a texturilor Basis Universal

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 disponibil 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 WebGPU, 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 I-frame-uri și P-frame-uri cu suport pentru umplere adaptivă (CR).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster