如何使用 Silverlight 3 像素着色器进行平滑的 Alpha channel 键控?
我想要一些 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)
最佳答案
听起来你只是想减去一种颜色而不是键控它。
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
在此之后,您可以使用颜色选择器选择“减去”颜色并将其删除。希望这就是您想要做的。
关于c# - 如何使用 Silverlight 3 像素着色器进行平滑的 Alpha channel 键控?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695280/