ATOM-17132 Image builder failed to build some images after preset was fixed (#6900)
The issue was because the preset reload was only happened in CreateJobs but not ProcessJobs. But these two functions might be called from different AssetBuilder. The fix is to add preset reload for Processjobs too. There was another change to add debug device name for streaming image. Signed-off-by: Qing Tao <55564570+VickyAtAZ@users.noreply.github.com>
This commit is contained in:
@@ -226,6 +226,14 @@ namespace ImageProcessingAtom
|
||||
MultiplatformTextureSettings settings;
|
||||
PlatformNameList platformsList = BuilderSettingManager::Instance()->GetPlatformList();
|
||||
PresetName suggestedPreset = BuilderSettingManager::Instance()->GetSuggestedPreset(imageFilepath);
|
||||
|
||||
// If the suggested preset doesn't exist (or was failed to be loaded), return empty texture settings
|
||||
if (BuilderSettingManager::Instance()->GetPreset(suggestedPreset) == nullptr)
|
||||
{
|
||||
AZ_Error("Image Processing", false, "Failed to find suggested preset [%s]", suggestedPreset.GetCStr());
|
||||
return settings;
|
||||
}
|
||||
|
||||
for (PlatformName& platform : platformsList)
|
||||
{
|
||||
TextureSettings textureSettings;
|
||||
|
||||
@@ -241,8 +241,7 @@ namespace ImageProcessingAtom
|
||||
// Reload preset if it was changed
|
||||
ImageProcessingAtom::BuilderSettingManager::Instance()->ReloadPreset(presetName);
|
||||
|
||||
AZStd::string_view filePath;
|
||||
auto presetSettings = BuilderSettingManager::Instance()->GetPreset(presetName, /*default platform*/"", &filePath);
|
||||
auto presetSettings = BuilderSettingManager::Instance()->GetPreset(presetName, /*default platform*/"");
|
||||
|
||||
AssetBuilderSDK::SourceFileDependency sourceFileDependency;
|
||||
sourceFileDependency.m_sourceDependencyType = AssetBuilderSDK::SourceFileDependency::SourceFileDependencyType::Absolute;
|
||||
@@ -274,6 +273,32 @@ namespace ImageProcessingAtom
|
||||
}
|
||||
}
|
||||
|
||||
void ReloadPresetIfNeeded(PresetName presetName)
|
||||
{
|
||||
// Reload preset if it was changed
|
||||
ImageProcessingAtom::BuilderSettingManager::Instance()->ReloadPreset(presetName);
|
||||
|
||||
auto presetSettings = BuilderSettingManager::Instance()->GetPreset(presetName, /*default platform*/"");
|
||||
|
||||
if (presetSettings)
|
||||
{
|
||||
// handle special case here
|
||||
// Cubemap setting may reference some other presets
|
||||
if (presetSettings->m_cubemapSetting)
|
||||
{
|
||||
if (presetSettings->m_cubemapSetting->m_generateIBLDiffuse && !presetSettings->m_cubemapSetting->m_iblDiffusePreset.IsEmpty())
|
||||
{
|
||||
ImageProcessingAtom::BuilderSettingManager::Instance()->ReloadPreset(presetSettings->m_cubemapSetting->m_iblDiffusePreset);
|
||||
}
|
||||
|
||||
if (presetSettings->m_cubemapSetting->m_generateIBLSpecular && !presetSettings->m_cubemapSetting->m_iblSpecularPreset.IsEmpty())
|
||||
{
|
||||
ImageProcessingAtom::BuilderSettingManager::Instance()->ReloadPreset(presetSettings->m_cubemapSetting->m_iblSpecularPreset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// this happens early on in the file scanning pass
|
||||
// this function should consistently always create the same jobs, and should do no checking whether the job is up to date or not - just be consistent.
|
||||
void ImageBuilderWorker::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response)
|
||||
@@ -336,6 +361,11 @@ namespace ImageProcessingAtom
|
||||
// Do conversion and get exported file's path
|
||||
if (needConversion)
|
||||
{
|
||||
|
||||
// Handles preset changes
|
||||
auto presetName = GetImagePreset(request.m_fullPath);
|
||||
ReloadPresetIfNeeded(presetName);
|
||||
|
||||
AZ_TracePrintf(AssetBuilderSDK::InfoWindow, "Performing image conversion: %s\n", request.m_fullPath.c_str());
|
||||
ImageConvertProcess* process = CreateImageConvertProcess(request.m_fullPath, request.m_tempDirPath,
|
||||
request.m_jobDescription.GetPlatformIdentifier(), response.m_outputProducts);
|
||||
|
||||
@@ -143,11 +143,6 @@ namespace AZ
|
||||
RHI::ResultCode resultCode = RHI::ResultCode::Success;
|
||||
|
||||
const ImageMipChainAsset& mipChainTailAsset = imageAsset.GetTailMipChain();
|
||||
|
||||
#ifdef AZ_RPI_STREAMING_IMAGE_DEBUG_LOG
|
||||
m_image->SetName(Name(imageAsset.GetHint().c_str()));
|
||||
AZ_TracePrintf("StreamingImage", "Init image [%s]\n", m_image->GetName().data());
|
||||
#endif
|
||||
|
||||
{
|
||||
RHI::StreamingImageInitRequest initRequest;
|
||||
@@ -193,6 +188,13 @@ namespace AZ
|
||||
m_rhiPool = rhiPool;
|
||||
m_pool = pool;
|
||||
m_pool->AttachImage(this);
|
||||
|
||||
// Set rhi image name
|
||||
m_image->SetName(Name(m_imageAsset.GetHint()));
|
||||
|
||||
#ifdef AZ_RPI_STREAMING_IMAGE_DEBUG_LOG
|
||||
AZ_TracePrintf("StreamingImage", "Init image [%s]\n", m_image->GetName().data());
|
||||
#endif
|
||||
|
||||
#if defined (AZ_RPI_STREAMING_IMAGE_HOT_RELOADING)
|
||||
BusConnect(imageAsset.GetId());
|
||||
|
||||
Reference in New Issue
Block a user