Name

bitfieldExtract - return an extracted range of bits from a bitfield.

Synopsis

int  bitfieldExtract(int  a, int b, int c)
int2 bitfieldExtract(int2 a, int b, int c)
int3 bitfieldExtract(int3 a, int b, int c)
int4 bitfieldExtract(int4 a, int b, int c)

uint  bitfieldExtract(uint  a, int b, int c)
uint2 bitfieldExtract(uint2 a, int b, int c)
uint3 bitfieldExtract(uint3 a, int b, int c)
uint4 bitfieldExtract(uint4 a, int b, int c)

Parameters

a
Bitfield to extract bits from.
b
Bit offset number. Bit offsets start at 0.
c
Number of bits to extract.

Description

Returns bits from offset b of length c in the bitfield a.

Reference Implementation

bitfieldExtract for an int bitfield can be implemented like this:

int bitfieldExtract(int a, int b, int c)
{
  int mask = ~(0xffffffff << c);
  if (b > 0)
    return (a >> (b - 1)) & mask;
  else
    return a & mask;
}

Profile Support

bitfieldExtract is supported in gp5 profiles.

See Also

  http://www.opengl.org/registry/specs/ARB/gpu_shader5.txt

bitfieldInsert, bitfieldReverse, bitCount, findLSB and findMSB