如何比较 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(...); 
}