GLSL 内置函数

notEqual()

标出两个向量中不同的分量。

示例版本:GLSL ES 1.00 / WebGL 1示例阶段:片段

函数签名

bvec2 notEqual(vec2 x, vec2 y)
bvec3 notEqual(vec3 x, vec3 y)
bvec4 notEqual(vec4 x, vec4 y)
bvec2 notEqual(ivec2 x, ivec2 y)
bvec3 notEqual(ivec3 x, ivec3 y)
bvec4 notEqual(ivec4 x, ivec4 y)
bvec2 notEqual(bvec2 x, bvec2 y)
bvec3 notEqual(bvec3 x, bvec3 y)
bvec4 notEqual(bvec4 x, bvec4 y)

参数

x
输入值或左侧向量
y
右侧向量或比较值

返回值

一个布尔向量,x、y 对应分量不同时,该分量为 true。

在线示例

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

notEqual 做什么

标出两个向量中不同的分量。

看懂预览

floor(x*4.0) 等于零的条带是唯一不成立的区域。把比较目标换成 ivec2(-1),这个缺口会移到 x 的 [-0.25, 0) 区间。

核心调用

float(notEqual(ivec2(int(floor(x*4.0)),0),ivec2(0)).x);

结果是布尔向量,不是单个 bool。

修改实验

把 notEqual 后选取的 .x 改成 .y。原调用的两个 y 分量都是零,因此不相等判定会在整幅图上都为 false。

规范

GLSL ES 1.00 built-in functions, chapter 8

相关函数