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 中的真正整数支持。
我正在使用 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 中的真正整数支持。