Grundlagen von Pixel Bender-Shadern

Flash Player 10 und höher, Adobe AIR 1.5 und höher

Adobe Pixel Bender ist eine Programmiersprache, mit der Bildinhalte erstellt oder manipuliert werden können. Mit Pixel Bender können Sie einen Kernel erstellen, der auch als Shader bezeichnet wird. Der Shader definiert eine einzelne Funktion, die an jedem einzelnen der Pixel eines Bildes ausgeführt wird. Das Ergebnis eines jeden Aufrufs der Funktion ist die Ausgabefarbe an der jeweiligen Pixelkoordinate im Bild. Eingabebilder und Parameterwerte können zur Anpassung des Vorgangs angegeben werden. Bei jeder Ausführung des Shaders bleiben Eingabe- und Parameterwerte konstant. Es ändert sich lediglich die Koordinate des Pixels, dessen Farbe das Ergebnis des Funktionsaufrufs ist.

Wenn möglich, wird die Shader-Funktion für mehrere Ausgabepixelkoordinaten parallel aufgerufen. Dies verbessert die Leistung des Shaders und beschleunigt die Verarbeitung.

In ActionScript lassen sich drei Effekttypen mithilfe eines Shaders schnell erstellen:

  • Zeichnungsfüllung

  • Mischmodus

  • Filter

Ein Shader kann auch im Standalone-Modus ausgeführt werden. Im Standalone-Modus wird die beabsichtigte Verwendung nicht im Voraus angegeben, sondern es wird direkt auf das Ergebnis des Shaders zugegriffen. Auf die Ergebnisse kann als Bilddaten oder Binär- oder Zahlendaten zugegriffen werden. Bei den Daten muss es sich nicht um Bilddaten handeln. So können Sie einem Shader auch mit einer Gruppe von Daten als Eingabe versehen. Der Shader verarbeitet die Daten und Sie können auf die vom Shader zurückgegebenen Ergebnisdaten zugreifen.

Pixel Bender-Unterstützung ist ab Flash Player 10 und Adobe AIR 1.5 verfügbar. Pixel Bender-Mischungen, -Filter und -Füllungen werden beim GPU-Rendern nicht unterstützt. Auf Mobilgeräten können Pixel Bender-Shader mit dem CPU-Rendern ausgeführt werden. Die Leistung ist jedoch nicht so gut wie bei Desktopcomputern. Viele Shaderprogramme werden möglicherweise nur mit einer Geschwindigkeit von wenigen Bildern pro Sekunde ausgeführt.

Wichtige Konzepte und Begriffe

In der folgenden Liste sind wichtige Begriffe aufgeführt, die Ihnen beim Erstellen und Verwenden von Pixel Bender-Shadern begegnen:

Kernel
Für Pixel Bender ist ein Kernel dasselbe wie ein Shader. Bei der Verwendung von Pixel Bender definiert Ihr Code einen Kernel, der eine einzelne Funktion definiert, die an jedem der Pixel eines Bildes separat ausgeführt wird.

Pixel Bender-Bytecode
Wenn ein Pixel Bender-Kernel kompiliert wird, wird er in einen Pixel Bender-Bytecode umgewandelt. Der Bytecode wird zur Laufzeit ausgeführt.

Pixel Bender-Sprache
Die Programmiersprache, die zur Erstellung eines Pixel Bender-Kernels verwendet wird.

Pixel Bender-Toolkit
Die Anwendung, mit der eine Pixel Bender-Bytecodedatei aus Pixel Bender-Quellcode erstellt wird. Mit dem Toolkit können Sie Pixel Bender-Quellcode schreiben, testen und kompilieren.

Shader
Für die Zwecke dieses Dokuments ist ein Shader ein Satz von Funktionen, die in der Pixel Bender-Sprache geschrieben wurden. Der Code eines Shaders erzeugt visuelle Effekte oder führt eine Berechnung durch. In beiden Fällen gibt der Shader eine Gruppe von Daten zurück (in der Regel die Pixel eines Bildes). Der Shader führt denselben Vorgang für jeden Datenpunkt aus. Der einzige Unterschied liegt in den Koordinaten des Ausgabepixels. Der Shader wird nicht in ActionScript geschrieben. Er wird in der Pixel Bender-Sprache geschrieben und in Pixel Bender-Bytecode kompiliert. Er kann während der Kompilierung in eine SWF-Datei eingebettet oder zur Laufzeit als externe Datei geladen werden. In beiden Fällen wird in ActionScript durch die Erstellung eines Shader-Objekts, das mit dem Shader-Bytecode verknüpft wird, auf ihn zugegriffen.

