Я пытаюсь объединить две текстуры в HLSL - в частности, я хочу взять альфа-значения из базового изображения и данные цвета из наложенного изображения.
Мой пиксельный шейдер для этого выглядит следующим образомэто:
float4 PixelShaderFunction(VertexOut input) : COLOR0
{
float4 baseColor = tex2D( BaseSampler, input.baseCoords.xy ).rgba;
float4 overlayColor = tex2D( OverlaySampler, input.overlayCoords.xy ).rgba;
float4 color;
color.r = overlayColor.r;
color.g = overlayColor.g;
color.b = overlayColor.b;
color.a = baseColor.a;
return color.rgba;
}
и мое состояние смешивания выглядит следующим образом:
BlendState bs = new BlendState();
bs.AlphaSourceBlend = Blend.SourceAlpha;
bs.AlphaDestinationBlend = Blend.DestinationAlpha;
bs.ColorSourceBlend = Blend.SourceColor;
bs.ColorDestinationBlend = Blend.DestinationColor;
Что меня оставляет, так это размытая версия того, что должно быть цветом наложения.Я пробовал многочисленные перестановки настроек BlendState и немного поиграл с математикой пиксельного шейдера, но безрезультатно.
Кто-нибудь может указать мне правильное направление?
Спасибо зааванс =)