Tijdens het maken van een Pixel Bender-arceringskernel, kan de auteur metagegevens over de arcering opgeven in de broncode van Pixel Bender. Tijdens het gebruik van een arcering in ActionScript kunt u de arcering bekijken en de metagegevens van de arcering extraheren.
Wanneer u een Shader-instantie maakt en deze instantie aan een Pixel Bender-arcering koppelt, wordt er een ShaderData-object met gegevens over de arcering gemaakt en opgeslagen in de eigenschap
data
van het Shader-object. In de ShaderData-klasse zelf worden geen eigenschappen gedefinieerd. Tijdens de uitvoering wordt echter wel dynamisch een eigenschap aan het ShaderData-object toegevoegd voor elke metagegevenswaarde die in de broncode van de arcering is gedefinieerd. De naam die aan elke eigenschap wordt gegeven, is gelijk aan de naam die in de metagegevens is opgegeven. Stel dat in de broncode van een Pixel Bender-arcering de volgende metagegevensdefinitie is opgenomen:
namespace : "Adobe::Example";
vendor : "Bob Jones";
version : 1;
description : "Creates a version of the specified image with the specified brightness.";
Het ShaderData-object dat voor die arcering is gemaakt, wordt gemaakt met de volgende eigenschappen en waarden:
-
namespace
(String):
"Adobe::Example"
-
vendor
(String):
"Bob Jones"
-
version
(String):
"1"
-
description
(String):
"Creates a version of the specified image with the specified brightness"
Omdat eigenschappen van metagegevens dynamisch aan het ShaderData-object worden toegevoegd, kunt u een
for..in
-lus gebruiken om het ShaderData-object te bekijken. Via deze techniek kunt u te weten komen of de arcering over metagegevens beschikt en wat de waarden van de metagegevens zijn. Naast de eigenschappen van de metagegevens kan een ShaderData-object ook eigenschappen bevatten die invoerwaarden en parameters vertegenwoordigen die in de arcering zijn gedefinieerd. Wanneer u een
for..in
-lus gebruikt om een ShaderData-object te bekijken, moet u het gegevenstype van elke eigenschap controleren om vast te stellen of het bij de eigenschap om invoer (een ShaderInput-instantie), een parameter (een ShaderParameter-instantie) of een metagegevenswaarde (een String-instantie) gaat. In het volgende voorbeeld wordt getoond hoe u een
for..in
-lus gebruikt om de dynamische eigenschappen van de eigenschap
data
van een arcering te bekijken. Elke metagegevenswaarde wordt toegevoegd aan een Vector-instantie met de naam
metadata
. In dit voorbeeld wordt ervan uitgegaan dat er al een Shader-instantie met de naam
myShader
is gemaakt:
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
Zie
Invoer en parameters van arceringen identificeren
voor een versie van dit voorbeeld waarmee ook invoerwaarden en parameters van arceringen worden geëxtraheerd. Zie
Waarden voor invoer en parameters van arceringen opgeven
voor meer informatie over eigenschappen voor invoer en parameters.