GLM_GTC_bitfield
Recommended extensions

## Functions

GLM_FUNC_DECL glm::u8vec2 | bitfieldDeinterleave (glm::uint16 x)
| Deinterleaves the bits of x. More...
GLM_FUNC_DECL glm::u16vec2 | bitfieldDeinterleave (glm::uint32 x)
| Deinterleaves the bits of x. More...
GLM_FUNC_DECL glm::u32vec2 | bitfieldDeinterleave (glm::uint64 x)
| Deinterleaves the bits of x. More...
template<typename genIUType >
GLM_FUNC_DECL genIUType | bitfieldFillOne (genIUType Value, int FirstBit, int BitCount)
| Set to 1 a range of bits. More...
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > | bitfieldFillOne (vec< L, T, Q > const &Value, int FirstBit, int BitCount)
| Set to 1 a range of bits. More...
template<typename genIUType >
GLM_FUNC_DECL genIUType | bitfieldFillZero (genIUType Value, int FirstBit, int BitCount)
| Set to 0 a range of bits. More...
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > | bitfieldFillZero (vec< L, T, Q > const &Value, int FirstBit, int BitCount)
| Set to 0 a range of bits. More...
GLM_FUNC_DECL int32 | bitfieldInterleave (int16 x, int16 y)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL int64 | bitfieldInterleave (int16 x, int16 y, int16 z)
| Interleaves the bits of x, y and z. More...
GLM_FUNC_DECL int64 | bitfieldInterleave (int16 x, int16 y, int16 z, int16 w)
| Interleaves the bits of x, y, z and w. More...
GLM_FUNC_DECL int64 | bitfieldInterleave (int32 x, int32 y)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL int64 | bitfieldInterleave (int32 x, int32 y, int32 z)
| Interleaves the bits of x, y and z. More...
GLM_FUNC_DECL int16 | bitfieldInterleave (int8 x, int8 y)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL int32 | bitfieldInterleave (int8 x, int8 y, int8 z)
| Interleaves the bits of x, y and z. More...
GLM_FUNC_DECL int32 | bitfieldInterleave (int8 x, int8 y, int8 z, int8 w)
| Interleaves the bits of x, y, z and w. More...
GLM_FUNC_DECL uint32 | bitfieldInterleave (u16vec2 const &v)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL uint64 | bitfieldInterleave (u32vec2 const &v)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL uint16 | bitfieldInterleave (u8vec2 const &v)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL uint32 | bitfieldInterleave (uint16 x, uint16 y)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL uint64 | bitfieldInterleave (uint16 x, uint16 y, uint16 z)
| Interleaves the bits of x, y and z. More...
GLM_FUNC_DECL uint64 | bitfieldInterleave (uint16 x, uint16 y, uint16 z, uint16 w)
| Interleaves the bits of x, y, z and w. More...
GLM_FUNC_DECL uint64 | bitfieldInterleave (uint32 x, uint32 y)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL uint64 | bitfieldInterleave (uint32 x, uint32 y, uint32 z)
| Interleaves the bits of x, y and z. More...
GLM_FUNC_DECL uint16 | bitfieldInterleave (uint8 x, uint8 y)
| Interleaves the bits of x and y. More...
GLM_FUNC_DECL uint32 | bitfieldInterleave (uint8 x, uint8 y, uint8 z)
| Interleaves the bits of x, y and z. More...
GLM_FUNC_DECL uint32 | bitfieldInterleave (uint8 x, uint8 y, uint8 z, uint8 w)
| Interleaves the bits of x, y, z and w. More...
template<typename genIUType >
GLM_FUNC_DECL genIUType | bitfieldRotateLeft (genIUType In, int Shift)
| Rotate all bits to the left. More...
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > | bitfieldRotateLeft (vec< L, T, Q > const &In, int Shift)
| Rotate all bits to the left. More...
template<typename genIUType >
GLM_FUNC_DECL genIUType | bitfieldRotateRight (genIUType In, int Shift)
| Rotate all bits to the right. More...
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > | bitfieldRotateRight (vec< L, T, Q > const &In, int Shift)
| Rotate all bits to the right. More...
template<typename genIUType >
GLM_FUNC_DECL genIUType | mask (genIUType Bits)
| Build a mask of 'count' bits. More...
template<length_t L, typename T , qualifier Q>
GLM_FUNC_DECL vec< L, T, Q > | mask (vec< L, T, Q > const &v)
| Build a mask of 'count' bits. More...

## Detailed Description

