2011-02-23 2 views
0

특정 범위 내에있는 (PixelBender 사용) 색상을 끄는 가장 좋은 방법은 무엇입니까? 예를 들어, 0x0000FF와 0x00FFFF 사이의 모든 색을 끕니다. 당신의 도움을 주셔서 감사합니다. 이것은 플래시에서 작동해야합니다. 감사!Pixel Bender에서 색상 범위를 끕니다.

답변

0

이것이 최선의 방법인지는 확실하지 않지만 제대로 작동하는지 확신 할 수 없습니다. 아이디어는 Pixel Bender에서 uint 색상 값을 시뮬레이션하는 것입니다.

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

    float minInt = 0.0; 
    if(minColor.r > 0.0) minInt += minColor.r + 3.0; 
    if(minColor.g > 0.0) minInt += minColor.g + 2.0; 
    if(minColor.g > 0.0) minInt += minColor.b + 1.0; 

    float maxInt = 0.0; 
    if(maxColor.r > 0.0) maxInt += maxColor.r + 3.0; 
    if(maxColor.g > 0.0) maxInt += maxColor.g + 2.0; 
    if(maxColor.g > 0.0) maxInt += maxColor.b + 1.0; 

    float colInt = 0.0; 
    if(color.r > 0.0) colInt += color.r + 3.0; 
    if(color.g > 0.0) colInt += color.g + 2.0; 
    if(color.g > 0.0) colInt += color.b + 1.0; 

    if(colInt >= minInt && colInt <= maxInt) 
    { 
     dst = float4(0.0); 
    }else{ 
     dst = color; 
    } 
} 
0

"사이"채널을 의미하는 경우 여기에 간단한 방법이 있습니다.

<languageVersion : 1.0;> 

kernel untitled 
< namespace : "Your Namespace"; 
    vendor : "Your Vendor"; 
    version : 1; 
> 
{ 
    input image4 src; 
    output pixel4 dst; 

    parameter float rThreshold 
    < 
     minValue: 0.0; 
     maxValue: 1.0; 
     defaultValue: 0.0; 
    >; 

    parameter float gThreshold 
    < 
     minValue: 0.0; 
     maxValue: 1.0; 
     defaultValue: 0.0; 
    >; 

    parameter float bThreshold 
    < 
     minValue: 0.0; 
     maxValue: 1.0; 
     defaultValue: 0.0; 
    >; 

    void 
    evaluatePixel() 
    { 
     pixel4 sourcePixel = sampleNearest(src,outCoord()); 
     if(sourcePixel.r <= rThreshold) sourcePixel.r = 0.0; 
     if(sourcePixel.g <= gThreshold) sourcePixel.g = 0.0; 
     if(sourcePixel.b <= bThreshold) sourcePixel.b = 0.0; 
     dst = sourcePixel; 
    } 
} 
+0

감사합니다. @sean, 이것은 색상의 수치 값을 기준으로 범위를 키 조작했기 때문에 발생하지 않았습니다. –

관련 문제