Menu Close

)┓┗(-_-)┛┏(

Come ho imparato a non preoccuparmi e ad amare il rendering
cover-gpu

WebGL: A GPU Odyssey

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

cassandra-cover

Dieci minuti nel dilemma di Cassandra

Succede spesso di pensare o di sentire frasi come: è un intervento semplice, da “dieci minuti”. Questa forma mentis, anche se funziona in una buona parte dei casi, ha dei risvolti abbastanza pericolosi quando è applicata a progetti che riguardano l’informatica.

 

It’s easy to mislead estimation work and hard to recover from being misled – MAGNE JØRGENSEN

 What We Do and Don’t Know about Software Development Effort Estimation

 

Mettiamo il caso di essere stati invitati a cena a casa di amici che non vediamo da molto tempo e, per l’occasione, passiamo un’ora in enoteca per scegliere una bottiglia di vino d’annata.

Una volta arrivati a destinazione chiediamo di passarci un cavatappi perchè il rosso deve “respirare” un po’ prima di essere bevuto, ma a quel punto scopriamo che il cavatappi si è rotto il giorno prima ed i nostri amici non hanno avuto il tempo di comprarne uno nuovo. Non ci perdiamo d’animo, ci immedesimiamo in Mc Gyver  e riusciamo a trovare il modo per aprire la bottiglia senza che il tappo cada dentro.

Tra un discorso e l’altro è arrivato il momento del secondo e siamo curiosi di assaggiare la produzione di questa cantina che non conoscevamo, ma ci accorgiamo che il vino sa di tappo. Nonostante tutti i nostri sforzi, le aspettattive sono state disattese.

E’ un caso che capita molto di rado nella vita reale, ed il fatto che possa accadere non ci obbliga a portare un cavatappi e una bottiglia di riserva alle cene a casa di amici. Anzi, dopo qualche sera potremmo essere considerati un po’ bizzarri e fissati.

Invece, quando si parla di sistemi complessi, situazioni simili accadono più frequentemente di quanto si creda.

 

Crediti immagine: xkcd – Abstraction

 

Siamo continuamente bombardati da messaggi che elogiano la semplicità di utilizzo delle nuove tecnologie e spesso tendiamo a dimenticare che tutto questo è possibile perchè esistono persone e architetture informatiche che gestiscono la complessità al nostro posto.

 

Technology always requires effort and will fail if not applied in the right way – Matt Asay

Why Even “Simple” Technology Can Be Hard For Developers – Readwrite

 

Per completare un task da “dieci minuti” potrebbero servire delle competenze che si acquisiscono solo dopo anni di pratica e di studio. Senza contare che potrebbe essere necessario eseguire delle (semplici) procedure di cui non si è mai testata l’efficacia e di cui, di conseguenza, non si conosce l’affidabilità.

Durante la fase di design o di implementazione capita spesso di dovere utilizzare delle “scatole nere”, ovvero degli “oggetti ravvicinati del terzo tipo” che promettono di fornire un risultato a seguito di una nostra azione o di una nostra richiesta. Come se non bastasse, ogni “scatola nera” ne contiene altre al suo interno, nello stesso modo in cui è costruita una matrioska.

Queste astrazioni funzionano nella maggior parte dei casi, ma non ci possono garantire una assoluta consistenza. Infatti, una delle competenze che differenzia un informatico esperto da un novellino, è la conoscenza, non solo di queste limitazioni, ma anche dei workarounds che è nessario implementare per aggirarle.

Nella mitologia greca, Cassandra aveva il dono di prevedere il futuro, ma non veniva ascoltata perchè i suoi presagi erano nefasti e non aveva modo di provare inconfutabilmente le sue “visioni”. Alcune volte farebbe comodo possedere delle doti divinatorie, ma putroppo dobbiamo accontentarci di seguire l’intuito e la nostra conoscenza.

 

La conoscenza rende tutto più semplice – John Maeda

Le leggi della semplicità – John Maeda

 

Con questo non voglio dire che mi presenterò a cena con il cavatappi ed una bottiglia di vino di riserva, ma che forse ci ho pensato per un attimo prima di uscire di casa.

 


 

 


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

effect

Effect of the Head’s Mass

There are many ways of going forward, but only one way of standing still. – Franklin D. Roosevelt

Sono tre anni che cerco di trovare lo spazio per un progetto di pura speculazione con la mia amica e Creative Director Sylvie Frigerio, ma i troppi impegni ci hanno sempre costretto a posticipare. Ci siamo riusciti solo mentre stavo registrando un disco con gli Psicotaxi ed ho avuto bisogno di una copertina. La sua illustrazione, oltre che sul CD, si reincarnerà in un altro formato digitale.

L’album dovrebbe uscire nella prossima primavera, per quella data vorremmo creare un videoclip interattivo di uno dei brani. L’idea è quella di animare alcuni elementi dell’illustrazione della copertina a tempo di musica ed aggiungere un qualche tipo di interattività.

Ho pensato a lungo su quale piattaforma utilizzare per sviluppare questo progetto, ma alla fine ho scelto di rimanere dentro ad un browser, o ad una WebView. Con l’adozione da parte di iOs 8 la tecnologia WebGL è stata sdoganata, anche se è ancora lontana dal diventare uno standard. Senza contare che è solo uno degli strumenti che potrebbe metterci a dispozione una WebPlatform.

 

 

Per riprodurre l’illustrazione nel nuovo “mondo”, abbiamo pensato di suddividerla in questi elementi:

  • La nuvola di boids che ruota intorno al viso
  • Il viso
  • La bocca
  • Il busto

Partirò con la generazione della nuvola di boids, che potrebbe rivelarsi la parte più impegnativa. In seguito dovremo creare ed animare gli altri elementi fino a costruire un alter ego della copertina nello spazio tridimensionale. Finita questa fase, passerò alla sincronizzazione delle animazioni con la musica. La parte interattiva è ancora in divenire, dipende anche da quanto sarò veloce nel terminare le fasi precedenti.

Mancano circa sei mesi, sembra tanto tempo, ma il progetto è complesso. Ammentendo di porterlo portare a termine in 30 giorni lavorativi, dovrei dedicarmici circa 10 ore a settimana. Ma, dato che il cliente sono io, saranno ammessi ritardi o qualche ritocco alle funzionalità. Vorrei garantire la maggiore compatibilità possibile ed una vocina mi dice che potrei incontrare diverse sorprese.

abstraction: a simplification of something much more complicated that is going on under the covers. – Joel Spolsky

La legge dell’astrazione fa acqua, lo diceva Joel Spolsky tempo fa. Ho sperimentato più volte la differenza tra come le cose dovrebbero funzionare e come funzionano veramente. Alcune volte è come aspettare il treno nel passante di Porta Garibaldi.

Per fortuna ho già lavorato con delle librerie per la programmazione 3D, tre anni fa ho sviluppato un progetto basato su motore di rendering Away3D e architettura Stage3D per Flash Player. E’ passato un po’ di tempo, ma almeno non devo cominciare da zero.

Questa volta ho intenzione di utilizzare three.js, basato su WebGL e Javascript. Le nozioni di base della programmazione 3D sono applicabili a diversi sistemi e questi “frameworks” semplificano di molto la vita, soprattutto grazie alla forte comunità che vi gravita intorno.

Probabilmente sbaglio nel partire con la parte più difficile. E’ quella che richiede i calcoli più complessi, sia da parte dell’uomo, che da parte della macchina, ma ogni tanto le sfide servono per smontare i propri modelli e passare a qualcosa di nuovo.

Immagine di copertina: Silvye Frigerio


 

Psicotaxi – Effect of the Head’s Mass

celtik-ghostly26

Zero (The Hero)

Zero è il protagonista della mitologia del Pianeta Gong, ascolta messaggi telepatici trasmessi da teiere volanti, le piccole creature verdi che le guidano lo tengono in contatto con un tempio immaginifico e bizzarro.

Zero è uno dai tanti eroi dell’immaginario psichedelico, di un universo parallelo che è possibile percepire, ma impossibile da definire.

Zero è il numero zero del mio stupido blog, ma ora è arrivato il momento di tornare alla realtà.

A giugno del 2000 ho lasciato l’università per contribuire a creare una web agency situata nell’hinterland milanese. C’erano i fighetti della new economy che cavalcavano la bolla ascoltando Surfin’ USA, ma stava per arrivare la risacca.

Passavo le serate a smanettare su Flash e non avevo ancora compreso che renderizzare sarebbe diventata una delle mie passioni.

Il rendering è il processo grazie al quale i nostri monitor vengono dipinti dalle nostre azioni digitali. Dietro alle animazioni che popolano le nostre interfacce ci sono complesse equazioni matematiche e raffinate soluzioni ingegneristiche. Gli algortmi possono essere elevati a forma d’arte.

La matematica, vista nella giusta luce, possiede non soltanto verità ma anche suprema bellezza – una bellezza fredda e austera, come quella della scultura. – Bertrand Russell


Ma in tutto questo cosa c’entra la psichedelia?
Probabilmente nulla, ma nell’arte generativa è fondamentale creare mondi paralelli e riuscire a scrivere algoritmi che si comportino in maniera imprevedibile.

Ken Perlin ha scritto l’algoritmo “Perlin Noise” mentre lavorava agli effetti speciali del film Tron ed ha rivoluzionato il mondo della computer graphics. È riuscito a programmare il caos, ha creato uno strumento per farci sembrare l’immagine digitale più simile alla realtà.

Mentre programmavo le animazioni con Actionscript stavo studiando uno strumento, con il tempo ho capito che esistono delle competenze che trascendono le diverse architetture, la matematica è una di queste.

Flash è passato di moda, ma ho ancora voglia di divertirmi e qualche sera mi rimetto a studiare. Forse riuscirò ad aggiornare questo blog, sento il bisogno di condividere la mia strada per diventare un Creative Technologist, ma anche alcuni pensieri sulla mia vita digitale.

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


 

Gong - Master Builder
You - 1974

IAO ZA-I ZA-O
MA-I MA-O
TA-I TA-O NOW

Q: Master Builder, tell me how you make a temple?
A: Tools and moon stones, you don’t really need them, you know…

Q: Master Builder, tell me what the temple’s made of?
A: Deep inside you, you can build an invisible temple in your own imagination if you will

 


Riferimenti bibliografici:

Daniel ShiffmanThe Nature of Code
Matt PearsonGenerative Art: a practal guide
Matt Pearson – Novelty Waves
Keith PetersPlaying With Chaos