| | |
| | | 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(); |
| | | } |
| | | } |
| | | } |
| | | 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();
|
| | | }
|
| | | }
|
| | | }
|