Nozioni di base sugli shader di Pixel Bender

Flash Player 10 e versioni successive, Adobe AIR 1.5 e versioni successive

Adobe Pixel Bender è un linguaggio di programmazione utilizzato per creare o modificare il contenuto delle immagini. Con Pixel Bender potete creare un kernel, detto anche “shader”. Lo shader definisce una funzione singola che viene eseguita in modo individuale su ciascuno dei pixel di un'immagine. Il risultato di ogni chiamata alla funzione è il colore di output in corrispondenza di quella coordinata di pixel nell'immagine. Potete specificare le immagini di input e i valori dei parametri per personalizzare l'operazione. In un'esecuzione singola di uno shader i valori di input e dei parametri sono costanti. L'unico elemento che varia sono le coordinate dei pixel i cui colori rappresentano il risultato della chiamata alla funzione.

Se possibile, la funzione dello shader viene chiamata parallelamente per più coordinate di pixel di output per migliorare le prestazioni dello shader e dell'elaborazione.

In ActionScript, mediante uno shader potete creare facilmente tre tipi di effetti:

  • riempimento

  • metodo di fusione

  • filter

Uno shader può anche essere eseguito in modalità autonoma. In questa modalità si accede direttamente al risultato di uno shader anziché specificare a priori l'uso previsto. Potete accedere al risultato come dati di immagine o come dati binari o numerici. Non è necessario che i dati siano di immagine. In questo modo potete fornire allo shader un insieme di dati come input. Lo shader elabora i dati e in seguito potete accedere ai dati risultanti restituiti dallo shader.

il supporto Pixel Bender è disponibile a partire da Flash Player 10 e Adobe AIR 1.5. Fusioni, filtri e riempimenti di Pixel Bender non sono supportati nel rendering GPU. Su dispositivi mobili, gli shader Pixel Bender vengono eseguiti nel rendering CPU. Tuttavia, il livello delle prestazioni non è identico a quello di un computer desktop. Molti programmi shader possono essere eseguiti solo a pochi fotogrammi al secondo.

Concetti e termini importanti

L'elenco di riferimento seguente contiene termini importanti che vengono citati durante la creazione e l'utilizzo di shader di Pixel Bender:

Kernel
In Pixel Bender un kernel corrisponde a uno shader. Mediante Pixel Bender il codice definisce un kernel che a sua volta definisce una funzione singola che viene eseguita in modo individuale su ciascuno dei pixel di un'immagine.

Codice byte Pixel Bender
Quando un kernel Pixel Bender viene compilato, viene trasformato in codice byte Pixel Bender. L'accesso al codice byte e la sua esecuzione avvengono in fase di runtime.

Linguaggio Pixel Bender
Linguaggio di programmazione utilizzato per creare un kernel Pixel Bender.

Pixel Bender Toolkit
Applicazione utilizzata per creare un file di codice byte Pixel Bender dal codice sorgente Pixel Bender. Il toolkit consente di scrivere, provare e compilare il codice sorgente Pixel Bender.

Shader
In questo documento per shader si intende un insieme di funzionalità scritte nel linguaggio Pixel Bender. Il codice di uno shader crea un effetto grafico o esegue un calcolo. In entrambi i casi, lo shader restituisce un insieme di dati (in genere i pixel di un'immagine). Lo shader esegue la stessa operazione su tutti i punti dati; la sola differenza sono le coordinate del pixel di output. Lo shader non è scritto in ActionScript. ma nel linguaggio Pixel Bender e compilato nel codice byte Pixel Bender. Può essere incorporato in un file SWF in fase di compilazione o caricato come file esterno in fase di runtime. In entrambi i casi l'accesso in ActionScript può avvenire creando un oggetto Shader e collegandolo al codice byte dello shader.

Input dello shader
Input complesso, in genere dati di un'immagine bitmap, che viene fornito a uno shader per l'utilizzo nei calcoli. Per ogni variabile di input definita in uno shader, viene utilizzato un unico valore (ovvero un'immagine singola o un insieme di dati binari) per tutta l'esecuzione dello shader.

Parametro dello shader
Valore singolo (o insieme di valori limitato) che viene fornito a uno shader per l'utilizzo nei calcoli. Ogni valore di parametro viene definito per una sola esecuzione di uno shader e lo stesso valore viene utilizzato per tutta l'esecuzione dello shader.

Operazioni con gli esempi di codice

Potete provare gli esempi di codice presentati. La prova degli esempi di codice prevede l'esecuzione del codice e la visualizzazione dei risultati nel file SWF creato. Tutti gli esempi creano contenuto mediante l'API di disegno che utilizza o è modificata dall'effetto dello shader.

La maggior parte del codice di esempio include due parti. Una parte è rappresentata dal codice sorgente Pixel Bender per lo shader utilizzato nell'esempio. Dovete in primo luogo utilizzare Pixel Bender Toolkit per compilare il codice sorgente in un file di codice byte Pixel Bender. Seguite i passaggi riportati di seguito per creare il file del codice byte Pixel Bender:

  1. Aprite Adobe Pixel Bender Toolkit. Se necessario, dal menu Build (Compila) scegliete “Turn on Flash Player warnings and errors” (Attiva avvisi ed errori di Flash Player).

  2. Copiate il codice Pixel Bender e incollatelo nel riquadro dell'editor di codice di Pixel Bender Toolkit.

  3. Dal menu File scegliete “Export kernel filter for Flash Player” (Esporta filtro kernel per Flash Player).

  4. Salvate il file del codice byte Pixel Bender nella stessa directory del documento Flash. Il nome del file deve corrispondere al nome specificato nella descrizione dell'esempio.

La parte ActionScript di ogni esempio è scritta come file di classe. Per provare l'esempio in Flash Professional:

  1. Create un documento Flash vuoto e salvatelo nel computer.

  2. Create un nuovo file ActionScript e salvatelo nella stessa directory del documento Flash. Il nome file deve corrispondere al nome della classe presente nell'esempio di codice. Ad esempio, se l'esempio di codice definisce una classe denominata MyApplication, per salvare il file ActionScript, utilizzate il nome MyApplication.as.

  3. Copiate l'esempio di codice nel file ActionScript e salvare il file.

  4. Nel documento Flash, fate clic in una parte vuota dello stage oppure dell'area di lavoro per attivare la finestra di ispezione Proprietà del documento.

  5. Nella finestra di ispezione Proprietà, nel campo Classe documento inserite il nome della classe ActionScript copiata dal testo.

  6. Eseguite il programma selezionando Controllo > Prova filmato.

    I risultati dell'esempio vengono visualizzati nella finestra di anteprima.

Queste tecniche di test dei codici di esempio sono descritte più dettagliatamente in Utilizzare gli esempi ActionScript .