Я следовал учебному пособию по созданию базовой текстуры эффекта в 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 затем выводит правильный цвет, но он делает в виде сплошного прямоугольника, а не то, что фактический объект (круг в данном случае)
Я установил это, изменив 'float4 Color = Tex2 D (TextureSampler, Tex). 'To' float4 Color = tex2D (TextureSampler, Tex) .abgr * color1; ' – servvs
Используйте ответ вместо комментария и принимайте его, поэтому он не отображается как нерешенный вопрос. – miloszmaki