2011-01-21 40 views
1

隱藏特定(插值)顏色範圍的最佳方法是什麼?例如,我有一個漸變,從藍色>青色>黃色>紅色。我需要的是隱藏藍色>青色,黃色>紅色,但留下青色>黃色。使用PixelBender顯示/隱藏特定顏色範圍

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

可以對每個範圍應用不同的過濾器。

任何想法?

回答

0

這是我發現的最簡單的辦法:

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); 
     } 
    } 
}