bool CheckKeywords(Shader shader, PassType pass, string[] keywords)
    {
        bool valid = false;

        try
        {
            ShaderVariantCollection.ShaderVariant variant =
                new ShaderVariantCollection.ShaderVariant(
                    shader,
                    pass,
                    keywords
                    );

            valid = true;
        }
        catch (System.ArgumentException)
        {
            // if (shader.name == "GUI/Text Shader")
            // {
            //     Debug.LogFormat(
            //         "Shader {0} pass {1} keywords '{2}' not found",
            //         shader.name,
            //         pass.ToString(),
            //         string.Join(" ", keywords));
            // }

            if (internalShaders.Contains(shader.name) && keywords.Length == 0)
            {
                valid = true;
            }
        }
        return(valid);
    }
    void AddKeywords(
        ShaderVariantCollection collection,
        Shader shader,
        PassType pass,
        string[] keywordList)
    {
        if (CheckKeywords(shader, pass, keywordList))
        {
            List <string> keywords = new List <string>(keywordList);
            // special case override
            if (shader.name != "Hidden/VideoDecodeAndroid" && !keywords.Contains("SHADOWS_DEPTH"))
            {
                keywords.Add("STEREO_MULTIVIEW_ON");
            }

            ShaderVariantCollection.ShaderVariant variant =
                new ShaderVariantCollection.ShaderVariant();

            variant.shader   = shader;
            variant.passType = pass;
            variant.keywords = keywords.ToArray();
            collection.Add(variant);
        }
    }
 public static StripPassType ConvertUnityTypeToStripType(UnityEngine.Rendering.PassType inType)
 {
     return((StripPassType)Mathf.Pow(2, (int)inType));
 }
Exemplo n.º 4
0
 extern private static string CheckShaderVariant(Shader shader, UnityEngine.Rendering.PassType passType, string[] keywords);