我有像素着色器中的採樣器這個奇怪的問題。當我從採樣器採樣到一個空的float4變量時,我總是會得到黑色/透明色。所以,如果我用這個,我得到一個黑色的屏幕:HLSL:有問題的pixelshader代碼(採樣時爲零)?
float4 PixelShaderFunction(float2 TextureCoordinate : TEXCOORD0) : COLOR0
{
float2 uv = TextureCoordinate;
float4 pixelColor = tex2D(implicitInputSampler, uv);
//contrast
pixelColor.rgb = ((pixelColor.rgb - 0.5f) * max(Contrast, 0)) + 0.5f;
//brightness
pixelColor.rgb = pixelColor.rgb + (Brightness - 1);
// return final pixel color
return pixelColor;
}
我我用這個代替它的工作原理確定:
float4 PixelShaderFunction(float2 TextureCoordinate : TEXCOORD0) : COLOR0
{
float2 uv = TextureCoordinate;
float4 pixelColor = {0,0,0,1};
pixelColor += tex2D(implicitInputSampler, uv);
//contrast
pixelColor.rgb = ((pixelColor.rgb - 0.5f) * max(Contrast, 0)) + 0.5f;
//brightness
pixelColor.rgb = pixelColor.rgb + (Brightness - 1);
// return final pixel color
return pixelColor;
}
這只是發生在我的開發環境在家裏在AMD GPU 4850。當我嘗試一些nVidias或AMD5850時,它在任何情況下都有效...
這是什麼原因? 我錯過了一些設備初始化?
乾杯!
在第一種情況下,您正在讀取紋理中的輸出alpha並將其返回。 你的紋理是否包含alpha值? – jcoder 2011-04-04 09:19:29
紋理被聲明爲A8R8G8B8,我從VMR9發送到圖像合成器的表面使用stretchrectangle。這可能是VMR中的A一直是0?奇怪的是,這與不同的圖形卡和操作系統有所不同:/ – 2011-04-06 16:06:50