GLSL具有lessThan
,greaterThan
等的组件明智功能,返回bvec
。
还有any()
和all()
,但似乎没有and()
。
如果我有两个bvec3
并想要一个新的bvec3
,相当于:
bvec3 new = bvec3(two.x && one.x, two.y && one.y, two.z && one.z);
有更快的方法或更优化的方法吗?
我正在尝试编写高度优化的GLSL代码。
答案 0 :(得分:2)
根本不确定这是否会更有效,但我相信您可以将and
两个bvec3
值转换为另一种向量类型,例如uvec3
或{{} 1}},对这些类型使用更广泛的操作(如按位和乘法),然后转换回来。
使用vec3
值bvec3
和one
,这些是以下几种选择:
two
在使用之前你一定要做基准测试。组件表达的速度很快。