static string CreateBlendMethod(
            GX2BlendFunction src,
            GX2BlendCombine op,
            GX2BlendFunction dst)
        {
            string source = ConvertFunc(src);
            string dest   = ConvertFunc(dst);

            if (op == GX2BlendCombine.Add)
            {
                return($"{source} + {dest}");
            }
            else if (op == GX2BlendCombine.SourceMinusDestination)
            {
                return($"{source} - {dest}");
            }
            else if (op == GX2BlendCombine.DestinationMinusSource)
            {
                return($"{dest} - {source}");
            }
            else if (op == GX2BlendCombine.Maximum)
            {
                return($"min({source}, {dest})");
            }
            else if (op == GX2BlendCombine.Minimum)
            {
                return($"max({source}, {dest})");
            }

            return($"");
        }
        static BlendEquationMode ConvertOp(GX2BlendCombine func)
        {
            switch (func)
            {
            case GX2BlendCombine.Add: return(BlendEquationMode.FuncAdd);

            case GX2BlendCombine.SourceMinusDestination: return(BlendEquationMode.FuncSubtract);

            case GX2BlendCombine.DestinationMinusSource: return(BlendEquationMode.FuncReverseSubtract);

            case GX2BlendCombine.Maximum: return(BlendEquationMode.Max);

            case GX2BlendCombine.Minimum: return(BlendEquationMode.Min);

            default: return(BlendEquationMode.FuncAdd);
            }
        }