您最多选择25个主题
主题必须以中文或者字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
100 行
4.3 KiB
100 行
4.3 KiB
using UnityEngine;
|
|
using UnityEngine.PostProcessing;
|
|
|
|
namespace UnityEditor.PostProcessing
|
|
{
|
|
using Settings = ScreenSpaceReflectionModel.Settings;
|
|
|
|
[PostProcessingModelEditor(typeof(ScreenSpaceReflectionModel))]
|
|
public class ScreenSpaceReflectionModelEditor : PostProcessingModelEditor
|
|
{
|
|
struct IntensitySettings
|
|
{
|
|
public SerializedProperty reflectionMultiplier;
|
|
public SerializedProperty fadeDistance;
|
|
public SerializedProperty fresnelFade;
|
|
public SerializedProperty fresnelFadePower;
|
|
}
|
|
|
|
struct ReflectionSettings
|
|
{
|
|
public SerializedProperty blendType;
|
|
public SerializedProperty reflectionQuality;
|
|
public SerializedProperty maxDistance;
|
|
public SerializedProperty iterationCount;
|
|
public SerializedProperty stepSize;
|
|
public SerializedProperty widthModifier;
|
|
public SerializedProperty reflectionBlur;
|
|
public SerializedProperty reflectBackfaces;
|
|
}
|
|
|
|
struct ScreenEdgeMask
|
|
{
|
|
public SerializedProperty intensity;
|
|
}
|
|
|
|
IntensitySettings m_Intensity;
|
|
ReflectionSettings m_Reflection;
|
|
ScreenEdgeMask m_ScreenEdgeMask;
|
|
|
|
public override void OnEnable()
|
|
{
|
|
m_Intensity = new IntensitySettings
|
|
{
|
|
reflectionMultiplier = FindSetting((Settings x) => x.intensity.reflectionMultiplier),
|
|
fadeDistance = FindSetting((Settings x) => x.intensity.fadeDistance),
|
|
fresnelFade = FindSetting((Settings x) => x.intensity.fresnelFade),
|
|
fresnelFadePower = FindSetting((Settings x) => x.intensity.fresnelFadePower)
|
|
};
|
|
|
|
m_Reflection = new ReflectionSettings
|
|
{
|
|
blendType = FindSetting((Settings x) => x.reflection.blendType),
|
|
reflectionQuality = FindSetting((Settings x) => x.reflection.reflectionQuality),
|
|
maxDistance = FindSetting((Settings x) => x.reflection.maxDistance),
|
|
iterationCount = FindSetting((Settings x) => x.reflection.iterationCount),
|
|
stepSize = FindSetting((Settings x) => x.reflection.stepSize),
|
|
widthModifier = FindSetting((Settings x) => x.reflection.widthModifier),
|
|
reflectionBlur = FindSetting((Settings x) => x.reflection.reflectionBlur),
|
|
reflectBackfaces = FindSetting((Settings x) => x.reflection.reflectBackfaces)
|
|
};
|
|
|
|
m_ScreenEdgeMask = new ScreenEdgeMask
|
|
{
|
|
intensity = FindSetting((Settings x) => x.screenEdgeMask.intensity)
|
|
};
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
EditorGUILayout.HelpBox("This effect only works with the deferred rendering path.", MessageType.Info);
|
|
|
|
EditorGUILayout.LabelField("Reflection", EditorStyles.boldLabel);
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(m_Reflection.blendType);
|
|
EditorGUILayout.PropertyField(m_Reflection.reflectionQuality);
|
|
EditorGUILayout.PropertyField(m_Reflection.maxDistance);
|
|
EditorGUILayout.PropertyField(m_Reflection.iterationCount);
|
|
EditorGUILayout.PropertyField(m_Reflection.stepSize);
|
|
EditorGUILayout.PropertyField(m_Reflection.widthModifier);
|
|
EditorGUILayout.PropertyField(m_Reflection.reflectionBlur);
|
|
EditorGUILayout.PropertyField(m_Reflection.reflectBackfaces);
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.Space();
|
|
EditorGUILayout.LabelField("Intensity", EditorStyles.boldLabel);
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(m_Intensity.reflectionMultiplier);
|
|
EditorGUILayout.PropertyField(m_Intensity.fadeDistance);
|
|
EditorGUILayout.PropertyField(m_Intensity.fresnelFade);
|
|
EditorGUILayout.PropertyField(m_Intensity.fresnelFadePower);
|
|
EditorGUI.indentLevel--;
|
|
|
|
EditorGUILayout.Space();
|
|
EditorGUILayout.LabelField("Screen Edge Mask", EditorStyles.boldLabel);
|
|
EditorGUI.indentLevel++;
|
|
EditorGUILayout.PropertyField(m_ScreenEdgeMask.intensity);
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
}
|
|
}
|