0

写真とプレースホルダーの 2 つの画像を混在させる必要があります。アイデアは、プレースホルダーが特定の色を持っている場合を除いて、プレースホルダーが見えるということです。その場合、ユーザーは写真を見ることができます。クロマキーみたいなもの。

この目的のために、BlendMode として機能する Pixel Bender シェーダーを作成しました。背景が正しい色の場合、ピクセル イメージが出力されます。それ以外の場合は、プレースホルダーからピクセルが出力されます。

<languageVersion : 1.0;>

kernel Crossfade
<   namespace : "mynamesp";
vendor : "Artbits snc";
version : 1;
description : "description ... "; >
{

input image4 placeHolder;
input image4 myImage;

output pixel4 dst;

const float3 SPECIAL_COLOR = float3(159.0, 160.0, 161.0); 

void evaluatePixel()
{
    float4 imgPixel = sample(myImagee, outCoord());
    float4 placeHolderPixel = sample(placeHolder, outCoord());

    dst = placeHolderPixel;

    if(placeHolderPixel.r == (SPECIAL_COLOR.r / 255.0) && placeHolderPixel.g == (SPECIAL_COLOR.g / 255.0) && placeHolderPixel.b == (SPECIAL_COLOR.b / 255.0)){
        dst = imgPixel;
    }
}
}

複数のプレースホルダーが上下にあり、シェーダーが独自のプレースホルダーの色をチェックせず、写真の下のすべての色をチェックするという事実を除いて、すべてが正常に機能します。

BlendMode にレイヤーまたは特定の背景色のみを考慮するよう強制する方法はありますか?

同じ結果を得るためのよりスマートな方法はありますか?

ご協力いただきありがとうございます!これは、特に私の英語にとっては、かなり長くて複雑な質問であることを知っています:-)

4

1 に答える 1

0

この BlendMode を BitmapData で直接ではなく、一般的な DisplayObjects で使用していると仮定します。この場合、PixelBender は描画 API から渡されたデータのみを操作できるため、これらのレイヤーのみが使用されるようにする必要があります。その方法は、プレースホルダー オブジェクトとイメージ オブジェクトのみを 1 つのホルダー スプライトに追加することです。

于 2010-11-05T13:19:42.603 に答える