我正在尝试在 HLSL 中组合两个纹理 - 具体来说,我想从基础图像中获取 alpha 值,并从叠加图像中获取颜色数据。
我的像素着色器看起来像这样:
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 设置的多种排列,并且玩了很多像素着色器数学,但无济于事。
谁能指出我正确的方向?
提前感谢=)