public static Material[] ProcessGradientMats(GraphicRequest req, Texture2D[] inputTextures, Texture2D[] inputTextureMasks, Texture2D gradientMask, Color gradientColor)
        {
            //bake textures with only HairColor2 applied via original texture masks
            Color temp = req.color;

            req.color = Color.white;
            Material[] firstPassMats = GetMatsFrom(req, inputTextures, inputTextureMasks);
            for (int i = 0; i < inputTextures.Length; i++)
            {
                inputTextures[i] = BakeTexture(inputTextures[i], firstPassMats[i]);
            }

            //prepare combined gradient masks
            for (int i = 0; i < inputTextures.Length; i++)
            {
                inputTextureMasks[i] = HairMasker.CombineWithGradientMask(inputTextureMasks[i], gradientMask);
            }

            //use combined masks on baked textures with original colors
            req.color    = temp;
            req.colorTwo = gradientColor;
            return(GetMatsFrom(req, inputTextures, inputTextureMasks));
        }