Include <glm/gtc/bitfield.hpp> to use the features of this extension.

Allow to perform bit operations on integer values

## Function Documentation

## bitfieldDeinterleave() [1/3]

GLM_FUNC_DECL glm::u8vec2 glm::bitfieldDeinterleave | ( | glm::uint16 | x | ) |

Deinterleaves the bits of x.

See also
  GLM_GTC_bitfield

## bitfieldDeinterleave() [2/3]

GLM_FUNC_DECL glm::u16vec2 glm::bitfieldDeinterleave | ( | glm::uint32 | x | ) |

Deinterleaves the bits of x.

See also
  GLM_GTC_bitfield

## bitfieldDeinterleave() [3/3]

GLM_FUNC_DECL glm::u32vec2 glm::bitfieldDeinterleave | ( | glm::uint64 | x | ) |

Deinterleaves the bits of x.

See also
  GLM_GTC_bitfield

## bitfieldFillOne() [1/2]

GLM_FUNC_DECL genIUType glm::bitfieldFillOne | ( | genIUType | Value,
|  | int | FirstBit,
|  | int | BitCount
| ) |  |

Set to 1 a range of bits.

See also
  GLM_GTC_bitfield

## bitfieldFillOne() [2/2]

GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldFillOne | ( | vec< L, T, Q > const & | Value,
|  | int | FirstBit,
|  | int | BitCount
| ) |  |

Set to 1 a range of bits.

Template Parameters

  L | Integer between 1 and 4 included that qualify the dimension of the vector
  T | Signed and unsigned integer scalar types
  Q | Value from qualifier enum

See also
  GLM_GTC_bitfield

## bitfieldFillZero() [1/2]

GLM_FUNC_DECL genIUType glm::bitfieldFillZero | ( | genIUType | Value,
|  | int | FirstBit,
|  | int | BitCount
| ) |  |

Set to 0 a range of bits.

See also
  GLM_GTC_bitfield

## bitfieldFillZero() [2/2]

GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldFillZero | ( | vec< L, T, Q > const & | Value,
|  | int | FirstBit,
|  | int | BitCount
| ) |  |

Set to 0 a range of bits.

Template Parameters

  L | Integer between 1 and 4 included that qualify the dimension of the vector
  T | Signed and unsigned integer scalar types
  Q | Value from qualifier enum

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [1/19]

GLM_FUNC_DECL int32 glm::bitfieldInterleave | ( | int16 | x,
|  | int16 | y
| ) |  |

Interleaves the bits of x and y.

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [2/19]

GLM_FUNC_DECL int64 glm::bitfieldInterleave | ( | int16 | x,
|  | int16 | y,
|  | int16 | z
| ) |  |

Interleaves the bits of x, y and z.

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [3/19]

GLM_FUNC_DECL int64 glm::bitfieldInterleave | ( | int16 | x,
|  | int16 | y,
|  | int16 | z,
|  | int16 | w
| ) |  |

Interleaves the bits of x, y, z and w.

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [4/19]

GLM_FUNC_DECL int64 glm::bitfieldInterleave | ( | int32 | x,
|  | int32 | y
| ) |  |

Interleaves the bits of x and y.

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [5/19]

GLM_FUNC_DECL int64 glm::bitfieldInterleave | ( | int32 | x,
|  | int32 | y,
|  | int32 | z
| ) |  |

Interleaves the bits of x, y and z.

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [6/19]

GLM_FUNC_DECL int16 glm::bitfieldInterleave | ( | int8 | x,
|  | int8 | y
| ) |  |

Interleaves the bits of x and y.

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [7/19]

GLM_FUNC_DECL int32 glm::bitfieldInterleave | ( | int8 | x,
|  | int8 | y,
|  | int8 | z
| ) |  |

Interleaves the bits of x, y and z.

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [8/19]

GLM_FUNC_DECL int32 glm::bitfieldInterleave | ( | int8 | x,
|  | int8 | y,
|  | int8 | z,
|  | int8 | w
| ) |  |

Interleaves the bits of x, y, z and w.

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [9/19]

GLM_FUNC_DECL uint32 glm::bitfieldInterleave | ( | u16vec2 const & | v | ) |

Interleaves the bits of x and y.

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [10/19]

GLM_FUNC_DECL uint64 glm::bitfieldInterleave | ( | u32vec2 const & | v | ) |

Interleaves the bits of x and y.

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [11/19]

GLM_FUNC_DECL uint16 glm::bitfieldInterleave | ( | u8vec2 const & | v | ) |

