Durante i primi giorni di quest’anno, Nvidia ha presentato un processore mobile che è riuscito a superare la soglia dei mille miliardi di FLOPS. Le FLoating-point Operations Per Second sono una misura della potenza di calcolo bruto che ha a disposizione il processore, una specie di indice della velocità massima raggiungibile.

Nella presentazione utilizzata durante il CES 2015, Nvidia paragona il nuovo processore ad ASCI Red, il primo supercomputer della storia che è riuscito a superare la barriera del TeraFLOP al secondo e che, a fine degli anni ’90, era composto da una serie di cabine che occupavano lo spazio di un grosso appartamento.

Marketing a parte, questo confronto ci può dare la misura della potenza che stanno acquisendo i cosiddetti sistemi embedded, tra qualche anno un device di basso costo e a basso consumo potrebbe avere le stesse capacità di calcolo di una console di ultimo grido.

Gil smartphones hanno a disposizione dei potenti processori grafici, meglio conosciuti come GPU (Graphics Processing Unit), delle unità specializzate in calcoli per creare e manipolare immagini. Il fotorealismo dei videogiochi dipende dalla magia nascosta tra quelle maglie di silicio.

WebGL permette di portare una parte di quella magia all’interno di un browser, di colloquiare direttamente con la scheda video, impostando dei comandi che possono descrivere gli scenari complessi di un mondo in 3D. Tutto questo con una velocità sempre maggiore, ma al costo di un’elevata curva di apprendimento e di una massima attenzione alle prestazioni.

Per gli smanettoni ed i gamers il frame rate è una misura della fluidità con la quale viene aggiornata la scena. Quando guardiamo un film, vediamo scorrere una serie di fotogrammi al secondo, la stessa cosa vale per i giochi, con la differenza che ogni fotogramma è creato da zero ed in quel preciso istante, dal primo all’ultimo pixel.

Il mondo 3D è ripreso attraverso una camera virtuale che si basa sui principi matematici della camera oscura e, di conseguenza, si comporta come le ottiche usate nel cinema e nella fotografia, infatti è possibile “impostare” la profondità di campo o la lunghezza focale dell’ottica virtuale.

Ma a cosa serve una camera se non c’é abbastanza luce per fotografare?
È soprattutto a questo punto che entra in gioco la GPU: la luce, i colori, le forme vengono simulati “applicando” alcune leggi della fisica classica, come per esempio la rifrazione, uno dei fenomeni che sta alla base della formazione degli arcobaleni.

Per ricreare un arcobaleno in una scena virtuale è necessario calcolare una serie di formule su ognuna delle centinaia di migliaia di gocce che compongono la nube. La GPU è specializzata in questo tipo di compiti ed è costruita per supportare il parallelismo, una caratteristica che permette di processare più formule contemporaneamente, riducendo i tempi di calcolo del singolo “fotogramma” ed aumentando la fluidità con la quale vediamo scorrere le immagini.

Gli arcobaleni sono ancora difficili da ricreare su uno smartphone e probabilmente esistono metodi più efficienti per ottenere lo stesso risultato visivo, ma sembra che la capacità di calcolo stia crescendo esponenzialmente, tra non molto tempo potremmo trovare un ASCI Red nel nostro tostapane interattivo.

WebGL fa parte della famiglia OpenGL, una Graphic Library open source creata da Silicon Graphics nel 1992 e che, al momento, gode di un ottimo supporto. iOs ed Android supportano nativamente OpenGL ES (Embedded Systems) 2.0 e, per i sistemi operativi Microsoft, è stato sviluppato ANGLE. Al momento le performance di un Browser non eguagliano quelle delle applicazioni native, ma sono sufficienti per creare degli effetti decisamente evoluti.

Il cuore di OpenGL sono gli Shaders, un’architettura che permette di inviare dati e procedure direttamente alla GPU, manipolando i pixel e le geometrie degli oggetti che compongono la scena. Programmare uno Shader è una specie di processo alchemico, gli esperti di Computer Graphics posseggono delle conoscenze di analisi matematica, algebra e fisica che vanno al di là della programmazione.

Per fortuna alcuni alchimisti hanno deciso di metterci a disposizione delle librerie Javascript 2D e 3D basate su WebGL e che permettono di accedere con relativa facilità alla potenza messa a disposizione dalla GPU. Al momento la più diffusa e supportata è three.js, ma le alternative sono diverse e si nota un buon fermento nelle comunità degli sviluppatori.

E’ difficile sapere se potremo giocare a Tomb Raider sul nostro tostapane o sul nostro portachiavi. Forse potremo farlo all’interno di un browser nella nostra TV o su un qualsiasi device che abbia un display. Quello che è sicuro che WebGL è già disponibile nei Browsers degli smarphones di ultima generazione, ora si tratta “solo” di utilizzare le potenzialità che ci mette a disposizione.



Link di riferimento:

The Personal Computer Is Dead | MIT Technology Review
Death of the games console? Industry is at risk if it doesn’t adapt to the threat of mobile, warn experts | DailyMail
Mobile Devices and the GPUs inside | Jon Peddie Research
Real-Time Rendering Graphics Books Page

Immagine di copertina: Andrea Bordoni – Generata con Apophysis fractal flame editor