Google e Binomial hanno rilasciato il codice del sistema di compressione delle texture Basis Universal

Le aziende Google e Binomial hanno presentato codici sorgente Basis Universal, un codec per la compressione efficiente delle texture e il relativo formato file universale ".basis" per la distribuzione delle texture basate su immagini e video. Il codice di riferimento è scritto in C++ e è distribuito sotto licenza Apache 2.0.

Basis Universal integra il sistema di compressione 3D Draco precedentemente pubblicato

e cerca di risolvere il problema della fornitura di texture per GPU. Finora, gli sviluppatori erano limitati nella scelta tra formati a basso livello che garantiscono alte prestazioni, ma sono specifici per GPU e occupano molto spazio su disco, e altri formati che permettono una riduzione delle dimensioni, ma non possono competere con le texture GPU in termini di prestazioni. Il formato Basis Universal consente prestazioni paragonabili a quelle delle texture native per GPU, ma offre un livello di compressione superiore.
Basis è un formato intermedio che consente una rapida ricodifica in vari formati a basso livello per le texture GPU, utilizzate sia su sistemi desktop che su dispositivi mobili. Attualmente supporta la traslazione nei formati PVRTC1 (4bpp RGB), BC7 (modalità 6 RGB), BC1-5, ETC1 e ETC2. In futuro, è prevista la supporto del formato ASTC (RGB o RGBA) e delle modalità 4/5 RGBA per il formato BC7 e 4bpp RGBA per PVRTC1.

Google e Binomial hanno rilasciato il codice del sistema di compressione delle texture Basis Universal

Le texture nel formato Basis occupano da 6 a 8 volte meno memoria video e richiedono il trasferimento di circa la metà dei dati rispetto alle texture standard basate su JPEG, e dal 10 al 25% in meno rispetto alle texture in modalità RDO. Ad esempio, con una dimensione dell'immagine JPEG di 891 KB e una texture ETC1 di 1 MB, la dimensione dei dati nel formato Basis ammonta a 469 KB nella modalità di massima qualità. Durante il posizionamento delle texture nella memoria video, le texture utilizzate nei test in formato JPEG e PNG hanno consumato 16 MB di memoria, mentre per le texture nel formato
Basis sono stati necessari 2 MB di memoria nel caso della traslazione in BC1, PVRTC1 e ETC1, e 4 MB nel caso della traslazione in BC7.

Google e Binomial hanno rilasciato il codice del sistema di compressione delle texture Basis Universal

Il processo di trasferimento delle applicazioni esistenti su Basis Universal è piuttosto semplice. È sufficiente ricodificare le texture o le immagini esistenti in un nuovo formato utilizzando l'utilità "basisu" fornita dal progetto, selezionando il livello di qualità desiderato. Successivamente, nell'applicazione, prima del codice di rendering, è necessario inizializzare il ricodificatore basisu, che è responsabile della traduzione del formato intermedio nel formato supportato dall'attuale GPU. Durante questo processo, le immagini lungo l'intera catena di elaborazione rimangono compresse, inclusa l'archiviazione in forma compressa nella GPU. Invece di ricodificare l'immagine per intero in anticipo, la GPU decodifica selettivamente solo le parti necessarie dell'immagine.

È supportata la memorizzazione in un unico file di array di texture eterogenei (cubemap), texture volumetriche, array di texture, livelli mipmap, sequenze video o frammenti di texture arbitrari. Ad esempio, è possibile impacchettare in un unico file una serie di immagini per creare brevi video o combinare più texture utilizzando una palette comune per tutte le immagini e deduplicando modelli di immagini tipici. L'implementazione del codec Basis Universal supporta la codifica multithread con OpenMP. Attualmente, il ricodificatore funziona solo in modalità monothread.

Inoltre è disponibile decodificatore Basis Universal per browser, fornito in formato WebAssembly, che può essere utilizzato in applicazioni web basate su WebGL. In definitiva, Google intende garantire il supporto di Basis Universal in tutti i principali browser e promuoverlo come formato di texture portatile per WebGL e la futura specifica. WebGPU, concettualmente simile alle API Vulkan, Metal e Direct3D 12.

Si segnala che la possibilità di incorporare video con successiva elaborazione esclusivamente tramite GPU rende Basis Universal una soluzione interessante per la creazione di interfacce utente dinamiche su WebAssembly e WebGL, dove possono essere visualizzati contemporaneamente centinaia di piccoli video con un carico minimo sulla CPU. Fino all'introduzione delle istruzioni SIMD in WebAssembly, un livello di prestazioni simile non era raggiungibile con i codec tradizionali, pertanto i video basati su texture possono essere utilizzati in aree dove i video normali non sono applicabili. Attualmente, si sta preparando un codice con ulteriori ottimizzazioni per i video, inclusa la possibilità di utilizzare I-frame e P-frame con supporto per il riempimento adattivo (CR).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster