From 579236ecf6bbf5f7dac71d6d1c831d9a6003372d Mon Sep 17 00:00:00 2001 From: rbarrand Date: Wed, 13 Oct 2021 00:24:06 -0700 Subject: [PATCH] Add SPDX header for python script. Update path aliases. Re-order HDRColorGradingParams.inl to order editor properties appropriately. Signed-off-by: rbarrand --- .../Assets/Scripts/activate_lut_asset.py | 7 +++ .../Shaders/ColorGrading/LutGeneration.azsl | 45 +++++-------------- .../PostProcessing/HDRColorGrading.azsl | 2 +- .../ColorGrading/HDRColorGradingParams.inl | 5 ++- .../EditorHDRColorGradingComponent.cpp | 2 +- .../EditorHDRColorGradingComponent.h | 6 +-- 6 files changed, 25 insertions(+), 42 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/Scripts/activate_lut_asset.py b/Gems/Atom/Feature/Common/Assets/Scripts/activate_lut_asset.py index 2e3256c37e..fe9c5f6471 100644 --- a/Gems/Atom/Feature/Common/Assets/Scripts/activate_lut_asset.py +++ b/Gems/Atom/Feature/Common/Assets/Scripts/activate_lut_asset.py @@ -1,3 +1,10 @@ +""" +Copyright (c) Contributors to the Open 3D Engine Project. +For complete copyright and license terms please see the LICENSE at the root of this distribution. + +SPDX-License-Identifier: Apache-2.0 OR MIT +""" + import azlmbr import azlmbr.legacy.general as general diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/ColorGrading/LutGeneration.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/ColorGrading/LutGeneration.azsl index d740ea8e1c..e2f7137514 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/ColorGrading/LutGeneration.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/ColorGrading/LutGeneration.azsl @@ -99,12 +99,13 @@ float3 ColorGrade(float3 linearColor) { float3 color = TransformColor(linearColor, ColorSpaceId::LinearSRGB, ColorSpaceId::ACEScg); color = ColorGradePostExposure(color, PassSrg::m_colorGradingExposure); - color = ColorGradeKelvinColorTemp(color, PassSrg::m_whiteBalanceKelvin); + //color = ColorGradeKelvinColorTemp(color, PassSrg::m_whiteBalanceKelvin); color = ColorGradingContrast(color, AcesCcMidGrey, PassSrg::m_colorGradingContrast); color = ColorGradeColorFilter(color, PassSrg::m_colorFilterSwatch.rgb, PassSrg::m_colorFilterMultiply, PassSrg::m_colorFilterIntensity); color = max(color, 0.0); color = ColorGradeSaturation(color, PassSrg::m_colorGradingPreSaturation); + color = ColorGradeSplitTone(color, PassSrg::m_splitToneBalance, PassSrg::m_splitToneWeight, PassSrg::m_splitToneShadowsColor, PassSrg::m_splitToneHighlightsColor); color = ColorGradeChannelMixer(color, PassSrg::m_channelMixingRed, PassSrg::m_channelMixingGreen, PassSrg::m_channelMixingBlue); @@ -112,8 +113,10 @@ float3 ColorGrade(float3 linearColor) color = ColorGradeShadowsMidtonesHighlights(color, PassSrg::m_smhShadowsStart, PassSrg::m_smhShadowsEnd, PassSrg::m_smhHighlightsStart, PassSrg::m_smhHighlightsEnd, PassSrg::m_smhWeight, PassSrg::m_smhShadowsColor, PassSrg::m_smhMidtonesColor, PassSrg::m_smhHighlightsColor); - color = ColorGradeHueShift(color, PassSrg::m_colorGradingHueShift); + color = ColorGradeSaturation(color, PassSrg::m_colorGradingPostSaturation); + + color = ColorGradeHueShift(color, PassSrg::m_colorGradingHueShift); color = TransformColor(color, ColorSpaceId::ACEScg, ColorSpaceId::LinearSRGB); return max(color.rgb, 0.0); } @@ -123,28 +126,11 @@ struct PSOutput float4 m_lutOutput : SV_Target0; }; -float3 GetSourceLutLinearColor(float3 baseColor, Texture3D sourceLut, ShaperType shaperType, float shaperBias, float shaperScale) -{ - // Convert from reference linearColor to the lutCoordinate for this Lut - float3 lutCoord = LinearToShaper(baseColor, shaperType, shaperBias, shaperScale); - - // Adjust coordinate to the domain excluding the outer half texel in all directions - uint3 outputDimensions; - sourceLut.GetDimensions(outputDimensions.x, outputDimensions.y, outputDimensions.z); - float3 coordBias = 1.0 / (2.0 * outputDimensions); - float3 coordScale = (outputDimensions - 1.0) / outputDimensions; - lutCoord = (lutCoord * coordScale) + coordBias; - - float3 lutColor = sourceLut.SampleLevel(PassSrg::LinearSampler, lutCoord, 0).rgb; - // Convert to linear - float3 linearColor = ShaperToLinear(lutColor, shaperType, shaperBias, shaperScale); - return linearColor; -} - PSOutput MainPS(VSOutput IN) { ShaperType shaperType = (ShaperType)PassSrg::m_shaperType; + PSOutput OUT; float3 baseCoords = float3(0.0, 0.0, 0.0); @@ -154,40 +140,29 @@ PSOutput MainPS(VSOutput IN) { case LutResolution::Lut16x16x16: { - // This seems correct. baseCoords = convert2Dto3DLutCoords(IN.m_texCoord, 256, 16); lutColor = PassSrg::m_identityLut16x16x16.Sample(PassSrg::PointSampler, baseCoords, 0.0).rgb; break; } case LutResolution::Lut32x32x32: { + // This seems correct intuitively, but is turning grey into green! baseCoords = convert2Dto3DLutCoords(IN.m_texCoord, 1024, 32); lutColor = PassSrg::m_identityLut32x32x32.Sample(PassSrg::PointSampler, baseCoords, 0.0).rgb; break; } case LutResolution::Lut64x64x64: { - // This doesn't look right. baseCoords = convert2Dto3DLutCoords(IN.m_texCoord, 4096, 64); - float3 baseColor = ShaperToLinear(baseCoords, shaperType, PassSrg::m_shaperBias, PassSrg::m_shaperScale); - //lutColor = PassSrg::m_identityLut64x64x64.Sample(PassSrg::PointSampler, baseCoords, 0.0).rgb; - lutColor = GetSourceLutLinearColor( - baseColor, - PassSrg::m_identityLut64x64x64, - shaperType, - PassSrg::m_shaperBias, - PassSrg::m_shaperScale - ); + lutColor = PassSrg::m_identityLut64x64x64.Sample(PassSrg::PointSampler, baseCoords, 0.0).rgb; break; } } - // color grade in linear sapce float3 gradedColor = ColorGrade(lutColor); - float3 shapedColor = LinearToShaper(gradedColor, shaperType, PassSrg::m_shaperBias, PassSrg::m_shaperScale); - float3 clampedColor = saturate(gradedColor); + gradedColor = ShaperToLinear(gradedColor, shaperType, PassSrg::m_shaperBias, PassSrg::m_shaperScale); - OUT.m_lutOutput = float4(clampedColor, 1.0); + OUT.m_lutOutput = float4(gradedColor, 1.0); return OUT; } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/HDRColorGrading.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/HDRColorGrading.azsl index 9225735e85..666fc3c815 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/HDRColorGrading.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/HDRColorGrading.azsl @@ -64,7 +64,7 @@ ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback float3 ColorGrade(float3 frameColor) { frameColor = ColorGradePostExposure(frameColor, PassSrg::m_colorGradingExposure); - frameColor = ColorGradeKelvinColorTemp(frameColor, PassSrg::m_whiteBalanceKelvin); + //frameColor = ColorGradeKelvinColorTemp(frameColor, PassSrg::m_whiteBalanceKelvin); frameColor = ColorGradingContrast(frameColor, AcesCcMidGrey, PassSrg::m_colorGradingContrast); frameColor = ColorGradeColorFilter(frameColor, PassSrg::m_colorFilterSwatch.rgb, PassSrg::m_colorFilterMultiply, PassSrg::m_colorFilterIntensity); diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/PostProcess/ColorGrading/HDRColorGradingParams.inl b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/PostProcess/ColorGrading/HDRColorGradingParams.inl index 13b4756e8e..2878ae5b40 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/PostProcess/ColorGrading/HDRColorGradingParams.inl +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/PostProcess/ColorGrading/HDRColorGradingParams.inl @@ -13,11 +13,9 @@ AZ_GFX_BOOL_PARAM(Enabled, m_enabled, false) AZ_GFX_BOOL_PARAM(GenerateLut, m_generateLut, false) AZ_GFX_FLOAT_PARAM(ColorGradingExposure, m_colorGradingExposure, 0.0) AZ_GFX_FLOAT_PARAM(ColorGradingContrast, m_colorGradingContrast, 0.0) -AZ_GFX_FLOAT_PARAM(ColorGradingHueShift, m_colorGradingHueShift, 0.0) AZ_GFX_FLOAT_PARAM(ColorGradingPreSaturation, m_colorGradingPreSaturation, 1.0) AZ_GFX_FLOAT_PARAM(ColorGradingFilterIntensity, m_colorGradingFilterIntensity, 1.0) AZ_GFX_FLOAT_PARAM(ColorGradingFilterMultiply, m_colorGradingFilterMultiply, 0.0) -AZ_GFX_FLOAT_PARAM(ColorGradingPostSaturation, m_colorGradingPostSaturation, 1.0) AZ_GFX_FLOAT_PARAM(WhiteBalanceKelvin, m_whiteBalanceKelvin, 6600.0) AZ_GFX_FLOAT_PARAM(WhiteBalanceTint, m_whiteBalanceTint, 0.0) AZ_GFX_FLOAT_PARAM(SplitToneBalance, m_splitToneBalance, 0.0) @@ -40,3 +38,6 @@ AZ_GFX_COMMON_PARAM(AZ::Render::LutResolution, LutResolution, m_lutResolution, A AZ_GFX_COMMON_PARAM(AZ::Render::ShaperPresetType, ShaperPresetType, m_shaperPresetType, AZ::Render::ShaperPresetType::None) AZ_GFX_COMMON_PARAM(float, CustomMinExposure, m_customMinExposure, -6.5) AZ_GFX_COMMON_PARAM(float, CustomMaxExposure, m_customMaxExposure, 6.5) + +AZ_GFX_FLOAT_PARAM(ColorGradingPostSaturation, m_colorGradingPostSaturation, 1.0) +AZ_GFX_FLOAT_PARAM(ColorGradingHueShift, m_colorGradingHueShift, 0.0) diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.cpp index 1164738314..ce40bb0e96 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.cpp @@ -250,7 +250,7 @@ namespace AZ uuid.ToString(uuidString); m_currentTiffFilePath = AZStd::string::format(TempTiffFilePath, uuidString.c_str()); - m_currentLutFilePath = "@devassets@/" + AZStd::string::format(GeneratedLutRelativePath, uuidString.c_str()); + m_currentLutFilePath = "@projectroot@/" + AZStd::string::format(GeneratedLutRelativePath, uuidString.c_str()); m_lutGenerationInProgress = true; m_controller.m_configuration.m_generateLut = true; diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.h index e9f7a00bca..ee2bebf2ef 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/ColorGrading/EditorHDRColorGradingComponent.h @@ -17,10 +17,10 @@ namespace AZ { namespace Render { - static const char* const TempTiffFilePath{ "@projectcache@/LutGeneration/SavedLut_%s.tiff" }; + static const char* const TempTiffFilePath{ "@usercache@/LutGeneration/SavedLut_%s.tiff" }; static const char* const GeneratedLutRelativePath = { "LutGeneration/SavedLut_%s" }; - static const char* const TiffToAzassetPythonScriptPath{ "@devroot@/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/tiff_to_3dl_azasset.py" }; - static const char* const ActivateLutAssetPythonScriptPath{ "@devroot@/Gems/Atom/Feature/Common/Assets/Scripts/activate_lut_asset.py" }; + static const char* const TiffToAzassetPythonScriptPath{ "@engroot@/Gems/Atom/Feature/Common/Editor/Scripts/ColorGrading/tiff_to_3dl_azasset.py" }; + static const char* const ActivateLutAssetPythonScriptPath{ "@engroot@/Gems/Atom/Feature/Common/Assets/Scripts/activate_lut_asset.py" }; class EditorHDRColorGradingComponent final : public AzToolsFramework::Components::