如何比较 GLSL 脚本中的浮点数?
How to compare float in GLSL scripts?
在我的 GLSL 脚本中,我想像这样比较浮点数:
uniform float _Highlights;
if _Highlights <> 1 { doHighlights(...); }
但由于 _Highlights
是一个浮点数,恐怕 if _Highlights <> 1
将始终 return 为真。
首先,GLSL 中的 "not equality" 运算符是 !=
并且条件必须在括号中。 GLSL 中的正确语法是:
if (_Highlights != 1.0)
{
doHighlights(...);
}
如果要检查 _Highlights
是否是接近 1.0 的值,则必须使用 epsilon 值:
const float eps = 0.001;
if ( abs(_Highlights - 1.0) > eps )
{
doHighlights(...);
}
在我的 GLSL 脚本中,我想像这样比较浮点数:
uniform float _Highlights;
if _Highlights <> 1 { doHighlights(...); }
但由于 _Highlights
是一个浮点数,恐怕 if _Highlights <> 1
将始终 return 为真。
首先,GLSL 中的 "not equality" 运算符是 !=
并且条件必须在括号中。 GLSL 中的正确语法是:
if (_Highlights != 1.0)
{
doHighlights(...);
}
如果要检查 _Highlights
是否是接近 1.0 的值,则必须使用 epsilon 值:
const float eps = 0.001;
if ( abs(_Highlights - 1.0) > eps )
{
doHighlights(...);
}