Browse Source

Optimize Brightness

pull/221/head
James Jackson-South 9 years ago
parent
commit
4dbcdce62e
  1. 15
      src/ImageSharp/Processing/Processors/Effects/BrightnessProcessor.cs

15
src/ImageSharp/Processing/Processors/Effects/BrightnessProcessor.cs

@ -63,31 +63,26 @@ namespace ImageSharp.Processing.Processors
startY = 0; startY = 0;
} }
using (PixelAccessor<TPixel> sourcePixels = source.Lock())
{
Parallel.For( Parallel.For(
minY, minY,
maxY, maxY,
this.ParallelOptions, this.ParallelOptions,
y => y =>
{ {
int offsetY = 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];
// TODO: Check this with other formats. // TODO: Check this with other formats.
Vector4 vector = sourcePixels[offsetX, offsetY].ToVector4().Expand(); Vector4 vector = pixel.ToVector4().Expand();
Vector3 transformed = new Vector3(vector.X, vector.Y, vector.Z) + new Vector3(brightness); Vector3 transformed = new Vector3(vector.X, vector.Y, vector.Z) + new Vector3(brightness);
vector = new Vector4(transformed, vector.W); vector = new Vector4(transformed, vector.W);
TPixel packed = default(TPixel); pixel.PackFromVector4(vector.Compress());
packed.PackFromVector4(vector.Compress());
sourcePixels[offsetX, offsetY] = packed;
} }
}); });
} }
} }
} }
}
Loading…
Cancel
Save