Opengl GLSL中是否有用于AND的内置函数,或者是否有一些优化方法用于执行组件级AND?
GLSL具有用于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值转换为另一个向量类型
小于
、大于
等的组件式函数,这些函数返回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))
在使用它之前,你一定要进行基准测试。组件式表达式很有可能更快