HLSL TextureSampler颜色返回白色

时间:2014-11-12 05:45:45

标签: shader hlsl monogame

我正在按照教程在XNA / Monogame中构建基本效果纹理。一切似乎都有效,但如果百分比= 0,它将始终返回白色。我很难理解为什么会发生这种情况。这是相关的hlsl代码

float Percentage;

sampler TextureSampler: register(s0);
float4 PixelShaderFunction(float4 pos : SV_POSITION, float4 color1 : COLOR0, float2 Tex : TEXCOORD0) : SV_TARGET0
{
    float4 Color = tex2D(TextureSampler, Tex).abgr;
    float a = Color.a;
    float r = Color.r;
    float g = Color.g;
    float b = Color.b;
    Color.rgb = dot(Color.rgb, float3(0.7 * Percentage, 0.59 * Percentage, 0.11 * Percentage));
    r = r - (r - Color.rgb) * Percentage;
    g = g - (g - Color.rgb) * Percentage;
    b = b - (b - Color.rgb) * Percentage;
    Color.a = a;
    Color.r = r;
    Color.g = g;
    Color.b = b;
    return Color;
}


technique hit
{
    pass Pass1
    {
        PixelShader = compile ps_3_0 PixelShaderFunction();
    }
}

当我将argb设置为color1.argb然后它输出正确的颜色但它呈现为实心方块而不是实际对象(在这种情况下为圆圈)

1 个答案:

答案 0 :(得分:1)

我已经通过更改

解决了这个问题
float4 Color = tex2D(TextureSampler, Tex).abgr; 

float4 Color = tex2D(TextureSampler, Tex).abgr * color1;