diff --git a/src/ImageSharp/PixelFormats/PixelAlphaCompositionMode.cs b/src/ImageSharp/PixelFormats/PixelAlphaCompositionMode.cs index f42a264db..b003e62a4 100644 --- a/src/ImageSharp/PixelFormats/PixelAlphaCompositionMode.cs +++ b/src/ImageSharp/PixelFormats/PixelAlphaCompositionMode.cs @@ -66,5 +66,10 @@ public enum PixelAlphaCompositionMode /// /// Clear where they overlap. /// - Xor + Xor, + + /// + /// Adds the source and destination, clamping the result to the supported color and alpha range. + /// + Plus, } diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.cs b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.cs index acd9fba9c..b553e3412 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.cs @@ -202,2121 +202,4767 @@ internal static class AssociatedAlphaPixelBlenderOperators } /// - /// Applies the "NormalSrcAtop" associated-alpha composition equation. + /// Applies the "ColorDodgeSrc" associated-alpha composition equation. /// - public readonly struct NormalSrcAtop : IPixelBlenderOperator + public readonly struct ColorDodgeSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrc(background, source, amount); } /// - /// Applies the "MultiplySrcAtop" associated-alpha composition equation. + /// Applies the "ColorBurnSrc" associated-alpha composition equation. /// - public readonly struct MultiplySrcAtop : IPixelBlenderOperator + public readonly struct ColorBurnSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrc(background, source, amount); } /// - /// Applies the "AddSrcAtop" associated-alpha composition equation. + /// Applies the "SoftLightSrc" associated-alpha composition equation. /// - public readonly struct AddSrcAtop : IPixelBlenderOperator + public readonly struct SoftLightSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrc(background, source, amount); } /// - /// Applies the "SubtractSrcAtop" associated-alpha composition equation. + /// Applies the "DifferenceSrc" associated-alpha composition equation. /// - public readonly struct SubtractSrcAtop : IPixelBlenderOperator + public readonly struct DifferenceSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrc(background, source, amount); } /// - /// Applies the "ScreenSrcAtop" associated-alpha composition equation. + /// Applies the "ExclusionSrc" associated-alpha composition equation. /// - public readonly struct ScreenSrcAtop : IPixelBlenderOperator + public readonly struct ExclusionSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrc(background, source, amount); } /// - /// Applies the "DarkenSrcAtop" associated-alpha composition equation. + /// Applies the "HueSrc" associated-alpha composition equation. /// - public readonly struct DarkenSrcAtop : IPixelBlenderOperator + public readonly struct HueSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrc(background, source, amount); } /// - /// Applies the "LightenSrcAtop" associated-alpha composition equation. + /// Applies the "SaturationSrc" associated-alpha composition equation. /// - public readonly struct LightenSrcAtop : IPixelBlenderOperator + public readonly struct SaturationSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrc(background, source, amount); } /// - /// Applies the "OverlaySrcAtop" associated-alpha composition equation. + /// Applies the "ColorSrc" associated-alpha composition equation. /// - public readonly struct OverlaySrcAtop : IPixelBlenderOperator + public readonly struct ColorSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrc(background, source, amount); } /// - /// Applies the "HardLightSrcAtop" associated-alpha composition equation. + /// Applies the "LuminositySrc" associated-alpha composition equation. /// - public readonly struct HardLightSrcAtop : IPixelBlenderOperator + public readonly struct LuminositySrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrc(background, source, amount); } /// - /// Applies the "NormalSrcOver" associated-alpha composition equation. + /// Applies the "NormalSrcAtop" associated-alpha composition equation. /// - public readonly struct NormalSrcOver : IPixelBlenderOperator + public readonly struct NormalSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcAtop(background, source, amount); } /// - /// Applies the "MultiplySrcOver" associated-alpha composition equation. + /// Applies the "MultiplySrcAtop" associated-alpha composition equation. /// - public readonly struct MultiplySrcOver : IPixelBlenderOperator + public readonly struct MultiplySrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcAtop(background, source, amount); } /// - /// Applies the "AddSrcOver" associated-alpha composition equation. + /// Applies the "AddSrcAtop" associated-alpha composition equation. /// - public readonly struct AddSrcOver : IPixelBlenderOperator + public readonly struct AddSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcAtop(background, source, amount); } /// - /// Applies the "SubtractSrcOver" associated-alpha composition equation. + /// Applies the "SubtractSrcAtop" associated-alpha composition equation. /// - public readonly struct SubtractSrcOver : IPixelBlenderOperator + public readonly struct SubtractSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcAtop(background, source, amount); } /// - /// Applies the "ScreenSrcOver" associated-alpha composition equation. + /// Applies the "ScreenSrcAtop" associated-alpha composition equation. /// - public readonly struct ScreenSrcOver : IPixelBlenderOperator + public readonly struct ScreenSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcAtop(background, source, amount); } /// - /// Applies the "DarkenSrcOver" associated-alpha composition equation. + /// Applies the "DarkenSrcAtop" associated-alpha composition equation. /// - public readonly struct DarkenSrcOver : IPixelBlenderOperator + public readonly struct DarkenSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcAtop(background, source, amount); } /// - /// Applies the "LightenSrcOver" associated-alpha composition equation. + /// Applies the "LightenSrcAtop" associated-alpha composition equation. /// - public readonly struct LightenSrcOver : IPixelBlenderOperator + public readonly struct LightenSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcAtop(background, source, amount); } /// - /// Applies the "OverlaySrcOver" associated-alpha composition equation. + /// Applies the "OverlaySrcAtop" associated-alpha composition equation. /// - public readonly struct OverlaySrcOver : IPixelBlenderOperator + public readonly struct OverlaySrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcAtop(background, source, amount); } /// - /// Applies the "HardLightSrcOver" associated-alpha composition equation. + /// Applies the "HardLightSrcAtop" associated-alpha composition equation. /// - public readonly struct HardLightSrcOver : IPixelBlenderOperator + public readonly struct HardLightSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcAtop(background, source, amount); } /// - /// Applies the "NormalSrcIn" associated-alpha composition equation. + /// Applies the "ColorDodgeSrcAtop" associated-alpha composition equation. /// - public readonly struct NormalSrcIn : IPixelBlenderOperator + public readonly struct ColorDodgeSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcAtop(background, source, amount); } /// - /// Applies the "MultiplySrcIn" associated-alpha composition equation. + /// Applies the "ColorBurnSrcAtop" associated-alpha composition equation. /// - public readonly struct MultiplySrcIn : IPixelBlenderOperator + public readonly struct ColorBurnSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcAtop(background, source, amount); } /// - /// Applies the "AddSrcIn" associated-alpha composition equation. + /// Applies the "SoftLightSrcAtop" associated-alpha composition equation. /// - public readonly struct AddSrcIn : IPixelBlenderOperator + public readonly struct SoftLightSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcAtop(background, source, amount); } /// - /// Applies the "SubtractSrcIn" associated-alpha composition equation. + /// Applies the "DifferenceSrcAtop" associated-alpha composition equation. /// - public readonly struct SubtractSrcIn : IPixelBlenderOperator + public readonly struct DifferenceSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcAtop(background, source, amount); } /// - /// Applies the "ScreenSrcIn" associated-alpha composition equation. + /// Applies the "ExclusionSrcAtop" associated-alpha composition equation. /// - public readonly struct ScreenSrcIn : IPixelBlenderOperator + public readonly struct ExclusionSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcAtop(background, source, amount); } /// - /// Applies the "DarkenSrcIn" associated-alpha composition equation. + /// Applies the "HueSrcAtop" associated-alpha composition equation. /// - public readonly struct DarkenSrcIn : IPixelBlenderOperator + public readonly struct HueSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcAtop(background, source, amount); } /// - /// Applies the "LightenSrcIn" associated-alpha composition equation. + /// Applies the "SaturationSrcAtop" associated-alpha composition equation. /// - public readonly struct LightenSrcIn : IPixelBlenderOperator + public readonly struct SaturationSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcAtop(background, source, amount); } /// - /// Applies the "OverlaySrcIn" associated-alpha composition equation. + /// Applies the "ColorSrcAtop" associated-alpha composition equation. /// - public readonly struct OverlaySrcIn : IPixelBlenderOperator + public readonly struct ColorSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcAtop(background, source, amount); } /// - /// Applies the "HardLightSrcIn" associated-alpha composition equation. + /// Applies the "LuminositySrcAtop" associated-alpha composition equation. /// - public readonly struct HardLightSrcIn : IPixelBlenderOperator + public readonly struct LuminositySrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcAtop(background, source, amount); } /// - /// Applies the "NormalSrcOut" associated-alpha composition equation. + /// Applies the "NormalSrcOver" associated-alpha composition equation. /// - public readonly struct NormalSrcOut : IPixelBlenderOperator + public readonly struct NormalSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcOver(background, source, amount); } /// - /// Applies the "MultiplySrcOut" associated-alpha composition equation. + /// Applies the "MultiplySrcOver" associated-alpha composition equation. /// - public readonly struct MultiplySrcOut : IPixelBlenderOperator + public readonly struct MultiplySrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplySrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcOver(background, source, amount); } /// - /// Applies the "AddSrcOut" associated-alpha composition equation. + /// Applies the "AddSrcOver" associated-alpha composition equation. /// - public readonly struct AddSrcOut : IPixelBlenderOperator + public readonly struct AddSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcOver(background, source, amount); } /// - /// Applies the "SubtractSrcOut" associated-alpha composition equation. + /// Applies the "SubtractSrcOver" associated-alpha composition equation. /// - public readonly struct SubtractSrcOut : IPixelBlenderOperator + public readonly struct SubtractSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcOver(background, source, amount); } /// - /// Applies the "ScreenSrcOut" associated-alpha composition equation. + /// Applies the "ScreenSrcOver" associated-alpha composition equation. /// - public readonly struct ScreenSrcOut : IPixelBlenderOperator + public readonly struct ScreenSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcOver(background, source, amount); } /// - /// Applies the "DarkenSrcOut" associated-alpha composition equation. + /// Applies the "DarkenSrcOver" associated-alpha composition equation. /// - public readonly struct DarkenSrcOut : IPixelBlenderOperator + public readonly struct DarkenSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcOver(background, source, amount); } /// - /// Applies the "LightenSrcOut" associated-alpha composition equation. + /// Applies the "LightenSrcOver" associated-alpha composition equation. /// - public readonly struct LightenSrcOut : IPixelBlenderOperator + public readonly struct LightenSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcOver(background, source, amount); } /// - /// Applies the "OverlaySrcOut" associated-alpha composition equation. + /// Applies the "OverlaySrcOver" associated-alpha composition equation. /// - public readonly struct OverlaySrcOut : IPixelBlenderOperator + public readonly struct OverlaySrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlaySrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcOver(background, source, amount); } /// - /// Applies the "HardLightSrcOut" associated-alpha composition equation. + /// Applies the "HardLightSrcOver" associated-alpha composition equation. /// - public readonly struct HardLightSrcOut : IPixelBlenderOperator + public readonly struct HardLightSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightSrcOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcOver(background, source, amount); } /// - /// Applies the "NormalDest" associated-alpha composition equation. + /// Applies the "ColorDodgeSrcOver" associated-alpha composition equation. /// - public readonly struct NormalDest : IPixelBlenderOperator + public readonly struct ColorDodgeSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcOver(background, source, amount); } /// - /// Applies the "MultiplyDest" associated-alpha composition equation. + /// Applies the "ColorBurnSrcOver" associated-alpha composition equation. /// - public readonly struct MultiplyDest : IPixelBlenderOperator + public readonly struct ColorBurnSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcOver(background, source, amount); } /// - /// Applies the "AddDest" associated-alpha composition equation. + /// Applies the "SoftLightSrcOver" associated-alpha composition equation. /// - public readonly struct AddDest : IPixelBlenderOperator + public readonly struct SoftLightSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcOver(background, source, amount); } /// - /// Applies the "SubtractDest" associated-alpha composition equation. + /// Applies the "DifferenceSrcOver" associated-alpha composition equation. /// - public readonly struct SubtractDest : IPixelBlenderOperator + public readonly struct DifferenceSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcOver(background, source, amount); } /// - /// Applies the "ScreenDest" associated-alpha composition equation. + /// Applies the "ExclusionSrcOver" associated-alpha composition equation. /// - public readonly struct ScreenDest : IPixelBlenderOperator + public readonly struct ExclusionSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcOver(background, source, amount); } /// - /// Applies the "DarkenDest" associated-alpha composition equation. + /// Applies the "HueSrcOver" associated-alpha composition equation. /// - public readonly struct DarkenDest : IPixelBlenderOperator + public readonly struct HueSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcOver(background, source, amount); } /// - /// Applies the "LightenDest" associated-alpha composition equation. + /// Applies the "SaturationSrcOver" associated-alpha composition equation. /// - public readonly struct LightenDest : IPixelBlenderOperator + public readonly struct SaturationSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcOver(background, source, amount); } /// - /// Applies the "OverlayDest" associated-alpha composition equation. + /// Applies the "ColorSrcOver" associated-alpha composition equation. /// - public readonly struct OverlayDest : IPixelBlenderOperator + public readonly struct ColorSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcOver(background, source, amount); } /// - /// Applies the "HardLightDest" associated-alpha composition equation. + /// Applies the "LuminositySrcOver" associated-alpha composition equation. /// - public readonly struct HardLightDest : IPixelBlenderOperator + public readonly struct LuminositySrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDest(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcOver(background, source, amount); } /// - /// Applies the "NormalDestAtop" associated-alpha composition equation. + /// Applies the "NormalSrcIn" associated-alpha composition equation. /// - public readonly struct NormalDestAtop : IPixelBlenderOperator + public readonly struct NormalSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcIn(background, source, amount); } /// - /// Applies the "MultiplyDestAtop" associated-alpha composition equation. + /// Applies the "MultiplySrcIn" associated-alpha composition equation. /// - public readonly struct MultiplyDestAtop : IPixelBlenderOperator + public readonly struct MultiplySrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcIn(background, source, amount); } /// - /// Applies the "AddDestAtop" associated-alpha composition equation. + /// Applies the "AddSrcIn" associated-alpha composition equation. /// - public readonly struct AddDestAtop : IPixelBlenderOperator + public readonly struct AddSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcIn(background, source, amount); } /// - /// Applies the "SubtractDestAtop" associated-alpha composition equation. + /// Applies the "SubtractSrcIn" associated-alpha composition equation. /// - public readonly struct SubtractDestAtop : IPixelBlenderOperator + public readonly struct SubtractSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcIn(background, source, amount); } /// - /// Applies the "ScreenDestAtop" associated-alpha composition equation. + /// Applies the "ScreenSrcIn" associated-alpha composition equation. /// - public readonly struct ScreenDestAtop : IPixelBlenderOperator + public readonly struct ScreenSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcIn(background, source, amount); } /// - /// Applies the "DarkenDestAtop" associated-alpha composition equation. + /// Applies the "DarkenSrcIn" associated-alpha composition equation. /// - public readonly struct DarkenDestAtop : IPixelBlenderOperator + public readonly struct DarkenSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcIn(background, source, amount); } /// - /// Applies the "LightenDestAtop" associated-alpha composition equation. + /// Applies the "LightenSrcIn" associated-alpha composition equation. /// - public readonly struct LightenDestAtop : IPixelBlenderOperator + public readonly struct LightenSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcIn(background, source, amount); } /// - /// Applies the "OverlayDestAtop" associated-alpha composition equation. + /// Applies the "OverlaySrcIn" associated-alpha composition equation. /// - public readonly struct OverlayDestAtop : IPixelBlenderOperator + public readonly struct OverlaySrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcIn(background, source, amount); } /// - /// Applies the "HardLightDestAtop" associated-alpha composition equation. + /// Applies the "HardLightSrcIn" associated-alpha composition equation. /// - public readonly struct HardLightDestAtop : IPixelBlenderOperator + public readonly struct HardLightSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestAtop(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcIn(background, source, amount); } /// - /// Applies the "NormalDestOver" associated-alpha composition equation. + /// Applies the "ColorDodgeSrcIn" associated-alpha composition equation. /// - public readonly struct NormalDestOver : IPixelBlenderOperator + public readonly struct ColorDodgeSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcIn(background, source, amount); } /// - /// Applies the "MultiplyDestOver" associated-alpha composition equation. + /// Applies the "ColorBurnSrcIn" associated-alpha composition equation. /// - public readonly struct MultiplyDestOver : IPixelBlenderOperator + public readonly struct ColorBurnSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcIn(background, source, amount); } /// - /// Applies the "AddDestOver" associated-alpha composition equation. + /// Applies the "SoftLightSrcIn" associated-alpha composition equation. /// - public readonly struct AddDestOver : IPixelBlenderOperator + public readonly struct SoftLightSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcIn(background, source, amount); } /// - /// Applies the "SubtractDestOver" associated-alpha composition equation. + /// Applies the "DifferenceSrcIn" associated-alpha composition equation. /// - public readonly struct SubtractDestOver : IPixelBlenderOperator + public readonly struct DifferenceSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcIn(background, source, amount); } /// - /// Applies the "ScreenDestOver" associated-alpha composition equation. + /// Applies the "ExclusionSrcIn" associated-alpha composition equation. /// - public readonly struct ScreenDestOver : IPixelBlenderOperator + public readonly struct ExclusionSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcIn(background, source, amount); } /// - /// Applies the "DarkenDestOver" associated-alpha composition equation. + /// Applies the "HueSrcIn" associated-alpha composition equation. /// - public readonly struct DarkenDestOver : IPixelBlenderOperator + public readonly struct HueSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcIn(background, source, amount); } /// - /// Applies the "LightenDestOver" associated-alpha composition equation. + /// Applies the "SaturationSrcIn" associated-alpha composition equation. /// - public readonly struct LightenDestOver : IPixelBlenderOperator + public readonly struct SaturationSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcIn(background, source, amount); } /// - /// Applies the "OverlayDestOver" associated-alpha composition equation. + /// Applies the "ColorSrcIn" associated-alpha composition equation. /// - public readonly struct OverlayDestOver : IPixelBlenderOperator + public readonly struct ColorSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcIn(background, source, amount); } /// - /// Applies the "HardLightDestOver" associated-alpha composition equation. + /// Applies the "LuminositySrcIn" associated-alpha composition equation. /// - public readonly struct HardLightDestOver : IPixelBlenderOperator + public readonly struct LuminositySrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestOver(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcIn(background, source, amount); } /// - /// Applies the "NormalDestIn" associated-alpha composition equation. + /// Applies the "NormalSrcOut" associated-alpha composition equation. /// - public readonly struct NormalDestIn : IPixelBlenderOperator + public readonly struct NormalSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalSrcOut(background, source, amount); } /// - /// Applies the "MultiplyDestIn" associated-alpha composition equation. + /// Applies the "MultiplySrcOut" associated-alpha composition equation. /// - public readonly struct MultiplyDestIn : IPixelBlenderOperator + public readonly struct MultiplySrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplySrcOut(background, source, amount); } /// - /// Applies the "AddDestIn" associated-alpha composition equation. + /// Applies the "AddSrcOut" associated-alpha composition equation. /// - public readonly struct AddDestIn : IPixelBlenderOperator + public readonly struct AddSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddSrcOut(background, source, amount); } /// - /// Applies the "SubtractDestIn" associated-alpha composition equation. + /// Applies the "SubtractSrcOut" associated-alpha composition equation. /// - public readonly struct SubtractDestIn : IPixelBlenderOperator + public readonly struct SubtractSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractSrcOut(background, source, amount); } /// - /// Applies the "ScreenDestIn" associated-alpha composition equation. + /// Applies the "ScreenSrcOut" associated-alpha composition equation. /// - public readonly struct ScreenDestIn : IPixelBlenderOperator + public readonly struct ScreenSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenSrcOut(background, source, amount); } /// - /// Applies the "DarkenDestIn" associated-alpha composition equation. + /// Applies the "DarkenSrcOut" associated-alpha composition equation. /// - public readonly struct DarkenDestIn : IPixelBlenderOperator + public readonly struct DarkenSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenSrcOut(background, source, amount); } /// - /// Applies the "LightenDestIn" associated-alpha composition equation. + /// Applies the "LightenSrcOut" associated-alpha composition equation. /// - public readonly struct LightenDestIn : IPixelBlenderOperator + public readonly struct LightenSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenSrcOut(background, source, amount); } /// - /// Applies the "OverlayDestIn" associated-alpha composition equation. + /// Applies the "OverlaySrcOut" associated-alpha composition equation. /// - public readonly struct OverlayDestIn : IPixelBlenderOperator + public readonly struct OverlaySrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlaySrcOut(background, source, amount); } /// - /// Applies the "HardLightDestIn" associated-alpha composition equation. + /// Applies the "HardLightSrcOut" associated-alpha composition equation. /// - public readonly struct HardLightDestIn : IPixelBlenderOperator + public readonly struct HardLightSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestIn(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightSrcOut(background, source, amount); } /// - /// Applies the "NormalDestOut" associated-alpha composition equation. + /// Applies the "ColorDodgeSrcOut" associated-alpha composition equation. /// - public readonly struct NormalDestOut : IPixelBlenderOperator + public readonly struct ColorDodgeSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeSrcOut(background, source, amount); } /// - /// Applies the "MultiplyDestOut" associated-alpha composition equation. + /// Applies the "ColorBurnSrcOut" associated-alpha composition equation. /// - public readonly struct MultiplyDestOut : IPixelBlenderOperator + public readonly struct ColorBurnSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnSrcOut(background, source, amount); } /// - /// Applies the "AddDestOut" associated-alpha composition equation. + /// Applies the "SoftLightSrcOut" associated-alpha composition equation. /// - public readonly struct AddDestOut : IPixelBlenderOperator + public readonly struct SoftLightSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightSrcOut(background, source, amount); } /// - /// Applies the "SubtractDestOut" associated-alpha composition equation. + /// Applies the "DifferenceSrcOut" associated-alpha composition equation. /// - public readonly struct SubtractDestOut : IPixelBlenderOperator + public readonly struct DifferenceSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceSrcOut(background, source, amount); } /// - /// Applies the "ScreenDestOut" associated-alpha composition equation. + /// Applies the "ExclusionSrcOut" associated-alpha composition equation. /// - public readonly struct ScreenDestOut : IPixelBlenderOperator + public readonly struct ExclusionSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionSrcOut(background, source, amount); } /// - /// Applies the "DarkenDestOut" associated-alpha composition equation. + /// Applies the "HueSrcOut" associated-alpha composition equation. /// - public readonly struct DarkenDestOut : IPixelBlenderOperator + public readonly struct HueSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueSrcOut(background, source, amount); } /// - /// Applies the "LightenDestOut" associated-alpha composition equation. + /// Applies the "SaturationSrcOut" associated-alpha composition equation. /// - public readonly struct LightenDestOut : IPixelBlenderOperator + public readonly struct SaturationSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationSrcOut(background, source, amount); } /// - /// Applies the "OverlayDestOut" associated-alpha composition equation. + /// Applies the "ColorSrcOut" associated-alpha composition equation. /// - public readonly struct OverlayDestOut : IPixelBlenderOperator + public readonly struct ColorSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorSrcOut(background, source, amount); } /// - /// Applies the "HardLightDestOut" associated-alpha composition equation. + /// Applies the "LuminositySrcOut" associated-alpha composition equation. /// - public readonly struct HardLightDestOut : IPixelBlenderOperator + public readonly struct LuminositySrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightDestOut(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminositySrcOut(background, source, amount); } /// - /// Applies the "NormalClear" associated-alpha composition equation. + /// Applies the "NormalDest" associated-alpha composition equation. /// - public readonly struct NormalClear : IPixelBlenderOperator + public readonly struct NormalDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.NormalDest(background, source, amount); } /// - /// Applies the "MultiplyClear" associated-alpha composition equation. + /// Applies the "MultiplyDest" associated-alpha composition equation. /// - public readonly struct MultiplyClear : IPixelBlenderOperator + public readonly struct MultiplyDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplyDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplyDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.MultiplyDest(background, source, amount); } /// - /// Applies the "AddClear" associated-alpha composition equation. + /// Applies the "AddDest" associated-alpha composition equation. /// - public readonly struct AddClear : IPixelBlenderOperator + public readonly struct AddDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.AddDest(background, source, amount); } /// - /// Applies the "SubtractClear" associated-alpha composition equation. + /// Applies the "SubtractDest" associated-alpha composition equation. /// - public readonly struct SubtractClear : IPixelBlenderOperator + public readonly struct SubtractDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SubtractDest(background, source, amount); } /// - /// Applies the "ScreenClear" associated-alpha composition equation. + /// Applies the "ScreenDest" associated-alpha composition equation. /// - public readonly struct ScreenClear : IPixelBlenderOperator + public readonly struct ScreenDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ScreenDest(background, source, amount); } /// - /// Applies the "DarkenClear" associated-alpha composition equation. + /// Applies the "DarkenDest" associated-alpha composition equation. /// - public readonly struct DarkenClear : IPixelBlenderOperator + public readonly struct DarkenDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DarkenDest(background, source, amount); } /// - /// Applies the "LightenClear" associated-alpha composition equation. + /// Applies the "LightenDest" associated-alpha composition equation. /// - public readonly struct LightenClear : IPixelBlenderOperator + public readonly struct LightenDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LightenDest(background, source, amount); } /// - /// Applies the "OverlayClear" associated-alpha composition equation. + /// Applies the "OverlayDest" associated-alpha composition equation. /// - public readonly struct OverlayClear : IPixelBlenderOperator + public readonly struct OverlayDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlayClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlayDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlayDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.OverlayDest(background, source, amount); } /// - /// Applies the "HardLightClear" associated-alpha composition equation. + /// Applies the "HardLightDest" associated-alpha composition equation. /// - public readonly struct HardLightClear : IPixelBlenderOperator + public readonly struct HardLightDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightClear(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HardLightDest(background, source, amount); } /// - /// Applies the "NormalXor" associated-alpha composition equation. + /// Applies the "ColorDodgeDest" associated-alpha composition equation. /// - public readonly struct NormalXor : IPixelBlenderOperator + public readonly struct ColorDodgeDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.NormalXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.NormalXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.NormalXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDest(background, source, amount); } /// - /// Applies the "MultiplyXor" associated-alpha composition equation. + /// Applies the "ColorBurnDest" associated-alpha composition equation. /// - public readonly struct MultiplyXor : IPixelBlenderOperator + public readonly struct ColorBurnDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.MultiplyXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorBurnDest(background, source, amount); } /// - /// Applies the "AddXor" associated-alpha composition equation. + /// Applies the "SoftLightDest" associated-alpha composition equation. /// - public readonly struct AddXor : IPixelBlenderOperator + public readonly struct SoftLightDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.AddXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.AddXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.AddXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SoftLightDest(background, source, amount); } /// - /// Applies the "SubtractXor" associated-alpha composition equation. + /// Applies the "DifferenceDest" associated-alpha composition equation. /// - public readonly struct SubtractXor : IPixelBlenderOperator + public readonly struct DifferenceDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.SubtractXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.SubtractXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.DifferenceDest(background, source, amount); } /// - /// Applies the "ScreenXor" associated-alpha composition equation. + /// Applies the "ExclusionDest" associated-alpha composition equation. /// - public readonly struct ScreenXor : IPixelBlenderOperator + public readonly struct ExclusionDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.ScreenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.ScreenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ExclusionDest(background, source, amount); } /// - /// Applies the "DarkenXor" associated-alpha composition equation. + /// Applies the "HueDest" associated-alpha composition equation. /// - public readonly struct DarkenXor : IPixelBlenderOperator + public readonly struct HueDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.DarkenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.DarkenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.HueDest(background, source, amount); } /// - /// Applies the "LightenXor" associated-alpha composition equation. + /// Applies the "SaturationDest" associated-alpha composition equation. /// - public readonly struct LightenXor : IPixelBlenderOperator + public readonly struct SaturationDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.LightenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.LightenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.LightenXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.SaturationDest(background, source, amount); } /// - /// Applies the "OverlayXor" associated-alpha composition equation. + /// Applies the "ColorDest" associated-alpha composition equation. /// - public readonly struct OverlayXor : IPixelBlenderOperator + public readonly struct ColorDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.OverlayXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.OverlayXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.ColorDest(background, source, amount); } /// - /// Applies the "HardLightXor" associated-alpha composition equation. + /// Applies the "LuminosityDest" associated-alpha composition equation. /// - public readonly struct HardLightXor : IPixelBlenderOperator + public readonly struct LuminosityDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => true; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => AssociatedAlphaPorterDuffFunctions.HardLightXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminosityDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminosityDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => AssociatedAlphaPorterDuffFunctions.HardLightXor(background, source, amount); + => AssociatedAlphaPorterDuffFunctions.LuminosityDest(background, source, amount); } -} - -/// -/// Provides associated-alpha pixel blenders for each color and alpha composition pair. -/// -/// The associated-alpha destination pixel format. -internal static partial class AssociatedAlphaPixelBlenders - where TPixel : unmanaged, IPixel -{ /// - /// Gets the shared blender for the "NormalSrc" composition equation. + /// Applies the "NormalDestAtop" associated-alpha composition equation. /// - public static PixelBlender NormalSrc => PixelBlender.Instance; + public readonly struct NormalDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; - /// - /// Gets the shared blender for the "MultiplySrc" composition equation. - /// - public static PixelBlender MultiplySrc => PixelBlender.Instance; + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestAtop(background, source, amount); - /// - /// Gets the shared blender for the "AddSrc" composition equation. - /// - public static PixelBlender AddSrc => PixelBlender.Instance; + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestAtop(background, source, amount); - /// - /// Gets the shared blender for the "SubtractSrc" composition equation. - /// - public static PixelBlender SubtractSrc => PixelBlender.Instance; + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestAtop(background, source, amount); + } /// - /// Gets the shared blender for the "ScreenSrc" composition equation. + /// Applies the "MultiplyDestAtop" associated-alpha composition equation. /// - public static PixelBlender ScreenSrc => PixelBlender.Instance; + public readonly struct MultiplyDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; - /// - /// Gets the shared blender for the "DarkenSrc" composition equation. - /// + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestAtop(background, source, amount); + } + + /// + /// Applies the "AddDestAtop" associated-alpha composition equation. + /// + public readonly struct AddDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.AddDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestAtop(background, source, amount); + } + + /// + /// Applies the "SubtractDestAtop" associated-alpha composition equation. + /// + public readonly struct SubtractDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestAtop(background, source, amount); + } + + /// + /// Applies the "ScreenDestAtop" associated-alpha composition equation. + /// + public readonly struct ScreenDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestAtop(background, source, amount); + } + + /// + /// Applies the "DarkenDestAtop" associated-alpha composition equation. + /// + public readonly struct DarkenDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestAtop(background, source, amount); + } + + /// + /// Applies the "LightenDestAtop" associated-alpha composition equation. + /// + public readonly struct LightenDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestAtop(background, source, amount); + } + + /// + /// Applies the "OverlayDestAtop" associated-alpha composition equation. + /// + public readonly struct OverlayDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestAtop(background, source, amount); + } + + /// + /// Applies the "HardLightDestAtop" associated-alpha composition equation. + /// + public readonly struct HardLightDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestAtop(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestAtop" associated-alpha composition equation. + /// + public readonly struct ColorDodgeDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestAtop(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestAtop" associated-alpha composition equation. + /// + public readonly struct ColorBurnDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestAtop(background, source, amount); + } + + /// + /// Applies the "SoftLightDestAtop" associated-alpha composition equation. + /// + public readonly struct SoftLightDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestAtop(background, source, amount); + } + + /// + /// Applies the "DifferenceDestAtop" associated-alpha composition equation. + /// + public readonly struct DifferenceDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestAtop(background, source, amount); + } + + /// + /// Applies the "ExclusionDestAtop" associated-alpha composition equation. + /// + public readonly struct ExclusionDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestAtop(background, source, amount); + } + + /// + /// Applies the "HueDestAtop" associated-alpha composition equation. + /// + public readonly struct HueDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HueDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestAtop(background, source, amount); + } + + /// + /// Applies the "SaturationDestAtop" associated-alpha composition equation. + /// + public readonly struct SaturationDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestAtop(background, source, amount); + } + + /// + /// Applies the "ColorDestAtop" associated-alpha composition equation. + /// + public readonly struct ColorDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestAtop(background, source, amount); + } + + /// + /// Applies the "LuminosityDestAtop" associated-alpha composition equation. + /// + public readonly struct LuminosityDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestAtop(background, source, amount); + } + + /// + /// Applies the "NormalDestOver" associated-alpha composition equation. + /// + public readonly struct NormalDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestOver(background, source, amount); + } + + /// + /// Applies the "MultiplyDestOver" associated-alpha composition equation. + /// + public readonly struct MultiplyDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestOver(background, source, amount); + } + + /// + /// Applies the "AddDestOver" associated-alpha composition equation. + /// + public readonly struct AddDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.AddDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestOver(background, source, amount); + } + + /// + /// Applies the "SubtractDestOver" associated-alpha composition equation. + /// + public readonly struct SubtractDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestOver(background, source, amount); + } + + /// + /// Applies the "ScreenDestOver" associated-alpha composition equation. + /// + public readonly struct ScreenDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestOver(background, source, amount); + } + + /// + /// Applies the "DarkenDestOver" associated-alpha composition equation. + /// + public readonly struct DarkenDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestOver(background, source, amount); + } + + /// + /// Applies the "LightenDestOver" associated-alpha composition equation. + /// + public readonly struct LightenDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestOver(background, source, amount); + } + + /// + /// Applies the "OverlayDestOver" associated-alpha composition equation. + /// + public readonly struct OverlayDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestOver(background, source, amount); + } + + /// + /// Applies the "HardLightDestOver" associated-alpha composition equation. + /// + public readonly struct HardLightDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestOver(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestOver" associated-alpha composition equation. + /// + public readonly struct ColorDodgeDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestOver(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestOver" associated-alpha composition equation. + /// + public readonly struct ColorBurnDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestOver(background, source, amount); + } + + /// + /// Applies the "SoftLightDestOver" associated-alpha composition equation. + /// + public readonly struct SoftLightDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestOver(background, source, amount); + } + + /// + /// Applies the "DifferenceDestOver" associated-alpha composition equation. + /// + public readonly struct DifferenceDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestOver(background, source, amount); + } + + /// + /// Applies the "ExclusionDestOver" associated-alpha composition equation. + /// + public readonly struct ExclusionDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestOver(background, source, amount); + } + + /// + /// Applies the "HueDestOver" associated-alpha composition equation. + /// + public readonly struct HueDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HueDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestOver(background, source, amount); + } + + /// + /// Applies the "SaturationDestOver" associated-alpha composition equation. + /// + public readonly struct SaturationDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestOver(background, source, amount); + } + + /// + /// Applies the "ColorDestOver" associated-alpha composition equation. + /// + public readonly struct ColorDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestOver(background, source, amount); + } + + /// + /// Applies the "LuminosityDestOver" associated-alpha composition equation. + /// + public readonly struct LuminosityDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestOver(background, source, amount); + } + + /// + /// Applies the "NormalDestIn" associated-alpha composition equation. + /// + public readonly struct NormalDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestIn(background, source, amount); + } + + /// + /// Applies the "MultiplyDestIn" associated-alpha composition equation. + /// + public readonly struct MultiplyDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestIn(background, source, amount); + } + + /// + /// Applies the "AddDestIn" associated-alpha composition equation. + /// + public readonly struct AddDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.AddDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestIn(background, source, amount); + } + + /// + /// Applies the "SubtractDestIn" associated-alpha composition equation. + /// + public readonly struct SubtractDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestIn(background, source, amount); + } + + /// + /// Applies the "ScreenDestIn" associated-alpha composition equation. + /// + public readonly struct ScreenDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestIn(background, source, amount); + } + + /// + /// Applies the "DarkenDestIn" associated-alpha composition equation. + /// + public readonly struct DarkenDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestIn(background, source, amount); + } + + /// + /// Applies the "LightenDestIn" associated-alpha composition equation. + /// + public readonly struct LightenDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestIn(background, source, amount); + } + + /// + /// Applies the "OverlayDestIn" associated-alpha composition equation. + /// + public readonly struct OverlayDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestIn(background, source, amount); + } + + /// + /// Applies the "HardLightDestIn" associated-alpha composition equation. + /// + public readonly struct HardLightDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestIn(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestIn" associated-alpha composition equation. + /// + public readonly struct ColorDodgeDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestIn(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestIn" associated-alpha composition equation. + /// + public readonly struct ColorBurnDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestIn(background, source, amount); + } + + /// + /// Applies the "SoftLightDestIn" associated-alpha composition equation. + /// + public readonly struct SoftLightDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestIn(background, source, amount); + } + + /// + /// Applies the "DifferenceDestIn" associated-alpha composition equation. + /// + public readonly struct DifferenceDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestIn(background, source, amount); + } + + /// + /// Applies the "ExclusionDestIn" associated-alpha composition equation. + /// + public readonly struct ExclusionDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestIn(background, source, amount); + } + + /// + /// Applies the "HueDestIn" associated-alpha composition equation. + /// + public readonly struct HueDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HueDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestIn(background, source, amount); + } + + /// + /// Applies the "SaturationDestIn" associated-alpha composition equation. + /// + public readonly struct SaturationDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestIn(background, source, amount); + } + + /// + /// Applies the "ColorDestIn" associated-alpha composition equation. + /// + public readonly struct ColorDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestIn(background, source, amount); + } + + /// + /// Applies the "LuminosityDestIn" associated-alpha composition equation. + /// + public readonly struct LuminosityDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestIn(background, source, amount); + } + + /// + /// Applies the "NormalDestOut" associated-alpha composition equation. + /// + public readonly struct NormalDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.NormalDestOut(background, source, amount); + } + + /// + /// Applies the "MultiplyDestOut" associated-alpha composition equation. + /// + public readonly struct MultiplyDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyDestOut(background, source, amount); + } + + /// + /// Applies the "AddDestOut" associated-alpha composition equation. + /// + public readonly struct AddDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.AddDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.AddDestOut(background, source, amount); + } + + /// + /// Applies the "SubtractDestOut" associated-alpha composition equation. + /// + public readonly struct SubtractDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractDestOut(background, source, amount); + } + + /// + /// Applies the "ScreenDestOut" associated-alpha composition equation. + /// + public readonly struct ScreenDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenDestOut(background, source, amount); + } + + /// + /// Applies the "DarkenDestOut" associated-alpha composition equation. + /// + public readonly struct DarkenDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenDestOut(background, source, amount); + } + + /// + /// Applies the "LightenDestOut" associated-alpha composition equation. + /// + public readonly struct LightenDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LightenDestOut(background, source, amount); + } + + /// + /// Applies the "OverlayDestOut" associated-alpha composition equation. + /// + public readonly struct OverlayDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayDestOut(background, source, amount); + } + + /// + /// Applies the "HardLightDestOut" associated-alpha composition equation. + /// + public readonly struct HardLightDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightDestOut(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestOut" associated-alpha composition equation. + /// + public readonly struct ColorDodgeDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeDestOut(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestOut" associated-alpha composition equation. + /// + public readonly struct ColorBurnDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnDestOut(background, source, amount); + } + + /// + /// Applies the "SoftLightDestOut" associated-alpha composition equation. + /// + public readonly struct SoftLightDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightDestOut(background, source, amount); + } + + /// + /// Applies the "DifferenceDestOut" associated-alpha composition equation. + /// + public readonly struct DifferenceDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceDestOut(background, source, amount); + } + + /// + /// Applies the "ExclusionDestOut" associated-alpha composition equation. + /// + public readonly struct ExclusionDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionDestOut(background, source, amount); + } + + /// + /// Applies the "HueDestOut" associated-alpha composition equation. + /// + public readonly struct HueDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HueDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HueDestOut(background, source, amount); + } + + /// + /// Applies the "SaturationDestOut" associated-alpha composition equation. + /// + public readonly struct SaturationDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationDestOut(background, source, amount); + } + + /// + /// Applies the "ColorDestOut" associated-alpha composition equation. + /// + public readonly struct ColorDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDestOut(background, source, amount); + } + + /// + /// Applies the "LuminosityDestOut" associated-alpha composition equation. + /// + public readonly struct LuminosityDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityDestOut(background, source, amount); + } + + /// + /// Applies the "NormalClear" associated-alpha composition equation. + /// + public readonly struct NormalClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.NormalClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.NormalClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.NormalClear(background, source, amount); + } + + /// + /// Applies the "MultiplyClear" associated-alpha composition equation. + /// + public readonly struct MultiplyClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyClear(background, source, amount); + } + + /// + /// Applies the "AddClear" associated-alpha composition equation. + /// + public readonly struct AddClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.AddClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.AddClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.AddClear(background, source, amount); + } + + /// + /// Applies the "SubtractClear" associated-alpha composition equation. + /// + public readonly struct SubtractClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SubtractClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractClear(background, source, amount); + } + + /// + /// Applies the "ScreenClear" associated-alpha composition equation. + /// + public readonly struct ScreenClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ScreenClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenClear(background, source, amount); + } + + /// + /// Applies the "DarkenClear" associated-alpha composition equation. + /// + public readonly struct DarkenClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DarkenClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenClear(background, source, amount); + } + + /// + /// Applies the "LightenClear" associated-alpha composition equation. + /// + public readonly struct LightenClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LightenClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LightenClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LightenClear(background, source, amount); + } + + /// + /// Applies the "OverlayClear" associated-alpha composition equation. + /// + public readonly struct OverlayClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.OverlayClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayClear(background, source, amount); + } + + /// + /// Applies the "HardLightClear" associated-alpha composition equation. + /// + public readonly struct HardLightClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HardLightClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightClear(background, source, amount); + } + + /// + /// Applies the "ColorDodgeClear" associated-alpha composition equation. + /// + public readonly struct ColorDodgeClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeClear(background, source, amount); + } + + /// + /// Applies the "ColorBurnClear" associated-alpha composition equation. + /// + public readonly struct ColorBurnClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnClear(background, source, amount); + } + + /// + /// Applies the "SoftLightClear" associated-alpha composition equation. + /// + public readonly struct SoftLightClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightClear(background, source, amount); + } + + /// + /// Applies the "DifferenceClear" associated-alpha composition equation. + /// + public readonly struct DifferenceClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceClear(background, source, amount); + } + + /// + /// Applies the "ExclusionClear" associated-alpha composition equation. + /// + public readonly struct ExclusionClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionClear(background, source, amount); + } + + /// + /// Applies the "HueClear" associated-alpha composition equation. + /// + public readonly struct HueClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HueClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HueClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HueClear(background, source, amount); + } + + /// + /// Applies the "SaturationClear" associated-alpha composition equation. + /// + public readonly struct SaturationClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SaturationClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationClear(background, source, amount); + } + + /// + /// Applies the "ColorClear" associated-alpha composition equation. + /// + public readonly struct ColorClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorClear(background, source, amount); + } + + /// + /// Applies the "LuminosityClear" associated-alpha composition equation. + /// + public readonly struct LuminosityClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityClear(background, source, amount); + } + + /// + /// Applies the "NormalXor" associated-alpha composition equation. + /// + public readonly struct NormalXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.NormalXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.NormalXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.NormalXor(background, source, amount); + } + + /// + /// Applies the "MultiplyXor" associated-alpha composition equation. + /// + public readonly struct MultiplyXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyXor(background, source, amount); + } + + /// + /// Applies the "AddXor" associated-alpha composition equation. + /// + public readonly struct AddXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.AddXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.AddXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.AddXor(background, source, amount); + } + + /// + /// Applies the "SubtractXor" associated-alpha composition equation. + /// + public readonly struct SubtractXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SubtractXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractXor(background, source, amount); + } + + /// + /// Applies the "ScreenXor" associated-alpha composition equation. + /// + public readonly struct ScreenXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ScreenXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenXor(background, source, amount); + } + + /// + /// Applies the "DarkenXor" associated-alpha composition equation. + /// + public readonly struct DarkenXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DarkenXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenXor(background, source, amount); + } + + /// + /// Applies the "LightenXor" associated-alpha composition equation. + /// + public readonly struct LightenXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LightenXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LightenXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LightenXor(background, source, amount); + } + + /// + /// Applies the "OverlayXor" associated-alpha composition equation. + /// + public readonly struct OverlayXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.OverlayXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayXor(background, source, amount); + } + + /// + /// Applies the "HardLightXor" associated-alpha composition equation. + /// + public readonly struct HardLightXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HardLightXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightXor(background, source, amount); + } + + /// + /// Applies the "ColorDodgeXor" associated-alpha composition equation. + /// + public readonly struct ColorDodgeXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgeXor(background, source, amount); + } + + /// + /// Applies the "ColorBurnXor" associated-alpha composition equation. + /// + public readonly struct ColorBurnXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnXor(background, source, amount); + } + + /// + /// Applies the "SoftLightXor" associated-alpha composition equation. + /// + public readonly struct SoftLightXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightXor(background, source, amount); + } + + /// + /// Applies the "DifferenceXor" associated-alpha composition equation. + /// + public readonly struct DifferenceXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DifferenceXor(background, source, amount); + } + + /// + /// Applies the "ExclusionXor" associated-alpha composition equation. + /// + public readonly struct ExclusionXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionXor(background, source, amount); + } + + /// + /// Applies the "HueXor" associated-alpha composition equation. + /// + public readonly struct HueXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HueXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HueXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HueXor(background, source, amount); + } + + /// + /// Applies the "SaturationXor" associated-alpha composition equation. + /// + public readonly struct SaturationXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SaturationXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationXor(background, source, amount); + } + + /// + /// Applies the "ColorXor" associated-alpha composition equation. + /// + public readonly struct ColorXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorXor(background, source, amount); + } + + /// + /// Applies the "LuminosityXor" associated-alpha composition equation. + /// + public readonly struct LuminosityXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityXor(background, source, amount); + } + + /// + /// Applies the "NormalPlus" associated-alpha composition equation. + /// + public readonly struct NormalPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.NormalPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.NormalPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.NormalPlus(background, source, amount); + } + + /// + /// Applies the "MultiplyPlus" associated-alpha composition equation. + /// + public readonly struct MultiplyPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.MultiplyPlus(background, source, amount); + } + + /// + /// Applies the "AddPlus" associated-alpha composition equation. + /// + public readonly struct AddPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.AddPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.AddPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.AddPlus(background, source, amount); + } + + /// + /// Applies the "SubtractPlus" associated-alpha composition equation. + /// + public readonly struct SubtractPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SubtractPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SubtractPlus(background, source, amount); + } + + /// + /// Applies the "ScreenPlus" associated-alpha composition equation. + /// + public readonly struct ScreenPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ScreenPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ScreenPlus(background, source, amount); + } + + /// + /// Applies the "DarkenPlus" associated-alpha composition equation. + /// + public readonly struct DarkenPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DarkenPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DarkenPlus(background, source, amount); + } + + /// + /// Applies the "LightenPlus" associated-alpha composition equation. + /// + public readonly struct LightenPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LightenPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LightenPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LightenPlus(background, source, amount); + } + + /// + /// Applies the "OverlayPlus" associated-alpha composition equation. + /// + public readonly struct OverlayPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.OverlayPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.OverlayPlus(background, source, amount); + } + + /// + /// Applies the "HardLightPlus" associated-alpha composition equation. + /// + public readonly struct HardLightPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HardLightPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HardLightPlus(background, source, amount); + } + + /// + /// Applies the "ColorDodgePlus" associated-alpha composition equation. + /// + public readonly struct ColorDodgePlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgePlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgePlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorDodgePlus(background, source, amount); + } + + /// + /// Applies the "ColorBurnPlus" associated-alpha composition equation. + /// + public readonly struct ColorBurnPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorBurnPlus(background, source, amount); + } + + /// + /// Applies the "SoftLightPlus" associated-alpha composition equation. + /// + public readonly struct SoftLightPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SoftLightPlus(background, source, amount); + } + + /// + /// Applies the "DifferencePlus" associated-alpha composition equation. + /// + public readonly struct DifferencePlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.DifferencePlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.DifferencePlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.DifferencePlus(background, source, amount); + } + + /// + /// Applies the "ExclusionPlus" associated-alpha composition equation. + /// + public readonly struct ExclusionPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ExclusionPlus(background, source, amount); + } + + /// + /// Applies the "HuePlus" associated-alpha composition equation. + /// + public readonly struct HuePlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.HuePlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.HuePlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.HuePlus(background, source, amount); + } + + /// + /// Applies the "SaturationPlus" associated-alpha composition equation. + /// + public readonly struct SaturationPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.SaturationPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.SaturationPlus(background, source, amount); + } + + /// + /// Applies the "ColorPlus" associated-alpha composition equation. + /// + public readonly struct ColorPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.ColorPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.ColorPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.ColorPlus(background, source, amount); + } + + /// + /// Applies the "LuminosityPlus" associated-alpha composition equation. + /// + public readonly struct LuminosityPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => true; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => AssociatedAlphaPorterDuffFunctions.LuminosityPlus(background, source, amount); + } + +} + +/// +/// Provides associated-alpha pixel blenders for each color and alpha composition pair. +/// +/// The associated-alpha destination pixel format. +internal static partial class AssociatedAlphaPixelBlenders + where TPixel : unmanaged, IPixel +{ + /// + /// Gets the shared blender for the "NormalSrc" composition equation. + /// + public static PixelBlender NormalSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "MultiplySrc" composition equation. + /// + public static PixelBlender MultiplySrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "AddSrc" composition equation. + /// + public static PixelBlender AddSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SubtractSrc" composition equation. + /// + public static PixelBlender SubtractSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ScreenSrc" composition equation. + /// + public static PixelBlender ScreenSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DarkenSrc" composition equation. + /// public static PixelBlender DarkenSrc => PixelBlender.Instance; /// @@ -2334,6 +4980,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightSrc => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrc" composition equation. + /// + public static PixelBlender ColorDodgeSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrc" composition equation. + /// + public static PixelBlender ColorBurnSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrc" composition equation. + /// + public static PixelBlender SoftLightSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrc" composition equation. + /// + public static PixelBlender DifferenceSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrc" composition equation. + /// + public static PixelBlender ExclusionSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrc" composition equation. + /// + public static PixelBlender HueSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrc" composition equation. + /// + public static PixelBlender SaturationSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrc" composition equation. + /// + public static PixelBlender ColorSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrc" composition equation. + /// + public static PixelBlender LuminositySrc => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcAtop" composition equation. /// @@ -2379,6 +5070,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightSrcAtop => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrcAtop" composition equation. + /// + public static PixelBlender ColorDodgeSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcAtop" composition equation. + /// + public static PixelBlender ColorBurnSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcAtop" composition equation. + /// + public static PixelBlender SoftLightSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrcAtop" composition equation. + /// + public static PixelBlender DifferenceSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrcAtop" composition equation. + /// + public static PixelBlender ExclusionSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrcAtop" composition equation. + /// + public static PixelBlender HueSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrcAtop" composition equation. + /// + public static PixelBlender SaturationSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrcAtop" composition equation. + /// + public static PixelBlender ColorSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrcAtop" composition equation. + /// + public static PixelBlender LuminositySrcAtop => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcOver" composition equation. /// @@ -2424,6 +5160,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightSrcOver => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrcOver" composition equation. + /// + public static PixelBlender ColorDodgeSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcOver" composition equation. + /// + public static PixelBlender ColorBurnSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcOver" composition equation. + /// + public static PixelBlender SoftLightSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrcOver" composition equation. + /// + public static PixelBlender DifferenceSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrcOver" composition equation. + /// + public static PixelBlender ExclusionSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrcOver" composition equation. + /// + public static PixelBlender HueSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrcOver" composition equation. + /// + public static PixelBlender SaturationSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrcOver" composition equation. + /// + public static PixelBlender ColorSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrcOver" composition equation. + /// + public static PixelBlender LuminositySrcOver => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcIn" composition equation. /// @@ -2469,6 +5250,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightSrcIn => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrcIn" composition equation. + /// + public static PixelBlender ColorDodgeSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcIn" composition equation. + /// + public static PixelBlender ColorBurnSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcIn" composition equation. + /// + public static PixelBlender SoftLightSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrcIn" composition equation. + /// + public static PixelBlender DifferenceSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrcIn" composition equation. + /// + public static PixelBlender ExclusionSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrcIn" composition equation. + /// + public static PixelBlender HueSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrcIn" composition equation. + /// + public static PixelBlender SaturationSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrcIn" composition equation. + /// + public static PixelBlender ColorSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrcIn" composition equation. + /// + public static PixelBlender LuminositySrcIn => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcOut" composition equation. /// @@ -2482,37 +5308,82 @@ internal static partial class AssociatedAlphaPixelBlenders /// /// Gets the shared blender for the "AddSrcOut" composition equation. /// - public static PixelBlender AddSrcOut => PixelBlender.Instance; + public static PixelBlender AddSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SubtractSrcOut" composition equation. + /// + public static PixelBlender SubtractSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ScreenSrcOut" composition equation. + /// + public static PixelBlender ScreenSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DarkenSrcOut" composition equation. + /// + public static PixelBlender DarkenSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LightenSrcOut" composition equation. + /// + public static PixelBlender LightenSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "OverlaySrcOut" composition equation. + /// + public static PixelBlender OverlaySrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HardLightSrcOut" composition equation. + /// + public static PixelBlender HardLightSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDodgeSrcOut" composition equation. + /// + public static PixelBlender ColorDodgeSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcOut" composition equation. + /// + public static PixelBlender ColorBurnSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcOut" composition equation. + /// + public static PixelBlender SoftLightSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "SubtractSrcOut" composition equation. + /// Gets the shared blender for the "DifferenceSrcOut" composition equation. /// - public static PixelBlender SubtractSrcOut => PixelBlender.Instance; + public static PixelBlender DifferenceSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "ScreenSrcOut" composition equation. + /// Gets the shared blender for the "ExclusionSrcOut" composition equation. /// - public static PixelBlender ScreenSrcOut => PixelBlender.Instance; + public static PixelBlender ExclusionSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "DarkenSrcOut" composition equation. + /// Gets the shared blender for the "HueSrcOut" composition equation. /// - public static PixelBlender DarkenSrcOut => PixelBlender.Instance; + public static PixelBlender HueSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "LightenSrcOut" composition equation. + /// Gets the shared blender for the "SaturationSrcOut" composition equation. /// - public static PixelBlender LightenSrcOut => PixelBlender.Instance; + public static PixelBlender SaturationSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "OverlaySrcOut" composition equation. + /// Gets the shared blender for the "ColorSrcOut" composition equation. /// - public static PixelBlender OverlaySrcOut => PixelBlender.Instance; + public static PixelBlender ColorSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "HardLightSrcOut" composition equation. + /// Gets the shared blender for the "LuminositySrcOut" composition equation. /// - public static PixelBlender HardLightSrcOut => PixelBlender.Instance; + public static PixelBlender LuminositySrcOut => PixelBlender.Instance; /// /// Gets the shared blender for the "NormalDest" composition equation. @@ -2559,6 +5430,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightDest => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDest" composition equation. + /// + public static PixelBlender ColorDodgeDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDest" composition equation. + /// + public static PixelBlender ColorBurnDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDest" composition equation. + /// + public static PixelBlender SoftLightDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDest" composition equation. + /// + public static PixelBlender DifferenceDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDest" composition equation. + /// + public static PixelBlender ExclusionDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDest" composition equation. + /// + public static PixelBlender HueDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDest" composition equation. + /// + public static PixelBlender SaturationDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDest" composition equation. + /// + public static PixelBlender ColorDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDest" composition equation. + /// + public static PixelBlender LuminosityDest => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestAtop" composition equation. /// @@ -2604,6 +5520,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightDestAtop => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestAtop" composition equation. + /// + public static PixelBlender ColorDodgeDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestAtop" composition equation. + /// + public static PixelBlender ColorBurnDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestAtop" composition equation. + /// + public static PixelBlender SoftLightDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestAtop" composition equation. + /// + public static PixelBlender DifferenceDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestAtop" composition equation. + /// + public static PixelBlender ExclusionDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestAtop" composition equation. + /// + public static PixelBlender HueDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestAtop" composition equation. + /// + public static PixelBlender SaturationDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestAtop" composition equation. + /// + public static PixelBlender ColorDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestAtop" composition equation. + /// + public static PixelBlender LuminosityDestAtop => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestOver" composition equation. /// @@ -2649,6 +5610,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightDestOver => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestOver" composition equation. + /// + public static PixelBlender ColorDodgeDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestOver" composition equation. + /// + public static PixelBlender ColorBurnDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestOver" composition equation. + /// + public static PixelBlender SoftLightDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestOver" composition equation. + /// + public static PixelBlender DifferenceDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestOver" composition equation. + /// + public static PixelBlender ExclusionDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestOver" composition equation. + /// + public static PixelBlender HueDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestOver" composition equation. + /// + public static PixelBlender SaturationDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestOver" composition equation. + /// + public static PixelBlender ColorDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestOver" composition equation. + /// + public static PixelBlender LuminosityDestOver => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestIn" composition equation. /// @@ -2694,6 +5700,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightDestIn => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestIn" composition equation. + /// + public static PixelBlender ColorDodgeDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestIn" composition equation. + /// + public static PixelBlender ColorBurnDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestIn" composition equation. + /// + public static PixelBlender SoftLightDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestIn" composition equation. + /// + public static PixelBlender DifferenceDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestIn" composition equation. + /// + public static PixelBlender ExclusionDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestIn" composition equation. + /// + public static PixelBlender HueDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestIn" composition equation. + /// + public static PixelBlender SaturationDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestIn" composition equation. + /// + public static PixelBlender ColorDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestIn" composition equation. + /// + public static PixelBlender LuminosityDestIn => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestOut" composition equation. /// @@ -2739,6 +5790,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightDestOut => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestOut" composition equation. + /// + public static PixelBlender ColorDodgeDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestOut" composition equation. + /// + public static PixelBlender ColorBurnDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestOut" composition equation. + /// + public static PixelBlender SoftLightDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestOut" composition equation. + /// + public static PixelBlender DifferenceDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestOut" composition equation. + /// + public static PixelBlender ExclusionDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestOut" composition equation. + /// + public static PixelBlender HueDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestOut" composition equation. + /// + public static PixelBlender SaturationDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestOut" composition equation. + /// + public static PixelBlender ColorDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestOut" composition equation. + /// + public static PixelBlender LuminosityDestOut => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalClear" composition equation. /// @@ -2784,6 +5880,51 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightClear => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeClear" composition equation. + /// + public static PixelBlender ColorDodgeClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnClear" composition equation. + /// + public static PixelBlender ColorBurnClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightClear" composition equation. + /// + public static PixelBlender SoftLightClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceClear" composition equation. + /// + public static PixelBlender DifferenceClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionClear" composition equation. + /// + public static PixelBlender ExclusionClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueClear" composition equation. + /// + public static PixelBlender HueClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationClear" composition equation. + /// + public static PixelBlender SaturationClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorClear" composition equation. + /// + public static PixelBlender ColorClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityClear" composition equation. + /// + public static PixelBlender LuminosityClear => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalXor" composition equation. /// @@ -2829,4 +5970,139 @@ internal static partial class AssociatedAlphaPixelBlenders /// public static PixelBlender HardLightXor => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeXor" composition equation. + /// + public static PixelBlender ColorDodgeXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnXor" composition equation. + /// + public static PixelBlender ColorBurnXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightXor" composition equation. + /// + public static PixelBlender SoftLightXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceXor" composition equation. + /// + public static PixelBlender DifferenceXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionXor" composition equation. + /// + public static PixelBlender ExclusionXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueXor" composition equation. + /// + public static PixelBlender HueXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationXor" composition equation. + /// + public static PixelBlender SaturationXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorXor" composition equation. + /// + public static PixelBlender ColorXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityXor" composition equation. + /// + public static PixelBlender LuminosityXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "NormalPlus" composition equation. + /// + public static PixelBlender NormalPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "MultiplyPlus" composition equation. + /// + public static PixelBlender MultiplyPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "AddPlus" composition equation. + /// + public static PixelBlender AddPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SubtractPlus" composition equation. + /// + public static PixelBlender SubtractPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ScreenPlus" composition equation. + /// + public static PixelBlender ScreenPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DarkenPlus" composition equation. + /// + public static PixelBlender DarkenPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LightenPlus" composition equation. + /// + public static PixelBlender LightenPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "OverlayPlus" composition equation. + /// + public static PixelBlender OverlayPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HardLightPlus" composition equation. + /// + public static PixelBlender HardLightPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDodgePlus" composition equation. + /// + public static PixelBlender ColorDodgePlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnPlus" composition equation. + /// + public static PixelBlender ColorBurnPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightPlus" composition equation. + /// + public static PixelBlender SoftLightPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferencePlus" composition equation. + /// + public static PixelBlender DifferencePlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionPlus" composition equation. + /// + public static PixelBlender ExclusionPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HuePlus" composition equation. + /// + public static PixelBlender HuePlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationPlus" composition equation. + /// + public static PixelBlender SaturationPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorPlus" composition equation. + /// + public static PixelBlender ColorPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityPlus" composition equation. + /// + public static PixelBlender LuminosityPlus => PixelBlender.Instance; + } diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.tt b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.tt index 5fc7f91c4..127f45df3 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.tt +++ b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.Generated.tt @@ -29,6 +29,7 @@ var composers = new [] "DestOut", "Clear", "Xor", + "Plus", }; var blenders = new [] @@ -42,6 +43,15 @@ var blenders = new [] "Lighten", "Overlay", "HardLight", + "ColorDodge", + "ColorBurn", + "SoftLight", + "Difference", + "Exclusion", + "Hue", + "Saturation", + "Color", + "Luminosity", }; #> /// diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.cs b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.cs index 0664e3fa0..8650cc9f9 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPixelBlenders.cs @@ -29,6 +29,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenSrc, PixelColorBlendingMode.Overlay => OverlaySrc, PixelColorBlendingMode.HardLight => HardLightSrc, + PixelColorBlendingMode.ColorDodge => ColorDodgeSrc, + PixelColorBlendingMode.ColorBurn => ColorBurnSrc, + PixelColorBlendingMode.SoftLight => SoftLightSrc, + PixelColorBlendingMode.Difference => DifferenceSrc, + PixelColorBlendingMode.Exclusion => ExclusionSrc, + PixelColorBlendingMode.Hue => HueSrc, + PixelColorBlendingMode.Saturation => SaturationSrc, + PixelColorBlendingMode.Color => ColorSrc, + PixelColorBlendingMode.Luminosity => LuminositySrc, _ => NormalSrc, }, PixelAlphaCompositionMode.SrcAtop => colorMode switch @@ -41,6 +50,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenSrcAtop, PixelColorBlendingMode.Overlay => OverlaySrcAtop, PixelColorBlendingMode.HardLight => HardLightSrcAtop, + PixelColorBlendingMode.ColorDodge => ColorDodgeSrcAtop, + PixelColorBlendingMode.ColorBurn => ColorBurnSrcAtop, + PixelColorBlendingMode.SoftLight => SoftLightSrcAtop, + PixelColorBlendingMode.Difference => DifferenceSrcAtop, + PixelColorBlendingMode.Exclusion => ExclusionSrcAtop, + PixelColorBlendingMode.Hue => HueSrcAtop, + PixelColorBlendingMode.Saturation => SaturationSrcAtop, + PixelColorBlendingMode.Color => ColorSrcAtop, + PixelColorBlendingMode.Luminosity => LuminositySrcAtop, _ => NormalSrcAtop, }, PixelAlphaCompositionMode.SrcIn => colorMode switch @@ -53,6 +71,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenSrcIn, PixelColorBlendingMode.Overlay => OverlaySrcIn, PixelColorBlendingMode.HardLight => HardLightSrcIn, + PixelColorBlendingMode.ColorDodge => ColorDodgeSrcIn, + PixelColorBlendingMode.ColorBurn => ColorBurnSrcIn, + PixelColorBlendingMode.SoftLight => SoftLightSrcIn, + PixelColorBlendingMode.Difference => DifferenceSrcIn, + PixelColorBlendingMode.Exclusion => ExclusionSrcIn, + PixelColorBlendingMode.Hue => HueSrcIn, + PixelColorBlendingMode.Saturation => SaturationSrcIn, + PixelColorBlendingMode.Color => ColorSrcIn, + PixelColorBlendingMode.Luminosity => LuminositySrcIn, _ => NormalSrcIn, }, PixelAlphaCompositionMode.SrcOut => colorMode switch @@ -65,6 +92,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenSrcOut, PixelColorBlendingMode.Overlay => OverlaySrcOut, PixelColorBlendingMode.HardLight => HardLightSrcOut, + PixelColorBlendingMode.ColorDodge => ColorDodgeSrcOut, + PixelColorBlendingMode.ColorBurn => ColorBurnSrcOut, + PixelColorBlendingMode.SoftLight => SoftLightSrcOut, + PixelColorBlendingMode.Difference => DifferenceSrcOut, + PixelColorBlendingMode.Exclusion => ExclusionSrcOut, + PixelColorBlendingMode.Hue => HueSrcOut, + PixelColorBlendingMode.Saturation => SaturationSrcOut, + PixelColorBlendingMode.Color => ColorSrcOut, + PixelColorBlendingMode.Luminosity => LuminositySrcOut, _ => NormalSrcOut, }, PixelAlphaCompositionMode.Dest => colorMode switch @@ -77,6 +113,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenDest, PixelColorBlendingMode.Overlay => OverlayDest, PixelColorBlendingMode.HardLight => HardLightDest, + PixelColorBlendingMode.ColorDodge => ColorDodgeDest, + PixelColorBlendingMode.ColorBurn => ColorBurnDest, + PixelColorBlendingMode.SoftLight => SoftLightDest, + PixelColorBlendingMode.Difference => DifferenceDest, + PixelColorBlendingMode.Exclusion => ExclusionDest, + PixelColorBlendingMode.Hue => HueDest, + PixelColorBlendingMode.Saturation => SaturationDest, + PixelColorBlendingMode.Color => ColorDest, + PixelColorBlendingMode.Luminosity => LuminosityDest, _ => NormalDest, }, PixelAlphaCompositionMode.DestAtop => colorMode switch @@ -89,6 +134,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenDestAtop, PixelColorBlendingMode.Overlay => OverlayDestAtop, PixelColorBlendingMode.HardLight => HardLightDestAtop, + PixelColorBlendingMode.ColorDodge => ColorDodgeDestAtop, + PixelColorBlendingMode.ColorBurn => ColorBurnDestAtop, + PixelColorBlendingMode.SoftLight => SoftLightDestAtop, + PixelColorBlendingMode.Difference => DifferenceDestAtop, + PixelColorBlendingMode.Exclusion => ExclusionDestAtop, + PixelColorBlendingMode.Hue => HueDestAtop, + PixelColorBlendingMode.Saturation => SaturationDestAtop, + PixelColorBlendingMode.Color => ColorDestAtop, + PixelColorBlendingMode.Luminosity => LuminosityDestAtop, _ => NormalDestAtop, }, PixelAlphaCompositionMode.DestOver => colorMode switch @@ -101,6 +155,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenDestOver, PixelColorBlendingMode.Overlay => OverlayDestOver, PixelColorBlendingMode.HardLight => HardLightDestOver, + PixelColorBlendingMode.ColorDodge => ColorDodgeDestOver, + PixelColorBlendingMode.ColorBurn => ColorBurnDestOver, + PixelColorBlendingMode.SoftLight => SoftLightDestOver, + PixelColorBlendingMode.Difference => DifferenceDestOver, + PixelColorBlendingMode.Exclusion => ExclusionDestOver, + PixelColorBlendingMode.Hue => HueDestOver, + PixelColorBlendingMode.Saturation => SaturationDestOver, + PixelColorBlendingMode.Color => ColorDestOver, + PixelColorBlendingMode.Luminosity => LuminosityDestOver, _ => NormalDestOver, }, PixelAlphaCompositionMode.DestIn => colorMode switch @@ -113,6 +176,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenDestIn, PixelColorBlendingMode.Overlay => OverlayDestIn, PixelColorBlendingMode.HardLight => HardLightDestIn, + PixelColorBlendingMode.ColorDodge => ColorDodgeDestIn, + PixelColorBlendingMode.ColorBurn => ColorBurnDestIn, + PixelColorBlendingMode.SoftLight => SoftLightDestIn, + PixelColorBlendingMode.Difference => DifferenceDestIn, + PixelColorBlendingMode.Exclusion => ExclusionDestIn, + PixelColorBlendingMode.Hue => HueDestIn, + PixelColorBlendingMode.Saturation => SaturationDestIn, + PixelColorBlendingMode.Color => ColorDestIn, + PixelColorBlendingMode.Luminosity => LuminosityDestIn, _ => NormalDestIn, }, PixelAlphaCompositionMode.DestOut => colorMode switch @@ -125,6 +197,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenDestOut, PixelColorBlendingMode.Overlay => OverlayDestOut, PixelColorBlendingMode.HardLight => HardLightDestOut, + PixelColorBlendingMode.ColorDodge => ColorDodgeDestOut, + PixelColorBlendingMode.ColorBurn => ColorBurnDestOut, + PixelColorBlendingMode.SoftLight => SoftLightDestOut, + PixelColorBlendingMode.Difference => DifferenceDestOut, + PixelColorBlendingMode.Exclusion => ExclusionDestOut, + PixelColorBlendingMode.Hue => HueDestOut, + PixelColorBlendingMode.Saturation => SaturationDestOut, + PixelColorBlendingMode.Color => ColorDestOut, + PixelColorBlendingMode.Luminosity => LuminosityDestOut, _ => NormalDestOut, }, PixelAlphaCompositionMode.Clear => colorMode switch @@ -137,6 +218,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenClear, PixelColorBlendingMode.Overlay => OverlayClear, PixelColorBlendingMode.HardLight => HardLightClear, + PixelColorBlendingMode.ColorDodge => ColorDodgeClear, + PixelColorBlendingMode.ColorBurn => ColorBurnClear, + PixelColorBlendingMode.SoftLight => SoftLightClear, + PixelColorBlendingMode.Difference => DifferenceClear, + PixelColorBlendingMode.Exclusion => ExclusionClear, + PixelColorBlendingMode.Hue => HueClear, + PixelColorBlendingMode.Saturation => SaturationClear, + PixelColorBlendingMode.Color => ColorClear, + PixelColorBlendingMode.Luminosity => LuminosityClear, _ => NormalClear, }, PixelAlphaCompositionMode.Xor => colorMode switch @@ -149,8 +239,38 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenXor, PixelColorBlendingMode.Overlay => OverlayXor, PixelColorBlendingMode.HardLight => HardLightXor, + PixelColorBlendingMode.ColorDodge => ColorDodgeXor, + PixelColorBlendingMode.ColorBurn => ColorBurnXor, + PixelColorBlendingMode.SoftLight => SoftLightXor, + PixelColorBlendingMode.Difference => DifferenceXor, + PixelColorBlendingMode.Exclusion => ExclusionXor, + PixelColorBlendingMode.Hue => HueXor, + PixelColorBlendingMode.Saturation => SaturationXor, + PixelColorBlendingMode.Color => ColorXor, + PixelColorBlendingMode.Luminosity => LuminosityXor, _ => NormalXor, }, + PixelAlphaCompositionMode.Plus => colorMode switch + { + PixelColorBlendingMode.Multiply => MultiplyPlus, + PixelColorBlendingMode.Add => AddPlus, + PixelColorBlendingMode.Subtract => SubtractPlus, + PixelColorBlendingMode.Screen => ScreenPlus, + PixelColorBlendingMode.Darken => DarkenPlus, + PixelColorBlendingMode.Lighten => LightenPlus, + PixelColorBlendingMode.Overlay => OverlayPlus, + PixelColorBlendingMode.HardLight => HardLightPlus, + PixelColorBlendingMode.ColorDodge => ColorDodgePlus, + PixelColorBlendingMode.ColorBurn => ColorBurnPlus, + PixelColorBlendingMode.SoftLight => SoftLightPlus, + PixelColorBlendingMode.Difference => DifferencePlus, + PixelColorBlendingMode.Exclusion => ExclusionPlus, + PixelColorBlendingMode.Hue => HuePlus, + PixelColorBlendingMode.Saturation => SaturationPlus, + PixelColorBlendingMode.Color => ColorPlus, + PixelColorBlendingMode.Luminosity => LuminosityPlus, + _ => NormalPlus, + }, _ => colorMode switch { PixelColorBlendingMode.Multiply => MultiplySrcOver, @@ -161,6 +281,15 @@ internal static partial class AssociatedAlphaPixelBlenders PixelColorBlendingMode.Lighten => LightenSrcOver, PixelColorBlendingMode.Overlay => OverlaySrcOver, PixelColorBlendingMode.HardLight => HardLightSrcOver, + PixelColorBlendingMode.ColorDodge => ColorDodgeSrcOver, + PixelColorBlendingMode.ColorBurn => ColorBurnSrcOver, + PixelColorBlendingMode.SoftLight => SoftLightSrcOver, + PixelColorBlendingMode.Difference => DifferenceSrcOver, + PixelColorBlendingMode.Exclusion => ExclusionSrcOver, + PixelColorBlendingMode.Hue => HueSrcOver, + PixelColorBlendingMode.Saturation => SaturationSrcOver, + PixelColorBlendingMode.Color => ColorSrcOver, + PixelColorBlendingMode.Luminosity => LuminositySrcOver, _ => NormalSrcOver, }, }; diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.cs b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.cs index cd5a37a11..5057a25bd 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.cs @@ -443,4593 +443,10479 @@ internal static partial class AssociatedAlphaPorterDuffFunctions } /// - /// Returns the associated-alpha result of the "NormalSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorDodgeSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return AtopNormal(backdrop, source); + return source; } /// - /// Returns the associated-alpha result of the "NormalSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorDodgeSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return AtopNormal(backdrop, source); + return source; } /// - /// Returns the associated-alpha result of the "NormalSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorDodgeSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return AtopNormal(backdrop, source); + return source; } /// - /// Returns the associated-alpha result of the "MultiplySrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplySrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorBurnSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Multiply(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "MultiplySrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplySrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorBurnSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Multiply(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "MultiplySrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplySrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorBurnSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Multiply(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "AddSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SoftLightSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Add(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "AddSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SoftLightSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Add(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "AddSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SoftLightSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Add(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "SubtractSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DifferenceSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Subtract(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "SubtractSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DifferenceSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Subtract(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "SubtractSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DifferenceSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Subtract(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "ScreenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ExclusionSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Screen(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "ScreenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ExclusionSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Screen(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "ScreenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ExclusionSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Screen(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "DarkenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "HueSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HueSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Darken(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "DarkenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "HueSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HueSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Darken(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "DarkenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "HueSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HueSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Darken(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "LightenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SaturationSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Lighten(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "LightenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SaturationSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Lighten(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "LightenSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SaturationSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Lighten(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "OverlaySrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlaySrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorSrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Overlay(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "OverlaySrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlaySrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Overlay(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "OverlaySrcAtop" compositing equation. + /// Returns the associated-alpha result of the "ColorSrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlaySrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, Overlay(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "HardLightSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LuminositySrc(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, HardLight(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "HardLightSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LuminositySrc(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, HardLight(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "HardLightSrcAtop" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrc" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LuminositySrc(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(backdrop, source, HardLight(backdrop, source)); + return source; } /// - /// Returns the associated-alpha result of the "NormalSrcOver" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalSrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 NormalSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return OverNormal(backdrop, source); + return AtopNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalSrcOver" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 NormalSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return OverNormal(backdrop, source); + return AtopNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalSrcOver" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 NormalSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return OverNormal(backdrop, source); + return AtopNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplySrcOver" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplySrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 MultiplySrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Multiply(backdrop, source)); + return Atop(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplySrcOver" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplySrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 MultiplySrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Multiply(backdrop, source)); + return Atop(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplySrcOver" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplySrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 MultiplySrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Multiply(backdrop, source)); + return Atop(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcOver" compositing equation. + /// Returns the associated-alpha result of the "AddSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddSrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 AddSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Add(backdrop, source)); + return Atop(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcOver" compositing equation. + /// Returns the associated-alpha result of the "AddSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 AddSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Add(backdrop, source)); + return Atop(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcOver" compositing equation. + /// Returns the associated-alpha result of the "AddSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 AddSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Add(backdrop, source)); + return Atop(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcOver" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractSrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SubtractSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Subtract(backdrop, source)); + return Atop(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcOver" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SubtractSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Subtract(backdrop, source)); + return Atop(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcOver" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SubtractSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Subtract(backdrop, source)); + return Atop(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenSrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ScreenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Screen(backdrop, source)); + return Atop(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ScreenSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Screen(backdrop, source)); + return Atop(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ScreenSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Screen(backdrop, source)); + return Atop(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenSrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DarkenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Darken(backdrop, source)); + return Atop(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DarkenSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Darken(backdrop, source)); + return Atop(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DarkenSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Darken(backdrop, source)); + return Atop(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenSrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LightenSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Lighten(backdrop, source)); + return Atop(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LightenSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Lighten(backdrop, source)); + return Atop(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcOver" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LightenSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Lighten(backdrop, source)); + return Atop(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcOver" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlaySrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 OverlaySrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Overlay(backdrop, source)); + return Atop(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcOver" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlaySrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 OverlaySrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Overlay(backdrop, source)); + return Atop(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcOver" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlaySrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 OverlaySrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, Overlay(backdrop, source)); + return Atop(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcOver" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightSrcOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HardLightSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, HardLight(backdrop, source)); + return Atop(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcOver" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HardLightSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, HardLight(backdrop, source)); + return Atop(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcOver" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HardLightSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(backdrop, source, HardLight(backdrop, source)); + return Atop(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalSrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalSrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorDodgeSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalSrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorDodgeSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalSrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorDodgeSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplySrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplySrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorBurnSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplySrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplySrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorBurnSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplySrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplySrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorBurnSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcIn" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddSrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SoftLightSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcIn" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SoftLightSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcIn" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SoftLightSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcIn" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractSrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DifferenceSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcIn" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DifferenceSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcIn" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DifferenceSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenSrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ExclusionSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ExclusionSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ExclusionSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "HueSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenSrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HueSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "HueSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HueSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "HueSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HueSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenSrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SaturationSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SaturationSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcIn" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SaturationSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlaySrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorSrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlaySrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcIn" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlaySrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcIn" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightSrcIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LuminositySrcAtop(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcIn" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LuminositySrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcIn" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcAtop" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LuminositySrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(backdrop, source); + return Atop(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalSrcOut" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalSrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 NormalSrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return OverNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalSrcOut" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 NormalSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return OverNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalSrcOut" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 NormalSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return OverNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplySrcOut" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplySrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 MultiplySrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplySrcOut" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplySrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 MultiplySrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplySrcOut" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplySrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 MultiplySrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcOut" compositing equation. + /// Returns the associated-alpha result of the "AddSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddSrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 AddSrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcOut" compositing equation. + /// Returns the associated-alpha result of the "AddSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 AddSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddSrcOut" compositing equation. + /// Returns the associated-alpha result of the "AddSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 AddSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcOut" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractSrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SubtractSrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcOut" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SubtractSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractSrcOut" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SubtractSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenSrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ScreenSrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ScreenSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ScreenSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenSrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DarkenSrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DarkenSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DarkenSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenSrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LightenSrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LightenSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenSrcOut" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LightenSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcOut" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlaySrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 OverlaySrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcOut" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlaySrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 OverlaySrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlaySrcOut" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlaySrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 OverlaySrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcOut" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightSrcOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HardLightSrcOver(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcOut" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HardLightSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightSrcOut" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HardLightSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(backdrop, source); + return Over(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalDest" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorDodgeSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalDest" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorDodgeSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalDest" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorDodgeSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyDest" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplyDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorBurnSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyDest" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplyDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorBurnSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyDest" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplyDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorBurnSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddDest" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SoftLightSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddDest" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SoftLightSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddDest" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SoftLightSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractDest" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DifferenceSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractDest" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DifferenceSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractDest" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DifferenceSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenDest" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ExclusionSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenDest" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ExclusionSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenDest" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ExclusionSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenDest" compositing equation. + /// Returns the associated-alpha result of the "HueSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HueSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenDest" compositing equation. + /// Returns the associated-alpha result of the "HueSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HueSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenDest" compositing equation. + /// Returns the associated-alpha result of the "HueSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HueSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenDest" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SaturationSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenDest" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SaturationSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenDest" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SaturationSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayDest" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlayDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorSrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayDest" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlayDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayDest" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlayDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightDest" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightDest(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LuminositySrcOver(Vector4 backdrop, Vector4 source, float opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightDest" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LuminositySrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightDest" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcOver" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LuminositySrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return backdrop; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalDestAtop" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 NormalSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return AtopNormal(source, backdrop); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestAtop" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 NormalSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return AtopNormal(source, backdrop); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestAtop" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 NormalSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return AtopNormal(source, backdrop); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestAtop" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplyDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 MultiplySrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Multiply(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestAtop" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplyDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 MultiplySrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Multiply(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestAtop" compositing equation. + /// Returns the associated-alpha result of the "MultiplySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplyDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 MultiplySrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Multiply(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestAtop" compositing equation. + /// Returns the associated-alpha result of the "AddSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 AddSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Add(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestAtop" compositing equation. + /// Returns the associated-alpha result of the "AddSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 AddSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Add(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestAtop" compositing equation. + /// Returns the associated-alpha result of the "AddSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 AddSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Add(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestAtop" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SubtractSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Subtract(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestAtop" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SubtractSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Subtract(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestAtop" compositing equation. + /// Returns the associated-alpha result of the "SubtractSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SubtractSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Subtract(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ScreenSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Screen(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ScreenSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Screen(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "ScreenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ScreenSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Screen(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DarkenSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Darken(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DarkenSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Darken(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "DarkenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DarkenSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Darken(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LightenSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Lighten(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LightenSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Lighten(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestAtop" compositing equation. + /// Returns the associated-alpha result of the "LightenSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LightenSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Lighten(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestAtop" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlayDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 OverlaySrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Overlay(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestAtop" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlayDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 OverlaySrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Overlay(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestAtop" compositing equation. + /// Returns the associated-alpha result of the "OverlaySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlayDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 OverlaySrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, Overlay(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestAtop" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightDestAtop(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HardLightSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, HardLight(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestAtop" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HardLightSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, HardLight(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestAtop" compositing equation. + /// Returns the associated-alpha result of the "HardLightSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HardLightSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Atop(source, backdrop, HardLight(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorDodgeSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return OverNormal(source, backdrop); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorDodgeSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return OverNormal(source, backdrop); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorDodgeSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return OverNormal(source, backdrop); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplyDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorBurnSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Multiply(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplyDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorBurnSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Multiply(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplyDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorBurnSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Multiply(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestOver" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SoftLightSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Add(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestOver" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SoftLightSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Add(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestOver" compositing equation. + /// Returns the associated-alpha result of the "SoftLightSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SoftLightSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Add(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestOver" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DifferenceSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Subtract(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestOver" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DifferenceSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Subtract(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestOver" compositing equation. + /// Returns the associated-alpha result of the "DifferenceSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DifferenceSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Subtract(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestOver" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ExclusionSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Screen(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestOver" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ExclusionSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Screen(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestOver" compositing equation. + /// Returns the associated-alpha result of the "ExclusionSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ExclusionSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Screen(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestOver" compositing equation. + /// Returns the associated-alpha result of the "HueSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HueSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Darken(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestOver" compositing equation. + /// Returns the associated-alpha result of the "HueSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HueSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Darken(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestOver" compositing equation. + /// Returns the associated-alpha result of the "HueSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HueSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Darken(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestOver" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SaturationSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Lighten(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestOver" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SaturationSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Lighten(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestOver" compositing equation. + /// Returns the associated-alpha result of the "SaturationSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SaturationSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Lighten(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlayDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorSrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Overlay(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlayDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Overlay(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestOver" compositing equation. + /// Returns the associated-alpha result of the "ColorSrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlayDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, Overlay(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestOver" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightDestOver(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LuminositySrcIn(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, HardLight(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestOver" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LuminositySrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, HardLight(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestOver" compositing equation. + /// Returns the associated-alpha result of the "LuminositySrcIn" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LuminositySrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Over(source, backdrop, HardLight(source, backdrop)); + return In(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestIn" compositing equation. + /// Returns the associated-alpha result of the "NormalSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "NormalSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "NormalSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "MultiplySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplySrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "MultiplySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplySrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "MultiplySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplySrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "AddSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "AddSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "AddSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SubtractSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SubtractSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SubtractSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ScreenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ScreenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ScreenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "DarkenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "DarkenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "DarkenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "LightenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "LightenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "LightenSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "OverlaySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlaySrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "OverlaySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlaySrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "OverlaySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlaySrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "HardLightSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "HardLightSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "HardLightSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SoftLightSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SoftLightSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SoftLightSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "DifferenceSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "DifferenceSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "DifferenceSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ExclusionSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ExclusionSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ExclusionSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "HueSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "HueSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "HueSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SaturationSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SaturationSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "SaturationSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "ColorSrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "LuminositySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminositySrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "LuminositySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminositySrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "LuminositySrcOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminositySrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(backdrop, source); + } + + /// + /// Returns the associated-alpha result of the "NormalDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "NormalDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "NormalDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "MultiplyDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplyDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "MultiplyDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplyDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "MultiplyDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplyDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "AddDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "AddDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "AddDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SubtractDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SubtractDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SubtractDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ScreenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ScreenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ScreenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "DarkenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "DarkenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "DarkenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "LightenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "LightenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "LightenDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "OverlayDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlayDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "OverlayDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlayDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "OverlayDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlayDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "HardLightDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "HardLightDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "HardLightDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SoftLightDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SoftLightDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SoftLightDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "DifferenceDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "DifferenceDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "DifferenceDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ExclusionDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ExclusionDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ExclusionDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "HueDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "HueDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "HueDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SaturationDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SaturationDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "SaturationDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "ColorDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "LuminosityDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "LuminosityDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "LuminosityDest" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the associated-alpha result of the "NormalDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return AtopNormal(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return AtopNormal(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return AtopNormal(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplyDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Multiply(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplyDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Multiply(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplyDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Multiply(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "AddDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Add(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "AddDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Add(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "AddDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Add(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Subtract(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Subtract(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Subtract(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Screen(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Screen(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Screen(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Darken(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Darken(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Darken(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LightenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Lighten(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LightenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Lighten(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LightenDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Lighten(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlayDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Overlay(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlayDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Overlay(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlayDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Overlay(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, HardLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, HardLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, HardLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HueDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HueDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HueDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestAtop" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Atop(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "NormalDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return OverNormal(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return OverNormal(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return OverNormal(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplyDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Multiply(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplyDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Multiply(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplyDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Multiply(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "AddDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Add(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "AddDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Add(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "AddDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Add(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Subtract(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Subtract(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Subtract(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Screen(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Screen(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Screen(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Darken(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Darken(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Darken(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LightenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Lighten(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LightenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Lighten(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LightenDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Lighten(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlayDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Overlay(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlayDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Overlay(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlayDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Overlay(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, HardLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, HardLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, HardLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HueDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HueDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "HueDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "ColorDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestOver" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Over(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the associated-alpha result of the "NormalDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplyDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplyDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplyDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "AddDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "AddDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "AddDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LightenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LightenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LightenDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlayDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlayDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlayDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HueDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HueDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HueDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestIn" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return In(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplyDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplyDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "MultiplyDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplyDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "AddDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "AddDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "AddDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SubtractDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ScreenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DarkenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LightenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LightenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LightenDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlayDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlayDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "OverlayDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlayDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HardLightDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorBurnDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SoftLightDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "DifferenceDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ExclusionDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HueDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HueDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "HueDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "SaturationDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "ColorDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "LuminosityDestOut" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Out(source, backdrop); + } + + /// + /// Returns the associated-alpha result of the "NormalClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "NormalClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "NormalClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "MultiplyClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplyClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "MultiplyClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplyClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "MultiplyClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplyClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "AddClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "AddClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "AddClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "SubtractClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "SubtractClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "SubtractClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "ScreenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "ScreenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "ScreenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "DarkenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "DarkenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "DarkenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "LightenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "LightenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "LightenClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "OverlayClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlayClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "OverlayClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlayClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "OverlayClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlayClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "HardLightClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "HardLightClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "HardLightClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorDodgeClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorBurnClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorBurnClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorBurnClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "SoftLightClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "SoftLightClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "SoftLightClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "DifferenceClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "DifferenceClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "DifferenceClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "ExclusionClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "ExclusionClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "ExclusionClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "HueClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "HueClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "HueClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "SaturationClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "SaturationClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "SaturationClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "ColorClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "LuminosityClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityClear(Vector4 backdrop, Vector4 source, float opacity) + { + return Vector4.Zero; + } + + /// + /// Returns the associated-alpha result of the "LuminosityClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return Vector256.Zero; + } + + /// + /// Returns the associated-alpha result of the "LuminosityClear" compositing equation. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The source opacity in the range 0 through 1. + /// The associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return Vector512.Zero; + } + + /// + /// Returns the associated-alpha result of the "NormalXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 NormalXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestIn" compositing equation. + /// Returns the associated-alpha result of the "NormalXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 NormalXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestIn" compositing equation. + /// Returns the associated-alpha result of the "NormalXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 NormalXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestIn" compositing equation. + /// Returns the associated-alpha result of the "MultiplyXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplyDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 MultiplyXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestIn" compositing equation. + /// Returns the associated-alpha result of the "MultiplyXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplyDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 MultiplyXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestIn" compositing equation. + /// Returns the associated-alpha result of the "MultiplyXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplyDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 MultiplyXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestIn" compositing equation. + /// Returns the associated-alpha result of the "AddXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 AddXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestIn" compositing equation. + /// Returns the associated-alpha result of the "AddXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 AddXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestIn" compositing equation. + /// Returns the associated-alpha result of the "AddXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 AddXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestIn" compositing equation. + /// Returns the associated-alpha result of the "SubtractXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SubtractXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestIn" compositing equation. + /// Returns the associated-alpha result of the "SubtractXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SubtractXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestIn" compositing equation. + /// Returns the associated-alpha result of the "SubtractXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SubtractXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestIn" compositing equation. + /// Returns the associated-alpha result of the "ScreenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ScreenXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestIn" compositing equation. + /// Returns the associated-alpha result of the "ScreenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ScreenXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestIn" compositing equation. + /// Returns the associated-alpha result of the "ScreenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ScreenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestIn" compositing equation. + /// Returns the associated-alpha result of the "DarkenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DarkenXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestIn" compositing equation. + /// Returns the associated-alpha result of the "DarkenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DarkenXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestIn" compositing equation. + /// Returns the associated-alpha result of the "DarkenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DarkenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestIn" compositing equation. + /// Returns the associated-alpha result of the "LightenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LightenXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestIn" compositing equation. + /// Returns the associated-alpha result of the "LightenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LightenXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestIn" compositing equation. + /// Returns the associated-alpha result of the "LightenXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LightenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestIn" compositing equation. + /// Returns the associated-alpha result of the "OverlayXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlayDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 OverlayXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestIn" compositing equation. + /// Returns the associated-alpha result of the "OverlayXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlayDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 OverlayXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestIn" compositing equation. + /// Returns the associated-alpha result of the "OverlayXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlayDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 OverlayXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestIn" compositing equation. + /// Returns the associated-alpha result of the "HardLightXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightDestIn(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HardLightXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestIn" compositing equation. + /// Returns the associated-alpha result of the "HardLightXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HardLightXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestIn" compositing equation. + /// Returns the associated-alpha result of the "HardLightXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HardLightXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return In(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorDodgeXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorDodgeXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgeXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorDodgeXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplyDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorBurnXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplyDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorBurnXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplyDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorBurnXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestOut" compositing equation. + /// Returns the associated-alpha result of the "SoftLightXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SoftLightXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestOut" compositing equation. + /// Returns the associated-alpha result of the "SoftLightXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SoftLightXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "AddDestOut" compositing equation. + /// Returns the associated-alpha result of the "SoftLightXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SoftLightXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestOut" compositing equation. + /// Returns the associated-alpha result of the "DifferenceXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DifferenceXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestOut" compositing equation. + /// Returns the associated-alpha result of the "DifferenceXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DifferenceXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "SubtractDestOut" compositing equation. + /// Returns the associated-alpha result of the "DifferenceXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DifferenceXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestOut" compositing equation. + /// Returns the associated-alpha result of the "ExclusionXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ExclusionXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestOut" compositing equation. + /// Returns the associated-alpha result of the "ExclusionXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ExclusionXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "ScreenDestOut" compositing equation. + /// Returns the associated-alpha result of the "ExclusionXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ExclusionXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestOut" compositing equation. + /// Returns the associated-alpha result of the "HueXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HueXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestOut" compositing equation. + /// Returns the associated-alpha result of the "HueXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HueXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "DarkenDestOut" compositing equation. + /// Returns the associated-alpha result of the "HueXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HueXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestOut" compositing equation. + /// Returns the associated-alpha result of the "SaturationXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SaturationXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestOut" compositing equation. + /// Returns the associated-alpha result of the "SaturationXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SaturationXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "LightenDestOut" compositing equation. + /// Returns the associated-alpha result of the "SaturationXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SaturationXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlayDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlayDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "OverlayDestOut" compositing equation. + /// Returns the associated-alpha result of the "ColorXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlayDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestOut" compositing equation. + /// Returns the associated-alpha result of the "LuminosityXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightDestOut(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LuminosityXor(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestOut" compositing equation. + /// Returns the associated-alpha result of the "LuminosityXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LuminosityXor(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "HardLightDestOut" compositing equation. + /// Returns the associated-alpha result of the "LuminosityXor" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LuminosityXor(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Out(source, backdrop); + return Xor(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalClear" compositing equation. + /// Returns the associated-alpha result of the "NormalPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 NormalPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return PlusNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalClear" compositing equation. + /// Returns the associated-alpha result of the "NormalPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 NormalPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return PlusNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "NormalClear" compositing equation. + /// Returns the associated-alpha result of the "NormalPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 NormalPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return PlusNormal(backdrop, source); } /// - /// Returns the associated-alpha result of the "MultiplyClear" compositing equation. + /// Returns the associated-alpha result of the "MultiplyPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplyClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 MultiplyPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyClear" compositing equation. + /// Returns the associated-alpha result of the "MultiplyPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplyClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 MultiplyPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyClear" compositing equation. + /// Returns the associated-alpha result of the "MultiplyPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplyClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 MultiplyPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Multiply(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddClear" compositing equation. + /// Returns the associated-alpha result of the "AddPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 AddPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddClear" compositing equation. + /// Returns the associated-alpha result of the "AddPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 AddPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddClear" compositing equation. + /// Returns the associated-alpha result of the "AddPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 AddPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Add(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractClear" compositing equation. + /// Returns the associated-alpha result of the "SubtractPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SubtractPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractClear" compositing equation. + /// Returns the associated-alpha result of the "SubtractPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SubtractPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractClear" compositing equation. + /// Returns the associated-alpha result of the "SubtractPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SubtractPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Subtract(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenClear" compositing equation. + /// Returns the associated-alpha result of the "ScreenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ScreenPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenClear" compositing equation. + /// Returns the associated-alpha result of the "ScreenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ScreenPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenClear" compositing equation. + /// Returns the associated-alpha result of the "ScreenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ScreenPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Screen(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenClear" compositing equation. + /// Returns the associated-alpha result of the "DarkenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DarkenPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenClear" compositing equation. + /// Returns the associated-alpha result of the "DarkenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DarkenPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenClear" compositing equation. + /// Returns the associated-alpha result of the "DarkenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DarkenPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenClear" compositing equation. + /// Returns the associated-alpha result of the "LightenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LightenPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenClear" compositing equation. + /// Returns the associated-alpha result of the "LightenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LightenPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenClear" compositing equation. + /// Returns the associated-alpha result of the "LightenPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LightenPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Lighten(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayClear" compositing equation. + /// Returns the associated-alpha result of the "OverlayPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlayClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 OverlayPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayClear" compositing equation. + /// Returns the associated-alpha result of the "OverlayPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlayClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 OverlayPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayClear" compositing equation. + /// Returns the associated-alpha result of the "OverlayPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlayClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 OverlayPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, Overlay(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightClear" compositing equation. + /// Returns the associated-alpha result of the "HardLightPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HardLightPlus(Vector4 backdrop, Vector4 source, float opacity) { - return Vector4.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightClear" compositing equation. + /// Returns the associated-alpha result of the "HardLightPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HardLightPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { - return Vector256.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightClear" compositing equation. + /// Returns the associated-alpha result of the "HardLightPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HardLightPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { - return Vector512.Zero; + // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. + source *= opacity; + + return Plus(backdrop, source, HardLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalXor" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 NormalXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorDodgePlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalXor" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 NormalXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorDodgePlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "NormalXor" compositing equation. + /// Returns the associated-alpha result of the "ColorDodgePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 NormalXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorDodgePlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, ColorDodge(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyXor" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 MultiplyXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorBurnPlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyXor" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 MultiplyXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorBurnPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "MultiplyXor" compositing equation. + /// Returns the associated-alpha result of the "ColorBurnPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 MultiplyXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorBurnPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, ColorBurn(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddXor" compositing equation. + /// Returns the associated-alpha result of the "SoftLightPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 AddXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SoftLightPlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddXor" compositing equation. + /// Returns the associated-alpha result of the "SoftLightPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 AddXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SoftLightPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "AddXor" compositing equation. + /// Returns the associated-alpha result of the "SoftLightPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 AddXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SoftLightPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, SoftLight(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractXor" compositing equation. + /// Returns the associated-alpha result of the "DifferencePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 SubtractXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DifferencePlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractXor" compositing equation. + /// Returns the associated-alpha result of the "DifferencePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 SubtractXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 DifferencePlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "SubtractXor" compositing equation. + /// Returns the associated-alpha result of the "DifferencePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 SubtractXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 DifferencePlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Difference(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenXor" compositing equation. + /// Returns the associated-alpha result of the "ExclusionPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 ScreenXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ExclusionPlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenXor" compositing equation. + /// Returns the associated-alpha result of the "ExclusionPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 ScreenXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ExclusionPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "ScreenXor" compositing equation. + /// Returns the associated-alpha result of the "ExclusionPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 ScreenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ExclusionPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Exclusion(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenXor" compositing equation. + /// Returns the associated-alpha result of the "HuePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 HuePlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenXor" compositing equation. + /// Returns the associated-alpha result of the "HuePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 HuePlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "DarkenXor" compositing equation. + /// Returns the associated-alpha result of the "HuePlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 DarkenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 HuePlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Hue(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenXor" compositing equation. + /// Returns the associated-alpha result of the "SaturationPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 LightenXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 SaturationPlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenXor" compositing equation. + /// Returns the associated-alpha result of the "SaturationPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 LightenXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 SaturationPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "LightenXor" compositing equation. + /// Returns the associated-alpha result of the "SaturationPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 LightenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 SaturationPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Saturation(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayXor" compositing equation. + /// Returns the associated-alpha result of the "ColorPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 OverlayXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 ColorPlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayXor" compositing equation. + /// Returns the associated-alpha result of the "ColorPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 OverlayXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 ColorPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "OverlayXor" compositing equation. + /// Returns the associated-alpha result of the "ColorPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 OverlayXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 ColorPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Color(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightXor" compositing equation. + /// Returns the associated-alpha result of the "LuminosityPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 HardLightXor(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 LuminosityPlus(Vector4 backdrop, Vector4 source, float opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightXor" compositing equation. + /// Returns the associated-alpha result of the "LuminosityPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 HardLightXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + public static Vector256 LuminosityPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Luminosity(backdrop, source)); } /// - /// Returns the associated-alpha result of the "HardLightXor" compositing equation. + /// Returns the associated-alpha result of the "LuminosityPlus" compositing equation. /// /// The associated backdrop vector. /// The associated source vector. /// The source opacity in the range 0 through 1. /// The associated composition result. [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector512 HardLightXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + public static Vector512 LuminosityPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) { // Associated RGB and alpha are scaled together so opacity cannot change the represented straight colour. source *= opacity; - return Xor(backdrop, source); + return Plus(backdrop, source, Luminosity(backdrop, source)); } } diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.tt b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.tt index e0652d679..8cc89620b 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.tt +++ b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.Generated.tt @@ -73,6 +73,7 @@ internal static partial class AssociatedAlphaPorterDuffFunctions "DestOut", "Clear", "Xor", + "Plus", }; private static readonly string[] Blenders = @@ -86,6 +87,15 @@ internal static partial class AssociatedAlphaPorterDuffFunctions "Lighten", "Overlay", "HardLight", + "ColorDodge", + "ColorBurn", + "SoftLight", + "Difference", + "Exclusion", + "Hue", + "Saturation", + "Color", + "Luminosity", }; private static readonly string[] VectorTypes = @@ -131,6 +141,10 @@ internal static partial class AssociatedAlphaPorterDuffFunctions return "Out(source, backdrop)"; case "Clear": return zero; + case "Plus": + return normal + ? "PlusNormal(backdrop, source)" + : $"Plus(backdrop, source, {blender}(backdrop, source))"; default: return "Xor(backdrop, source)"; } diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.cs b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.cs index d7b5260d3..893e8e41a 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/AssociatedAlphaPorterDuffFunctions.cs @@ -280,6 +280,384 @@ internal static partial class AssociatedAlphaPorterDuffFunctions return Vector512.ConditionalSelect(useRight, right, left); } + /// + /// Calculates the associated overlap term for ColorDodge blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodge(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.ColorDodge(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodge(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.ColorDodge(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodge(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.ColorDodge(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for ColorBurn blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurn(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.ColorBurn(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurn(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.ColorBurn(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurn(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.ColorBurn(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for SoftLight blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLight(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.SoftLight(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLight(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.SoftLight(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLight(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.SoftLight(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for Difference blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Difference(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.Difference(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Difference(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Difference(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Difference(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Difference(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for Exclusion blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Exclusion(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.Exclusion(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Exclusion(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Exclusion(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Exclusion(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Exclusion(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for Hue blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Hue(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.Hue(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Hue(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Hue(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Hue(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Hue(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for Saturation blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Saturation(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.Saturation(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Saturation(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Saturation(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Saturation(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Saturation(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for Color blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Color(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.Color(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Color(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Color(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Color(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Color(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + /// Calculates the associated overlap term for Luminosity blending. + /// + /// The associated backdrop vector. + /// The associated source vector. + /// The associated overlap term. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Luminosity(Vector4 backdrop, Vector4 source) + { + Vector4 backdropAlpha = Numerics.PermuteW(backdrop); + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 unassociatedBackdrop = backdrop; + Vector4 unassociatedSource = source; + + // This blend equation is defined in straight RGB, so recover each color before scaling the result by the overlap alpha. + Numerics.UnPremultiply(ref unassociatedBackdrop); + Numerics.UnPremultiply(ref unassociatedSource); + return PorterDuffFunctions.Luminosity(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Luminosity(Vector256 backdrop, Vector256 source) + { + Vector256 backdropAlpha = Avx.Permute(backdrop, ShuffleAlphaControl); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector256 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Luminosity(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Luminosity(Vector512 backdrop, Vector512 source) + { + Vector512 backdropAlpha = Vector512_.ShuffleNative(backdrop, ShuffleAlphaControl); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 unassociatedBackdrop = Numerics.UnPremultiply(backdrop, backdropAlpha); + Vector512 unassociatedSource = Numerics.UnPremultiply(source, sourceAlpha); + return PorterDuffFunctions.Luminosity(unassociatedBackdrop, unassociatedSource) * backdropAlpha * sourceAlpha; + } + /// /// Composites an associated source over an associated destination without a color-blending function. /// @@ -310,6 +688,77 @@ internal static partial class AssociatedAlphaPorterDuffFunctions return source + (destination * (Vector512.Create(1F) - sourceAlpha)); } + /// + /// Adds associated source and destination vectors without a color-blending function. + /// + /// The associated destination vector. + /// The associated source vector. + /// The clamped associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 PlusNormal(Vector4 destination, Vector4 source) + { + Vector4 alpha = Vector4.Min(Vector4.One, Numerics.PermuteW(source) + Numerics.PermuteW(destination)); + return Numerics.WithW(Vector4.Min(Vector4.One, destination + source), alpha); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 PlusNormal(Vector256 destination, Vector256 source) + { + Vector256 one = Vector256.Create(1F); + Vector256 alpha = Vector256.Min(one, Avx.Permute(source, ShuffleAlphaControl) + Avx.Permute(destination, ShuffleAlphaControl)); + return Avx.Blend(Vector256.Min(one, destination + source), alpha, BlendAlphaControl); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 PlusNormal(Vector512 destination, Vector512 source) + { + Vector512 one = Vector512.Create(1F); + Vector512 alpha = Vector512.Min(one, Vector512_.ShuffleNative(source, ShuffleAlphaControl) + Vector512_.ShuffleNative(destination, ShuffleAlphaControl)); + return Vector512.ConditionalSelect(AlphaMask512(), alpha, Vector512.Min(one, destination + source)); + } + + /// + /// Adds associated source and destination vectors using a color-blended overlap term. + /// + /// The associated destination vector. + /// The associated source vector. + /// The associated overlap term produced by the color-blending function. + /// The clamped associated composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Plus(Vector4 destination, Vector4 source, Vector4 overlap) + { + Vector4 destinationAlpha = Numerics.PermuteW(destination); + Vector4 alpha = Vector4.Min(Vector4.One, Numerics.PermuteW(source) + destinationAlpha); + + // The blended source contributes straight source color outside the destination and the blend result in the overlap. + Vector4 result = destination + (source * (Vector4.One - destinationAlpha)) + overlap; + return Numerics.WithW(Vector4.Min(Vector4.One, result), alpha); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Plus(Vector256 destination, Vector256 source, Vector256 overlap) + { + Vector256 one = Vector256.Create(1F); + Vector256 destinationAlpha = Avx.Permute(destination, ShuffleAlphaControl); + Vector256 alpha = Vector256.Min(one, Avx.Permute(source, ShuffleAlphaControl) + destinationAlpha); + Vector256 result = destination + (source * (one - destinationAlpha)) + overlap; + return Avx.Blend(Vector256.Min(one, result), alpha, BlendAlphaControl); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Plus(Vector512 destination, Vector512 source, Vector512 overlap) + { + Vector512 one = Vector512.Create(1F); + Vector512 destinationAlpha = Vector512_.ShuffleNative(destination, ShuffleAlphaControl); + Vector512 alpha = Vector512.Min(one, Vector512_.ShuffleNative(source, ShuffleAlphaControl) + destinationAlpha); + Vector512 result = destination + (source * (one - destinationAlpha)) + overlap; + return Vector512.ConditionalSelect(AlphaMask512(), alpha, Vector512.Min(one, result)); + } + /// /// Composites an associated source atop an associated destination without a color-blending function. /// diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs index 298c35999..de2ccf3a9 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.cs @@ -202,2121 +202,4767 @@ internal static class DefaultPixelBlenderOperators } /// - /// Applies the "NormalSrcAtop" straight-alpha composition equation. + /// Applies the "ColorDodgeSrc" straight-alpha composition equation. /// - public readonly struct NormalSrcAtop : IPixelBlenderOperator + public readonly struct ColorDodgeSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalSrcAtop(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalSrcAtop(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalSrcAtop(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrc(background, source, amount); } /// - /// Applies the "MultiplySrcAtop" straight-alpha composition equation. + /// Applies the "ColorBurnSrc" straight-alpha composition equation. /// - public readonly struct MultiplySrcAtop : IPixelBlenderOperator + public readonly struct ColorBurnSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplySrcAtop(background, source, amount); + => PorterDuffFunctions.ColorBurnSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplySrcAtop(background, source, amount); + => PorterDuffFunctions.ColorBurnSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplySrcAtop(background, source, amount); + => PorterDuffFunctions.ColorBurnSrc(background, source, amount); } /// - /// Applies the "AddSrcAtop" straight-alpha composition equation. + /// Applies the "SoftLightSrc" straight-alpha composition equation. /// - public readonly struct AddSrcAtop : IPixelBlenderOperator + public readonly struct SoftLightSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddSrcAtop(background, source, amount); + => PorterDuffFunctions.SoftLightSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddSrcAtop(background, source, amount); + => PorterDuffFunctions.SoftLightSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddSrcAtop(background, source, amount); + => PorterDuffFunctions.SoftLightSrc(background, source, amount); } /// - /// Applies the "SubtractSrcAtop" straight-alpha composition equation. + /// Applies the "DifferenceSrc" straight-alpha composition equation. /// - public readonly struct SubtractSrcAtop : IPixelBlenderOperator + public readonly struct DifferenceSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractSrcAtop(background, source, amount); + => PorterDuffFunctions.DifferenceSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractSrcAtop(background, source, amount); + => PorterDuffFunctions.DifferenceSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractSrcAtop(background, source, amount); + => PorterDuffFunctions.DifferenceSrc(background, source, amount); } /// - /// Applies the "ScreenSrcAtop" straight-alpha composition equation. + /// Applies the "ExclusionSrc" straight-alpha composition equation. /// - public readonly struct ScreenSrcAtop : IPixelBlenderOperator + public readonly struct ExclusionSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenSrcAtop(background, source, amount); + => PorterDuffFunctions.ExclusionSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenSrcAtop(background, source, amount); + => PorterDuffFunctions.ExclusionSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenSrcAtop(background, source, amount); + => PorterDuffFunctions.ExclusionSrc(background, source, amount); } /// - /// Applies the "DarkenSrcAtop" straight-alpha composition equation. + /// Applies the "HueSrc" straight-alpha composition equation. /// - public readonly struct DarkenSrcAtop : IPixelBlenderOperator + public readonly struct HueSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenSrcAtop(background, source, amount); + => PorterDuffFunctions.HueSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenSrcAtop(background, source, amount); + => PorterDuffFunctions.HueSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenSrcAtop(background, source, amount); + => PorterDuffFunctions.HueSrc(background, source, amount); } /// - /// Applies the "LightenSrcAtop" straight-alpha composition equation. + /// Applies the "SaturationSrc" straight-alpha composition equation. /// - public readonly struct LightenSrcAtop : IPixelBlenderOperator + public readonly struct SaturationSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenSrcAtop(background, source, amount); + => PorterDuffFunctions.SaturationSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenSrcAtop(background, source, amount); + => PorterDuffFunctions.SaturationSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenSrcAtop(background, source, amount); + => PorterDuffFunctions.SaturationSrc(background, source, amount); } /// - /// Applies the "OverlaySrcAtop" straight-alpha composition equation. + /// Applies the "ColorSrc" straight-alpha composition equation. /// - public readonly struct OverlaySrcAtop : IPixelBlenderOperator + public readonly struct ColorSrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlaySrcAtop(background, source, amount); + => PorterDuffFunctions.ColorSrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlaySrcAtop(background, source, amount); + => PorterDuffFunctions.ColorSrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlaySrcAtop(background, source, amount); + => PorterDuffFunctions.ColorSrc(background, source, amount); } /// - /// Applies the "HardLightSrcAtop" straight-alpha composition equation. + /// Applies the "LuminositySrc" straight-alpha composition equation. /// - public readonly struct HardLightSrcAtop : IPixelBlenderOperator + public readonly struct LuminositySrc : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightSrcAtop(background, source, amount); + => PorterDuffFunctions.LuminositySrc(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightSrcAtop(background, source, amount); + => PorterDuffFunctions.LuminositySrc(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightSrcAtop(background, source, amount); + => PorterDuffFunctions.LuminositySrc(background, source, amount); } /// - /// Applies the "NormalSrcOver" straight-alpha composition equation. + /// Applies the "NormalSrcAtop" straight-alpha composition equation. /// - public readonly struct NormalSrcOver : IPixelBlenderOperator + public readonly struct NormalSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalSrcOver(background, source, amount); + => PorterDuffFunctions.NormalSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalSrcOver(background, source, amount); + => PorterDuffFunctions.NormalSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalSrcOver(background, source, amount); + => PorterDuffFunctions.NormalSrcAtop(background, source, amount); } /// - /// Applies the "MultiplySrcOver" straight-alpha composition equation. + /// Applies the "MultiplySrcAtop" straight-alpha composition equation. /// - public readonly struct MultiplySrcOver : IPixelBlenderOperator + public readonly struct MultiplySrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplySrcOver(background, source, amount); + => PorterDuffFunctions.MultiplySrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplySrcOver(background, source, amount); + => PorterDuffFunctions.MultiplySrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplySrcOver(background, source, amount); + => PorterDuffFunctions.MultiplySrcAtop(background, source, amount); } /// - /// Applies the "AddSrcOver" straight-alpha composition equation. + /// Applies the "AddSrcAtop" straight-alpha composition equation. /// - public readonly struct AddSrcOver : IPixelBlenderOperator + public readonly struct AddSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddSrcOver(background, source, amount); + => PorterDuffFunctions.AddSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddSrcOver(background, source, amount); + => PorterDuffFunctions.AddSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddSrcOver(background, source, amount); + => PorterDuffFunctions.AddSrcAtop(background, source, amount); } /// - /// Applies the "SubtractSrcOver" straight-alpha composition equation. + /// Applies the "SubtractSrcAtop" straight-alpha composition equation. /// - public readonly struct SubtractSrcOver : IPixelBlenderOperator + public readonly struct SubtractSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractSrcOver(background, source, amount); + => PorterDuffFunctions.SubtractSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractSrcOver(background, source, amount); + => PorterDuffFunctions.SubtractSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractSrcOver(background, source, amount); + => PorterDuffFunctions.SubtractSrcAtop(background, source, amount); } /// - /// Applies the "ScreenSrcOver" straight-alpha composition equation. + /// Applies the "ScreenSrcAtop" straight-alpha composition equation. /// - public readonly struct ScreenSrcOver : IPixelBlenderOperator + public readonly struct ScreenSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenSrcOver(background, source, amount); + => PorterDuffFunctions.ScreenSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenSrcOver(background, source, amount); + => PorterDuffFunctions.ScreenSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenSrcOver(background, source, amount); + => PorterDuffFunctions.ScreenSrcAtop(background, source, amount); } /// - /// Applies the "DarkenSrcOver" straight-alpha composition equation. + /// Applies the "DarkenSrcAtop" straight-alpha composition equation. /// - public readonly struct DarkenSrcOver : IPixelBlenderOperator + public readonly struct DarkenSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenSrcOver(background, source, amount); + => PorterDuffFunctions.DarkenSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenSrcOver(background, source, amount); + => PorterDuffFunctions.DarkenSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenSrcOver(background, source, amount); + => PorterDuffFunctions.DarkenSrcAtop(background, source, amount); } /// - /// Applies the "LightenSrcOver" straight-alpha composition equation. + /// Applies the "LightenSrcAtop" straight-alpha composition equation. /// - public readonly struct LightenSrcOver : IPixelBlenderOperator + public readonly struct LightenSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenSrcOver(background, source, amount); + => PorterDuffFunctions.LightenSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenSrcOver(background, source, amount); + => PorterDuffFunctions.LightenSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenSrcOver(background, source, amount); + => PorterDuffFunctions.LightenSrcAtop(background, source, amount); } /// - /// Applies the "OverlaySrcOver" straight-alpha composition equation. + /// Applies the "OverlaySrcAtop" straight-alpha composition equation. /// - public readonly struct OverlaySrcOver : IPixelBlenderOperator + public readonly struct OverlaySrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlaySrcOver(background, source, amount); + => PorterDuffFunctions.OverlaySrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlaySrcOver(background, source, amount); + => PorterDuffFunctions.OverlaySrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlaySrcOver(background, source, amount); + => PorterDuffFunctions.OverlaySrcAtop(background, source, amount); } /// - /// Applies the "HardLightSrcOver" straight-alpha composition equation. + /// Applies the "HardLightSrcAtop" straight-alpha composition equation. /// - public readonly struct HardLightSrcOver : IPixelBlenderOperator + public readonly struct HardLightSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightSrcOver(background, source, amount); + => PorterDuffFunctions.HardLightSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightSrcOver(background, source, amount); + => PorterDuffFunctions.HardLightSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightSrcOver(background, source, amount); + => PorterDuffFunctions.HardLightSrcAtop(background, source, amount); } /// - /// Applies the "NormalSrcIn" straight-alpha composition equation. + /// Applies the "ColorDodgeSrcAtop" straight-alpha composition equation. /// - public readonly struct NormalSrcIn : IPixelBlenderOperator + public readonly struct ColorDodgeSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalSrcIn(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalSrcIn(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalSrcIn(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcAtop(background, source, amount); } /// - /// Applies the "MultiplySrcIn" straight-alpha composition equation. + /// Applies the "ColorBurnSrcAtop" straight-alpha composition equation. /// - public readonly struct MultiplySrcIn : IPixelBlenderOperator + public readonly struct ColorBurnSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplySrcIn(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplySrcIn(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplySrcIn(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcAtop(background, source, amount); } /// - /// Applies the "AddSrcIn" straight-alpha composition equation. + /// Applies the "SoftLightSrcAtop" straight-alpha composition equation. /// - public readonly struct AddSrcIn : IPixelBlenderOperator + public readonly struct SoftLightSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddSrcIn(background, source, amount); + => PorterDuffFunctions.SoftLightSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddSrcIn(background, source, amount); + => PorterDuffFunctions.SoftLightSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddSrcIn(background, source, amount); + => PorterDuffFunctions.SoftLightSrcAtop(background, source, amount); } /// - /// Applies the "SubtractSrcIn" straight-alpha composition equation. + /// Applies the "DifferenceSrcAtop" straight-alpha composition equation. /// - public readonly struct SubtractSrcIn : IPixelBlenderOperator + public readonly struct DifferenceSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractSrcIn(background, source, amount); + => PorterDuffFunctions.DifferenceSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractSrcIn(background, source, amount); + => PorterDuffFunctions.DifferenceSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractSrcIn(background, source, amount); + => PorterDuffFunctions.DifferenceSrcAtop(background, source, amount); } /// - /// Applies the "ScreenSrcIn" straight-alpha composition equation. + /// Applies the "ExclusionSrcAtop" straight-alpha composition equation. /// - public readonly struct ScreenSrcIn : IPixelBlenderOperator + public readonly struct ExclusionSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenSrcIn(background, source, amount); + => PorterDuffFunctions.ExclusionSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenSrcIn(background, source, amount); + => PorterDuffFunctions.ExclusionSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenSrcIn(background, source, amount); + => PorterDuffFunctions.ExclusionSrcAtop(background, source, amount); } /// - /// Applies the "DarkenSrcIn" straight-alpha composition equation. + /// Applies the "HueSrcAtop" straight-alpha composition equation. /// - public readonly struct DarkenSrcIn : IPixelBlenderOperator + public readonly struct HueSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenSrcIn(background, source, amount); + => PorterDuffFunctions.HueSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenSrcIn(background, source, amount); + => PorterDuffFunctions.HueSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenSrcIn(background, source, amount); + => PorterDuffFunctions.HueSrcAtop(background, source, amount); } /// - /// Applies the "LightenSrcIn" straight-alpha composition equation. + /// Applies the "SaturationSrcAtop" straight-alpha composition equation. /// - public readonly struct LightenSrcIn : IPixelBlenderOperator + public readonly struct SaturationSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenSrcIn(background, source, amount); + => PorterDuffFunctions.SaturationSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenSrcIn(background, source, amount); + => PorterDuffFunctions.SaturationSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenSrcIn(background, source, amount); + => PorterDuffFunctions.SaturationSrcAtop(background, source, amount); } /// - /// Applies the "OverlaySrcIn" straight-alpha composition equation. + /// Applies the "ColorSrcAtop" straight-alpha composition equation. /// - public readonly struct OverlaySrcIn : IPixelBlenderOperator + public readonly struct ColorSrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlaySrcIn(background, source, amount); + => PorterDuffFunctions.ColorSrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlaySrcIn(background, source, amount); + => PorterDuffFunctions.ColorSrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlaySrcIn(background, source, amount); + => PorterDuffFunctions.ColorSrcAtop(background, source, amount); } /// - /// Applies the "HardLightSrcIn" straight-alpha composition equation. + /// Applies the "LuminositySrcAtop" straight-alpha composition equation. /// - public readonly struct HardLightSrcIn : IPixelBlenderOperator + public readonly struct LuminositySrcAtop : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightSrcIn(background, source, amount); + => PorterDuffFunctions.LuminositySrcAtop(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightSrcIn(background, source, amount); + => PorterDuffFunctions.LuminositySrcAtop(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightSrcIn(background, source, amount); + => PorterDuffFunctions.LuminositySrcAtop(background, source, amount); } /// - /// Applies the "NormalSrcOut" straight-alpha composition equation. + /// Applies the "NormalSrcOver" straight-alpha composition equation. /// - public readonly struct NormalSrcOut : IPixelBlenderOperator + public readonly struct NormalSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalSrcOut(background, source, amount); + => PorterDuffFunctions.NormalSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalSrcOut(background, source, amount); + => PorterDuffFunctions.NormalSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalSrcOut(background, source, amount); + => PorterDuffFunctions.NormalSrcOver(background, source, amount); } /// - /// Applies the "MultiplySrcOut" straight-alpha composition equation. + /// Applies the "MultiplySrcOver" straight-alpha composition equation. /// - public readonly struct MultiplySrcOut : IPixelBlenderOperator + public readonly struct MultiplySrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplySrcOut(background, source, amount); + => PorterDuffFunctions.MultiplySrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplySrcOut(background, source, amount); + => PorterDuffFunctions.MultiplySrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplySrcOut(background, source, amount); + => PorterDuffFunctions.MultiplySrcOver(background, source, amount); } /// - /// Applies the "AddSrcOut" straight-alpha composition equation. + /// Applies the "AddSrcOver" straight-alpha composition equation. /// - public readonly struct AddSrcOut : IPixelBlenderOperator + public readonly struct AddSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddSrcOut(background, source, amount); + => PorterDuffFunctions.AddSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddSrcOut(background, source, amount); + => PorterDuffFunctions.AddSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddSrcOut(background, source, amount); + => PorterDuffFunctions.AddSrcOver(background, source, amount); } /// - /// Applies the "SubtractSrcOut" straight-alpha composition equation. + /// Applies the "SubtractSrcOver" straight-alpha composition equation. /// - public readonly struct SubtractSrcOut : IPixelBlenderOperator + public readonly struct SubtractSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractSrcOut(background, source, amount); + => PorterDuffFunctions.SubtractSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractSrcOut(background, source, amount); + => PorterDuffFunctions.SubtractSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractSrcOut(background, source, amount); + => PorterDuffFunctions.SubtractSrcOver(background, source, amount); } /// - /// Applies the "ScreenSrcOut" straight-alpha composition equation. + /// Applies the "ScreenSrcOver" straight-alpha composition equation. /// - public readonly struct ScreenSrcOut : IPixelBlenderOperator + public readonly struct ScreenSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenSrcOut(background, source, amount); + => PorterDuffFunctions.ScreenSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenSrcOut(background, source, amount); + => PorterDuffFunctions.ScreenSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenSrcOut(background, source, amount); + => PorterDuffFunctions.ScreenSrcOver(background, source, amount); } /// - /// Applies the "DarkenSrcOut" straight-alpha composition equation. + /// Applies the "DarkenSrcOver" straight-alpha composition equation. /// - public readonly struct DarkenSrcOut : IPixelBlenderOperator + public readonly struct DarkenSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenSrcOut(background, source, amount); + => PorterDuffFunctions.DarkenSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenSrcOut(background, source, amount); + => PorterDuffFunctions.DarkenSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenSrcOut(background, source, amount); + => PorterDuffFunctions.DarkenSrcOver(background, source, amount); } /// - /// Applies the "LightenSrcOut" straight-alpha composition equation. + /// Applies the "LightenSrcOver" straight-alpha composition equation. /// - public readonly struct LightenSrcOut : IPixelBlenderOperator + public readonly struct LightenSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenSrcOut(background, source, amount); + => PorterDuffFunctions.LightenSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenSrcOut(background, source, amount); + => PorterDuffFunctions.LightenSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenSrcOut(background, source, amount); + => PorterDuffFunctions.LightenSrcOver(background, source, amount); } /// - /// Applies the "OverlaySrcOut" straight-alpha composition equation. + /// Applies the "OverlaySrcOver" straight-alpha composition equation. /// - public readonly struct OverlaySrcOut : IPixelBlenderOperator + public readonly struct OverlaySrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlaySrcOut(background, source, amount); + => PorterDuffFunctions.OverlaySrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlaySrcOut(background, source, amount); + => PorterDuffFunctions.OverlaySrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlaySrcOut(background, source, amount); + => PorterDuffFunctions.OverlaySrcOver(background, source, amount); } /// - /// Applies the "HardLightSrcOut" straight-alpha composition equation. + /// Applies the "HardLightSrcOver" straight-alpha composition equation. /// - public readonly struct HardLightSrcOut : IPixelBlenderOperator + public readonly struct HardLightSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightSrcOut(background, source, amount); + => PorterDuffFunctions.HardLightSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightSrcOut(background, source, amount); + => PorterDuffFunctions.HardLightSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightSrcOut(background, source, amount); + => PorterDuffFunctions.HardLightSrcOver(background, source, amount); } /// - /// Applies the "NormalDest" straight-alpha composition equation. + /// Applies the "ColorDodgeSrcOver" straight-alpha composition equation. /// - public readonly struct NormalDest : IPixelBlenderOperator + public readonly struct ColorDodgeSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalDest(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalDest(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalDest(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcOver(background, source, amount); } /// - /// Applies the "MultiplyDest" straight-alpha composition equation. + /// Applies the "ColorBurnSrcOver" straight-alpha composition equation. /// - public readonly struct MultiplyDest : IPixelBlenderOperator + public readonly struct ColorBurnSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplyDest(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplyDest(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplyDest(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcOver(background, source, amount); } /// - /// Applies the "AddDest" straight-alpha composition equation. + /// Applies the "SoftLightSrcOver" straight-alpha composition equation. /// - public readonly struct AddDest : IPixelBlenderOperator + public readonly struct SoftLightSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddDest(background, source, amount); + => PorterDuffFunctions.SoftLightSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddDest(background, source, amount); + => PorterDuffFunctions.SoftLightSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddDest(background, source, amount); + => PorterDuffFunctions.SoftLightSrcOver(background, source, amount); } /// - /// Applies the "SubtractDest" straight-alpha composition equation. + /// Applies the "DifferenceSrcOver" straight-alpha composition equation. /// - public readonly struct SubtractDest : IPixelBlenderOperator + public readonly struct DifferenceSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractDest(background, source, amount); + => PorterDuffFunctions.DifferenceSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractDest(background, source, amount); + => PorterDuffFunctions.DifferenceSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractDest(background, source, amount); + => PorterDuffFunctions.DifferenceSrcOver(background, source, amount); } /// - /// Applies the "ScreenDest" straight-alpha composition equation. + /// Applies the "ExclusionSrcOver" straight-alpha composition equation. /// - public readonly struct ScreenDest : IPixelBlenderOperator + public readonly struct ExclusionSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenDest(background, source, amount); + => PorterDuffFunctions.ExclusionSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenDest(background, source, amount); + => PorterDuffFunctions.ExclusionSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenDest(background, source, amount); + => PorterDuffFunctions.ExclusionSrcOver(background, source, amount); } /// - /// Applies the "DarkenDest" straight-alpha composition equation. + /// Applies the "HueSrcOver" straight-alpha composition equation. /// - public readonly struct DarkenDest : IPixelBlenderOperator + public readonly struct HueSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenDest(background, source, amount); + => PorterDuffFunctions.HueSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenDest(background, source, amount); + => PorterDuffFunctions.HueSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenDest(background, source, amount); + => PorterDuffFunctions.HueSrcOver(background, source, amount); } /// - /// Applies the "LightenDest" straight-alpha composition equation. + /// Applies the "SaturationSrcOver" straight-alpha composition equation. /// - public readonly struct LightenDest : IPixelBlenderOperator + public readonly struct SaturationSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenDest(background, source, amount); + => PorterDuffFunctions.SaturationSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenDest(background, source, amount); + => PorterDuffFunctions.SaturationSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenDest(background, source, amount); + => PorterDuffFunctions.SaturationSrcOver(background, source, amount); } /// - /// Applies the "OverlayDest" straight-alpha composition equation. + /// Applies the "ColorSrcOver" straight-alpha composition equation. /// - public readonly struct OverlayDest : IPixelBlenderOperator + public readonly struct ColorSrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlayDest(background, source, amount); + => PorterDuffFunctions.ColorSrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlayDest(background, source, amount); + => PorterDuffFunctions.ColorSrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlayDest(background, source, amount); + => PorterDuffFunctions.ColorSrcOver(background, source, amount); } /// - /// Applies the "HardLightDest" straight-alpha composition equation. + /// Applies the "LuminositySrcOver" straight-alpha composition equation. /// - public readonly struct HardLightDest : IPixelBlenderOperator + public readonly struct LuminositySrcOver : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightDest(background, source, amount); + => PorterDuffFunctions.LuminositySrcOver(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightDest(background, source, amount); + => PorterDuffFunctions.LuminositySrcOver(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightDest(background, source, amount); + => PorterDuffFunctions.LuminositySrcOver(background, source, amount); } /// - /// Applies the "NormalDestAtop" straight-alpha composition equation. + /// Applies the "NormalSrcIn" straight-alpha composition equation. /// - public readonly struct NormalDestAtop : IPixelBlenderOperator + public readonly struct NormalSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalDestAtop(background, source, amount); + => PorterDuffFunctions.NormalSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalDestAtop(background, source, amount); + => PorterDuffFunctions.NormalSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalDestAtop(background, source, amount); + => PorterDuffFunctions.NormalSrcIn(background, source, amount); } /// - /// Applies the "MultiplyDestAtop" straight-alpha composition equation. + /// Applies the "MultiplySrcIn" straight-alpha composition equation. /// - public readonly struct MultiplyDestAtop : IPixelBlenderOperator + public readonly struct MultiplySrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplyDestAtop(background, source, amount); + => PorterDuffFunctions.MultiplySrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplyDestAtop(background, source, amount); + => PorterDuffFunctions.MultiplySrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplyDestAtop(background, source, amount); + => PorterDuffFunctions.MultiplySrcIn(background, source, amount); } /// - /// Applies the "AddDestAtop" straight-alpha composition equation. + /// Applies the "AddSrcIn" straight-alpha composition equation. /// - public readonly struct AddDestAtop : IPixelBlenderOperator + public readonly struct AddSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddDestAtop(background, source, amount); + => PorterDuffFunctions.AddSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddDestAtop(background, source, amount); + => PorterDuffFunctions.AddSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddDestAtop(background, source, amount); + => PorterDuffFunctions.AddSrcIn(background, source, amount); } /// - /// Applies the "SubtractDestAtop" straight-alpha composition equation. + /// Applies the "SubtractSrcIn" straight-alpha composition equation. /// - public readonly struct SubtractDestAtop : IPixelBlenderOperator + public readonly struct SubtractSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractDestAtop(background, source, amount); + => PorterDuffFunctions.SubtractSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractDestAtop(background, source, amount); + => PorterDuffFunctions.SubtractSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractDestAtop(background, source, amount); + => PorterDuffFunctions.SubtractSrcIn(background, source, amount); } /// - /// Applies the "ScreenDestAtop" straight-alpha composition equation. + /// Applies the "ScreenSrcIn" straight-alpha composition equation. /// - public readonly struct ScreenDestAtop : IPixelBlenderOperator + public readonly struct ScreenSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenDestAtop(background, source, amount); + => PorterDuffFunctions.ScreenSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenDestAtop(background, source, amount); + => PorterDuffFunctions.ScreenSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenDestAtop(background, source, amount); + => PorterDuffFunctions.ScreenSrcIn(background, source, amount); } /// - /// Applies the "DarkenDestAtop" straight-alpha composition equation. + /// Applies the "DarkenSrcIn" straight-alpha composition equation. /// - public readonly struct DarkenDestAtop : IPixelBlenderOperator + public readonly struct DarkenSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenDestAtop(background, source, amount); + => PorterDuffFunctions.DarkenSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenDestAtop(background, source, amount); + => PorterDuffFunctions.DarkenSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenDestAtop(background, source, amount); + => PorterDuffFunctions.DarkenSrcIn(background, source, amount); } /// - /// Applies the "LightenDestAtop" straight-alpha composition equation. + /// Applies the "LightenSrcIn" straight-alpha composition equation. /// - public readonly struct LightenDestAtop : IPixelBlenderOperator + public readonly struct LightenSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenDestAtop(background, source, amount); + => PorterDuffFunctions.LightenSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenDestAtop(background, source, amount); + => PorterDuffFunctions.LightenSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenDestAtop(background, source, amount); + => PorterDuffFunctions.LightenSrcIn(background, source, amount); } /// - /// Applies the "OverlayDestAtop" straight-alpha composition equation. + /// Applies the "OverlaySrcIn" straight-alpha composition equation. /// - public readonly struct OverlayDestAtop : IPixelBlenderOperator + public readonly struct OverlaySrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlayDestAtop(background, source, amount); + => PorterDuffFunctions.OverlaySrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlayDestAtop(background, source, amount); + => PorterDuffFunctions.OverlaySrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlayDestAtop(background, source, amount); + => PorterDuffFunctions.OverlaySrcIn(background, source, amount); } /// - /// Applies the "HardLightDestAtop" straight-alpha composition equation. + /// Applies the "HardLightSrcIn" straight-alpha composition equation. /// - public readonly struct HardLightDestAtop : IPixelBlenderOperator + public readonly struct HardLightSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightDestAtop(background, source, amount); + => PorterDuffFunctions.HardLightSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightDestAtop(background, source, amount); + => PorterDuffFunctions.HardLightSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightDestAtop(background, source, amount); + => PorterDuffFunctions.HardLightSrcIn(background, source, amount); } /// - /// Applies the "NormalDestOver" straight-alpha composition equation. + /// Applies the "ColorDodgeSrcIn" straight-alpha composition equation. /// - public readonly struct NormalDestOver : IPixelBlenderOperator + public readonly struct ColorDodgeSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalDestOver(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalDestOver(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalDestOver(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcIn(background, source, amount); } /// - /// Applies the "MultiplyDestOver" straight-alpha composition equation. + /// Applies the "ColorBurnSrcIn" straight-alpha composition equation. /// - public readonly struct MultiplyDestOver : IPixelBlenderOperator + public readonly struct ColorBurnSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplyDestOver(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplyDestOver(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplyDestOver(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcIn(background, source, amount); } /// - /// Applies the "AddDestOver" straight-alpha composition equation. + /// Applies the "SoftLightSrcIn" straight-alpha composition equation. /// - public readonly struct AddDestOver : IPixelBlenderOperator + public readonly struct SoftLightSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddDestOver(background, source, amount); + => PorterDuffFunctions.SoftLightSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddDestOver(background, source, amount); + => PorterDuffFunctions.SoftLightSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddDestOver(background, source, amount); + => PorterDuffFunctions.SoftLightSrcIn(background, source, amount); } /// - /// Applies the "SubtractDestOver" straight-alpha composition equation. + /// Applies the "DifferenceSrcIn" straight-alpha composition equation. /// - public readonly struct SubtractDestOver : IPixelBlenderOperator + public readonly struct DifferenceSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractDestOver(background, source, amount); + => PorterDuffFunctions.DifferenceSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractDestOver(background, source, amount); + => PorterDuffFunctions.DifferenceSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractDestOver(background, source, amount); + => PorterDuffFunctions.DifferenceSrcIn(background, source, amount); } /// - /// Applies the "ScreenDestOver" straight-alpha composition equation. + /// Applies the "ExclusionSrcIn" straight-alpha composition equation. /// - public readonly struct ScreenDestOver : IPixelBlenderOperator + public readonly struct ExclusionSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenDestOver(background, source, amount); + => PorterDuffFunctions.ExclusionSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenDestOver(background, source, amount); + => PorterDuffFunctions.ExclusionSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenDestOver(background, source, amount); + => PorterDuffFunctions.ExclusionSrcIn(background, source, amount); } /// - /// Applies the "DarkenDestOver" straight-alpha composition equation. + /// Applies the "HueSrcIn" straight-alpha composition equation. /// - public readonly struct DarkenDestOver : IPixelBlenderOperator + public readonly struct HueSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenDestOver(background, source, amount); + => PorterDuffFunctions.HueSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenDestOver(background, source, amount); + => PorterDuffFunctions.HueSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenDestOver(background, source, amount); + => PorterDuffFunctions.HueSrcIn(background, source, amount); } /// - /// Applies the "LightenDestOver" straight-alpha composition equation. + /// Applies the "SaturationSrcIn" straight-alpha composition equation. /// - public readonly struct LightenDestOver : IPixelBlenderOperator + public readonly struct SaturationSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenDestOver(background, source, amount); + => PorterDuffFunctions.SaturationSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenDestOver(background, source, amount); + => PorterDuffFunctions.SaturationSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenDestOver(background, source, amount); + => PorterDuffFunctions.SaturationSrcIn(background, source, amount); } /// - /// Applies the "OverlayDestOver" straight-alpha composition equation. + /// Applies the "ColorSrcIn" straight-alpha composition equation. /// - public readonly struct OverlayDestOver : IPixelBlenderOperator + public readonly struct ColorSrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlayDestOver(background, source, amount); + => PorterDuffFunctions.ColorSrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlayDestOver(background, source, amount); + => PorterDuffFunctions.ColorSrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlayDestOver(background, source, amount); + => PorterDuffFunctions.ColorSrcIn(background, source, amount); } /// - /// Applies the "HardLightDestOver" straight-alpha composition equation. + /// Applies the "LuminositySrcIn" straight-alpha composition equation. /// - public readonly struct HardLightDestOver : IPixelBlenderOperator + public readonly struct LuminositySrcIn : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightDestOver(background, source, amount); + => PorterDuffFunctions.LuminositySrcIn(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightDestOver(background, source, amount); + => PorterDuffFunctions.LuminositySrcIn(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightDestOver(background, source, amount); + => PorterDuffFunctions.LuminositySrcIn(background, source, amount); } /// - /// Applies the "NormalDestIn" straight-alpha composition equation. + /// Applies the "NormalSrcOut" straight-alpha composition equation. /// - public readonly struct NormalDestIn : IPixelBlenderOperator + public readonly struct NormalSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalDestIn(background, source, amount); + => PorterDuffFunctions.NormalSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalDestIn(background, source, amount); + => PorterDuffFunctions.NormalSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalDestIn(background, source, amount); + => PorterDuffFunctions.NormalSrcOut(background, source, amount); } /// - /// Applies the "MultiplyDestIn" straight-alpha composition equation. + /// Applies the "MultiplySrcOut" straight-alpha composition equation. /// - public readonly struct MultiplyDestIn : IPixelBlenderOperator + public readonly struct MultiplySrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplyDestIn(background, source, amount); + => PorterDuffFunctions.MultiplySrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplyDestIn(background, source, amount); + => PorterDuffFunctions.MultiplySrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplyDestIn(background, source, amount); + => PorterDuffFunctions.MultiplySrcOut(background, source, amount); } /// - /// Applies the "AddDestIn" straight-alpha composition equation. + /// Applies the "AddSrcOut" straight-alpha composition equation. /// - public readonly struct AddDestIn : IPixelBlenderOperator + public readonly struct AddSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddDestIn(background, source, amount); + => PorterDuffFunctions.AddSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddDestIn(background, source, amount); + => PorterDuffFunctions.AddSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddDestIn(background, source, amount); + => PorterDuffFunctions.AddSrcOut(background, source, amount); } /// - /// Applies the "SubtractDestIn" straight-alpha composition equation. + /// Applies the "SubtractSrcOut" straight-alpha composition equation. /// - public readonly struct SubtractDestIn : IPixelBlenderOperator + public readonly struct SubtractSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractDestIn(background, source, amount); + => PorterDuffFunctions.SubtractSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractDestIn(background, source, amount); + => PorterDuffFunctions.SubtractSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractDestIn(background, source, amount); + => PorterDuffFunctions.SubtractSrcOut(background, source, amount); } /// - /// Applies the "ScreenDestIn" straight-alpha composition equation. + /// Applies the "ScreenSrcOut" straight-alpha composition equation. /// - public readonly struct ScreenDestIn : IPixelBlenderOperator + public readonly struct ScreenSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenDestIn(background, source, amount); + => PorterDuffFunctions.ScreenSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenDestIn(background, source, amount); + => PorterDuffFunctions.ScreenSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenDestIn(background, source, amount); + => PorterDuffFunctions.ScreenSrcOut(background, source, amount); } /// - /// Applies the "DarkenDestIn" straight-alpha composition equation. + /// Applies the "DarkenSrcOut" straight-alpha composition equation. /// - public readonly struct DarkenDestIn : IPixelBlenderOperator + public readonly struct DarkenSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenDestIn(background, source, amount); + => PorterDuffFunctions.DarkenSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenDestIn(background, source, amount); + => PorterDuffFunctions.DarkenSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenDestIn(background, source, amount); + => PorterDuffFunctions.DarkenSrcOut(background, source, amount); } /// - /// Applies the "LightenDestIn" straight-alpha composition equation. + /// Applies the "LightenSrcOut" straight-alpha composition equation. /// - public readonly struct LightenDestIn : IPixelBlenderOperator + public readonly struct LightenSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenDestIn(background, source, amount); + => PorterDuffFunctions.LightenSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenDestIn(background, source, amount); + => PorterDuffFunctions.LightenSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenDestIn(background, source, amount); + => PorterDuffFunctions.LightenSrcOut(background, source, amount); } /// - /// Applies the "OverlayDestIn" straight-alpha composition equation. + /// Applies the "OverlaySrcOut" straight-alpha composition equation. /// - public readonly struct OverlayDestIn : IPixelBlenderOperator + public readonly struct OverlaySrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlayDestIn(background, source, amount); + => PorterDuffFunctions.OverlaySrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlayDestIn(background, source, amount); + => PorterDuffFunctions.OverlaySrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlayDestIn(background, source, amount); + => PorterDuffFunctions.OverlaySrcOut(background, source, amount); } /// - /// Applies the "HardLightDestIn" straight-alpha composition equation. + /// Applies the "HardLightSrcOut" straight-alpha composition equation. /// - public readonly struct HardLightDestIn : IPixelBlenderOperator + public readonly struct HardLightSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightDestIn(background, source, amount); + => PorterDuffFunctions.HardLightSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightDestIn(background, source, amount); + => PorterDuffFunctions.HardLightSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightDestIn(background, source, amount); + => PorterDuffFunctions.HardLightSrcOut(background, source, amount); } /// - /// Applies the "NormalDestOut" straight-alpha composition equation. + /// Applies the "ColorDodgeSrcOut" straight-alpha composition equation. /// - public readonly struct NormalDestOut : IPixelBlenderOperator + public readonly struct ColorDodgeSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalDestOut(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalDestOut(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalDestOut(background, source, amount); + => PorterDuffFunctions.ColorDodgeSrcOut(background, source, amount); } /// - /// Applies the "MultiplyDestOut" straight-alpha composition equation. + /// Applies the "ColorBurnSrcOut" straight-alpha composition equation. /// - public readonly struct MultiplyDestOut : IPixelBlenderOperator + public readonly struct ColorBurnSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplyDestOut(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplyDestOut(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplyDestOut(background, source, amount); + => PorterDuffFunctions.ColorBurnSrcOut(background, source, amount); } /// - /// Applies the "AddDestOut" straight-alpha composition equation. + /// Applies the "SoftLightSrcOut" straight-alpha composition equation. /// - public readonly struct AddDestOut : IPixelBlenderOperator + public readonly struct SoftLightSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddDestOut(background, source, amount); + => PorterDuffFunctions.SoftLightSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddDestOut(background, source, amount); + => PorterDuffFunctions.SoftLightSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddDestOut(background, source, amount); + => PorterDuffFunctions.SoftLightSrcOut(background, source, amount); } /// - /// Applies the "SubtractDestOut" straight-alpha composition equation. + /// Applies the "DifferenceSrcOut" straight-alpha composition equation. /// - public readonly struct SubtractDestOut : IPixelBlenderOperator + public readonly struct DifferenceSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractDestOut(background, source, amount); + => PorterDuffFunctions.DifferenceSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractDestOut(background, source, amount); + => PorterDuffFunctions.DifferenceSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractDestOut(background, source, amount); + => PorterDuffFunctions.DifferenceSrcOut(background, source, amount); } /// - /// Applies the "ScreenDestOut" straight-alpha composition equation. + /// Applies the "ExclusionSrcOut" straight-alpha composition equation. /// - public readonly struct ScreenDestOut : IPixelBlenderOperator + public readonly struct ExclusionSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenDestOut(background, source, amount); + => PorterDuffFunctions.ExclusionSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenDestOut(background, source, amount); + => PorterDuffFunctions.ExclusionSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenDestOut(background, source, amount); + => PorterDuffFunctions.ExclusionSrcOut(background, source, amount); } /// - /// Applies the "DarkenDestOut" straight-alpha composition equation. + /// Applies the "HueSrcOut" straight-alpha composition equation. /// - public readonly struct DarkenDestOut : IPixelBlenderOperator + public readonly struct HueSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenDestOut(background, source, amount); + => PorterDuffFunctions.HueSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenDestOut(background, source, amount); + => PorterDuffFunctions.HueSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenDestOut(background, source, amount); + => PorterDuffFunctions.HueSrcOut(background, source, amount); } /// - /// Applies the "LightenDestOut" straight-alpha composition equation. + /// Applies the "SaturationSrcOut" straight-alpha composition equation. /// - public readonly struct LightenDestOut : IPixelBlenderOperator + public readonly struct SaturationSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenDestOut(background, source, amount); + => PorterDuffFunctions.SaturationSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenDestOut(background, source, amount); + => PorterDuffFunctions.SaturationSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenDestOut(background, source, amount); + => PorterDuffFunctions.SaturationSrcOut(background, source, amount); } /// - /// Applies the "OverlayDestOut" straight-alpha composition equation. + /// Applies the "ColorSrcOut" straight-alpha composition equation. /// - public readonly struct OverlayDestOut : IPixelBlenderOperator + public readonly struct ColorSrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlayDestOut(background, source, amount); + => PorterDuffFunctions.ColorSrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlayDestOut(background, source, amount); + => PorterDuffFunctions.ColorSrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlayDestOut(background, source, amount); + => PorterDuffFunctions.ColorSrcOut(background, source, amount); } /// - /// Applies the "HardLightDestOut" straight-alpha composition equation. + /// Applies the "LuminositySrcOut" straight-alpha composition equation. /// - public readonly struct HardLightDestOut : IPixelBlenderOperator + public readonly struct LuminositySrcOut : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightDestOut(background, source, amount); + => PorterDuffFunctions.LuminositySrcOut(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightDestOut(background, source, amount); + => PorterDuffFunctions.LuminositySrcOut(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightDestOut(background, source, amount); + => PorterDuffFunctions.LuminositySrcOut(background, source, amount); } /// - /// Applies the "NormalClear" straight-alpha composition equation. + /// Applies the "NormalDest" straight-alpha composition equation. /// - public readonly struct NormalClear : IPixelBlenderOperator + public readonly struct NormalDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalClear(background, source, amount); + => PorterDuffFunctions.NormalDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalClear(background, source, amount); + => PorterDuffFunctions.NormalDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalClear(background, source, amount); + => PorterDuffFunctions.NormalDest(background, source, amount); } /// - /// Applies the "MultiplyClear" straight-alpha composition equation. + /// Applies the "MultiplyDest" straight-alpha composition equation. /// - public readonly struct MultiplyClear : IPixelBlenderOperator + public readonly struct MultiplyDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplyClear(background, source, amount); + => PorterDuffFunctions.MultiplyDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplyClear(background, source, amount); + => PorterDuffFunctions.MultiplyDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplyClear(background, source, amount); + => PorterDuffFunctions.MultiplyDest(background, source, amount); } /// - /// Applies the "AddClear" straight-alpha composition equation. + /// Applies the "AddDest" straight-alpha composition equation. /// - public readonly struct AddClear : IPixelBlenderOperator + public readonly struct AddDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddClear(background, source, amount); + => PorterDuffFunctions.AddDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddClear(background, source, amount); + => PorterDuffFunctions.AddDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddClear(background, source, amount); + => PorterDuffFunctions.AddDest(background, source, amount); } /// - /// Applies the "SubtractClear" straight-alpha composition equation. + /// Applies the "SubtractDest" straight-alpha composition equation. /// - public readonly struct SubtractClear : IPixelBlenderOperator + public readonly struct SubtractDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractClear(background, source, amount); + => PorterDuffFunctions.SubtractDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractClear(background, source, amount); + => PorterDuffFunctions.SubtractDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractClear(background, source, amount); + => PorterDuffFunctions.SubtractDest(background, source, amount); } /// - /// Applies the "ScreenClear" straight-alpha composition equation. + /// Applies the "ScreenDest" straight-alpha composition equation. /// - public readonly struct ScreenClear : IPixelBlenderOperator + public readonly struct ScreenDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenClear(background, source, amount); + => PorterDuffFunctions.ScreenDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenClear(background, source, amount); + => PorterDuffFunctions.ScreenDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenClear(background, source, amount); + => PorterDuffFunctions.ScreenDest(background, source, amount); } /// - /// Applies the "DarkenClear" straight-alpha composition equation. + /// Applies the "DarkenDest" straight-alpha composition equation. /// - public readonly struct DarkenClear : IPixelBlenderOperator + public readonly struct DarkenDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenClear(background, source, amount); + => PorterDuffFunctions.DarkenDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenClear(background, source, amount); + => PorterDuffFunctions.DarkenDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenClear(background, source, amount); + => PorterDuffFunctions.DarkenDest(background, source, amount); } /// - /// Applies the "LightenClear" straight-alpha composition equation. + /// Applies the "LightenDest" straight-alpha composition equation. /// - public readonly struct LightenClear : IPixelBlenderOperator + public readonly struct LightenDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenClear(background, source, amount); + => PorterDuffFunctions.LightenDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenClear(background, source, amount); + => PorterDuffFunctions.LightenDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenClear(background, source, amount); + => PorterDuffFunctions.LightenDest(background, source, amount); } /// - /// Applies the "OverlayClear" straight-alpha composition equation. + /// Applies the "OverlayDest" straight-alpha composition equation. /// - public readonly struct OverlayClear : IPixelBlenderOperator + public readonly struct OverlayDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlayClear(background, source, amount); + => PorterDuffFunctions.OverlayDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlayClear(background, source, amount); + => PorterDuffFunctions.OverlayDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlayClear(background, source, amount); + => PorterDuffFunctions.OverlayDest(background, source, amount); } /// - /// Applies the "HardLightClear" straight-alpha composition equation. + /// Applies the "HardLightDest" straight-alpha composition equation. /// - public readonly struct HardLightClear : IPixelBlenderOperator + public readonly struct HardLightDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightClear(background, source, amount); + => PorterDuffFunctions.HardLightDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightClear(background, source, amount); + => PorterDuffFunctions.HardLightDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightClear(background, source, amount); + => PorterDuffFunctions.HardLightDest(background, source, amount); } /// - /// Applies the "NormalXor" straight-alpha composition equation. + /// Applies the "ColorDodgeDest" straight-alpha composition equation. /// - public readonly struct NormalXor : IPixelBlenderOperator + public readonly struct ColorDodgeDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.NormalXor(background, source, amount); + => PorterDuffFunctions.ColorDodgeDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.NormalXor(background, source, amount); + => PorterDuffFunctions.ColorDodgeDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.NormalXor(background, source, amount); + => PorterDuffFunctions.ColorDodgeDest(background, source, amount); } /// - /// Applies the "MultiplyXor" straight-alpha composition equation. + /// Applies the "ColorBurnDest" straight-alpha composition equation. /// - public readonly struct MultiplyXor : IPixelBlenderOperator + public readonly struct ColorBurnDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.MultiplyXor(background, source, amount); + => PorterDuffFunctions.ColorBurnDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.MultiplyXor(background, source, amount); + => PorterDuffFunctions.ColorBurnDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.MultiplyXor(background, source, amount); + => PorterDuffFunctions.ColorBurnDest(background, source, amount); } /// - /// Applies the "AddXor" straight-alpha composition equation. + /// Applies the "SoftLightDest" straight-alpha composition equation. /// - public readonly struct AddXor : IPixelBlenderOperator + public readonly struct SoftLightDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.AddXor(background, source, amount); + => PorterDuffFunctions.SoftLightDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.AddXor(background, source, amount); + => PorterDuffFunctions.SoftLightDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.AddXor(background, source, amount); + => PorterDuffFunctions.SoftLightDest(background, source, amount); } /// - /// Applies the "SubtractXor" straight-alpha composition equation. + /// Applies the "DifferenceDest" straight-alpha composition equation. /// - public readonly struct SubtractXor : IPixelBlenderOperator + public readonly struct DifferenceDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.SubtractXor(background, source, amount); + => PorterDuffFunctions.DifferenceDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.SubtractXor(background, source, amount); + => PorterDuffFunctions.DifferenceDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.SubtractXor(background, source, amount); + => PorterDuffFunctions.DifferenceDest(background, source, amount); } /// - /// Applies the "ScreenXor" straight-alpha composition equation. + /// Applies the "ExclusionDest" straight-alpha composition equation. /// - public readonly struct ScreenXor : IPixelBlenderOperator + public readonly struct ExclusionDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.ScreenXor(background, source, amount); + => PorterDuffFunctions.ExclusionDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.ScreenXor(background, source, amount); + => PorterDuffFunctions.ExclusionDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.ScreenXor(background, source, amount); + => PorterDuffFunctions.ExclusionDest(background, source, amount); } /// - /// Applies the "DarkenXor" straight-alpha composition equation. + /// Applies the "HueDest" straight-alpha composition equation. /// - public readonly struct DarkenXor : IPixelBlenderOperator + public readonly struct HueDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.DarkenXor(background, source, amount); + => PorterDuffFunctions.HueDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.DarkenXor(background, source, amount); + => PorterDuffFunctions.HueDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.DarkenXor(background, source, amount); + => PorterDuffFunctions.HueDest(background, source, amount); } /// - /// Applies the "LightenXor" straight-alpha composition equation. + /// Applies the "SaturationDest" straight-alpha composition equation. /// - public readonly struct LightenXor : IPixelBlenderOperator + public readonly struct SaturationDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.LightenXor(background, source, amount); + => PorterDuffFunctions.SaturationDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.LightenXor(background, source, amount); + => PorterDuffFunctions.SaturationDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.LightenXor(background, source, amount); + => PorterDuffFunctions.SaturationDest(background, source, amount); } /// - /// Applies the "OverlayXor" straight-alpha composition equation. + /// Applies the "ColorDest" straight-alpha composition equation. /// - public readonly struct OverlayXor : IPixelBlenderOperator + public readonly struct ColorDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.OverlayXor(background, source, amount); + => PorterDuffFunctions.ColorDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.OverlayXor(background, source, amount); + => PorterDuffFunctions.ColorDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.OverlayXor(background, source, amount); + => PorterDuffFunctions.ColorDest(background, source, amount); } /// - /// Applies the "HardLightXor" straight-alpha composition equation. + /// Applies the "LuminosityDest" straight-alpha composition equation. /// - public readonly struct HardLightXor : IPixelBlenderOperator + public readonly struct LuminosityDest : IPixelBlenderOperator { /// public static bool IsAssociatedAlpha => false; /// public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) - => PorterDuffFunctions.HardLightXor(background, source, amount); + => PorterDuffFunctions.LuminosityDest(background, source, amount); /// public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) - => PorterDuffFunctions.HardLightXor(background, source, amount); + => PorterDuffFunctions.LuminosityDest(background, source, amount); /// public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) - => PorterDuffFunctions.HardLightXor(background, source, amount); + => PorterDuffFunctions.LuminosityDest(background, source, amount); } -} - -/// -/// Provides straight-alpha pixel blenders for each color and alpha composition pair. -/// -/// The destination pixel format. -internal static class DefaultPixelBlenders - where TPixel : unmanaged, IPixel -{ /// - /// Gets the shared blender for the "NormalSrc" composition equation. + /// Applies the "NormalDestAtop" straight-alpha composition equation. /// - public static PixelBlender NormalSrc => PixelBlender.Instance; + public readonly struct NormalDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; - /// - /// Gets the shared blender for the "MultiplySrc" composition equation. - /// - public static PixelBlender MultiplySrc => PixelBlender.Instance; + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.NormalDestAtop(background, source, amount); - /// - /// Gets the shared blender for the "AddSrc" composition equation. - /// - public static PixelBlender AddSrc => PixelBlender.Instance; + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.NormalDestAtop(background, source, amount); - /// - /// Gets the shared blender for the "SubtractSrc" composition equation. - /// - public static PixelBlender SubtractSrc => PixelBlender.Instance; + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.NormalDestAtop(background, source, amount); + } /// - /// Gets the shared blender for the "ScreenSrc" composition equation. + /// Applies the "MultiplyDestAtop" straight-alpha composition equation. /// - public static PixelBlender ScreenSrc => PixelBlender.Instance; + public readonly struct MultiplyDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; - /// - /// Gets the shared blender for the "DarkenSrc" composition equation. - /// + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.MultiplyDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.MultiplyDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.MultiplyDestAtop(background, source, amount); + } + + /// + /// Applies the "AddDestAtop" straight-alpha composition equation. + /// + public readonly struct AddDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.AddDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.AddDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.AddDestAtop(background, source, amount); + } + + /// + /// Applies the "SubtractDestAtop" straight-alpha composition equation. + /// + public readonly struct SubtractDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SubtractDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SubtractDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SubtractDestAtop(background, source, amount); + } + + /// + /// Applies the "ScreenDestAtop" straight-alpha composition equation. + /// + public readonly struct ScreenDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ScreenDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ScreenDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ScreenDestAtop(background, source, amount); + } + + /// + /// Applies the "DarkenDestAtop" straight-alpha composition equation. + /// + public readonly struct DarkenDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DarkenDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DarkenDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DarkenDestAtop(background, source, amount); + } + + /// + /// Applies the "LightenDestAtop" straight-alpha composition equation. + /// + public readonly struct LightenDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LightenDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LightenDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LightenDestAtop(background, source, amount); + } + + /// + /// Applies the "OverlayDestAtop" straight-alpha composition equation. + /// + public readonly struct OverlayDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.OverlayDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.OverlayDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.OverlayDestAtop(background, source, amount); + } + + /// + /// Applies the "HardLightDestAtop" straight-alpha composition equation. + /// + public readonly struct HardLightDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HardLightDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HardLightDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HardLightDestAtop(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestAtop" straight-alpha composition equation. + /// + public readonly struct ColorDodgeDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDodgeDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDodgeDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDodgeDestAtop(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestAtop" straight-alpha composition equation. + /// + public readonly struct ColorBurnDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorBurnDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorBurnDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorBurnDestAtop(background, source, amount); + } + + /// + /// Applies the "SoftLightDestAtop" straight-alpha composition equation. + /// + public readonly struct SoftLightDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SoftLightDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SoftLightDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SoftLightDestAtop(background, source, amount); + } + + /// + /// Applies the "DifferenceDestAtop" straight-alpha composition equation. + /// + public readonly struct DifferenceDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DifferenceDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DifferenceDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DifferenceDestAtop(background, source, amount); + } + + /// + /// Applies the "ExclusionDestAtop" straight-alpha composition equation. + /// + public readonly struct ExclusionDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ExclusionDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ExclusionDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ExclusionDestAtop(background, source, amount); + } + + /// + /// Applies the "HueDestAtop" straight-alpha composition equation. + /// + public readonly struct HueDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HueDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HueDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HueDestAtop(background, source, amount); + } + + /// + /// Applies the "SaturationDestAtop" straight-alpha composition equation. + /// + public readonly struct SaturationDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SaturationDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SaturationDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SaturationDestAtop(background, source, amount); + } + + /// + /// Applies the "ColorDestAtop" straight-alpha composition equation. + /// + public readonly struct ColorDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDestAtop(background, source, amount); + } + + /// + /// Applies the "LuminosityDestAtop" straight-alpha composition equation. + /// + public readonly struct LuminosityDestAtop : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LuminosityDestAtop(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LuminosityDestAtop(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LuminosityDestAtop(background, source, amount); + } + + /// + /// Applies the "NormalDestOver" straight-alpha composition equation. + /// + public readonly struct NormalDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.NormalDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.NormalDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.NormalDestOver(background, source, amount); + } + + /// + /// Applies the "MultiplyDestOver" straight-alpha composition equation. + /// + public readonly struct MultiplyDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.MultiplyDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.MultiplyDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.MultiplyDestOver(background, source, amount); + } + + /// + /// Applies the "AddDestOver" straight-alpha composition equation. + /// + public readonly struct AddDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.AddDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.AddDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.AddDestOver(background, source, amount); + } + + /// + /// Applies the "SubtractDestOver" straight-alpha composition equation. + /// + public readonly struct SubtractDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SubtractDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SubtractDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SubtractDestOver(background, source, amount); + } + + /// + /// Applies the "ScreenDestOver" straight-alpha composition equation. + /// + public readonly struct ScreenDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ScreenDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ScreenDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ScreenDestOver(background, source, amount); + } + + /// + /// Applies the "DarkenDestOver" straight-alpha composition equation. + /// + public readonly struct DarkenDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DarkenDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DarkenDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DarkenDestOver(background, source, amount); + } + + /// + /// Applies the "LightenDestOver" straight-alpha composition equation. + /// + public readonly struct LightenDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LightenDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LightenDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LightenDestOver(background, source, amount); + } + + /// + /// Applies the "OverlayDestOver" straight-alpha composition equation. + /// + public readonly struct OverlayDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.OverlayDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.OverlayDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.OverlayDestOver(background, source, amount); + } + + /// + /// Applies the "HardLightDestOver" straight-alpha composition equation. + /// + public readonly struct HardLightDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HardLightDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HardLightDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HardLightDestOver(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestOver" straight-alpha composition equation. + /// + public readonly struct ColorDodgeDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDodgeDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDodgeDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDodgeDestOver(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestOver" straight-alpha composition equation. + /// + public readonly struct ColorBurnDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorBurnDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorBurnDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorBurnDestOver(background, source, amount); + } + + /// + /// Applies the "SoftLightDestOver" straight-alpha composition equation. + /// + public readonly struct SoftLightDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SoftLightDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SoftLightDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SoftLightDestOver(background, source, amount); + } + + /// + /// Applies the "DifferenceDestOver" straight-alpha composition equation. + /// + public readonly struct DifferenceDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DifferenceDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DifferenceDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DifferenceDestOver(background, source, amount); + } + + /// + /// Applies the "ExclusionDestOver" straight-alpha composition equation. + /// + public readonly struct ExclusionDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ExclusionDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ExclusionDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ExclusionDestOver(background, source, amount); + } + + /// + /// Applies the "HueDestOver" straight-alpha composition equation. + /// + public readonly struct HueDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HueDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HueDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HueDestOver(background, source, amount); + } + + /// + /// Applies the "SaturationDestOver" straight-alpha composition equation. + /// + public readonly struct SaturationDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SaturationDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SaturationDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SaturationDestOver(background, source, amount); + } + + /// + /// Applies the "ColorDestOver" straight-alpha composition equation. + /// + public readonly struct ColorDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDestOver(background, source, amount); + } + + /// + /// Applies the "LuminosityDestOver" straight-alpha composition equation. + /// + public readonly struct LuminosityDestOver : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LuminosityDestOver(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LuminosityDestOver(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LuminosityDestOver(background, source, amount); + } + + /// + /// Applies the "NormalDestIn" straight-alpha composition equation. + /// + public readonly struct NormalDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.NormalDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.NormalDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.NormalDestIn(background, source, amount); + } + + /// + /// Applies the "MultiplyDestIn" straight-alpha composition equation. + /// + public readonly struct MultiplyDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.MultiplyDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.MultiplyDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.MultiplyDestIn(background, source, amount); + } + + /// + /// Applies the "AddDestIn" straight-alpha composition equation. + /// + public readonly struct AddDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.AddDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.AddDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.AddDestIn(background, source, amount); + } + + /// + /// Applies the "SubtractDestIn" straight-alpha composition equation. + /// + public readonly struct SubtractDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SubtractDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SubtractDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SubtractDestIn(background, source, amount); + } + + /// + /// Applies the "ScreenDestIn" straight-alpha composition equation. + /// + public readonly struct ScreenDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ScreenDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ScreenDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ScreenDestIn(background, source, amount); + } + + /// + /// Applies the "DarkenDestIn" straight-alpha composition equation. + /// + public readonly struct DarkenDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DarkenDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DarkenDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DarkenDestIn(background, source, amount); + } + + /// + /// Applies the "LightenDestIn" straight-alpha composition equation. + /// + public readonly struct LightenDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LightenDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LightenDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LightenDestIn(background, source, amount); + } + + /// + /// Applies the "OverlayDestIn" straight-alpha composition equation. + /// + public readonly struct OverlayDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.OverlayDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.OverlayDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.OverlayDestIn(background, source, amount); + } + + /// + /// Applies the "HardLightDestIn" straight-alpha composition equation. + /// + public readonly struct HardLightDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HardLightDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HardLightDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HardLightDestIn(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestIn" straight-alpha composition equation. + /// + public readonly struct ColorDodgeDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDodgeDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDodgeDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDodgeDestIn(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestIn" straight-alpha composition equation. + /// + public readonly struct ColorBurnDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorBurnDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorBurnDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorBurnDestIn(background, source, amount); + } + + /// + /// Applies the "SoftLightDestIn" straight-alpha composition equation. + /// + public readonly struct SoftLightDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SoftLightDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SoftLightDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SoftLightDestIn(background, source, amount); + } + + /// + /// Applies the "DifferenceDestIn" straight-alpha composition equation. + /// + public readonly struct DifferenceDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DifferenceDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DifferenceDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DifferenceDestIn(background, source, amount); + } + + /// + /// Applies the "ExclusionDestIn" straight-alpha composition equation. + /// + public readonly struct ExclusionDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ExclusionDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ExclusionDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ExclusionDestIn(background, source, amount); + } + + /// + /// Applies the "HueDestIn" straight-alpha composition equation. + /// + public readonly struct HueDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HueDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HueDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HueDestIn(background, source, amount); + } + + /// + /// Applies the "SaturationDestIn" straight-alpha composition equation. + /// + public readonly struct SaturationDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SaturationDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SaturationDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SaturationDestIn(background, source, amount); + } + + /// + /// Applies the "ColorDestIn" straight-alpha composition equation. + /// + public readonly struct ColorDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDestIn(background, source, amount); + } + + /// + /// Applies the "LuminosityDestIn" straight-alpha composition equation. + /// + public readonly struct LuminosityDestIn : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LuminosityDestIn(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LuminosityDestIn(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LuminosityDestIn(background, source, amount); + } + + /// + /// Applies the "NormalDestOut" straight-alpha composition equation. + /// + public readonly struct NormalDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.NormalDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.NormalDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.NormalDestOut(background, source, amount); + } + + /// + /// Applies the "MultiplyDestOut" straight-alpha composition equation. + /// + public readonly struct MultiplyDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.MultiplyDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.MultiplyDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.MultiplyDestOut(background, source, amount); + } + + /// + /// Applies the "AddDestOut" straight-alpha composition equation. + /// + public readonly struct AddDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.AddDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.AddDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.AddDestOut(background, source, amount); + } + + /// + /// Applies the "SubtractDestOut" straight-alpha composition equation. + /// + public readonly struct SubtractDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SubtractDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SubtractDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SubtractDestOut(background, source, amount); + } + + /// + /// Applies the "ScreenDestOut" straight-alpha composition equation. + /// + public readonly struct ScreenDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ScreenDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ScreenDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ScreenDestOut(background, source, amount); + } + + /// + /// Applies the "DarkenDestOut" straight-alpha composition equation. + /// + public readonly struct DarkenDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DarkenDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DarkenDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DarkenDestOut(background, source, amount); + } + + /// + /// Applies the "LightenDestOut" straight-alpha composition equation. + /// + public readonly struct LightenDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LightenDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LightenDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LightenDestOut(background, source, amount); + } + + /// + /// Applies the "OverlayDestOut" straight-alpha composition equation. + /// + public readonly struct OverlayDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.OverlayDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.OverlayDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.OverlayDestOut(background, source, amount); + } + + /// + /// Applies the "HardLightDestOut" straight-alpha composition equation. + /// + public readonly struct HardLightDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HardLightDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HardLightDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HardLightDestOut(background, source, amount); + } + + /// + /// Applies the "ColorDodgeDestOut" straight-alpha composition equation. + /// + public readonly struct ColorDodgeDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDodgeDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDodgeDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDodgeDestOut(background, source, amount); + } + + /// + /// Applies the "ColorBurnDestOut" straight-alpha composition equation. + /// + public readonly struct ColorBurnDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorBurnDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorBurnDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorBurnDestOut(background, source, amount); + } + + /// + /// Applies the "SoftLightDestOut" straight-alpha composition equation. + /// + public readonly struct SoftLightDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SoftLightDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SoftLightDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SoftLightDestOut(background, source, amount); + } + + /// + /// Applies the "DifferenceDestOut" straight-alpha composition equation. + /// + public readonly struct DifferenceDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DifferenceDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DifferenceDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DifferenceDestOut(background, source, amount); + } + + /// + /// Applies the "ExclusionDestOut" straight-alpha composition equation. + /// + public readonly struct ExclusionDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ExclusionDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ExclusionDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ExclusionDestOut(background, source, amount); + } + + /// + /// Applies the "HueDestOut" straight-alpha composition equation. + /// + public readonly struct HueDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HueDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HueDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HueDestOut(background, source, amount); + } + + /// + /// Applies the "SaturationDestOut" straight-alpha composition equation. + /// + public readonly struct SaturationDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SaturationDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SaturationDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SaturationDestOut(background, source, amount); + } + + /// + /// Applies the "ColorDestOut" straight-alpha composition equation. + /// + public readonly struct ColorDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDestOut(background, source, amount); + } + + /// + /// Applies the "LuminosityDestOut" straight-alpha composition equation. + /// + public readonly struct LuminosityDestOut : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LuminosityDestOut(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LuminosityDestOut(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LuminosityDestOut(background, source, amount); + } + + /// + /// Applies the "NormalClear" straight-alpha composition equation. + /// + public readonly struct NormalClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.NormalClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.NormalClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.NormalClear(background, source, amount); + } + + /// + /// Applies the "MultiplyClear" straight-alpha composition equation. + /// + public readonly struct MultiplyClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.MultiplyClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.MultiplyClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.MultiplyClear(background, source, amount); + } + + /// + /// Applies the "AddClear" straight-alpha composition equation. + /// + public readonly struct AddClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.AddClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.AddClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.AddClear(background, source, amount); + } + + /// + /// Applies the "SubtractClear" straight-alpha composition equation. + /// + public readonly struct SubtractClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SubtractClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SubtractClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SubtractClear(background, source, amount); + } + + /// + /// Applies the "ScreenClear" straight-alpha composition equation. + /// + public readonly struct ScreenClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ScreenClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ScreenClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ScreenClear(background, source, amount); + } + + /// + /// Applies the "DarkenClear" straight-alpha composition equation. + /// + public readonly struct DarkenClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DarkenClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DarkenClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DarkenClear(background, source, amount); + } + + /// + /// Applies the "LightenClear" straight-alpha composition equation. + /// + public readonly struct LightenClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LightenClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LightenClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LightenClear(background, source, amount); + } + + /// + /// Applies the "OverlayClear" straight-alpha composition equation. + /// + public readonly struct OverlayClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.OverlayClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.OverlayClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.OverlayClear(background, source, amount); + } + + /// + /// Applies the "HardLightClear" straight-alpha composition equation. + /// + public readonly struct HardLightClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HardLightClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HardLightClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HardLightClear(background, source, amount); + } + + /// + /// Applies the "ColorDodgeClear" straight-alpha composition equation. + /// + public readonly struct ColorDodgeClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDodgeClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDodgeClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDodgeClear(background, source, amount); + } + + /// + /// Applies the "ColorBurnClear" straight-alpha composition equation. + /// + public readonly struct ColorBurnClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorBurnClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorBurnClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorBurnClear(background, source, amount); + } + + /// + /// Applies the "SoftLightClear" straight-alpha composition equation. + /// + public readonly struct SoftLightClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SoftLightClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SoftLightClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SoftLightClear(background, source, amount); + } + + /// + /// Applies the "DifferenceClear" straight-alpha composition equation. + /// + public readonly struct DifferenceClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DifferenceClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DifferenceClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DifferenceClear(background, source, amount); + } + + /// + /// Applies the "ExclusionClear" straight-alpha composition equation. + /// + public readonly struct ExclusionClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ExclusionClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ExclusionClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ExclusionClear(background, source, amount); + } + + /// + /// Applies the "HueClear" straight-alpha composition equation. + /// + public readonly struct HueClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HueClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HueClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HueClear(background, source, amount); + } + + /// + /// Applies the "SaturationClear" straight-alpha composition equation. + /// + public readonly struct SaturationClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SaturationClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SaturationClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SaturationClear(background, source, amount); + } + + /// + /// Applies the "ColorClear" straight-alpha composition equation. + /// + public readonly struct ColorClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorClear(background, source, amount); + } + + /// + /// Applies the "LuminosityClear" straight-alpha composition equation. + /// + public readonly struct LuminosityClear : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LuminosityClear(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LuminosityClear(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LuminosityClear(background, source, amount); + } + + /// + /// Applies the "NormalXor" straight-alpha composition equation. + /// + public readonly struct NormalXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.NormalXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.NormalXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.NormalXor(background, source, amount); + } + + /// + /// Applies the "MultiplyXor" straight-alpha composition equation. + /// + public readonly struct MultiplyXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.MultiplyXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.MultiplyXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.MultiplyXor(background, source, amount); + } + + /// + /// Applies the "AddXor" straight-alpha composition equation. + /// + public readonly struct AddXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.AddXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.AddXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.AddXor(background, source, amount); + } + + /// + /// Applies the "SubtractXor" straight-alpha composition equation. + /// + public readonly struct SubtractXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SubtractXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SubtractXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SubtractXor(background, source, amount); + } + + /// + /// Applies the "ScreenXor" straight-alpha composition equation. + /// + public readonly struct ScreenXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ScreenXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ScreenXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ScreenXor(background, source, amount); + } + + /// + /// Applies the "DarkenXor" straight-alpha composition equation. + /// + public readonly struct DarkenXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DarkenXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DarkenXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DarkenXor(background, source, amount); + } + + /// + /// Applies the "LightenXor" straight-alpha composition equation. + /// + public readonly struct LightenXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LightenXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LightenXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LightenXor(background, source, amount); + } + + /// + /// Applies the "OverlayXor" straight-alpha composition equation. + /// + public readonly struct OverlayXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.OverlayXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.OverlayXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.OverlayXor(background, source, amount); + } + + /// + /// Applies the "HardLightXor" straight-alpha composition equation. + /// + public readonly struct HardLightXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HardLightXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HardLightXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HardLightXor(background, source, amount); + } + + /// + /// Applies the "ColorDodgeXor" straight-alpha composition equation. + /// + public readonly struct ColorDodgeXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDodgeXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDodgeXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDodgeXor(background, source, amount); + } + + /// + /// Applies the "ColorBurnXor" straight-alpha composition equation. + /// + public readonly struct ColorBurnXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorBurnXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorBurnXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorBurnXor(background, source, amount); + } + + /// + /// Applies the "SoftLightXor" straight-alpha composition equation. + /// + public readonly struct SoftLightXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SoftLightXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SoftLightXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SoftLightXor(background, source, amount); + } + + /// + /// Applies the "DifferenceXor" straight-alpha composition equation. + /// + public readonly struct DifferenceXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DifferenceXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DifferenceXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DifferenceXor(background, source, amount); + } + + /// + /// Applies the "ExclusionXor" straight-alpha composition equation. + /// + public readonly struct ExclusionXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ExclusionXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ExclusionXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ExclusionXor(background, source, amount); + } + + /// + /// Applies the "HueXor" straight-alpha composition equation. + /// + public readonly struct HueXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HueXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HueXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HueXor(background, source, amount); + } + + /// + /// Applies the "SaturationXor" straight-alpha composition equation. + /// + public readonly struct SaturationXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SaturationXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SaturationXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SaturationXor(background, source, amount); + } + + /// + /// Applies the "ColorXor" straight-alpha composition equation. + /// + public readonly struct ColorXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorXor(background, source, amount); + } + + /// + /// Applies the "LuminosityXor" straight-alpha composition equation. + /// + public readonly struct LuminosityXor : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LuminosityXor(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LuminosityXor(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LuminosityXor(background, source, amount); + } + + /// + /// Applies the "NormalPlus" straight-alpha composition equation. + /// + public readonly struct NormalPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.NormalPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.NormalPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.NormalPlus(background, source, amount); + } + + /// + /// Applies the "MultiplyPlus" straight-alpha composition equation. + /// + public readonly struct MultiplyPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.MultiplyPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.MultiplyPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.MultiplyPlus(background, source, amount); + } + + /// + /// Applies the "AddPlus" straight-alpha composition equation. + /// + public readonly struct AddPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.AddPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.AddPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.AddPlus(background, source, amount); + } + + /// + /// Applies the "SubtractPlus" straight-alpha composition equation. + /// + public readonly struct SubtractPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SubtractPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SubtractPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SubtractPlus(background, source, amount); + } + + /// + /// Applies the "ScreenPlus" straight-alpha composition equation. + /// + public readonly struct ScreenPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ScreenPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ScreenPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ScreenPlus(background, source, amount); + } + + /// + /// Applies the "DarkenPlus" straight-alpha composition equation. + /// + public readonly struct DarkenPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DarkenPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DarkenPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DarkenPlus(background, source, amount); + } + + /// + /// Applies the "LightenPlus" straight-alpha composition equation. + /// + public readonly struct LightenPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LightenPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LightenPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LightenPlus(background, source, amount); + } + + /// + /// Applies the "OverlayPlus" straight-alpha composition equation. + /// + public readonly struct OverlayPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.OverlayPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.OverlayPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.OverlayPlus(background, source, amount); + } + + /// + /// Applies the "HardLightPlus" straight-alpha composition equation. + /// + public readonly struct HardLightPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HardLightPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HardLightPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HardLightPlus(background, source, amount); + } + + /// + /// Applies the "ColorDodgePlus" straight-alpha composition equation. + /// + public readonly struct ColorDodgePlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorDodgePlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorDodgePlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorDodgePlus(background, source, amount); + } + + /// + /// Applies the "ColorBurnPlus" straight-alpha composition equation. + /// + public readonly struct ColorBurnPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorBurnPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorBurnPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorBurnPlus(background, source, amount); + } + + /// + /// Applies the "SoftLightPlus" straight-alpha composition equation. + /// + public readonly struct SoftLightPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SoftLightPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SoftLightPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SoftLightPlus(background, source, amount); + } + + /// + /// Applies the "DifferencePlus" straight-alpha composition equation. + /// + public readonly struct DifferencePlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.DifferencePlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.DifferencePlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.DifferencePlus(background, source, amount); + } + + /// + /// Applies the "ExclusionPlus" straight-alpha composition equation. + /// + public readonly struct ExclusionPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ExclusionPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ExclusionPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ExclusionPlus(background, source, amount); + } + + /// + /// Applies the "HuePlus" straight-alpha composition equation. + /// + public readonly struct HuePlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.HuePlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.HuePlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.HuePlus(background, source, amount); + } + + /// + /// Applies the "SaturationPlus" straight-alpha composition equation. + /// + public readonly struct SaturationPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.SaturationPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.SaturationPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.SaturationPlus(background, source, amount); + } + + /// + /// Applies the "ColorPlus" straight-alpha composition equation. + /// + public readonly struct ColorPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.ColorPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.ColorPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.ColorPlus(background, source, amount); + } + + /// + /// Applies the "LuminosityPlus" straight-alpha composition equation. + /// + public readonly struct LuminosityPlus : IPixelBlenderOperator + { + /// + public static bool IsAssociatedAlpha => false; + + /// + public static Vector4 Invoke(Vector4 background, Vector4 source, float amount) + => PorterDuffFunctions.LuminosityPlus(background, source, amount); + + /// + public static Vector256 Invoke(Vector256 background, Vector256 source, Vector256 amount) + => PorterDuffFunctions.LuminosityPlus(background, source, amount); + + /// + public static Vector512 Invoke(Vector512 background, Vector512 source, Vector512 amount) + => PorterDuffFunctions.LuminosityPlus(background, source, amount); + } + +} + +/// +/// Provides straight-alpha pixel blenders for each color and alpha composition pair. +/// +/// The destination pixel format. +internal static class DefaultPixelBlenders + where TPixel : unmanaged, IPixel +{ + /// + /// Gets the shared blender for the "NormalSrc" composition equation. + /// + public static PixelBlender NormalSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "MultiplySrc" composition equation. + /// + public static PixelBlender MultiplySrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "AddSrc" composition equation. + /// + public static PixelBlender AddSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SubtractSrc" composition equation. + /// + public static PixelBlender SubtractSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ScreenSrc" composition equation. + /// + public static PixelBlender ScreenSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DarkenSrc" composition equation. + /// public static PixelBlender DarkenSrc => PixelBlender.Instance; /// @@ -2334,6 +4980,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightSrc => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrc" composition equation. + /// + public static PixelBlender ColorDodgeSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrc" composition equation. + /// + public static PixelBlender ColorBurnSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrc" composition equation. + /// + public static PixelBlender SoftLightSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrc" composition equation. + /// + public static PixelBlender DifferenceSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrc" composition equation. + /// + public static PixelBlender ExclusionSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrc" composition equation. + /// + public static PixelBlender HueSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrc" composition equation. + /// + public static PixelBlender SaturationSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrc" composition equation. + /// + public static PixelBlender ColorSrc => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrc" composition equation. + /// + public static PixelBlender LuminositySrc => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcAtop" composition equation. /// @@ -2379,6 +5070,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightSrcAtop => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrcAtop" composition equation. + /// + public static PixelBlender ColorDodgeSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcAtop" composition equation. + /// + public static PixelBlender ColorBurnSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcAtop" composition equation. + /// + public static PixelBlender SoftLightSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrcAtop" composition equation. + /// + public static PixelBlender DifferenceSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrcAtop" composition equation. + /// + public static PixelBlender ExclusionSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrcAtop" composition equation. + /// + public static PixelBlender HueSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrcAtop" composition equation. + /// + public static PixelBlender SaturationSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrcAtop" composition equation. + /// + public static PixelBlender ColorSrcAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrcAtop" composition equation. + /// + public static PixelBlender LuminositySrcAtop => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcOver" composition equation. /// @@ -2424,6 +5160,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightSrcOver => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrcOver" composition equation. + /// + public static PixelBlender ColorDodgeSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcOver" composition equation. + /// + public static PixelBlender ColorBurnSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcOver" composition equation. + /// + public static PixelBlender SoftLightSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrcOver" composition equation. + /// + public static PixelBlender DifferenceSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrcOver" composition equation. + /// + public static PixelBlender ExclusionSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrcOver" composition equation. + /// + public static PixelBlender HueSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrcOver" composition equation. + /// + public static PixelBlender SaturationSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrcOver" composition equation. + /// + public static PixelBlender ColorSrcOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrcOver" composition equation. + /// + public static PixelBlender LuminositySrcOver => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcIn" composition equation. /// @@ -2469,6 +5250,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightSrcIn => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeSrcIn" composition equation. + /// + public static PixelBlender ColorDodgeSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcIn" composition equation. + /// + public static PixelBlender ColorBurnSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcIn" composition equation. + /// + public static PixelBlender SoftLightSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceSrcIn" composition equation. + /// + public static PixelBlender DifferenceSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionSrcIn" composition equation. + /// + public static PixelBlender ExclusionSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueSrcIn" composition equation. + /// + public static PixelBlender HueSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationSrcIn" composition equation. + /// + public static PixelBlender SaturationSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorSrcIn" composition equation. + /// + public static PixelBlender ColorSrcIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminositySrcIn" composition equation. + /// + public static PixelBlender LuminositySrcIn => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalSrcOut" composition equation. /// @@ -2482,37 +5308,82 @@ internal static class DefaultPixelBlenders /// /// Gets the shared blender for the "AddSrcOut" composition equation. /// - public static PixelBlender AddSrcOut => PixelBlender.Instance; + public static PixelBlender AddSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SubtractSrcOut" composition equation. + /// + public static PixelBlender SubtractSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ScreenSrcOut" composition equation. + /// + public static PixelBlender ScreenSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DarkenSrcOut" composition equation. + /// + public static PixelBlender DarkenSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LightenSrcOut" composition equation. + /// + public static PixelBlender LightenSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "OverlaySrcOut" composition equation. + /// + public static PixelBlender OverlaySrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HardLightSrcOut" composition equation. + /// + public static PixelBlender HardLightSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDodgeSrcOut" composition equation. + /// + public static PixelBlender ColorDodgeSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnSrcOut" composition equation. + /// + public static PixelBlender ColorBurnSrcOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightSrcOut" composition equation. + /// + public static PixelBlender SoftLightSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "SubtractSrcOut" composition equation. + /// Gets the shared blender for the "DifferenceSrcOut" composition equation. /// - public static PixelBlender SubtractSrcOut => PixelBlender.Instance; + public static PixelBlender DifferenceSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "ScreenSrcOut" composition equation. + /// Gets the shared blender for the "ExclusionSrcOut" composition equation. /// - public static PixelBlender ScreenSrcOut => PixelBlender.Instance; + public static PixelBlender ExclusionSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "DarkenSrcOut" composition equation. + /// Gets the shared blender for the "HueSrcOut" composition equation. /// - public static PixelBlender DarkenSrcOut => PixelBlender.Instance; + public static PixelBlender HueSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "LightenSrcOut" composition equation. + /// Gets the shared blender for the "SaturationSrcOut" composition equation. /// - public static PixelBlender LightenSrcOut => PixelBlender.Instance; + public static PixelBlender SaturationSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "OverlaySrcOut" composition equation. + /// Gets the shared blender for the "ColorSrcOut" composition equation. /// - public static PixelBlender OverlaySrcOut => PixelBlender.Instance; + public static PixelBlender ColorSrcOut => PixelBlender.Instance; /// - /// Gets the shared blender for the "HardLightSrcOut" composition equation. + /// Gets the shared blender for the "LuminositySrcOut" composition equation. /// - public static PixelBlender HardLightSrcOut => PixelBlender.Instance; + public static PixelBlender LuminositySrcOut => PixelBlender.Instance; /// /// Gets the shared blender for the "NormalDest" composition equation. @@ -2559,6 +5430,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightDest => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDest" composition equation. + /// + public static PixelBlender ColorDodgeDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDest" composition equation. + /// + public static PixelBlender ColorBurnDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDest" composition equation. + /// + public static PixelBlender SoftLightDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDest" composition equation. + /// + public static PixelBlender DifferenceDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDest" composition equation. + /// + public static PixelBlender ExclusionDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDest" composition equation. + /// + public static PixelBlender HueDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDest" composition equation. + /// + public static PixelBlender SaturationDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDest" composition equation. + /// + public static PixelBlender ColorDest => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDest" composition equation. + /// + public static PixelBlender LuminosityDest => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestAtop" composition equation. /// @@ -2604,6 +5520,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightDestAtop => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestAtop" composition equation. + /// + public static PixelBlender ColorDodgeDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestAtop" composition equation. + /// + public static PixelBlender ColorBurnDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestAtop" composition equation. + /// + public static PixelBlender SoftLightDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestAtop" composition equation. + /// + public static PixelBlender DifferenceDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestAtop" composition equation. + /// + public static PixelBlender ExclusionDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestAtop" composition equation. + /// + public static PixelBlender HueDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestAtop" composition equation. + /// + public static PixelBlender SaturationDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestAtop" composition equation. + /// + public static PixelBlender ColorDestAtop => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestAtop" composition equation. + /// + public static PixelBlender LuminosityDestAtop => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestOver" composition equation. /// @@ -2649,6 +5610,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightDestOver => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestOver" composition equation. + /// + public static PixelBlender ColorDodgeDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestOver" composition equation. + /// + public static PixelBlender ColorBurnDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestOver" composition equation. + /// + public static PixelBlender SoftLightDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestOver" composition equation. + /// + public static PixelBlender DifferenceDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestOver" composition equation. + /// + public static PixelBlender ExclusionDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestOver" composition equation. + /// + public static PixelBlender HueDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestOver" composition equation. + /// + public static PixelBlender SaturationDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestOver" composition equation. + /// + public static PixelBlender ColorDestOver => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestOver" composition equation. + /// + public static PixelBlender LuminosityDestOver => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestIn" composition equation. /// @@ -2694,6 +5700,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightDestIn => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestIn" composition equation. + /// + public static PixelBlender ColorDodgeDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestIn" composition equation. + /// + public static PixelBlender ColorBurnDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestIn" composition equation. + /// + public static PixelBlender SoftLightDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestIn" composition equation. + /// + public static PixelBlender DifferenceDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestIn" composition equation. + /// + public static PixelBlender ExclusionDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestIn" composition equation. + /// + public static PixelBlender HueDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestIn" composition equation. + /// + public static PixelBlender SaturationDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestIn" composition equation. + /// + public static PixelBlender ColorDestIn => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestIn" composition equation. + /// + public static PixelBlender LuminosityDestIn => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalDestOut" composition equation. /// @@ -2739,6 +5790,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightDestOut => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeDestOut" composition equation. + /// + public static PixelBlender ColorDodgeDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnDestOut" composition equation. + /// + public static PixelBlender ColorBurnDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightDestOut" composition equation. + /// + public static PixelBlender SoftLightDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceDestOut" composition equation. + /// + public static PixelBlender DifferenceDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionDestOut" composition equation. + /// + public static PixelBlender ExclusionDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueDestOut" composition equation. + /// + public static PixelBlender HueDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationDestOut" composition equation. + /// + public static PixelBlender SaturationDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDestOut" composition equation. + /// + public static PixelBlender ColorDestOut => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityDestOut" composition equation. + /// + public static PixelBlender LuminosityDestOut => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalClear" composition equation. /// @@ -2784,6 +5880,51 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightClear => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeClear" composition equation. + /// + public static PixelBlender ColorDodgeClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnClear" composition equation. + /// + public static PixelBlender ColorBurnClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightClear" composition equation. + /// + public static PixelBlender SoftLightClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceClear" composition equation. + /// + public static PixelBlender DifferenceClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionClear" composition equation. + /// + public static PixelBlender ExclusionClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueClear" composition equation. + /// + public static PixelBlender HueClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationClear" composition equation. + /// + public static PixelBlender SaturationClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorClear" composition equation. + /// + public static PixelBlender ColorClear => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityClear" composition equation. + /// + public static PixelBlender LuminosityClear => PixelBlender.Instance; + /// /// Gets the shared blender for the "NormalXor" composition equation. /// @@ -2829,4 +5970,139 @@ internal static class DefaultPixelBlenders /// public static PixelBlender HardLightXor => PixelBlender.Instance; + /// + /// Gets the shared blender for the "ColorDodgeXor" composition equation. + /// + public static PixelBlender ColorDodgeXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnXor" composition equation. + /// + public static PixelBlender ColorBurnXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightXor" composition equation. + /// + public static PixelBlender SoftLightXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferenceXor" composition equation. + /// + public static PixelBlender DifferenceXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionXor" composition equation. + /// + public static PixelBlender ExclusionXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HueXor" composition equation. + /// + public static PixelBlender HueXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationXor" composition equation. + /// + public static PixelBlender SaturationXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorXor" composition equation. + /// + public static PixelBlender ColorXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityXor" composition equation. + /// + public static PixelBlender LuminosityXor => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "NormalPlus" composition equation. + /// + public static PixelBlender NormalPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "MultiplyPlus" composition equation. + /// + public static PixelBlender MultiplyPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "AddPlus" composition equation. + /// + public static PixelBlender AddPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SubtractPlus" composition equation. + /// + public static PixelBlender SubtractPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ScreenPlus" composition equation. + /// + public static PixelBlender ScreenPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DarkenPlus" composition equation. + /// + public static PixelBlender DarkenPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LightenPlus" composition equation. + /// + public static PixelBlender LightenPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "OverlayPlus" composition equation. + /// + public static PixelBlender OverlayPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HardLightPlus" composition equation. + /// + public static PixelBlender HardLightPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorDodgePlus" composition equation. + /// + public static PixelBlender ColorDodgePlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorBurnPlus" composition equation. + /// + public static PixelBlender ColorBurnPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SoftLightPlus" composition equation. + /// + public static PixelBlender SoftLightPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "DifferencePlus" composition equation. + /// + public static PixelBlender DifferencePlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ExclusionPlus" composition equation. + /// + public static PixelBlender ExclusionPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "HuePlus" composition equation. + /// + public static PixelBlender HuePlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "SaturationPlus" composition equation. + /// + public static PixelBlender SaturationPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "ColorPlus" composition equation. + /// + public static PixelBlender ColorPlus => PixelBlender.Instance; + + /// + /// Gets the shared blender for the "LuminosityPlus" composition equation. + /// + public static PixelBlender LuminosityPlus => PixelBlender.Instance; + } diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt index e9bdbaf3c..8dc9fe564 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt +++ b/src/ImageSharp/PixelFormats/PixelBlenders/DefaultPixelBlenders.Generated.tt @@ -29,6 +29,7 @@ var composers = new [] "DestOut", "Clear", "Xor", + "Plus", }; var blenders = new [] @@ -42,6 +43,15 @@ var blenders = new [] "Lighten", "Overlay", "HardLight", + "ColorDodge", + "ColorBurn", + "SoftLight", + "Difference", + "Exclusion", + "Hue", + "Saturation", + "Color", + "Luminosity", }; #> /// diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs index 262370cd5..138249fbd 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.cs @@ -454,6 +454,51 @@ internal static partial class PorterDuffFunctions public static Vector512 NormalXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "NormalPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 NormalPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Normal(backdrop, source)); + } + + /// + /// Returns the result of the "NormalPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 NormalPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Normal(backdrop, source)); + } + + /// + /// Returns the result of the "NormalPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 NormalPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Normal(backdrop, source)); + } + /// /// Returns the result of the "NormalClear" compositing equation. /// @@ -684,6 +729,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(NormalXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "NormalPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel NormalPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(NormalPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "MultiplySrc" compositing equation. /// @@ -1125,6 +1186,51 @@ internal static partial class PorterDuffFunctions public static Vector512 MultiplyXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "MultiplyPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 MultiplyPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Multiply(backdrop, source)); + } + + /// + /// Returns the result of the "MultiplyPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 MultiplyPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Multiply(backdrop, source)); + } + + /// + /// Returns the result of the "MultiplyPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 MultiplyPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Multiply(backdrop, source)); + } + /// /// Returns the result of the "MultiplyClear" compositing equation. /// @@ -1355,6 +1461,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(MultiplyXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "MultiplyPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel MultiplyPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(MultiplyPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "AddSrc" compositing equation. /// @@ -1796,6 +1918,51 @@ internal static partial class PorterDuffFunctions public static Vector512 AddXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "AddPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 AddPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Add(backdrop, source)); + } + + /// + /// Returns the result of the "AddPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 AddPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Add(backdrop, source)); + } + + /// + /// Returns the result of the "AddPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 AddPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Add(backdrop, source)); + } + /// /// Returns the result of the "AddClear" compositing equation. /// @@ -2026,6 +2193,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(AddXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "AddPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel AddPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(AddPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "SubtractSrc" compositing equation. /// @@ -2467,6 +2650,51 @@ internal static partial class PorterDuffFunctions public static Vector512 SubtractXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "SubtractPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SubtractPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Subtract(backdrop, source)); + } + + /// + /// Returns the result of the "SubtractPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SubtractPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Subtract(backdrop, source)); + } + + /// + /// Returns the result of the "SubtractPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SubtractPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Subtract(backdrop, source)); + } + /// /// Returns the result of the "SubtractClear" compositing equation. /// @@ -2697,6 +2925,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(SubtractXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "SubtractPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SubtractPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SubtractPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "ScreenSrc" compositing equation. /// @@ -3138,6 +3382,51 @@ internal static partial class PorterDuffFunctions public static Vector512 ScreenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "ScreenPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ScreenPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Screen(backdrop, source)); + } + + /// + /// Returns the result of the "ScreenPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ScreenPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Screen(backdrop, source)); + } + + /// + /// Returns the result of the "ScreenPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ScreenPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Screen(backdrop, source)); + } + /// /// Returns the result of the "ScreenClear" compositing equation. /// @@ -3368,6 +3657,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(ScreenXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "ScreenPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ScreenPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ScreenPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "DarkenSrc" compositing equation. /// @@ -3810,33 +4115,78 @@ internal static partial class PorterDuffFunctions => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); /// - /// Returns the result of the "DarkenClear" compositing equation. + /// Returns the result of the "DarkenPlus" compositing equation. /// /// The backdrop vector. /// The source vector. /// The source opacity. Range 0..1 /// The . [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector4 DarkenClear(Vector4 backdrop, Vector4 source, float opacity) + public static Vector4 DarkenPlus(Vector4 backdrop, Vector4 source, float opacity) { source = Numerics.WithW(source, source * opacity); - return Clear(backdrop, source); + return Plus(backdrop, source, Darken(backdrop, source)); } /// - /// Returns the result of the "DarkenClear" compositing equation. + /// Returns the result of the "DarkenPlus" compositing equation. /// /// The backdrop vector. /// The source vector. /// The source opacity. Range 0..1 /// The . [MethodImpl(MethodImplOptions.AggressiveInlining)] - public static Vector256 DarkenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) - => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + public static Vector256 DarkenPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Darken(backdrop, source)); + } /// - /// Returns the result of the "DarkenClear" compositing equation. + /// Returns the result of the "DarkenPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DarkenPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Darken(backdrop, source)); + } + + /// + /// Returns the result of the "DarkenClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DarkenClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "DarkenClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DarkenClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "DarkenClear" compositing equation. /// /// The backdrop vector. /// The source vector. @@ -4039,6 +4389,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(DarkenXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "DarkenPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DarkenPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DarkenPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "LightenSrc" compositing equation. /// @@ -4480,6 +4846,51 @@ internal static partial class PorterDuffFunctions public static Vector512 LightenXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "LightenPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LightenPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Lighten(backdrop, source)); + } + + /// + /// Returns the result of the "LightenPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LightenPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Lighten(backdrop, source)); + } + + /// + /// Returns the result of the "LightenPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LightenPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Lighten(backdrop, source)); + } + /// /// Returns the result of the "LightenClear" compositing equation. /// @@ -4710,6 +5121,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(LightenXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "LightenPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LightenPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LightenPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "OverlaySrc" compositing equation. /// @@ -5151,6 +5578,51 @@ internal static partial class PorterDuffFunctions public static Vector512 OverlayXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "OverlayPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 OverlayPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Overlay(backdrop, source)); + } + + /// + /// Returns the result of the "OverlayPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 OverlayPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Overlay(backdrop, source)); + } + + /// + /// Returns the result of the "OverlayPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 OverlayPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Overlay(backdrop, source)); + } + /// /// Returns the result of the "OverlayClear" compositing equation. /// @@ -5381,6 +5853,22 @@ internal static partial class PorterDuffFunctions return TPixel.FromUnassociatedScaledVector4(OverlayXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + /// + /// Returns the result of the "OverlayPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel OverlayPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(OverlayPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + /// /// Returns the result of the "HardLightSrc" compositing equation. /// @@ -5822,6 +6310,51 @@ internal static partial class PorterDuffFunctions public static Vector512 HardLightXor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "HardLightPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HardLightPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, HardLight(backdrop, source)); + } + + /// + /// Returns the result of the "HardLightPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HardLightPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, HardLight(backdrop, source)); + } + + /// + /// Returns the result of the "HardLightPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HardLightPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, HardLight(backdrop, source)); + } + /// /// Returns the result of the "HardLightClear" compositing equation. /// @@ -6051,4 +6584,6608 @@ internal static partial class PorterDuffFunctions opacity = Numerics.Clamp(opacity, 0, 1); return TPixel.FromUnassociatedScaledVector4(HardLightXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); } + + /// + /// Returns the result of the "HardLightPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HardLightPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HardLightPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "ColorDodgeSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "ColorDodgeSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "ColorDodgeSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgeSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgeSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgeSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgeSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgeSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgeSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "ColorDodgeSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorDodgeSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorDodgeSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "ColorDodgeSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorDodgeSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorDodgeDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorDodgeDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorDodgeDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorDodgeDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDodgeDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDodgeDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDodgeDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDodgeDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDodgeDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, ColorDodge(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDodgeDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "ColorDodgeDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ColorDodgeDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ColorDodgeDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "ColorDodgeDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ColorDodgeDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ColorDodgeXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "ColorDodgeXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorDodgeXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorDodgePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgePlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgePlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgePlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, ColorDodge(backdrop, source)); + } + + /// + /// Returns the result of the "ColorDodgeClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodgeClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "ColorDodgeClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodgeClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorDodgeClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodgeClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "ColorDodgeSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgeXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgeXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgeXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDodgePlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDodgePlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDodgePlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "ColorBurnSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "ColorBurnSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "ColorBurnSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "ColorBurnSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorBurnSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorBurnSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "ColorBurnSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorBurnSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorBurnDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorBurnDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorBurnDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorBurnDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the result of the "ColorBurnDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the result of the "ColorBurnDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the result of the "ColorBurnDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the result of the "ColorBurnDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the result of the "ColorBurnDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, ColorBurn(source, backdrop)); + } + + /// + /// Returns the result of the "ColorBurnDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "ColorBurnDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ColorBurnDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ColorBurnDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "ColorBurnDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ColorBurnDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ColorBurnXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "ColorBurnXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorBurnXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorBurnPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, ColorBurn(backdrop, source)); + } + + /// + /// Returns the result of the "ColorBurnClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurnClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "ColorBurnClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurnClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorBurnClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurnClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "ColorBurnSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorBurnPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorBurnPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorBurnPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "SoftLightSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "SoftLightSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "SoftLightSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "SoftLightSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SoftLightSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "SoftLightSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "SoftLightSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SoftLightSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "SoftLightDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "SoftLightDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "SoftLightDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "SoftLightDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the result of the "SoftLightDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the result of the "SoftLightDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the result of the "SoftLightDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the result of the "SoftLightDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the result of the "SoftLightDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, SoftLight(source, backdrop)); + } + + /// + /// Returns the result of the "SoftLightDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "SoftLightDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "SoftLightDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "SoftLightDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "SoftLightDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "SoftLightDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "SoftLightXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "SoftLightXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SoftLightXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "SoftLightPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, SoftLight(backdrop, source)); + } + + /// + /// Returns the result of the "SoftLightClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLightClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "SoftLightClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLightClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SoftLightClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLightClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "SoftLightSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SoftLightPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SoftLightPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SoftLightPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "DifferenceSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "DifferenceSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "DifferenceSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferenceSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferenceSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferenceSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferenceSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferenceSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferenceSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "DifferenceSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "DifferenceSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "DifferenceSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "DifferenceSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "DifferenceSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "DifferenceDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "DifferenceDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "DifferenceDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "DifferenceDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the result of the "DifferenceDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the result of the "DifferenceDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the result of the "DifferenceDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the result of the "DifferenceDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the result of the "DifferenceDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, Difference(source, backdrop)); + } + + /// + /// Returns the result of the "DifferenceDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "DifferenceDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "DifferenceDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "DifferenceDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "DifferenceDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "DifferenceDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "DifferenceXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "DifferenceXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "DifferenceXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "DifferencePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferencePlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferencePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferencePlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferencePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferencePlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Difference(backdrop, source)); + } + + /// + /// Returns the result of the "DifferenceClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 DifferenceClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "DifferenceClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 DifferenceClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "DifferenceClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 DifferenceClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "DifferenceSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferenceXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferenceXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferenceXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "DifferencePlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel DifferencePlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(DifferencePlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "ExclusionSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "ExclusionSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "ExclusionSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "ExclusionSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ExclusionSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ExclusionSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "ExclusionSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ExclusionSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ExclusionDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ExclusionDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ExclusionDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ExclusionDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the result of the "ExclusionDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the result of the "ExclusionDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the result of the "ExclusionDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the result of the "ExclusionDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the result of the "ExclusionDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, Exclusion(source, backdrop)); + } + + /// + /// Returns the result of the "ExclusionDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "ExclusionDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ExclusionDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ExclusionDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "ExclusionDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ExclusionDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ExclusionXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "ExclusionXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ExclusionXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ExclusionPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Exclusion(backdrop, source)); + } + + /// + /// Returns the result of the "ExclusionClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ExclusionClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "ExclusionClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ExclusionClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ExclusionClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ExclusionClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "ExclusionSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ExclusionPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ExclusionPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ExclusionPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "HueSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "HueSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "HueSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HueSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HueSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HueSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HueSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HueSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HueSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "HueSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "HueSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "HueSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "HueSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "HueSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "HueDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "HueDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "HueDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "HueDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the result of the "HueDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the result of the "HueDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the result of the "HueDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the result of the "HueDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the result of the "HueDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, Hue(source, backdrop)); + } + + /// + /// Returns the result of the "HueDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "HueDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "HueDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "HueDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "HueDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "HueDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "HueXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "HueXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "HueXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "HuePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HuePlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HuePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HuePlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HuePlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HuePlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Hue(backdrop, source)); + } + + /// + /// Returns the result of the "HueClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 HueClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "HueClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 HueClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "HueClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 HueClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "HueSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HueXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HueXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HueXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "HuePlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel HuePlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(HuePlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "SaturationSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "SaturationSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "SaturationSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "SaturationSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SaturationSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "SaturationSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "SaturationSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SaturationSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "SaturationDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "SaturationDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "SaturationDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "SaturationDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the result of the "SaturationDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the result of the "SaturationDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the result of the "SaturationDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the result of the "SaturationDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the result of the "SaturationDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, Saturation(source, backdrop)); + } + + /// + /// Returns the result of the "SaturationDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "SaturationDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "SaturationDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "SaturationDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "SaturationDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "SaturationDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "SaturationXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "SaturationXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SaturationXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "SaturationPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Saturation(backdrop, source)); + } + + /// + /// Returns the result of the "SaturationClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SaturationClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "SaturationClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SaturationClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "SaturationClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SaturationClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "SaturationSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "SaturationPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel SaturationPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(SaturationPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorSrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorSrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "ColorSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorSrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "ColorSrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorSrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "ColorSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorSrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorSrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorSrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorSrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorSrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorSrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorSrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorSrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorSrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "ColorSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorSrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorSrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorSrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorSrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "ColorSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorSrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorSrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorSrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "ColorDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, Color(source, backdrop)); + } + + /// + /// Returns the result of the "ColorDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "ColorDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ColorDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ColorDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "ColorDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "ColorDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "ColorXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "ColorXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "ColorPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Color(backdrop, source)); + } + + /// + /// Returns the result of the "ColorClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "ColorClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "ColorClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "ColorSrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorSrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorSrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorSrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorSrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorSrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorSrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorSrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorSrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorSrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorSrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorSrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorSrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorSrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorSrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "ColorPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel ColorPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(ColorPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminositySrc" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminositySrc(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return source; + } + + /// + /// Returns the result of the "LuminositySrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminositySrc(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Avx.Blend(source, source * opacity, BlendAlphaControl); + + /// + /// Returns the result of the "LuminositySrc compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminositySrc(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + /// + /// Returns the result of the "LuminositySrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminositySrcAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminositySrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminositySrcAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminositySrcAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminositySrcAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminositySrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminositySrcOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminositySrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminositySrcOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminositySrcOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminositySrcOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminositySrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminositySrcIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(backdrop, source); + } + + /// + /// Returns the result of the "LuminositySrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminositySrcIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "LuminositySrcIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminositySrcIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "LuminositySrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminositySrcOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(backdrop, source); + } + + /// + /// Returns the result of the "LuminositySrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminositySrcOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "LuminositySrcOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminositySrcOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "LuminosityDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDest(Vector4 backdrop, Vector4 source, float opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "LuminosityDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDest(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "LuminosityDest" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDest(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + return backdrop; + } + + /// + /// Returns the result of the "LuminosityDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestAtop(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Atop(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the result of the "LuminosityDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestAtop(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Atop(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the result of the "LuminosityDestAtop" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestAtop(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Atop(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the result of the "LuminosityDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestOver(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Over(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the result of the "LuminosityDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestOver(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Over(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the result of the "LuminosityDestOver" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestOver(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Over(source, backdrop, Luminosity(source, backdrop)); + } + + /// + /// Returns the result of the "LuminosityDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestIn(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return In(source, backdrop); + } + + /// + /// Returns the result of the "LuminosityDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestIn(Vector256 backdrop, Vector256 source, Vector256 opacity) + => In(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "LuminosityDestIn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestIn(Vector512 backdrop, Vector512 source, Vector512 opacity) + => In(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "LuminosityDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityDestOut(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Out(source, backdrop); + } + + /// + /// Returns the result of the "LuminosityDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityDestOut(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Out(Avx.Blend(source, source * opacity, BlendAlphaControl), backdrop); + + /// + /// Returns the result of the "LuminosityDestOut" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityDestOut(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Out(Avx512F.BlendVariable(source, source * opacity, AlphaMask512()), backdrop); + + /// + /// Returns the result of the "LuminosityXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityXor(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Xor(backdrop, source); + } + + /// + /// Returns the result of the "LuminosityXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityXor(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Xor(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "LuminosityXor" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityXor(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + /// + /// Returns the result of the "LuminosityPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityPlus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminosityPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityPlus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminosityPlus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityPlus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, Luminosity(backdrop, source)); + } + + /// + /// Returns the result of the "LuminosityClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 LuminosityClear(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Clear(backdrop, source); + } + + /// + /// Returns the result of the "LuminosityClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 LuminosityClear(Vector256 backdrop, Vector256 source, Vector256 opacity) + => Clear(backdrop, Avx.Blend(source, source * opacity, BlendAlphaControl)); + + /// + /// Returns the result of the "LuminosityClear" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 LuminosityClear(Vector512 backdrop, Vector512 source, Vector512 opacity) + => Clear(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + + + /// + /// Returns the result of the "LuminositySrc" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminositySrc(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminositySrc(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminositySrcAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminositySrcAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminositySrcAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminositySrcOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminositySrcOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminositySrcOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminositySrcIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminositySrcIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminositySrcIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminositySrcOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminositySrcOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminositySrcOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityDest" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityDest(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityDest(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityDestAtop" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityDestAtop(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityDestAtop(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityDestOver" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityDestOver(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityDestOver(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityDestIn" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityDestIn(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityDestIn(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityDestOut" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityDestOut(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityDestOut(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityClear" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityClear(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityClear(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityXor" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityXor(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityXor(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } + + /// + /// Returns the result of the "LuminosityPlus" compositing equation. + /// + /// The pixel format. + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static TPixel LuminosityPlus(TPixel backdrop, TPixel source, float opacity) + where TPixel : unmanaged, IPixel + { + opacity = Numerics.Clamp(opacity, 0, 1); + return TPixel.FromUnassociatedScaledVector4(LuminosityPlus(backdrop.ToUnassociatedScaledVector4(), source.ToUnassociatedScaledVector4(), opacity)); + } } diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt index 8837a90a3..3ee0e133c 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt +++ b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.Generated.tt @@ -464,6 +464,51 @@ internal static partial class PorterDuffFunctions public static Vector512 <#=blender#>Xor(Vector512 backdrop, Vector512 source, Vector512 opacity) => Xor(backdrop, Avx512F.BlendVariable(source, source * opacity, AlphaMask512())); + /// + /// Returns the result of the "<#=blender#>Plus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 <#=blender#>Plus(Vector4 backdrop, Vector4 source, float opacity) + { + source = Numerics.WithW(source, source * opacity); + + return Plus(backdrop, source, <#=blender#>(backdrop, source)); + } + + /// + /// Returns the result of the "<#=blender#>Plus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 <#=blender#>Plus(Vector256 backdrop, Vector256 source, Vector256 opacity) + { + source = Avx.Blend(source, source * opacity, BlendAlphaControl); + + return Plus(backdrop, source, <#=blender#>(backdrop, source)); + } + + /// + /// Returns the result of the "<#=blender#>Plus" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The source opacity. Range 0..1 + /// The . + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 <#=blender#>Plus(Vector512 backdrop, Vector512 source, Vector512 opacity) + { + source = Avx512F.BlendVariable(source, source * opacity, AlphaMask512()); + + return Plus(backdrop, source, <#=blender#>(backdrop, source)); + } + /// /// Returns the result of the "<#=blender#>Clear" compositing equation. /// @@ -535,6 +580,7 @@ var composers = new []{ "DestOut", "Clear", "Xor", + "Plus", }; var blenders = new []{ @@ -546,7 +592,16 @@ var blenders = new []{ "Darken", "Lighten", "Overlay", - "HardLight" + "HardLight", + "ColorDodge", + "ColorBurn", + "SoftLight", + "Difference", + "Exclusion", + "Hue", + "Saturation", + "Color", + "Luminosity", }; foreach(var blender in blenders) diff --git a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs index 46d97ad3d..4b048a6f4 100644 --- a/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs +++ b/src/ImageSharp/PixelFormats/PixelBlenders/PorterDuffFunctions.cs @@ -324,6 +324,252 @@ internal static partial class PorterDuffFunctions return Vector512.Min(Vector512.Create(1F), Vector512.ConditionalSelect(AlphaMask512(), Vector512.Zero, color)); } + /// + /// Returns the result of the "ColorDodge" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorDodge(Vector4 backdrop, Vector4 source) + => new( + ColorDodgeValue(backdrop.X, source.X), + ColorDodgeValue(backdrop.Y, source.Y), + ColorDodgeValue(backdrop.Z, source.Z), + 0F); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorDodge(Vector256 backdrop, Vector256 source) + { + Vector256 one = Vector256.Create(1F); + Vector256 result = Vector256.Min(one, backdrop / (one - source)); + + // The explicit singular cases avoid the undefined 0 / 0 result while preserving the order required by the specification. + result = Avx.BlendVariable(result, one, Avx.CompareEqual(source, one)); + result = Avx.BlendVariable(result, Vector256.Zero, Avx.CompareEqual(backdrop, Vector256.Zero)); + return Avx.Blend(result, Vector256.Zero, BlendAlphaControl); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorDodge(Vector512 backdrop, Vector512 source) + { + Vector512 one = Vector512.Create(1F); + Vector512 result = Vector512.Min(one, backdrop / (one - source)); + result = Vector512.ConditionalSelect(Vector512.Equals(source, one), one, result); + result = Vector512.ConditionalSelect(Vector512.Equals(backdrop, Vector512.Zero), Vector512.Zero, result); + return Vector512.ConditionalSelect(AlphaMask512(), Vector512.Zero, result); + } + + /// + /// Returns the result of the "ColorBurn" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 ColorBurn(Vector4 backdrop, Vector4 source) + => new( + ColorBurnValue(backdrop.X, source.X), + ColorBurnValue(backdrop.Y, source.Y), + ColorBurnValue(backdrop.Z, source.Z), + 0F); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 ColorBurn(Vector256 backdrop, Vector256 source) + { + Vector256 one = Vector256.Create(1F); + Vector256 result = one - Vector256.Min(one, (one - backdrop) / source); + + // As with ColorDodge, resolve the branch singularities explicitly so transparent lanes never produce NaN. + result = Avx.BlendVariable(result, Vector256.Zero, Avx.CompareEqual(source, Vector256.Zero)); + result = Avx.BlendVariable(result, one, Avx.CompareEqual(backdrop, one)); + return Avx.Blend(result, Vector256.Zero, BlendAlphaControl); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 ColorBurn(Vector512 backdrop, Vector512 source) + { + Vector512 one = Vector512.Create(1F); + Vector512 result = one - Vector512.Min(one, (one - backdrop) / source); + result = Vector512.ConditionalSelect(Vector512.Equals(source, Vector512.Zero), Vector512.Zero, result); + result = Vector512.ConditionalSelect(Vector512.Equals(backdrop, one), one, result); + return Vector512.ConditionalSelect(AlphaMask512(), Vector512.Zero, result); + } + + /// + /// Returns the result of the "SoftLight" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 SoftLight(Vector4 backdrop, Vector4 source) + => new( + SoftLightValue(backdrop.X, source.X), + SoftLightValue(backdrop.Y, source.Y), + SoftLightValue(backdrop.Z, source.Z), + 0F); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 SoftLight(Vector256 backdrop, Vector256 source) + { + Vector256 one = Vector256.Create(1F); + Vector256 two = Vector256.Create(2F); + Vector256 dark = backdrop - ((one - (two * source)) * backdrop * (one - backdrop)); + Vector256 polynomial = ((((Vector256.Create(16F) * backdrop) - Vector256.Create(12F)) * backdrop) + Vector256.Create(4F)) * backdrop; + Vector256 d = Avx.BlendVariable(polynomial, Avx.Sqrt(backdrop), Avx.CompareGreaterThan(backdrop, Vector256.Create(.25F))); + Vector256 light = backdrop + (((two * source) - one) * (d - backdrop)); + Vector256 result = Avx.BlendVariable(dark, light, Avx.CompareGreaterThan(source, Vector256.Create(.5F))); + return Avx.Blend(result, Vector256.Zero, BlendAlphaControl); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 SoftLight(Vector512 backdrop, Vector512 source) + { + Vector512 one = Vector512.Create(1F); + Vector512 two = Vector512.Create(2F); + Vector512 dark = backdrop - ((one - (two * source)) * backdrop * (one - backdrop)); + Vector512 polynomial = ((((Vector512.Create(16F) * backdrop) - Vector512.Create(12F)) * backdrop) + Vector512.Create(4F)) * backdrop; + Vector512 d = Vector512.ConditionalSelect(Avx512F.CompareGreaterThan(backdrop, Vector512.Create(.25F)), Vector512.Sqrt(backdrop), polynomial); + Vector512 light = backdrop + (((two * source) - one) * (d - backdrop)); + Vector512 result = Vector512.ConditionalSelect(Avx512F.CompareGreaterThan(source, Vector512.Create(.5F)), light, dark); + return Vector512.ConditionalSelect(AlphaMask512(), Vector512.Zero, result); + } + + /// + /// Returns the result of the "Difference" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Difference(Vector4 backdrop, Vector4 source) + => Vector4.Abs(backdrop - source); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Difference(Vector256 backdrop, Vector256 source) + => Vector256.Abs(backdrop - source); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Difference(Vector512 backdrop, Vector512 source) + => Vector512.Abs(backdrop - source); + + /// + /// Returns the result of the "Exclusion" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Exclusion(Vector4 backdrop, Vector4 source) + => backdrop + source - (2F * backdrop * source); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Exclusion(Vector256 backdrop, Vector256 source) + => backdrop + source - (Vector256.Create(2F) * backdrop * source); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Exclusion(Vector512 backdrop, Vector512 source) + => backdrop + source - (Vector512.Create(2F) * backdrop * source); + + /// + /// Returns the result of the "Hue" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Hue(Vector4 backdrop, Vector4 source) + => SetLuminosity(SetSaturation(source, Saturation(backdrop)), Luminosity(backdrop)); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Hue(Vector256 backdrop, Vector256 source) + => Vector256.Create( + Hue(backdrop.GetLower().AsVector4(), source.GetLower().AsVector4()).AsVector128(), + Hue(backdrop.GetUpper().AsVector4(), source.GetUpper().AsVector4()).AsVector128()); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Hue(Vector512 backdrop, Vector512 source) + => Vector512.Create(Hue(backdrop.GetLower(), source.GetLower()), Hue(backdrop.GetUpper(), source.GetUpper())); + + /// + /// Returns the result of the "Saturation" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Saturation(Vector4 backdrop, Vector4 source) + => SetLuminosity(SetSaturation(backdrop, Saturation(source)), Luminosity(backdrop)); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Saturation(Vector256 backdrop, Vector256 source) + => Vector256.Create( + Saturation(backdrop.GetLower().AsVector4(), source.GetLower().AsVector4()).AsVector128(), + Saturation(backdrop.GetUpper().AsVector4(), source.GetUpper().AsVector4()).AsVector128()); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Saturation(Vector512 backdrop, Vector512 source) + => Vector512.Create(Saturation(backdrop.GetLower(), source.GetLower()), Saturation(backdrop.GetUpper(), source.GetUpper())); + + /// + /// Returns the result of the "Color" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Color(Vector4 backdrop, Vector4 source) + => SetLuminosity(source, Luminosity(backdrop)); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Color(Vector256 backdrop, Vector256 source) + => Vector256.Create( + Color(backdrop.GetLower().AsVector4(), source.GetLower().AsVector4()).AsVector128(), + Color(backdrop.GetUpper().AsVector4(), source.GetUpper().AsVector4()).AsVector128()); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Color(Vector512 backdrop, Vector512 source) + => Vector512.Create(Color(backdrop.GetLower(), source.GetLower()), Color(backdrop.GetUpper(), source.GetUpper())); + + /// + /// Returns the result of the "Luminosity" compositing equation. + /// + /// The backdrop vector. + /// The source vector. + /// The blended color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Luminosity(Vector4 backdrop, Vector4 source) + => SetLuminosity(backdrop, Luminosity(source)); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Luminosity(Vector256 backdrop, Vector256 source) + => Vector256.Create( + Luminosity(backdrop.GetLower().AsVector4(), source.GetLower().AsVector4()).AsVector128(), + Luminosity(backdrop.GetUpper().AsVector4(), source.GetUpper().AsVector4()).AsVector128()); + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Luminosity(Vector512 backdrop, Vector512 source) + => Vector512.Create(Luminosity(backdrop.GetLower(), source.GetLower()), Luminosity(backdrop.GetUpper(), source.GetUpper())); + /// /// Applies raster coverage to a Porter-Duff composition result. /// @@ -385,6 +631,113 @@ internal static partial class PorterDuffFunctions return Numerics.UnPremultiply(result, Vector512_.ShuffleNative(result, ShuffleAlphaControl)); } + /// + /// Calculates one ColorDodge component, including the singular cases defined by the blending model. + /// + /// The backdrop component. + /// The source component. + /// The blended component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static float ColorDodgeValue(float backdrop, float source) + => backdrop == 0F ? 0F : source == 1F ? 1F : MathF.Min(1F, backdrop / (1F - source)); + + /// + /// Calculates one ColorBurn component, including the singular cases defined by the blending model. + /// + /// The backdrop component. + /// The source component. + /// The blended component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static float ColorBurnValue(float backdrop, float source) + => backdrop == 1F ? 1F : source == 0F ? 0F : 1F - MathF.Min(1F, (1F - backdrop) / source); + + /// + /// Calculates one SoftLight component. + /// + /// The backdrop component. + /// The source component. + /// The blended component. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static float SoftLightValue(float backdrop, float source) + { + if (source <= .5F) + { + return backdrop - ((1F - (2F * source)) * backdrop * (1F - backdrop)); + } + + // The cubic segment joins the square-root segment smoothly while avoiding its steep slope near zero. + float d = backdrop <= .25F + ? (((((16F * backdrop) - 12F) * backdrop) + 4F) * backdrop) + : MathF.Sqrt(backdrop); + + return backdrop + (((2F * source) - 1F) * (d - backdrop)); + } + + /// + /// Calculates the saturation of an RGB color. + /// + /// The color. + /// The difference between the maximum and minimum RGB components. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static float Saturation(Vector4 color) + => MathF.Max(color.X, MathF.Max(color.Y, color.Z)) - MathF.Min(color.X, MathF.Min(color.Y, color.Z)); + + /// + /// Calculates the luminosity of an RGB color. + /// + /// The color. + /// The weighted RGB luminosity. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static float Luminosity(Vector4 color) + => (.3F * color.X) + (.59F * color.Y) + (.11F * color.Z); + + /// + /// Replaces the saturation of an RGB color while retaining its channel ordering. + /// + /// The color. + /// The required saturation. + /// The adjusted color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static Vector4 SetSaturation(Vector4 color, float saturation) + { + float minimum = MathF.Min(color.X, MathF.Min(color.Y, color.Z)); + float range = MathF.Max(color.X, MathF.Max(color.Y, color.Z)) - minimum; + if (range == 0F) + { + return Vector4.Zero; + } + + // Translating the minimum to zero and scaling the range is equivalent to the specification's ordered-channel construction. + return (color - new Vector4(minimum)) * (saturation / range); + } + + /// + /// Replaces the luminosity of an RGB color and clips the result to the representable gamut. + /// + /// The color. + /// The required luminosity. + /// The adjusted color. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + private static Vector4 SetLuminosity(Vector4 color, float luminosity) + { + color += new Vector4(luminosity - Luminosity(color)); + + float minimum = MathF.Min(color.X, MathF.Min(color.Y, color.Z)); + if (minimum < 0F) + { + // Pull every component toward the requested luminosity by the same ratio so hue is preserved. + color = new Vector4(luminosity) + ((color - new Vector4(luminosity)) * (luminosity / (luminosity - minimum))); + } + + float maximum = MathF.Max(color.X, MathF.Max(color.Y, color.Z)); + if (maximum > 1F) + { + color = new Vector4(luminosity) + ((color - new Vector4(luminosity)) * ((1F - luminosity) / (maximum - luminosity))); + } + + return Numerics.WithW(color, Vector4.Zero); + } + /// /// Helper function for Overlay and HardLight modes /// @@ -783,6 +1136,57 @@ internal static partial class PorterDuffFunctions return Numerics.UnPremultiply(color, alpha); } + /// + /// Returns the result of the "Plus" compositing equation. + /// + /// The destination vector. + /// The source vector. + /// The blended source and destination color. + /// The composition result. + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector4 Plus(Vector4 destination, Vector4 source, Vector4 blend) + { + Vector4 sourceAlpha = Numerics.PermuteW(source); + Vector4 destinationAlpha = Numerics.PermuteW(destination); + Vector4 overlap = sourceAlpha * destinationAlpha; + + // Plus retains both non-overlapping regions and uses the selected blend mode in their overlap. + Vector4 color = (destination * destinationAlpha) + (source * (sourceAlpha - overlap)) + (blend * overlap); + Vector4 alpha = Vector4.Min(Vector4.One, sourceAlpha + destinationAlpha); + color = Vector4.Min(Vector4.One, color); + + Numerics.UnPremultiply(ref color, alpha); + return color; + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector256 Plus(Vector256 destination, Vector256 source, Vector256 blend) + { + Vector256 one = Vector256.Create(1F); + Vector256 sourceAlpha = Avx.Permute(source, ShuffleAlphaControl); + Vector256 destinationAlpha = Avx.Permute(destination, ShuffleAlphaControl); + Vector256 overlap = sourceAlpha * destinationAlpha; + Vector256 color = (destination * destinationAlpha) + (source * (sourceAlpha - overlap)) + (blend * overlap); + Vector256 alpha = Vector256.Min(one, sourceAlpha + destinationAlpha); + + return Numerics.UnPremultiply(Vector256.Min(one, color), alpha); + } + + /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static Vector512 Plus(Vector512 destination, Vector512 source, Vector512 blend) + { + Vector512 one = Vector512.Create(1F); + Vector512 sourceAlpha = Vector512_.ShuffleNative(source, ShuffleAlphaControl); + Vector512 destinationAlpha = Vector512_.ShuffleNative(destination, ShuffleAlphaControl); + Vector512 overlap = sourceAlpha * destinationAlpha; + Vector512 color = (destination * destinationAlpha) + (source * (sourceAlpha - overlap)) + (blend * overlap); + Vector512 alpha = Vector512.Min(one, sourceAlpha + destinationAlpha); + + return Numerics.UnPremultiply(Vector512.Min(one, color), alpha); + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] private static Vector4 Clear(Vector4 backdrop, Vector4 source) => Vector4.Zero; diff --git a/src/ImageSharp/PixelFormats/PixelColorBlendingMode.cs b/src/ImageSharp/PixelFormats/PixelColorBlendingMode.cs index 7aa07cf51..aa74f6172 100644 --- a/src/ImageSharp/PixelFormats/PixelColorBlendingMode.cs +++ b/src/ImageSharp/PixelFormats/PixelColorBlendingMode.cs @@ -52,4 +52,49 @@ public enum PixelColorBlendingMode /// Multiplies or screens the colors, depending on the source value. /// HardLight, + + /// + /// Brightens the backdrop color to reflect the source color. + /// + ColorDodge, + + /// + /// Darkens the backdrop color to reflect the source color. + /// + ColorBurn, + + /// + /// Darkens or lightens the colors, depending on the source color. + /// + SoftLight, + + /// + /// Subtracts the darker color from the lighter color. + /// + Difference, + + /// + /// Produces an effect similar to Difference with lower contrast. + /// + Exclusion, + + /// + /// Uses the hue of the source color with the saturation and luminosity of the backdrop color. + /// + Hue, + + /// + /// Uses the saturation of the source color with the hue and luminosity of the backdrop color. + /// + Saturation, + + /// + /// Uses the hue and saturation of the source color with the luminosity of the backdrop color. + /// + Color, + + /// + /// Uses the luminosity of the source color with the hue and saturation of the backdrop color. + /// + Luminosity, } diff --git a/src/ImageSharp/PixelFormats/PixelOperations{TPixel}.PixelBenders.cs b/src/ImageSharp/PixelFormats/PixelOperations{TPixel}.PixelBenders.cs index fe7de51c9..b17c90b92 100644 --- a/src/ImageSharp/PixelFormats/PixelOperations{TPixel}.PixelBenders.cs +++ b/src/ImageSharp/PixelFormats/PixelOperations{TPixel}.PixelBenders.cs @@ -42,6 +42,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenClear; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayClear; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightClear; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeClear; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnClear; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightClear; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceClear; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionClear; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueClear; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationClear; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorClear; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityClear; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalClear; } @@ -57,6 +66,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenXor; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayXor; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightXor; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeXor; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnXor; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightXor; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceXor; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionXor; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueXor; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationXor; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorXor; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityXor; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalXor; } @@ -72,6 +90,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenSrc; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlaySrc; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightSrc; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeSrc; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnSrc; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightSrc; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceSrc; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionSrc; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueSrc; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationSrc; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorSrc; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminositySrc; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalSrc; } @@ -87,6 +114,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenSrcAtop; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlaySrcAtop; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightSrcAtop; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeSrcAtop; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnSrcAtop; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightSrcAtop; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceSrcAtop; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionSrcAtop; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueSrcAtop; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationSrcAtop; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorSrcAtop; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminositySrcAtop; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalSrcAtop; } @@ -102,6 +138,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenSrcIn; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlaySrcIn; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightSrcIn; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeSrcIn; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnSrcIn; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightSrcIn; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceSrcIn; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionSrcIn; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueSrcIn; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationSrcIn; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorSrcIn; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminositySrcIn; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalSrcIn; } @@ -117,6 +162,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenSrcOut; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlaySrcOut; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightSrcOut; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeSrcOut; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnSrcOut; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightSrcOut; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceSrcOut; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionSrcOut; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueSrcOut; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationSrcOut; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorSrcOut; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminositySrcOut; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalSrcOut; } @@ -132,6 +186,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenDest; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayDest; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightDest; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeDest; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnDest; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightDest; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceDest; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionDest; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueDest; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationDest; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorDest; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityDest; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalDest; } @@ -147,6 +210,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenDestAtop; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayDestAtop; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightDestAtop; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeDestAtop; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnDestAtop; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightDestAtop; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceDestAtop; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionDestAtop; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueDestAtop; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationDestAtop; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorDestAtop; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityDestAtop; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalDestAtop; } @@ -162,6 +234,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenDestIn; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayDestIn; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightDestIn; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeDestIn; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnDestIn; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightDestIn; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceDestIn; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionDestIn; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueDestIn; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationDestIn; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorDestIn; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityDestIn; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalDestIn; } @@ -177,6 +258,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenDestOut; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayDestOut; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightDestOut; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeDestOut; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnDestOut; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightDestOut; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceDestOut; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionDestOut; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueDestOut; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationDestOut; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorDestOut; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityDestOut; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalDestOut; } @@ -192,10 +282,43 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenDestOver; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayDestOver; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightDestOver; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeDestOver; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnDestOver; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightDestOver; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceDestOver; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionDestOver; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueDestOver; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationDestOver; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorDestOver; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityDestOver; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalDestOver; } + case PixelAlphaCompositionMode.Plus: + switch (colorMode) + { + case PixelColorBlendingMode.Multiply: return DefaultPixelBlenders.MultiplyPlus; + case PixelColorBlendingMode.Add: return DefaultPixelBlenders.AddPlus; + case PixelColorBlendingMode.Subtract: return DefaultPixelBlenders.SubtractPlus; + case PixelColorBlendingMode.Screen: return DefaultPixelBlenders.ScreenPlus; + case PixelColorBlendingMode.Darken: return DefaultPixelBlenders.DarkenPlus; + case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenPlus; + case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlayPlus; + case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightPlus; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgePlus; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnPlus; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightPlus; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferencePlus; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionPlus; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HuePlus; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationPlus; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorPlus; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminosityPlus; + case PixelColorBlendingMode.Normal: + default: return DefaultPixelBlenders.NormalPlus; + } + case PixelAlphaCompositionMode.SrcOver: default: switch (colorMode) @@ -208,6 +331,15 @@ public partial class PixelOperations case PixelColorBlendingMode.Lighten: return DefaultPixelBlenders.LightenSrcOver; case PixelColorBlendingMode.Overlay: return DefaultPixelBlenders.OverlaySrcOver; case PixelColorBlendingMode.HardLight: return DefaultPixelBlenders.HardLightSrcOver; + case PixelColorBlendingMode.ColorDodge: return DefaultPixelBlenders.ColorDodgeSrcOver; + case PixelColorBlendingMode.ColorBurn: return DefaultPixelBlenders.ColorBurnSrcOver; + case PixelColorBlendingMode.SoftLight: return DefaultPixelBlenders.SoftLightSrcOver; + case PixelColorBlendingMode.Difference: return DefaultPixelBlenders.DifferenceSrcOver; + case PixelColorBlendingMode.Exclusion: return DefaultPixelBlenders.ExclusionSrcOver; + case PixelColorBlendingMode.Hue: return DefaultPixelBlenders.HueSrcOver; + case PixelColorBlendingMode.Saturation: return DefaultPixelBlenders.SaturationSrcOver; + case PixelColorBlendingMode.Color: return DefaultPixelBlenders.ColorSrcOver; + case PixelColorBlendingMode.Luminosity: return DefaultPixelBlenders.LuminositySrcOver; case PixelColorBlendingMode.Normal: default: return DefaultPixelBlenders.NormalSrcOver; } diff --git a/tests/ImageSharp.Tests/PixelFormats/PixelBlenderTests.cs b/tests/ImageSharp.Tests/PixelFormats/PixelBlenderTests.cs index c203bee16..7562d8ff6 100644 --- a/tests/ImageSharp.Tests/PixelFormats/PixelBlenderTests.cs +++ b/tests/ImageSharp.Tests/PixelFormats/PixelBlenderTests.cs @@ -50,7 +50,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenClear.GetType(), DefaultPixelBlenders.LightenClear.GetType(), DefaultPixelBlenders.OverlayClear.GetType(), - DefaultPixelBlenders.HardLightClear.GetType()); + DefaultPixelBlenders.HardLightClear.GetType(), + DefaultPixelBlenders.ColorDodgeClear.GetType(), + DefaultPixelBlenders.ColorBurnClear.GetType(), + DefaultPixelBlenders.SoftLightClear.GetType(), + DefaultPixelBlenders.DifferenceClear.GetType(), + DefaultPixelBlenders.ExclusionClear.GetType(), + DefaultPixelBlenders.HueClear.GetType(), + DefaultPixelBlenders.SaturationClear.GetType(), + DefaultPixelBlenders.ColorClear.GetType(), + DefaultPixelBlenders.LuminosityClear.GetType()); AddBlenderModeMappings( data, @@ -63,7 +72,38 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenXor.GetType(), DefaultPixelBlenders.LightenXor.GetType(), DefaultPixelBlenders.OverlayXor.GetType(), - DefaultPixelBlenders.HardLightXor.GetType()); + DefaultPixelBlenders.HardLightXor.GetType(), + DefaultPixelBlenders.ColorDodgeXor.GetType(), + DefaultPixelBlenders.ColorBurnXor.GetType(), + DefaultPixelBlenders.SoftLightXor.GetType(), + DefaultPixelBlenders.DifferenceXor.GetType(), + DefaultPixelBlenders.ExclusionXor.GetType(), + DefaultPixelBlenders.HueXor.GetType(), + DefaultPixelBlenders.SaturationXor.GetType(), + DefaultPixelBlenders.ColorXor.GetType(), + DefaultPixelBlenders.LuminosityXor.GetType()); + + AddBlenderModeMappings( + data, + PixelAlphaCompositionMode.Plus, + DefaultPixelBlenders.NormalPlus.GetType(), + DefaultPixelBlenders.MultiplyPlus.GetType(), + DefaultPixelBlenders.AddPlus.GetType(), + DefaultPixelBlenders.SubtractPlus.GetType(), + DefaultPixelBlenders.ScreenPlus.GetType(), + DefaultPixelBlenders.DarkenPlus.GetType(), + DefaultPixelBlenders.LightenPlus.GetType(), + DefaultPixelBlenders.OverlayPlus.GetType(), + DefaultPixelBlenders.HardLightPlus.GetType(), + DefaultPixelBlenders.ColorDodgePlus.GetType(), + DefaultPixelBlenders.ColorBurnPlus.GetType(), + DefaultPixelBlenders.SoftLightPlus.GetType(), + DefaultPixelBlenders.DifferencePlus.GetType(), + DefaultPixelBlenders.ExclusionPlus.GetType(), + DefaultPixelBlenders.HuePlus.GetType(), + DefaultPixelBlenders.SaturationPlus.GetType(), + DefaultPixelBlenders.ColorPlus.GetType(), + DefaultPixelBlenders.LuminosityPlus.GetType()); AddBlenderModeMappings( data, @@ -76,7 +116,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenSrc.GetType(), DefaultPixelBlenders.LightenSrc.GetType(), DefaultPixelBlenders.OverlaySrc.GetType(), - DefaultPixelBlenders.HardLightSrc.GetType()); + DefaultPixelBlenders.HardLightSrc.GetType(), + DefaultPixelBlenders.ColorDodgeSrc.GetType(), + DefaultPixelBlenders.ColorBurnSrc.GetType(), + DefaultPixelBlenders.SoftLightSrc.GetType(), + DefaultPixelBlenders.DifferenceSrc.GetType(), + DefaultPixelBlenders.ExclusionSrc.GetType(), + DefaultPixelBlenders.HueSrc.GetType(), + DefaultPixelBlenders.SaturationSrc.GetType(), + DefaultPixelBlenders.ColorSrc.GetType(), + DefaultPixelBlenders.LuminositySrc.GetType()); AddBlenderModeMappings( data, @@ -89,7 +138,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenSrcAtop.GetType(), DefaultPixelBlenders.LightenSrcAtop.GetType(), DefaultPixelBlenders.OverlaySrcAtop.GetType(), - DefaultPixelBlenders.HardLightSrcAtop.GetType()); + DefaultPixelBlenders.HardLightSrcAtop.GetType(), + DefaultPixelBlenders.ColorDodgeSrcAtop.GetType(), + DefaultPixelBlenders.ColorBurnSrcAtop.GetType(), + DefaultPixelBlenders.SoftLightSrcAtop.GetType(), + DefaultPixelBlenders.DifferenceSrcAtop.GetType(), + DefaultPixelBlenders.ExclusionSrcAtop.GetType(), + DefaultPixelBlenders.HueSrcAtop.GetType(), + DefaultPixelBlenders.SaturationSrcAtop.GetType(), + DefaultPixelBlenders.ColorSrcAtop.GetType(), + DefaultPixelBlenders.LuminositySrcAtop.GetType()); AddBlenderModeMappings( data, @@ -102,7 +160,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenSrcIn.GetType(), DefaultPixelBlenders.LightenSrcIn.GetType(), DefaultPixelBlenders.OverlaySrcIn.GetType(), - DefaultPixelBlenders.HardLightSrcIn.GetType()); + DefaultPixelBlenders.HardLightSrcIn.GetType(), + DefaultPixelBlenders.ColorDodgeSrcIn.GetType(), + DefaultPixelBlenders.ColorBurnSrcIn.GetType(), + DefaultPixelBlenders.SoftLightSrcIn.GetType(), + DefaultPixelBlenders.DifferenceSrcIn.GetType(), + DefaultPixelBlenders.ExclusionSrcIn.GetType(), + DefaultPixelBlenders.HueSrcIn.GetType(), + DefaultPixelBlenders.SaturationSrcIn.GetType(), + DefaultPixelBlenders.ColorSrcIn.GetType(), + DefaultPixelBlenders.LuminositySrcIn.GetType()); AddBlenderModeMappings( data, @@ -115,7 +182,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenSrcOut.GetType(), DefaultPixelBlenders.LightenSrcOut.GetType(), DefaultPixelBlenders.OverlaySrcOut.GetType(), - DefaultPixelBlenders.HardLightSrcOut.GetType()); + DefaultPixelBlenders.HardLightSrcOut.GetType(), + DefaultPixelBlenders.ColorDodgeSrcOut.GetType(), + DefaultPixelBlenders.ColorBurnSrcOut.GetType(), + DefaultPixelBlenders.SoftLightSrcOut.GetType(), + DefaultPixelBlenders.DifferenceSrcOut.GetType(), + DefaultPixelBlenders.ExclusionSrcOut.GetType(), + DefaultPixelBlenders.HueSrcOut.GetType(), + DefaultPixelBlenders.SaturationSrcOut.GetType(), + DefaultPixelBlenders.ColorSrcOut.GetType(), + DefaultPixelBlenders.LuminositySrcOut.GetType()); AddBlenderModeMappings( data, @@ -128,7 +204,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenDest.GetType(), DefaultPixelBlenders.LightenDest.GetType(), DefaultPixelBlenders.OverlayDest.GetType(), - DefaultPixelBlenders.HardLightDest.GetType()); + DefaultPixelBlenders.HardLightDest.GetType(), + DefaultPixelBlenders.ColorDodgeDest.GetType(), + DefaultPixelBlenders.ColorBurnDest.GetType(), + DefaultPixelBlenders.SoftLightDest.GetType(), + DefaultPixelBlenders.DifferenceDest.GetType(), + DefaultPixelBlenders.ExclusionDest.GetType(), + DefaultPixelBlenders.HueDest.GetType(), + DefaultPixelBlenders.SaturationDest.GetType(), + DefaultPixelBlenders.ColorDest.GetType(), + DefaultPixelBlenders.LuminosityDest.GetType()); AddBlenderModeMappings( data, @@ -141,7 +226,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenDestAtop.GetType(), DefaultPixelBlenders.LightenDestAtop.GetType(), DefaultPixelBlenders.OverlayDestAtop.GetType(), - DefaultPixelBlenders.HardLightDestAtop.GetType()); + DefaultPixelBlenders.HardLightDestAtop.GetType(), + DefaultPixelBlenders.ColorDodgeDestAtop.GetType(), + DefaultPixelBlenders.ColorBurnDestAtop.GetType(), + DefaultPixelBlenders.SoftLightDestAtop.GetType(), + DefaultPixelBlenders.DifferenceDestAtop.GetType(), + DefaultPixelBlenders.ExclusionDestAtop.GetType(), + DefaultPixelBlenders.HueDestAtop.GetType(), + DefaultPixelBlenders.SaturationDestAtop.GetType(), + DefaultPixelBlenders.ColorDestAtop.GetType(), + DefaultPixelBlenders.LuminosityDestAtop.GetType()); AddBlenderModeMappings( data, @@ -154,7 +248,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenDestIn.GetType(), DefaultPixelBlenders.LightenDestIn.GetType(), DefaultPixelBlenders.OverlayDestIn.GetType(), - DefaultPixelBlenders.HardLightDestIn.GetType()); + DefaultPixelBlenders.HardLightDestIn.GetType(), + DefaultPixelBlenders.ColorDodgeDestIn.GetType(), + DefaultPixelBlenders.ColorBurnDestIn.GetType(), + DefaultPixelBlenders.SoftLightDestIn.GetType(), + DefaultPixelBlenders.DifferenceDestIn.GetType(), + DefaultPixelBlenders.ExclusionDestIn.GetType(), + DefaultPixelBlenders.HueDestIn.GetType(), + DefaultPixelBlenders.SaturationDestIn.GetType(), + DefaultPixelBlenders.ColorDestIn.GetType(), + DefaultPixelBlenders.LuminosityDestIn.GetType()); AddBlenderModeMappings( data, @@ -167,7 +270,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenDestOut.GetType(), DefaultPixelBlenders.LightenDestOut.GetType(), DefaultPixelBlenders.OverlayDestOut.GetType(), - DefaultPixelBlenders.HardLightDestOut.GetType()); + DefaultPixelBlenders.HardLightDestOut.GetType(), + DefaultPixelBlenders.ColorDodgeDestOut.GetType(), + DefaultPixelBlenders.ColorBurnDestOut.GetType(), + DefaultPixelBlenders.SoftLightDestOut.GetType(), + DefaultPixelBlenders.DifferenceDestOut.GetType(), + DefaultPixelBlenders.ExclusionDestOut.GetType(), + DefaultPixelBlenders.HueDestOut.GetType(), + DefaultPixelBlenders.SaturationDestOut.GetType(), + DefaultPixelBlenders.ColorDestOut.GetType(), + DefaultPixelBlenders.LuminosityDestOut.GetType()); AddBlenderModeMappings( data, @@ -180,7 +292,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenDestOver.GetType(), DefaultPixelBlenders.LightenDestOver.GetType(), DefaultPixelBlenders.OverlayDestOver.GetType(), - DefaultPixelBlenders.HardLightDestOver.GetType()); + DefaultPixelBlenders.HardLightDestOver.GetType(), + DefaultPixelBlenders.ColorDodgeDestOver.GetType(), + DefaultPixelBlenders.ColorBurnDestOver.GetType(), + DefaultPixelBlenders.SoftLightDestOver.GetType(), + DefaultPixelBlenders.DifferenceDestOver.GetType(), + DefaultPixelBlenders.ExclusionDestOver.GetType(), + DefaultPixelBlenders.HueDestOver.GetType(), + DefaultPixelBlenders.SaturationDestOver.GetType(), + DefaultPixelBlenders.ColorDestOver.GetType(), + DefaultPixelBlenders.LuminosityDestOver.GetType()); AddBlenderModeMappings( data, @@ -193,7 +314,16 @@ public class PixelBlenderTests DefaultPixelBlenders.DarkenSrcOver.GetType(), DefaultPixelBlenders.LightenSrcOver.GetType(), DefaultPixelBlenders.OverlaySrcOver.GetType(), - DefaultPixelBlenders.HardLightSrcOver.GetType()); + DefaultPixelBlenders.HardLightSrcOver.GetType(), + DefaultPixelBlenders.ColorDodgeSrcOver.GetType(), + DefaultPixelBlenders.ColorBurnSrcOver.GetType(), + DefaultPixelBlenders.SoftLightSrcOver.GetType(), + DefaultPixelBlenders.DifferenceSrcOver.GetType(), + DefaultPixelBlenders.ExclusionSrcOver.GetType(), + DefaultPixelBlenders.HueSrcOver.GetType(), + DefaultPixelBlenders.SaturationSrcOver.GetType(), + DefaultPixelBlenders.ColorSrcOver.GetType(), + DefaultPixelBlenders.LuminositySrcOver.GetType()); return data; } @@ -228,6 +358,51 @@ public class PixelBlenderTests ExerciseAllAssociatedAlphaBlenderModeCombinations, HwIntrinsics.AllowAll | HwIntrinsics.DisableAVX512F | HwIntrinsics.DisableAVX | HwIntrinsics.DisableHWIntrinsic); + [Theory] + [InlineData(PixelColorBlendingMode.ColorDodge)] + [InlineData(PixelColorBlendingMode.ColorBurn)] + [InlineData(PixelColorBlendingMode.SoftLight)] + [InlineData(PixelColorBlendingMode.Difference)] + [InlineData(PixelColorBlendingMode.Exclusion)] + [InlineData(PixelColorBlendingMode.Hue)] + [InlineData(PixelColorBlendingMode.Saturation)] + [InlineData(PixelColorBlendingMode.Color)] + [InlineData(PixelColorBlendingMode.Luminosity)] + public void NewSrcOverModesMatchAcrossAlphaRepresentations(PixelColorBlendingMode colorMode) + { + Rgba32 background = new(220, 80, 40, 160); + Rgba32 source = new(20, 180, 120, 96); + PixelBlender straightBlender = PixelOperations.Instance.GetPixelBlender(colorMode, PixelAlphaCompositionMode.SrcOver); + PixelBlender associatedBlender = PixelOperations.Instance.GetPixelBlender(colorMode, PixelAlphaCompositionMode.SrcOver); + + Rgba32 straightResult = straightBlender.Blend(background, source, .625F); + Rgba32P expected = Rgba32P.FromRgba32(straightResult); + Rgba32P actual = associatedBlender.Blend(Rgba32P.FromRgba32(background), Rgba32P.FromRgba32(source), .625F); + + // Associated storage introduces one extra byte quantization, but both paths must describe the same composite. + Assert.True(Math.Abs(expected.R - actual.R) <= 1, $"{colorMode}: expected {expected}, actual {actual}"); + Assert.True(Math.Abs(expected.G - actual.G) <= 1, $"{colorMode}: expected {expected}, actual {actual}"); + Assert.True(Math.Abs(expected.B - actual.B) <= 1, $"{colorMode}: expected {expected}, actual {actual}"); + Assert.Equal(expected.A, actual.A); + } + + [Fact] + public void PlusMatchesAcrossAlphaRepresentations() + { + Rgba32 background = new(220, 80, 40, 160); + Rgba32 source = new(20, 180, 120, 96); + PixelBlender straightBlender = PixelOperations.Instance.GetPixelBlender(PixelColorBlendingMode.Normal, PixelAlphaCompositionMode.Plus); + PixelBlender associatedBlender = PixelOperations.Instance.GetPixelBlender(PixelColorBlendingMode.Normal, PixelAlphaCompositionMode.Plus); + + Rgba32P expected = Rgba32P.FromRgba32(straightBlender.Blend(background, source, .625F)); + Rgba32P actual = associatedBlender.Blend(Rgba32P.FromRgba32(background), Rgba32P.FromRgba32(source), .625F); + + Assert.True(Math.Abs(expected.R - actual.R) <= 1, $"expected {expected}, actual {actual}"); + Assert.True(Math.Abs(expected.G - actual.G) <= 1, $"expected {expected}, actual {actual}"); + Assert.True(Math.Abs(expected.B - actual.B) <= 1, $"expected {expected}, actual {actual}"); + Assert.Equal(expected.A, actual.A); + } + [Fact] public void AssociatedHardLightDestAtopRoundsExactMidpointAwayFromZero() => FeatureTestRunner.RunWithHwIntrinsicsFeature( @@ -691,6 +866,8 @@ public class PixelBlenderTests { Color.MistyRose.ToPixel(), Color.MidnightBlue.ToPixel(), 1, PixelAlphaCompositionMode.SrcIn, Color.MidnightBlue.ToPixel() }, { Color.MistyRose.ToPixel(), Color.MidnightBlue.ToPixel(), 1, PixelAlphaCompositionMode.SrcOut, new Rgba32(0) }, { Color.MistyRose.ToPixel(), Color.MidnightBlue.ToPixel(), 1, PixelAlphaCompositionMode.SrcOver, Color.MidnightBlue.ToPixel() }, + { new Rgba32(51, 102, 153, 77), new Rgba32(204, 51, 26, 102), .5F, PixelAlphaCompositionMode.Plus, new Rgba32(112, 82, 102, 128) }, + { new Rgba32(230, 51, 26, 191), new Rgba32(204, 230, 77, 191), 1F, PixelAlphaCompositionMode.Plus, new Rgba32(255, 210, 77, 255) }, }; [Theory] @@ -716,7 +893,16 @@ public class PixelBlenderTests Type darken, Type lighten, Type overlay, - Type hardLight) + Type hardLight, + Type colorDodge, + Type colorBurn, + Type softLight, + Type difference, + Type exclusion, + Type hue, + Type saturation, + Type color, + Type luminosity) { data.Add(PixelColorBlendingMode.Normal, alphaMode, normal); data.Add(PixelColorBlendingMode.Multiply, alphaMode, multiply); @@ -727,6 +913,15 @@ public class PixelBlenderTests data.Add(PixelColorBlendingMode.Lighten, alphaMode, lighten); data.Add(PixelColorBlendingMode.Overlay, alphaMode, overlay); data.Add(PixelColorBlendingMode.HardLight, alphaMode, hardLight); + data.Add(PixelColorBlendingMode.ColorDodge, alphaMode, colorDodge); + data.Add(PixelColorBlendingMode.ColorBurn, alphaMode, colorBurn); + data.Add(PixelColorBlendingMode.SoftLight, alphaMode, softLight); + data.Add(PixelColorBlendingMode.Difference, alphaMode, difference); + data.Add(PixelColorBlendingMode.Exclusion, alphaMode, exclusion); + data.Add(PixelColorBlendingMode.Hue, alphaMode, hue); + data.Add(PixelColorBlendingMode.Saturation, alphaMode, saturation); + data.Add(PixelColorBlendingMode.Color, alphaMode, color); + data.Add(PixelColorBlendingMode.Luminosity, alphaMode, luminosity); } private static void ExerciseAllBlenderModeCombinations() diff --git a/tests/ImageSharp.Tests/PixelFormats/PixelBlenders/PorterDuffFunctionsTests.cs b/tests/ImageSharp.Tests/PixelFormats/PixelBlenders/PorterDuffFunctionsTests.cs index 0def09788..4891f9e44 100644 --- a/tests/ImageSharp.Tests/PixelFormats/PixelBlenders/PorterDuffFunctionsTests.cs +++ b/tests/ImageSharp.Tests/PixelFormats/PixelBlenders/PorterDuffFunctionsTests.cs @@ -4,6 +4,7 @@ using System.Numerics; using System.Runtime.Intrinsics; using System.Runtime.Intrinsics.X86; +using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.PixelFormats.PixelBlenders; using SixLabors.ImageSharp.Tests.TestUtilities; @@ -444,10 +445,136 @@ public class PorterDuffFunctionsTests Assert.Equal(expected512, actual, FloatComparer); } + public static TheoryData ExtendedBlendFunctionData { get; } = new() + { + { PixelColorBlendingMode.ColorDodge, CreateTestVector(0F, .25F, .8F, 1F), CreateTestVector(1F, .5F, .5F, 1F), CreateTestVector(0F, .5F, 1F, 1F) }, + { PixelColorBlendingMode.ColorBurn, CreateTestVector(1F, .4F, .75F, 1F), CreateTestVector(0F, 0F, .5F, 1F), CreateTestVector(1F, 0F, .5F, 1F) }, + { PixelColorBlendingMode.SoftLight, CreateTestVector(.25F, .64F, .16F, 1F), CreateTestVector(.75F, .75F, .25F, 1F), CreateTestVector(.375F, .72F, .0928F, 1F) }, + { PixelColorBlendingMode.SoftLight, CreateTestVector(.25F, .36F, .81F, 1F), CreateTestVector(.5F, .5F, .5F, 1F), CreateTestVector(.25F, .36F, .81F, 1F) }, + { PixelColorBlendingMode.Difference, CreateTestVector(.1F, .8F, .4F, 1F), CreateTestVector(.7F, .2F, .4F, 1F), CreateTestVector(.6F, .6F, 0F, 1F) }, + { PixelColorBlendingMode.Exclusion, CreateTestVector(.1F, .8F, .4F, 1F), CreateTestVector(.7F, .2F, .4F, 1F), CreateTestVector(.66F, .68F, .48F, 1F) }, + { PixelColorBlendingMode.Hue, CreateTestVector(.2F, .7F, .4F, 1F), CreateTestVector(.9F, .1F, .6F, 1F), CreateTestVector(.832625F, .332625F, .645125F, 1F) }, + { PixelColorBlendingMode.Saturation, CreateTestVector(.2F, .7F, .4F, 1F), CreateTestVector(.9F, .1F, .6F, 1F), CreateTestVector(.0098F, .8098F, .3298F, 1F) }, + { PixelColorBlendingMode.Color, CreateTestVector(.2F, .7F, .4F, 1F), CreateTestVector(.9F, .1F, .6F, 1F), CreateTestVector(1F, .234851485F, .713069307F, 1F) }, + { PixelColorBlendingMode.Luminosity, CreateTestVector(.2F, .7F, .4F, 1F), CreateTestVector(.9F, .1F, .6F, 1F), CreateTestVector(.078F, .578F, .278F, 1F) }, + { PixelColorBlendingMode.Hue, CreateTestVector(.5F, .5F, .5F, 1F), CreateTestVector(.9F, .2F, .6F, 1F), CreateTestVector(.5F, .5F, .5F, 1F) }, + { PixelColorBlendingMode.Saturation, CreateTestVector(.5F, .5F, .5F, 1F), CreateTestVector(.9F, .2F, .6F, 1F), CreateTestVector(.5F, .5F, .5F, 1F) }, + }; + + [Theory] + [MemberData(nameof(ExtendedBlendFunctionData))] + public void ExtendedBlendFunction(PixelColorBlendingMode mode, TestVector4 back, TestVector4 source, TestVector4 expected) + { + Vector4 actual = InvokeExtendedBlend(mode, back, source, 1F); + VectorAssert.Equal(expected, actual, 4); + } + + [Theory] + [MemberData(nameof(ExtendedBlendFunctionData))] + public void ExtendedBlendFunction256(PixelColorBlendingMode mode, TestVector4 back, TestVector4 source, TestVector4 expected) + { + if (!Avx.IsSupported) + { + return; + } + + Vector256 actual = InvokeExtendedBlend(mode, Vector256.Create(back.AsVector().AsVector128(), back.AsVector().AsVector128()), Vector256.Create(source.AsVector().AsVector128(), source.AsVector().AsVector128()), Vector256.Create(1F)); + Vector256 expectedVector = Vector256.Create(expected.AsVector().AsVector128(), expected.AsVector().AsVector128()); + Assert.Equal(expectedVector, actual, FloatComparer); + } + + [Theory] + [MemberData(nameof(ExtendedBlendFunctionData))] + public void ExtendedBlendFunction512(PixelColorBlendingMode mode, TestVector4 back, TestVector4 source, TestVector4 expected) + { + if (!Avx512F.IsSupported) + { + return; + } + + Vector512 actual = InvokeExtendedBlend(mode, CreateVector512(back), CreateVector512(source), Vector512.Create(1F)); + Assert.Equal(CreateVector512(expected), actual, FloatComparer); + } + + /// + /// Creates serializable vector test data without relying on the legacy convenience constructor's channel assignments. + /// + /// The X component. + /// The Y component. + /// The Z component. + /// The W component. + /// The test vector. + private static TestVector4 CreateTestVector(float x, float y, float z, float w) + => new() { X = x, Y = y, Z = z, W = w }; + + /// + /// Invokes a new blend mode through its straight-alpha source-over function. + /// + /// The color blending mode. + /// The backdrop vector. + /// The source vector. + /// The source amount. + /// The composition result. + private static Vector4 InvokeExtendedBlend(PixelColorBlendingMode mode, Vector4 backdrop, Vector4 source, float amount) + => mode switch + { + PixelColorBlendingMode.ColorDodge => PorterDuffFunctions.ColorDodgeSrcOver(backdrop, source, amount), + PixelColorBlendingMode.ColorBurn => PorterDuffFunctions.ColorBurnSrcOver(backdrop, source, amount), + PixelColorBlendingMode.SoftLight => PorterDuffFunctions.SoftLightSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Difference => PorterDuffFunctions.DifferenceSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Exclusion => PorterDuffFunctions.ExclusionSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Hue => PorterDuffFunctions.HueSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Saturation => PorterDuffFunctions.SaturationSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Color => PorterDuffFunctions.ColorSrcOver(backdrop, source, amount), + _ => PorterDuffFunctions.LuminositySrcOver(backdrop, source, amount), + }; + + /// + private static Vector256 InvokeExtendedBlend(PixelColorBlendingMode mode, Vector256 backdrop, Vector256 source, Vector256 amount) + => mode switch + { + PixelColorBlendingMode.ColorDodge => PorterDuffFunctions.ColorDodgeSrcOver(backdrop, source, amount), + PixelColorBlendingMode.ColorBurn => PorterDuffFunctions.ColorBurnSrcOver(backdrop, source, amount), + PixelColorBlendingMode.SoftLight => PorterDuffFunctions.SoftLightSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Difference => PorterDuffFunctions.DifferenceSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Exclusion => PorterDuffFunctions.ExclusionSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Hue => PorterDuffFunctions.HueSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Saturation => PorterDuffFunctions.SaturationSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Color => PorterDuffFunctions.ColorSrcOver(backdrop, source, amount), + _ => PorterDuffFunctions.LuminositySrcOver(backdrop, source, amount), + }; + + /// + private static Vector512 InvokeExtendedBlend(PixelColorBlendingMode mode, Vector512 backdrop, Vector512 source, Vector512 amount) + => mode switch + { + PixelColorBlendingMode.ColorDodge => PorterDuffFunctions.ColorDodgeSrcOver(backdrop, source, amount), + PixelColorBlendingMode.ColorBurn => PorterDuffFunctions.ColorBurnSrcOver(backdrop, source, amount), + PixelColorBlendingMode.SoftLight => PorterDuffFunctions.SoftLightSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Difference => PorterDuffFunctions.DifferenceSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Exclusion => PorterDuffFunctions.ExclusionSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Hue => PorterDuffFunctions.HueSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Saturation => PorterDuffFunctions.SaturationSrcOver(backdrop, source, amount), + PixelColorBlendingMode.Color => PorterDuffFunctions.ColorSrcOver(backdrop, source, amount), + _ => PorterDuffFunctions.LuminositySrcOver(backdrop, source, amount), + }; + private static Vector512 CreateVector512(TestVector4 vector) => Vector512.Create( - vector.X, vector.Y, vector.Z, vector.W, - vector.X, vector.Y, vector.Z, vector.W, - vector.X, vector.Y, vector.Z, vector.W, - vector.X, vector.Y, vector.Z, vector.W); + vector.X, + vector.Y, + vector.Z, + vector.W, + vector.X, + vector.Y, + vector.Z, + vector.W, + vector.X, + vector.Y, + vector.Z, + vector.W, + vector.X, + vector.Y, + vector.Z, + vector.W); }