diff --git a/Content/Shaders/ColorGrading.flax b/Content/Shaders/ColorGrading.flax index f7074f20d..cd9497159 100644 --- a/Content/Shaders/ColorGrading.flax +++ b/Content/Shaders/ColorGrading.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c0b43b79fe3ad34ebf5fa47d49e017c768b48c1bd688ba521a684bab7ef286bd -size 12311 +oid sha256:0a7c3aef4378698c6875a7574ec17890d88e87013242e5f8327cc72050bfda8b +size 12377 diff --git a/Content/Shaders/PostProcessing.flax b/Content/Shaders/PostProcessing.flax index 4bdb35584..f58498b34 100644 --- a/Content/Shaders/PostProcessing.flax +++ b/Content/Shaders/PostProcessing.flax @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eb59d5d69de414b28dad32c673193d138709c16bd31bb8a1cf435d329a6bd1c1 -size 22997 +oid sha256:a430a05bdfa8476cc742748d5406e9c8c80a7e1ed00f392947b8c88cdf7cd176 +size 23062 diff --git a/Source/Shaders/ColorGrading.shader b/Source/Shaders/ColorGrading.shader index fe2ca4c91..7c945e2ef 100644 --- a/Source/Shaders/ColorGrading.shader +++ b/Source/Shaders/ColorGrading.shader @@ -281,8 +281,11 @@ float4 CombineLUTs(float2 uv, uint layerIndex) #endif // Move from encoded LUT color space to linear color - //float3 linearColor = encodedColor.rgb; // Default +#if COLOR_GRADING_LUT_LOG float3 linearColor = LogToLinear(encodedColor.rgb) - LogToLinear(0); // Log +#else + float3 linearColor = encodedColor.rgb; // Default +#endif // Apply white balance linearColor = WhiteBalance(linearColor); @@ -300,7 +303,7 @@ float4 CombineLUTs(float2 uv, uint layerIndex) color = lerp(color, lutColor, LutWeight); } - return float4(color, 1); + return float4(color / COLOR_GRADING_LUT_SCALE, 1); } // Vertex shader that writes to a range of slices of a volume texture diff --git a/Source/Shaders/GammaCorrectionCommon.hlsl b/Source/Shaders/GammaCorrectionCommon.hlsl index df188b347..671682fd2 100644 --- a/Source/Shaders/GammaCorrectionCommon.hlsl +++ b/Source/Shaders/GammaCorrectionCommon.hlsl @@ -5,6 +5,10 @@ #include "./Flax/Math.hlsl" +// Shared configs for Color Grading LUT +#define COLOR_GRADING_LUT_LOG 1 +#define COLOR_GRADING_LUT_SCALE 1.04f + // Fast reversible tonemapper // http://gpuopen.com/optimized-reversible-tonemapper-for-resolve/ float3 FastTonemap(float3 c) diff --git a/Source/Shaders/PostProcessing.shader b/Source/Shaders/PostProcessing.shader index e79e0138f..b8beedc18 100644 --- a/Source/Shaders/PostProcessing.shader +++ b/Source/Shaders/PostProcessing.shader @@ -115,18 +115,20 @@ static const float LUTSize = 32; half3 ColorLookupTable(half3 linearColor) { // Move from linear color to encoded LUT color space - //float3 encodedColor = linearColor; // Default +#if COLOR_GRADING_LUT_LOG float3 encodedColor = LinearToLog(linearColor + LogToLinear(0)); // Log +#else + float3 encodedColor = linearColor; // Default +#endif float3 uvw = encodedColor * ((LUTSize - 1) / LUTSize) + (0.5f / LUTSize); - #if USE_VOLUME_LUT half3 color = ColorGradingLUT.Sample(SamplerLinearClamp, uvw).rgb; #else half3 color = SampleUnwrappedTexture3D(ColorGradingLUT, SamplerLinearClamp, uvw, LUTSize).rgb; #endif - return color; + return color * COLOR_GRADING_LUT_SCALE; } // A random texture generator