1

我在 HLSL 中有以下像素着色器函数:

float GammaCorrectA(float3 color, float alpha) {
    float a = 1 - sqrt(1 - alpha);
    float b = sqrt(alpha);
    float t = (color.x + color.y + color.z) / 3;
    return a * (1 - t) + b^t;
}

这是这样称呼的:

float screen = GammaCorrectA(strokeColor, alpha);

strokeColor并且alpha都是浮点数。

这导致“返回”行出现以下错误:

错误 X3082:需要 int 或 unsigned int 类型。

我正在使用 Shader Model 4 Level 9_3 进行编译,禁用了优化并启用了调试信息。

我似乎在 MSDN 或任何地方都找不到此错误。

从广义上讲,有人可以指出我记录此错误的位置吗?我想了解这里发生了什么。更具体地说,有人能发现我的错误吗?

4

1 回答 1

2

而不是b^t使用 HLSL pow函数:

return a * (1 - t) + pow(b, t);
于 2013-01-22T00:37:42.397 回答