Introduzione agli shader HeavyM per creare i propri VFX

Introduzione

Siete interessati a creare i vostri effetti visivi in HeavyM? In questo articolo presenteremo le entusiasmanti possibilità creative offerte dagli shader. A proposito, cos'è uno shader?

Uno shader è un programma per computer che viene eseguito sulla scheda grafica del computer. Consente di manipolare rapidamente i dati visualizzati sullo schermo o sul videoproiettore: i pixel.

È una tecnologia poco conosciuta perché considerata astratta, ma gli shader sono molto presenti nella nostra vita quotidiana. Questi piccoli programmi per computer simulano in modo realistico effetti visivi complessi come la pioggia, la nebbia, il riflesso della luce, il rilievo degli oggetti, ecc. Sono quindi ampiamente utilizzati nei videogiochi, nei film che richiedono effetti speciali, nei set televisivi... e nell'arte digitale, il campo su cui ci concentriamo qui.

Nel software HeavyM, gli shader incorporati offrono molte possibilità. È anche possibile importare i propri shader, aumentando così all'infinito il numero di combinazioni!

Esempio di videogioco che utilizza gli shader: Minecraft

Esempio di videogioco che utilizza gli shader: Minecraft

Proiezione mappatura delle prestazioni della miniera

Esempio di utilizzo di uno shader durante una performance di mappatura di proiezione

Parte 1: Tecnologia degli shader

Per capire meglio l'idea degli shader, prendiamo come esempio la creazione di un disegno a mano. È necessario disegnare uno per uno gli elementi che lo compongono. Si inizia con forme geometriche come cerchi, rettangoli e linee e poi si aggiungono i colori. Si procede passo dopo passo come se si dovesse copiare il disegno manualmente. Con gli shader, il processo è molto più veloce perché tutte queste operazioni vengono eseguite in una sola volta, come un timbro applicato al foglio di carta con un solo gesto. La cosa migliore è che questo timbro può cambiare a seconda delle informazioni fornite, come l'ora, la posizione o i colori degli elementi già presenti sul foglio.

Perché gli shader sono veloci?

Gli shader sono programmi molto leggeri perché, a differenza di software come HeavyM, che contengono diverse centinaia di migliaia di righe di codice, uno shader contiene generalmente solo poche centinaia di righe al massimo. La velocità degli shader è dovuta principalmente all'architettura dell'hardware che ne consente l'esecuzione: la scheda grafica. Per utilizzare HeavyM, è sicuramente necessario prestare attenzione a questo aspetto, poiché consente di moltiplicare le possibilità offerte dal software.

A differenza della CPU del computer, che elabora i compiti uno dopo l'altro, i calcoli della scheda grafica vengono eseguiti in parallelo. Invece di avere un singolo processore con una potenza di calcolo significativa, la scheda grafica ha una moltitudine di piccoli processori. Ciò significa che possono eseguire operazioni simultaneamente. Grazie a questa parallelizzazione, gli shader possono eseguire calcoli grafici complessi in pochi millisecondi.

Il vantaggio degli shader: arte interattiva

Grazie alla velocità di esecuzione degli shader, è possibile creare immagini in tempo reale, cioè generate nel momento in cui vengono viste. Il termine tempo reale è usato in contrasto con il termine precompresso, che si applica a un file video renderizzato fotogramma per fotogramma. I calcoli di rendering possono richiedere molto tempo e anche diversi giorni! Con gli shader è possibile manipolare direttamente le immagini, proprio come in un videogioco. L'arte digitale interattiva si basa su questo principio in tempo reale perché permette di generare immagini che reagiscono alla musica o ai movimenti delle persone. Per vedere due esempi di performance che mescolano musica e immagini, date un'occhiata al lavoro di Weirdcore per i concerti di Aphew Twin o Le performance di Nonotak.

Tipi di shader

Gli shader non sono altro che file di testo con una particolare estensione. Vedremo che esistono diversi tipi di shader. Il fattore comune è che sono codificati nel linguaggio GLSL: OpenGL Shading Language. Esistono altri tipi di shader a seconda della piattaforma e dell'hardware, ma qui ci concentreremo sugli shader basati su OpenGL. Per utilizzare gli shader in HeavyM, è necessaria una scheda grafica che supporti OpenGL 2.0.

Pixel shader o Fragment shader

Il fragment shader o pixel shader è uno shader il cui scopo è calcolare il colore di ogni singolo pixel. Prende in input i dati di ciascun pixel dell'immagine (posizione, coordinate della texture, colore) e ne restituisce il colore.

