You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
4.3 KiB
100 lines
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--; |
|
} |
|
} |
|
}
|
|
|