C# XNA HLSL纹理遮罩效果在遮罩中不使用alpha
我是HLSL的新手,请容忍我 这是效果文件:C# XNA HLSL纹理遮罩效果在遮罩中不使用alpha,c#,.net,xna,shader,hlsl,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,
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_采样器是面具的采样器
结果包含alpha为1或0的像素,但遮罩实际上是模糊的,并且包含不同的alpha值。我应该添加或更改什么以使其符合我的要求?否则,这将非常有效。我相信您需要在技术中设置渲染状态
AlphaBlendEnable = true;
SrcBlend = SrcAlpha;
DestBlend = InvSrcAlpha;