Google e binomio
Basis Universal completa il precedente
Il formato Basis Universal consente di ottenere le prestazioni delle texture GPU native, ma fornisce un livello di compressione più elevato.
Basis è un formato intermedio che fornisce una transcodifica rapida delle texture GPU in vari formati di basso livello da utilizzare sia su sistemi desktop che su dispositivi mobili prima dell'uso. Attualmente supportati sono i formati PVRTC1 (4bpp RGB), BC7 (modalità 6 RGB), BC1-5, ETC1 ed ETC2. In futuro è previsto il supporto per il formato ASTC (RGB o RGBA) e le modalità 4/5 RGBA per BC7 e RGBA 4bpp per PVRTC1.
Le texture nel formato base occupano 6-8 volte meno memoria video e richiedono il trasferimento di circa la metà dei dati rispetto alle texture tipiche basate sul formato JPEG e il 10-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 è di 469 KB nella modalità di massima qualità. Quando si inseriscono le texture nella memoria video, le texture JPEG e PNG utilizzate nei test consumano 16 MB di memoria, mentre le texture in
La base richiedeva 2 MB di memoria per la traduzione in BC1, PVRTC1 ed ETC1 e 4 MB per la traduzione in BC7.
Il processo di migrazione delle applicazioni esistenti su Basis Universal è abbastanza 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à richiesto. Successivamente, nell'applicazione, prima del codice di rendering, è necessario inizializzare il transcoder basiu, che è responsabile della traduzione del formato intermedio nel formato supportato dalla GPU corrente. Allo stesso tempo, le immagini durante l'intera catena di elaborazione rimangono compresse, incluso il caricamento in forma compressa nella GPU. Invece di transcodificare preventivamente l'intera immagine, la GPU decodifica selettivamente solo le parti necessarie dell'immagine.
Supporta il salvataggio di array di texture eterogenei (mappe cubiche), texture volumetriche, array di texture, livelli mipmap, sequenze video o frammenti di texture arbitrari in un unico file. Ad esempio, è possibile comprimere una serie di immagini in un unico file per creare piccoli video, oppure combinare diverse texture utilizzando una tavolozza comune per tutte le immagini e deduplicando i tipici modelli di immagine. L'implementazione del codificatore Basis Universal supporta la codifica multithread utilizzando OpenMP. Il transcodificatore attualmente funziona solo in modalità a thread singolo.
Inoltre
Va notato che la possibilità di incorporare video con la successiva elaborazione solo sul lato GPU rende Basis Universal una soluzione interessante per creare interfacce utente dinamiche su WebAssembly e WebGL, che possono visualizzare contemporaneamente centinaia di piccoli video con un carico minimo sulla CPU. Fino a quando le istruzioni SIMD non potranno essere utilizzate in WebAssembly con i codec tradizionali, questo livello di prestazioni non sarà ancora raggiungibile, quindi il video basato su texture può essere utilizzato in aree in cui il video convenzionale non è applicabile. Il codice con ulteriori ottimizzazioni per i video è attualmente in fase di preparazione per la pubblicazione, inclusa la possibilità di utilizzo
Fonte: opennet.ru