Pacchetto | flash.display |
Classe | public final dynamic class ShaderData |
Ereditarietà | ShaderData Object |
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Queste proprietà vengono aggiunte all'oggetto ShaderData al momento della creazione. I nomi delle proprietà corrispondono ai nomi specificati nel codice sorgente dello shader. Il tipo di dati di ogni proprietà varia in base all'aspetto dello shader rappresentato dalle proprietà. Le proprietà che rappresentano i parametri dello shader sono istanze ShaderParameter, le proprietà che rappresentano le immagini di input sono istanze ShaderInput, mentre le proprietà che rappresentano i metadati dello shader sono istanze della classe ActionScript corrispondente al relativo tipo di dati (ad esempio, un'istanza String per i metadati di tipo testo e uint per i metadati di tipo uint).
Considerate, ad esempio, questo shader, definito con un'immagine di input (src
), due parametri (size
e radius
) e tre valori dei metadati (nameSpace
, version
e description
):
<languageVersion : 1.0;> kernel DoNothing < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "A shader that does nothing, but does it well."; > { input image4 src; output pixel4 dst; parameter float2 size < description: "The size of the image to which the kernel is applied"; minValue: float2(0.0, 0.0); maxValue: float2(100.0, 100.0); defaultValue: float2(50.0, 50.0); >; parameter float radius < description: "The radius of the effect"; minValue: 0.0; maxValue: 50.0; defaultValue: 25.0; >; void evaluatePixel() { float2 one = (radius / radius) ∗ (size / size); dst = sampleNearest(src, outCoord()); } }
Se create un'istanza Shader caricando il codice byte per questo shader, l'istanza ShaderData nella relativa proprietà data
conterrà tre proprietà:
Proprietà | Tipo di dati | Valore |
---|---|---|
name | String | "DoNothing" |
nameSpace | String | "Adobe::Example" |
version | String | "1" |
description | String | "Uno shader che non esegue alcuna operazione, ma che funziona correttamente". |
src | ShaderInput | [Un'istanza ShaderInput] |
size | ShaderParameter | [Un'istanza ShaderParameter con proprietà per i metadati del parametro] |
radius | ShaderParameter | [Un'istanza ShaderParameter con proprietà per i metadati del parametro] |
Qualsiasi immagine di input o parametro definito nel codice sorgente dello shader, ma non utilizzato nella funzione evaluatePixel()
dello shader, viene rimosso quando lo shader viene compilato dal codice byte. In tal caso, non viene aggiunta alcuna istanza ShaderInput o ShaderParameter corrispondente come proprietà dell'istanza ShaderData.
Di solito, il codice dello sviluppatore non crea un'istanza ShaderData. Un'istanza ShaderData contenente dati, parametri e input per uno shader è invece disponibile come proprietà data
dell'istanza Shader.
Altri esempi
Elementi API correlati
Metodo | Definito da | ||
---|---|---|---|
ShaderData(byteCode:ByteArray)
Crea un'istanza ShaderData. | ShaderData | ||
Indica se per un oggetto è definita una proprietà specifica. | Object | ||
Indica se un'istanza della classe Object si trova nella catena di prototipi dell'oggetto specificato come parametro. | Object | ||
Indica se la proprietà specificata esiste ed è enumerabile. | Object | ||
Imposta la disponibilità di una proprietà dinamica per le operazioni cicliche. | Object | ||
Restituisce la rappresentazione in formato stringa di questo oggetto, formattato in base alle convenzioni specifiche per le versioni localizzate. | Object | ||
Restituisce la rappresentazione in formato stringa dell'oggetto specificato. | Object | ||
Restituisce il valore di base dell'oggetto specificato. | Object |
ShaderData | () | Funzione di costruzione |
public function ShaderData(byteCode:ByteArray)
Versione linguaggio: | ActionScript 3.0 |
Versioni runtime: | Flash Player 10, AIR 1.5 |
Crea un'istanza ShaderData. Di solito, il codice dello sviluppatore non chiama direttamente la funzione di costruzione ShaderData. Per accedere a un'istanza ShaderData contenente dati, parametri e input per un'istanza Shader viene utilizzata la proprietà data
.
byteCode:ByteArray — Il codice byte dello shader.
|
Elementi API correlati
data
per visualizzare l'input, i parametri e le proprietà dei metadati dello shader.
L'esempio seguente presuppone che sia disponibile un file di codice byte dello shader denominato "donothing.pbj" nella stessa directory di output dell'applicazione.
// // Source code for the shader: // <languageVersion : 1.0;> kernel DoNothing < namespace: "Adobe::Example"; vendor: "Adobe examples"; version: 1; description: "A shader that does nothing, but does it well."; > { input image4 src; output pixel4 dst; parameter float2 size < description: "The size of the image to which the shader is applied"; minValue: float2(0.0, 0.0); maxValue: float2(100.0, 100.0); defaultValue: float2(50.0, 50.0); >; parameter float radius < description: "The radius of the effect"; minValue: float(0.0); maxValue: float(50.0); defaultValue: float(25.0); >; void evaluatePixel() { float2 one = (radius / radius) * (size / size); dst = sampleNearest(src, outCoord()); } } // // ActionScript source code: // package { import flash.display.Shader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; public class ShaderDataExample extends Sprite { private var loader:URLLoader; public function ShaderDataExample() { loader = new URLLoader(); loader.dataFormat = URLLoaderDataFormat.BINARY; loader.addEventListener(Event.COMPLETE, loadCompleteHandler); loader.load(new URLRequest("donothing.pbj")); } private function loadCompleteHandler(event:Event):void { var shader:Shader = new Shader(); shader.byteCode = loader.data; for (var p:String in shader.data) { trace(p, ":", shader.data[p]); for (var d:String in shader.data[p]) { trace("\t", d, ":", shader.data[p][d]); } } } } }
Tue Jun 12 2018, 02:44 PM Z