Tandis qu’il crée un noyau de shader de Pixel Bender, le programmeur peut spécifier des métadonnées sur le shader dans le code source Pixel Bender. Vous pouvez inspecter le shader et extraire ses métadonnées pendant que vous l’utilisez dans ActionScript.
Lorsque vous créez une occurrence de Shader et que vous la liez à un shader de Pixel Bender, un objet ShaderData, qui contient des données sur le shader, est créé et enregistré dans la propriété
data
de l’objet Shader. La classe ShaderData ne définit aucune de ses propres propriétés. Toutefois, lors de l’exécution, une propriété est ajoutée dynamiquement à l’objet ShaderData pour chaque valeur de métadonnées définie dans le code source du shader. Le nom attribué à chaque propriété est pareil à celui spécifié dans les métadonnées. Par exemple, supposez que le code source d’un shader de Pixel Bender contienne la définition des métadonnées suivante :
namespace : "Adobe::Example";
vendor : "Bob Jones";
version : 1;
description : "Creates a version of the specified image with the specified brightness.";
L’objet ShaderData créé pour ce shader l’est avec les propriétés et valeurs suivantes :
-
namespace
(String):
"Adobe::Example"
-
vendor
(String):
"Bob Jones"
-
version
(String):
"1"
-
description
(String):
"Creates a version of the specified image with the specified brightness"
Comme les propriétés de métadonnées sont ajoutées dynamiquement à l’objet ShaderData, vous pouvez utiliser une boucle
for..in
pour inspecter l’objet ShaderData. Cette technique vous permet de vous rendre compte si le shader possède des métadonnées et quelles sont ses valeurs. Outre les propriétés des métadonnées, un objet ShaderData peut avoir des propriétés représentant des entrées et des paramètres qui sont définis dans le shader. Lorsque vous utilisez une boucle
for..in
pour inspecter un objet ShaderData, vérifiez le type de données de chaque propriété pour vous rendre compte si la propriété est une entrée (une occurrence de ShaderInput), un paramètre (une occurrence de ShaderParameter) ou une valeur de métadonnées (une occurrence de String). L’exemple ci-dessous montre comment utiliser une boucle
for..in
pour examiner les propriétés dynamiques de la propriété
data
d’un shader. Chaque valeur de métadonnées est ajoutée à une occurrence de Vector appelée
metadata
. Remarquez que cet exemple suppose qu’une occurrence de Shader appelée
myShader
existe déjà :
var shaderData:ShaderData = myShader.data;
var metadata:Vector.<String> = new Vector.<String>();
for (var prop:String in shaderData)
{
if (!(shaderData[prop] is ShaderInput) && !(shaderData[prop] is ShaderParameter))
{
metadata[metadata.length] = shaderData[prop];
}
}
// do something with the metadata
Pour une version de cet exemple, qui extrait également des entrées et des paramètres de shader, voir
Identification des entrées et des paramètres d’un shader
. Pour plus d’informations sur les propriétés des entrées et des paramètres, voir
Spécification des valeurs des entrées et des paramètres d’un shader
.