using System; namespace UnityEngine.PostProcessing { [Serializable] public class BuiltinDebugViewsModel : PostProcessingModel { [Serializable] public struct DepthSettings { [Range(0f, 1f), Tooltip("Scales the camera far plane before displaying the depth map.")] public float scale; public static DepthSettings defaultSettings { get { return new DepthSettings { scale = 1f }; } } } [Serializable] public struct MotionVectorsSettings { [Range(0f, 1f), Tooltip("Opacity of the source render.")] public float sourceOpacity; [Range(0f, 1f), Tooltip("Opacity of the per-pixel motion vector colors.")] public float motionImageOpacity; [Min(0f), Tooltip("Because motion vectors are mainly very small vectors, you can use this setting to make them more visible.")] public float motionImageAmplitude; [Range(0f, 1f), Tooltip("Opacity for the motion vector arrows.")] public float motionVectorsOpacity; [Range(8, 64), Tooltip("The arrow density on screen.")] public int motionVectorsResolution; [Min(0f), Tooltip("Tweaks the arrows length.")] public float motionVectorsAmplitude; public static MotionVectorsSettings defaultSettings { get { return new MotionVectorsSettings { sourceOpacity = 1f, motionImageOpacity = 0f, motionImageAmplitude = 16f, motionVectorsOpacity = 1f, motionVectorsResolution = 24, motionVectorsAmplitude = 64f }; } } } public enum Mode { None, Depth, Normals, MotionVectors, AmbientOcclusion, EyeAdaptation, FocusPlane, PreGradingLog, LogLut, UserLut } [Serializable] public struct Settings { public Mode mode; public DepthSettings depth; public MotionVectorsSettings motionVectors; public static Settings defaultSettings { get { return new Settings { mode = Mode.None, depth = DepthSettings.defaultSettings, motionVectors = MotionVectorsSettings.defaultSettings }; } } } [SerializeField] Settings m_Settings = Settings.defaultSettings; public Settings settings { get { return m_Settings; } set { m_Settings = value; } } public bool willInterrupt { get { return !IsModeActive(Mode.None) && !IsModeActive(Mode.EyeAdaptation) && !IsModeActive(Mode.PreGradingLog) && !IsModeActive(Mode.LogLut) && !IsModeActive(Mode.UserLut); } } public override void Reset() { settings = Settings.defaultSettings; } public bool IsModeActive(Mode mode) { return m_Settings.mode == mode; } } }