floatBitsToInt
floatBitsToInt
将浮点数或浮点向量按位重解释为相同宽度的整数类型,不进行数值转换(位模式保持不变)。
核心优势
零开销位级重解释,使浮点数据可参与整数/位运算、数据打包与低级缓冲/图像接口,同时保留 NaN/Inf 等 IEEE‑754 负载。
常见用途
将浮点值打包为整数写入 SSBO/图像或数据纹理。
与位运算(与/或/异或、移位、掩码)配合提取符号位、指数、尾数等字段。
生成可复现的整数哈希/随机种子或排序键。
调试:可视化浮点的位模式或检测特殊值(NaN、Inf)。
如何调整
输入任意 float/vecN,输出为对应的 int/ivecN。若要与颜色或其他浮点槽混合,可先用 float(...) 转为浮点或做归一化;需要位操作时与位运算节点(与/或/异或、移位)组合。注意:这是按位重解释,不等同于 int(...) 数值转换;在 32 位类型上工作;向量逐分量处理。目标后端的可用性以实际编译器为准。
代码示例
1// 将视图空间法线的 x 按位重解释为 int 并可视化其位模式
2const bits = floatBitsToInt( normalView.x );
3// 归一化到 [0,1] 以便着色(仅用于调试可视化)
4const normalized = abs( float( bits ) / 2147483647.0 );
5output.color.rgb = vec3( normalized );