## Name

packUnorm — pack floating-point values into an unsigned integer

## Declaration

`uint packUnorm2x16(` | vec2 v`)`;

`uint packSnorm2x16(` | vec2 v`)`;

`uint packUnorm4x8(` | vec4 v`)`;

`uint packSnorm4x8(` | vec4 v`)`;

## Parameters

`v`

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

## Description

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

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 Shading Language Version
--- | ---
Function Name | 1.10 | 1.20 | 1.30 | 1.40 | 1.50 | 3.30 | 4.00 | 4.10 | 4.20 | 4.30 | 4.40 | 4.50
packUnorm2x16 | - | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔
packSnorm2x16 | - | - | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔
packUnorm4x8 | - | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔
packSnorm4x8 | - | - | - | - | - | - | - | ✔ | ✔ | ✔ | ✔ | ✔

## See Also

`unpackUnorm2x16`, `unpackSnorm2x16`, `unpackUnorm4x8`, `unpackSnorm4x8`

## Copyright

Copyright © 2011-2014 Khronos Group. This material may be distributed subject to the terms and conditions set forth in the Open Publication License, v 1.0, 8 June 1999. http://opencontent.org/openpub/.