Shader-Eingabe
Eine komplexe Eingabe, in der Regel Bitmap-Bilddaten, die dem Shader für seine Berechnungen zur Verfügung gestellt werden. Für jede in einem Shader definierte Eingabevariable wird ein einzelner Wert (also ein einzelnes Bild oder ein Satz von Binärdaten) für die gesamte Ausführung des Shaders verwendet.

Shader-Parameter
Ein einzelner Wert oder ein eingeschränkter Satz von Werten, die dem Shader für seine Berechnungen zur Verfügung gestellt werden. Jeder Parameterwert wird für eine einzelne Shader-Ausführung definiert. Dieser Wert wird dann während der gesamten Ausführung des Shaders verwendet.

Verwenden der Codebeispiele

Vielleicht möchten Sie die bereitgestellten Codebeispiele testen. Dies beinhaltet das Ausführen des Codes und das Betrachten der Ergebnisse in der erstellten SWF-Datei. In allen Beispielen werden Inhalte mit der Zeichnungs-API erstellt, welche den Shader-Effekt verwendet oder durch in verändert wird.

Der Großteil des Beispielcodes besteht aus zwei Teilen. Zum einen aus dem Pixel Bender-Quellcode für den Shader, der im Beispiel verwendet wird. Sie müssen zuerst das Pixel Bender Toolkit verwenden, um den Quellcode in eine Pixel Bender-Bytecodedatei zu kompilieren. Gehen Sie bei der Erstellung der Pixel Bender-Bytecodeatei wie folgt vor:

  1. Öffnen Sie das Adobe Pixel Bender Toolkit. Wählen Sie bei Bedarf aus dem Menü „Build“ (Erstellen) die Option „Turn on Flash Player warnings and errors“ (Flash Player-Warnungen und Fehlermeldungen aktivieren).

  2. Kopieren Sie das Pixel Bender-Codebeispiel und fügen Sie sie im Codeeditorfenster im Pixel Bender Toolkit ein.

  3. Wählen Sie aus dem Menü „File“ (Datei) die Option „Export kernel filter for Flash Player“ (Kernelfilter für Flash Player exportieren).

  4. Speichern Sie die Pixel Bender-Bytecodedatei im gleichen Verzeichnis wie das Flash-Dokument. Der Dateiname sollte dem im Beispielverzeichnis angegebenen Namen entsprechen.

Der ActionScript-Teil jedes Beispiels wird als Klassendatei geschrieben. So testen Sie das Beispiel in Flash Professional:

  1. Erstellen Sie ein leeres Flash-Dokument und speichern Sie es auf Ihrem Computer.

  2. Erstellen Sie eine neue ActionScript-Datei und speichern Sie sie im selben Verzeichnis wie das Flash-Dokument. Der Name der Datei sollte mit dem Namen der Klasse im Codebeispiel übereinstimmen. Definiert die Codeliste zum Beispiel eine Klasse mit dem Namen „MyApplication“, speichern Sie die ActionScript-Datei unter dem Namen „MyApplication.as“.

  3. Kopieren Sie das Codebeispiel in die ActionScript-Datei und speichern Sie die Datei.

  4. Klicken Sie im Flash-Dokument auf eine leere Stelle der Bühne oder des Arbeitsbereichs, um den Eigenschafteninspektor des Dokuments zu aktivieren.

  5. Geben Sie im Eigenschafteninspektor im Feld „Dokumentklasse“ den Namen der aus dem Text kopierten ActionScript-Klasse ein.

  6. Starten Sie das Programm mit „Steuerung“ > „Film testen“.

    Die Ergebnisse des Codebeispiels werden im Vorschaufenster angezeigt.

Diese Techniken zum Testen von Beispielcode werden ausführlich unter Verwendung der ActionScript-Beispiele erläutert.