如何使用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;
}
不仅要键入我正在尝试键入的颜色,而且例如,如果深红色由红色和蓝色组成,我将所有蓝色键入,我想要透明红色。
(可能这张照片可以解释我想要什么)
(来源:narod.ru)
答案 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
然后,您可以使用颜色选择器选择“减去”的颜色并将其删除。希望这是你想做的事。