Sono questi gli shader che vi interessa utilizzare con HeavyM. Di solito si tratta di file .FRAG o .FS nel caso del formato ISF. Il formato ISF fornisce uno standard per i frammenti di shader GLSL, in modo che possano essere interpretati più facilmente dalle applicazioni interattive.

Shader Vertex

I Vertex shader vengono utilizzati per trasformare i picchi di input in pixel. 

Si tratta di un file .VS che a volte accompagna il pixel shader, ha lo stesso nome e si trova nella stessa cartella.

Dove trovare gli shader?

Non è necessario conoscere la programmazione per utilizzare gli shader con HeavyM. Oltre alla libreria integrata nel software, esistono piattaforme per trovare nuovi shader senza doverli creare da soli. La comunità di artisti degli shader è in crescita e spesso è possibile utilizzare liberamente i lavori che condividono.

Per trovare .FRAG: http://glslsandbox.com/ e https://www.shadertoy.com/

Attenzione: i file .FRAG non sono supportati dalla HeavyM. È necessario convertirli in .ISF e di seguito viene fornito un metodo per farlo.

Assicuratevi di controllare i diritti di utilizzo nella licenza solitamente specificata all'inizio del codice shader. Se non ci sono indicazioni particolari, il copyright si applica per default e si consiglia vivamente di discutere con l'autore del programma se si desidera farne un uso commerciale.

Sviluppare i propri shader

Per creare i propri shader, si consiglia di utilizzare direttamente il formato ISF in modo che siano compatibili con il maggior numero di applicazioni. Lo scopo di questo articolo non è quello di fornire un apprendimento del codice GLSL, il linguaggio utilizzato dal formato ISF. Per questo suggeriamo di leggere i siti molto completi :

Tuttavia, per iniziare, è possibile visitare il sito ISF e modificare gli shader esistenti. Questo sito interattivo permette di visualizzare dal vivo le modifiche apportate allo shader. È anche possibile partire da un modello di base.

Lo svantaggio principale della creazione e della modifica degli shader è l'assenza di feedback di errore. Quando si verifica un problema di progettazione, lo shader non viene eseguito né visualizzato. È quindi difficile trovare la fonte dell'errore. È quindi necessario essere rigorosi nel codice.

Parte 2: Shader in HeavyM

Il software HeavyM offre alcune centinaia di shader nativi nella sua libreria di effetti visivi integrata. È possibile utilizzare diversi tipi di effetti nel software, a seconda delle caratteristiche utilizzate.

Effetti degli shader sulle forme

Facendo clic sulle icone rosse sul lato destro dell'interfaccia, si ha accesso a categorie di effetti che si adattano automaticamente alle forme disegnate. Questi effetti sono collegati ai gruppi nel pannello dei livelli a sinistra. Tutte le forme di un gruppo hanno lo stesso aspetto. Per avere effetti diversi per forme diverse, è necessario creare altri gruppi e aggiungervi le forme.

HeavyM Shader - Effetti sulle forme

Attualmente non è possibile aggiungere o modificare gli shader degli effetti esistenti in questa categoria.

Shader per la generazione di immagini

Aggiungere gli shader che generano immagini come sorgenti, nel pannello accessibile tramite l'icona bianca situata nella barra degli strumenti verticale a destra. Questi shader richiedono la creazione di un player per essere visualizzati. Collegare la sorgente al lettore facendo clic sull'icona di destinazione. Gli shader che generano immagini non hanno una durata predefinita, perché si tratta di un programma che viene eseguito in loop. Tuttavia, è possibile modificare la durata di visualizzazione della sorgente.

Shader - Effetti generativi

Elaborazione degli shader sui giocatori

È possibile applicare effetti di elaborazione delle immagini al player. A tale scopo, selezionare il player e aggiungere gli effetti nelle Proprietà in basso a sinistra con il pulsante + . Gli effetti vengono aggiunti uno dopo l'altro. Ogni lettore è indipendente, pertanto la sorgente e gli effetti di elaborazione saranno diversi da un lettore all'altro, anche se i lettori fanno parte dello stesso gruppo.

Shader - Effetti dei giocatori

Elaborazione di shader su sequenze

Gli shader di elaborazione delle immagini possono anche essere applicati all'intero output video. Questi effetti sono relativi alle sequenze. Per aggiungere un effetto di elaborazione a una sequenza, fare clic sulla ruota dentata e aggiungere uno shader con il pulsante +. Gli effetti di elaborazione sulle sequenze sono gli stessi degli effetti di elaborazione sui player.

