void OnEnable()
        {
            m_CommandBuffers       = new Dictionary <Type, KeyValuePair <CameraEvent, CommandBuffer> >();
            m_MaterialFactory      = new MaterialFactory();
            m_RenderTextureFactory = new RenderTextureFactory();
            m_Context = new PostProcessingContext();

            // Keep a list of all post-fx for automation purposes
            m_Components = new List <PostProcessingComponentBase>();

            // Component list
            m_DebugViews            = AddComponent(new BuiltinDebugViewsComponent());
            m_AmbientOcclusion      = AddComponent(new AmbientOcclusionComponent());
            m_ScreenSpaceReflection = AddComponent(new ScreenSpaceReflectionComponent());
            m_DepthOfField          = AddComponent(new DepthOfFieldComponent());
            m_MotionBlur            = AddComponent(new MotionBlurComponent());
            m_Taa                 = AddComponent(new TaaComponent());
            m_EyeAdaptation       = AddComponent(new EyeAdaptationComponent());
            m_Bloom               = AddComponent(new BloomComponent());
            m_ChromaticAberration = AddComponent(new ChromaticAberrationComponent());
            m_ColorGrading        = AddComponent(new ColorGradingComponent());
            m_UserLut             = AddComponent(new UserLutComponent());
            m_Grain               = AddComponent(new GrainComponent());
            m_Vignette            = AddComponent(new VignetteComponent());
            m_Fxaa                = AddComponent(new FxaaComponent());

            // Prepare state observers
            m_ComponentStates = new Dictionary <PostProcessingComponentBase, bool>();

            foreach (var component in m_Components)
            {
                m_ComponentStates.Add(component, false);
            }
        }
Beispiel #2
0
 private void OnEnable()
 {
     this.m_CommandBuffers       = new Dictionary <Type, KeyValuePair <CameraEvent, CommandBuffer> >();
     this.m_MaterialFactory      = new MaterialFactory();
     this.m_RenderTextureFactory = new RenderTextureFactory();
     this.m_Context               = new PostProcessingContext();
     this.m_Components            = new List <PostProcessingComponentBase>();
     this.m_DebugViews            = this.AddComponent <BuiltinDebugViewsComponent>(new BuiltinDebugViewsComponent());
     this.m_AmbientOcclusion      = this.AddComponent <AmbientOcclusionComponent>(new AmbientOcclusionComponent());
     this.m_ScreenSpaceReflection = this.AddComponent <ScreenSpaceReflectionComponent>(new ScreenSpaceReflectionComponent());
     this.m_FogComponent          = this.AddComponent <FogComponent>(new FogComponent());
     this.m_MotionBlur            = this.AddComponent <MotionBlurComponent>(new MotionBlurComponent());
     this.m_Taa                 = this.AddComponent <TaaComponent>(new TaaComponent());
     this.m_EyeAdaptation       = this.AddComponent <EyeAdaptationComponent>(new EyeAdaptationComponent());
     this.m_DepthOfField        = this.AddComponent <DepthOfFieldComponent>(new DepthOfFieldComponent());
     this.m_Bloom               = this.AddComponent <BloomComponent>(new BloomComponent());
     this.m_ChromaticAberration = this.AddComponent <ChromaticAberrationComponent>(new ChromaticAberrationComponent());
     this.m_ColorGrading        = this.AddComponent <ColorGradingComponent>(new ColorGradingComponent());
     this.m_UserLut             = this.AddComponent <UserLutComponent>(new UserLutComponent());
     this.m_Grain               = this.AddComponent <GrainComponent>(new GrainComponent());
     this.m_Vignette            = this.AddComponent <VignetteComponent>(new VignetteComponent());
     this.m_Dithering           = this.AddComponent <DitheringComponent>(new DitheringComponent());
     this.m_Fxaa                = this.AddComponent <FxaaComponent>(new FxaaComponent());
     this.m_ComponentStates     = new Dictionary <PostProcessingComponentBase, bool>();
     foreach (PostProcessingComponentBase base2 in this.m_Components)
     {
         this.m_ComponentStates.Add(base2, false);
     }
     base.useGUILayout = false;
 }
        void OnEnable()
        {
            m_CommandBuffers       = new Dictionary <Type, KeyValuePair <CameraEvent, CommandBuffer> >();
            m_MaterialFactory      = new MaterialFactory();
            m_RenderTextureFactory = new RenderTextureFactory();
            m_Context = new PostProcessingContext();

            // Keep a list of all post-fx for automation purposes
            m_Components = new List <PostProcessingComponentBase>();

            // Component list
            m_DebugViews   = AddComponent(new BuiltinDebugViewsComponent());
            m_DepthOfField = AddComponent(new DepthOfFieldComponent());
            m_Bloom        = AddComponent(new BloomComponent());
            m_ColorGrading = AddComponent(new ColorGradingComponent());
            m_Vignette     = AddComponent(new VignetteComponent());

            // Prepare state observers
            m_ComponentStates = new Dictionary <PostProcessingComponentBase, bool>();

            foreach (var component in m_Components)
            {
                m_ComponentStates.Add(component, false);
            }

            useGUILayout = false;
        }
