public void AreNotEqual() { var color1 = new Rgba1010102(0.0f, 0.0f, 0.0f, 0.0f); var color2 = new Rgba1010102(new Vector4(1.0f)); var color3 = new Rgba1010102(new Vector4(1.0f, 0.0f, 0.0f, 1.0f)); var color4 = new Rgba1010102(1.0f, 1.0f, 0.0f, 1.0f); Assert.NotEqual(color1, color2); Assert.NotEqual(color3, color4); }
public void Rgba1010102_FromBgra5551() { // arrange var rgba = new Rgba1010102(Vector4.One); uint expected = 0xFFFFFFFF; // act rgba.FromBgra5551(new Bgra5551(1.0f, 1.0f, 1.0f, 1.0f)); // assert Assert.Equal(expected, rgba.PackedValue); }
public void Rgba1010102_ToRgba32() { // arrange var rgba = new Rgba1010102(0.1f, -0.3f, 0.5f, -0.7f); var actual = default(Rgba32); var expected = new Rgba32(25, 0, 128, 0); // act rgba.ToRgba32(ref actual); // assert Assert.Equal(expected, actual); }
public void Rgba1010102_ToBgr24() { // arrange var rgba = new Rgba1010102(0.1f, -0.3f, 0.5f, -0.7f); var actual = default(Bgr24); var expected = new Bgr24(25, 0, 128); // act rgba.ToBgr24(ref actual); // assert Assert.Equal(expected, actual); }
public void Rgba1010102() { // Test the limits. Assert.Equal((uint)0x0, new Rgba1010102(Vector4.Zero).PackedValue); Assert.Equal(0xFFFFFFFF, new Rgba1010102(Vector4.One).PackedValue); // Test ToVector4 Assert.True(Equal(Vector4.Zero, new Rgba1010102(Vector4.Zero).ToVector4())); Assert.True(Equal(Vector4.One, new Rgba1010102(Vector4.One).ToVector4())); // Test clamping. Assert.True(Equal(Vector4.Zero, new Rgba1010102(Vector4.One * -1234.0f).ToVector4())); Assert.True(Equal(Vector4.One, new Rgba1010102(Vector4.One * 1234.0f).ToVector4())); // Test Ordering float x = 0x2db; float y = 0x36d; float z = 0x3b7; float w = 0x1; Assert.Equal((uint)0x7B7DB6DB, new Rgba1010102(x / 0x3ff, y / 0x3ff, z / 0x3ff, w / 3).PackedValue); x = 0.1f; y = -0.3f; z = 0.5f; w = -0.7f; Assert.Equal((uint)536871014, new Rgba1010102(x, y, z, w).PackedValue); byte[] rgb = new byte[3]; byte[] rgba = new byte[4]; byte[] bgr = new byte[3]; byte[] bgra = new byte[4]; new Rgba1010102(x, y, z, w).ToXyzBytes(rgb, 0); Assert.Equal(rgb, new byte[] { 25, 0, 128 }); new Rgba1010102(x, y, z, w).ToXyzwBytes(rgba, 0); Assert.Equal(rgba, new byte[] { 25, 0, 128, 0 }); new Rgba1010102(x, y, z, w).ToZyxBytes(bgr, 0); Assert.Equal(bgr, new byte[] { 128, 0, 25 }); new Rgba1010102(x, y, z, w).ToZyxwBytes(bgra, 0); Assert.Equal(bgra, new byte[] { 128, 0, 25, 0 }); // Alpha component accuracy will be awful. Rgba1010102 r = new Rgba1010102(); r.PackFromBytes(25, 0, 128, 0); r.ToXyzwBytes(rgba, 0); Assert.Equal(rgba, new byte[] { 25, 0, 128, 0 }); }
public void Rgba1010102() { // Test the limits. Assert.Equal((uint)0x0, new Rgba1010102(Vector4.Zero).PackedValue); Assert.Equal(0xFFFFFFFF, new Rgba1010102(Vector4.One).PackedValue); // Test ToVector4 Assert.True(Equal(Vector4.Zero, new Rgba1010102(Vector4.Zero).ToVector4())); Assert.True(Equal(Vector4.One, new Rgba1010102(Vector4.One).ToVector4())); // Test clamping. Assert.True(Equal(Vector4.Zero, new Rgba1010102(Vector4.One * -1234.0f).ToVector4())); Assert.True(Equal(Vector4.One, new Rgba1010102(Vector4.One * 1234.0f).ToVector4())); // Test Ordering float x = 0x2db; float y = 0x36d; float z = 0x3b7; float w = 0x1; Assert.Equal((uint)0x7B7DB6DB, new Rgba1010102(x / 0x3ff, y / 0x3ff, z / 0x3ff, w / 3).PackedValue); x = 0.1f; y = -0.3f; z = 0.5f; w = -0.7f; Assert.Equal((uint)536871014, new Rgba1010102(x, y, z, w).PackedValue); var rgb = default(Rgb24); var rgba = default(Rgba32); var bgr = default(Bgr24); var bgra = default(Bgra32); new Rgba1010102(x, y, z, w).ToRgb24(ref rgb); Assert.Equal(rgb, new Rgb24(25, 0, 128)); new Rgba1010102(x, y, z, w).ToRgba32(ref rgba); Assert.Equal(rgba, new Rgba32(25, 0, 128, 0)); new Rgba1010102(x, y, z, w).ToBgr24(ref bgr); Assert.Equal(bgr, new Bgr24(25, 0, 128)); new Rgba1010102(x, y, z, w).ToBgra32(ref bgra); Assert.Equal(bgra, new Bgra32(25, 0, 128, 0)); // Alpha component accuracy will be awful. var r = new Rgba1010102(); r.PackFromRgba32(new Rgba32(25, 0, 128, 0)); r.ToRgba32(ref rgba); Assert.Equal(rgba, new Rgba32(25, 0, 128, 0)); }
public void Rgba1010102_ToScaledVector4() { // arrange var rgba = new Rgba1010102(Vector4.One); // act Vector4 actual = rgba.ToScaledVector4(); // assert Assert.Equal(1, actual.X); Assert.Equal(1, actual.Y); Assert.Equal(1, actual.Z); Assert.Equal(1, actual.W); }
public void Rgba1010102_FromScaledVector4() { // arrange var rgba = new Rgba1010102(Vector4.One); var actual = default(Rgba1010102); uint expected = 0xFFFFFFFF; // act Vector4 scaled = rgba.ToScaledVector4(); actual.FromScaledVector4(scaled); // assert Assert.Equal(expected, actual.PackedValue); }
PixelBitmapContent <Rgba1010102> Encode2(PixelBitmapContent <Rgba1010102> bmpMipMap) { // Create Color Bitmap of Equal Size PixelBitmapContent <Rgba1010102> bmpColor = new PixelBitmapContent <Rgba1010102>(bmpMipMap.Width, bmpMipMap.Height); // Convert each pixel to gamma encoded color for (int y = 0; y < bmpMipMap.Height; y++) { for (int x = 0; x < bmpMipMap.Width; x++) { // Get Input Pixel Rgba1010102 CmipMap = bmpMipMap.GetPixel(x, y); // Set Output Pixel bmpColor.SetPixel(x, y, GammaEncodeColor2(CmipMap.ToVector4())); } //for (x) } //for (y) return(bmpColor); }//method
public void Rgba1010102() { // Test the limits. Assert.AreEqual(0x0, new Rgba1010102(Vector4.Zero).PackedValue); Assert.AreEqual(0xFFFFFFFF, new Rgba1010102(Vector4.One).PackedValue); // Test ToVector4 Assert.AreEqual(Vector4.Zero, new Rgba1010102(Vector4.Zero).ToVector4()); Assert.AreEqual(Vector4.One, new Rgba1010102(Vector4.One).ToVector4()); // Test clamping. Assert.AreEqual(Vector4.Zero, new Rgba1010102(Vector4.One * -1234.0f).ToVector4()); Assert.AreEqual(Vector4.One, new Rgba1010102(Vector4.One * 1234.0f).ToVector4()); //Test Ordering float x = 0x2db; float y = 0x36d; float z = 0x3b7; float w = 0x1; Assert.AreEqual(0x7B7DB6DB, new Rgba1010102(x / 0x3ff, y / 0x3ff, z / 0x3ff, w / 3).PackedValue); x = 0.1f; y = -0.3f; z = 0.5f; w = -0.7f; Assert.AreEqual(536871014, new Rgba1010102(x, y, z, w).PackedValue); var packed = new Rgba1010102(x, y, z, w).PackedValue; var unpacked = new Rgba1010102() { PackedValue = packed }.ToVector4(); Assert.AreEqual(x, unpacked.X, 0.01f); Assert.AreEqual(0f, unpacked.Y, 0.01f); Assert.AreEqual(z, unpacked.Z, 0.01f); Assert.AreEqual(0f, unpacked.W, 0.01f); }
private void GetColorData(Texture2D texture2D) { int colorDataLength = texture2D.Width * texture2D.Height; colorData = new Color[colorDataLength]; switch (texture2D.Format) { case SurfaceFormat.Color: texture2D.GetData<Color>(colorData); break; case SurfaceFormat.Alpha8: var alpha8Data = new Alpha8[colorDataLength]; texture2D.GetData<Alpha8>(alpha8Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)alpha8Data[i]).ToVector4()); } break; case SurfaceFormat.Bgr565: var bgr565Data = new Bgr565[colorDataLength]; texture2D.GetData<Bgr565>(bgr565Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgr565Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra4444: var bgra4444Data = new Bgra4444[colorDataLength]; texture2D.GetData<Bgra4444>(bgra4444Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra4444Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra5551: var bgra5551Data = new Bgra5551[colorDataLength]; texture2D.GetData<Bgra5551>(bgra5551Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra5551Data[i]).ToVector4()); } break; case SurfaceFormat.HalfSingle: var halfSingleData = new HalfSingle[colorDataLength]; texture2D.GetData<HalfSingle>(halfSingleData); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfSingleData[i]).ToVector4()); } break; case SurfaceFormat.HalfVector2: var halfVector2Data = new HalfVector2[colorDataLength]; texture2D.GetData<HalfVector2>(halfVector2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector2Data[i]).ToVector4()); } break; case SurfaceFormat.HalfVector4: var halfVector4Data = new HalfVector4[colorDataLength]; texture2D.GetData<HalfVector4>(halfVector4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector4Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte2: var normalizedByte2Data = new NormalizedByte2[colorDataLength]; texture2D.GetData<NormalizedByte2>(normalizedByte2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte2Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte4: var normalizedByte4Data = new NormalizedByte4[colorDataLength]; texture2D.GetData<NormalizedByte4>(normalizedByte4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte4Data[i]).ToVector4()); } break; case SurfaceFormat.Rg32: var rg32Data = new Rg32[colorDataLength]; texture2D.GetData<Rg32>(rg32Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rg32Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba64: var rgba64Data = new Rgba64[colorDataLength]; texture2D.GetData<Rgba64>(rgba64Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba64Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba1010102: var rgba1010102Data = new Rgba1010102[colorDataLength]; texture2D.GetData<Rgba1010102>(rgba1010102Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba1010102Data[i]).ToVector4()); } break; default: throw new Exception("Texture surface format not supported"); } }
private void GetColorData(Texture2D texture2D) { int colorDataLength = texture2D.Width * texture2D.Height; colorData = new Color[colorDataLength]; switch (texture2D.Format) { case SurfaceFormat.Single: var floatData = new float[colorDataLength]; texture2D.GetData <float>(floatData); for (int i = 0; i < colorDataLength; i++) { float brightness = floatData[i]; // Export as a greyscale image. colorData[i] = new Color(brightness, brightness, brightness); } break; case SurfaceFormat.Color: texture2D.GetData <Color>(colorData); break; case SurfaceFormat.Alpha8: var alpha8Data = new Alpha8[colorDataLength]; texture2D.GetData <Alpha8>(alpha8Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)alpha8Data[i]).ToVector4()); } break; case SurfaceFormat.Bgr565: var bgr565Data = new Bgr565[colorDataLength]; texture2D.GetData <Bgr565>(bgr565Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgr565Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra4444: var bgra4444Data = new Bgra4444[colorDataLength]; texture2D.GetData <Bgra4444>(bgra4444Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra4444Data[i]).ToVector4()); } break; case SurfaceFormat.Bgra5551: var bgra5551Data = new Bgra5551[colorDataLength]; texture2D.GetData <Bgra5551>(bgra5551Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)bgra5551Data[i]).ToVector4()); } break; case SurfaceFormat.HalfSingle: var halfSingleData = new HalfSingle[colorDataLength]; texture2D.GetData <HalfSingle>(halfSingleData); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfSingleData[i]).ToVector4()); } break; case SurfaceFormat.HalfVector2: var halfVector2Data = new HalfVector2[colorDataLength]; texture2D.GetData <HalfVector2>(halfVector2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector2Data[i]).ToVector4()); } break; case SurfaceFormat.HalfVector4: var halfVector4Data = new HalfVector4[colorDataLength]; texture2D.GetData <HalfVector4>(halfVector4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)halfVector4Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte2: var normalizedByte2Data = new NormalizedByte2[colorDataLength]; texture2D.GetData <NormalizedByte2>(normalizedByte2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte2Data[i]).ToVector4()); } break; case SurfaceFormat.NormalizedByte4: var normalizedByte4Data = new NormalizedByte4[colorDataLength]; texture2D.GetData <NormalizedByte4>(normalizedByte4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)normalizedByte4Data[i]).ToVector4()); } break; case SurfaceFormat.Rg32: var rg32Data = new Rg32[colorDataLength]; texture2D.GetData <Rg32>(rg32Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rg32Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba64: var rgba64Data = new Rgba64[colorDataLength]; texture2D.GetData <Rgba64>(rgba64Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba64Data[i]).ToVector4()); } break; case SurfaceFormat.Rgba1010102: var rgba1010102Data = new Rgba1010102[colorDataLength]; texture2D.GetData <Rgba1010102>(rgba1010102Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(((IPackedVector)rgba1010102Data[i]).ToVector4()); } break; default: throw new Exception("Texture surface format not supported"); } }
internal Color[] GetColorData() { int colorDataLength = Width * Height; var colorData = new Color[colorDataLength]; switch (Format) { case SurfaceFormat.Single: var floatData = new float[colorDataLength]; GetData(floatData); for (int i = 0; i < colorDataLength; i++) { float brightness = floatData[i]; // Export as a greyscale image. colorData[i] = new Color(brightness, brightness, brightness); } break; case SurfaceFormat.Color: GetData(colorData); break; case SurfaceFormat.Alpha8: var alpha8Data = new Alpha8[colorDataLength]; GetData(alpha8Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(alpha8Data[i].ToVector4()); } break; case SurfaceFormat.Bgr565: var bgr565Data = new Bgr565[colorDataLength]; GetData(bgr565Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(bgr565Data[i].ToVector4()); } break; case SurfaceFormat.Bgra4444: var bgra4444Data = new Bgra4444[colorDataLength]; GetData(bgra4444Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(bgra4444Data[i].ToVector4()); } break; case SurfaceFormat.Bgra5551: var bgra5551Data = new Bgra5551[colorDataLength]; GetData(bgra5551Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(bgra5551Data[i].ToVector4()); } break; case SurfaceFormat.HalfSingle: var halfSingleData = new HalfSingle[colorDataLength]; GetData(halfSingleData); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(halfSingleData[i].ToVector4()); } break; case SurfaceFormat.HalfVector2: var halfVector2Data = new HalfVector2[colorDataLength]; GetData(halfVector2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(halfVector2Data[i].ToVector4()); } break; case SurfaceFormat.HalfVector4: var halfVector4Data = new HalfVector4[colorDataLength]; GetData(halfVector4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(halfVector4Data[i].ToVector4()); } break; case SurfaceFormat.NormalizedByte2: var normalizedByte2Data = new NormalizedByte2[colorDataLength]; GetData(normalizedByte2Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(normalizedByte2Data[i].ToVector4()); } break; case SurfaceFormat.NormalizedByte4: var normalizedByte4Data = new NormalizedByte4[colorDataLength]; GetData(normalizedByte4Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(normalizedByte4Data[i].ToVector4()); } break; case SurfaceFormat.Rg32: var rg32Data = new Rg32[colorDataLength]; GetData(rg32Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(rg32Data[i].ToVector4()); } break; case SurfaceFormat.Rgba64: var rgba64Data = new Rgba64[colorDataLength]; GetData(rgba64Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(rgba64Data[i].ToVector4()); } break; case SurfaceFormat.Rgba1010102: var rgba1010102Data = new Rgba1010102[colorDataLength]; GetData(rgba1010102Data); for (int i = 0; i < colorDataLength; i++) { colorData[i] = new Color(rgba1010102Data[i].ToVector4()); } break; default: throw new Exception("Texture surface format not supported"); } return(colorData); }