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 string ConvertFunc(GX2BlendFunction func)
        {
            switch (func)
            {
            case GX2BlendFunction.OneMinusDestinationAlpha: return("(1 - Dst.A)");

            case GX2BlendFunction.OneMinusDestinationColor: return("(1 - Dst.RGB)");

            case GX2BlendFunction.OneMinusConstantAlpha: return("(1 - Const.A)");

            case GX2BlendFunction.OneMinusConstantColor: return("(1 - Const.RGB)");

            case GX2BlendFunction.OneMinusSource1Color: return("(1 - Src1.RGB)");

            case GX2BlendFunction.OneMinusSource1Alpha: return("(1 - Src1.A)");

            case GX2BlendFunction.OneMinusSourceColor: return("(1 - Src.RGB)");

            case GX2BlendFunction.OneMinusSourceAlpha: return("(1 - Src.A)");

            case GX2BlendFunction.ConstantAlpha: return("Const.A");

            case GX2BlendFunction.ConstantColor: return("Const.RGB");

            case GX2BlendFunction.DestinationColor: return("Dst.RGB");

            case GX2BlendFunction.DestinationAlpha: return("Dst.A");

            case GX2BlendFunction.Source1Alpha: return("Src1.A");

            case GX2BlendFunction.Source1Color: return("Src1.RGB");

            case GX2BlendFunction.SourceColor: return("Src.RGB");

            case GX2BlendFunction.SourceAlpha: return("Src.A");

            case GX2BlendFunction.SourceAlphaSaturate: return("(Saturate(Src.A))");

            case GX2BlendFunction.One: return("1");

            case GX2BlendFunction.Zero: return("0");

            default:
                return("(Unk Op)");
            }
        }
        static BlendingFactor ConvertBlend(GX2BlendFunction func)
        {
            switch (func)
            {
            case GX2BlendFunction.ConstantAlpha: return(BlendingFactor.ConstantAlpha);

            case GX2BlendFunction.ConstantColor: return(BlendingFactor.ConstantColor);

            case GX2BlendFunction.DestinationColor: return(BlendingFactor.DstColor);

            case GX2BlendFunction.DestinationAlpha: return(BlendingFactor.DstAlpha);

            case GX2BlendFunction.One: return(BlendingFactor.One);

            case GX2BlendFunction.OneMinusConstantAlpha: return(BlendingFactor.OneMinusConstantAlpha);

            case GX2BlendFunction.OneMinusConstantColor: return(BlendingFactor.OneMinusConstantColor);

            case GX2BlendFunction.OneMinusDestinationAlpha: return(BlendingFactor.OneMinusDstAlpha);

            case GX2BlendFunction.OneMinusDestinationColor: return(BlendingFactor.OneMinusDstColor);

            case GX2BlendFunction.OneMinusSourceAlpha: return(BlendingFactor.OneMinusSrcAlpha);

            case GX2BlendFunction.OneMinusSourceColor: return(BlendingFactor.OneMinusSrcColor);

            case GX2BlendFunction.OneMinusSource1Alpha: return((BlendingFactor)BlendingFactorSrc.OneMinusSrc1Alpha);

            case GX2BlendFunction.OneMinusSource1Color: return((BlendingFactor)BlendingFactorSrc.OneMinusSrc1Color);

            case GX2BlendFunction.SourceAlpha: return(BlendingFactor.SrcAlpha);

            case GX2BlendFunction.SourceAlphaSaturate: return(BlendingFactor.SrcAlphaSaturate);

            case GX2BlendFunction.Source1Alpha: return(BlendingFactor.Src1Alpha);

            case GX2BlendFunction.SourceColor: return(BlendingFactor.SrcColor);

            case GX2BlendFunction.Source1Color: return(BlendingFactor.Src1Color);

            case GX2BlendFunction.Zero: return(BlendingFactor.Zero);

            default: return(BlendingFactor.One);
            }
        }