Atom/qingtao/image builder fixes (#6432)

* LYN-8837 o3de Material Editor - Texture Settings Editor - Hangs when converting texture (#6359)

Fixed a editor hanging issue when preview texture with astc format (starts multiple job threads inside a job thread)
Fixed an issue of changing texture setting didn't trigger image re-process.
Fixed an issue with image asset which has texture setting may have dependency with wrong preset
Added a EIF_HDR for source image in hdr format.
Fixed astc compression issue which may wrongly compress image to HDR astc format

Signed-off-by: Qing Tao <55564570+VickyAtAZ@users.noreply.github.com>
(cherry picked from commit d9f0a3012d)

* ATOM-16958 [Image Builder] Alpha data would be removed for source image with alpha content (#6412)

Fixed a regression issue with image builder which it can choose proper preset for images with alpha content.

Signed-off-by: Qing Tao <55564570+VickyAtAZ@users.noreply.github.com>
(cherry picked from commit b640f6d691)
This commit is contained in:
Qing Tao
2021-12-16 09:19:44 -08:00
committed by GitHub
parent fb36145e2e
commit 94ddafc7a2
9 changed files with 117 additions and 37 deletions
@@ -193,7 +193,7 @@ namespace ImageProcessingAtom
}
m_image->Get()->Swizzle(swizzle.c_str());
if (!m_input->m_presetSetting.m_discardAlpha)
if (m_input->m_presetSetting.m_discardAlpha)
{
m_alphaContent = EAlphaContent::eAlphaContent_Absent;
}
@@ -19,7 +19,7 @@ namespace ImageProcessingAtom
const static AZ::u32 EIF_Decal = 0x4; // this is usually set through the preset
const static AZ::u32 EIF_Greyscale = 0x8; // hint for the engine (e.g. greyscale light beams can be applied to shadow mask), can be for DXT1 because compression artfacts don't count as color
const static AZ::u32 EIF_SupressEngineReduce = 0x10; // info for the engine: don't reduce texture resolution on this texture
const static AZ::u32 EIF_UNUSED_BIT = 0x40; // Free to use
const static AZ::u32 EIF_HDR = 0x40; // the image contains HDR data
const static AZ::u32 EIF_AttachedAlpha = 0x400; // deprecated: info for the engine: it's a texture with attached alpha channel
const static AZ::u32 EIF_SRGBRead = 0x800; // info for the engine: if gamma corrected rendering is on, this texture requires SRGBRead (it's not stored in linear)
const static AZ::u32 EIF_DontResize = 0x8000; // info for the engine: for dds textures that shouldn't be resized
@@ -52,6 +52,24 @@ namespace ImageProcessingAtom
return false;
}
bool IsHDRFormat(EPixelFormat fmt)
{
switch (fmt)
{
case ePixelFormat_BC6UH:
case ePixelFormat_R9G9B9E5:
case ePixelFormat_R32G32B32A32F:
case ePixelFormat_R32G32F:
case ePixelFormat_R32F:
case ePixelFormat_R16G16B16A16F:
case ePixelFormat_R16G16F:
case ePixelFormat_R16F:
return true;
default:
return false;
}
}
PixelFormatInfo::PixelFormatInfo(
uint32_t a_bitsPerPixel,
uint32_t a_Channels,