I know this isn’t explicitly supported, but do we have the tools to pass a GUhalf[8] in a single 4-component vertex attribute despite the API?
glVertexAttribPointer size <= 4, so the nieve approach doesn’t work.
But what about packing 2 halfs in a single float (or uint)?
Question is, once you get them in the shader, can you shift/mask off 16-bits of a float/uint into a half nowadays?
Do you want to use half float like any other type?
In this case I would say no without a hand written conversion from this raw half data (passed as int without normalization) to float with the bits operations and functions. With GLSL 4.0 and the pretty extract*** functions it should be easy. It should be possible with GLSL 3.3 with & | << to actually write these extract functions.
Maybe an explicit support of half in GLSL would be nice. We have double, so why not?
Extracting the bits (sign, mentissa, exponent) from the raw data, manipulating the value with shiftings (and maybe scaling?) and assembling the 3 bits fields in a int to finally use the extension you mention to get a float. It might not that sample actually as for example the half to float cast in OpenEXR is quite big relatively to a shader program at least.
Beside saving attribute slot for maybe some heavy attribute based instancing, I not sure it could really be useful. Maybe… I love to hear the use cases!