WebGL 着色器中的错误整数数学

Wrong integer math in WebGL shaders

我正在使用 WebGL 和自定义着色器。在片段着色器中,我需要做一些精确的整数数学运算来索引平铺纹理。

但是,对于某些值,例如关于 Ipad 4. 整数运算是根据浮点数 实现的吗?

作为概念验证,我尝试了以下着色器:

const int eleven = int(11.0);

highp float f(const int nr11)
{
    if (int(nr11 / nr11) != 1)
        return 1.0;
    return 0.0;
}

void main()
{
    gl_FragColor = vec4(f(eleven));
}

Here 是可运行的 link.

着色器在我的桌面上生成 黑色 背景,但在我的 IPad 上生成 白色 背景。谁能给我解释一下这是怎么回事?

谢谢

没错,webgl 使用 glsl 1.00 着色器,实现实数不需要它。

您可以在第 19 页阅读相关内容: https://www.khronos.org/registry/gles/specs/2.0/GLSL_ES_Specification_1.0.17.pdf

暂时无法保证 webgl 中的真正整数支持。