all
all
判断一个布尔向量(bvec)的所有分量是否都为真,将多个并列的向量化比较结果聚合成一个单一的布尔值。
核心优势
以最简洁、可读的方式将向量化的多条件判断聚合成一个最终结果,它直接映射到高效的原生 GLSL `all()` 函数,是处理向量比较逻辑的基础工具。
常见用途
进行几何体边界框检测,判断一个点是否同时在X、Y、Z轴的指定范围内。
实现颜色范围选取或色度键(抠图),判断一个像素的R、G、B值是否同时落在指定区间内。
在进行向量除法等运算前,验证除数向量的所有分量是否都不为零。
如何调整
通过改变生成布尔向量的比较条件来调整。在边界框检测的例子中,`all` 就像一个严格的门禁,只要模型有一个轴超出了边界,比较结果中就会出现一个 `false`,导致 `all` 的输出变为 `false`,特效瞬间消失。
代码示例
1// isAboveMin 和 isBelowMax 都是 bvec3
2const isAboveMin = greaterThan(positionWorld, vec3(-1.0));
3const isBelowMax = lessThan(positionWorld, vec3(1.0));
4
5// 只有当一个点的 x,y,z 同时满足所有边界条件时,才算在盒子内
6const isInBox = all(isAboveMin).and(all(isBelowMax));