写真とプレースホルダーの 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 にレイヤーまたは特定の背景色のみを考慮するよう強制する方法はありますか?
同じ結果を得るためのよりスマートな方法はありますか?
ご協力いただきありがとうございます!これは、特に私の英語にとっては、かなり長くて複雑な質問であることを知っています:-)