Beispiel #1
0
        private static RuntimeShaderProfilesAsset Create()
        {
            RuntimeShaderProfilesAsset asset = ScriptableObject.CreateInstance <RuntimeShaderProfilesAsset>();

            asset.ShaderInfo = new List <RuntimeShaderInfo>();

            ShaderInfo[]     allShaderInfo = ShaderUtil.GetAllShaderInfo().OrderBy(si => si.name).ToArray();
            HashSet <string> shaderNames   = new HashSet <string>();

            for (int i = 0; i < allShaderInfo.Length; ++i)
            {
                ShaderInfo shaderInfo = allShaderInfo[i];
                Shader     shader     = Shader.Find(shaderInfo.name);

                RuntimeShaderInfo profile = Create(shader);
                asset.ShaderInfo.Add(profile);

                if (shaderNames.Contains(shaderInfo.name))
                {
                    Debug.LogWarning("Shader with same name already exists. Consider renaming " + shaderInfo.name + " shader. File: " + AssetDatabase.GetAssetPath(shader));
                }
                else
                {
                    shaderNames.Add(shaderInfo.name);
                }
            }
            return(asset);
        }
Beispiel #2
0
        public RuntimeShaderUtil()
        {
            RuntimeShaderProfilesAsset asset = Resources.Load <RuntimeShaderProfilesAsset>("RTSL2ShaderProfiles");

            if (asset == null)
            {
                Debug.LogError("Unable to find RuntimeShaderProfilesAsset. Click Tools->Runtime SaveLoad2->Create Shader Profiles");
                return;
            }
            m_nameToShaderInfo = new Dictionary <string, RuntimeShaderInfo>();
            for (int i = 0; i < asset.ShaderInfo.Count; ++i)
            {
                RuntimeShaderInfo info = asset.ShaderInfo[i];
                if (info != null)
                {
                    if (m_nameToShaderInfo.ContainsKey(info.Name))
                    {
                        Debug.LogWarning("Shader with " + info.Name + " already exists.");
                    }
                    else
                    {
                        m_nameToShaderInfo.Add(info.Name, info);
                    }
                }
            }
        }
Beispiel #3
0
        public static void CreateProfile()
        {
            RuntimeShaderProfilesAsset asset = Create();
            string dir      = BHPath.Root + "/RTSaveLoad2";
            string dataPath = Application.dataPath + "/";

            if (!Directory.Exists(dataPath + dir + "/Resources_Auto"))
            {
                AssetDatabase.CreateFolder("Assets/" + dir, "Resources_Auto");
            }

            dir = dir + "/Resources_Auto";
            if (!Directory.Exists(dataPath + dir + "/Resources"))
            {
                AssetDatabase.CreateFolder("Assets/" + dir, "Resources");
            }

            string path = "Assets/" + BHPath.Root + "/RTSaveLoad2/Resources_Auto/Resources/RTSL2ShaderProfiles.asset";

            AssetDatabase.DeleteAsset(path);
            AssetDatabase.CreateAsset(asset, path);
            AssetDatabase.SaveAssets();

            Selection.activeObject = asset;
            EditorGUIUtility.PingObject(asset);
        }