static Half() { Epsilon = 0.0004887581f; MaxValue = 65504f; MinValue = 6.103516E-05f; Zero = (Half)0.0f; One = (Half)1.0f; }
/// <summary> /// Determines whether the specified object instances are considered equal. /// </summary> /// <param name = "value1" /> /// <param name = "value2" /> /// <returns> /// <c>true</c> if <paramref name = "value1" /> is the same instance as <paramref name = "value2" /> or /// if both are <c>null</c> references or if <c>value1.Equals(value2)</c> returns <c>true</c>; otherwise, <c>false</c>.</returns> public static bool Equals(ref Half value1, ref Half value2) { return value1.value == value2.value; }
/// <summary> /// Returns a value that indicates whether the current instance is equal to the specified object. /// </summary> /// <param name = "other">Object to make the comparison with.</param> /// <returns> /// <c>true</c> if the current instance is equal to the specified object; <c>false</c> otherwise.</returns> public bool Equals(Half other) { return other.value == value; }
/// <summary> /// Converts an array of half precision values into full precision values. /// </summary> /// <param name = "values">The values to be converted.</param> /// <returns>An array of converted values.</returns> public static float[] ConvertToFloat(Half[] values) { float[] results = new float[values.Length]; for(int i = 0; i < results.Length; i++) results[i] = HalfUtils.Unpack(values[i].RawValue); return results; }
/// <summary> /// Converts an array of full precision values into half precision values. /// </summary> /// <param name = "values">The values to be converted.</param> /// <returns>An array of converted values.</returns> public static Half[] ConvertToHalf(float[] values) { Half[] results = new Half[values.Length]; for(int i = 0; i < results.Length; i++) results[i] = new Half(values[i]); return results; }
/// <summary> /// Converts the given object to the type of this converter, using the specified context and culture information. /// </summary> /// <param name="context">A <see cref="T:System.ComponentModel.ITypeDescriptorContext" /> that provides a format context.</param> /// <param name="culture">A <see cref="T:System.Globalization.CultureInfo" />. If <c>null</c> is passed, the current culture is assumed.</param> /// <param name="value">The <see cref="T:System.Object" /> to convert.</param> /// <returns>An <see cref="T:System.Object" /> that represents the converted value.</returns> public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (culture == null) { culture = CultureInfo.CurrentCulture; } string @string = value as string; if (@string == null) { return base.ConvertFrom(context, culture, value); } @string = @string.Trim(); char[] separator = new char[] { culture.TextInfo.ListSeparator[0] }; string[] stringArray = @string.Split(separator); if (stringArray.Length != 1) { throw new ArgumentException("Invalid half format."); } float H = (float) TypeDescriptor.GetConverter(typeof(float)).ConvertFromString(context, culture, stringArray[0]); Half type = new Half(H); return type; }
/// <summary> /// Initializes a new instance of the <see cref="T:SiliconStudio.Core.Mathematics.Half3" /> structure. /// </summary> /// <param name="value">The value to set for the X, Y, and Z components.</param> public Half3(float value) { this.X = (Half)value; this.Y = (Half)value; this.Z = (Half)value; }
/// <summary> /// Initializes a new instance of the <see cref="T:SiliconStudio.Core.Mathematics.Half3" /> structure. /// </summary> /// <param name="x">The X component.</param> /// <param name="y">The Y component.</param> /// <param name="z">The Z component.</param> public Half3(float x, float y, float z) { this.X = (Half)x; this.Y = (Half)y; this.Z = (Half)z; }
/// <summary> /// Initializes a new instance of the <see cref="T:SiliconStudio.Core.Mathematics.Half3" /> structure. /// </summary> /// <param name="value">The value to set for the X, Y, and Z components.</param> public Half3(Half value) { this.X = value; this.Y = value; this.Z = value; }
/// <summary> /// Initializes a new instance of the <see cref="T:SiliconStudio.Core.Mathematics.Half3" /> structure. /// </summary> /// <param name="x">The X component.</param> /// <param name="y">The Y component.</param> /// <param name="z">The Z component.</param> public Half3(Half x, Half y, Half z) { this.X = x; this.Y = y; this.Z = z; }