Browse Source

Optimize Invert

pull/221/head
James Jackson-South 9 years ago
parent
commit
f3c471faf0
  1. 2
      src/ImageSharp/Processing/Processors/Effects/ContrastProcessor.cs
  2. 35
      src/ImageSharp/Processing/Processors/Effects/InvertProcessor.cs

2
src/ImageSharp/Processing/Processors/Effects/ContrastProcessor.cs

@ -71,12 +71,10 @@ namespace ImageSharp.Processing.Processors
this.ParallelOptions, this.ParallelOptions,
y => y =>
{ {
int offsetY = y - startY;
Span<TPixel> row = source.GetRowSpan(y - startY); Span<TPixel> row = source.GetRowSpan(y - startY);
for (int x = minX; x < maxX; x++) for (int x = minX; x < maxX; x++)
{ {
int offsetX = x - startX;
ref TPixel pixel = ref row[x - startX]; ref TPixel pixel = ref row[x - startX];
Vector4 vector = pixel.ToVector4().Expand(); Vector4 vector = pixel.ToVector4().Expand();

35
src/ImageSharp/Processing/Processors/Effects/InvertProcessor.cs

@ -44,27 +44,24 @@ namespace ImageSharp.Processing.Processors
startY = 0; startY = 0;
} }
using (PixelAccessor<TPixel> sourcePixels = source.Lock()) Parallel.For(
{ minY,
Parallel.For( maxY,
minY, this.ParallelOptions,
maxY, y =>
this.ParallelOptions, {
y => Span<TPixel> row = source.GetRowSpan(y - startY);
for (int x = minX; x < maxX; x++)
{ {
int offsetY = y - startY; ref TPixel pixel = ref row[x - startX];
for (int x = minX; x < maxX; x++)
{
int offsetX = x - startX;
Vector4 color = sourcePixels[offsetX, offsetY].ToVector4();
Vector3 vector = inverseVector - new Vector3(color.X, color.Y, color.Z);
TPixel packed = default(TPixel); var vector = pixel.ToVector4();
packed.PackFromVector4(new Vector4(vector, color.W)); Vector3 vector3 = inverseVector - new Vector3(vector.X, vector.Y, vector.Z);
sourcePixels[offsetX, offsetY] = packed;
} pixel.PackFromVector4(new Vector4(vector3, vector.W));
}); }
} });
} }
} }
} }
Loading…
Cancel
Save