Il divertente mondo degli shader in GLSL

di il
0 risposte

Il divertente mondo degli shader in GLSL

Ciao, con questo post volevo far conoscere, a chi non lo conosce già, il mondo degli shader (fragment shader) in GLSL.

Forse molti di voi, specialmente quelli meno giovani della mia età, si ricordano che una volta, quando c’era ancora il MS-DOS, c’era chi faceva le “demo” grafiche in VGA/SVGA: programmini in C (ma anche tipicamente in Assembly x86) che mostravano effetti grafici a volte anche strabilianti.
Quel mondo, mi pare, non esiste ormai più da tempo. Anche io avevo fatto qualche demo di quel tipo, in Assembly, ma all’epoca non c’era internet come oggi, quindi non avevo molto modo di condividere quanto fatto. Probabilmente li ho ancora su qualche vecchio floppy disk in disuso da decenni …. 

Da poco tempo mi sto interessando agli shader (per essere precisi, i fragment shader, perché esistono vari tipi di shader) in GLSL (OpenGL Shading Language). È un linguaggio C-like che viene compilato dal driver della scheda video e poi inviato alla GPU che lo esegue in maniera massiva/parallela su tutte le decine/centinaia/migliaia di core disponibili.
Gli shader vengono generalmente usati nella grafica 3D ma esiste un caso particolare di utilizzo, che è quello che va molto di “moda” da un po’ di anni. Ovvero replicare questo mondo delle demo grafiche ma in modo da farle girare sulle potenti GPU moderne. Appunto, tramite i fragment shader.

Ho sempre pensato che questo mondo fosse parecchio difficile da affrontare. Beh, dipende certamente da dove si vuole partire, se da una app C/C++ con OpenGL o che altro. Ho però scoperto che esistono vari servizi online, tipo editor.thebookofshaders.com (del corrispettivo book thebookofshaders.com) ma anche www.shadertoy.com oppure il meno conosciuto oneshader.net.
Tramite queste piccole piattaforme, è possibile scrivere e provare (e condividere) dei fragment shader senza dover avere nozioni particolari o avanzate su OpenGL o altro. E, di fatto, senza dover “installare” nulla di specifico (a parte avere un browser che supporta WebGL)!

Ho già realizzato diversi shader, li potete vedere qui su shadertoy: www.shadertoy.com/user/andbin

Quelli che ho fatto finora sono, chiaramente, abbastanza “semplicciotti”, senza particolari pretese (anche a livello di GPU). Ma su shadertoy ho visto degli shader davvero “pazzeschi” ...
Dal punto di vista tecnico, queste nozioni che ho acquisito non mi servono a granché (di certo non a livello lavorativo, io lavoro e sviluppo in Java su backend) ma vi posso assicurare che è veramente divertentissimo (!!) realizzare questi shader. Soprattutto è bello e interessante vedere come la matematica e i vari calcoli si riflettono sui colori e sulle geometrie che si riescono a produrre, a volte con risultati sorprendenti e pure molto gradevoli!

Spero di avervi dato qualche spunto interessante! ;-)

Devi accedere o registrarti per scrivere nel forum
0 risposte