c# - 如何使用 Silverlight 3 像素着色器进行平滑的 Alpha channel 键控?

标签 c# silverlight filter transparency hlsl

如何使用 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;
             } 

键控不仅是我尝试键控的颜色,而且例如,如果深红色由红色和蓝色组成,而我键控的是所有蓝色,我想得到透明的红色。 (大概这张图可以说明我想要什么) From to Image
(来源: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/

相关文章:

c# - 如何计算大文件 block 的哈希值?

silverlight - RIA 服务域服务类 web.config 设置

Silverlight - 按钮控件制表符停止两次之谜

android - 从数据库中过滤 ArrayList

c# - .NET 核心替代 TcpClient

c# - 如何在内存中初始化测试并在每个测试中使用

c# - 为我的 C# .NET Winform 应用程序创建单个连接文件

c# - 修饰键组合输入

javascript - 从具有唯一值的对象数组中过滤唯一属性(如果存在),然后覆盖该值

data-binding - 使用 Polymer 根据输入值过滤表格