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

发布于 2024-08-09 21:45:47 字数 859 浏览 3 评论 0原文

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

How to do smooth Alpha channel keying with Silverlight 3 Pixel Shaders?

I want some HLSL filter (like this Shazzam HLSL example)

             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;
             } 

to key not just the color I’m trying to key but for example if dark red consists of red and blue and I’m keying all blue i want to get transparent red.
(Probably this picture can explain what do I want)
From to Image
(source: narod.ru)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

独孤求败 2024-08-16 21:45:47

听起来您只想减去一种颜色而不是对其进行关键帧设置。

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

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

Sounds like you just want to subtract a color rather then key it.

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

After this, you can then use a color chooser to pick which color "subtract" would be and remove it. Hope thats what your trying to do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文