Google regala un nuovo encoder ETC2

google_logoGoogle ha sempre qualcosa in via di sviluppo, che spesso rigurarda la gestione o compressione di video ed immagini (per esempio WebP e WebM); oggi parliamo di una tecnologia fondamentale ma poco conosciuta: la compressione delle texture.

Qualche videogiocatore potrebbe sapere già di cosa parliamo, ma per gli altri ecco una breve introduzione.
Una scheda video lavora creando delle superfici ed applicando a queste superfici delle immagini, che in gergo si chiamano texture. Le texture possono essere sovrapposte sulla stessa superficie; per fare una tazza di latta, per esempio, si potrebbero sovrapporre 3 texture:
– una per il colore del  materiale (diciamo grigia);
– una per la trama del materiale (per esempio se è un poco ruvida);
– una per piccole luci o ombre (una piccola ammaccatura sarà più scura e riflettente del materiale intorno).

Diventa evidente che la gestione di memorizzazione e trasferimento di queste immagini è centrale per le prestazioni di qualsiasi operazione della scheda video. Tanto più nella resa di scene in 3D, o della sempre più vicina realtà virtuale. Aumentando la complessità delle operazioni aumentano anche le esigenze di spazio e velocità di trasferimento, e da anni ormai sono usate tecniche di compressione delle texture: file più piccoli non solo occupano meno spazio in memoria, ma richiedono anche meno tempo per essere letti.

Uno dei formati esistenti è l’ETC2 (Ericsson Texture Compression 2), scelto anche come standard dalle specifiche OpenGL ES, per le quali deve essere implementato. Questo formato è particolarmente efficiente, ovvero permette di mantenere una buona qualità dell’immagine memorizzata pur usando molto poco spazio, ma risulta particolarmente onerosa nella fase di compressione, rallentando di molto il processo di creazione dei programmi e limitandone quindi l’uso.

Google ha rilasciato da poco un compressore straordinariamente più veloce di quello di riferimento; lo “straordinariamente” non è casuale: parliamo di 100 volte più veloce nel caso medio, e 500 volte in quello peggiore. E il software è rilasciato come piace a noi: opensource.

Il codice è in forma sia di compressore autonomo che di libreria (lo trovate qui, sul solito GitHub), e non dovrebbe passare molto tempo per vederlo in funzione sui nostri PC o i nostri telefoni; OpenGL ES è infatti usato dal prossimo Wayland su PC e da tutti i dispositivi Android. Compresi Google Glass e i prossimi gadget di realtà virtuale.

Chi fosse interessato ad una descrizione tecnica, può guardare qui! 😉

Ho coltivato la mia passione per l'informatica fin da bambino, coi primi programmi BASIC. In età adulta mi sono avvicinato a Linux ed alla programmazione C, per poi interessarmi di reti. Infine, il mio hobby è diventato anche il mio lavoro.
Per me il modo migliore di imparare è fare, e per questo devo utilizzare le tecnologie che ritengo interessanti; a questo scopo, il mondo opensource offre gli strumenti perfetti.

Tags: , ,