Add SPDX header for python script. Update path aliases. Re-order HDRColorGradingParams.inl to order editor properties appropriately.

Signed-off-by: rbarrand <rbarrand@amazon.com>
This commit is contained in:
rbarrand
2021-10-13 00:24:06 -07:00
parent 2ac006a468
commit 579236ecf6
6 changed files with 25 additions and 42 deletions
@@ -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
@@ -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<float4> 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;
}
@@ -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);
@@ -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)
@@ -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;
@@ -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::