GLSL 内置函数
unpackHalf2x16()
将两个打包的半精度分量还原成浮点数。
示例版本:GLSL ES 3.00 / WebGL 2示例阶段:片段
函数签名
vec2 unpackHalf2x16(uint p)参数
- p
- 打包后的无符号整数
返回值
一个 vec2,x 从低 16 位的半精度浮点编码解出,y 从高 16 位解出。
在线示例
修改右侧代码,左侧预览会实时更新。
unpackHalf2x16 做什么
将两个打包的半精度分量还原成浮点数。
看懂预览
预览从 unpackHalf2x16(packHalf2x16(vec2(x,y))) 取 .x,绘出恢复的横坐标。改取 .y,结果就会改为随纵坐标变化。
核心调用
unpackHalf2x16(packHalf2x16(vec2(x,y))).x;
解包不会恢复打包时已经丢失的精度。
修改实验
先打包 vec2(0.25,0.75),解包后仍取 .x。解码值会成为半精度可精确表示的 0.25,曲线因此变成固定水平线。