2013-12-21 3 views
1

Я новичок в HLSL угодить, медведь со мной ...XNA 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_sampler» - это сэмплер для маски.

Результат содержит пиксели с 1 или 0 альфа, но маска фактически размыта и содержит разные значения альфа. Что я должен добавить или изменить, чтобы сделать то, что я хочу? В противном случае это отлично работает.

ответ

0

Я верю, что вам нужно установить renderstates в вашей технике.

AlphaBlendEnable = true; 
    SrcBlend = SrcAlpha; 
    DestBlend = InvSrcAlpha; 
Смежные вопросы