パッケージflash.display
クラスpublic final dynamic class ShaderData
継承ShaderData Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

ShaderData オブジェクトには、シェーダカーネルのパラメータと入力を表すプロパティ、シェーダに指定されたメタデータを含むプロパティがあります。

これらのプロパティは、ShaderData オブジェクトの作成時に追加されます。プロパティ名はシェーダのソースコードで指定された名前と一致します。各プロパティのデータ型は、そのプロパティがシェーダの何を表すかによって異なります。それぞれのデータ型に対応して、シェーダパラメータを表すプロパティは ShaderParameter インスタンス、入力イメージを表すプロパティは ShaderInput インスタンス、シェーダメタデータを表すプロパティは ActionScript クラスのインスタンスとなります。例えば、テキストメタデータの場合は String インスタンス、uint メタデータの場合は uint となります。

例えば、1 つの入力イメージ(src)、2 つのパラメータ(sizeradius)、3 つのメタデータ値(nameSpaceversiondescription)で定義されるシェーダがあるとします。

  <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 インスタンスには次のプロパティが含まれます。

プロパティデータ型
nameString"DoNothing"
nameSpaceString"Adobe::Example"
versionString"1"
descriptionString"A shader that does nothing, but does it well."
srcShaderInput[ShaderInput インスタンス]
sizeShaderParameter[ShaderParameter インスタンスとパラメータメタデータのプロパティ]
radiusShaderParameter[ShaderParameter インスタンスとパラメータメタデータのプロパティ]

シェーダソースコードで定義されていても、シェーダの evaluatePixel() 関数で使用されなかった入力イメージやパラメータは、シェーダがバイトコードにコンパイルされるときに削除されます。その場合、対応する ShaderInput と ShaderParameter インスタンスは ShaderData インスタンスのプロパティとして追加されません。

一般に、開発者コードでは ShaderData インスタンスは作成されません。シェーダのデータ、パラメータ、および入力を含む ShaderData インスタンスは、Shader インスタンスの data プロパティとして使用できます。

例を表示

関連項目

flash.display.Shader.data
flash.display.ShaderInput
flash.display.ShaderParameter


パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
パブリックメソッド
 メソッド定義元
  
ShaderData インスタンスを作成します。
ShaderData
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
コンストラクタの詳細
ShaderData()コンストラクタ
public function ShaderData(byteCode:ByteArray)

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

ShaderData インスタンスを作成します。一般に、ShaderData コンストラクタは開発者コードでは直接呼び出されません。Shader インスタンスのデータ、パラメータ、入力を含む ShaderData インスタンスは、data プロパティを使用してアクセスします。

パラメータ
byteCode:ByteArray — シェーダのバイトコードです。

関連項目

例の使用法
ShaderDataExample.1.as

次の例では、シェーダを読み込み、ShaderData インスタンスを 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