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:
@@ -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);
|
||||
|
||||
+3
-2
@@ -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)
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+3
-3
@@ -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::
|
||||
|
||||
Reference in New Issue
Block a user