Pixel Bender シェーダーの基礎
Flash Player 10 以降、Adobe AIR 1.5 以降
Adobe Pixel Bender は、イメージコンテンツの作成や操作に使用するプログラミング言語です。Pixel Bender を使用して、カーネル(シェーダーとも呼ばれます)を作成します。シェーダーでは、イメージの各ピクセルで個別に実行される単一の関数を定義します。各関数呼び出し結果が、イメージ内のそのピクセル座標の出力カラーとなります。 入力イメージおよびパラメーター値を指定して、操作をカスタマイズできます。シェーダーの 1 回の実行では、入力およびパラメーター値は一定です。唯一変化するのは、関数呼び出しの結果がカラーとなるピクセル座標です。
可能な場合は、複数の出力ピクセル座標のシェーダー関数が並列で呼び出されます。これにより、シェーダーのパフォーマンスが向上し、パフォーマンスに優れた処理を提供できます。
ActionScript では、シェーダーを使用して次の 3 種類のエフェクトを簡単に作成できます。
シェーダーは、スタンドアローンモードでも実行できます。スタンドアローンモードを使用する場合は、事前に用途を指定せずに、シェーダーの結果に直接アクセスします。結果はイメージデータ、バイナリデータ、数値データとしてアクセスできます。データがイメージデータである必要はありません。これらのデータセットを入力としてシェーダーに指定できます。シェーダーでデータが処理されると、シェーダーで返された結果データにアクセスできます。
Pixel Bender は、Flash Player 10 および Adobe AIR 1.5 以降でサポートされています。Pixel Bender のブレンド、フィルター、および塗りは GPU レンダリングではサポートされていません。モバイルデバイスでは、Pixel Bender シェーダーは CPU レンダリングで実行されます。ただし、デスクトップコンピューターの場合と同じレベルのパフォーマンスは得られません。多くのシェーダープログラムを実行する場合のフレームレートは毎秒数フレームです。
重要な概念と用語
次の参照リストに、Pixel Bender シェーダーの作成および使用に関連した重要な用語を示します。
- カーネル
- Pixel Bender では、カーネルはシェーダーと同じものです。Pixel Bender のコードでカーネルを定義し、イメージの各ピクセルで個別に実行される単一の関数を定義します。
- Pixel Bender バイトコード
- Pixel Bender カーネルは、コンパイル時に Pixel Bender バイトコードに変換されます。バイトコードは、実行時にアクセスされ、実行されます。
- Pixel Bender 言語
- Pixel Bender カーネルの作成に使用するプログラミング言語です。
- Pixel Bender Toolkit
- Pixel Bender ソースコードから Pixel Bender バイトコードファイルを作成するのに使用するアプリケーションです。ツールキットを使用して、Pixel Bender ソースコードを作成、テスト、コンパイルできます。
- シェーダー
- 本書の用途では、シェーダーとは Pixel Bender 言語で作成された一連の機能です。シェーダーのコードでは、ビジュアルエフェクトの作成や計算の実行が行われます。どちらの場合も、シェーダーではデータセットが返されます(通常はイメージのピクセル)。シェーダーは各データポイントで同じ操作を実行しますが、唯一の違いは出力ピクセルの座標です。シェーダーは ActionScript で作成するのではありません。Pixel Bender 言語で作成され、Pixel Bender バイトコードにコンパイルされます。コンパイル時に SWF ファイルに埋め込んだり、実行時に外部ファイルとしてロードしたりできます。どちらの場合も、ActionScript で、Shader オブジェクトを作成し、そのオブジェクトをシェーダーのバイトコードにリンクすることでアクセスします。
- シェーダー入力
- 計算で使用するためにシェーダーに提供される複雑な入力であり、通常はビットマップイメージデータです。シェーダーで定義される各入力変数では、単一値(つまり、単一のイメージまたはバイナリデータセット)がシェーダーの実行全体に使用されます。
- シェーダーパラメーター
- 計算で使用するためにシェーダーに提供される単一値(または値の制限されたセット)です。各パラメーター値は単一のシェーダー実行用に定義され、シェーダー実行全体で同じ値が使用されます。
コード例の使用
記載されているサンプルコードリストを実際にテストすることができます。コードをテストするには、コードを実行し、作成された SWF で結果を確認する必要があります。すべての例は、描画 API を使用して、シェーダーエフェクトを使用するコンテンツや、シェーダーエフェクトで変更されるコンテンツを作成します。
例で示すコードリストの大半は、2 つの部分から成ります。1 つは、例で使用するシェーダーの Pixel Bender ソースコードです。まず、Pixel Bender Toolkit を使用して、ソースコードを Pixel Bender バイトコードファイルにコンパイルする必要があります。Pixel Bender バイトコードファイルを作成するには、以下の手順を実行します。
Adobe Pixel Bender Toolkit を開きます。必要に応じて、メニューの Build/Turn on Flash Player warnings and errors を選択します。
Pixel Bender コードリストをコピーし、Pixel Bender Toolkit のコードエディターペインに貼り付けます。
メニューの File/Export kernel filter for Flash Player を選択します。
Pixel Bender バイトコードファイルを Flash ドキュメントと同じディレクトリに保存します。ファイル名は、例の説明で指定されている名前と一致している必要があります。
各例の ActionScript の部分は、クラスファイルとして作成されています。この例を Flash Professional でテストするには、次のようにします。
新しい Flash ドキュメントを作成し、コンピューターに保存します。
新しい ActionScript ファイルを作成し、Flash ドキュメントと同じディレクトリに保存します。 ファイル名は、コードリスト内のクラスの名前と同じ名前にしてください。例えば、コードリストで MyApplication というクラスが定義されている場合は、MyApplication.as という名前で ActionScript ファイルを保存します。
ActionScript ファイル内にコードをコピーし、ファイルを保存します。
Flash ドキュメント内で、ステージまたはワークスペースの空白部分をクリックして、ドキュメントのプロパティインスペクターをアクティブにします。
プロパティインスペクターの「ドキュメントクラス」フィールドに、テキストからコピーした ActionScript クラスの名前を入力します。
制御/ムービープレビューを使用して、プログラムを実行します。
例の結果がプレビューウィンドウに表示されます。
サンプルコードをテストするこれらのテクニックについては、ActionScript の例の使用方法で詳しく説明しています。