Показать / Скрыть определенные цветовые диапазоны с PixelBender - PullRequest
1 голос
/ 21 января 2011

Каков наилучший способ скрыть определенные (интерполированные) цветовые диапазоны?Например, у меня есть градиент, который идет от синего> голубого> желтого> красного.Мне нужно скрыть синий> голубой, желтый> красный, но оставить голубой> желтый.

var rangeA:Object = {min:0x0000FF, max:0x00FFFF}  //hide
var rangeB:Object = {min:0x00FFFF, max:0xFFFF00}; //show
var rangeC:Object = {min:0xFFFF00, max:0xFF0000}; //hide

Можно применять разные фильтры для каждого диапазона.

Есть идеи?

1 Ответ

0 голосов
/ 22 января 2011

Это самое простое решение, которое я нашел:

void
evaluatePixel()
{
    float4 color = sampleNearest(src,outCoord());

    float maxR = max(minColor.r, maxColor.r);
    float maxG = max(minColor.g, maxColor.g);
    float maxB = max(minColor.b, maxColor.b);

    float minR = min(minColor.r, maxColor.r);
    float minG = min(minColor.g, maxColor.g);
    float minB = min(minColor.b, maxColor.b);

     dst = color;

    // Check whether a color is within the range
    if(color.r >= minR && color.g >= minG && color.b >= minB)
    {
        if(color.r <= maxR && color.g <= maxG && color.b <= maxB)
        {
            dst = float4(0.0,0.0,0.0,0.0);
        }
    }
}
...