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 的水平线。

规范

GLSL ES 3.00 built-in functions, chapter 8

相关函数