This function reverses the transformation by meshopt_quantizeHalf; the
reverse conversion is easier since exponent and mantissa just need to be
expanded into the larger range. We still need to handle denormals and
specials; unlike quantization, here we choose to preserve NaN payload
because that allows us to fold inf and nan cases into a single
conditional add.
meshopt_quantizeFloat and meshopt_quantizeHalf are moved to the new
file. These are larger (esp. float->half), not as commonly used as
unorm/snorm, don't benefit as much from inlining as it's more rare that
they are used with constant arguments in perf-sensitive context, and
also not used anywhere inside meshoptimizer itself, which means we still
get to keep the independence between different translation units (we'll
need to be careful with this in the future...).
A new file makes for a convenient place to add more quantization
utilities in the future as well.
These are used in gltfpack, which doesn't see a noticeable perf
degradation on geometry-heavy meshes that use quantizeFloat.