Opengl GLSL中是否有用于AND的内置函数,或者是否有一些优化方法用于执行组件级AND?

Opengl GLSL中是否有用于AND的内置函数,或者是否有一些优化方法用于执行组件级AND?,opengl,glsl,shader,Opengl,Glsl,Shader,GLSL具有用于小于、大于等的组件式函数,这些函数返回bvec 还有any()和all(),但似乎没有和() 如果我有两个bvec3s并想要一个新的bvec3,相当于: bvec3 new = bvec3(two.x && one.x, two.y && one.y, two.z && one.z); 有没有更快或更优化的方法 我正在尝试编写高度优化的GLSL代码。根本不确定这是否会更有效,但我相信您可以通过将两个bvec3值转换为另一个向量类型

GLSL具有用于
小于
大于
等的组件式函数,这些函数返回
bvec

还有
any()
all()
,但似乎没有
和()

如果我有两个
bvec3
s并想要一个新的
bvec3
,相当于:

bvec3 new = bvec3(two.x && one.x, two.y && one.y, two.z && one.z);
有没有更快或更优化的方法


我正在尝试编写高度优化的GLSL代码。

根本不确定这是否会更有效,但我相信您可以通过将两个
bvec3
值转换为另一个向量类型(如
uvec3
vec3
)来执行
,对这些类型使用更广泛的操作(如按位和、乘法),然后转换回

对于
bvec3
one
two
,有几个选项:

bvec3(uvec3(one) & uvec3(two))
bvec3(uvec3(one) * uvec3(two))
bvec3(vec3(one) * vec3(two))
在使用它之前,你一定要进行基准测试。组件式表达式很有可能更快