Integrating github/staging through commit ab87ed9

This commit is contained in:
alexpete
2021-04-09 11:27:37 -07:00
parent ae62a97894
commit 1044dc3da1
1582 changed files with 29374 additions and 519051 deletions
@@ -501,6 +501,7 @@ namespace AWSClientAuthUnitTest
m_settingsRegistry->SetContext(m_registrationContext.get());
AZ::ComponentApplicationBus::Handler::BusConnect();
AZ::Interface<AZ::ComponentApplicationRequests>::Register(this);
if (m_connectClientAuthBus)
{
@@ -551,10 +552,11 @@ namespace AWSClientAuthUnitTest
AZ::JsonSystemComponent::Reflect(m_registrationContext.get());
m_registrationContext->DisableRemoveReflection();
AZ::Interface<AZ::ComponentApplicationRequests>::Unregister(this);
AZ::ComponentApplicationBus::Handler::BusDisconnect();
if (m_connectClientAuthBus)
{
AZ::Interface<IAWSClientAuthRequests>::Unregister(this);
AZ::Interface<IAWSClientAuthRequests>::Unregister(this);
AWSClientAuth::AWSClientAuthRequestBus::Handler::BusDisconnect();
}
@@ -573,6 +575,8 @@ namespace AWSClientAuthUnitTest
AZ::ComponentApplication* GetApplication() override { return nullptr; }
void RegisterComponentDescriptor(const AZ::ComponentDescriptor*) override { }
void UnregisterComponentDescriptor(const AZ::ComponentDescriptor*) override { }
void RegisterEntityAddedEventHandler(AZ::EntityAddedEvent::Handler&) override { }
void RegisterEntityRemovedEventHandler(AZ::EntityRemovedEvent::Handler&) override { }
bool AddEntity(AZ::Entity*) override { return true; }
bool RemoveEntity(AZ::Entity*) override { return true; }
bool DeleteEntity(const AZ::EntityId&) override { return true; }
@@ -122,7 +122,6 @@ TEST_F(AuthenticationProviderManagerTest, PasswordGrantSingleFactorSignInAsync_S
{
m_mockController->Initialize(m_enabledProviderNames, m_settingspath);
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *cognitoProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::AWSCognitoIDP].get();
testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock> *lwaProviderMock = (testing::NiceMock<AWSClientAuthUnitTest::AuthenticationProviderMock>*)m_mockController->m_authenticationProvidersMap[AWSClientAuth::ProviderNameEnum::LoginWithAmazon].get();
EXPECT_CALL(*cognitoProviderMock, PasswordGrantSingleFactorSignInAsync(testing::_, testing::_)).Times(1);
m_mockController->PasswordGrantSingleFactorSignInAsync(AWSClientAuth::ProviderNameEnum::AWSCognitoIDP, AWSClientAuthUnitTest::TEST_USERNAME, AWSClientAuthUnitTest::TEST_PASSWORD);
@@ -372,6 +372,7 @@ namespace AWSCore
}
#if defined(AZ_ENABLE_TRACING)
AZStd::string message = AZStd::string::format("An %s error occurred when performing %s %s on service %s using %s: %s\n\nRequest Content:\n%s\n\nResponse Content:\n%s\n\n",
RequestType::error.type.c_str(),
ServiceRequestJobType::HttpMethodToString(RequestType::Method()),
@@ -404,6 +405,7 @@ namespace AWSCore
{
AZ_Warning(ServiceClientJobType::COMPONENT_DISPLAY_NAME, false, message.c_str());
}
#endif
OnFailure();
@@ -69,7 +69,6 @@ namespace Achievements
behaviorContext->Class<AchievementDetails>()
->Constructor<AchievementDetails&>()
->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::Preview)
->Attribute(AZ::Script::Attributes::Storage, AZ::Script::Attributes::StorageType::Value)
->Property("id", BehaviorValueProperty(&AchievementDetails::id))
->Property("name", BehaviorValueProperty(&AchievementDetails::name))
@@ -123,7 +123,6 @@ namespace AssetValidation::AssetSeed
// Add the current project default seed list file
AZStd::string projectName;
bool checkPlatform = false;
AZ::IO::FixedMaxPathString projectPath = AZ::Utils::GetProjectPath();
if (!projectPath.empty())
@@ -225,6 +225,7 @@ void TestCreateContainers([[maybe_unused]] const AZ::ConsoleCommandContainer& so
AZ_TracePrintf("TestCreateContainers", "%d / %d ready after %ld ms\n", readyContainers.size(), totalContainers, runMS);
AZStd::this_thread::sleep_for(AZStd::chrono::milliseconds(100));
}
#if defined(AZ_ENABLE_TRACING)
if (loadingContainers.size())
{
AZ_TracePrintf("TestCreateContainers", "Failed to load %d / %d containers\n", loadingContainers.size(), totalContainers);
@@ -233,6 +234,7 @@ void TestCreateContainers([[maybe_unused]] const AZ::ConsoleCommandContainer& so
AZ_TracePrintf("TestCreateContainers", "Couldn't load container for %s\n", thisContainer.ToString<AZStd::string>().c_str());
}
}
#endif
}, true);
runJob->Start();
}
@@ -148,7 +148,6 @@ namespace ImageProcessingAtom
size_t nSlicePitch = (pitch / ePS_Blue);
AZ::u32 src = 0;
AZ::u32 dst = 0;
for (int b = 0; b < ePS_Blue; ++b)
{
for (int g = 0; g < ePS_Green; ++g)
@@ -311,4 +310,4 @@ namespace ImageProcessingAtom
//save color chart data to an image and save as current
m_img = colorChart.GenerateChartImage();
}
}
}
@@ -638,7 +638,6 @@ namespace ImageProcessingAtom
DDS_FILE_DESC desc;
DDS_HEADER_DXT10 exthead;
AZ::IO::SizeType startPos = fileLoadStream.GetCurPos();
fileLoadStream.Read(sizeof(desc), &desc);
if (desc.dwMagic != FOURCC_DDS || !desc.IsValid())
@@ -119,8 +119,6 @@ namespace ImageProcessingAtom
ImfMath::Box2i dw = header.dataWindow();
width = dw.max.x - dw.min.x + 1;
height = dw.max.y - dw.min.y + 1;
int dx = dw.min.x;
int dy = dw.min.y;
// Create IImageObject
IImageObject* newImage = IImageObject::CreateImage(width, height, 1, format);
@@ -36,7 +36,6 @@ namespace ImageProcessingAtom
}
//convert to format which compatiable our pixel format
QImage::Format format = qimage.format();
if (qimage.format() != QImage::Format_RGBA8888)
{
qimage = qimage.convertToFormat(QImage::Format_RGBA8888);
@@ -193,7 +193,7 @@ namespace ImageProcessingAtom
AZ::Uuid sourceId = source->GetSourceUuid();
QAction* editImportSettingsAction = menu->addAction("Edit Texture Settings...", [sourceId, this]()
menu->addAction("Edit Texture Settings...", [sourceId, this]()
{
OpenSourceTextureFile(sourceId);
});
@@ -205,7 +205,7 @@ namespace ImageProcessingAtom
if (product->GetAssetType() == azrtti_typeid<AZ::RPI::StreamingImageAsset>())
{
AZ::Data::AssetId assetId = product->GetAssetId();
QAction* editImportSettingsAction = menu->addAction("Save as DDS...", [assetId, this]()
menu->addAction("Save as DDS...", [assetId, this]()
{
QString filePath = QFileDialog::getSaveFileName(nullptr, QString("Save to file"), m_lastSavedPath, QString("DDS file (*.dds)"));
if (filePath.isEmpty())
@@ -118,7 +118,6 @@ namespace ImageProcessingAtom
// Build mip chain assets.
// Start from smallest mips so the mip chain asset for the lowest resolutions may contain more high level mips
bool ready = false;
uint32_t lastMip = imageDesc.m_mipLevels;
uint32_t totalSize = 0;
AZStd::vector<Data::Asset<RPI::ImageMipChainAsset>> mipChains;
@@ -1090,7 +1090,6 @@ namespace ImageProcessingAtom
uint32 pitch1, pitch2;
float sumDeltaSqLinear = 0;
AZ::u32 sumPixelCount = 0;
//only process the highest mip
image1->GetImagePointer(0, mem1, pitch1);
@@ -504,8 +504,6 @@ namespace ImageProcessingAtom
const PixelFormatInfo* const pPixelFormatInfo = CPixelFormats::GetInstance().GetPixelFormatInfo(format);
DXGI_FORMAT d3dformat = pPixelFormatInfo->d3d10Format;
memset(&header, 0, sizeof(DDS_HEADER_LEGACY));
header.dwSize = sizeof(DDS_HEADER_LEGACY);
@@ -702,7 +700,6 @@ namespace ImageProcessingAtom
{
const MipLevel& level = *m_mips[mip];
AZ::u32 faceBufSize = level.m_pitch * level.m_rowCount / faces;
AZ::u32 start = faceBufSize * face;
saveFileStream.Write(faceBufSize, level.m_pData + faceBufSize * face);
}
}
@@ -342,9 +342,6 @@ namespace ImageProcessingAtom
AZ::Data::Asset<AZ::RPI::StreamingImageAsset> LoadImageAsset(const AZ::Data::AssetId& imageAssetId)
{
RPI::StreamingImageAssetHandler* imageAssetHandler = static_cast<RPI::StreamingImageAssetHandler*>(
Data::AssetManager::Instance().GetHandler(RPI::StreamingImageAsset::RTTI_Type()));
// Blocking loading streaming image asset with its mipchain assets
AZ::Data::Asset<AZ::RPI::StreamingImageAsset> imageAsset = AZ::Data::AssetManager::Instance().GetAsset<AZ::RPI::StreamingImageAsset>(imageAssetId, AZ::Data::AssetLoadBehavior::PreLoad);
@@ -103,6 +103,8 @@ namespace UnitTest
ComponentApplication* GetApplication() override { return nullptr; }
void RegisterComponentDescriptor(const ComponentDescriptor*) override { }
void UnregisterComponentDescriptor(const ComponentDescriptor*) override { }
void RegisterEntityAddedEventHandler(EntityAddedEvent::Handler&) override { }
void RegisterEntityRemovedEventHandler(EntityRemovedEvent::Handler&) override { }
bool AddEntity(Entity*) override { return false; }
bool RemoveEntity(Entity*) override { return false; }
bool DeleteEntity(const EntityId&) override { return false; }
@@ -101,12 +101,12 @@ namespace AZ
// To avoid the warning:
// "No job was found to match the job dependency criteria declared by file "..."
// We will schedule the job, but will do nothing
bool shouldSkipFile = false;
//bool shouldSkipFile = false;
// We treat some issues as warnings and return "Success" from CreateJobs allows us to report the dependency.
// If/when a valid dependency file appears, that will trigger the ShaderVariantAssetBuilder to run again.
// Since CreateJobs will pass, we forward this message to ProcessJob which will report it as an error.
bool gotPreprocessingError = false;
//bool gotPreprocessingError = false;
// The following if-block will be removed once [GFX TODO][ATOM-5302] is addressed, and
@@ -176,7 +176,6 @@ namespace AZ
for (rapidjson::Value::ConstMemberIterator itr2 = attributeMember.MemberBegin(); itr2 != attributeMember.MemberEnd(); ++itr2)
{
bool isSystemSemanticDefined = false;
AZStd::string name = itr2->name.GetString();
const rapidjson::Value& value = itr2->value;
rapidjson::Type type = value.GetType();
@@ -570,7 +569,6 @@ namespace AZ
for (rapidjson::Value::ConstMemberIterator itr4 = attributeArray.MemberBegin(); itr4 != attributeArray.MemberEnd(); ++itr4)
{
AZStd::string attributeArrayMemberName = itr4->name.GetString();
const rapidjson::Value& attributeArrayMemberValue = itr4->value;
if (attributeArrayMemberName == "count")
{
@@ -621,7 +619,6 @@ namespace AZ
for (rapidjson::Value::ConstMemberIterator itr4 = attributeArray.MemberBegin(); itr4 != attributeArray.MemberEnd(); ++itr4)
{
const char* attributeArrayMemberName = itr4->name.GetString();
const rapidjson::Value& attributeArrayMemberValue = itr4->value;
if (AzFramework::StringFunc::Equal(attributeArrayMemberName, "addressU"))
{
@@ -722,7 +719,6 @@ namespace AZ
for (rapidjson::Value::ConstMemberIterator itr4 = attributeArray.MemberBegin(); itr4 != attributeArray.MemberEnd(); ++itr4)
{
AZStd::string attributeArrayMemberName = itr4->name.GetString();
const rapidjson::Value& attributeArrayMemberValue = itr4->value;
if (attributeArrayMemberName == "count")
{
@@ -751,7 +747,6 @@ namespace AZ
for (rapidjson::Value::ConstMemberIterator itr4 = attributeArray.MemberBegin(); itr4 != attributeArray.MemberEnd(); ++itr4)
{
AZStd::string attributeArrayMemberName = itr4->name.GetString();
const rapidjson::Value& attributeArrayMemberValue = itr4->value;
if (attributeArrayMemberName == "count")
{
@@ -909,7 +904,6 @@ namespace AZ
uint32_t explicitlyOrdered = 0;
uint32_t implicitlyOrdered = 0;
auto shaderOptionsCount = shaderOptions.Size();
for (rapidjson::Value::ConstValueIterator optItr = shaderOptions.Begin(); optItr != shaderOptions.End(); ++optItr)
{
const rapidjson::Value& optionEntry = *optItr;
@@ -102,7 +102,7 @@ namespace AZ
// Register Shader Resource Group Layout Builder
AssetBuilderSDK::AssetBuilderDesc srgLayoutBuilderDescriptor;
srgLayoutBuilderDescriptor.m_name = "Shader Resource Group Layout Builder";
srgLayoutBuilderDescriptor.m_version = 51; // SPEC-6065
srgLayoutBuilderDescriptor.m_version = 52; // ATOM-14780
srgLayoutBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsl", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
srgLayoutBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsli", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
srgLayoutBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", SrgLayoutBuilder::MergedPartialSrgsExtension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
@@ -144,7 +144,7 @@ namespace AZ
// Register Precompiled Shader Builder
AssetBuilderSDK::AssetBuilderDesc precompiledShaderBuilderDescriptor;
precompiledShaderBuilderDescriptor.m_name = "Precompiled Shader Builder";
precompiledShaderBuilderDescriptor.m_version = 6; // ATOM-14918
precompiledShaderBuilderDescriptor.m_version = 7; // ATOM-14780
precompiledShaderBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", AZ::PrecompiledShaderBuilder::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard));
precompiledShaderBuilderDescriptor.m_busId = azrtti_typeid<PrecompiledShaderBuilder>();
precompiledShaderBuilderDescriptor.m_createJobFunction = AZStd::bind(&PrecompiledShaderBuilder::CreateJobs, &m_precompiledShaderBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2);
@@ -255,7 +255,7 @@ namespace AZ
auto secondQuote = sourceCode.find('"', firstQuote + 1);
auto originalFile = sourceCode.substr(firstQuote + 1, secondQuote - firstQuote - 1); // start +1, count -1 because we don't want the quotes included.
VerifySameFolder(originalFile, newFileOrigin);
bool didReplace = AzFramework::StringFunc::Replace(sourceCode, originalFile.c_str(), newFileOrigin.c_str(), true /*case sensitive*/);
[[maybe_unused]] bool didReplace = AzFramework::StringFunc::Replace(sourceCode, originalFile.c_str(), newFileOrigin.c_str(), true /*case sensitive*/);
AZ_Assert(didReplace, "Failed to replace %s for %s in preprocessed source.", originalFile.c_str(), newFileOrigin.c_str());
}
else
@@ -61,32 +61,58 @@ namespace AZ
return;
}
// setup dependencies on the azsrg asset file names
for (const auto& srgFileName : precompiledShaderAsset.m_srgAssetFileNames)
{
AZStd::string srgAssetPath = RPI::AssetUtils::ResolvePathReference(request.m_sourceFile.c_str(), srgFileName);
AssetBuilderSDK::SourceFileDependency dependency;
dependency.m_sourceFileDependencyPath = srgAssetPath;
response.m_sourceFileDependencyList.push_back(dependency);
}
// setup dependencies on the root azshadervariant asset file names
for (const auto& rootShaderVariantAsset : precompiledShaderAsset.m_rootShaderVariantAssets)
{
AZStd::string rootShaderVariantAssetPath = RPI::AssetUtils::ResolvePathReference(request.m_sourceFile.c_str(), rootShaderVariantAsset->m_rootShaderVariantAssetFileName);
AssetBuilderSDK::SourceFileDependency dependency;
dependency.m_sourceFileDependencyPath = rootShaderVariantAssetPath;
response.m_sourceFileDependencyList.push_back(dependency);
}
for (const AssetBuilderSDK::PlatformInfo& platformInfo : request.m_enabledPlatforms)
{
AssetBuilderSDK::JobDescriptor job;
job.m_jobKey = PrecompiledShaderBuilderJobKey;
job.SetPlatformIdentifier(platformInfo.m_identifier.c_str());
job.m_critical = true;
AZStd::vector<AZStd::string>::iterator itPlatformIdentifier = AZStd::find(
precompiledShaderAsset.m_platformIdentifiers.begin(),
precompiledShaderAsset.m_platformIdentifiers.end(),
platformInfo.m_identifier);
response.m_createJobOutputs.push_back(job);
if (itPlatformIdentifier != precompiledShaderAsset.m_platformIdentifiers.end())
{
AZStd::vector<AssetBuilderSDK::JobDependency> jobDependencyList;
// setup dependencies on the azsrg asset file names
for (const auto& srgFileName : precompiledShaderAsset.m_srgAssetFileNames)
{
AZStd::string srgAssetPath = RPI::AssetUtils::ResolvePathReference(request.m_sourceFile.c_str(), srgFileName);
AssetBuilderSDK::SourceFileDependency sourceDependency;
sourceDependency.m_sourceFileDependencyPath = srgAssetPath;
response.m_sourceFileDependencyList.push_back(sourceDependency);
AssetBuilderSDK::JobDependency jobDependency;
jobDependency.m_jobKey = "azsrg";
jobDependency.m_platformIdentifier = platformInfo.m_identifier;
jobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order;
jobDependency.m_sourceFile = sourceDependency;
jobDependencyList.push_back(jobDependency);
}
// setup dependencies on the root azshadervariant asset file names
for (const auto& rootShaderVariantAsset : precompiledShaderAsset.m_rootShaderVariantAssets)
{
AZStd::string rootShaderVariantAssetPath = RPI::AssetUtils::ResolvePathReference(request.m_sourceFile.c_str(), rootShaderVariantAsset->m_rootShaderVariantAssetFileName);
AssetBuilderSDK::SourceFileDependency sourceDependency;
sourceDependency.m_sourceFileDependencyPath = rootShaderVariantAssetPath;
response.m_sourceFileDependencyList.push_back(sourceDependency);
AssetBuilderSDK::JobDependency jobDependency;
jobDependency.m_jobKey = "azshadervariant";
jobDependency.m_platformIdentifier = platformInfo.m_identifier;
jobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order;
jobDependency.m_sourceFile = sourceDependency;
jobDependencyList.push_back(jobDependency);
}
AssetBuilderSDK::JobDescriptor job;
job.m_jobKey = PrecompiledShaderBuilderJobKey;
job.SetPlatformIdentifier(platformInfo.m_identifier.c_str());
job.m_jobDependencyList = jobDependencyList;
job.m_critical = true;
response.m_createJobOutputs.push_back(job);
}
}
response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success;
@@ -151,35 +177,11 @@ namespace AZ
jobProduct.m_dependencies.push_back(productDependency);
}
// retrieve the list of shader platform interfaces for the target platform
AZStd::vector<RHI::ShaderPlatformInterface*> platformInterfaces;
ShaderBuilder::ShaderPlatformInterfaceRequestBus::BroadcastResult(platformInterfaces, &ShaderBuilder::ShaderPlatformInterfaceRequest::GetShaderPlatformInterface, request.m_platformInfo);
// load the variant product assets
// these are the dependency root variant asset products that were processed prior to running this job
RPI::ShaderAssetCreator::ShaderRootVariantAssets rootVariantProductAssets;
for (AZStd::unique_ptr<RPI::RootShaderVariantAssetSourceData>& rootShaderVariantAsset : precompiledShaderAsset.m_rootShaderVariantAssets)
{
// find the ShaderPlatformInterface for this root shader variant
// we need this to map the variant asset to the APIType
RHI::ShaderPlatformInterface* foundShaderPlatformInterface = nullptr;
for (auto shaderPlatformInterface : platformInterfaces)
{
if (shaderPlatformInterface->GetAPIName() == rootShaderVariantAsset->m_apiName)
{
foundShaderPlatformInterface = shaderPlatformInterface;
break;
}
}
if (!foundShaderPlatformInterface)
{
// skip this shader API since it's not available on the current platform
continue;
}
RHI::APIType apiType = foundShaderPlatformInterface->GetAPIType();
// retrieve the variant asset
auto assetOutcome = RPI::AssetUtils::LoadAsset<RPI::ShaderVariantAsset>(request.m_fullPath, rootShaderVariantAsset->m_rootShaderVariantAssetFileName, 0);
if (!assetOutcome)
@@ -188,7 +190,7 @@ namespace AZ
return;
}
rootVariantProductAssets.push_back(AZStd::make_pair(apiType, assetOutcome.GetValue()));
rootVariantProductAssets.push_back(AZStd::make_pair(RHI::APIType{ rootShaderVariantAsset->m_apiName.GetCStr() }, assetOutcome.GetValue()));
AssetBuilderSDK::ProductDependency productDependency;
productDependency.m_dependencyId = assetOutcome.GetValue().GetId();
@@ -196,14 +198,6 @@ namespace AZ
jobProduct.m_dependencies.push_back(productDependency);
}
if (rootVariantProductAssets.empty())
{
// no shader variants for this platform
AZ_Warning(PrecompiledShaderBuilderName, false, "No shader platforms detected for root variants");
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
return;
}
// use the ShaderAssetCreator to clone the shader asset, which will update the embedded Srg and Variant asset UUIDs
// Note that the Srg and Variant assets do not have embedded asset references and are processed with the RC Copy functionality
RPI::ShaderAssetCreator shaderAssetCreator;
@@ -262,7 +256,7 @@ namespace AZ
fileStream.Read(length, buffer.data());
buffer.back() = 0;
AZ::ObjectStream::FilterDescriptor loadFilter(nullptr, AZ::ObjectStream::FILTERFLAG_IGNORE_UNKNOWN_CLASSES);
AZ::ObjectStream::FilterDescriptor loadFilter(&AZ::Data::AssetFilterNoAssetLoading, AZ::ObjectStream::FILTERFLAG_IGNORE_UNKNOWN_CLASSES);
return AZ::Utils::LoadObjectFromBuffer<T>(buffer.data(), length, context, loadFilter);
}
} // namespace AZ
@@ -101,8 +101,7 @@ namespace AZ
return;
}
ShaderBuilderUtility::GetAbsolutePathToAzslFile(fullPath, descriptorParseOutput.GetValue().m_source, azslFullPath);
bool azslExists = IO::FileIOBase::GetInstance()->Exists(azslFullPath.c_str());
AZ_Warning(ShaderAssetBuilderName, azslExists, "Shader program listed as the source entry does not exist: %s.", azslFullPath.c_str());
AZ_Warning(ShaderAssetBuilderName, IO::FileIOBase::GetInstance()->Exists(azslFullPath.c_str()), "Shader program listed as the source entry does not exist: %s.", azslFullPath.c_str());
GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilderName);
// *** end block (remove when [Atom-4225])
@@ -145,7 +144,7 @@ namespace AZ
ShaderAssetBuilderName, prependedAzslSourceCode, originalLocation, ShaderBuilderUtility::ExtractStemName(fullPath.c_str()), shaderPlatformInterface->GetAPIName().GetStringView());
PreprocessorData output;
buildOptions.m_compilerArguments.Merge(descriptorParseOutput.GetValue().m_compiler);
bool result = PreprocessFile(azslFullPath, output, buildOptions.m_preprocessorSettings, true, true);
PreprocessFile(azslFullPath, output, buildOptions.m_preprocessorSettings, true, true);
// srg layout builder job dependency on the azsl file itself.
// If there's a ShaderResourceGroup defined in this azsl file
// then its azsrg asset must be ready before We compile it. The azsrg requirement
@@ -550,11 +550,13 @@ namespace AZ
}
}
#if defined(AZ_ENABLE_TRACING)
for (const auto& profiling : profilingPerCompiler)
{
AZ_TracePrintf(builderName, "Compiler: %s\n>\tCalls: %d\n>\tTime: %.2f seconds\n",
profiling.first.c_str(), profiling.second.m_calls, profiling.second.m_totalElapsedTime);
}
#endif
}
uint32_t MakeAzslBuildProductSubId(RPI::ShaderAssetSubId subId, RHI::APIType apiType)
@@ -409,13 +409,11 @@ namespace AZ
{
if (jobParameters.find(ShouldExitEarlyFromProcessJobParam) != jobParameters.end())
{
const AZStd::string& shaderVariantListPath = jobParameters.at(ShaderVariantLoadErrorParam);
AZ_TracePrintf(ShaderVariantAssetBuilderName, "Doing nothing on behalf of [%s] because it's been overriden by game project.", shaderVariantListPath.c_str());
AZ_TracePrintf(ShaderVariantAssetBuilderName, "Doing nothing on behalf of [%s] because it's been overriden by game project.", jobParameters.at(ShaderVariantLoadErrorParam).c_str());
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success;
return;
}
const AZStd::string& errorMessage = jobParameters.at(ShaderVariantLoadErrorParam);
AZ_Error(ShaderVariantAssetBuilderName, false, "Error during CreateJobs: %s", errorMessage.c_str());
AZ_Error(ShaderVariantAssetBuilderName, false, "Error during CreateJobs: %s", jobParameters.at(ShaderVariantLoadErrorParam).c_str());
response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed;
return;
}
@@ -387,12 +387,24 @@ namespace AZ
if (imageType != RHI::ShaderInputImageType::Unknown)
{
srgAssetCreator.AddShaderInput({
textureData.m_nameId,
imageAccess,
imageType,
textureData.m_count,
useRegisterId ? textureData.m_registerId : RHI::UndefinedRegisterSlot });
if (textureData.m_count != aznumeric_cast<uint32_t>(-1))
{
srgAssetCreator.AddShaderInput({
textureData.m_nameId,
imageAccess,
imageType,
textureData.m_count,
useRegisterId ? textureData.m_registerId : RHI::UndefinedRegisterSlot });
}
else
{
// unbounded array
srgAssetCreator.AddShaderInput({
textureData.m_nameId,
imageAccess,
imageType,
useRegisterId ? textureData.m_registerId : RHI::UndefinedRegisterSlot });
}
}
else
{
@@ -425,13 +437,26 @@ namespace AZ
if (bufferType != RHI::ShaderInputBufferType::Unknown)
{
srgAssetCreator.AddShaderInput({
bufferData.m_nameId,
bufferAccess,
bufferType,
bufferData.m_count,
bufferData.m_strideSize,
useRegisterId ? bufferData.m_registerId : RHI::UndefinedRegisterSlot });
if (bufferData.m_count != aznumeric_cast<uint32_t>(-1))
{
srgAssetCreator.AddShaderInput({
bufferData.m_nameId,
bufferAccess,
bufferType,
bufferData.m_count,
bufferData.m_strideSize,
useRegisterId ? bufferData.m_registerId : RHI::UndefinedRegisterSlot });
}
else
{
// unbounded array
srgAssetCreator.AddShaderInput({
bufferData.m_nameId,
bufferAccess,
bufferType,
bufferData.m_strideSize,
useRegisterId ? bufferData.m_registerId : RHI::UndefinedRegisterSlot });
}
}
else
{
@@ -8,7 +8,7 @@
"$type": "DX12::PlatformLimitsDescriptor",
"m_descriptorHeapLimits": {
"DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV": [16384, 131072],
"DESCRIPTOR_HEAP_TYPE_CBV_SRV_UAV": [16384, 262144],
"DESCRIPTOR_HEAP_TYPE_SAMPLER": [2048, 2048],
"DESCRIPTOR_HEAP_TYPE_RTV": [2048, 0],
"DESCRIPTOR_HEAP_TYPE_DSV": [2048, 0]
@@ -0,0 +1,35 @@
{
"Type": "JsonSerialization",
"Version": 1,
"ClassName": "AZ::Render::LightingPreset",
"ClassData": {
"displayName": "Thumbnail",
"iblDiffuseImageAsset": {
"assetId": {
"guid": "{A5767C6B-5DB4-5999-A717-4587BEDF5CDE}",
"subId": 3000
},
"assetHint": "lightingpresets/default_iblskyboxcm_ibldiffuse.exr.streamingimage"
},
"iblSpecularImageAsset": {
"assetId": {
"guid": "{A5767C6B-5DB4-5999-A717-4587BEDF5CDE}",
"subId": 2000
},
"assetHint": "lightingpresets/default_iblskyboxcm_iblspecular.exr.streamingimage"
},
"shadowCatcherOpacity": 0.10000000149011612,
"lights": [
{
"direction": [
0.5,
1.0,
-0.20000000298023225
],
"shadowCascadeCount": 4,
"shadowRatioLogarithmUniform": 1.0,
"shadowmapSize": "Size2048"
}
]
}
}
@@ -60,37 +60,7 @@ ShaderResourceGroupSemantic SRG_RayTracingGlobal
FrequencyId = 0;
};
ShaderResourceGroupSemantic SRG_RayTracingLocal_1
ShaderResourceGroupSemantic SRG_RayTracingScene
{
FrequencyId = 1;
};
ShaderResourceGroupSemantic SRG_RayTracingLocal_2
{
FrequencyId = 2;
};
ShaderResourceGroupSemantic SRG_RayTracingLocal_3
{
FrequencyId = 3;
};
ShaderResourceGroupSemantic SRG_RayTracingLocal_4
{
FrequencyId = 4;
};
ShaderResourceGroupSemantic SRG_RayTracingLocal_5
{
FrequencyId = 5;
};
ShaderResourceGroupSemantic SRG_RayTracingLocal_6
{
FrequencyId = 6;
};
ShaderResourceGroupSemantic SRG_RayTracingLocal_7
{
FrequencyId = 7;
};
};
@@ -0,0 +1,143 @@
/*
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
* its licensors.
*
* For complete copyright and license terms please see the LICENSE at the root of this
* distribution (the "License"). All use of this software is governed by the License,
* or, if provided, by the license below or the license accompanying this file. Do not
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*
*/
#ifndef AZ_COLLECTING_PARTIAL_SRGS
#error Do not include this file directly. Include the main .srgi file instead.
#endif
partial ShaderResourceGroup RayTracingSceneSrg
{
RaytracingAccelerationStructure m_scene;
// directional Lights
struct DirectionalLight
{
float3 m_direction;
float m_angularRadius;
float3 m_rgbIntensity;
float m_padding2;
};
StructuredBuffer<DirectionalLight> m_directionalLights;
uint m_directionalLightCount;
// point Lights
struct PointLight
{
float3 m_position;
float m_invAttenuationRadiusSquared;
float3 m_rgbIntensity;
float m_bulbRadius;
};
StructuredBuffer<PointLight> m_pointLights;
uint m_pointLightCount;
// spot Lights
// [GFX TODO][ATOM-4049] separate SRG for lights and shadows.
struct SpotLight
{
float3 m_position;
float m_invAttenuationRadiusSquared; // radius at which this light no longer has an effect, 1 / radius^2.
float3 m_rgbIntensityCandelas;
float m_innerConeAngle; // cosine of the angle from the direction axis at which this light starts to fall off.
float3 m_direction; // the direction of the spot light
float m_outerConeAngle; // cosine of the angle from the direction axis at which this light no longer has an effect.
float m_penumbraBias; // bias of the falloff curve between inner and outer cone angles.
int m_shadowIndex; // index for SpotLightShadow.
float2 m_padding;
};
StructuredBuffer<SpotLight> m_spotLights;
uint m_spotLightCount;
// disk Lights
struct DiskLight
{
float3 m_position;
float m_invAttenuationRadiusSquared; // radius at which this light no longer has an effect, 1 / radius^2.
float3 m_direction;
float m_bothDirectionsFactor; // 0.0f for one direction, -1.0f for both.
float3 m_rgbIntensityCandelas;
float m_diskRadius;
};
StructuredBuffer<DiskLight> m_diskLights;
uint m_diskLightCount;
// capsule Lights
struct CapsuleLight
{
float3 m_startPoint; // one of the end points of the capsule
float m_radius; // radius of the capsule, ie distance from line segment to surface.
float3 m_direction; // normalized vector from m_startPoint towards the other end point.
float m_length; // length of the line segment making up the inside of the capsule. Doesn't include caps (0 length capsule == sphere)
float3 m_rgbIntensityCandelas; // total rgb luminous intensity of the capsule in candelas
float m_invAttenuationRadiusSquared; // inverse of the distance at which this light no longer has an effect, squared. Also used for falloff calculations.
};
StructuredBuffer<CapsuleLight> m_capsuleLights;
uint m_capsuleLightCount;
// quad Lights
struct QuadLight
{
float3 m_position;
float m_invAttenuationRadiusSquared; // radius at which this light no longer has an effect, 1 / radius^2.
float3 m_leftDir; // direction from center of quad to the left edge
float m_halfWidth; // half-width of the quad. m_leftDir * m_halfWidth is a vector from the center to the left edge.
float3 m_upDir; // cirection from center of quad to the top edge
float m_halfHeight; // half-height of the quad. m_upDir * m_halfHeight is a vector from the center to the top edge.
float3 m_rgbIntensityNits;
uint m_flags; // see QuadLightFlag enum
};
StructuredBuffer<QuadLight> m_quadLights;
uint m_quadLightCount;
// diffuse IBL
Sampler m_diffuseEnvMapSampler
{
AddressU = Wrap;
AddressV = Wrap;
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Linear;
};
TextureCube m_diffuseEnvMap;
float4 m_iblOrientation;
float m_iblExposure;
// mesh info structured buffer containing offsets into the mesh buffers, irradiance color, and transform for each mesh
struct MeshInfo
{
uint m_indexOffset;
uint m_positionOffset;
uint m_normalOffset;
float4 m_irradianceColor;
float3x3 m_worldInvTranspose;
};
StructuredBuffer<MeshInfo> m_meshInfo;
// unbounded array of Index, VertexPosition, and VertexNormal buffers
// each mesh has three entries in this array starting at its InstanceIndex() * BUFFER_COUNT_PER_MESH
#define BUFFER_COUNT_PER_MESH 3
#define MESH_INDEX_BUFFER_OFFSET 0
#define MESH_POSITION_BUFFER_OFFSET 1
#define MESH_NORMAL_BUFFER_OFFSET 2
ByteAddressBuffer m_meshBuffers[];
}
@@ -12,6 +12,8 @@
#pragma once
namespace Multiplayer
{
}
// Please review README.md to understand how this file is used in RayTracingSceneSrg.azsrg generation
#ifdef AZ_COLLECTING_PARTIAL_SRGS
#include <Atom/Feature/Common/Assets/ShaderResourceGroups/RayTracingSceneSrg.azsli>
#endif
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridblenddistance.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridblenddistance_passsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridblenddistance_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridblenddistance_null_0.azshadervariant"
}
]
}
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridblendirradiance.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridblendirradiance_passsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridblendirradiance_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridblendirradiance_null_0.azshadervariant"
}
]
}
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridborderupdatecolumn.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridborderupdate_passsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridborderupdatecolumn_null_0.azshadervariant"
}
]
}
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridborderupdaterow.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridborderupdate_passsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridborderupdaterow_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridborderupdaterow_null_0.azshadervariant"
}
]
}
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridraytracing.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridraytracing_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridraytracing_null_0.azshadervariant"
}
]
}
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridraytracingclosesthit.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridraytracingclosesthit_null_0.azshadervariant"
}
]
}
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridraytracingmiss.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridraytracingmiss_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridraytracingmiss_null_0.azshadervariant"
}
]
}
@@ -5,6 +5,10 @@
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridrelocation.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridrelocation_passsrg.azsrg"
@@ -18,6 +22,10 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridrelocation_vulkan_0.azshadervariant"
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridrelocation_null_0.azshadervariant"
}
]
}
@@ -4,14 +4,18 @@
"ClassName": "PrecompiledShaderAssetSourceData",
"ClassData":
{
"ShaderAssetFileName": "diffuseprobegridrender.azshader",
"ShaderAssetFileName": "diffuseprobegridrender.azshader",
"PlatformIdentifiers":
[
"pc"
],
"ShaderResourceGroupAssets":
[
"diffuseprobegridrender_passsrg.azsrg",
"diffuseprobegridrender_objectsrg.azsrg"
],
"RootShaderVariantAssets":
[
"diffuseprobegridrender_passsrg.azsrg",
"diffuseprobegridrender_objectsrg.azsrg"
],
"RootShaderVariantAssets":
[
{
"APIName": "dx12",
"RootShaderVariantAssetFileName": "diffuseprobegridrender_dx12_0.azshadervariant"
@@ -19,7 +23,11 @@
{
"APIName": "vulkan",
"RootShaderVariantAssetFileName": "diffuseprobegridrender_vulkan_0.azshadervariant"
}
},
{
"APIName": "null",
"RootShaderVariantAssetFileName": "diffuseprobegridrender_null_0.azshadervariant"
}
]
}
}
@@ -44,7 +44,7 @@
"field": "element",
"typeName": "ShaderResourceGroupLayout",
"typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}",
"version": 4,
"version": 6,
"Objects": [
{
"field": "m_staticSamplers",
@@ -101,6 +101,16 @@
}
]
},
{
"field": "m_inputsForBufferUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{DD5102EE-72A9-55F7-AB54-14F228FAE38F}"
},
{
"field": "m_inputsForImageUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{8042FF1E-9115-53F7-BE33-3DCDE9C0AB7F}"
},
{
"field": "m_inputsForSamplers",
"typeName": "AZStd::vector",
@@ -155,6 +165,18 @@
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_groupSizeForBufferUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImageUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForSamplers",
"typeName": "unsigned int",
@@ -215,6 +237,466 @@
}
]
},
{
"field": "m_idReflectionForBufferUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferUnboundedArrayDescriptor>>",
"typeId": "{46520159-BC56-5E90-89AD-3CB0A5D295B0}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{CD6D3195-A87A-5E0C-AD4D-23457B3B8DCF}"
}
]
},
{
"field": "m_idReflectionForImageUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageUnboundedArrayDescriptor>>",
"typeId": "{A33C41AC-ABA0-5A34-9A6B-89BABDC151D7}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{14C5FF00-B370-575F-866B-B19B97F76D82}"
}
]
},
{
"field": "m_idReflectionForSamplers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputSamplerDescriptor>>",
"typeId": "{2665EED7-CFB4-582B-B265-107348B1DFAC}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{1545A615-BFD7-515C-A1E9-710570135F08}"
}
]
},
{
"field": "m_constantsDataLayout",
"typeName": "AZStd::intrusive_ptr",
"typeId": "{CEB3049A-A620-56C8-AFBA-D0A98304333D}",
"Objects": [
{
"field": "element",
"typeName": "ConstantsLayout",
"typeId": "{66EDAC32-7730-4F05-AF9D-B3CB0F5D90E0}",
"Objects": [
{
"field": "m_inputs",
"typeName": "AZStd::vector",
"typeId": "{5FC25C85-DF2F-5219-918C-EBC47D7D6451}",
"Objects": [
{
"field": "element",
"typeName": "ShaderInputConstantDescriptor",
"typeId": "{C8DC7D2D-CCA0-45AD-9430-52C06B69325C}",
"version": 3,
"Objects": [
{
"field": "m_name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_numTexels"
},
{
"field": "m_constantByteOffset",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_constantByteCount",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "4"
},
{
"field": "m_registerId",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
}
]
}
]
},
{
"field": "m_idReflection",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputConstantDescriptor>>",
"typeId": "{7DE7E4B8-5C98-5F7A-985F-DDEEA5BB5366}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{4B54CC87-1340-5B29-8040-2003033F9B93}",
"Objects": [
{
"field": "element",
"typeName": "AZ::RHI::ReflectionNamePair<AZ::RHI::Handle<unsigned int, ShaderInputConstantDescriptor>>",
"typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_numTexels"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputConstantDescriptor>",
"typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
}
]
}
]
}
]
}
]
},
{
"field": "m_intervals",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}",
"Objects": [
{
"field": "element",
"typeName": "Interval",
"typeId": "{B121C9FE-1C23-4721-9C3E-6BE036612743}",
"version": 1,
"Objects": [
{
"field": "m_min",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_max",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "4"
}
]
}
]
},
{
"field": "m_sizeInBytes",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "4"
},
{
"field": "m_hash",
"typeName": "AZ::u64",
"typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}",
"value": "2545742961576412904"
}
]
}
]
},
{
"field": "m_bindingSlot",
"typeName": "AZ::RHI::Handle<unsigned int, DefaultNamespaceType>",
"typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "4"
}
]
},
{
"field": "m_shaderVariantKeyFallbackSize",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_shaderVariantKeyFallbackConstantIndex",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputConstantDescriptor>",
"typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "4294967295"
}
]
},
{
"field": "m_hash",
"typeName": "AZ::u64",
"typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}",
"value": "8492100380431804737"
}
]
}
]
}
]
},
{
"field": "element",
"typeName": "AZStd::pair",
"typeId": "{5C6406C8-77C9-597F-A3E9-249628D94902}",
"Objects": [
{
"field": "value1",
"typeName": "Crc32",
"typeId": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}",
"Objects": [
{
"field": "Value",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "634125391"
}
]
},
{
"field": "value2",
"typeName": "AZStd::intrusive_ptr",
"typeId": "{FF05CAD3-238F-5E19-8FF2-083353BBEC47}",
"Objects": [
{
"field": "element",
"typeName": "ShaderResourceGroupLayout",
"typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}",
"version": 6,
"Objects": [
{
"field": "m_staticSamplers",
"typeName": "AZStd::vector",
"typeId": "{D3BC4729-3DE0-57A1-96E0-DCFF98D4D975}"
},
{
"field": "m_inputsForBuffers",
"typeName": "AZStd::vector",
"typeId": "{A4650430-04B9-589A-991F-4B443DCD20EA}"
},
{
"field": "m_inputsForImages",
"typeName": "AZStd::vector",
"typeId": "{909BE4D8-5A22-59A4-A135-4E73662E2D83}",
"Objects": [
{
"field": "element",
"typeName": "ShaderInputImageDescriptor",
"typeId": "{913DBF3C-5556-4524-B928-174A42516D31}",
"version": 3,
"Objects": [
{
"field": "m_name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeTexture"
},
{
"field": "m_type",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "3"
},
{
"field": "m_access",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_count",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_registerId",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
}
]
}
]
},
{
"field": "m_inputsForBufferUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{DD5102EE-72A9-55F7-AB54-14F228FAE38F}"
},
{
"field": "m_inputsForImageUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{8042FF1E-9115-53F7-BE33-3DCDE9C0AB7F}"
},
{
"field": "m_inputsForSamplers",
"typeName": "AZStd::vector",
"typeId": "{4CF286E1-5297-581D-93E9-891166EDAD9A}"
},
{
"field": "m_intervalsForBuffers",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}"
},
{
"field": "m_intervalsForImages",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}",
"Objects": [
{
"field": "element",
"typeName": "Interval",
"typeId": "{B121C9FE-1C23-4721-9C3E-6BE036612743}",
"version": 1,
"Objects": [
{
"field": "m_min",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_max",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
}
]
}
]
},
{
"field": "m_intervalsForSamplers",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}"
},
{
"field": "m_groupSizeForBuffers",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImages",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_groupSizeForBufferUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImageUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForSamplers",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_idReflectionForBuffers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferDescriptor>>",
"typeId": "{A85E274A-4C1D-546F-B18C-452C5700BAE4}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{F4529C0B-A2C0-5A32-A348-59D45FB1776B}"
}
]
},
{
"field": "m_idReflectionForImages",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{BB6D1ABE-9A2F-5F51-93CB-B1B866EFD5B4}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{BBD5D625-992D-5296-A631-9B84B00CE2F1}",
"Objects": [
{
"field": "element",
"typeName": "AZ::RHI::ReflectionNamePair<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeTexture"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
}
]
}
]
}
]
}
]
},
{
"field": "m_idReflectionForBufferUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferUnboundedArrayDescriptor>>",
"typeId": "{46520159-BC56-5E90-89AD-3CB0A5D295B0}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{CD6D3195-A87A-5E0C-AD4D-23457B3B8DCF}"
}
]
},
{
"field": "m_idReflectionForImageUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageUnboundedArrayDescriptor>>",
"typeId": "{A33C41AC-ABA0-5A34-9A6B-89BABDC151D7}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{14C5FF00-B370-575F-866B-B19B97F76D82}"
}
]
},
{
"field": "m_idReflectionForSamplers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputSamplerDescriptor>>",
@@ -434,7 +916,7 @@
"field": "element",
"typeName": "ShaderResourceGroupLayout",
"typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}",
"version": 4,
"version": 6,
"Objects": [
{
"field": "m_staticSamplers",
@@ -491,6 +973,16 @@
}
]
},
{
"field": "m_inputsForBufferUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{DD5102EE-72A9-55F7-AB54-14F228FAE38F}"
},
{
"field": "m_inputsForImageUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{8042FF1E-9115-53F7-BE33-3DCDE9C0AB7F}"
},
{
"field": "m_inputsForSamplers",
"typeName": "AZStd::vector",
@@ -545,6 +1037,18 @@
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_groupSizeForBufferUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImageUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForSamplers",
"typeName": "unsigned int",
@@ -605,6 +1109,30 @@
}
]
},
{
"field": "m_idReflectionForBufferUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferUnboundedArrayDescriptor>>",
"typeId": "{46520159-BC56-5E90-89AD-3CB0A5D295B0}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{CD6D3195-A87A-5E0C-AD4D-23457B3B8DCF}"
}
]
},
{
"field": "m_idReflectionForImageUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageUnboundedArrayDescriptor>>",
"typeId": "{A33C41AC-ABA0-5A34-9A6B-89BABDC151D7}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{14C5FF00-B370-575F-866B-B19B97F76D82}"
}
]
},
{
"field": "m_idReflectionForSamplers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputSamplerDescriptor>>",
@@ -44,7 +44,7 @@
"field": "element",
"typeName": "ShaderResourceGroupLayout",
"typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}",
"version": 4,
"version": 6,
"Objects": [
{
"field": "m_staticSamplers",
@@ -253,6 +253,16 @@
}
]
},
{
"field": "m_inputsForBufferUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{DD5102EE-72A9-55F7-AB54-14F228FAE38F}"
},
{
"field": "m_inputsForImageUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{8042FF1E-9115-53F7-BE33-3DCDE9C0AB7F}"
},
{
"field": "m_inputsForSamplers",
"typeName": "AZStd::vector",
@@ -327,6 +337,18 @@
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "2"
},
{
"field": "m_groupSizeForBufferUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImageUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForSamplers",
"typeName": "unsigned int",
@@ -415,6 +437,580 @@
}
]
},
{
"field": "m_idReflectionForBufferUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferUnboundedArrayDescriptor>>",
"typeId": "{46520159-BC56-5E90-89AD-3CB0A5D295B0}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{CD6D3195-A87A-5E0C-AD4D-23457B3B8DCF}"
}
]
},
{
"field": "m_idReflectionForImageUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageUnboundedArrayDescriptor>>",
"typeId": "{A33C41AC-ABA0-5A34-9A6B-89BABDC151D7}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{14C5FF00-B370-575F-866B-B19B97F76D82}"
}
]
},
{
"field": "m_idReflectionForSamplers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputSamplerDescriptor>>",
"typeId": "{2665EED7-CFB4-582B-B265-107348B1DFAC}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{1545A615-BFD7-515C-A1E9-710570135F08}"
}
]
},
{
"field": "m_constantsDataLayout",
"typeName": "AZStd::intrusive_ptr",
"typeId": "{CEB3049A-A620-56C8-AFBA-D0A98304333D}",
"Objects": [
{
"field": "element",
"typeName": "ConstantsLayout",
"typeId": "{66EDAC32-7730-4F05-AF9D-B3CB0F5D90E0}",
"Objects": [
{
"field": "m_inputs",
"typeName": "AZStd::vector",
"typeId": "{5FC25C85-DF2F-5219-918C-EBC47D7D6451}"
},
{
"field": "m_idReflection",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputConstantDescriptor>>",
"typeId": "{7DE7E4B8-5C98-5F7A-985F-DDEEA5BB5366}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{4B54CC87-1340-5B29-8040-2003033F9B93}"
}
]
},
{
"field": "m_intervals",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}"
},
{
"field": "m_sizeInBytes",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_hash",
"typeName": "AZ::u64",
"typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}",
"value": "0"
}
]
}
]
},
{
"field": "m_bindingSlot",
"typeName": "AZ::RHI::Handle<unsigned int, DefaultNamespaceType>",
"typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "4"
}
]
},
{
"field": "m_shaderVariantKeyFallbackSize",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_shaderVariantKeyFallbackConstantIndex",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputConstantDescriptor>",
"typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "4294967295"
}
]
},
{
"field": "m_hash",
"typeName": "AZ::u64",
"typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}",
"value": "2338845612922673940"
}
]
}
]
}
]
},
{
"field": "element",
"typeName": "AZStd::pair",
"typeId": "{5C6406C8-77C9-597F-A3E9-249628D94902}",
"Objects": [
{
"field": "value1",
"typeName": "Crc32",
"typeId": "{9F4E062E-06A0-46D4-85DF-E0DA96467D3A}",
"Objects": [
{
"field": "Value",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "634125391"
}
]
},
{
"field": "value2",
"typeName": "AZStd::intrusive_ptr",
"typeId": "{FF05CAD3-238F-5E19-8FF2-083353BBEC47}",
"Objects": [
{
"field": "element",
"typeName": "ShaderResourceGroupLayout",
"typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}",
"version": 6,
"Objects": [
{
"field": "m_staticSamplers",
"typeName": "AZStd::vector",
"typeId": "{D3BC4729-3DE0-57A1-96E0-DCFF98D4D975}",
"Objects": [
{
"field": "element",
"typeName": "ShaderInputStaticSamplerDescriptor",
"typeId": "{A4D3C5AC-1624-4F78-9543-0E37DC93F491}",
"version": 1,
"Objects": [
{
"field": "m_name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "LinearSampler"
},
{
"field": "m_samplerState",
"typeName": "SamplerState",
"typeId": "{03CF3A01-8C2B-4A65-8781-6C25CFF0475F}",
"version": 3,
"Objects": [
{
"field": "m_anisotropyMax",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_anisotropyEnable",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_filterMin",
"typeName": "RHI::FilterMode",
"typeId": "{CFAE2156-0293-4D71-87D5-68F5C9F98884}",
"value": "1"
},
{
"field": "m_filterMag",
"typeName": "RHI::FilterMode",
"typeId": "{CFAE2156-0293-4D71-87D5-68F5C9F98884}",
"value": "1"
},
{
"field": "m_filterMip",
"typeName": "RHI::FilterMode",
"typeId": "{CFAE2156-0293-4D71-87D5-68F5C9F98884}",
"value": "0"
},
{
"field": "m_reductionType",
"typeName": "RHI::ReductionType",
"typeId": "{4230D40D-9984-4254-B062-2DD1CE4E7042}",
"value": "0"
},
{
"field": "m_comparisonFunc",
"typeName": "RHI::ComparisonFunc",
"typeId": "{BF11B672-B9C4-4CFF-8228-EA09C4A36C36}",
"value": "7"
},
{
"field": "m_addressU",
"typeName": "RHI::AddressMode",
"typeId": "{977F0D2E-4623-4B9F-B35C-328EEA309F73}",
"value": "0"
},
{
"field": "m_addressV",
"typeName": "RHI::AddressMode",
"typeId": "{977F0D2E-4623-4B9F-B35C-328EEA309F73}",
"value": "0"
},
{
"field": "m_addressW",
"typeName": "RHI::AddressMode",
"typeId": "{977F0D2E-4623-4B9F-B35C-328EEA309F73}",
"value": "0"
},
{
"field": "m_mipLodMin",
"typeName": "float",
"typeId": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
"value": "0.0000000"
},
{
"field": "m_mipLodMax",
"typeName": "float",
"typeId": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
"value": "15.0000000"
},
{
"field": "m_mipLodBias",
"typeName": "float",
"typeId": "{EA2C3E90-AFBE-44D4-A90D-FAAF79BAF93D}",
"value": "0.0000000"
},
{
"field": "m_borderColor",
"typeName": "RHI::BorderColor",
"typeId": "{8A6739E8-538D-47FC-9068-45BCA5B7E5C4}",
"value": "1"
}
]
},
{
"field": "m_registerId",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
}
]
}
]
},
{
"field": "m_inputsForBuffers",
"typeName": "AZStd::vector",
"typeId": "{A4650430-04B9-589A-991F-4B443DCD20EA}"
},
{
"field": "m_inputsForImages",
"typeName": "AZStd::vector",
"typeId": "{909BE4D8-5A22-59A4-A135-4E73662E2D83}",
"Objects": [
{
"field": "element",
"typeName": "ShaderInputImageDescriptor",
"typeId": "{913DBF3C-5556-4524-B928-174A42516D31}",
"version": 3,
"Objects": [
{
"field": "m_name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_depth"
},
{
"field": "m_type",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "5"
},
{
"field": "m_access",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_count",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_registerId",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
}
]
},
{
"field": "element",
"typeName": "ShaderInputImageDescriptor",
"typeId": "{913DBF3C-5556-4524-B928-174A42516D31}",
"version": 3,
"Objects": [
{
"field": "m_name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_normal"
},
{
"field": "m_type",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "5"
},
{
"field": "m_access",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_count",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_registerId",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
}
]
}
]
},
{
"field": "m_inputsForBufferUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{DD5102EE-72A9-55F7-AB54-14F228FAE38F}"
},
{
"field": "m_inputsForImageUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{8042FF1E-9115-53F7-BE33-3DCDE9C0AB7F}"
},
{
"field": "m_inputsForSamplers",
"typeName": "AZStd::vector",
"typeId": "{4CF286E1-5297-581D-93E9-891166EDAD9A}"
},
{
"field": "m_intervalsForBuffers",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}"
},
{
"field": "m_intervalsForImages",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}",
"Objects": [
{
"field": "element",
"typeName": "Interval",
"typeId": "{B121C9FE-1C23-4721-9C3E-6BE036612743}",
"version": 1,
"Objects": [
{
"field": "m_min",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_max",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
}
]
},
{
"field": "element",
"typeName": "Interval",
"typeId": "{B121C9FE-1C23-4721-9C3E-6BE036612743}",
"version": 1,
"Objects": [
{
"field": "m_min",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
},
{
"field": "m_max",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "2"
}
]
}
]
},
{
"field": "m_intervalsForSamplers",
"typeName": "AZStd::vector",
"typeId": "{908FF0AE-802D-5311-A2E0-A6D595FBC480}"
},
{
"field": "m_groupSizeForBuffers",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImages",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "2"
},
{
"field": "m_groupSizeForBufferUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImageUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForSamplers",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_idReflectionForBuffers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferDescriptor>>",
"typeId": "{A85E274A-4C1D-546F-B18C-452C5700BAE4}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{F4529C0B-A2C0-5A32-A348-59D45FB1776B}"
}
]
},
{
"field": "m_idReflectionForImages",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{BB6D1ABE-9A2F-5F51-93CB-B1B866EFD5B4}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{BBD5D625-992D-5296-A631-9B84B00CE2F1}",
"Objects": [
{
"field": "element",
"typeName": "AZ::RHI::ReflectionNamePair<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_normal"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
}
]
}
]
},
{
"field": "element",
"typeName": "AZ::RHI::ReflectionNamePair<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_depth"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
}
]
}
]
}
]
}
]
},
{
"field": "m_idReflectionForBufferUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferUnboundedArrayDescriptor>>",
"typeId": "{46520159-BC56-5E90-89AD-3CB0A5D295B0}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{CD6D3195-A87A-5E0C-AD4D-23457B3B8DCF}"
}
]
},
{
"field": "m_idReflectionForImageUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageUnboundedArrayDescriptor>>",
"typeId": "{A33C41AC-ABA0-5A34-9A6B-89BABDC151D7}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{14C5FF00-B370-575F-866B-B19B97F76D82}"
}
]
},
{
"field": "m_idReflectionForSamplers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputSamplerDescriptor>>",
@@ -548,7 +1144,7 @@
"field": "element",
"typeName": "ShaderResourceGroupLayout",
"typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}",
"version": 4,
"version": 6,
"Objects": [
{
"field": "m_staticSamplers",
@@ -757,6 +1353,16 @@
}
]
},
{
"field": "m_inputsForBufferUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{DD5102EE-72A9-55F7-AB54-14F228FAE38F}"
},
{
"field": "m_inputsForImageUnboundedArrays",
"typeName": "AZStd::vector",
"typeId": "{8042FF1E-9115-53F7-BE33-3DCDE9C0AB7F}"
},
{
"field": "m_inputsForSamplers",
"typeName": "AZStd::vector",
@@ -831,6 +1437,18 @@
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "2"
},
{
"field": "m_groupSizeForBufferUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForImageUnboundedArrays",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "0"
},
{
"field": "m_groupSizeForSamplers",
"typeName": "unsigned int",
@@ -919,6 +1537,30 @@
}
]
},
{
"field": "m_idReflectionForBufferUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputBufferUnboundedArrayDescriptor>>",
"typeId": "{46520159-BC56-5E90-89AD-3CB0A5D295B0}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{CD6D3195-A87A-5E0C-AD4D-23457B3B8DCF}"
}
]
},
{
"field": "m_idReflectionForImageUnboundedArrays",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputImageUnboundedArrayDescriptor>>",
"typeId": "{A33C41AC-ABA0-5A34-9A6B-89BABDC151D7}",
"Objects": [
{
"field": "ReflectionMap",
"typeName": "AZStd::vector",
"typeId": "{14C5FF00-B370-575F-866B-B19B97F76D82}"
}
]
},
{
"field": "m_idReflectionForSamplers",
"typeName": "AZ::RHI::NameIdReflectionMap<AZ::RHI::Handle<unsigned int, ShaderInputSamplerDescriptor>>",
@@ -61,8 +61,8 @@ namespace AZ
//! Gets the context at the top of the active context stack. Returns nullptr if the stack is emtpy.
virtual ImGuiContext* GetActiveContext() = 0;
//! Allows draw data from a different context to be passed in and rendered to the default context. ImDrawData must be from the ImGui version.
virtual bool RenderImGuiBuffersToDefaultPass(const ImDrawData& drawData) = 0;
//! Allows draw data from a different context to be passed in and rendered to the current viewport. ImDrawData must be from the ImGui version.
virtual bool RenderImGuiBuffersToCurrentViewport(const ImDrawData& drawData) = 0;
};
using ImGuiSystemRequestBus = AZ::EBus<ImGuiSystemRequests>;
@@ -720,7 +720,6 @@ namespace AZ
{
using namespace std;
uint32_t dimRot = (maxBand + 1) * (maxBand + 1);
vector<vector<vector<double>>> Rot;
for (uint32_t l = 0; l < maxBand + 1; ++l)
{
@@ -432,8 +432,6 @@ namespace AZ
return;
}
const RHI::ShaderResourceGroupLayout* shaderResourceGroupLayout = m_shaderData.m_perDrawSrgAsset->GetLayout();
m_shaderData.m_viewProjectionOverrideIndex.Reset();
m_shaderData.m_pointSizeIndex.Reset();
@@ -911,10 +911,10 @@ namespace AZ
normals.push_back(normal);
}
uint16_t indexOfBottomCenter = 0;
uint16_t indexOfBottomStart = 1;
uint16_t indexOfTopCenter = numSections + 1;
uint16_t indexOfTopStart = numSections + 2;
//uint16_t indexOfBottomCenter = 0;
//uint16_t indexOfBottomStart = 1;
//uint16_t indexOfTopCenter = numSections + 1;
//uint16_t indexOfTopStart = numSections + 2;
uint16_t indexOfSidesStart = 2 * numSections + 2;
// build point indices
@@ -111,7 +111,7 @@ namespace AZ
if (m_deviceBufferNeedsUpdate)
{
bool success = m_lightBufferHandler.UpdateBuffer(m_capsuleLightData.GetDataVector());
[[maybe_unused]] bool success = m_lightBufferHandler.UpdateBuffer(m_capsuleLightData.GetDataVector());
AZ_Error(FeatureProcessorName, success, "Unable to update buffer during Simulate().");
m_deviceBufferNeedsUpdate = false;
}
@@ -146,7 +146,6 @@ namespace AZ
void DirectionalLightFeatureProcessor::Activate()
{
const RHI::ShaderResourceGroupLayout* sceneSrgLayout = RPI::RPISystemInterface::Get()->GetSceneSrgAsset()->GetLayout();
const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout();
GpuBufferHandler::Descriptor desc;
@@ -1111,7 +1110,6 @@ namespace AZ
return;
}
ShadowProperty& property = m_shadowProperties.GetData(handle.GetIndex());
for (const auto& passIt : m_esmShadowmapsPasses)
{
const RPI::View* cameraView = passIt.second.front()->GetRenderPipeline()->GetDefaultView().get();
@@ -187,7 +187,7 @@ namespace AZ
void LightCullingPass::SetLightListToSRG()
{
auto inputIndex = m_shaderResourceGroup->FindShaderInputBufferIndex(AZ::Name("m_lightList"));
bool succeeded = m_shaderResourceGroup->SetBuffer(inputIndex, m_lightList);
[[maybe_unused]] bool succeeded = m_shaderResourceGroup->SetBuffer(inputIndex, m_lightList);
AZ_Assert(succeeded, "SetImage failed for light list");
}
@@ -163,7 +163,7 @@ namespace AZ
constantData.depthBufferWidth = resolution.m_width;
constantData.depthBufferHeight = resolution.m_height;
bool setOk = m_shaderResourceGroup->SetConstant(m_constantDataIndex, constantData);
[[maybe_unused]] bool setOk = m_shaderResourceGroup->SetConstant(m_constantDataIndex, constantData);
AZ_Assert(setOk, "LightCullingTilePreparePass::SetConstantData() - could not set constant data");
}
@@ -116,7 +116,7 @@ namespace AZ
if (m_deviceBufferNeedsUpdate)
{
bool success = m_decalBufferHandler.UpdateBuffer(m_decalData.GetDataVector<0>());
[[maybe_unused]] bool success = m_decalBufferHandler.UpdateBuffer(m_decalData.GetDataVector<0>());
AZ_Error(FeatureProcessorName, success, "Unable to update buffer during Simulate().");
m_deviceBufferNeedsUpdate = false;
}
@@ -148,7 +148,7 @@ namespace AZ
if (m_deviceBufferNeedsUpdate)
{
bool success = m_decalBufferHandler.UpdateBuffer(m_decalData.GetDataVector());
[[maybe_unused]] bool success = m_decalBufferHandler.UpdateBuffer(m_decalData.GetDataVector());
AZ_Error(FeatureProcessorName, success, "Unable to update buffer during Simulate().");
m_deviceBufferNeedsUpdate = false;
}
@@ -16,14 +16,7 @@
#include <Atom/RPI.Public/View.h>
#include <Atom/RHI/RHISystemInterface.h>
#include <Atom/RHI/Factory.h>
#include <Atom/Feature/ImageBasedLights/ImageBasedLightFeatureProcessor.h>
#include <AzCore/Math/MathUtils.h>
#include <CoreLights/DirectionalLightFeatureProcessor.h>
#include <CoreLights/SpotLightFeatureProcessor.h>
#include <CoreLights/PointLightFeatureProcessor.h>
#include <CoreLights/DiskLightFeatureProcessor.h>
#include <CoreLights/CapsuleLightFeatureProcessor.h>
#include <CoreLights/QuadLightFeatureProcessor.h>
#include <RayTracing/RayTracingFeatureProcessor.h>
namespace AZ
@@ -207,7 +200,7 @@ namespace AZ
RHI::ImageInitRequest request;
request.m_image = m_rayTraceImage[m_currentImageIndex].get();
request.m_descriptor = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::ShaderReadWrite, width, height, DiffuseProbeGridRenderData::RayTraceImageFormat);
RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
[[maybe_unused]] RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize m_probeRayTraceImage image");
}
@@ -227,7 +220,7 @@ namespace AZ
request.m_descriptor = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::ShaderReadWrite, width, height, DiffuseProbeGridRenderData::IrradianceImageFormat);
RHI::ClearValue clearValue = RHI::ClearValue::CreateVector4Float(0.0f, 0.0f, 0.0f, 0.0f);
request.m_optimizedClearValue = &clearValue;
RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
[[maybe_unused]] RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize m_probeIrradianceImage image");
}
@@ -241,7 +234,7 @@ namespace AZ
RHI::ImageInitRequest request;
request.m_image = m_distanceImage[m_currentImageIndex].get();
request.m_descriptor = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::ShaderReadWrite, width, height, DiffuseProbeGridRenderData::DistanceImageFormat);
RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
[[maybe_unused]] RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize m_probeDistanceImage image");
}
@@ -255,7 +248,7 @@ namespace AZ
RHI::ImageInitRequest request;
request.m_image = m_relocationImage[m_currentImageIndex].get();
request.m_descriptor = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::ShaderReadWrite, width, height, DiffuseProbeGridRenderData::RelocationImageFormat);
RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
[[maybe_unused]] RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request);
AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize m_probeRelocationImage image");
}
@@ -389,17 +382,8 @@ namespace AZ
}
const RHI::ShaderResourceGroupLayout* srgLayout = m_rayTraceSrg->GetLayout();
RHI::ShaderInputImageIndex imageIndex;
RHI::ShaderInputBufferIndex bufferIndex;
RHI::ShaderInputConstantIndex constantIndex;
// TLAS
RayTracingFeatureProcessor* rayTracingFeatureProcessor = m_scene->GetFeatureProcessor<RayTracingFeatureProcessor>();
uint32_t tlasBufferByteCount = aznumeric_cast<uint32_t>(rayTracingFeatureProcessor->GetTlas()->GetTlasBuffer()->GetDescriptor().m_byteCount);
RHI::BufferViewDescriptor bufferViewDescriptor = RHI::BufferViewDescriptor::CreateRayTracingTLAS(tlasBufferByteCount);
bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_scene"));
m_rayTraceSrg->SetBufferView(bufferIndex, rayTracingFeatureProcessor->GetTlas()->GetTlasBuffer()->GetBufferView(bufferViewDescriptor).get());
RHI::ShaderInputImageIndex imageIndex;
// probe raytrace
imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeRayTrace"));
@@ -417,68 +401,6 @@ namespace AZ
imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeOffsets"));
m_rayTraceSrg->SetImageView(imageIndex, m_relocationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeRelocationImageViewDescriptor).get());
// directional lights
const auto directionalLightFP = m_scene->GetFeatureProcessor<DirectionalLightFeatureProcessor>();
bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_directionalLights"));
m_rayTraceSrg->SetBufferView(bufferIndex, directionalLightFP->GetLightBuffer()->GetBufferView());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_directionalLightCount"));
m_rayTraceSrg->SetConstant(constantIndex, directionalLightFP->GetLightCount());
// spot lights
const auto spotLightFP = m_scene->GetFeatureProcessor<SpotLightFeatureProcessor>();
bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_spotLights"));
m_rayTraceSrg->SetBufferView(bufferIndex, spotLightFP->GetLightBuffer()->GetBufferView());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_spotLightCount"));
m_rayTraceSrg->SetConstant(constantIndex, spotLightFP->GetLightCount());
// point lights
const auto pointLightFP = m_scene->GetFeatureProcessor<PointLightFeatureProcessor>();
bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_pointLights"));
m_rayTraceSrg->SetBufferView(bufferIndex, pointLightFP->GetLightBuffer()->GetBufferView());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_pointLightCount"));
m_rayTraceSrg->SetConstant(constantIndex, pointLightFP->GetLightCount());
// disk lights
const auto diskLightFP = m_scene->GetFeatureProcessor<DiskLightFeatureProcessor>();
bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_diskLights"));
m_rayTraceSrg->SetBufferView(bufferIndex, diskLightFP->GetLightBuffer()->GetBufferView());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_diskLightCount"));
m_rayTraceSrg->SetConstant(constantIndex, diskLightFP->GetLightCount());
// capsule lights
const auto capsuleLightFP = m_scene->GetFeatureProcessor<CapsuleLightFeatureProcessor>();
bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_capsuleLights"));
m_rayTraceSrg->SetBufferView(bufferIndex, capsuleLightFP->GetLightBuffer()->GetBufferView());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_capsuleLightCount"));
m_rayTraceSrg->SetConstant(constantIndex, capsuleLightFP->GetLightCount());
// quad lights
const auto quadLightFP = m_scene->GetFeatureProcessor<QuadLightFeatureProcessor>();
bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_quadLights"));
m_rayTraceSrg->SetBufferView(bufferIndex, quadLightFP->GetLightBuffer()->GetBufferView());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_quadLightCount"));
m_rayTraceSrg->SetConstant(constantIndex, quadLightFP->GetLightCount());
// diffuse environment map for sky hits
ImageBasedLightFeatureProcessor* imageBasedLightFeatureProcessor = m_scene->GetFeatureProcessor<ImageBasedLightFeatureProcessor>();
if (imageBasedLightFeatureProcessor)
{
imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_diffuseEnvMap"));
m_rayTraceSrg->SetImage(imageIndex, imageBasedLightFeatureProcessor->GetDiffuseImage());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_iblOrientation"));
m_rayTraceSrg->SetConstant(constantIndex, imageBasedLightFeatureProcessor->GetOrientation());
constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_iblExposure"));
m_rayTraceSrg->SetConstant(constantIndex, imageBasedLightFeatureProcessor->GetExposure());
}
// grid settings
constantIndex = srgLayout->FindShaderInputConstantIndex(Name("m_ambientMultiplier"));
m_rayTraceSrg->SetConstant(constantIndex, m_ambientMultiplier);
@@ -42,7 +42,6 @@ namespace AZ
void DiffuseProbeGridFeatureProcessor::Activate()
{
AZ::RPI::Scene* scene = GetParentScene();
RHI::RHISystemInterface* rhiSystem = RHI::RHISystemInterface::Get();
m_diffuseProbeGrids.reserve(InitialProbeGridAllocationSize);
@@ -53,7 +52,7 @@ namespace AZ
m_bufferPool = RHI::Factory::Get().CreateBufferPool();
m_bufferPool->SetName(Name("DiffuseProbeGridBoxBufferPool"));
RHI::ResultCode resultCode = m_bufferPool->Init(*rhiSystem->GetDevice(), desc);
[[maybe_unused]] RHI::ResultCode resultCode = m_bufferPool->Init(*rhiSystem->GetDevice(), desc);
AZ_Error("DiffuseProbeGridFeatureProcessor", resultCode == RHI::ResultCode::Success, "Failed to initialize buffer pool");
// create box mesh vertices and indices
@@ -65,7 +64,7 @@ namespace AZ
imagePoolDesc.m_bindFlags = RHI::ImageBindFlags::ShaderReadWrite;
m_probeGridRenderData.m_imagePool = RHI::Factory::Get().CreateImagePool();
RHI::ResultCode result = m_probeGridRenderData.m_imagePool->Init(*rhiSystem->GetDevice(), imagePoolDesc);
[[maybe_unused]] RHI::ResultCode result = m_probeGridRenderData.m_imagePool->Init(*rhiSystem->GetDevice(), imagePoolDesc);
AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize output image pool");
}
@@ -157,56 +157,7 @@ namespace AZ
struct ScopeData { };
const auto prepareFunction = [this]([[maybe_unused]] RHI::FrameGraphInterface& scopeBuilder, [[maybe_unused]] ScopeData& scopeData) {};
const auto compileFunction = [this]([[maybe_unused]] const RHI::FrameGraphCompileContext& context, [[maybe_unused]] const ScopeData& scopeData)
{
// create a SRG array entry for every ray tracing mesh in the scene
RPI::Scene* scene = m_pipeline->GetScene();
TransformServiceFeatureProcessor* transformFeatureProcessor = scene->GetFeatureProcessor<TransformServiceFeatureProcessor>();
RayTracingFeatureProcessor* rayTracingFeatureProcessor = scene->GetFeatureProcessor<RayTracingFeatureProcessor>();
m_meshVertexPositionBuffer.clear();
m_meshVertexNormalBuffer.clear();
m_meshIndexBuffer.clear();
const RayTracingFeatureProcessor::MeshMap& rayTracingMeshes = rayTracingFeatureProcessor->GetMeshes();
m_meshCount = 0;
for (const auto& mesh : rayTracingMeshes)
{
const RayTracingFeatureProcessor::SubMeshVector& subMeshes = mesh.second.m_subMeshes;
for (const auto& subMesh : subMeshes)
{
// [GFX TODO][ATOM-14780] SRG support for unbounded arrays
// we are limited to 512 meshes until unbounded array support is implemented
if (m_meshCount == 512)
{
AZ_Warning("DiffuseProbeGridRayTracingPass", false, "Maximum number of meshes reached");
break;
}
// set irradiance color and worldInverseTranspose constants
Vector4 color(subMesh.m_irradianceColor.GetR(), subMesh.m_irradianceColor.GetG(), subMesh.m_irradianceColor.GetB(), 1.0f);
AZ::Transform meshTransform = transformFeatureProcessor->GetTransformForId(TransformServiceFeatureProcessorInterface::ObjectId(mesh.first));
AZ::Transform noScaleTransform = meshTransform;
noScaleTransform.ExtractScale();
AZ::Matrix3x3 rotationMatrix = Matrix3x3::CreateFromTransform(noScaleTransform);
rotationMatrix = rotationMatrix.GetInverseFull().GetTranspose();
m_closestHitData[m_meshCount].m_materialColor = color;
m_closestHitData[m_meshCount].m_worldInvTranspose = rotationMatrix;
m_closestHitData[m_meshCount].m_positionOffset = subMesh.m_positionVertexBufferView.GetByteOffset();
m_closestHitData[m_meshCount].m_normalOffset = subMesh.m_normalVertexBufferView.GetByteOffset();
m_closestHitData[m_meshCount].m_indexOffset = subMesh.m_indexBufferView.GetByteOffset();
// set vertex and index streams
m_meshVertexPositionBuffer.push_back(subMesh.m_positionShaderBufferView.get());
m_meshVertexNormalBuffer.push_back(subMesh.m_normalShaderBufferView.get());
m_meshIndexBuffer.push_back(subMesh.m_indexShaderBufferView.get());
m_meshCount++;
}
}
};
const auto compileFunction = [this]([[maybe_unused]] const RHI::FrameGraphCompileContext& context, [[maybe_unused]] const ScopeData& scopeData) {};
const auto executeFunction = [this]([[maybe_unused]] const RHI::FrameGraphExecuteContext& context, [[maybe_unused]] const ScopeData& scopeData)
{
@@ -214,7 +165,7 @@ namespace AZ
RayTracingFeatureProcessor* rayTracingFeatureProcessor = m_pipeline->GetScene()->GetFeatureProcessor<RayTracingFeatureProcessor>();
RHI::RayTracingBufferPools& rayTracingBufferPools = rayTracingFeatureProcessor->GetBufferPools();
if (m_meshCount == 0)
if (!rayTracingFeatureProcessor->GetSubMeshCount())
{
m_rayTracingShaderTable = nullptr;
return;
@@ -227,7 +178,7 @@ namespace AZ
->MissRecord(AZ::Name("Miss"));
// add a hit group for each mesh to the shader table
for (uint32_t i = 0; i < m_meshCount; ++i)
for (uint32_t i = 0; i < rayTracingFeatureProcessor->GetSubMeshCount(); ++i)
{
descriptorBuild->HitGroupRecord(AZ::Name("HitGroup"));
}
@@ -283,7 +234,7 @@ namespace AZ
// probe raytrace
{
RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetRayTraceImageAttachmentId(), diffuseProbeGrid->GetRayTraceImage());
[[maybe_unused]] RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetRayTraceImageAttachmentId(), diffuseProbeGrid->GetRayTraceImage());
AZ_Assert(result == RHI::ResultCode::Success, "Failed to import probeRayTraceImage");
RHI::ImageScopeAttachmentDescriptor desc;
@@ -296,7 +247,7 @@ namespace AZ
// probe irradiance
{
RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetIrradianceImageAttachmentId(), diffuseProbeGrid->GetIrradianceImage());
[[maybe_unused]] RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetIrradianceImageAttachmentId(), diffuseProbeGrid->GetIrradianceImage());
AZ_Assert(result == RHI::ResultCode::Success, "Failed to import probeIrradianceImage");
RHI::ImageScopeAttachmentDescriptor desc;
@@ -317,7 +268,7 @@ namespace AZ
// probe distance
{
RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetDistanceImageAttachmentId(), diffuseProbeGrid->GetDistanceImage());
[[maybe_unused]] RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetDistanceImageAttachmentId(), diffuseProbeGrid->GetDistanceImage());
AZ_Assert(result == RHI::ResultCode::Success, "Failed to import probeDistanceImage");
RHI::ImageScopeAttachmentDescriptor desc;
@@ -330,7 +281,7 @@ namespace AZ
// probe relocation
{
RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetRelocationImageAttachmentId(), diffuseProbeGrid->GetRelocationImage());
[[maybe_unused]] RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetRelocationImageAttachmentId(), diffuseProbeGrid->GetRelocationImage());
AZ_Assert(result == RHI::ResultCode::Success, "Failed to import probeRelocationImage");
RHI::ImageScopeAttachmentDescriptor desc;
@@ -348,30 +299,18 @@ namespace AZ
RPI::Scene* scene = m_pipeline->GetScene();
DiffuseProbeGridFeatureProcessor* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor<DiffuseProbeGridFeatureProcessor>();
RayTracingFeatureProcessor* rayTracingFeatureProcessor = scene->GetFeatureProcessor<RayTracingFeatureProcessor>();
const Data::Instance<RPI::Buffer> meshInfoBuffer = rayTracingFeatureProcessor->GetMeshInfoBuffer();
if (rayTracingFeatureProcessor->GetTlas()->GetTlasBuffer() && m_meshCount > 0)
if (rayTracingFeatureProcessor->GetTlas()->GetTlasBuffer() &&
rayTracingFeatureProcessor->GetMeshInfoBuffer() &&
rayTracingFeatureProcessor->GetSubMeshCount())
{
for (auto& diffuseProbeGrid : diffuseProbeGridFeatureProcessor->GetProbeGrids())
{
// the diffuse probe grid Srg must be updated in the Compile phase in order to successfully bind the ReadWrite shader
// inputs (see line ValidateSetImageView() in ShaderResourceGroupData.cpp)
diffuseProbeGrid->UpdateRayTraceSrg(m_globalSrgAsset);
const Data::Instance<RPI::ShaderResourceGroup>& globalSrg = diffuseProbeGrid->GetRayTraceSrg();
RHI::ShaderInputConstantIndex constantIndex = globalSrg->GetLayout()->FindShaderInputConstantIndex(AZ::Name("m_closestHitData"));
globalSrg->SetConstantArray(constantIndex, m_closestHitData);
RHI::ShaderInputBufferIndex bufferIndex = globalSrg->GetLayout()->FindShaderInputBufferIndex(AZ::Name("m_meshVertexPositions"));
globalSrg->SetBufferViewArray(bufferIndex, m_meshVertexPositionBuffer);
bufferIndex = globalSrg->GetLayout()->FindShaderInputBufferIndex(AZ::Name("m_meshVertexNormals"));
globalSrg->SetBufferViewArray(bufferIndex, m_meshVertexNormalBuffer);
bufferIndex = globalSrg->GetLayout()->FindShaderInputBufferIndex(AZ::Name("m_meshIndices"));
globalSrg->SetBufferViewArray(bufferIndex, m_meshIndexBuffer);
globalSrg->Compile();
diffuseProbeGrid->GetRayTraceSrg()->Compile();
}
}
}
@@ -383,35 +322,32 @@ namespace AZ
RayTracingFeatureProcessor* rayTracingFeatureProcessor = scene->GetFeatureProcessor<RayTracingFeatureProcessor>();
AZ_Assert(rayTracingFeatureProcessor, "DiffuseProbeGridRayTracingPass requires the RayTracingFeatureProcessor");
if (!rayTracingFeatureProcessor->GetSubMeshCount())
if (rayTracingFeatureProcessor &&
rayTracingFeatureProcessor->GetTlas()->GetTlasBuffer() &&
rayTracingFeatureProcessor->GetSubMeshCount() &&
m_rayTracingShaderTable)
{
return;
}
// submit the DispatchRaysItem for each DiffuseProbeGrid
for (auto& diffuseProbeGrid : diffuseProbeGridFeatureProcessor->GetProbeGrids())
{
const RHI::ShaderResourceGroup* shaderResourceGroups[] = {
diffuseProbeGrid->GetRayTraceSrg()->GetRHIShaderResourceGroup(),
rayTracingFeatureProcessor->GetRayTracingSceneSrg()->GetRHIShaderResourceGroup()
};
if (!m_rayTracingShaderTable)
{
return;
}
RHI::DispatchRaysItem dispatchRaysItem;
dispatchRaysItem.m_width = diffuseProbeGrid->GetNumRaysPerProbe();
dispatchRaysItem.m_height = diffuseProbeGrid->GetTotalProbeCount();
dispatchRaysItem.m_depth = 1;
dispatchRaysItem.m_rayTracingPipelineState = m_rayTracingPipelineState.get();
dispatchRaysItem.m_rayTracingShaderTable = m_rayTracingShaderTable.get();
dispatchRaysItem.m_shaderResourceGroupCount = RHI::ArraySize(shaderResourceGroups);
dispatchRaysItem.m_shaderResourceGroups = shaderResourceGroups;
dispatchRaysItem.m_globalPipelineState = m_globalPipelineState.get();
if (m_meshCount == 0)
{
return;
}
// submit the DispatchRaysItem for each DiffuseProbeGrid
for (auto& diffuseProbeGrid : diffuseProbeGridFeatureProcessor->GetProbeGrids())
{
RHI::DispatchRaysItem dispatchRaysItem;
dispatchRaysItem.m_width = diffuseProbeGrid->GetNumRaysPerProbe();
dispatchRaysItem.m_height = diffuseProbeGrid->GetTotalProbeCount();
dispatchRaysItem.m_depth = 1;
dispatchRaysItem.m_rayTracingPipelineState = m_rayTracingPipelineState.get();
dispatchRaysItem.m_rayTracingShaderTable = m_rayTracingShaderTable.get();
dispatchRaysItem.m_globalSrg = diffuseProbeGrid->GetRayTraceSrg()->GetRHIShaderResourceGroup();
dispatchRaysItem.m_globalPipelineState = m_globalPipelineState.get();
// submit the DispatchRays item
context.GetCommandList()->Submit(dispatchRaysItem);
// submit the DispatchRays item
context.GetCommandList()->Submit(dispatchRaysItem);
}
}
}
} // namespace RPI
@@ -71,25 +71,6 @@ namespace AZ
Data::Asset<RPI::ShaderResourceGroupAsset> m_globalSrgAsset;
RHI::ConstPtr<RHI::PipelineState> m_globalPipelineState;
struct ClosestHitData
{
uint32_t m_indexOffset = 0;
uint32_t m_positionOffset = 0;
uint32_t m_normalOffset = 0;
uint32_t m_padding = 0;
AZ::Vector4 m_materialColor = AZ::Vector4(0.0f);
AZ::Matrix3x3 m_worldInvTranspose = AZ::Matrix3x3::CreateIdentity();
};
// [GFX TODO][ATOM-14780] SRG support for unbounded arrays
// we are limited to 512 meshes until unbounded array support is implemented
AZStd::array<ClosestHitData, 512> m_closestHitData;
AZStd::vector<const RHI::BufferView*> m_meshVertexPositionBuffer;
AZStd::vector<const RHI::BufferView*> m_meshVertexNormalBuffer;
AZStd::vector<const RHI::BufferView*> m_meshIndexBuffer;
uint32_t m_meshCount = 0;
bool m_initialized = false;
};
} // namespace RPI
@@ -71,7 +71,7 @@ namespace AZ
AZ::RHI::AttachmentId imageAttachmentId = AZ::RHI::AttachmentId("DisplayMapperLutImageAttachmentId");
// Check and assert that the image attachment id exists (it should've been imported by the write lut pass)
auto attachment = frameGraph.GetAttachmentDatabase().IsAttachmentValid(imageAttachmentId);
[[maybe_unused]] auto attachment = frameGraph.GetAttachmentDatabase().IsAttachmentValid(imageAttachmentId);
AZ_Assert(attachment, "AcesOutputTransformLutPass invalid attachment \"DisplayMapperLutImageAttachmentId\"");
RHI::ImageScopeAttachmentDescriptor desc;
@@ -82,7 +82,7 @@ namespace AZ
AZ_Assert(m_displayMapperLut.m_lutImage != nullptr, "BakeAcesOutputTransformLutPass unable to acquire LUT image");
AZ::RHI::AttachmentId imageAttachmentId = AZ::RHI::AttachmentId("DisplayMapperLutImageAttachmentId");
RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(imageAttachmentId, m_displayMapperLut.m_lutImage);
[[maybe_unused]] RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(imageAttachmentId, m_displayMapperLut.m_lutImage);
AZ_Error("BakeAcesOutputTransformLutPass", result == RHI::ResultCode::Success, "Failed to import compute buffer with error %d", result);
RHI::ImageScopeAttachmentDescriptor desc;
@@ -158,7 +158,7 @@ namespace AZ
auto imguiContextScope = ImguiContextScope(m_imguiContext);
auto& io = ImGui::GetIO();
io.AddInputCharactersUTF8(textUTF8.c_str());
return io.WantCaptureKeyboard;
return io.WantTextInput;
}
AZ::s32 ImGuiPass::GetPriority() const
@@ -16,6 +16,8 @@
#include <AzCore/Serialization/SerializeContext.h>
#include <Atom/RPI.Public/Pass/PassSystemInterface.h>
#include <Atom/RPI.Public/Pass/PassFilter.h>
#include <Atom/RPI.Public/ViewportContext.h>
#include <Atom/RPI.Public/ViewportContextBus.h>
namespace AZ
{
@@ -225,12 +227,29 @@ namespace AZ
return nullptr;
}
bool ImGuiSystemComponent::RenderImGuiBuffersToDefaultPass(const ImDrawData& drawData)
bool ImGuiSystemComponent::RenderImGuiBuffersToCurrentViewport(const ImDrawData& drawData)
{
if (m_defaultImguiPassStack.size() > 0)
auto atomViewportRequests = AZ::Interface<AZ::RPI::ViewportContextRequestsInterface>::Get();
RPI::ViewportContextPtr viewportContext = atomViewportRequests->GetDefaultViewportContext();
if (viewportContext == nullptr)
{
m_defaultImguiPassStack.back()->RenderImguiDrawData(drawData);
return true;
return false;
}
auto renderPipeline = viewportContext->GetCurrentPipeline();
if (renderPipeline == nullptr)
{
return false;
}
for (auto imGuiPass : m_defaultImguiPassStack)
{
if (imGuiPass->GetRenderPipeline() == renderPipeline.get())
{
imGuiPass->RenderImguiDrawData(drawData);
return true;
}
}
return false;
}

Some files were not shown because too many files have changed in this diff Show More