2009-11-08 42 views
3

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

我想要一些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 http://superior0.narod.ru/CO/R/C/CA.png

+0

现在,它听起来像你想要将其中一个颜色通道映射到alpha通道。如何做'color.a = color.b'或'color.a = 1 - color.b'?如果你想放弃蓝色组件,你必须能够将它设置为0,然后显式地'color.b = 0'。我想这应该有帮助... – IgorK

回答

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 

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