シェーダーのロードまたは埋め込み
Flash Player 10 以降、Adobe AIR 1.5 以降
Pixel Bender シェーダーを ActionScript で使用するには、最初に、ActionScript のコードからシェーダーにアクセスします。シェーダーは Adobe Pixel Bender Toolkit を使用して作成され、Pixel Bender 言語で記述されているので、ActionScript から直接アクセスできません。 代わりに、ActionScript で Pixel Bender シェーダーを表す Shader クラスのインスタンスを作成します。 Shader オブジェクトを使用すると、必要なパラメーターや入力イメージの値など、シェーダーに関する情報を検出できます。 実際にシェーダーを使用するには Shader オブジェクトを他のオブジェクトに渡します。 例えば、シェーダーをフィルターとして使用するには、ShaderFilter オブジェクトの
shader
プロパティに Shader オブジェクトを割り当てます。また、シェーダーを描画の塗りに使用するには、
Graphics.beginShaderFill()
メソッドに Shader オブジェクトを引数として渡します。
ActionScript コードは Adobe Pixel Bender Toolkit(.pbj ファイル)で作成されたシェーダーに 2 つの方法でアクセスできます。
-
実行時にロード:シェーダーファイルは URLLoader オブジェクトを使用して外部アセットとしてロードできます。この方法はテキストファイルなどの外部アセットをロードすることと似ています。次の例は、シェーダーバイトコードファイルを実行時にロードし、それを Shader インスタンスにリンクする方法を示しています。
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, onLoadComplete);
loader.load(new URLRequest("myShader.pbj"));
var shader:Shader;
function onLoadComplete(event:Event):void {
// Create a new shader and set the loaded data as its bytecode
shader = new Shader();
shader.byteCode = loader.data;
// You can also pass the bytecode to the Shader() constructor like this:
// shader = new Shader(loader.data);
// do something with the shader
}
-
SWF ファイルに埋め込む:シェーダーファイルは
[Embed]
メタタグを使用してコンパイル時に SWF ファイルに埋め込むことができます。
[Embed]
メタデータタグは、Flex SDK を使用して SWF ファイルをコンパイルした場合にのみ使用できます。この例では、
[Embed]
タグの
source
パラメーターがシェーダーファイルを指定し、
mimeType
パラメーターは、「
application/octet-stream
」となります。
[Embed(source="myShader.pbj", mimeType="application/octet-stream")]
var MyShaderClass:Class;
// ...
// create a shader and set the embedded shader as its bytecode
var shader:Shader = new Shader();
shader.byteCode = new MyShaderClass();
// You can also pass the bytecode to the Shader() constructor like this:
// var shader:Shader = new Shader(new MyShaderClass());
// do something with the shader
どちらの場合も、未処理のシェーダーバイトコード(
URLLoader.data
プロパティまたは
[Embed]
データクラスのインスタンス)を Shader インスタンスにリンクします。前の例で示すように、バイトコードは 2 つの方法で Shader インスタンスに割り当てることができます。シェーダーバイトコードを引数として
Shader()
コンストラクターに渡します。または、Shader インスタンスの
byteCode
プロパティとして設定することもできます。
Pixel Bender シェーダーを作成し、Shader オブジェクトにリンクすると、様々な方法でエフェクトの作成にシェーダーを使用できます。フィルター、ブレンドモード、ビットマップの塗りなどに使用したり、ビットマップなどのデータのスタンドアローン処理に使用することもできます。Shader オブジェクトの
data
プロパティを使用してシェーダーのメタデータへのアクセス、入力イメージの指定およびパラメーター値の設定も行うことができます。
|
|
|