glsl compute shader pow(2,.5)给出了错误的值

时间:2018-02-11 20:26:25

标签: opengl glsl nvidia compute-shader

下面有计算着色器:

#version 430

layout(local_size_x = 1) in;
uniform float _M, _m;

layout(std430, binding = 40) writeonly buffer Buf
{
    vec4 _value[5];
};


void main() 
{
    float ratio = _M / _m;
    for (int i = 0; i < 5; ++i)
    {
        float p = float(i) * .5;
        _value[i] = vec4(ratio, p, pow(ratio, p), 0);
    }
}

运行方式:

glUniform1f(mm, 1);
glUniform1f(mM, 2);
glDispatchCompute(1, 1, 1);

在缓冲区中运行后: buffer content

2 ^ .5的值不正确。 如果“着色”变量在着色器中设置为2.,则全部正确。 如果功率乘以.4或.6而不是.5,则全部正确。 什么可能导致这种行为?

0 个答案:

没有答案