GLSL 内置函数
packUnorm2x16()
将两个零到一的分量打包到一个 uint。
示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段
函数签名
uint packUnorm2x16(vec2 v)参数
- v
- 需要打包的分量
返回值
一个 uint,保存 v 限制到 [0, 1] 后的两个无符号 16 位归一化编码,x 位于低位。
在线示例
修改右侧代码,左侧预览会实时更新。
packUnorm2x16 做什么
将两个零到一的分量打包到一个 uint。
看懂预览
packUnorm2x16(uv) 编码 0 到 1 的坐标,预览显示解码后的 x 通道。把参数改为 uv*2.0,右半边就会被限制为 1。
核心调用
unpackUnorm2x16(packUnorm2x16(uv)).x;
超出零到一的值会被夹紧,不能直接保存 HDR 颜色。
修改实验
把 packUnorm2x16 的 uv 参数改为 vec2(0.25,uv.y)。低 16 位此时保存固定值,斜线会变成接近 0.25 的水平线。