GLSL 内置函数
packSnorm2x16()
把两个带符号归一化分量量化到一个 uint。
示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段
函数签名
uint packSnorm2x16(vec2 v)参数
- v
- 需要打包的分量
返回值
一个 uint,将 v 限制到 [-1, 1] 后存为两个有符号 16 位归一化编码,x 位于低位。
在线示例
修改右侧代码,左侧预览会实时更新。
packSnorm2x16 做什么
把两个带符号归一化分量量化到一个 uint。
看懂预览
打包再解包的表达式读取两个有符号归一化通道中的 x。把 vec2(x,y) 改成 vec2(x*2.0,y),就能看到超出 [-1, 1] 的输入被截住后形成的平坦两端。
核心调用
unpackSnorm2x16(packSnorm2x16(vec2(x,y))).x;
输入先夹紧到负一到一,压缩是有损量化。
修改实验
把 packSnorm2x16 的输入换成 vec2(-0.5,y)。第一个解码通道会从斜线变成接近 -0.5 的水平线。