gpt4 book ai didi

c# - HLSL:有问题的像素着色器代码(采样时 alpha 为零)?

转载 作者:行者123 更新时间:2023-11-30 12:35:25 25 4
gpt4 key购买 nike

像素着色器中的采样器存在这个奇怪的问题。当我从一个采样器采样到一个空的 float4 变量时,我总是得到黑色/透明的颜色。所以如果我使用它,我会得到一个黑屏:

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 4850 GPU 开发环境中。当我在某些 nVidias 或 AMD5850 上尝试它时,它在任何情况下都可以工作......

这是什么原因?我错过了一些设备初始化吗?

干杯!

最佳答案

看来像素着色器源纹理中的 A 确实是 0...

纹理声明为 A8R8G8B8,device.StretchRectangle 用于填充纹理。

此方法的工作方式因硬件而异:/

关于c# - HLSL:有问题的像素着色器代码(采样时 alpha 为零)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5529271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com