| パッケージ | flash.display |
| クラス | public class Shader |
| 継承 | Shader Object |
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
shader プロパティに割り当てます。
シェーダがイメージの全ピクセルに対しピクセル単位で実行する関数を定義します。各関数呼び出し結果が、イメージ内のそのピクセル座標の出力カラーとなります。シェーダは 1 つ以上の入力イメージを指定できます。このイメージのコンテンツを関数の出力の決定に使用できます。また、シェーダは 1 つ以上のパラメータを指定することもできます。これは関数出力の計算に使用可能な入力値となります。1 つのシェーダ実行では、入力値とパラメータ値は定数です。唯一変化するのは、関数の結果がカラーとなるピクセル座標です。複数の出力ピクセル座標のシェーダ関数呼び出しは、シェーダ実行パフォーマンスを高めるために、並行して実行されます。
シェーダバイトコードは、実行時に 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
}
[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 new shader and set the embedded shader as its bytecode var shaderShader = 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 インスタンスの byteCode プロパティとして設定することもできます。
Shader インスタンスが作成されたら、次のいくつかの方法のうちどれでも使用できます。
Graphics.beginShaderFill() メソッドに渡します。
shader プロパティに割り当てます。
blendShader プロパティに割り当てます。
shader プロパティに割り当てます。
関連項目
| プロパティ | 定義元 | ||
|---|---|---|---|
| byteCode : ByteArray [書き込み専用] この Shader インスタンスの生のシェーダバイトコードです。 | Shader | ||
![]() | constructor : Object 指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。 | Object | |
| data : ShaderData Shader インスタンスのパラメータ、入力イメージ、およびメタデータにアクセスできます。 | Shader | ||
| precisionHint : String シェーダが実行する算術演算の精度です。 | Shader | ||
![]() | prototype : Object [静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。 | Object | |
| メソッド | 定義元 | ||
|---|---|---|---|
新しい Shader インスタンスを作成します。 | Shader | ||
![]() | オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | |
![]() | Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | |
![]() | 指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | |
![]() | ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | |
![]() | 指定されたオブジェクトのストリング表現を返します。 | Object | |
![]() | 指定されたオブジェクトのプリミティブな値を返します。 | Object | |
| byteCode | プロパティ |
byteCode:ByteArray [書き込み専用] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
この Shader インスタンスの生のシェーダバイトコードです。
public function set byteCode(value:ByteArray):void| data | プロパティ |
data:ShaderData [読み書き可能] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
Shader インスタンスのパラメータ、入力イメージ、およびメタデータにアクセスできます。シェーダのパラメータを表す ShaderParameter オブジェクト、シェーダの入力イメージを表す ShaderInput オブジェクト、シェーダのメタデータを表すその他の値が、Shader インスタンスの作成時に data プロパティオブジェクトの各プロパティとして動的に追加されます。これらのプロパティを使用して、シェーダを検査し、パラメータと入力値を設定することができます。
data オブジェクトの動的プロパティにアクセスし、操作する方法について詳しくは、ShaderData クラスに関する説明を参照してください。
public function get data():ShaderData public function set data(value:ShaderData):void関連項目
| precisionHint | プロパティ |
precisionHint:String [読み書き可能] | 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
シェーダが実行する算術演算の精度です。
precisionHint プロパティで使用可能な値セットは、ShaderPrecision クラスの定数によって定義されます。
デフォルト値は ShaderPrecision.FULL です。 精度を ShaderPrecision.FAST に設定すると、精度が低下しますが算術演算は高速になります。
full 精度モード(ShaderPrecision.FULL)では、すべての算術演算が完全桁の IEEE 32 ビット浮動少数規格で計算され、すべてのプラットフォームで一貫した動作が提供されます。 このモードでは、三角関数や指数関数などの一部の算術演算をスローできます。
fast 精度モード(ShaderPrecision.FAST)は処理速度を最大にするように設計されていますが、異なるプラットフォームや個々の CPU 構成で一貫した結果が得られません。 多くの場合、グラフィックエフェクトの作成にはアーティファクトが見えることもなく、この精度レベルで十分です。
精度モードの選択は、次のシェーダ操作に影響します。これらの操作は、SSE 命令セットを内蔵する Intel プロセッサでは高速になります。
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
atan(x, y)
exp(x)
exp2(x)
log(x)
log2(x)
pow(x, y)
reciprocal(x)
sqrt(x)
public function get precisionHint():String public function set precisionHint(value:String):void関連項目
| Shader | () | コンストラクタ |
public function Shader(code:ByteArray = null)| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | Flash Player 10, AIR 1.5 |
新しい Shader インスタンスを作成します。
パラメータcode:ByteArray (default = null) — Shader にリンクする生のシェーダバイトコードです。 |
この例では、"donothing.pbj" という名前のシェーダバイトコードファイルが、アプリケーションの出力先と同じディレクトリにあるものとします。DoNothing シェーダの Pixel Bender ソースコードは、ShaderData クラスの例にあります。
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 LoadedShaderExample extends Sprite {
private var loader:URLLoader;
public function LoadedShaderExample() {
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;
// do something with the Shader instance
}
}
}この例では、"donothing.pbj" という名前のシェーダバイトコードファイルがアプリケーションのソースコードと同じディレクトリにあり、Flex SDK を使用して SWF をコンパイルしたものとします。DoNothing シェーダの Pixel Bender ソースコードは、ShaderData クラスの例にあります。
package {
import flash.display.Shader;
import flash.display.Sprite;
public class EmbeddedShaderExample extends Sprite {
[Embed(source="donothing.pbj", mimeType="application/octet-stream")]
private static var DoNothingShader:Class;
public function EmbeddedShaderExample() {
var shader:Shader = new Shader();
shader.byteCode = new DoNothingShader();
// do something with the Shader instance
}
}
}