Pixel Bender: 2009年9月アーカイブ

AdobeのFlashデベロッパーセンターの解説記事。これまだエントリーしてなかったよね。

Adobe Pixel Benderでのブレンド、フィルタおよび塗りの作成

Pixel Bender Home

|

Pixel Benderの入り口はここAdobe Labsです(英語)。

Pixel BenderのいろんなFilterはここAdobe Pixel Bender Exchangeからダウンロード。

スタンドアローンモードでは、シェーダをイメージ以外のデータ処理に使うことができる。スタンドアローンモードでは、シェーダの実行が非同期のバックグラウンド処理になる。
var job:ShaderJob = new ShaderJob(myShader);
job.addEventListener(ShaderEvent.COMPLETE, completeHandler);

function completeHandler(event:ShaderEvent):void 
{ 
    // do something with the shader result 
} 

var jobResult:BitmapData = new BitmapData(100, 75); 
job.target = jobResult;
job.start();
target, width, heightをコンストラクタのパラメータで指定する場合
var job:ShaderJob = new ShaderJob(myShader, myTarget, myWidth, myHeight);

同期処理する場合
job.start(true);
 

ブレンドでシェーダを使う

|
var foregroundShape:Shape = new Shape(); 
var g2:Graphics = foregroundShape.graphics; 
var c2:Array = [0xff8000, 0x663300]; 
var a2:Array = [255, 255]; 
var r2:Array = [100, 255]; 
var m2:Matrix = new Matrix(); 
m2.createGradientBox(300, 200); 
g2.beginGradientFill(GradientType.LINEAR, c2, a2, r2, m2); 
g2.drawEllipse(100, 0, 300, 200); 
g2.endFill(); 
addChild(foregroundShape); 
//ブレンドモードをシェーダにする
foregroundShape.blendShader = shader; 
foregroundShape.blendMode = BlendMode.SHADER; 

シェーダデータを調べる

|
シェーダのパラメータをシェーダのdataから調べる例。 シェーダのdataオブジェクトを取り出し、ShaderInput、ShaderParameter、メタデータを取り出す。
var shaderData:ShaderData = myShader.data; 
var inputs:Vector.<ShaderInput> = new Vector.<ShaderInput>(); 
var parameters:Vector.<ShaderParameter> = new Vector.<ShaderParameter>(); 
var metadata:Vector.<String> = new Vector.<String>(); 
 
for (var prop:String in shaderData) 
{ 
    if (shaderData[prop] is ShaderInput) 
    { 
        inputs[inputs.length] = shaderData[prop]; 
    } 
    else if (shaderData[prop] is ShaderParameter) 
    { 
        parameters[parameters.length] = shaderData[prop]; 
    } 
    else 
    { 
        metadata[metadata.length] = shaderData[prop]; 
    } 
} 

塗りでシェーダを使う

|
var canvas:Sprite = new Sprite(); 
canvas.graphics.beginShaderFill(myShader); 
canvas.graphics.drawRect(10, 10, 150, 150); 
canvas.graphics.endFill(); 

shaderを作る

|
//myShader.pbjをバイナリで読み込む
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 { 
    //shaderを作る
    shader = new Shader(); 
    shader.byteCode = loader.data; 
     
    //これでもOK
    // shader = new Shader(loader.data); 
     
     // shaderを使う 
}

このアーカイブについて

このページには、2009年9月以降に書かれたブログ記事のうちPixel Benderカテゴリに属しているものが含まれています。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。