NoiseAndGrainEditor.cs 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. using System;
  2. using UnityEditor;
  3. using UnityEngine;
  4. namespace UnityStandardAssets.ImageEffects
  5. {
  6. [CustomEditor (typeof( NoiseAndGrain))]
  7. class NoiseAndGrainEditor : Editor
  8. {
  9. SerializedObject serObj;
  10. SerializedProperty intensityMultiplier;
  11. SerializedProperty generalIntensity;
  12. SerializedProperty blackIntensity;
  13. SerializedProperty whiteIntensity;
  14. SerializedProperty midGrey;
  15. SerializedProperty dx11Grain;
  16. SerializedProperty softness;
  17. SerializedProperty monochrome;
  18. SerializedProperty intensities;
  19. SerializedProperty tiling;
  20. SerializedProperty monochromeTiling;
  21. SerializedProperty noiseTexture;
  22. SerializedProperty filterMode;
  23. void OnEnable () {
  24. serObj = new SerializedObject (target);
  25. intensityMultiplier = serObj.FindProperty("intensityMultiplier");
  26. generalIntensity = serObj.FindProperty("generalIntensity");
  27. blackIntensity = serObj.FindProperty("blackIntensity");
  28. whiteIntensity = serObj.FindProperty("whiteIntensity");
  29. midGrey = serObj.FindProperty("midGrey");
  30. dx11Grain = serObj.FindProperty("dx11Grain");
  31. softness = serObj.FindProperty("softness");
  32. monochrome = serObj.FindProperty("monochrome");
  33. intensities = serObj.FindProperty("intensities");
  34. tiling = serObj.FindProperty("tiling");
  35. monochromeTiling = serObj.FindProperty("monochromeTiling");
  36. noiseTexture = serObj.FindProperty("noiseTexture");
  37. filterMode = serObj.FindProperty("filterMode");
  38. }
  39. public override void OnInspectorGUI () {
  40. serObj.Update();
  41. EditorGUILayout.LabelField("Overlays animated noise patterns", EditorStyles.miniLabel);
  42. EditorGUILayout.PropertyField(dx11Grain, new GUIContent("DirectX 11 Grain"));
  43. if (dx11Grain.boolValue && !(target as NoiseAndGrain).Dx11Support()) {
  44. EditorGUILayout.HelpBox("DX11 mode not supported (need DX11 GPU and enable DX11 in PlayerSettings)", MessageType.Info);
  45. }
  46. EditorGUILayout.PropertyField(monochrome, new GUIContent("Monochrome"));
  47. EditorGUILayout.Separator();
  48. EditorGUILayout.Slider(intensityMultiplier, 0.0f, 10.0f, new GUIContent("Intensity Multiplier"));
  49. EditorGUILayout.Slider(generalIntensity, 0.0f, 1.0f, new GUIContent(" General"));
  50. EditorGUILayout.Slider(blackIntensity, 0.0f, 1.0f, new GUIContent(" Black Boost"));
  51. EditorGUILayout.Slider(whiteIntensity, 0.0f, 1.0f, new GUIContent(" White Boost"));
  52. midGrey.floatValue = EditorGUILayout.Slider( new GUIContent(" Mid Grey (for Boost)"), midGrey.floatValue, 0.0f, 1.0f);
  53. if (monochrome.boolValue == false) {
  54. Color c = new Color(intensities.vector3Value.x,intensities.vector3Value.y,intensities.vector3Value.z,1.0f);
  55. c = EditorGUILayout.ColorField(new GUIContent(" Color Weights"), c);
  56. intensities.vector3Value = new Vector3(c.r, c.g, c.b);
  57. }
  58. if (!dx11Grain.boolValue) {
  59. EditorGUILayout.Separator();
  60. EditorGUILayout.LabelField("Noise Shape");
  61. EditorGUILayout.PropertyField(noiseTexture, new GUIContent(" Texture"));
  62. EditorGUILayout.PropertyField(filterMode, new GUIContent(" Filter"));
  63. }
  64. else {
  65. EditorGUILayout.Separator();
  66. EditorGUILayout.LabelField("Noise Shape");
  67. }
  68. softness.floatValue = EditorGUILayout.Slider( new GUIContent(" Softness"),softness.floatValue, 0.0f, 0.99f);
  69. if (!dx11Grain.boolValue) {
  70. EditorGUILayout.Separator();
  71. EditorGUILayout.LabelField("Advanced");
  72. if (monochrome.boolValue == false)
  73. {
  74. Vector3 temp = tiling.vector3Value;
  75. temp.x = EditorGUILayout.FloatField(new GUIContent(" Tiling (Red)"), tiling.vector3Value.x);
  76. temp.y = EditorGUILayout.FloatField(new GUIContent(" Tiling (Green)"), tiling.vector3Value.y);
  77. temp.z = EditorGUILayout.FloatField(new GUIContent(" Tiling (Blue)"), tiling.vector3Value.z);
  78. tiling.vector3Value = temp;
  79. }
  80. else {
  81. EditorGUILayout.PropertyField(monochromeTiling, new GUIContent(" Tiling"));
  82. }
  83. }
  84. serObj.ApplyModifiedProperties();
  85. }
  86. }
  87. }