Utilizzo degli shader

In breve

Gli shader sono piccoli programmi grafici che girano sulla GPU e generano effetti visivi generativi in tempo reale. Nel video mapping, forniscono texture infinite e dinamiche senza la necessità di file video pesanti. Utilizzando software come HeavyM, è possibile importare facilmente formati standard come ISF e manipolare immagini generative senza dover scrivere alcuna riga di codice.

Che cos’è uno shader?

Uno shader è un tipo di programma informatico progettato specificamente per essere eseguito su un'unità di elaborazione grafica (GPU). Il termine ‘shader’ deriva da ‘shade’ (ombra), poiché uno dei primi impieghi degli shader era proprio quello di simulare ombre e riflessi nella grafica 3D. Tuttavia, oggi, Gli shader vengono utilizzati per un'ampia varietà di operazioni di elaborazione grafica, dall'applicazione di texture e colori alla generazione di effetti speciali complessi.

Shader funzionano a un livello molto basso, il che significa che hanno un controllo diretto e preciso sui singoli pixel che compongono un'immagine o un video. Sono in grado di manipolare i dati delle immagini con estrema rapidità utilizzando risorse minime, il che li rende particolarmente utile per le applicazioni grafiche in tempo reale, come i videogiochi, la realtà virtuale e mappatura video.

I diversi tipi di shader

Esistono diversi tipi di shader, tra cui gli shader dei vertici, che manipolano i punti dati 3D (vertici), gli shader geometrici, che generano nuove forme a partire da questi punti, e gli shader dei frammenti (detti anche shader dei pixel), che determinano il colore finale di ciascun pixel sullo schermo. Gli shader sono in genere scritti in linguaggi di programmazione specializzati, quali GLSL (OpenGL Shading Language) o HLSL (High-Level Shading Language) per DirectX.

Pixel shader o Fragment shader

Lo shader di frammento o pixel shader è uno shader progettato per calcolare il colore di ogni singolo pixel. Accetta in ingresso i dati di ciascun pixel dell'immagine (posizione, coordinate di texture, colore) e restituisce il relativo colore.

Questi shader sono quelli che ti interesserà maggiormente utilizzare con HeavyM. Di solito sono .File .FRAG o .FS nel caso del formato ISF. Il formato ISF definisce uno standard per i frammenti GLSL shader, rendendoli più facili da interpretare da parte delle applicazioni interattive.

Shader Vertex

Gli shader dei vertici vengono utilizzati per trasformare i vertici in pixel.

Sono .File .VS che talvolta accompagnano il pixel shader, con cui condividono lo stesso nome e che devono trovarsi nella stessa cartella.

Shader con effetto "Shape" HeavyM

Cliccando sulle icone rosse sul lato destro dell'interfaccia di HeavyM, si accede a categorie di effetti che si adattano automaticamente alle forme disegnate. Questi effetti sono collegati ai gruppi presenti nel pannello dei livelli a sinistra. Tutte le forme all’interno di un gruppo condividono lo stesso aspetto. Per applicare effetti diversi a forme diverse, è necessario creare gruppi aggiuntivi e aggiungervi le forme.

Al momento non è possibile aggiungere o modificare il codice degli shader di effetto esistenti in questa categoria.

Shader per la generazione di immagini

È possibile aggiungere gli shader di generazione delle immagini come sorgenti nel pannello accessibile tramite l'icona bianca situata nella barra degli strumenti verticale a destra. Per visualizzare questi shader è necessario creare un lettore. Successivamente, collegare la sorgente al lettore cliccando sull'icona a forma di freccia. Gli shader di generazione di immagini non hanno una durata predefinita poiché sono programmi che vengono eseguiti in loop. Tuttavia, è possibile regolare la durata di visualizzazione della sorgente.

Al momento non è possibile aggiungere o modificare il codice degli shader di effetto esistenti in questa categoria.

Shader per la generazione di immagini

È possibile aggiungere gli shader di generazione delle immagini come sorgenti nel pannello accessibile tramite l'icona bianca situata nella barra degli strumenti verticale a destra. Per visualizzare questi shader è necessario creare un lettore. Successivamente, collegare la sorgente al lettore cliccando sull'icona a forma di freccia. Gli shader di generazione di immagini non hanno una durata predefinita poiché sono programmi che vengono eseguiti in loop. Tuttavia, è possibile regolare la durata di visualizzazione della sorgente.

Elaborazione degli shader sui player

