121 lines
8.2 KiB
C#
121 lines
8.2 KiB
C#
using UnityEngine;
|
|
using UnityEditor.Rendering;
|
|
using UnityEngine.Rendering.Universal;
|
|
|
|
namespace UnityEditor.Rendering.Universal
|
|
{
|
|
[CustomEditor(typeof(ScreenSpaceLensFlare))]
|
|
class ScreenSpaceLensFlareEditor : VolumeComponentEditor
|
|
{
|
|
protected SerializedDataParameter m_Intensity;
|
|
protected SerializedDataParameter m_TintColor;
|
|
protected SerializedDataParameter m_BloomMip;
|
|
protected SerializedDataParameter m_FirstFlareIntensity;
|
|
protected SerializedDataParameter m_SecondaryFlareIntensity;
|
|
protected SerializedDataParameter m_WarpedFlareIntensity;
|
|
protected SerializedDataParameter m_WarpedFlareScale;
|
|
protected SerializedDataParameter m_Samples;
|
|
protected SerializedDataParameter m_SampleDimmer;
|
|
protected SerializedDataParameter m_VignetteEffect;
|
|
protected SerializedDataParameter m_StartingPosition;
|
|
protected SerializedDataParameter m_Scale;
|
|
protected SerializedDataParameter m_ChromaticAbberationIntensity;
|
|
protected SerializedDataParameter m_StreaksIntensity;
|
|
protected SerializedDataParameter m_StreaksLength;
|
|
protected SerializedDataParameter m_StreaksOrientation;
|
|
protected SerializedDataParameter m_StreaksThreshold;
|
|
protected SerializedDataParameter m_Resolution;
|
|
|
|
static GUIContent s_Intensity = EditorGUIUtility.TrTextContent("Intensity", "Sets the global intensity of the Screen Space Lens Flare effect. When set to 0, the pass is skipped. ");
|
|
static GUIContent s_TintColor = EditorGUIUtility.TrTextContent("Tint Color", "Sets the color used to tint all the flares. ");
|
|
static GUIContent s_BloomMip = EditorGUIUtility.TrTextContent("Bloom Mip Bias", "Controls the Bloom mip used as a source for the Lens Flare effect. A high value will result in a blurrier result for all the flares.");
|
|
static GUIContent s_FirstFlareIntensity = EditorGUIUtility.TrTextContent("Regular Multiplier", "Controls the intensity of the Regular Flare sample. Those flares are sampled using scaled screen coordinates.");
|
|
static GUIContent s_SecondaryFlareIntensity = EditorGUIUtility.TrTextContent("Reversed Multiplier", "Controls the intensity of the Reversed Flare sample. Those flares are sampled using scaled and flipped screen coordinates.");
|
|
static GUIContent s_WarpedFlareIntensity = EditorGUIUtility.TrTextContent("Warped Multiplier", "Controls the intensity of the Warped Flare sample. Those flares are sampled using polar screen coordinates.");
|
|
static GUIContent s_WarpedFlareScale = EditorGUIUtility.TrTextContent("Scale", "Sets the scale of the Warped Flare sample. A value of 1,1 will keep this flare circular. Set values below 1 can lead to stretching artifacts on the side of the screen.");
|
|
static GUIContent s_Samples = EditorGUIUtility.TrTextContent("Samples", "Controls the number of times the flare effect is repeated for each flare type (regular, reversed, warped). This parameter has a strong impact on performance.");
|
|
static GUIContent s_SampleDimmer = EditorGUIUtility.TrTextContent("Sample Dimmer", "Controls the value by which each additionnal sample is multiplied. This parameter has an effect only after the first sample.");
|
|
static GUIContent s_VignetteEffect = EditorGUIUtility.TrTextContent("Vignette Effect", "Controls the intensity of the vignette effect to occlude the Lens Flare effect at the center of the screen.");
|
|
static GUIContent s_StartingPosition = EditorGUIUtility.TrTextContent("Starting Position", "Controls the starting position of the flares in screen space relative to their source.");
|
|
static GUIContent s_Scale = EditorGUIUtility.TrTextContent("Scale", "Controls the scale at which the flares are sampled. This parameter only impacts regular, reversed and warped flares.");
|
|
static GUIContent s_ChromaticAbberationIntensity = EditorGUIUtility.TrTextContent("Intensity", "Controls the strength of the Chromatic Aberration effect. The higher the value, the more light is dispersed on the sides of the screen.");
|
|
static GUIContent s_StreaksIntensity = EditorGUIUtility.TrTextContent("Multiplier", "Controls the intensity of streaks effect. This effect has an impact on performance when above zero. When this intensity is zero, this effect is not evaluated to save costs.");
|
|
static GUIContent s_StreaksOrientation = EditorGUIUtility.TrTextContent("Orientation", "Controls the orientation streaks effect in degrees. A value of 0 creates horizontal streaks.");
|
|
static GUIContent s_StreaksLength = EditorGUIUtility.TrTextContent("Length", "Controls the length of streaks effect. A value of one creates streaks about the width of the screen.");
|
|
static GUIContent s_StreaksThreshold = EditorGUIUtility.TrTextContent("Threshold", "Controls the threshold of streak effect. A high value makes the effect more localised on the high intensity areas of the screen. When using a non HDR Camera, a high threshold can remove streaks entirely.");
|
|
static GUIContent s_Resolution = EditorGUIUtility.TrTextContent("Resolution", "Specifies the resolution ratio at which the streaks effect is computed.");
|
|
|
|
public override void OnEnable()
|
|
{
|
|
var o = new PropertyFetcher<ScreenSpaceLensFlare>(serializedObject);
|
|
|
|
m_Intensity = Unpack(o.Find(x => x.intensity));
|
|
m_TintColor = Unpack(o.Find(x => x.tintColor));
|
|
m_BloomMip = Unpack(o.Find(x => x.bloomMip));
|
|
m_FirstFlareIntensity = Unpack(o.Find(x => x.firstFlareIntensity));
|
|
m_SecondaryFlareIntensity = Unpack(o.Find(x => x.secondaryFlareIntensity));
|
|
m_WarpedFlareIntensity = Unpack(o.Find(x => x.warpedFlareIntensity));
|
|
m_WarpedFlareScale = Unpack(o.Find(x => x.warpedFlareScale));
|
|
m_Samples = Unpack(o.Find(x => x.samples));
|
|
m_SampleDimmer = Unpack(o.Find(x => x.sampleDimmer));
|
|
m_VignetteEffect = Unpack(o.Find(x => x.vignetteEffect));
|
|
m_StartingPosition = Unpack(o.Find(x => x.startingPosition));
|
|
m_Scale = Unpack(o.Find(x => x.scale));
|
|
m_ChromaticAbberationIntensity = Unpack(o.Find(x => x.chromaticAbberationIntensity));
|
|
m_StreaksIntensity = Unpack(o.Find(x => x.streaksIntensity));
|
|
m_StreaksLength = Unpack(o.Find(x => x.streaksLength));
|
|
m_StreaksOrientation = Unpack(o.Find(x => x.streaksOrientation));
|
|
m_StreaksThreshold = Unpack(o.Find(x => x.streaksThreshold));
|
|
m_Resolution = Unpack(o.Find(x => x.resolution));
|
|
|
|
}
|
|
|
|
public override void OnInspectorGUI()
|
|
{
|
|
PropertyField(m_Intensity, s_Intensity);
|
|
PropertyField(m_TintColor, s_TintColor);
|
|
PropertyField(m_BloomMip, s_BloomMip);
|
|
|
|
//Regular Flares
|
|
PropertyField(m_FirstFlareIntensity, s_FirstFlareIntensity);
|
|
PropertyField(m_SecondaryFlareIntensity, s_SecondaryFlareIntensity);
|
|
PropertyField(m_WarpedFlareIntensity, s_WarpedFlareIntensity);
|
|
|
|
if(showAdditionalProperties)
|
|
{
|
|
using (new IndentLevelScope())
|
|
{
|
|
PropertyField(m_WarpedFlareScale, s_WarpedFlareScale);
|
|
}
|
|
}
|
|
|
|
//Parameters for Regular Flares
|
|
PropertyField(m_Samples, s_Samples);
|
|
if(showAdditionalProperties)
|
|
{
|
|
using (new IndentLevelScope())
|
|
{
|
|
PropertyField(m_SampleDimmer, s_SampleDimmer);
|
|
}
|
|
}
|
|
PropertyField(m_VignetteEffect, s_VignetteEffect);
|
|
PropertyField(m_StartingPosition, s_StartingPosition);
|
|
PropertyField(m_Scale, s_Scale);
|
|
|
|
//Streaks
|
|
PropertyField(m_StreaksIntensity, s_StreaksIntensity);
|
|
using (new IndentLevelScope())
|
|
{
|
|
PropertyField(m_StreaksLength, s_StreaksLength);
|
|
PropertyField(m_StreaksOrientation, s_StreaksOrientation);
|
|
PropertyField(m_StreaksThreshold, s_StreaksThreshold);
|
|
PropertyField(m_Resolution, s_Resolution);
|
|
}
|
|
|
|
//Chromatic Aberration
|
|
PropertyField(m_ChromaticAbberationIntensity, s_ChromaticAbberationIntensity);
|
|
}
|
|
|
|
}
|
|
}
|