GLSL 内置函数

isnan()

逐分量检测 NaN。

示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段

函数签名

genBType isnan(genType x)

genType 表示 float / vec2 / vec3 / vec4;同名占位符须使用相同类型。

参数

x
输入值或左侧向量

返回值

一个 bool 或布尔向量,NaN 分量对应 true,数值分量对应 false。

在线示例

修改右侧代码,左侧预览会实时更新。

isnan 做什么

逐分量检测 NaN。

看懂预览

isnan(x) 中的有限坐标不是 NaN,绿色线因此固定在 y = 0。把 x 换成 x*0.0 后仍为 false,因为零也是有效数值。

核心调用

float(isnan(x));

不能用 x==NaN 作检测;示例用正常有限输入,结果应全部为假。

修改实验

把 float(isnan(x)) 改成 1.0-float(isnan(x))。线条会移到 y = 1,表示本例中的所有坐标都通过了“不是 NaN”的检查。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数