Interleaves the bits of x and y.

The first bit is the first bit of v.x followed by the first bit of v.y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [12/19]

GLM_FUNC_DECL uint32 glm::bitfieldInterleave | ( | uint16 | x,
|  | uint16 | y
| ) |  |

Interleaves the bits of x and y.

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [13/19]

GLM_FUNC_DECL uint64 glm::bitfieldInterleave | ( | uint16 | x,
|  | uint16 | y,
|  | uint16 | z
| ) |  |

Interleaves the bits of x, y and z.

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [14/19]

GLM_FUNC_DECL uint64 glm::bitfieldInterleave | ( | uint16 | x,
|  | uint16 | y,
|  | uint16 | z,
|  | uint16 | w
| ) |  |

Interleaves the bits of x, y, z and w.

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [15/19]

GLM_FUNC_DECL uint64 glm::bitfieldInterleave | ( | uint32 | x,
|  | uint32 | y
| ) |  |

Interleaves the bits of x and y.

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [16/19]

GLM_FUNC_DECL uint64 glm::bitfieldInterleave | ( | uint32 | x,
|  | uint32 | y,
|  | uint32 | z
| ) |  |

Interleaves the bits of x, y and z.

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [17/19]

GLM_FUNC_DECL uint16 glm::bitfieldInterleave | ( | uint8 | x,
|  | uint8 | y
| ) |  |

Interleaves the bits of x and y.

The first bit is the first bit of x followed by the first bit of y. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [18/19]

GLM_FUNC_DECL uint32 glm::bitfieldInterleave | ( | uint8 | x,
|  | uint8 | y,
|  | uint8 | z
| ) |  |

Interleaves the bits of x, y and z.

The first bit is the first bit of x followed by the first bit of y and the first bit of z. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldInterleave() [19/19]

GLM_FUNC_DECL uint32 glm::bitfieldInterleave | ( | uint8 | x,
|  | uint8 | y,
|  | uint8 | z,
|  | uint8 | w
| ) |  |

Interleaves the bits of x, y, z and w.

The first bit is the first bit of x followed by the first bit of y, the first bit of z and finally the first bit of w. The other bits are interleaved following the previous sequence.

See also
  GLM_GTC_bitfield

## bitfieldRotateLeft() [1/2]

GLM_FUNC_DECL genIUType glm::bitfieldRotateLeft | ( | genIUType | In,
|  | int | Shift
| ) |  |

Rotate all bits to the left.

All the bits dropped in the left side are inserted back on the right side.

See also
  GLM_GTC_bitfield

## bitfieldRotateLeft() [2/2]

GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldRotateLeft | ( | vec< L, T, Q > const & | In,
|  | int | Shift
| ) |  |

Rotate all bits to the left.

All the bits dropped in the left side are inserted back on the right side.

Template Parameters

  L | Integer between 1 and 4 included that qualify the dimension of the vector
  T | Signed and unsigned integer scalar types
  Q | Value from qualifier enum

See also
  GLM_GTC_bitfield

## bitfieldRotateRight() [1/2]

GLM_FUNC_DECL genIUType glm::bitfieldRotateRight | ( | genIUType | In,
|  | int | Shift
| ) |  |

Rotate all bits to the right.

All the bits dropped in the right side are inserted back on the left side.

See also
  GLM_GTC_bitfield

## bitfieldRotateRight() [2/2]

GLM_FUNC_DECL vec<L, T, Q> glm::bitfieldRotateRight | ( | vec< L, T, Q > const & | In,
|  | int | Shift
| ) |  |

Rotate all bits to the right.

All the bits dropped in the right side are inserted back on the left side.

Template Parameters

  L | Integer between 1 and 4 included that qualify the dimension of the vector
  T | Signed and unsigned integer scalar types
  Q | Value from qualifier enum

See also
  GLM_GTC_bitfield

## mask() [1/2]

GLM_FUNC_DECL genIUType glm::mask | ( | genIUType | Bits | ) |

Build a mask of 'count' bits.

See also
  GLM_GTC_bitfield

## mask() [2/2]

GLM_FUNC_DECL vec<L, T, Q> glm::mask | ( | vec< L, T, Q > const & | v | ) |

Build a mask of 'count' bits.

Template Parameters

  L | Integer between 1 and 4 included that qualify the dimension of the vector
  T | Signed and unsigned integer scalar types
  Q | Value from qualifier enum

See also
  GLM_GTC_bitfield