2014-11-12 6 views
0

Я следовал учебному пособию по созданию базовой текстуры эффекта в XNA/Monogame. Кажется, что все работает, но если Percentage = 0, он всегда будет возвращать цвет как белый. Мне тяжело обертывать вокруг, почему это происходит. Вот соответствующий код HLSLHLSL TextureSampler Цвет, возвращающийся белый

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 затем выводит правильный цвет, но он делает в виде сплошного прямоугольника, а не то, что фактический объект (круг в данном случае)

+0

Я установил это, изменив 'float4 Color = Tex2 D (TextureSampler, Tex). 'To' float4 Color = tex2D (TextureSampler, Tex) .abgr * color1; ' – servvs

+0

Используйте ответ вместо комментария и принимайте его, поэтому он не отображается как нерешенный вопрос. – miloszmaki

ответ

1

Я установил это, изменив

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

в

float4 Color = tex2D(TextureSampler, Tex).abgr * color1; 
Смежные вопросы