Shader HeavyM - Effetti sequenza

Shader di transizione sulle sequenze

Anche le transizioni sono legate alla sequenza e vengono applicate all'intera uscita video. Per impostazione predefinita, la transizione applicata è una dissolvenza di 0,20 secondi. È possibile modificare questa transizione nel menu accessibile facendo clic sulla ruota dentata della sequenza. Le transizioni vengono applicate solo all'ingresso della sequenza.

HeavyM - Transizioni

Importazione di shader

Abbiamo visto che in HeavyM esistono due categorie principali di shader: shader di generazione e shader di elaborazione. La HeavyM consente di combinare facilmente gli shader di queste due categorie. L'HeavyM fornisce shader predefiniti nelle schede Libreria di ogni finestra di selezione degli shader. Tutti questi shader sono .FS e quindi conformi allo standard ISF. Per importare i propri shader nella scheda I miei shader, è necessario rispettare questo standard. In questo modo, i parametri degli shader possono essere facilmente modificati con l'interfaccia di HeavyM.

Volete importare altri formati di shader in HeavyM? È molto facile convertire gli shader utilizzando questo strumento: Desktop ISF Editor (Windows beta/Mac) con le funzioni "Importa da GLSL Sandbox" e "Importa da Shadertoy".

Infine, se si desidera comprendere in dettaglio l'architettura del formato ISF per crearne uno proprio, si consiglia di dare un'occhiata alla documentazione del formato ISF: https://docs.isf.video/

Parte 3: controllo degli shader

Gli shader consentono di ottenere effetti visivi in tempo reale che possono essere modificati in diretta, senza dover passare attraverso una fase di rendering. Ecco le diverse possibilità per controllare gli effetti e creare immagini interattive.

I parametri dello shader possono essere modificati facendo clic sulla ruota dentata dell'icona della sorgente. La scala dei valori è normalizzata tra 0 e 100 e non corrisponde a un'unità particolare. In HeavyM sono disponibili diverse modalità di variazione dei parametri, individuabili facendo clic sulla freccia accanto a ciascun parametro dello shader.

La modalità Valore fisso

È la modalità predefinita che consente di modificare il valore con il mouse. Lo svantaggio è che si può modificare solo un parametro alla volta. È possibile inserire un valore anche con la tastiera.

I generatori di valore

HeavyM offre 7 generatori di valori che consentono di modificare automaticamente i parametri degli shader. Si tratta di generatori di tipo LFO (Low Frequency Oscillator), come quelli presenti nei software musicali o nei sintetizzatori. Per ogni generatore sono disponibili due modalità di animazione: BPM o temporale. La modalità BPM è collegata al Tempo generale in basso a destra dell'interfaccia, simboleggiato dall'icona del metronomo. La modalità temporale consente di definire una frequenza indipendente dal tempo generale.

HeavyM - LFO

Controllo attraverso l'analisi del suono

In basso a destra dell'interfaccia si trova il modulo di analisi del suono. Consente di rilevare le variazioni di ampiezza su 3 diverse gamme di frequenza: Bassi, medi e alti. È possibile trovare le variazioni di questi valori nelle modalità di variazione dei parametri dello shader.

Shader HeavyM - Analisi del suono

Controllo MIDI

Volete controllare manualmente diversi parametri contemporaneamente? Utilizzate il protocollo MIDI. Esistono molti controller MIDI per la musica sul mercato. Sono tutti compatibili con l'HeavyM. Collegate il vostro hardware nella finestra di configurazione, accessibile tramite l'icona arancione nell'angolo superiore destro dell'interfaccia. Quindi, la modalità di apprendimento MIDI consente di configurare il collegamento tra i parametri dello shader e i tasti dell'hardware.

HeavyM Shaders - MIDI

Conclusione

Le possibilità creative offerte dagli shader sono infinite. Questi programmi consentono di sfruttare la potenza della scheda grafica con pochi clic. Il computer consente di accedere facilmente all'arte generativa, che consiste nel creare opere a partire da algoritmi. Molti artisti digitali utilizzano questa tecnica, ad esempio Antoine Schmidt, Miguel Chevalier, Vera Molnár, Du Zhenjun, Daniel Rozin... 

Con HeavyM, abbiamo visto che è molto facile usare e controllare gli shader. Combinateli senza limiti per creare le vostre immagini e la vostra identità!