Это объясняется здесь:
http://www.khronos.org/registry/gles/extensions/OES/OES_vertex_type_10_10_10_2.txt
Modifications to table 2.9 (Component conversions)
Add the following entries:
GLType Conversion of (x, y, z) Conversion of w
------- ---------------------- ===============
INT_10_10_10_2_OES (2c + 1)/(2^10 - 1) (2c + 1)/(2^2 - 1)
UNSIGNED_10_10_10_2_OES c / (2^10 - 1) c / (2^2 - 1)
Так что, если у вас нормальная 32-битная переменная N с форматом UDEC3, то
x = (float)( (N>>22) / ((1<<10) - 1);
y = (float)( ((N>>12) & ((1<<10)-1)) / ((1<<10) - 1);
z = (float)( ((N>>2) & ((1<<10)-1)) / ((1<<10) - 1);
Скорее всего, вы захотите распаковать также w и разделить xyz на w.