Мне нужно смешать два изображения с одной фотографией и заполнителем. Идея заключается в том, что мы видим местозаполнитель, за исключением случаев, когда наблюдатель имеет определенный цвет, и в этом случае пользователь видит фотографию. Что-то вроде цветного ключа.Ограничение пользовательского BlendMode с PixelBender - как объединить изображения
Для этого я написал шейдер Pixel Bender, который действует как BlendMode. Если фон находится в правильном цветовом выходе, пиксельное изображение otherwhise выводит пиксель из заполнителя.
<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 рассматривать только слой или определенный цвет фона?
Есть ли более умный способ получить тот же результат?
Благодарим за помощь! Я знаю, что это довольно длинный и сложный вопрос, особенно для моего английского :-)
Я не уверен, что понимаю. Если я создаю новый объект Sprite для каждой пары изображений и заполнителя, BlendMode не учитывает другие тонкости этого нового спрайта? даже если Спрайт является прозрачным? – wezzy