NOTA! Questo sito utilizza i cookie e tecnologie simili.

Se non si modificano le impostazioni del browser, l'utente accetta. Per saperne di piu'

Approvo

Lo shader GLSL "Water / Underwater" di M. Upitis e M. Otto (Blender Conference 2013)

 

 

Sono appena tornato dalla Blender Conference 2013 dove ho avuto modo di vedere tante cose ma una in particolare mi ha lasciato a bocca aperta... e no, non parlo degli add-on per la stampa 3D diretta da Blender, dell'Oculus Rift con il Blender Game Engine e tante altre cose interessanti, ma del risultato ottenuto da Martins Upitis con la programmazione GLSL per programmare uno shader per l'acqua in tempo reale con il Blender Game Engine.

 

Piccola panoramica: Martins è un ragazzo lettone con background artistico, appassionato di disegno, pittura a olio e creazione di videogiochi, che ha iniziato a usare Blender nel 2003 ma in maniera più attiva dal 2006, iniziando a fare delle ricerche in particolare sul rendering real-time, l'ombreggiatura (shading), effetti visivi e trasformando queste sue ricerche in script GLSL, quindi passando dalla parte artistica alla programmazione. Attualmente lavora per SenseGraphics AB come modellatore 3D e realizzatore di Shaders e Texture per simulazioni in ambito medico.

 

Ha presentato il talk insieme a Michael Otto, che di formazione è geologo ma che si è "specializzato", perlomeno nell'utilizzo di Blender, nella realizzazione di modelli anatomici fotorealistici e che ora lavora insieme a Martins, sempre nell'ambito delle simulazioni in ambito medico, per la SenseGraphics AB.

 

GLSL è un linguaggio di Shading che permette di operare sulla pipeline di rendering andando a definire degli ombreggiatori personalizzati su pixel, geometrie o fragments della scena, quindi lavorando nella Pipeline di rendering e ombreggiatura, tra le trasformazioni delle coordinate di una mesh, da parte della cpu, e la loro visualizzazione a video, consentendo un controllo totale sull'ombreggiatura degli elementi e sugli effetti ottenibili.

 

Nel video potete vedere lo scenario che si presenta quando si apre il file demo realizzato da Martins (che potete scaricare dal post sul suo blog, cliccando qui): una vista 3D e una finestra Text Editor con le istruzioni, dove cliccando sul Data Browser appare l'elenco degli script Python e GLSL in chiaro.

GLSL Shader - 01 - Apertura file

Nella vista 3D non si vede granché, ma basta premere P (Play) mentre il mouse è sulla vista 3D per ritrovarsi su una spiaggia, dove la sabbia ha una texture generated per evidenziare alcune caratteristiche, ma il punto forte è l'acqua, come potete vedere... beh un'immagine vale più di mille parole!

GLSL Shader - 02 - Esecuzione con P Play

Le istruzioni a destra ci dicono che, premendo il tasto sinistro del mouse e muovendo il mouse tenendo quel tasto premuto, possiamo variare l'altezza del Sole, con tutte le conseguenze del caso.

GLSL Shader - 03 - Variare altezza del sole tramonto

Tornando all'acqua, il risultato ottenuto per le caustiche, le riflessioni e le rifrazioni è davvero impressionante e deriva dalla programmazione di uno Shader GLSL applicato ai materiali della scena.

GLSL Shader - 04 - Caustiche acqua

Martins ha aggiunto sfere, Suzanne (la testa di scimmia) e cilindri semisommersi per evidenziare la formazione delle caustiche anche su questi oggetti, nella parte sommersa, e non solo sul fondale.

GLSL Shader - 05 - Oggetti sommersi

Se si va sott'acqua si ha l'attenuazione con la profondità e anche qui Martins ha dato un tocco di classe realizzando un'attenuazione diversa in base alle varie lunghezze d'onda della luce, per cui i colori cambiano in maniera fisicamente corretta, come nella realtà, non semplicemente "abbassando la luce".

GLSL Shader - 06 - Attenuazione con profondità

Se poi si esce dall'acqua, sulla telecamera restano delle gocce d'acqua che a loro volta presentano effetti di riflessione e rifrazione, come si può constatare osservando parti dello scenario attraverso queste gocce.

GLSL Shader - 07 - Gocce d'acqua sullo schermo

Inutile dirvi che io e tutti gli altri abbiamo iniziato ad applaudire quando ancora la presentazione non era terminata e... abbiamo continuato quando Martins ha detto che TUTTO il progetto, quindi scenario e tutti gli script di programmazione Python e GLSL, è scaricabile gratuitamente mediante link diretto dal suo sito (dal post raggiungibile cliccando qui), infatti questo video l'ho realizzato riprendendo la mia attività a video dopo aver scaricato il file .blend.

GLSL Shader - 08 - Download sul blog di Martins

Al termine della presentazione ho detto a Martins che un risultato simile l'avevo visto con il CryEngine e lui mi ha risposto che si era ispirato proprio al motore di CryTech; ha decisamente raggiunto il risultato voluto, definendo un nuovo standard per ciò che può essere fatto con il "piccolo" Blender Game Engine!

 

A questo punto mi chiedo come debba essere provare questo scenario con alcune Textures e oggetti sistemati e soprattutto con l'Oculus Rift...

 

Bene, per questo breve videoarticolo è tutto! A presto!

BCON2013-GLSL-Upitis-Otto-720

 

 
Vai all'inizio della pagina