|
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
[CustomEditor(typeof(PostEffect))]
|
|
public class PostEffectEditor : Editor
|
|
{
|
|
PostEffect postEffect;
|
|
bool first_loaded = true;
|
|
BlurType temp_blurType = BlurType.Standard;
|
|
public override void OnInspectorGUI()
|
|
{
|
|
postEffect = target as PostEffect;
|
|
DoBloom();
|
|
DoFXAA();
|
|
DoBlurEffect();
|
|
DoCheckMaterial();
|
|
first_loaded = false;
|
|
}
|
|
void DoBloom()
|
|
{
|
|
GUILayout.Label("泛光相关参数", EditorStyles.boldLabel);
|
|
postEffect.EnableBloom = EditorGUILayout.Toggle("Enable Bloom", postEffect.EnableBloom);
|
|
postEffect.fastBloomShader = EditorGUILayout.ObjectField("Bloom Shader(Guassian)", postEffect.fastBloomShader, typeof(Shader), true) as Shader;
|
|
postEffect.dualBloomShader = EditorGUILayout.ObjectField("Bloom Shader(Dual)", postEffect.dualBloomShader, typeof(Shader), true) as Shader;
|
|
if(postEffect.EnableBloom && postEffect.fastBloomShader != null && postEffect.dualBloomShader != null)
|
|
{
|
|
postEffect.use_dual_bloom = EditorGUILayout.Toggle("Use Dual Bloom", postEffect.use_dual_bloom);
|
|
postEffect.threshold = EditorGUILayout.Slider("Bloom Threshold", postEffect.threshold, 0f, 1.5f);
|
|
postEffect.intensity = EditorGUILayout.Slider("Bloom Intensity", postEffect.intensity, 0f, 3f);
|
|
postEffect.blurSize = EditorGUILayout.Slider("Bloom BlurSize", postEffect.blurSize, 0.25f, 5.5f);
|
|
postEffect.blurIterations = EditorGUILayout.IntSlider("Bloom Iteration", postEffect.blurIterations, 1, 4);
|
|
postEffect.blurType = (BlurType)EditorGUILayout.EnumPopup("Bloom BlurType", postEffect.blurType);
|
|
if(temp_blurType != postEffect.blurType || first_loaded)
|
|
{
|
|
postEffect.ApplyBloomMaterialProperties();
|
|
temp_blurType = postEffect.blurType;
|
|
}
|
|
if(GUILayout.Button("Apply Bloom Properties"))
|
|
{
|
|
postEffect.ApplyBloomMaterialProperties();
|
|
}
|
|
}
|
|
GUILayout.Space(20);
|
|
}
|
|
void DoFXAA()
|
|
{
|
|
GUILayout.Label("FXAA抗锯齿相关参数", EditorStyles.boldLabel);
|
|
postEffect.EnableFXAA = EditorGUILayout.Toggle("Enable FXAA", postEffect.EnableFXAA);
|
|
postEffect.FXAAShader = EditorGUILayout.ObjectField("FXAA Shader", postEffect.FXAAShader, typeof(Shader), true) as Shader;
|
|
if(postEffect.EnableFXAA && postEffect.FXAAShader != null)
|
|
{
|
|
postEffect.lowQuality = EditorGUILayout.Toggle("FXAA LowQuality", postEffect.lowQuality);
|
|
postEffect.contrastThreshold = EditorGUILayout.Slider("FXAA ContrastThreshold", postEffect.contrastThreshold, 0.0312f, 0.0833f);
|
|
postEffect.relativeThreshold = EditorGUILayout.Slider("FXAA RelativeThreshold", postEffect.relativeThreshold, 0.063f, 0.333f);
|
|
postEffect.subpixelBlending = EditorGUILayout.Slider("FXAA RelativeThreshold", postEffect.subpixelBlending, 0f, 1f);
|
|
if(GUILayout.Button("Apply FXAA Properties"))
|
|
{
|
|
postEffect.ApplyFXAAMaterialProperties();
|
|
}
|
|
}
|
|
GUILayout.Space(20);
|
|
}
|
|
void DoBlurEffect()
|
|
{
|
|
GUILayout.Label("模糊后处理相关参数", EditorStyles.boldLabel);
|
|
postEffect.EnableBlur = EditorGUILayout.Toggle("Enable Blur", postEffect.EnableBlur);
|
|
postEffect.blurShader = EditorGUILayout.ObjectField("GuassianBlur Shader", postEffect.blurShader, typeof(Shader), true) as Shader;
|
|
postEffect.dualBlurShader = EditorGUILayout.ObjectField("DualBlur Shader", postEffect.dualBlurShader, typeof(Shader), true) as Shader;
|
|
if(postEffect.EnableBlur && postEffect.blurShader != null && postEffect.dualBlurShader != null)
|
|
{
|
|
postEffect.use_dual_blur = EditorGUILayout.Toggle("Use Dual Blur", postEffect.use_dual_blur);
|
|
postEffect.render_blur_effect = EditorGUILayout.Toggle("Use Continues Blur", postEffect.render_blur_effect);
|
|
// postEffect.get_screen_shot = EditorGUILayout.Toggle("Get Blur ScreenShot", postEffect.get_screen_shot);
|
|
postEffect.blurSpread = EditorGUILayout.Slider("Blur Spread", postEffect.blurSpread, 0, 10f);
|
|
postEffect.blur_amount = EditorGUILayout.Slider("Blur Amount", postEffect.blur_amount, 0, 1f);
|
|
postEffect.recurveMaxNum = EditorGUILayout.IntSlider("Blur Iteration", postEffect.recurveMaxNum, 1, 10);
|
|
postEffect.downSample = EditorGUILayout.IntSlider("Blur DownSample", postEffect.downSample, 1, 6);
|
|
}
|
|
GUILayout.Space(20);
|
|
}
|
|
|
|
void DoCheckMaterial()
|
|
{
|
|
if(GUILayout.Button("Check Material"))
|
|
{
|
|
postEffect.CheckResources();
|
|
}
|
|
}
|
|
}
|