public Quaternion ReadRotationPacked()
{
float x = Mathf.Clamp(ReadSinglePacked(),-1,1);
float y = Mathf.Clamp(ReadSinglePacked(),-1,1);
float z = Mathf.Clamp(ReadSinglePacked(),-1,1);
// VVVVVVVV
float w = Mathf.Sqrt(Mathf.Clamp01(1.0f-Mathf.Pow(x, 2) - Mathf.Pow(y, 2) - Mathf.Pow(z, 2)));