XNA HLSL纹理遮罩效果不会在遮罩中使用alpha

时间:2013-12-21 18:33:28

标签: c# .net xna shader hlsl

我是HLSL的新手,请耐心等待......

这是效果文件:

sampler s0;
texture tex;
sampler tex_sampler = sampler_state{Texture = tex;};

float4 PixelShaderFunction(float2 coords: TEXCOORD0) : COLOR0  
{  
    float4 color = tex2D(s0, coords);
    float4 tex_color = tex2D(tex_sampler, coords);

    if (tex_color.a) 
    {
        // SOMETHING GOES RIGHT HERE BUT I DON'T KNOW WHAT
        return color;
    }
    return tex_color;
}  

technique Technique1  
{  
    pass Pass1  
    {  
        PixelShader = compile ps_2_0 PixelShaderFunction();  
    }  
} 

“tex”字段是掩码。 “tex_sampler”是掩码的采样器。

结果包含带有1或0 alpha的像素,但遮罩实际上是模糊的并包含不同的alpha值。我应该添加或更改什么才能使我做到我想要的?否则这完全有效。

1 个答案:

答案 0 :(得分:0)

我相信你需要在你的技术中设置渲染。

    AlphaBlendEnable = true;
    SrcBlend = SrcAlpha;
    DestBlend = InvSrcAlpha;