Light | Dark



packUnorm2x16, packSnorm2x16, packUnorm4x8, packSnorm4x8 — pack floating-point values into an unsigned integer


uint packUnorm2x16( vec2 v);
uint packSnorm2x16( vec2 v);
uint packUnorm4x8( vec4 v);
uint packSnorm4x8( vec4 v);



Specifies a vector of values to be packed into an unsigned integer.


packUnorm2x16, packSnorm2x16, packUnorm4x8 and packSnorm4x8 convert each component of the normalized floating-point value v into 16- or 8-bit integer values and then packs the results into a 32-bit unsigned integer.

The conversion for component c of v to fixed-point is performed as follows:

  • packUnorm2x16: round(clamp(c, 0.0, 1.0) * 65535.0)

  • packSnorm2x16: round(clamp(c, -1.0, 1.0) * 32767.0)

  • packUnorm4x8: round(clamp(c, 0.0, 1.0) * 255.0)

  • packSnorm4x8: round(clamp(c, -1.0, 1.0) * 127.0)

The first component of the vector will be written to the least significant bits of the output; the last component will be written to the most significant bits.

Version Support

OpenGL ES Shading Language Version
Function Name 1.00 3.00 3.10
packUnorm2x16 -
packSnorm2x16 -
packUnorm4x8 - -
packSnorm4x8 - -
Think you can improve this page? Edit this page on GitHub.