From a10eea6e4ce647061813519d5b0ea496f29495b9 Mon Sep 17 00:00:00 2001
From: leonard Wu <364452445@qq.com>
Date: 星期四, 09 八月 2018 09:47:08 +0800
Subject: [PATCH] 同步最新svn内容

---
 Assets/Plugins/PostProcessing/Resources/Shaders/Uber.shader |  660 ++++++++++++++++++++++++++++++------------------------------
 1 files changed, 330 insertions(+), 330 deletions(-)

diff --git a/Assets/Plugins/PostProcessing/Resources/Shaders/Uber.shader b/Assets/Plugins/PostProcessing/Resources/Shaders/Uber.shader
index dbfee42..bf81814 100644
--- a/Assets/Plugins/PostProcessing/Resources/Shaders/Uber.shader
+++ b/Assets/Plugins/PostProcessing/Resources/Shaders/Uber.shader
@@ -1,330 +1,330 @@
-Shader "Hidden/Post FX/Uber Shader"
-{
-    Properties
-    {
-        _MainTex ("Texture", 2D) = "white" {}
-        _AutoExposure ("", 2D) = "" {}
-        _BloomTex ("", 2D) = "" {}
-        _Bloom_DirtTex ("", 2D) = "" {}
-        _GrainTex ("", 2D) = "" {}
-        _LogLut ("", 2D) = "" {}
-        _UserLut ("", 2D) = "" {}
-        _Vignette_Mask ("", 2D) = "" {}
-        _ChromaticAberration_Spectrum ("", 2D) = "" {}
-        _DitheringTex ("", 2D) = "" {}
-    }
-
-    CGINCLUDE
-
-        #pragma target 3.0
-
-        #pragma multi_compile __ UNITY_COLORSPACE_GAMMA
-        #pragma multi_compile __ CHROMATIC_ABERRATION
-        #pragma multi_compile __ DEPTH_OF_FIELD DEPTH_OF_FIELD_COC_VIEW
-        #pragma multi_compile __ BLOOM BLOOM_LENS_DIRT
-        #pragma multi_compile __ COLOR_GRADING COLOR_GRADING_LOG_VIEW
-        #pragma multi_compile __ USER_LUT
-        #pragma multi_compile __ GRAIN
-        #pragma multi_compile __ VIGNETTE_CLASSIC VIGNETTE_MASKED
-        #pragma multi_compile __ DITHERING
-
-        #include "UnityCG.cginc"
-        #include "Bloom.cginc"
-        #include "ColorGrading.cginc"
-        #include "UberSecondPass.cginc"
-
-        // Auto exposure / eye adaptation
-        sampler2D _AutoExposure;
-
-        // Chromatic aberration
-        half _ChromaticAberration_Amount;
-        sampler2D _ChromaticAberration_Spectrum;
-
-        // Depth of field
-        sampler2D_float _CameraDepthTexture;
-        sampler2D _DepthOfFieldTex;
-        sampler2D _DepthOfFieldCoCTex;
-        float4 _DepthOfFieldTex_TexelSize;
-        float3 _DepthOfFieldParams; // x: distance, y: f^2 / (N * (S1 - f) * film_width * 2), z: max coc
-
-        // Bloom
-        sampler2D _BloomTex;
-        float4 _BloomTex_TexelSize;
-        half2 _Bloom_Settings; // x: sampleScale, y: bloom.intensity
-
-        sampler2D _Bloom_DirtTex;
-        half _Bloom_DirtIntensity;
-
-        // Color grading & tonemapping
-        sampler2D _LogLut;
-        half3 _LogLut_Params; // x: 1 / lut_width, y: 1 / lut_height, z: lut_height - 1
-        half _ExposureEV; // EV (exp2)
-
-        // User lut
-        sampler2D _UserLut;
-        half4 _UserLut_Params; // @see _LogLut_Params
-
-        // Vignette
-        half3 _Vignette_Color;
-        half2 _Vignette_Center; // UV space
-        half4 _Vignette_Settings; // x: intensity, y: smoothness, z: roundness, w: rounded
-        sampler2D _Vignette_Mask;
-        half _Vignette_Opacity; // [0;1]
-
-        struct VaryingsFlipped
-        {
-            float4 pos : SV_POSITION;
-            float2 uv : TEXCOORD0;
-            float2 uvSPR : TEXCOORD1; // Single Pass Stereo UVs
-            float2 uvFlipped : TEXCOORD2; // Flipped UVs (DX/MSAA/Forward)
-            float2 uvFlippedSPR : TEXCOORD3; // Single Pass Stereo flipped UVs
-        };
-
-        VaryingsFlipped VertUber(AttributesDefault v)
-        {
-            VaryingsFlipped o;
-            o.pos = UnityObjectToClipPos(v.vertex);
-            o.uv = v.texcoord.xy;
-            o.uvSPR = UnityStereoScreenSpaceUVAdjust(v.texcoord.xy, _MainTex_ST);
-            o.uvFlipped = v.texcoord.xy;
-
-        #if UNITY_UV_STARTS_AT_TOP
-            if (_MainTex_TexelSize.y < 0.0)
-                o.uvFlipped.y = 1.0 - o.uvFlipped.y;
-        #endif
-
-            o.uvFlippedSPR = UnityStereoScreenSpaceUVAdjust(o.uvFlipped, _MainTex_ST);
-
-            return o;
-        }
-
-        half4 FragUber(VaryingsFlipped i) : SV_Target
-        {
-            float2 uv = i.uv;
-            half autoExposure = tex2D(_AutoExposure, uv).r;
-
-            half3 color = (0.0).xxx;
-            #if DEPTH_OF_FIELD && CHROMATIC_ABERRATION
-            half4 dof = (0.0).xxxx;
-            half ffa = 0.0; // far field alpha
-            #endif
-
-            //
-            // HDR effects
-            // ---------------------------------------------------------
-
-            // Chromatic Aberration
-            // Inspired by the method described in "Rendering Inside" [Playdead 2016]
-            // https://twitter.com/pixelmager/status/717019757766123520
-            #if CHROMATIC_ABERRATION
-            {
-                float2 coords = 2.0 * uv - 1.0;
-                float2 end = uv - coords * dot(coords, coords) * _ChromaticAberration_Amount;
-
-                float2 diff = end - uv;
-                int samples = clamp(int(length(_MainTex_TexelSize.zw * diff / 2.0)), 3, 16);
-                float2 delta = diff / samples;
-                float2 pos = uv;
-                half3 sum = (0.0).xxx, filterSum = (0.0).xxx;
-
-                #if DEPTH_OF_FIELD
-                float2 dofDelta = delta;
-                float2 dofPos = pos;
-                if (_MainTex_TexelSize.y < 0.0)
-                {
-                    dofDelta.y = -dofDelta.y;
-                    dofPos.y = 1.0 - dofPos.y;
-                }
-                half4 dofSum = (0.0).xxxx;
-                half ffaSum = 0.0;
-                #endif
-
-                for (int i = 0; i < samples; i++)
-                {
-                    half t = (i + 0.5) / samples;
-                    half3 s = tex2Dlod(_MainTex, float4(UnityStereoScreenSpaceUVAdjust(pos, _MainTex_ST), 0, 0)).rgb;
-                    half3 filter = tex2Dlod(_ChromaticAberration_Spectrum, float4(t, 0, 0, 0)).rgb;
-
-                    sum += s * filter;
-                    filterSum += filter;
-                    pos += delta;
-
-                    #if DEPTH_OF_FIELD
-                    float4 uvDof = float4(UnityStereoScreenSpaceUVAdjust(dofPos, _MainTex_ST), 0, 0);
-                    half4 sdof = tex2Dlod(_DepthOfFieldTex, uvDof).rgba;
-                    half scoc = tex2Dlod(_DepthOfFieldCoCTex, uvDof).r;
-                    scoc = (scoc - 0.5) * 2 * _DepthOfFieldParams.z;
-                    dofSum += sdof * half4(filter, 1);
-                    ffaSum += smoothstep(_MainTex_TexelSize.y * 2, _MainTex_TexelSize.y * 4, scoc);
-                    dofPos += dofDelta;
-                    #endif
-                }
-
-                color = sum / filterSum;
-                #if DEPTH_OF_FIELD
-                dof = dofSum / half4(filterSum, samples);
-                ffa = ffaSum / samples;
-                #endif
-            }
-            #else
-            {
-                color = tex2D(_MainTex, i.uvSPR).rgb;
-            }
-            #endif
-
-            // Apply auto exposure if any
-            color *= autoExposure;
-
-            // Gamma space... Gah.
-            #if UNITY_COLORSPACE_GAMMA
-            {
-                color = GammaToLinearSpace(color);
-            }
-            #endif
-
-            // Depth of field
-            #if DEPTH_OF_FIELD_COC_VIEW
-            {
-                // Calculate the radiuses of CoC.
-                half4 src = tex2D(_DepthOfFieldTex, uv);
-                float depth = LinearEyeDepth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uvFlippedSPR));
-                float coc = (depth - _DepthOfFieldParams.x) * _DepthOfFieldParams.y / depth;
-                coc *= 80;
-
-                // Visualize CoC (white -> red -> gray)
-                half3 rgb = lerp(half3(1, 0, 0), half3(1.0, 1.0, 1.0), saturate(-coc));
-                rgb = lerp(rgb, half3(0.4, 0.4, 0.4), saturate(coc));
-
-                // Black and white image overlay
-                rgb *= AcesLuminance(color) + 0.5;
-
-                // Gamma correction
-                #if !UNITY_COLORSPACE_GAMMA
-                {
-                    rgb = GammaToLinearSpace(rgb);
-                }
-                #endif
-
-                color = rgb;
-            }
-            #elif DEPTH_OF_FIELD
-            {
-                #if !CHROMATIC_ABERRATION
-                half4 dof = tex2D(_DepthOfFieldTex, i.uvFlippedSPR);
-                half coc = tex2D(_DepthOfFieldCoCTex, i.uvFlippedSPR);
-                coc = (coc - 0.5) * 2 * _DepthOfFieldParams.z;
-                // Convert CoC to far field alpha value.
-                float ffa = smoothstep(_MainTex_TexelSize.y * 2, _MainTex_TexelSize.y * 4, coc);
-                #endif
-                // lerp(lerp(color, dof, ffa), dof, dof.a)
-                color = lerp(color, dof.rgb * autoExposure, ffa + dof.a - ffa * dof.a);
-            }
-            #endif
-
-            // HDR Bloom
-            #if BLOOM || BLOOM_LENS_DIRT
-            {
-                half3 bloom = UpsampleFilter(_BloomTex, i.uvFlippedSPR, _BloomTex_TexelSize.xy, _Bloom_Settings.x) * _Bloom_Settings.y;
-                color += bloom;
-
-                #if BLOOM_LENS_DIRT
-                {
-                    half3 dirt = tex2D(_Bloom_DirtTex, i.uvFlipped).rgb * _Bloom_DirtIntensity;
-                    color += bloom * dirt;
-                }
-                #endif
-            }
-            #endif
-
-            // Procedural vignette
-            #if VIGNETTE_CLASSIC
-            {
-                half2 d = abs(uv - _Vignette_Center) * _Vignette_Settings.x;
-                d.x *= lerp(1.0, _ScreenParams.x / _ScreenParams.y, _Vignette_Settings.w);
-                d = pow(d, _Vignette_Settings.z); // Roundness
-                half vfactor = pow(saturate(1.0 - dot(d, d)), _Vignette_Settings.y);
-                color *= lerp(_Vignette_Color, (1.0).xxx, vfactor);
-            }
-
-            // Masked vignette
-            #elif VIGNETTE_MASKED
-            {
-                half vfactor = tex2D(_Vignette_Mask, uv).a;
-                half3 new_color = color * lerp(_Vignette_Color, (1.0).xxx, vfactor);
-                color = lerp(color, new_color, _Vignette_Opacity);
-            }
-            #endif
-
-            // HDR color grading & tonemapping
-            #if COLOR_GRADING_LOG_VIEW
-            {
-                color *= _ExposureEV;
-                color = saturate(LinearToLogC(color));
-            }
-            #elif COLOR_GRADING
-            {
-                color *= _ExposureEV; // Exposure is in ev units (or 'stops')
-
-                half3 colorLogC = saturate(LinearToLogC(color));
-                color = ApplyLut2d(_LogLut, colorLogC, _LogLut_Params);
-            }
-            #endif
-
-            //
-            // All the following effects happen in LDR
-            // ---------------------------------------------------------
-
-            color = saturate(color);
-
-            // Back to gamma space if needed
-            #if UNITY_COLORSPACE_GAMMA
-            {
-                color = LinearToGammaSpace(color);
-            }
-            #endif
-
-            // LDR user lut
-            #if USER_LUT
-            {
-                color = saturate(color);
-                half3 colorGraded;
-
-                #if !UNITY_COLORSPACE_GAMMA
-                {
-                    colorGraded = ApplyLut2d(_UserLut, LinearToGammaSpace(color), _UserLut_Params.xyz);
-                    colorGraded = GammaToLinearSpace(colorGraded);
-                }
-                #else
-                {
-                    colorGraded = ApplyLut2d(_UserLut, color, _UserLut_Params.xyz);
-                }
-                #endif
-
-                color = lerp(color, colorGraded, _UserLut_Params.w);
-            }
-            #endif
-
-            color = UberSecondPass(color, uv);
-
-            // Done !
-            return half4(color, 1.0);
-        }
-
-    ENDCG
-
-    SubShader
-    {
-        Cull Off ZWrite Off ZTest Always
-
-        // (0)
-        Pass
-        {
-            CGPROGRAM
-
-                #pragma vertex VertUber
-                #pragma fragment FragUber
-
-            ENDCG
-        }
-    }
-}
+Shader "Hidden/Post FX/Uber Shader"
+{
+    Properties
+    {
+        _MainTex ("Texture", 2D) = "white" {}
+        _AutoExposure ("", 2D) = "" {}
+        _BloomTex ("", 2D) = "" {}
+        _Bloom_DirtTex ("", 2D) = "" {}
+        _GrainTex ("", 2D) = "" {}
+        _LogLut ("", 2D) = "" {}
+        _UserLut ("", 2D) = "" {}
+        _Vignette_Mask ("", 2D) = "" {}
+        _ChromaticAberration_Spectrum ("", 2D) = "" {}
+        _DitheringTex ("", 2D) = "" {}
+    }
+
+    CGINCLUDE
+
+        #pragma target 3.0
+
+        #pragma multi_compile __ UNITY_COLORSPACE_GAMMA
+        #pragma multi_compile __ CHROMATIC_ABERRATION
+        #pragma multi_compile __ DEPTH_OF_FIELD DEPTH_OF_FIELD_COC_VIEW
+        #pragma multi_compile __ BLOOM BLOOM_LENS_DIRT
+        #pragma multi_compile __ COLOR_GRADING COLOR_GRADING_LOG_VIEW
+        #pragma multi_compile __ USER_LUT
+        #pragma multi_compile __ GRAIN
+        #pragma multi_compile __ VIGNETTE_CLASSIC VIGNETTE_MASKED
+        #pragma multi_compile __ DITHERING
+
+        #include "UnityCG.cginc"
+        #include "Bloom.cginc"
+        #include "ColorGrading.cginc"
+        #include "UberSecondPass.cginc"
+
+        // Auto exposure / eye adaptation
+        sampler2D _AutoExposure;
+
+        // Chromatic aberration
+        half _ChromaticAberration_Amount;
+        sampler2D _ChromaticAberration_Spectrum;
+
+        // Depth of field
+        sampler2D_float _CameraDepthTexture;
+        sampler2D _DepthOfFieldTex;
+        sampler2D _DepthOfFieldCoCTex;
+        float4 _DepthOfFieldTex_TexelSize;
+        float3 _DepthOfFieldParams; // x: distance, y: f^2 / (N * (S1 - f) * film_width * 2), z: max coc
+
+        // Bloom
+        sampler2D _BloomTex;
+        float4 _BloomTex_TexelSize;
+        half2 _Bloom_Settings; // x: sampleScale, y: bloom.intensity
+
+        sampler2D _Bloom_DirtTex;
+        half _Bloom_DirtIntensity;
+
+        // Color grading & tonemapping
+        sampler2D _LogLut;
+        half3 _LogLut_Params; // x: 1 / lut_width, y: 1 / lut_height, z: lut_height - 1
+        half _ExposureEV; // EV (exp2)
+
+        // User lut
+        sampler2D _UserLut;
+        half4 _UserLut_Params; // @see _LogLut_Params
+
+        // Vignette
+        half3 _Vignette_Color;
+        half2 _Vignette_Center; // UV space
+        half4 _Vignette_Settings; // x: intensity, y: smoothness, z: roundness, w: rounded
+        sampler2D _Vignette_Mask;
+        half _Vignette_Opacity; // [0;1]
+
+        struct VaryingsFlipped
+        {
+            float4 pos : SV_POSITION;
+            float2 uv : TEXCOORD0;
+            float2 uvSPR : TEXCOORD1; // Single Pass Stereo UVs
+            float2 uvFlipped : TEXCOORD2; // Flipped UVs (DX/MSAA/Forward)
+            float2 uvFlippedSPR : TEXCOORD3; // Single Pass Stereo flipped UVs
+        };
+
+        VaryingsFlipped VertUber(AttributesDefault v)
+        {
+            VaryingsFlipped o;
+            o.pos = UnityObjectToClipPos(v.vertex);
+            o.uv = v.texcoord.xy;
+            o.uvSPR = UnityStereoScreenSpaceUVAdjust(v.texcoord.xy, _MainTex_ST);
+            o.uvFlipped = v.texcoord.xy;
+
+        #if UNITY_UV_STARTS_AT_TOP
+            if (_MainTex_TexelSize.y < 0.0)
+                o.uvFlipped.y = 1.0 - o.uvFlipped.y;
+        #endif
+
+            o.uvFlippedSPR = UnityStereoScreenSpaceUVAdjust(o.uvFlipped, _MainTex_ST);
+
+            return o;
+        }
+
+        half4 FragUber(VaryingsFlipped i) : SV_Target
+        {
+            float2 uv = i.uv;
+            half autoExposure = tex2D(_AutoExposure, uv).r;
+
+            half3 color = (0.0).xxx;
+            #if DEPTH_OF_FIELD && CHROMATIC_ABERRATION
+            half4 dof = (0.0).xxxx;
+            half ffa = 0.0; // far field alpha
+            #endif
+
+            //
+            // HDR effects
+            // ---------------------------------------------------------
+
+            // Chromatic Aberration
+            // Inspired by the method described in "Rendering Inside" [Playdead 2016]
+            // https://twitter.com/pixelmager/status/717019757766123520
+            #if CHROMATIC_ABERRATION
+            {
+                float2 coords = 2.0 * uv - 1.0;
+                float2 end = uv - coords * dot(coords, coords) * _ChromaticAberration_Amount;
+
+                float2 diff = end - uv;
+                int samples = clamp(int(length(_MainTex_TexelSize.zw * diff / 2.0)), 3, 16);
+                float2 delta = diff / samples;
+                float2 pos = uv;
+                half3 sum = (0.0).xxx, filterSum = (0.0).xxx;
+
+                #if DEPTH_OF_FIELD
+                float2 dofDelta = delta;
+                float2 dofPos = pos;
+                if (_MainTex_TexelSize.y < 0.0)
+                {
+                    dofDelta.y = -dofDelta.y;
+                    dofPos.y = 1.0 - dofPos.y;
+                }
+                half4 dofSum = (0.0).xxxx;
+                half ffaSum = 0.0;
+                #endif
+
+                for (int i = 0; i < samples; i++)
+                {
+                    half t = (i + 0.5) / samples;
+                    half3 s = tex2Dlod(_MainTex, float4(UnityStereoScreenSpaceUVAdjust(pos, _MainTex_ST), 0, 0)).rgb;
+                    half3 filter = tex2Dlod(_ChromaticAberration_Spectrum, float4(t, 0, 0, 0)).rgb;
+
+                    sum += s * filter;
+                    filterSum += filter;
+                    pos += delta;
+
+                    #if DEPTH_OF_FIELD
+                    float4 uvDof = float4(UnityStereoScreenSpaceUVAdjust(dofPos, _MainTex_ST), 0, 0);
+                    half4 sdof = tex2Dlod(_DepthOfFieldTex, uvDof).rgba;
+                    half scoc = tex2Dlod(_DepthOfFieldCoCTex, uvDof).r;
+                    scoc = (scoc - 0.5) * 2 * _DepthOfFieldParams.z;
+                    dofSum += sdof * half4(filter, 1);
+                    ffaSum += smoothstep(_MainTex_TexelSize.y * 2, _MainTex_TexelSize.y * 4, scoc);
+                    dofPos += dofDelta;
+                    #endif
+                }
+
+                color = sum / filterSum;
+                #if DEPTH_OF_FIELD
+                dof = dofSum / half4(filterSum, samples);
+                ffa = ffaSum / samples;
+                #endif
+            }
+            #else
+            {
+                color = tex2D(_MainTex, i.uvSPR).rgb;
+            }
+            #endif
+
+            // Apply auto exposure if any
+            color *= autoExposure;
+
+            // Gamma space... Gah.
+            #if UNITY_COLORSPACE_GAMMA
+            {
+                color = GammaToLinearSpace(color);
+            }
+            #endif
+
+            // Depth of field
+            #if DEPTH_OF_FIELD_COC_VIEW
+            {
+                // Calculate the radiuses of CoC.
+                half4 src = tex2D(_DepthOfFieldTex, uv);
+                float depth = LinearEyeDepth(SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, i.uvFlippedSPR));
+                float coc = (depth - _DepthOfFieldParams.x) * _DepthOfFieldParams.y / depth;
+                coc *= 80;
+
+                // Visualize CoC (white -> red -> gray)
+                half3 rgb = lerp(half3(1, 0, 0), half3(1.0, 1.0, 1.0), saturate(-coc));
+                rgb = lerp(rgb, half3(0.4, 0.4, 0.4), saturate(coc));
+
+                // Black and white image overlay
+                rgb *= AcesLuminance(color) + 0.5;
+
+                // Gamma correction
+                #if !UNITY_COLORSPACE_GAMMA
+                {
+                    rgb = GammaToLinearSpace(rgb);
+                }
+                #endif
+
+                color = rgb;
+            }
+            #elif DEPTH_OF_FIELD
+            {
+                #if !CHROMATIC_ABERRATION
+                half4 dof = tex2D(_DepthOfFieldTex, i.uvFlippedSPR);
+                half coc = tex2D(_DepthOfFieldCoCTex, i.uvFlippedSPR);
+                coc = (coc - 0.5) * 2 * _DepthOfFieldParams.z;
+                // Convert CoC to far field alpha value.
+                float ffa = smoothstep(_MainTex_TexelSize.y * 2, _MainTex_TexelSize.y * 4, coc);
+                #endif
+                // lerp(lerp(color, dof, ffa), dof, dof.a)
+                color = lerp(color, dof.rgb * autoExposure, ffa + dof.a - ffa * dof.a);
+            }
+            #endif
+
+            // HDR Bloom
+            #if BLOOM || BLOOM_LENS_DIRT
+            {
+                half3 bloom = UpsampleFilter(_BloomTex, i.uvFlippedSPR, _BloomTex_TexelSize.xy, _Bloom_Settings.x) * _Bloom_Settings.y;
+                color += bloom;
+
+                #if BLOOM_LENS_DIRT
+                {
+                    half3 dirt = tex2D(_Bloom_DirtTex, i.uvFlipped).rgb * _Bloom_DirtIntensity;
+                    color += bloom * dirt;
+                }
+                #endif
+            }
+            #endif
+
+            // Procedural vignette
+            #if VIGNETTE_CLASSIC
+            {
+                half2 d = abs(uv - _Vignette_Center) * _Vignette_Settings.x;
+                d.x *= lerp(1.0, _ScreenParams.x / _ScreenParams.y, _Vignette_Settings.w);
+                d = pow(d, _Vignette_Settings.z); // Roundness
+                half vfactor = pow(saturate(1.0 - dot(d, d)), _Vignette_Settings.y);
+                color *= lerp(_Vignette_Color, (1.0).xxx, vfactor);
+            }
+
+            // Masked vignette
+            #elif VIGNETTE_MASKED
+            {
+                half vfactor = tex2D(_Vignette_Mask, uv).a;
+                half3 new_color = color * lerp(_Vignette_Color, (1.0).xxx, vfactor);
+                color = lerp(color, new_color, _Vignette_Opacity);
+            }
+            #endif
+
+            // HDR color grading & tonemapping
+            #if COLOR_GRADING_LOG_VIEW
+            {
+                color *= _ExposureEV;
+                color = saturate(LinearToLogC(color));
+            }
+            #elif COLOR_GRADING
+            {
+                color *= _ExposureEV; // Exposure is in ev units (or 'stops')
+
+                half3 colorLogC = saturate(LinearToLogC(color));
+                color = ApplyLut2d(_LogLut, colorLogC, _LogLut_Params);
+            }
+            #endif
+
+            //
+            // All the following effects happen in LDR
+            // ---------------------------------------------------------
+
+            color = saturate(color);
+
+            // Back to gamma space if needed
+            #if UNITY_COLORSPACE_GAMMA
+            {
+                color = LinearToGammaSpace(color);
+            }
+            #endif
+
+            // LDR user lut
+            #if USER_LUT
+            {
+                color = saturate(color);
+                half3 colorGraded;
+
+                #if !UNITY_COLORSPACE_GAMMA
+                {
+                    colorGraded = ApplyLut2d(_UserLut, LinearToGammaSpace(color), _UserLut_Params.xyz);
+                    colorGraded = GammaToLinearSpace(colorGraded);
+                }
+                #else
+                {
+                    colorGraded = ApplyLut2d(_UserLut, color, _UserLut_Params.xyz);
+                }
+                #endif
+
+                color = lerp(color, colorGraded, _UserLut_Params.w);
+            }
+            #endif
+
+            color = UberSecondPass(color, uv);
+
+            // Done !
+            return half4(color, 1.0);
+        }
+
+    ENDCG
+
+    SubShader
+    {
+        Cull Off ZWrite Off ZTest Always
+
+        // (0)
+        Pass
+        {
+            CGPROGRAM
+
+                #pragma vertex VertUber
+                #pragma fragment FragUber
+
+            ENDCG
+        }
+    }
+}

--
Gitblit v1.8.0