特定浮点值的 GLSL 编译中出现无效的浮点值错误

Invalid float value error in GLSL compilation for a particular float value

提问人:bsguru 提问时间:11/17/2023 更新时间:11/17/2023 访问量:32

问:

我正在 PC(OpenGL 版本 4.6)上进行 OpenGL 开发。
在编译片段着色器时,我收到特定浮点值的错误,但其他浮点值没有。

float test = 0.0008935951627790928;

上面的代码产生编译错误

("Shader compile failure (0): b'Fragment shader failed to compile with the following errors:\\nERROR: 0:52: error(#82) Syntax error: invalid float value ERROR___FP_CONST_OVERFLOW\\nERROR: error(#273)

但是其他数字,例如下面的数字,工作正常。

float test = 0.0007933847373351455;

两个数字的长度似乎相同。它可能与 GPU 硬件对浮点数的表示有关吗?

我正在使用带有以下预处理器的 GLSL 4.6

#version 460 core
OpenGL GLSL

评论

0赞 BDL 11/17/2023
这两个示例都不能完全用浮点数表示。
0赞 bsguru 11/17/2023
但第二个例子工作正常。即使它不能完全还原,也不应该四舍五入到最接近的浮点数。
0赞 Ripi2 11/18/2023
确保文本中没有隐藏字符。一个接一个地重写所有数字,而不是复制和粘贴。

答: 暂无答案