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)。解包后左半边将保持为零,因为无符号归一化打包已经截去了负值。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数