public static uint PackSNorm(uint bitmask, float value) { float max = (float)(bitmask >> 1); value *= max; return((uint)(int)PackUtils.ClampAndRound(value, -max, max) & bitmask); }
public static uint PackSigned(uint bitmask, float value) { float max = (float)(bitmask >> 1); float min = (float)(-(double)max - 1.0); return((uint)(int)PackUtils.ClampAndRound(value, min, max) & bitmask); }
/// <summary> /// Expands the packed representation into a Vector4. /// </summary> public Vector4 ToVector4() { Vector4 vector4; vector4.X = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue); vector4.Y = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue >> 8); vector4.Z = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue >> 16); vector4.W = PackUtils.UnpackSNorm((uint)byte.MaxValue, this.packedValue >> 24); return(vector4); }
public static uint PackUnsigned(float bitmask, float value) { return((uint)PackUtils.ClampAndRound(value, 0.0f, bitmask)); }
public static uint PackUNorm(float bitmask, float value) { value *= bitmask; return((uint)PackUtils.ClampAndRound(value, 0.0f, bitmask)); }
private static uint PackHelper(float vectorX, float vectorY, float vectorZ, float vectorW) { return(PackUtils.PackUnsigned((float)byte.MaxValue, vectorX) | PackUtils.PackUnsigned((float)byte.MaxValue, vectorY) << 8 | PackUtils.PackUnsigned((float)byte.MaxValue, vectorZ) << 16 | PackUtils.PackUnsigned((float)byte.MaxValue, vectorW) << 24); }