- BloomAndFlaresEditor.cs
- ImageEffects /
- Editor /
- Assets /
- project /
1 using System;
2 using UnityEditor;
3 using UnityEngine;
4
5 namespace UnityStandardAssets.ImageEffects
6 {
7 [CustomEditor (typeof(BloomAndFlares))]
8 class BloomAndFlaresEditor : Editor
9 {
10 SerializedProperty tweakMode;
11 SerializedProperty screenBlendMode;
12
13 SerializedObject serObj;
14
15 SerializedProperty hdr;
16 SerializedProperty sepBlurSpread;
17 SerializedProperty useSrcAlphaAsMask;
18
19 SerializedProperty bloomIntensity;
20 SerializedProperty bloomthreshold;
21 SerializedProperty bloomBlurIterations;
22
23 SerializedProperty lensflares;
24
25 SerializedProperty hollywoodFlareBlurIterations;
26
27 SerializedProperty lensflareMode;
28 SerializedProperty hollyStretchWidth;
29 SerializedProperty lensflareIntensity;
30 SerializedProperty lensflarethreshold;
31 SerializedProperty flareColorA;
32 SerializedProperty flareColorB;
33 SerializedProperty flareColorC;
34 SerializedProperty flareColorD;
35
36 SerializedProperty lensFlareVignetteMask;
37
38 void OnEnable () {
39 serObj = new SerializedObject (target);
40
41 screenBlendMode = serObj.FindProperty("screenBlendMode");
42 hdr = serObj.FindProperty("hdr");
43
44 sepBlurSpread = serObj.FindProperty("sepBlurSpread");
45 useSrcAlphaAsMask = serObj.FindProperty("useSrcAlphaAsMask");
46
47 bloomIntensity = serObj.FindProperty("bloomIntensity");
48 bloomthreshold = serObj.FindProperty("bloomThreshold");
49 bloomBlurIterations = serObj.FindProperty("bloomBlurIterations");
50
51 lensflares = serObj.FindProperty("lensflares");
52
53 lensflareMode = serObj.FindProperty("lensflareMode");
54 hollywoodFlareBlurIterations = serObj.FindProperty("hollywoodFlareBlurIterations");
55 hollyStretchWidth = serObj.FindProperty("hollyStretchWidth");
56 lensflareIntensity = serObj.FindProperty("lensflareIntensity");
57 lensflarethreshold = serObj.FindProperty("lensflareThreshold");
58 flareColorA = serObj.FindProperty("flareColorA");
59 flareColorB = serObj.FindProperty("flareColorB");
60 flareColorC = serObj.FindProperty("flareColorC");
61 flareColorD = serObj.FindProperty("flareColorD");
62 lensFlareVignetteMask = serObj.FindProperty("lensFlareVignetteMask");
63
64 tweakMode = serObj.FindProperty("tweakMode");
65 }
66
67
68 public override void OnInspectorGUI () {
69 serObj.Update();
70
71 GUILayout.Label("HDR " + (hdr.enumValueIndex == 0 ? "auto detected, " : (hdr.enumValueIndex == 1 ? "forced on, " : "disabled, ")) + (useSrcAlphaAsMask.floatValue < 0.1f ? " ignoring alpha channel glow information" : " using alpha channel glow information"), EditorStyles.miniBoldLabel);
72
73 EditorGUILayout.PropertyField (tweakMode, new GUIContent("Tweak mode"));
74 EditorGUILayout.PropertyField (screenBlendMode, new GUIContent("Blend mode"));
75 EditorGUILayout.PropertyField (hdr, new GUIContent("HDR"));
76
77 // display info text when screen blend mode cannot be used
78 Camera cam = (target as BloomAndFlares).GetComponent<Camera>();
79 if (cam != null) {
80 if (screenBlendMode.enumValueIndex==0 && ((cam.hdr && hdr.enumValueIndex==0) || (hdr.enumValueIndex==1))) {
81 EditorGUILayout.HelpBox("Screen blend is not supported in HDR. Using 'Add' instead.", MessageType.Info);
82 }
83 }
84
85 if (1 == tweakMode.intValue)
86 EditorGUILayout.PropertyField (lensflares, new GUIContent("Cast lens flares"));
87
88 EditorGUILayout.Separator ();
89
90 EditorGUILayout.PropertyField (bloomIntensity, new GUIContent("Intensity"));
91 bloomthreshold.floatValue = EditorGUILayout.Slider ("threshold", bloomthreshold.floatValue, -0.05f, 4.0f);
92 bloomBlurIterations.intValue = EditorGUILayout.IntSlider ("Blur iterations", bloomBlurIterations.intValue, 1, 4);
93 sepBlurSpread.floatValue = EditorGUILayout.Slider ("Blur spread", sepBlurSpread.floatValue, 0.1f, 10.0f);
94
95 if (1 == tweakMode.intValue)
96 useSrcAlphaAsMask.floatValue = EditorGUILayout.Slider (new GUIContent("Use alpha mask", "Make alpha channel define glowiness"), useSrcAlphaAsMask.floatValue, 0.0f, 1.0f);
97 else
98 useSrcAlphaAsMask.floatValue = 0.0f;
99
100 if (1 == tweakMode.intValue) {
101 EditorGUILayout.Separator ();
102
103 if (lensflares.boolValue) {
104
105 // further lens flare tweakings
106 if (0 != tweakMode.intValue)
107 EditorGUILayout.PropertyField (lensflareMode, new GUIContent("Lens flare mode"));
108 else
109 lensflareMode.enumValueIndex = 0;
110
111 EditorGUILayout.PropertyField(lensFlareVignetteMask, new GUIContent("Lens flare mask", "This mask is needed to prevent lens flare artifacts"));
112
113 EditorGUILayout.PropertyField (lensflareIntensity, new GUIContent("Local intensity"));
114 lensflarethreshold.floatValue = EditorGUILayout.Slider ("Local threshold", lensflarethreshold.floatValue, 0.0f, 1.0f);
115
116 if (lensflareMode.intValue == 0) {
117 // ghosting
118 EditorGUILayout.BeginHorizontal ();
119 EditorGUILayout.PropertyField (flareColorA, new GUIContent("1st Color"));
120 EditorGUILayout.PropertyField (flareColorB, new GUIContent("2nd Color"));
121 EditorGUILayout.EndHorizontal ();
122
123 EditorGUILayout.BeginHorizontal ();
124 EditorGUILayout.PropertyField (flareColorC, new GUIContent("3rd Color"));
125 EditorGUILayout.PropertyField (flareColorD, new GUIContent("4th Color"));
126 EditorGUILayout.EndHorizontal ();
127 }
128 else if (lensflareMode.intValue == 1) {
129 // hollywood
130 EditorGUILayout.PropertyField (hollyStretchWidth, new GUIContent("Stretch width"));
131 hollywoodFlareBlurIterations.intValue = EditorGUILayout.IntSlider ("Blur iterations", hollywoodFlareBlurIterations.intValue, 1, 4);
132
133 EditorGUILayout.PropertyField (flareColorA, new GUIContent("Tint Color"));
134 }
135 else if (lensflareMode.intValue == 2) {
136 // both
137 EditorGUILayout.PropertyField (hollyStretchWidth, new GUIContent("Stretch width"));
138 hollywoodFlareBlurIterations.intValue = EditorGUILayout.IntSlider ("Blur iterations", hollywoodFlareBlurIterations.intValue, 1, 4);
139
140 EditorGUILayout.BeginHorizontal ();
141 EditorGUILayout.PropertyField (flareColorA, new GUIContent("1st Color"));
142 EditorGUILayout.PropertyField (flareColorB, new GUIContent("2nd Color"));
143 EditorGUILayout.EndHorizontal ();
144
145 EditorGUILayout.BeginHorizontal ();
146 EditorGUILayout.PropertyField (flareColorC, new GUIContent("3rd Color"));
147 EditorGUILayout.PropertyField (flareColorD, new GUIContent("4th Color"));
148 EditorGUILayout.EndHorizontal ();
149 }
150 }
151 } else
152 lensflares.boolValue = false; // disable lens flares in simple tweak mode
153
154 serObj.ApplyModifiedProperties();
155 }
156 }
157 }
2 using UnityEditor;
3 using UnityEngine;
4
5 namespace UnityStandardAssets.ImageEffects
6 {
7 [CustomEditor (typeof(BloomAndFlares))]
8 class BloomAndFlaresEditor : Editor
9 {
10 SerializedProperty tweakMode;
11 SerializedProperty screenBlendMode;
12
13 SerializedObject serObj;
14
15 SerializedProperty hdr;
16 SerializedProperty sepBlurSpread;
17 SerializedProperty useSrcAlphaAsMask;
18
19 SerializedProperty bloomIntensity;
20 SerializedProperty bloomthreshold;
21 SerializedProperty bloomBlurIterations;
22
23 SerializedProperty lensflares;
24
25 SerializedProperty hollywoodFlareBlurIterations;
26
27 SerializedProperty lensflareMode;
28 SerializedProperty hollyStretchWidth;
29 SerializedProperty lensflareIntensity;
30 SerializedProperty lensflarethreshold;
31 SerializedProperty flareColorA;
32 SerializedProperty flareColorB;
33 SerializedProperty flareColorC;
34 SerializedProperty flareColorD;
35
36 SerializedProperty lensFlareVignetteMask;
37
38 void OnEnable () {
39 serObj = new SerializedObject (target);
40
41 screenBlendMode = serObj.FindProperty("screenBlendMode");
42 hdr = serObj.FindProperty("hdr");
43
44 sepBlurSpread = serObj.FindProperty("sepBlurSpread");
45 useSrcAlphaAsMask = serObj.FindProperty("useSrcAlphaAsMask");
46
47 bloomIntensity = serObj.FindProperty("bloomIntensity");
48 bloomthreshold = serObj.FindProperty("bloomThreshold");
49 bloomBlurIterations = serObj.FindProperty("bloomBlurIterations");
50
51 lensflares = serObj.FindProperty("lensflares");
52
53 lensflareMode = serObj.FindProperty("lensflareMode");
54 hollywoodFlareBlurIterations = serObj.FindProperty("hollywoodFlareBlurIterations");
55 hollyStretchWidth = serObj.FindProperty("hollyStretchWidth");
56 lensflareIntensity = serObj.FindProperty("lensflareIntensity");
57 lensflarethreshold = serObj.FindProperty("lensflareThreshold");
58 flareColorA = serObj.FindProperty("flareColorA");
59 flareColorB = serObj.FindProperty("flareColorB");
60 flareColorC = serObj.FindProperty("flareColorC");
61 flareColorD = serObj.FindProperty("flareColorD");
62 lensFlareVignetteMask = serObj.FindProperty("lensFlareVignetteMask");
63
64 tweakMode = serObj.FindProperty("tweakMode");
65 }
66
67
68 public override void OnInspectorGUI () {
69 serObj.Update();
70
71 GUILayout.Label("HDR " + (hdr.enumValueIndex == 0 ? "auto detected, " : (hdr.enumValueIndex == 1 ? "forced on, " : "disabled, ")) + (useSrcAlphaAsMask.floatValue < 0.1f ? " ignoring alpha channel glow information" : " using alpha channel glow information"), EditorStyles.miniBoldLabel);
72
73 EditorGUILayout.PropertyField (tweakMode, new GUIContent("Tweak mode"));
74 EditorGUILayout.PropertyField (screenBlendMode, new GUIContent("Blend mode"));
75 EditorGUILayout.PropertyField (hdr, new GUIContent("HDR"));
76
77 // display info text when screen blend mode cannot be used
78 Camera cam = (target as BloomAndFlares).GetComponent<Camera>();
79 if (cam != null) {
80 if (screenBlendMode.enumValueIndex==0 && ((cam.hdr && hdr.enumValueIndex==0) || (hdr.enumValueIndex==1))) {
81 EditorGUILayout.HelpBox("Screen blend is not supported in HDR. Using 'Add' instead.", MessageType.Info);
82 }
83 }
84
85 if (1 == tweakMode.intValue)
86 EditorGUILayout.PropertyField (lensflares, new GUIContent("Cast lens flares"));
87
88 EditorGUILayout.Separator ();
89
90 EditorGUILayout.PropertyField (bloomIntensity, new GUIContent("Intensity"));
91 bloomthreshold.floatValue = EditorGUILayout.Slider ("threshold", bloomthreshold.floatValue, -0.05f, 4.0f);
92 bloomBlurIterations.intValue = EditorGUILayout.IntSlider ("Blur iterations", bloomBlurIterations.intValue, 1, 4);
93 sepBlurSpread.floatValue = EditorGUILayout.Slider ("Blur spread", sepBlurSpread.floatValue, 0.1f, 10.0f);
94
95 if (1 == tweakMode.intValue)
96 useSrcAlphaAsMask.floatValue = EditorGUILayout.Slider (new GUIContent("Use alpha mask", "Make alpha channel define glowiness"), useSrcAlphaAsMask.floatValue, 0.0f, 1.0f);
97 else
98 useSrcAlphaAsMask.floatValue = 0.0f;
99
100 if (1 == tweakMode.intValue) {
101 EditorGUILayout.Separator ();
102
103 if (lensflares.boolValue) {
104
105 // further lens flare tweakings
106 if (0 != tweakMode.intValue)
107 EditorGUILayout.PropertyField (lensflareMode, new GUIContent("Lens flare mode"));
108 else
109 lensflareMode.enumValueIndex = 0;
110
111 EditorGUILayout.PropertyField(lensFlareVignetteMask, new GUIContent("Lens flare mask", "This mask is needed to prevent lens flare artifacts"));
112
113 EditorGUILayout.PropertyField (lensflareIntensity, new GUIContent("Local intensity"));
114 lensflarethreshold.floatValue = EditorGUILayout.Slider ("Local threshold", lensflarethreshold.floatValue, 0.0f, 1.0f);
115
116 if (lensflareMode.intValue == 0) {
117 // ghosting
118 EditorGUILayout.BeginHorizontal ();
119 EditorGUILayout.PropertyField (flareColorA, new GUIContent("1st Color"));
120 EditorGUILayout.PropertyField (flareColorB, new GUIContent("2nd Color"));
121 EditorGUILayout.EndHorizontal ();
122
123 EditorGUILayout.BeginHorizontal ();
124 EditorGUILayout.PropertyField (flareColorC, new GUIContent("3rd Color"));
125 EditorGUILayout.PropertyField (flareColorD, new GUIContent("4th Color"));
126 EditorGUILayout.EndHorizontal ();
127 }
128 else if (lensflareMode.intValue == 1) {
129 // hollywood
130 EditorGUILayout.PropertyField (hollyStretchWidth, new GUIContent("Stretch width"));
131 hollywoodFlareBlurIterations.intValue = EditorGUILayout.IntSlider ("Blur iterations", hollywoodFlareBlurIterations.intValue, 1, 4);
132
133 EditorGUILayout.PropertyField (flareColorA, new GUIContent("Tint Color"));
134 }
135 else if (lensflareMode.intValue == 2) {
136 // both
137 EditorGUILayout.PropertyField (hollyStretchWidth, new GUIContent("Stretch width"));
138 hollywoodFlareBlurIterations.intValue = EditorGUILayout.IntSlider ("Blur iterations", hollywoodFlareBlurIterations.intValue, 1, 4);
139
140 EditorGUILayout.BeginHorizontal ();
141 EditorGUILayout.PropertyField (flareColorA, new GUIContent("1st Color"));
142 EditorGUILayout.PropertyField (flareColorB, new GUIContent("2nd Color"));
143 EditorGUILayout.EndHorizontal ();
144
145 EditorGUILayout.BeginHorizontal ();
146 EditorGUILayout.PropertyField (flareColorC, new GUIContent("3rd Color"));
147 EditorGUILayout.PropertyField (flareColorD, new GUIContent("4th Color"));
148 EditorGUILayout.EndHorizontal ();
149 }
150 }
151 } else
152 lensflares.boolValue = false; // disable lens flares in simple tweak mode
153
154 serObj.ApplyModifiedProperties();
155 }
156 }
157 }