GLSL具有用于lessThan,greaterThan等的组件智能函数,它们返回bvec.
还有any()和all(),但似乎没有和().
如果我有两个bvec3并想要一个新的bvec3,相当于:
bvec3 new = bvec3(two.x && one.x, two.y && one.y, two.z && one.z);
是否有更快的方式或更优化的方式来做到这一点?
我正在尝试编写高度优化的GLSL代码.
最佳答案 根本不确定这是否会更有效,但我相信你可以通过将它们转换为另一种矢量类型(如uvec3或vec3)来实现两个bvec3值,并对这些类型使用更广泛的操作(如按位和乘法) ,然后转换回来.
您的bvec3值为1和2,这些是几个选项:
bvec3(uvec3(one) & uvec3(two))
bvec3(uvec3(one) * uvec3(two))
bvec3(vec3(one) * vec3(two))
在使用它之前你应该确定基准.组件表达式更快的可能性很大.