Beispiel #4
0
        // Token: 0x06003AE5 RID: 15077 RVA: 0x001C77C4 File Offset: 0x001C5BC4
        public static Vector3 GetLiftValue(Color lift)
        {
            Color color = ColorGradingComponent.NormalizeColor(lift);
            float num   = (color.r + color.g + color.b) / 3f;
            float x     = (color.r - num) * 0.1f + lift.a;
            float y     = (color.g - num) * 0.1f + lift.a;
            float z     = (color.b - num) * 0.1f + lift.a;

            return(ColorGradingComponent.ClampVector(new Vector3(x, y, z), -1f, 1f));
        }
Beispiel #5
0
        // Token: 0x06003AEB RID: 15083 RVA: 0x001C7C28 File Offset: 0x001C6028
        public static Vector3 GetOffsetValue(Color offset)
        {
            Color color = ColorGradingComponent.NormalizeColor(offset);
            float num   = (color.r + color.g + color.b) / 3f;

            offset.a *= 0.5f;
            float x = (color.r - num) * 0.05f + offset.a;
            float y = (color.g - num) * 0.05f + offset.a;
            float z = (color.b - num) * 0.05f + offset.a;

            return(ColorGradingComponent.ClampVector(new Vector3(x, y, z), -0.8f, 0.8f));
        }
Beispiel #6
0
        // Token: 0x06003AE9 RID: 15081 RVA: 0x001C7A7C File Offset: 0x001C5E7C
        public static Vector3 GetSlopeValue(Color slope)
        {
            Color color = ColorGradingComponent.NormalizeColor(slope);
            float num   = (color.r + color.g + color.b) / 3f;

            slope.a *= 0.5f;
            float x = (color.r - num) * 0.1f + slope.a + 1f;
            float y = (color.g - num) * 0.1f + slope.a + 1f;
            float z = (color.b - num) * 0.1f + slope.a + 1f;

            return(ColorGradingComponent.ClampVector(new Vector3(x, y, z), 0f, 2f));
        }
Beispiel #7
0
        // Token: 0x06003AE7 RID: 15079 RVA: 0x001C7974 File Offset: 0x001C5D74
        public static Vector3 GetGainValue(Color gain)
        {
            Color color = ColorGradingComponent.NormalizeColor(gain);
            float num   = (color.r + color.g + color.b) / 3f;

            gain.a *= ((gain.a <= 0f) ? 1f : 3f);
            float x = Mathf.Pow(2f, (color.r - num) * 0.5f) + gain.a;
            float y = Mathf.Pow(2f, (color.g - num) * 0.5f) + gain.a;
            float z = Mathf.Pow(2f, (color.b - num) * 0.5f) + gain.a;

            return(ColorGradingComponent.ClampVector(new Vector3(x, y, z), 0f, 4f));
        }
Beispiel #8
0
        // Token: 0x06003AE6 RID: 15078 RVA: 0x001C7858 File Offset: 0x001C5C58
        public static Vector3 GetGammaValue(Color gamma)
        {
            Color color = ColorGradingComponent.NormalizeColor(gamma);
            float num   = (color.r + color.g + color.b) / 3f;

            gamma.a *= ((gamma.a >= 0f) ? 5f : 0.8f);
            float b  = Mathf.Pow(2f, (color.r - num) * 0.5f) + gamma.a;
            float b2 = Mathf.Pow(2f, (color.g - num) * 0.5f) + gamma.a;
            float b3 = Mathf.Pow(2f, (color.b - num) * 0.5f) + gamma.a;
            float x  = 1f / Mathf.Max(0.01f, b);
            float y  = 1f / Mathf.Max(0.01f, b2);
            float z  = 1f / Mathf.Max(0.01f, b3);

            return(ColorGradingComponent.ClampVector(new Vector3(x, y, z), 0f, 5f));
        }
