GLSL 内置函数

equal()

返回两个向量各分量是否精确相等。

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

函数签名

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

参数

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

返回值

一个布尔向量,对应的 x、y 分量完全相等时,该分量为 true。

在线示例

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

equal 做什么

返回两个向量各分量是否精确相等。

看懂预览

只有满足 floor(x*4.0) == 0 的条带会变橙色。把比较目标 ivec2(0) 改为 ivec2(1),条带会移到 x 的 [0.25, 0.5) 区间。

核心调用

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

不要用精确相等判断经过运算的浮点数是否足够接近。

修改实验

把 equal(...) 后取出的 .x 改成 .y。原调用的第二分量均为零,因此整个背景都会显示条件成立的颜色。

规范

GLSL ES 1.00 built-in functions, chapter 8

相关函数