Example #1
0
        private void ShowShaderWithProperties(ShaderDefaultMap shaderDefaultMap)
        {
            GUIStyle oldReferenceStyle = "CN StatusWarn";

            //EditorGUILayout.LabelField(shaderDefaultMap.shader.name + " (" + shaderDefaultMap.shaderAssetBundleName + ")");
            GUILayout.BeginHorizontal();
            EditorGUILayout.ObjectField("Shader", shaderDefaultMap.shader, typeof(Shader), false);
            EditorGUILayout.LabelField(shaderDefaultMap.assetBundleName);
            GUILayout.EndHorizontal();
            EditorGUI.indentLevel++;
            {
                foreach (var prop in shaderDefaultMap.properties)
                {
                    //EditorGUILayout.LabelField(prop.propertyName, prop.texture.name + " (" + prop.textureAssetBundleName + ")");
                    GUILayout.BeginHorizontal();
                    EditorGUILayout.ObjectField("Texture", prop.texture, typeof(Texture), false, GUILayout.MaxHeight(16f));
                    if (prop.assetBundleName != shaderDefaultMap.assetBundleName)
                    {
                        EditorGUILayout.LabelField(prop.assetBundleName, oldReferenceStyle);
                    }
                    else
                    {
                        EditorGUILayout.LabelField(prop.assetBundleName);
                    }

                    GUILayout.EndHorizontal();
                }
            }
            EditorGUI.indentLevel--;
            EditorGUILayout.Space();
        }
Example #2
0
        private void UpdateShaderMap()
        {
            int shadersWithDefaultMapCount = 0;

            m_shadersWithDefaultMap.Clear();

            StringBuilder report = new StringBuilder();

            string[] assetGUIDs = AssetDatabase.FindAssets("t:shader");
            Debug.Log("Found shaders: " + assetGUIDs.Length);
            foreach (var assetGUID in assetGUIDs)
            {
                var            assetPath      = AssetDatabase.GUIDToAssetPath(assetGUID);
                var            importer       = AssetImporter.GetAtPath(assetPath);
                ShaderImporter shaderImporter = importer as ShaderImporter;

                List <TextureProp> properties = new List <TextureProp>();
                GetProperties(ref properties, shaderImporter);
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("Shader: " + assetPath + " (bundle: " + importer.assetBundleName + ")");
                bool hasDefaultMap = false;

                ShaderDefaultMap sdm = new ShaderDefaultMap();
                sdm.shader          = shaderImporter.GetShader();
                sdm.assetBundleName = importer.assetBundleName;
                sdm.properties      = new List <TextureProp>();

                // Walk through shader's textures and see if it's in the same asset bundle
                for (int i = 0; i < properties.Count; ++i)
                {
                    var prop = properties[i];
                    if (prop.texture != null)
                    {
                        sdm.properties.Add(prop);
                        hasDefaultMap = true;
                        sb.AppendLine("\t" + prop.propertyName + ", " + prop.texture.name + " (bundle: " + prop.assetBundleName + ")");
                    }
                }

                if (hasDefaultMap)
                {
                    m_shadersWithDefaultMap.Add(sdm);
                    report.AppendLine(sb.ToString());
                    ++shadersWithDefaultMapCount;
                }
            }

            //Debug.Log(report.ToString());
            //Debug.LogWarning("Shaders with Default Map: " + shadersWithDefaultMapCount);
        }