bitAnd
bitAnd
执行按位“与”(&)运算,主要用于高效地检查和提取封装在单个整数中的多个状态标志。
核心优势
通过将多个布尔状态打包到一个整数中,极大地节省了 uniform 资源和数据带宽,并利用了 GPU 原生的高性能位运算指令。
常见用途
动态开关材质属性(如:是否启用贴图、自发光等)
在“超级着色器”(Uber-Shader)中选择不同的渲染路径
从单个整数中解包复合数据(如:从一个值中提取瓦片ID和状态)
在着色器中判断游戏逻辑状态以触发特定视觉效果(如:是否处于“无敌”状态)
如何调整
此节点产生的是二进制(开/关)式的逻辑结果,而非渐变的视觉变化。通过改变作为输入的“标志”整数(通常是一个 uniform),可以像拨动开关一样启用或禁用不同的逻辑分支或视觉效果。不同的整数值可以组合出多种效果的开启状态。
代码示例
1// 检查“使用贴图”的标志位
2if ( bitAnd( flags, 1 ).greaterThan( 0 ) ) {
3 finalColor = texture( myMap, uv() ).rgb;
4}