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,曲线因此变成固定水平线。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数