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 />

Angeben von Shader-Eingaben und -Parameterwerten<br />

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

Die Definition zahlreicher Pixel Bender-Shader sieht vor, dass ein oder mehrere Eingabebilder für die Shader-<br />

Verarbeitung verwendet werden. Ein Shader kann beispielsweise ein Quellbild akzeptieren und dieses Bild mit einem<br />

bestimmten Effekt ausgeben, der darauf angewendet wurde. Abhängig von der Verwendung des Shaders kann der<br />

Eingabewert entweder automatisch festgelegt werden, oder Sie müssen einen Wert explizit angeben. Ebenso geben<br />

zahlreiche Shader Parameter an, mit deren Hilfe die Ausgabe des Shaders angepasst wird. Sie müssen für jeden<br />

Parameter explizit einen Wert festlegen, bevor Sie den Shader verwenden.<br />

Verwenden Sie die data-Eigenschaft des Shader-Objekts, um Shader-Eingaben und -Parameter festzulegen und um<br />

zu bestimmen, ob ein bestimmter Shader Eingaben oder Parameter voraussetzt. Die data-Eigenschaft ist eine<br />

ShaderData-Instanz.<br />

Identifizieren von Shader-Eingaben und -Parametern<br />

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

Beim Angeben von Shader-Eingaben und -Parameterwerten müssen Sie zunächst ermitteln, ob der verwendete Shader<br />

Eingabebilder oder Parameter voraussetzt. Jede Shader-Instanz verfügt über eine data-Eigenschaft, die ein<br />

ShaderData-Objekt enthält. Wenn der Shader Eingaben oder Parameter definiert, erfolgt der Zugriff auf diese als<br />

Eigenschaften des ShaderData-Objekts. Die Namen der Eigenschaften stimmen mit den Namen überein, die im<br />

Shader-Quellcode für die Eingaben und Parameter angegeben sind. Wenn der Shader beispielsweise eine Eingabe mit<br />

dem Namen src definiert, enthält das ShaderData-Objekt eine Eigenschaft mit dem Namen src für diese Eingabe.<br />

Jede Eigenschaft, die eine Eingabe darstellt, ist eine ShaderInput-Instanz. Eigenschaften, die einen Parameter<br />

darstellen, sind ShaderParameter-Instanzen.<br />

Im Idealfall stellt der Ersteller des Shaders entsprechende Dokumentation bereit, in der angegeben wird, welche<br />

Eingabebildwerte und Parameter der Shader voraussetzt, wofür diese stehen, wie die zulässigen Werte lauten usw.<br />

Wenn keine Dokumentation zum Shader verfügbar ist (und Sie den Quellcode nicht haben), können Sie die Shader-<br />

Daten analysieren, um die Eingaben und Parameter zu ermitteln. Die Eigenschaften, die Eingaben und Parameter<br />

repräsentieren, werden dynamisch zum ShaderData-Objekt hinzugefügt. Sie können daher eine for..in-Schleife<br />

nutzen, um das ShaderData-Objekt zu analysieren und zu ermitteln, ob der zugehörige Shader Eingaben oder<br />

Parameter definiert. Wie bereits im Abschnitt „Zugreifen auf Shader-Metadaten“ auf Seite 323 erläutert wurde, wird<br />

auf alle Metadatenwerte, die für einen Shader definiert sind, auch als dynamische Eigenschaft zugegriffen, die der<br />

Shader.data-Eigenschaft hinzugefügt wird. Wenn Sie dieses Verfahren zum Identifizieren von Shader-Eingaben und<br />

-Parametern verwenden, müssen Sie den Datentyp der dynamischen Eigenschaften überprüfen. Wenn eine<br />

Eigenschaft eine ShaderInput-Instanz ist, stellt diese eine Eingabe dar. Handelt es sich um eine ShaderParameter-<br />

Instanz, stellt sie einen Parameter dar. Andernfalls handelt es sich um einen Metadatenwert. Das folgende Beispiel<br />

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

überprüfen. Jede Eingabe (ShaderInput-Objekt) wird einer Vector-Instanz mit dem Namen inputs hinzugefügt.<br />

Jeder Parameter (ShaderParameter-Objekt) wird einer Vector-Instanz mit dem Namen parameters hinzugefügt.<br />

Schließlich werden alle Metadateneigenschaften einer Vector-Instanz mit dem Namen metadata hinzugefügt.<br />

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

Letzte Aktualisierung 27.6.2012<br />

324

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

Saved successfully!

Ooh no, something went wrong!