Browse Source

Inline ToVector4()

10ms faster resize benchmark on my machine.
af/merge-core
James Jackson-South 9 years ago
parent
commit
92405c30ab
  1. 2
      src/ImageSharp/Colors/Color.cs
  2. 2
      src/ImageSharp/Colors/PackedPixel/Alpha8.cs
  3. 2
      src/ImageSharp/Colors/PackedPixel/Argb.cs
  4. 2
      src/ImageSharp/Colors/PackedPixel/Bgr565.cs
  5. 2
      src/ImageSharp/Colors/PackedPixel/Bgra4444.cs
  6. 2
      src/ImageSharp/Colors/PackedPixel/Bgra5551.cs
  7. 12
      src/ImageSharp/Colors/PackedPixel/Byte4.cs
  8. 2
      src/ImageSharp/Colors/PackedPixel/HalfSingle.cs
  9. 2
      src/ImageSharp/Colors/PackedPixel/HalfVector2.cs
  10. 2
      src/ImageSharp/Colors/PackedPixel/HalfVector4.cs
  11. 2
      src/ImageSharp/Colors/PackedPixel/NormalizedByte2.cs
  12. 2
      src/ImageSharp/Colors/PackedPixel/NormalizedByte4.cs
  13. 2
      src/ImageSharp/Colors/PackedPixel/NormalizedShort2.cs
  14. 2
      src/ImageSharp/Colors/PackedPixel/NormalizedShort4.cs

2
src/ImageSharp/Colors/Color.cs

@ -8,6 +8,7 @@ namespace ImageSharp
using System;
using System.Globalization;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255.
@ -313,6 +314,7 @@ namespace ImageSharp
}
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(this.R, this.G, this.B, this.A) / MaxBytes;

2
src/ImageSharp/Colors/PackedPixel/Alpha8.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing a single 8 bit normalized W values that is ranging from 0 to 1.
@ -62,6 +63,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(0, 0, 0, this.PackedValue / 255F);

2
src/ImageSharp/Colors/PackedPixel/Argb.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing four 8-bit unsigned normalized values ranging from 0 to 255.
@ -209,6 +210,7 @@ namespace ImageSharp
}
/// <inheritdoc/>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(this.R, this.G, this.B, this.A) / MaxBytes;

2
src/ImageSharp/Colors/PackedPixel/Bgr565.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing unsigned normalized values ranging from 0 to 1. The x and z components use 5 bits, and the y component uses 6 bits.
@ -84,6 +85,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(this.ToVector3(), 1F);

2
src/ImageSharp/Colors/PackedPixel/Bgra4444.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing unsigned normalized values, ranging from 0 to 1, using 4 bits each for x, y, z, and w.
@ -64,6 +65,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
const float Max = 1 / 15F;

2
src/ImageSharp/Colors/PackedPixel/Bgra5551.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing unsigned normalized values ranging from 0 to 1. The x , y and z components use 5 bits, and the w component uses 1 bit.
@ -66,6 +67,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(

12
src/ImageSharp/Colors/PackedPixel/Byte4.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing four 8-bit unsigned integer values, ranging from 0 to 255.
@ -66,19 +67,14 @@ namespace ImageSharp
return left.PackedValue != right.PackedValue;
}
/// <summary>
/// Sets the packed representation from a Vector4.
/// </summary>
/// <param name="vector">The vector to create the packed representation from.</param>
/// <inheritdoc />
public void PackFromVector4(Vector4 vector)
{
this.PackedValue = Pack(ref vector);
}
/// <summary>
/// Expands the packed representation into a Vector4.
/// </summary>
/// <returns>The expanded vector.</returns>
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(

2
src/ImageSharp/Colors/PackedPixel/HalfSingle.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing a single 16 bit floating point value.
@ -85,6 +86,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(this.ToSingle(), 0, 0, 1);

2
src/ImageSharp/Colors/PackedPixel/HalfVector2.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing two 16-bit floating-point values.
@ -98,6 +99,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
Vector2 vector = this.ToVector2();

2
src/ImageSharp/Colors/PackedPixel/HalfVector4.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing four 16-bit floating-point values.
@ -89,6 +90,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(

2
src/ImageSharp/Colors/PackedPixel/NormalizedByte2.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed packed pixel type containing two 8-bit signed normalized values, ranging from −1 to 1.
@ -103,6 +104,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(this.ToVector2(), 0F, 1F);

2
src/ImageSharp/Colors/PackedPixel/NormalizedByte4.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing four 8-bit signed normalized values, ranging from −1 to 1.
@ -93,6 +94,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(

2
src/ImageSharp/Colors/PackedPixel/NormalizedShort2.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing two 16-bit signed normalized values, ranging from −1 to 1.
@ -91,6 +92,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
return new Vector4(this.ToVector2(), 0, 1);

2
src/ImageSharp/Colors/PackedPixel/NormalizedShort4.cs

@ -7,6 +7,7 @@ namespace ImageSharp
{
using System;
using System.Numerics;
using System.Runtime.CompilerServices;
/// <summary>
/// Packed pixel type containing four 16-bit signed normalized values, ranging from −1 to 1.
@ -93,6 +94,7 @@ namespace ImageSharp
}
/// <inheritdoc />
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Vector4 ToVector4()
{
const float MaxVal = 0x7FFF;

Loading…
Cancel
Save