パッケージ | 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
プロパティとして使用できます。
関連する API エレメント
メソッド | 定義元 | ||
---|---|---|---|
ShaderData(byteCode:ByteArray)
ShaderData インスタンスを作成します。 | ShaderData | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
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 — シェーダーのバイトコードです。
|
関連する API エレメント
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]); } } } } }
Tue Jun 12 2018, 10:34 AM Z