我想在HLSL中結合兩種紋理 - 具體來說,我想從基礎圖像中獲取alpha值,並從疊加圖像獲取顏色數據。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設置的衆多排列,並且使用了像素着色器數學,但效果不佳。
任何人都可以指向正確的方向嗎?
在此先感謝=)
你可以使hlsl函數更好一點。 color = float4(baseColor.rgb,overlayColor.a); – 2011-03-15 08:24:39