15.10.2012 Views

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

Actionscript 3 Entwicklerhandbuch

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

ACTIONSCRIPT 3.0 ENTWICKLERHANDBUCH<br />

Arbeiten mit Pixel Bender-Shadern<br />

Zugreifen auf Shader-Metadaten<br />

Flash Player 10 und höher, Adobe AIR 1.5 und höher<br />

Beim Erstellen eines Shader-Kernels in Pixel Bender kann der Ersteller im Pixel Bender-Quellcode Metadaten zum<br />

Shader angeben. Bei der Verwendung eines Shaders in ActionScript haben Sie die Möglichkeit, diesen zu analysieren<br />

und die zugehörigen Metadaten zu extrahieren.<br />

Wenn Sie eine Shader-Instanz erstellen und mit einem Pixel Bender-Shader verknüpfen, wird ein ShaderData-Objekt<br />

mit Daten zu dem Shader erstellt und in der data-Eigenschaft des Shader-Objekts gespeichert. Die ShaderData-Klasse<br />

selbst definiert keine Eigenschaften. Zur Laufzeit wird dem ShaderData-Objekt jedoch dynamisch eine Eigenschaft für<br />

jeden Metadatenwert hinzugefügt, der im Quellcode des Shaders definiert ist. Der Name der einzelnen Eigenschaften<br />

entspricht dem Namen, der in den Metadaten angegeben ist. Angenommen, der Quellcode eines Pixel Bender-Shaders<br />

enthält die folgende Metadatendefinition:<br />

namespace : "Adobe::Example";<br />

vendor : "Bob Jones";<br />

version : 1;<br />

description : "Creates a version of the specified image with the specified brightness.";<br />

Das ShaderData-Objekt für diesen Shader wird dann mit den folgenden Eigenschaften und Werten erstellt:<br />

namespace (String): "Adobe::Example"<br />

vendor (String): "Bob Jones"<br />

version (String): "1"<br />

description (String): "Creates a version of the specified image with the specified brightness"<br />

Da Metadateneigenschaften dem ShaderData-Objekt dynamisch hinzugefügt werden, können Sie eine for..in-<br />

Schleife verwenden, um das ShaderData-Objekt zu analysieren. Mit diesem Verfahren können Sie ermitteln, ob der<br />

Shader Metadaten enthält und wie die Metadatenwerte lauten. Zusätzlich zu Metadateneigenschaften kann ein<br />

ShaderData-Objekt Eigenschaften aufweisen, die in dem Shader definierte Eingaben und Parameter darstellen. Bei<br />

Verwendung einer for..in-Schleife zum Analysieren eines ShaderData-Objekts müssen Sie den Datentyp jeder<br />

Eigenschaft überprüfen. Auf diese Weise können Sie feststellen, ob die Eigenschaft eine Eingabe (eine ShaderInput-<br />

Instanz), ein Parameter (eine ShaderParameter-Instanz) oder ein Metadatenwert (eine String-Instanz) ist. Das folgende<br />

Beispiel veranschaulicht, wie Sie mit der for..in-Schleife die dynamischen Eigenschaften der data-Eigenschaft eines<br />

Shaders überprüfen. Jeder Metadatenwert wird einer Vector-Instanz mit dem Namen metadata hinzugefügt. Beachten<br />

Sie, dass für dieses Beispiel bereits eine Shader-Instanz mit dem Namen myShader erstellt sein muss.<br />

var shaderData:ShaderData = myShader.data;<br />

var metadata:Vector. = new Vector.();<br />

for (var prop:String in shaderData)<br />

{<br />

if (!(shaderData[prop] is ShaderInput) && !(shaderData[prop] is ShaderParameter))<br />

{<br />

metadata[metadata.length] = shaderData[prop];<br />

}<br />

}<br />

// do something with the metadata<br />

Eine Version dieses Beispiels, in der zudem Shader-Eingaben und -Parameter extrahiert werden, finden Sie unter<br />

„Identifizieren von Shader-Eingaben und -Parametern“ auf Seite 324. Weitere Informationen zu Eingabe- und<br />

Parametereigenschaften finden Sie unter „Angeben von Shader-Eingaben und -Parameterwerten“ auf Seite 324.<br />

Letzte Aktualisierung 27.6.2012<br />

323

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!