源战役客户端
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 
 

89 строки
4.7 KiB

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