如何使用Silverlight 3像素着色器进行平滑的Alpha通道键控?

时间:2009-11-08 03:28:49

标签: c# silverlight filter transparency hlsl

如何使用Silverlight 3 Pixel Shaders进行平滑的Alpha通道键控?

我想要一些HLSL过滤器(比如这个Shazzam HLSL示例)

             sampler2D  implicitInputSampler : register(S0);


             float4 main(float2 uv : TEXCOORD) : COLOR
             {
               float4 color = tex2D( implicitInputSampler, uv );

             if( color.r + color.g + color.b < 1.9 ) {
             color.rgba = 0;
                 }

             return color;
             } 

不仅要键入我正在尝试键入的颜色,而且例如,如果深红色由红色和蓝色组成,我将所有蓝色键入,我想要透明红色。 (可能这张照片可以解释我想要什么) From to Image
(来源:narod.ru

1 个答案:

答案 0 :(得分:1)

听起来你只想减去颜色而不是键入它。

float4 subtract = ... ; // color you want to remove
float4 color = ... ;

color.r -= subtract.r;
... // for b and g

if ( color.r < 0 )
    color.r = 0;
... // for b and g

然后,您可以使用颜色选择器选择“减去”的颜色并将其删除。希望这是你想做的事。