| パッケージ | flash.display |
| クラス | public final dynamic class ShaderData |
| 継承 | ShaderData Object |
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
これらのプロパティは、ShaderData オブジェクトの作成時に追加されます。プロパティ名はシェーダのソースコードで指定された名前と一致します。各プロパティのデータ型は、そのプロパティがシェーダの何を表すかによって異なります。それぞれのデータ型に対応して、シェーダパラメータを表すプロパティは ShaderParameter インスタンス、入力イメージを表すプロパティは ShaderInput インスタンス、シェーダメタデータを表すプロパティは ActionScript クラスのインスタンスとなります。例えば、テキストメタデータの場合は String インスタンス、uint メタデータの場合は uint となります。
例えば、1 つの入力イメージ(src)、2 つのパラメータ(size と radius)、3 つのメタデータ値(nameSpace、version、description)で定義されるシェーダがあるとします。
<languageVersion : 1.0;>
kernel DoNothing
<
namespace: "Adobe::Example";
vendor: "Adobe examples";
version: 1;
description: "A shader that does nothing, but does it well.";
>
{
input image4 src;
output pixel4 dst;
parameter float2 size
<
description: "The size of the image to which the kernel is applied";
minValue: float2(0.0, 0.0);
maxValue: float2(100.0, 100.0);
defaultValue: float2(50.0, 50.0);
>;
parameter float radius
<
description: "The radius of the effect";
minValue: 0.0;
maxValue: 50.0;
defaultValue: 25.0;
>;
void evaluatePixel()
{
float2 one = (radius / radius) ∗ (size / size);
dst = sampleNearest(src, outCoord());
}
}
このシェーダのバイトコードを読み込んで Shader インスタンスを作成すると、data プロパティの ShaderData インスタンスには次のプロパティが含まれます。
| プロパティ | データ型 | 値 |
|---|---|---|
| name | String | "DoNothing" |
| nameSpace | String | "Adobe::Example" |
| version | String | "1" |
| description | String | "A shader that does nothing, but does it well." |
| src | ShaderInput | [ShaderInput インスタンス] |
| size | ShaderParameter | [ShaderParameter インスタンスとパラメータメタデータのプロパティ] |
| radius | ShaderParameter | [ShaderParameter インスタンスとパラメータメタデータのプロパティ] |
シェーダソースコードで定義されていても、シェーダの evaluatePixel() 関数で使用されなかった入力イメージやパラメータは、シェーダがバイトコードにコンパイルされるときに削除されます。その場合、対応する ShaderInput と ShaderParameter インスタンスは ShaderData インスタンスのプロパティとして追加されません。
一般に、開発者コードでは ShaderData インスタンスは作成されません。シェーダのデータ、パラメータ、および入力を含む ShaderData インスタンスは、Shader インスタンスの data プロパティとして使用できます。
関連項目
| メソッド | 定義元 | ||
|---|---|---|---|
ShaderData インスタンスを作成します。 | ShaderData | ||
![]() |
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | |
![]() |
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | |
![]() |
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | |
![]() |
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | |
![]() |
指定されたオブジェクトのストリング表現を返します。 | Object | |
![]() |
指定されたオブジェクトのプリミティブな値を返します。 | Object | |
| ShaderData | () | コンストラクタ |
public function ShaderData(byteCode:ByteArray)| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
ShaderData インスタンスを作成します。一般に、ShaderData コンストラクタは開発者コードでは直接呼び出されません。Shader インスタンスのデータ、パラメータ、入力を含む ShaderData インスタンスは、data プロパティを使用してアクセスします。
byteCode:ByteArray — シェーダのバイトコードです。
|
関連項目
data プロパティで列挙し、シェーダの入力、パラメータ、メタデータの各プロパティを表示します。
この例では、"donothing.pbj" という名前のシェーダバイトコードファイルが、アプリケーションの出力先と同じディレクトリにあるものとします。
//
// Source code for the shader:
//
<languageVersion : 1.0;>
kernel DoNothing
<
namespace: "Adobe::Example";
vendor: "Adobe examples";
version: 1;
description: "A shader that does nothing, but does it well.";
>
{
input image4 src;
output pixel4 dst;
parameter float2 size
<
description: "The size of the image to which the shader is applied";
minValue: float2(0.0, 0.0);
maxValue: float2(100.0, 100.0);
defaultValue: float2(50.0, 50.0);
>;
parameter float radius
<
description: "The radius of the effect";
minValue: float(0.0);
maxValue: float(50.0);
defaultValue: float(25.0);
>;
void evaluatePixel()
{
float2 one = (radius / radius) * (size / size);
dst = sampleNearest(src, outCoord());
}
}
//
// ActionScript source code:
//
package {
import flash.display.Shader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
public class ShaderDataExample extends Sprite {
private var loader:URLLoader;
public function ShaderDataExample() {
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, loadCompleteHandler);
loader.load(new URLRequest("donothing.pbj"));
}
private function loadCompleteHandler(event:Event):void {
var shader:Shader = new Shader();
shader.byteCode = loader.data;
for (var p:String in shader.data) {
trace(p, ":", shader.data[p]);
for (var d:String in shader.data[p]) {
trace("\t", d, ":", shader.data[p][d]);
}
}
}
}
}
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート
現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/flash/display/ShaderData.html