You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
3.2 KiB
87 lines
3.2 KiB
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(); |
|
} |
|
} |
|
}
|
|
|