using UnityEngine; using UnityEngine.PostProcessing; namespace UnityEditor.PostProcessing { using Settings = UserLutModel.Settings; [PostProcessingModelEditor(typeof(UserLutModel))] public class UserLutModelEditor : PostProcessingModelEditor { SerializedProperty m_Texture; SerializedProperty m_Contribution; public override void OnEnable() { m_Texture = FindSetting((Settings x) => x.lut); m_Contribution = FindSetting((Settings x) => x.contribution); } public override void OnInspectorGUI() { var lut = (target as UserLutModel).settings.lut; // Checks import settings on the lut, offers to fix them if invalid if (lut != null) { var importer = (TextureImporter)AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(lut)); if (importer != null) // Fails when using an internal texture { #if UNITY_5_5_OR_NEWER bool valid = importer.anisoLevel == 0 && importer.mipmapEnabled == false && importer.sRGBTexture == false && (importer.textureCompression == TextureImporterCompression.Uncompressed); #else bool valid = importer.anisoLevel == 0 && importer.mipmapEnabled == false && importer.linearTexture == true && (importer.textureFormat == TextureImporterFormat.RGB24 || importer.textureFormat == TextureImporterFormat.AutomaticTruecolor); #endif if (!valid) { EditorGUILayout.HelpBox("Invalid LUT import settings.", MessageType.Warning); GUILayout.Space(-32); using (new EditorGUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); if (GUILayout.Button("Fix", GUILayout.Width(60))) { SetLUTImportSettings(importer); AssetDatabase.Refresh(); } GUILayout.Space(8); } GUILayout.Space(11); } } else { m_Texture.objectReferenceValue = null; } } EditorGUILayout.PropertyField(m_Texture); EditorGUILayout.PropertyField(m_Contribution); } void SetLUTImportSettings(TextureImporter importer) { #if UNITY_5_5_OR_NEWER importer.textureType = TextureImporterType.Default; importer.sRGBTexture = false; importer.textureCompression = TextureImporterCompression.Uncompressed; #else importer.textureType = TextureImporterType.Advanced; importer.linearTexture = true; importer.textureFormat = TextureImporterFormat.RGB24; #endif importer.anisoLevel = 0; importer.mipmapEnabled = false; importer.SaveAndReimport(); } } }