Beispiel #9
0
        // Token: 0x06003AEA RID: 15082 RVA: 0x001C7B34 File Offset: 0x001C5F34
        public static Vector3 GetPowerValue(Color power)
        {
            Color color = ColorGradingComponent.NormalizeColor(power);
            float num   = (color.r + color.g + color.b) / 3f;

            power.a *= 0.5f;
            float b  = (color.r - num) * 0.1f + power.a + 1f;
            float b2 = (color.g - num) * 0.1f + power.a + 1f;
            float b3 = (color.b - num) * 0.1f + power.a + 1f;
            float x  = 1f / Mathf.Max(0.01f, b);
            float y  = 1f / Mathf.Max(0.01f, b2);
            float z  = 1f / Mathf.Max(0.01f, b3);

            return(ColorGradingComponent.ClampVector(new Vector3(x, y, z), 0.5f, 2.5f));
        }
        public static Vector3 GetGammaValue(Color gamma)
        {
            Color color = ColorGradingComponent.NormalizeColor(gamma);
            float num   = (color.r + color.g + color.b) / 3f;

            gamma.a *= ((gamma.a >= 0f) ? 5f : 0.8f);
            float num2 = Mathf.Pow(2f, (color.r - num) * 0.5f) + gamma.a;
            float num3 = Mathf.Pow(2f, (color.g - num) * 0.5f) + gamma.a;
            float num4 = Mathf.Pow(2f, (color.b - num) * 0.5f) + gamma.a;
            float num5 = 1f / Mathf.Max(0.01f, num2);
            float num6 = 1f / Mathf.Max(0.01f, num3);
            float num7 = 1f / Mathf.Max(0.01f, num4);

            return(ColorGradingComponent.ClampVector(new Vector3(num5, num6, num7), 0f, 5f));
        }
        public static Vector3 GetPowerValue(Color power)
        {
            Color color = ColorGradingComponent.NormalizeColor(power);
            float num   = (color.r + color.g + color.b) / 3f;

            power.a *= 0.5f;
            float num2 = (color.r - num) * 0.1f + power.a + 1f;
            float num3 = (color.g - num) * 0.1f + power.a + 1f;
            float num4 = (color.b - num) * 0.1f + power.a + 1f;
            float num5 = 1f / Mathf.Max(0.01f, num2);
            float num6 = 1f / Mathf.Max(0.01f, num3);
            float num7 = 1f / Mathf.Max(0.01f, num4);

            return(ColorGradingComponent.ClampVector(new Vector3(num5, num6, num7), 0.5f, 2.5f));
        }