È possibile applicare effetti di elaborazione delle immagini al lettore. Per farlo, selezionare il lettore e aggiungere gli effetti nel pannello Proprietà in basso a sinistra utilizzando il pulsante +. Gli effetti vengono aggiunti in sequenza. Ogni lettore è indipendente, pertanto gli effetti di origine e di elaborazione varieranno da un lettore all'altro, anche se i lettori appartengono allo stesso gruppo.

Importazione o creazione di shader

Dove trovare gli shader?

Non è necessario saper programmare per utilizzare gli shader con HeavyM. Oltre alla libreria già inclusa nel software, Esistono piattaforme dove è possibile trovare nuovi shader senza doverli creare da soli. La comunità dei creatori di shader sta crescendo rapidamente, e spesso è possibile utilizzare i lavori che condividono per progetti non commerciali.

Per trovare gli shader .FS: https://www.interactiveshaderformat.com/

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

Nota: i file .FRAG non vengono riconosciuti in HeavyM. Devono essere convertiti in formato .ISF; di seguito forniamo le istruzioni per farlo.

Assicurati di verificare i diritti d'uso riportati nella licenza, solitamente indicati all'inizio del codice dello shader. In assenza di indicazioni specifiche, si applica di default il diritto d'autore; pertanto, ti consigliamo vivamente di consultare l'autore qualora intendi utilizzare lo shader per scopi commerciali.

Importazione degli shader

Come già detto, In HeavyM esistono due categorie principali di shader: gli shader di generazione e gli shader di elaborazione. HeavyM consente di combinare facilmente gli shader di queste due categorie. HeavyM offre shader predefiniti nelle schede "Libreria" di ciascuna finestra di selezione degli shader. Tutti questi shader sono in formato .FS e, pertanto, sono conformi allo standard ISF. Per importare i propri shader nella scheda "I miei shader", devono rispettare questo standard. In questo modo, i parametri dei tuoi shader possono essere facilmente modificati dall'interfaccia di HeavyM.

Vuoi importare altri formati di shader in HeavyM? Convertire gli shader con questi strumenti è semplicissimo:

Sviluppare i propri shader

Per creare i propri shader, consigliamo di utilizzare direttamente il formato ISF per garantire la compatibilità con il maggior numero possibile di applicazioni. Lo scopo di questo articolo non è quello di insegnare la programmazione in GLSL, il linguaggio utilizzato dal formato ISF. A tal fine, consigliamo di consultare i seguenti siti molto completi:

Tuttavia, per cominciare, Non esitate a visitare il sito dell'ISF e a modificare gli shader esistenti. Questo sito interattivo ti permette di vedere in tempo reale le modifiche apportate allo shader. È anche possibile partire da un modello di base.

Lo svantaggio principale della creazione e della modifica degli shader è che non viene fornito alcun feedback sugli errori. In caso di problemi di progettazione, lo shader potrebbe non essere eseguito o non visualizzare nulla, rendendo difficile individuare la causa dell'errore. Pertanto, è fondamentale prestare la massima attenzione durante la scrittura del codice.

Per continuare

Gestione della reattività al suono e alla musica

Questa guida è stata redatta da HeavyM, un'azienda specializzata nel video mapping dal 2013.

Per qualsiasi domanda, commento, suggerimento, ecc., vi preghiamo di utilizzare questo modulo di contatto: https://help.heavym.net/hc/requests/new. Risposta garantita entro 24 ore.

Domande frequenti (FAQ)

Che cos’è uno shader nel video mapping?

Uno shader è un programma informatico utilizzato per calcolare gli effetti di rendering sull'hardware grafico con un elevato grado di flessibilità. Nel video mapping, gli shader vengono utilizzati per generare texture dinamiche in tempo reale ed effetti visivi reattivi all'audio direttamente sulla GPU, anziché riprodurre loop video pre-renderizzati.

Che cos’è il formato ISF?

ISF è l'acronimo di Interactive Shader Format. Si tratta di uno standard basato su GLSL (OpenGL Shading Language) che consente di condividere e utilizzare facilmente effetti visivi generativi tra diversi software di VJing e video mapping, garantendo la compatibilità multipiattaforma.

Devo saper programmare per usare gli shader?

No, non è necessario essere un programmatore. Anche se gli shader sono scritti in codice (GLSL), i moderni video mapping software come HeavyM ti permette di importare file ISF già pronti o di utilizzare effetti shader integrati semplicemente trascinandoli sulle tue forme.