Changed to use a new enum for handling the output types in case we need to expand custom handling in the future

Signed-off-by: Chris Galvan <chgalvan@amazon.com>
monroegm-disable-blank-issue-2
Chris Galvan 4 years ago
parent 578a19bf49
commit dd4ab4173d

@ -6,7 +6,7 @@
"DefaultPreset": { "DefaultPreset": {
"UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}", "UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}",
"Name": "GSI", "Name": "GSI",
"UncompressedAutoPick": true, "OutputTypeHandling": "UseInputFormatAndBitDepth",
"IsPowerOf2": true, "IsPowerOf2": true,
"MipMapSetting": { "MipMapSetting": {
"MipGenType": "Box" "MipGenType": "Box"
@ -16,7 +16,7 @@
"android": { "android": {
"UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}", "UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}",
"Name": "GSI", "Name": "GSI",
"UncompressedAutoPick": true, "OutputTypeHandling": "UseInputFormatAndBitDepth",
"MaxTextureSize": 2048, "MaxTextureSize": 2048,
"IsPowerOf2": true, "IsPowerOf2": true,
"MipMapSetting": { "MipMapSetting": {
@ -26,7 +26,7 @@
"ios": { "ios": {
"UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}", "UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}",
"Name": "GSI", "Name": "GSI",
"UncompressedAutoPick": true, "OutputTypeHandling": "UseInputFormatAndBitDepth",
"MaxTextureSize": 2048, "MaxTextureSize": 2048,
"IsPowerOf2": true, "IsPowerOf2": true,
"MipMapSetting": { "MipMapSetting": {
@ -36,7 +36,7 @@
"mac": { "mac": {
"UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}", "UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}",
"Name": "GSI", "Name": "GSI",
"UncompressedAutoPick": true, "OutputTypeHandling": "UseInputFormatAndBitDepth",
"IsPowerOf2": true, "IsPowerOf2": true,
"MipMapSetting": { "MipMapSetting": {
"MipGenType": "Box" "MipGenType": "Box"
@ -45,7 +45,7 @@
"provo": { "provo": {
"UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}", "UUID": "{C5E76E09-39FA-411F-B2E2-15B47BB6AB5F}",
"Name": "GSI", "Name": "GSI",
"UncompressedAutoPick": true, "OutputTypeHandling": "UseInputFormatAndBitDepth",
"IsPowerOf2": true, "IsPowerOf2": true,
"MipMapSetting": { "MipMapSetting": {
"MipGenType": "Box" "MipGenType": "Box"

@ -51,7 +51,7 @@ namespace ImageProcessingAtom
->Field("Swizzle", &PresetSettings::m_swizzle) ->Field("Swizzle", &PresetSettings::m_swizzle)
->Field("CubemapSettings", &PresetSettings::m_cubemapSetting) ->Field("CubemapSettings", &PresetSettings::m_cubemapSetting)
->Field("MipMapSetting", &PresetSettings::m_mipmapSetting) ->Field("MipMapSetting", &PresetSettings::m_mipmapSetting)
->Field("UncompressedAutoPick", &PresetSettings::m_uncompressedAutoPick) ->Field("OutputTypeHandling", &PresetSettings::m_outputTypeHandling)
; ;
serialize->Enum<RGBWeight>() serialize->Enum<RGBWeight>()
@ -132,6 +132,11 @@ namespace ImageProcessingAtom
->Value("R32", EPixelFormat::ePixelFormat_R32) ->Value("R32", EPixelFormat::ePixelFormat_R32)
->Value("Unknown", EPixelFormat::ePixelFormat_Unknown) ->Value("Unknown", EPixelFormat::ePixelFormat_Unknown)
; ;
serialize->Enum<OutputTypeHandling>()
->Value("Default", OutputTypeHandling::USE_SPECIFIED_OUTPUT_TYPE)
->Value("UseInputFormatAndBitDepth", OutputTypeHandling::USE_INPUT_FORMAT_AND_BIT_DEPTH)
;
} }
} }
@ -203,7 +208,7 @@ namespace ImageProcessingAtom
m_swizzle == other.m_swizzle && m_swizzle == other.m_swizzle &&
m_isMipRenormalize == other.m_isMipRenormalize && m_isMipRenormalize == other.m_isMipRenormalize &&
m_numResidentMips == other.m_numResidentMips && m_numResidentMips == other.m_numResidentMips &&
m_uncompressedAutoPick == other.m_uncompressedAutoPick m_outputTypeHandling == other.m_outputTypeHandling
; ;
} }
@ -241,7 +246,7 @@ namespace ImageProcessingAtom
m_swizzle = other.m_swizzle; m_swizzle = other.m_swizzle;
m_isMipRenormalize = other.m_isMipRenormalize; m_isMipRenormalize = other.m_isMipRenormalize;
m_numResidentMips = other.m_numResidentMips; m_numResidentMips = other.m_numResidentMips;
m_uncompressedAutoPick = other.m_uncompressedAutoPick; m_outputTypeHandling = other.m_outputTypeHandling;
} }
} }

@ -25,6 +25,13 @@ namespace ImageProcessingAtom
AZ_TYPE_INFO(PresetSettings, "{4F4DEC5C-48DD-40FD-97B4-5FB6FC7242E9}"); AZ_TYPE_INFO(PresetSettings, "{4F4DEC5C-48DD-40FD-97B4-5FB6FC7242E9}");
AZ_CLASS_ALLOCATOR(PresetSettings, AZ::SystemAllocator, 0); AZ_CLASS_ALLOCATOR(PresetSettings, AZ::SystemAllocator, 0);
//! Custom overrides for how to handle the output format
enum OutputTypeHandling
{
USE_SPECIFIED_OUTPUT_TYPE = 0,
USE_INPUT_FORMAT_AND_BIT_DEPTH
};
PresetSettings(); PresetSettings();
PresetSettings(const PresetSettings& other); PresetSettings(const PresetSettings& other);
PresetSettings& operator= (const PresetSettings& other); PresetSettings& operator= (const PresetSettings& other);
@ -103,9 +110,8 @@ namespace ImageProcessingAtom
//"swizzle". need to be 4 character and each character need to be one of "rgba01" //"swizzle". need to be 4 character and each character need to be one of "rgba01"
AZStd::string m_swizzle; AZStd::string m_swizzle;
//! Convert to an uncompressed pixel format that automatically picks a preferred pixel //! Controls how the output type format is derived
//! format based on the source input OutputTypeHandling m_outputTypeHandling = USE_SPECIFIED_OUTPUT_TYPE;
bool m_uncompressedAutoPick = false;
protected: protected:
void DeepCopyMembers(const PresetSettings& other); void DeepCopyMembers(const PresetSettings& other);
@ -140,3 +146,10 @@ namespace ImageProcessingAtom
}; };
} // namespace ImageProcessingAtom } // namespace ImageProcessingAtom
namespace AZ
{
// Bind enums with uuids. Required for named enum support.
// Note: AZ_TYPE_INFO_SPECIALIZE has to be declared in AZ namespace
AZ_TYPE_INFO_SPECIALIZE(ImageProcessingAtom::PresetSettings::OutputTypeHandling, "{F919ECB6-BF80-4BEF-9E72-EA76504EBE9D}");
}

@ -535,17 +535,20 @@ namespace ImageProcessingAtom
m_image->GetCompressOption().rgbWeight = m_input->m_presetSetting.GetColorWeight(); m_image->GetCompressOption().rgbWeight = m_input->m_presetSetting.GetColorWeight();
m_image->GetCompressOption().discardAlpha = m_input->m_presetSetting.m_discardAlpha; m_image->GetCompressOption().discardAlpha = m_input->m_presetSetting.m_discardAlpha;
// If the m_uncompressedAutoPick flag is set, then let the converter pick // Convert to a pixel format based on the desired handling
// a pixel format that best matches the source input format // The default behavior will choose the output format specified by the preset
if (m_input->m_presetSetting.m_uncompressedAutoPick) switch (m_input->m_presetSetting.m_outputTypeHandling)
{
EPixelFormat sourceInputFormat = m_input->m_inputImage->GetPixelFormat();
m_image->ConvertFormat(sourceInputFormat);
}
// Otherwise, convert to the pixel format specified by the preset that was chosen
else
{ {
case PresetSettings::OutputTypeHandling::USE_INPUT_FORMAT_AND_BIT_DEPTH:
{
EPixelFormat sourceInputFormat = m_input->m_inputImage->GetPixelFormat();
m_image->ConvertFormat(sourceInputFormat);
}
break;
case PresetSettings::OutputTypeHandling::USE_SPECIFIED_OUTPUT_TYPE:
default:
m_image->ConvertFormat(m_input->m_presetSetting.m_pixelFormat); m_image->ConvertFormat(m_input->m_presetSetting.m_pixelFormat);
break;
} }
return true; return true;

Loading…
Cancel
Save