【问题标题】:HLSL error X3082HLSL 错误 X3082
【发布时间】:2013-01-22 00:13:25
【问题描述】:

我在 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);

strokeColoralpha 都是浮点数。

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

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

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

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

一般来说,有人能指出这个错误记录在哪里吗?我想了解这里发生了什么。更具体地说,有人能发现我的错误吗?

【问题讨论】:

    标签: hlsl directx-11 pixel-shader


    【解决方案1】:

    使用 HLSL pow 函数代替 b^t

    return a * (1 - t) + pow(b, t);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多