bitXor
bitXor
执行按位“异或”(`^`)运算,主要用于高效地“切换”一个状态标志,或用于生成程序化图案。
核心优势
提供单条、无分支的指令来切换状态(开变关,关变开),远比使用条件逻辑更高效简洁。其可逆特性也使其在简单加密和非破坏性绘图中很有用。
常见用途
切换交互式状态(例如:选中高光效果)
生成程序化图案,如棋盘格
使用密钥进行简单的、可逆的数据加密或混淆
实现用于临时叠加层的非破坏性异或绘图
如何调整
其效果主要通过两种方式调整:1) 作为逻辑开关:用一个固定的掩码反复对一个状态整数进行异或,会反复开启和关闭该状态。2) 作为图案生成器:改变输入整数(例如通过不同地缩放UV或加入时间),会直接改变最终的视觉图案,可以产生从稳定的棋盘格到动态噪音等各种效果。
代码示例
1// 从 UV 坐标生成棋盘格图案
2const x = floor( uv().x.mul( 16.0 ) ).to_int();
3const y = floor( uv().y.mul( 16.0 ) ).to_int();
4
5// 异或结果的最低位创建了图案
6const pattern = bitAnd( bitXor( x, y ), 1 );
7
8material.colorNode = vec3( pattern );