ATOM-16029 Add direct support for Astc compression (#4157)

* ATOM-16029 Add direct support for Astc compression
Changes include:
- Add ASTCCompressor class
- Enabled 3rdparty::astc-encoder static library.
- Remove ASTC support in PVRTC compressor and ISPC compressor.
- Update unit test to include texts for ASTC compress/decompress.

Signed-off-by: Qing Tao <qingtao@amazon.com>
This commit is contained in:
Qing Tao
2021-09-17 09:36:55 -07:00
committed by GitHub
parent 9184d52a9b
commit fc8697edd5
16 changed files with 539 additions and 106 deletions
@@ -117,6 +117,11 @@ namespace ImageProcessingAtom
}
}
const ImageConvertProcessDescriptor* ImageConvertProcess::GetInputDesc() const
{
return m_input.get();
}
ImageConvertProcess::ImageConvertProcess(AZStd::unique_ptr<ImageConvertProcessDescriptor>&& descriptor)
: m_image(nullptr)
, m_progressStep(0)
@@ -554,12 +559,6 @@ namespace ImageProcessingAtom
// pixel format conversion
bool ImageConvertProcess::ConvertPixelformat()
{
//For ASTC compression we need to clear out the alpha to get accurate rgb compression.
if(m_alphaImage && IsASTCFormat(m_input->m_presetSetting.m_pixelFormat))
{
m_image->Get()->Swizzle("rgb1");
}
//set up compress option
ICompressor::EQuality quality;
if (m_input->m_isPreview)
@@ -574,7 +573,14 @@ namespace ImageProcessingAtom
// set the compression options
m_image->GetCompressOption().compressQuality = quality;
m_image->GetCompressOption().rgbWeight = m_input->m_presetSetting.GetColorWeight();
m_image->GetCompressOption().ispcDiscardAlpha = m_input->m_presetSetting.m_discardAlpha;
m_image->GetCompressOption().discardAlpha = m_input->m_presetSetting.m_discardAlpha;
//For ASTC compression we need to clear out the alpha to get accurate rgb compression.
if(m_alphaImage && IsASTCFormat(m_input->m_presetSetting.m_pixelFormat))
{
m_image->GetCompressOption().discardAlpha = true;
}
m_image->ConvertFormat(m_input->m_presetSetting.m_pixelFormat);
return true;