You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将GLSL随机数生成器转WGSL,uintBitsToFloat的等效函数是什么?

GLSL转WGSL:uintBitsToFloat的等效实现

WGSL中没有和GLSL uintBitsToFloat 完全同名的内置函数,但可以用**f32.from_bits(u32)**实现完全相同的功能——它会把无符号整数的二进制位直接解析为IEEE 754单精度浮点数的位模式。

以下是你提供的代码转换为WGSL的版本:

原GLSL代码

uint Hash_Wang(uint key) {
    key = (key ^ 61u) ^ (key >> 16u);
    key = key + (key << 3u);
    key = key ^ (key >> 4u);
    key = key * 0x27D4EB2Du;
    key = key ^ (key >> 15u);
    return key;
}

float UniformUintToFloat(uint u) {
    // IEEE-754:2^-32 = 0x2F800000
    return float(u) * uintBitsToFloat(0x2F800000u);
}

转换后的WGSL代码

fn Hash_Wang(key: u32) -> u32 {
    var k = key;
    k = (k ^ 61u) ^ (k >> 16u);
    k = k + (k << 3u);
    k = k ^ (k >> 4u);
    k = k * 0x27D4EB2Du;
    k = k ^ (k >> 15u);
    return k;
}

fn UniformUintToFloat(u: u32) -> f32 {
    // IEEE-754:2^-32 = 0x2F800000
    return f32(u) * f32.from_bits(0x2F800000u);
}

额外说明

  • WGSL的类型命名和GLSL有差异:uint对应u32,float对应f32,转换时需要同步调整类型声明。
  • f32.from_bits的行为和GLSL uintBitsToFloat完全一致,都是直接映射二进制位,没有数值转换逻辑。

内容的提问来源于stack exchange,提问作者javirk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 19:45:35