GLSL 内置函数
unpackUnorm2x16()
把一个 uint 解包为两个零到一的分量。
示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段
函数签名
vec2 unpackUnorm2x16(uint p)参数
- p
- 打包后的无符号整数
返回值
一个位于 [0, 1] 的 vec2,分别从 p 的低、高无符号 16 位字段解码得到。
在线示例
修改右侧代码,左侧预览会实时更新。
unpackUnorm2x16 做什么
把一个 uint 解包为两个零到一的分量。
看懂预览
unpackUnorm2x16(packUnorm2x16(uv)).x 恢复从 0 到 1 的横向输入。改取 .y,颜色便会从下到上变化。
核心调用
unpackUnorm2x16(packUnorm2x16(uv)).x;
结果落在零到一,两个分量各来自十六个位。
修改实验
把 packUnorm2x16 的输入改成 vec2(uv.x-0.5,uv.y)。解包后左半边将保持为零,因为无符号归一化打包已经截去了负值。