123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- using System;
- namespace UnityEngine.PostProcessing
- {
- [Serializable]
- public class ColorGradingModel : PostProcessingModel
- {
- public ColorGradingModel.Settings settings
- {
- get
- {
- return this.m_Settings;
- }
- set
- {
- this.m_Settings = value;
- this.OnValidate();
- }
- }
- public bool isDirty { get; internal set; }
- public RenderTexture bakedLut { get; internal set; }
- public override void Reset()
- {
- this.m_Settings = ColorGradingModel.Settings.defaultSettings;
- this.OnValidate();
- }
- public override void OnValidate()
- {
- this.isDirty = true;
- }
- [SerializeField]
- private ColorGradingModel.Settings m_Settings = ColorGradingModel.Settings.defaultSettings;
- public enum Tonemapper
- {
- None,
- ACES,
- Neutral
- }
- [Serializable]
- public struct TonemappingSettings
- {
- public static ColorGradingModel.TonemappingSettings defaultSettings
- {
- get
- {
- return new ColorGradingModel.TonemappingSettings
- {
- tonemapper = ColorGradingModel.Tonemapper.Neutral,
- neutralBlackIn = 0.02f,
- neutralWhiteIn = 10f,
- neutralBlackOut = 0f,
- neutralWhiteOut = 10f,
- neutralWhiteLevel = 5.3f,
- neutralWhiteClip = 10f
- };
- }
- }
- [Tooltip("Tonemapping algorithm to use at the end of the color grading process. Use \"Neutral\" if you need a customizable tonemapper or \"Filmic\" to give a standard filmic look to your scenes.")]
- public ColorGradingModel.Tonemapper tonemapper;
- [Range(-0.1f, 0.1f)]
- public float neutralBlackIn;
- [Range(1f, 20f)]
- public float neutralWhiteIn;
- [Range(-0.09f, 0.1f)]
- public float neutralBlackOut;
- [Range(1f, 19f)]
- public float neutralWhiteOut;
- [Range(0.1f, 20f)]
- public float neutralWhiteLevel;
- [Range(1f, 10f)]
- public float neutralWhiteClip;
- }
- [Serializable]
- public struct BasicSettings
- {
- public static ColorGradingModel.BasicSettings defaultSettings
- {
- get
- {
- return new ColorGradingModel.BasicSettings
- {
- postExposure = 0f,
- temperature = 0f,
- tint = 0f,
- hueShift = 0f,
- saturation = 1f,
- contrast = 1f
- };
- }
- }
- [Tooltip("Adjusts the overall exposure of the scene in EV units. This is applied after HDR effect and right before tonemapping so it won't affect previous effects in the chain.")]
- public float postExposure;
- [Range(-100f, 100f)]
- [Tooltip("Sets the white balance to a custom color temperature.")]
- public float temperature;
- [Range(-100f, 100f)]
- [Tooltip("Sets the white balance to compensate for a green or magenta tint.")]
- public float tint;
- [Range(-180f, 180f)]
- [Tooltip("Shift the hue of all colors.")]
- public float hueShift;
- [Range(0f, 2f)]
- [Tooltip("Pushes the intensity of all colors.")]
- public float saturation;
- [Range(0f, 2f)]
- [Tooltip("Expands or shrinks the overall range of tonal values.")]
- public float contrast;
- }
- [Serializable]
- public struct ChannelMixerSettings
- {
- public static ColorGradingModel.ChannelMixerSettings defaultSettings
- {
- get
- {
- return new ColorGradingModel.ChannelMixerSettings
- {
- red = new Vector3(1f, 0f, 0f),
- green = new Vector3(0f, 1f, 0f),
- blue = new Vector3(0f, 0f, 1f),
- currentEditingChannel = 0
- };
- }
- }
- public Vector3 red;
- public Vector3 green;
- public Vector3 blue;
- [HideInInspector]
- public int currentEditingChannel;
- }
- [Serializable]
- public struct LogWheelsSettings
- {
- public static ColorGradingModel.LogWheelsSettings defaultSettings
- {
- get
- {
- return new ColorGradingModel.LogWheelsSettings
- {
- slope = Color.clear,
- power = Color.clear,
- offset = Color.clear
- };
- }
- }
- [Trackball("GetSlopeValue")]
- public Color slope;
- [Trackball("GetPowerValue")]
- public Color power;
- [Trackball("GetOffsetValue")]
- public Color offset;
- }
- [Serializable]
- public struct LinearWheelsSettings
- {
- public static ColorGradingModel.LinearWheelsSettings defaultSettings
- {
- get
- {
- return new ColorGradingModel.LinearWheelsSettings
- {
- lift = Color.clear,
- gamma = Color.clear,
- gain = Color.clear
- };
- }
- }
- [Trackball("GetLiftValue")]
- public Color lift;
- [Trackball("GetGammaValue")]
- public Color gamma;
- [Trackball("GetGainValue")]
- public Color gain;
- }
- public enum ColorWheelMode
- {
- Linear,
- Log
- }
- [Serializable]
- public struct ColorWheelsSettings
- {
- public static ColorGradingModel.ColorWheelsSettings defaultSettings
- {
- get
- {
- return new ColorGradingModel.ColorWheelsSettings
- {
- mode = ColorGradingModel.ColorWheelMode.Log,
- log = ColorGradingModel.LogWheelsSettings.defaultSettings,
- linear = ColorGradingModel.LinearWheelsSettings.defaultSettings
- };
- }
- }
- public ColorGradingModel.ColorWheelMode mode;
- [TrackballGroup]
- public ColorGradingModel.LogWheelsSettings log;
- [TrackballGroup]
- public ColorGradingModel.LinearWheelsSettings linear;
- }
- [Serializable]
- public struct CurvesSettings
- {
- public static ColorGradingModel.CurvesSettings defaultSettings
- {
- get
- {
- return new ColorGradingModel.CurvesSettings
- {
- master = new ColorGradingCurve(new AnimationCurve(new Keyframe[]
- {
- new Keyframe(0f, 0f, 1f, 1f),
- new Keyframe(1f, 1f, 1f, 1f)
- }), 0f, false, new Vector2(0f, 1f)),
- red = new ColorGradingCurve(new AnimationCurve(new Keyframe[]
- {
- new Keyframe(0f, 0f, 1f, 1f),
- new Keyframe(1f, 1f, 1f, 1f)
- }), 0f, false, new Vector2(0f, 1f)),
- green = new ColorGradingCurve(new AnimationCurve(new Keyframe[]
- {
- new Keyframe(0f, 0f, 1f, 1f),
- new Keyframe(1f, 1f, 1f, 1f)
- }), 0f, false, new Vector2(0f, 1f)),
- blue = new ColorGradingCurve(new AnimationCurve(new Keyframe[]
- {
- new Keyframe(0f, 0f, 1f, 1f),
- new Keyframe(1f, 1f, 1f, 1f)
- }), 0f, false, new Vector2(0f, 1f)),
- hueVShue = new ColorGradingCurve(new AnimationCurve(), 0.5f, true, new Vector2(0f, 1f)),
- hueVSsat = new ColorGradingCurve(new AnimationCurve(), 0.5f, true, new Vector2(0f, 1f)),
- satVSsat = new ColorGradingCurve(new AnimationCurve(), 0.5f, false, new Vector2(0f, 1f)),
- lumVSsat = new ColorGradingCurve(new AnimationCurve(), 0.5f, false, new Vector2(0f, 1f)),
- e_CurrentEditingCurve = 0,
- e_CurveY = true,
- e_CurveR = false,
- e_CurveG = false,
- e_CurveB = false
- };
- }
- }
- public ColorGradingCurve master;
- public ColorGradingCurve red;
- public ColorGradingCurve green;
- public ColorGradingCurve blue;
- public ColorGradingCurve hueVShue;
- public ColorGradingCurve hueVSsat;
- public ColorGradingCurve satVSsat;
- public ColorGradingCurve lumVSsat;
- [HideInInspector]
- public int e_CurrentEditingCurve;
- [HideInInspector]
- public bool e_CurveY;
- [HideInInspector]
- public bool e_CurveR;
- [HideInInspector]
- public bool e_CurveG;
- [HideInInspector]
- public bool e_CurveB;
- }
- [Serializable]
- public struct Settings
- {
- public static ColorGradingModel.Settings defaultSettings
- {
- get
- {
- return new ColorGradingModel.Settings
- {
- tonemapping = ColorGradingModel.TonemappingSettings.defaultSettings,
- basic = ColorGradingModel.BasicSettings.defaultSettings,
- channelMixer = ColorGradingModel.ChannelMixerSettings.defaultSettings,
- colorWheels = ColorGradingModel.ColorWheelsSettings.defaultSettings,
- curves = ColorGradingModel.CurvesSettings.defaultSettings
- };
- }
- }
- public ColorGradingModel.TonemappingSettings tonemapping;
- public ColorGradingModel.BasicSettings basic;
- public ColorGradingModel.ChannelMixerSettings channelMixer;
- public ColorGradingModel.ColorWheelsSettings colorWheels;
- public ColorGradingModel.CurvesSettings curves;
- }
- }
- }
|