|
@@ -121,7 +121,7 @@ public record struct ColorMatrix
|
|
(0, 0, 1, 0, 0),
|
|
(0, 0, 1, 0, 0),
|
|
(0, 0, 0, 0, 0)
|
|
(0, 0, 0, 0, 0)
|
|
);
|
|
);
|
|
-
|
|
|
|
|
|
+
|
|
/// <summary>
|
|
/// <summary>
|
|
/// The alpha value will stay the alpha value <br/>
|
|
/// The alpha value will stay the alpha value <br/>
|
|
/// (_, _, _, w) => (0, 0, 0, w)
|
|
/// (_, _, _, w) => (0, 0, 0, w)
|
|
@@ -139,6 +139,17 @@ public record struct ColorMatrix
|
|
/// </summary>
|
|
/// </summary>
|
|
public static ColorMatrix OpaqueAlphaOffset => Offset(0, 0, 0, 1);
|
|
public static ColorMatrix OpaqueAlphaOffset => Offset(0, 0, 0, 1);
|
|
|
|
|
|
|
|
+ /// <summary>
|
|
|
|
+ /// The rgb values become averaged into a grayscale image. Alpha becomes zero <br/>
|
|
|
|
+ /// (r, g, b, _) => (r, g, b, 0) / 3
|
|
|
|
+ /// </summary>
|
|
|
|
+ public static ColorMatrix AverageGrayscale => new(
|
|
|
|
+ (1 / 3f, 1 / 3f, 1 / 3f, 0, 0),
|
|
|
|
+ (1 / 3f, 1 / 3f, 1 / 3f, 0, 0),
|
|
|
|
+ (1 / 3f, 1 / 3f, 1 / 3f, 0, 0),
|
|
|
|
+ (0, 0, 0, 0, 0)
|
|
|
|
+ );
|
|
|
|
+
|
|
public static ColorMatrix operator +(ColorMatrix left, ColorMatrix right) => new(left.M11 + right.M11,
|
|
public static ColorMatrix operator +(ColorMatrix left, ColorMatrix right) => new(left.M11 + right.M11,
|
|
left.M12 + right.M12, left.M13 + right.M13, left.M14 + right.M14, left.M15 + right.M15, left.M21 + right.M21,
|
|
left.M12 + right.M12, left.M13 + right.M13, left.M14 + right.M14, left.M15 + right.M15, left.M21 + right.M21,
|
|
left.M22 + right.M22, left.M23 + right.M23, left.M24 + right.M24, left.M25 + right.M25, left.M31 + right.M31,
|
|
left.M22 + right.M22, left.M23 + right.M23, left.M24 + right.M24, left.M25 + right.M25, left.M31 + right.M31,
|