私は Pixel Bender の経験がなく、シェーディング言語は意味不明に思えるので、Pixel Bender フィルター/シェーダーとして機能するように次の as3 コードを書き直すのを手伝ってくれる人がいないかと考えていました。それが機能する方法は、16777215 色を、パレット配列で定義した 4 つの色調 (最初に最も明るい色、最後に最も暗い色) に変換することです。結果は満足ですが、性能が悪いのでフィルターを作りたいと思います。コードは次のとおりです:(sbitmapは私のライブラリの画像です)
var display:Bitmap = new Bitmap(new sbitmap());
var palette:Vector.<uint> = new <uint>[0x485B61, 0x4B8E74, 0xA6E76D, 0xD1FE85];
var data:BitmapData = display.bitmapData;
addChild(display);
const inc:int = int(0xFFFFFF/4)+1;
for(var i:int = 0; i < data.height; i++)
{
for(var j:int = 0; j < data.width; j++)
{
var color:uint = data.getPixel(j, i);
var pIndex:int = 0;
for(var k:int = 0; k < 0xFFFFFF; k += inc)
{
if(color >= k && color < k + inc)
{
data.setPixel(j, i, palette[pIndex]);
break;
}
pIndex++;
}
}
}
私が得た結果は次のとおりです。