Beispiel #12
0
        // Token: 0x06003AEF RID: 15087 RVA: 0x001C7EB0 File Offset: 0x001C62B0
        private void GenerateLut()
        {
            ColorGradingModel.Settings settings = base.model.settings;
            if (!this.IsLogLutValid(base.model.bakedLut))
            {
                GraphicsUtils.Destroy(base.model.bakedLut);
                base.model.bakedLut = new RenderTexture(1024, 32, 0, RenderTextureFormat.ARGBHalf)
                {
                    name       = "Color Grading Log LUT",
                    hideFlags  = HideFlags.DontSave,
                    filterMode = FilterMode.Bilinear,
                    wrapMode   = TextureWrapMode.Clamp,
                    anisoLevel = 0
                };
            }
            Material material = this.context.materialFactory.Get("Hidden/Post FX/Lut Generator");

            material.SetVector(ColorGradingComponent.Uniforms._LutParams, new Vector4(32f, 0.00048828125f, 0.015625f, 1.032258f));
            material.shaderKeywords = null;
            ColorGradingModel.TonemappingSettings tonemapping = settings.tonemapping;
            ColorGradingModel.Tonemapper          tonemapper  = tonemapping.tonemapper;
            if (tonemapper != ColorGradingModel.Tonemapper.Neutral)
            {
                if (tonemapper == ColorGradingModel.Tonemapper.ACES)
                {
                    material.EnableKeyword("TONEMAPPING_FILMIC");
                }
            }
            else
            {
                material.EnableKeyword("TONEMAPPING_NEUTRAL");
                float num  = tonemapping.neutralBlackIn * 20f + 1f;
                float num2 = tonemapping.neutralBlackOut * 10f + 1f;
                float num3 = tonemapping.neutralWhiteIn / 20f;
                float num4 = 1f - tonemapping.neutralWhiteOut / 20f;
                float t    = num / num2;
                float t2   = num3 / num4;
                float y    = Mathf.Max(0f, Mathf.LerpUnclamped(0.57f, 0.37f, t));
                float z    = Mathf.LerpUnclamped(0.01f, 0.24f, t2);
                float w    = Mathf.Max(0f, Mathf.LerpUnclamped(0.02f, 0.2f, t));
                material.SetVector(ColorGradingComponent.Uniforms._NeutralTonemapperParams1, new Vector4(0.2f, y, z, w));
                material.SetVector(ColorGradingComponent.Uniforms._NeutralTonemapperParams2, new Vector4(0.02f, 0.3f, tonemapping.neutralWhiteLevel, tonemapping.neutralWhiteClip / 10f));
            }
            material.SetFloat(ColorGradingComponent.Uniforms._HueShift, settings.basic.hueShift / 360f);
            material.SetFloat(ColorGradingComponent.Uniforms._Saturation, settings.basic.saturation);
            material.SetFloat(ColorGradingComponent.Uniforms._Contrast, settings.basic.contrast);
            material.SetVector(ColorGradingComponent.Uniforms._Balance, this.CalculateColorBalance(settings.basic.temperature, settings.basic.tint));
            Vector3 v;
            Vector3 v2;
            Vector3 v3;

            ColorGradingComponent.CalculateLiftGammaGain(settings.colorWheels.linear.lift, settings.colorWheels.linear.gamma, settings.colorWheels.linear.gain, out v, out v2, out v3);
            material.SetVector(ColorGradingComponent.Uniforms._Lift, v);
            material.SetVector(ColorGradingComponent.Uniforms._InvGamma, v2);
            material.SetVector(ColorGradingComponent.Uniforms._Gain, v3);
            Vector3 v4;
            Vector3 v5;
            Vector3 v6;

            ColorGradingComponent.CalculateSlopePowerOffset(settings.colorWheels.log.slope, settings.colorWheels.log.power, settings.colorWheels.log.offset, out v4, out v5, out v6);
            material.SetVector(ColorGradingComponent.Uniforms._Slope, v4);
            material.SetVector(ColorGradingComponent.Uniforms._Power, v5);
            material.SetVector(ColorGradingComponent.Uniforms._Offset, v6);
            material.SetVector(ColorGradingComponent.Uniforms._ChannelMixerRed, settings.channelMixer.red);
            material.SetVector(ColorGradingComponent.Uniforms._ChannelMixerGreen, settings.channelMixer.green);
            material.SetVector(ColorGradingComponent.Uniforms._ChannelMixerBlue, settings.channelMixer.blue);
            material.SetTexture(ColorGradingComponent.Uniforms._Curves, this.GetCurveTexture());
            Graphics.Blit(null, base.model.bakedLut, material, 0);
        }
Beispiel #13
0
 // Token: 0x06003AEC RID: 15084 RVA: 0x001C7CCE File Offset: 0x001C60CE
 public static void CalculateSlopePowerOffset(Color slope, Color power, Color offset, out Vector3 outSlope, out Vector3 outPower, out Vector3 outOffset)
 {
     outSlope  = ColorGradingComponent.GetSlopeValue(slope);
     outPower  = ColorGradingComponent.GetPowerValue(power);
     outOffset = ColorGradingComponent.GetOffsetValue(offset);
 }
Beispiel #14
0
 // Token: 0x06003AE8 RID: 15080 RVA: 0x001C7A53 File Offset: 0x001C5E53
 public static void CalculateLiftGammaGain(Color lift, Color gamma, Color gain, out Vector3 outLift, out Vector3 outGamma, out Vector3 outGain)
 {
     outLift  = ColorGradingComponent.GetLiftValue(lift);
     outGamma = ColorGradingComponent.GetGammaValue(gamma);
     outGain  = ColorGradingComponent.GetGainValue(gain);
 }