diff --git a/AutomatedTesting/CMakeLists.txt b/AutomatedTesting/CMakeLists.txt index 289d0a6565..e239ba7674 100644 --- a/AutomatedTesting/CMakeLists.txt +++ b/AutomatedTesting/CMakeLists.txt @@ -9,18 +9,6 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # -#! Adds the --project-path argument to the VS IDE debugger command arguments -function(add_vs_debugger_arguments) - # Inject the project root into the --project-path argument into the Visual Studio Debugger arguments by defaults - list(APPEND app_targets AutomatedTesting.GameLauncher AutomatedTesting.ServerLauncher) - list(APPEND app_targets AssetBuilder AssetProcessor AssetProcessorBatch Editor) - foreach(app_target IN LISTS app_targets) - if (TARGET ${app_target}) - set_property(TARGET ${app_target} APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${CMAKE_CURRENT_LIST_DIR}\"") - endif() - endforeach() -endfunction() - if(NOT PROJECT_NAME) cmake_minimum_required(VERSION 3.19) project(AutomatedTesting @@ -30,7 +18,6 @@ if(NOT PROJECT_NAME) include(EngineFinder.cmake OPTIONAL) find_package(o3de REQUIRED) o3de_initialize() - add_vs_debugger_arguments() else() # Add the project_name to global LY_PROJECTS_TARGET_NAME property file(READ "${CMAKE_CURRENT_LIST_DIR}/project.json" project_json) diff --git a/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt index a3b6e36250..18ffa1944d 100644 --- a/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt +++ b/AutomatedTesting/Gem/PythonTests/smoke/CMakeLists.txt @@ -40,6 +40,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) AutomatedTesting.GameLauncher AutomatedTesting.Assets COMPONENT - Smoke + Sandbox ) endif() \ No newline at end of file diff --git a/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py b/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py index e6b072ba58..985740307f 100644 --- a/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py +++ b/AutomatedTesting/Gem/PythonTests/smoke/test_Editor_NewExistingLevels_Works.py @@ -15,7 +15,7 @@ from automatedtesting_shared.base import TestAutomationBase import ly_test_tools.environment.file_system as file_system -@pytest.mark.SUITE_sandbox +@pytest.mark.SUITE_smoke @pytest.mark.parametrize("launcher_platform", ["windows_editor"]) @pytest.mark.parametrize("project", ["AutomatedTesting"]) @pytest.mark.parametrize("level", ["temp_level"]) diff --git a/AutomatedTesting/Registry/C3510644_Collider_CollisionGroups.setreg_override b/AutomatedTesting/Registry/C3510644_Collider_CollisionGroups.setreg_override index 696a0a74da..9fa5e26768 100644 --- a/AutomatedTesting/Registry/C3510644_Collider_CollisionGroups.setreg_override +++ b/AutomatedTesting/Registry/C3510644_Collider_CollisionGroups.setreg_override @@ -119,9 +119,6 @@ ] } }, - "DefaultMaterial": { - "SurfaceType": "Default_1" - }, "MaterialLibrary": { "assetId": { "guid": "{3A055A3F-8CB7-5FEE-B437-EB365FACD0D4}" diff --git a/AutomatedTesting/Registry/C4044459_Material_DynamicFriction.setreg_override b/AutomatedTesting/Registry/C4044459_Material_DynamicFriction.setreg_override index c53b04e5c2..88a7b5c309 100644 --- a/AutomatedTesting/Registry/C4044459_Material_DynamicFriction.setreg_override +++ b/AutomatedTesting/Registry/C4044459_Material_DynamicFriction.setreg_override @@ -101,9 +101,6 @@ ] } }, - "DefaultMaterial": { - "SurfaceType": "Default_1" - }, "MaterialLibrary": { "assetId": { "guid": "{6AA79EE4-7EC3-5717-87AE-EDD7D886FD7F}" diff --git a/AutomatedTesting/Registry/C4976227_Collider_NewGroup.setreg_override b/AutomatedTesting/Registry/C4976227_Collider_NewGroup.setreg_override index 5e98e08ede..afbe6a9d38 100644 --- a/AutomatedTesting/Registry/C4976227_Collider_NewGroup.setreg_override +++ b/AutomatedTesting/Registry/C4976227_Collider_NewGroup.setreg_override @@ -107,9 +107,6 @@ ] } }, - "DefaultMaterial": { - "SurfaceType": "Default_1" - }, "MaterialLibrary": { "assetId": { "guid": "{3A055A3F-8CB7-5FEE-B437-EB365FACD0D4}" diff --git a/AutomatedTesting/Registry/C4976244_Collider_SameGroupSameLayerCollision.setreg_override b/AutomatedTesting/Registry/C4976244_Collider_SameGroupSameLayerCollision.setreg_override index 696a0a74da..9fa5e26768 100644 --- a/AutomatedTesting/Registry/C4976244_Collider_SameGroupSameLayerCollision.setreg_override +++ b/AutomatedTesting/Registry/C4976244_Collider_SameGroupSameLayerCollision.setreg_override @@ -119,9 +119,6 @@ ] } }, - "DefaultMaterial": { - "SurfaceType": "Default_1" - }, "MaterialLibrary": { "assetId": { "guid": "{3A055A3F-8CB7-5FEE-B437-EB365FACD0D4}" diff --git a/AutomatedTesting/Registry/C4976245_PhysXCollider_CollisionLayerTest.setreg_override b/AutomatedTesting/Registry/C4976245_PhysXCollider_CollisionLayerTest.setreg_override index 696a0a74da..9fa5e26768 100644 --- a/AutomatedTesting/Registry/C4976245_PhysXCollider_CollisionLayerTest.setreg_override +++ b/AutomatedTesting/Registry/C4976245_PhysXCollider_CollisionLayerTest.setreg_override @@ -119,9 +119,6 @@ ] } }, - "DefaultMaterial": { - "SurfaceType": "Default_1" - }, "MaterialLibrary": { "assetId": { "guid": "{3A055A3F-8CB7-5FEE-B437-EB365FACD0D4}" diff --git a/AutomatedTesting/Registry/C4982593_PhysXCollider_CollisionLayer.setreg_override b/AutomatedTesting/Registry/C4982593_PhysXCollider_CollisionLayer.setreg_override index 696a0a74da..9fa5e26768 100644 --- a/AutomatedTesting/Registry/C4982593_PhysXCollider_CollisionLayer.setreg_override +++ b/AutomatedTesting/Registry/C4982593_PhysXCollider_CollisionLayer.setreg_override @@ -119,9 +119,6 @@ ] } }, - "DefaultMaterial": { - "SurfaceType": "Default_1" - }, "MaterialLibrary": { "assetId": { "guid": "{3A055A3F-8CB7-5FEE-B437-EB365FACD0D4}" diff --git a/AutomatedTesting/Registry/physxsystemconfiguration.setreg b/AutomatedTesting/Registry/physxsystemconfiguration.setreg index 30e9dced44..02f65b685b 100644 --- a/AutomatedTesting/Registry/physxsystemconfiguration.setreg +++ b/AutomatedTesting/Registry/physxsystemconfiguration.setreg @@ -101,9 +101,6 @@ ] } }, - "DefaultMaterial": { - "SurfaceType": "Default_1" - }, "MaterialLibrary": { "assetId": { "guid": "{3A055A3F-8CB7-5FEE-B437-EB365FACD0D4}" diff --git a/Code/Framework/AtomCore/AtomCore/Instance/InstanceData.h b/Code/Framework/AtomCore/AtomCore/Instance/InstanceData.h index 119ecf3df2..d07a3a5d94 100644 --- a/Code/Framework/AtomCore/AtomCore/Instance/InstanceData.h +++ b/Code/Framework/AtomCore/AtomCore/Instance/InstanceData.h @@ -76,7 +76,7 @@ namespace AZ template friend struct AZStd::IntrusivePtrCountPolicy; - template + template friend class InstanceDatabase; // Pointer to the InstanceDatabase that owns this instance. Will be null if the InstanceData object diff --git a/Code/Framework/AtomCore/AtomCore/Instance/InstanceDatabase.h b/Code/Framework/AtomCore/AtomCore/Instance/InstanceDatabase.h index 0a9320e196..70f3e82d3e 100644 --- a/Code/Framework/AtomCore/AtomCore/Instance/InstanceDatabase.h +++ b/Code/Framework/AtomCore/AtomCore/Instance/InstanceDatabase.h @@ -46,14 +46,22 @@ namespace AZ */ using CreateFunction = AZStd::function(AssetData*)>; + using CreateFunctionWithParam = AZStd::function(AssetData*, const AZStd::any* param)>; + /** * Deletion takes an asset as input and transfers ownership to the method. */ using DeleteFunction = AZStd::function; - /// [Required] The function to use when creating an instance. - /// The system will assert if no creation function is provided. - CreateFunction m_createFunction; + /// A function to use when creating an instance. + /// The system will assert if both @m_createFunction and @m_createFunctionWithParam + /// creation functions are invalid. + CreateFunction m_createFunction = nullptr; + + /// A function with an additional custom param to use when creating an instance. + /// The system will assert if both @m_createFunction and @m_createFunctionWithParam + /// creation functions are invalid. + CreateFunctionWithParam m_createFunctionWithParam = nullptr; /// [Optional] The function to use when deleting an instance. DeleteFunction m_deleteFunction = [](Type* t) { delete t; }; @@ -156,28 +164,14 @@ namespace AZ * Use this function when creating an InstanceDatabase that will handle concrete classes of @ref Type. * \param assetType - All instances will be based on subclasses of this asset type. * \param handler - An InstanceHandler that creates instances of @ref assetType assets. + * \param checkAssetIds - If true, it will be validated that "instance->m_assetId == asset.GetId()" */ - static void Create(const AssetType& assetType, const InstanceHandler& handler); - - /** - * Create the InstanceDatabase with no handlers. Individual handlers must be added using @ref AddHandler(). - * Use this function when creating an InstanceDatabase that will handle subclasses of @ref Type. - * \param assetType - All instances will be based on subclasses of this asset type. - */ - static void Create(const AssetType& assetType); + static void Create(const AssetType& assetType, const InstanceHandler& handler, bool checkAssetIds = true); static void Destroy(); static bool IsReady(); static InstanceDatabase& Instance(); - /** - * Add an InstanceHandler that will create instances for assets of type @ref assetType. - */ - void AddHandler(const AssetType& assetType, const InstanceHandler& handler); - void AddHandler(const AssetType& assetType, typename InstanceHandler::CreateFunction createFunction); - - void RemoveHandler(const AssetType& assetType); - /** * Attempts to find an instance associated with the provided id. If the instance exists, it * is returned. If no instance is found, nullptr is returned. If is safe to call this from @@ -205,18 +199,20 @@ namespace AZ * when acquiring an instance. * @return Returns a smart pointer to the instance, which was either found or created. */ - Data::Instance FindOrCreate(const InstanceId& id, const Asset& asset); + Data::Instance FindOrCreate(const InstanceId& id, const Asset& asset, const AZStd::any* param = nullptr); //! Calls the above FindOrCreate using an InstanceId created from the asset - Data::Instance FindOrCreate(const Asset& asset); + Data::Instance FindOrCreate(const Asset& asset, const AZStd::any* param = nullptr); //! Calls FindOrCreate using a random InstanceId - Data::Instance Create(const Asset& asset); + Data::Instance Create(const Asset& asset, const AZStd::any* param = nullptr); private: InstanceDatabase(const AssetType& assetType); ~InstanceDatabase(); + bool m_checkAssetIds = true; + //useAssetTypeAsKeyForHandlers; static const char* GetEnvironmentName(); // Utility function called by InstanceData to remove the instance from the database. @@ -224,11 +220,7 @@ namespace AZ void ValidateSameAsset(InstanceData* instance, const Data::Asset& asset) const; - // Performs a thread-safe search for the InstanceHandler for a given asset type. - bool FindHandler(const AssetType& assetType, InstanceHandler& handlerOut); - - mutable AZStd::shared_mutex m_handlersMutex; - AZStd::unordered_map> m_handlers; + InstanceHandler m_instanceHandler; // m_database uses a recursive_mutex instead of a shared_mutex because it's possible to recursively // create or destroy instances on the same thread while in the midst of creating or destroying an instance. @@ -241,10 +233,11 @@ namespace AZ static EnvironmentVariable ms_instance; }; - template - EnvironmentVariable*> InstanceDatabase::ms_instance = nullptr; + template + EnvironmentVariable*> + InstanceDatabase::ms_instance = nullptr; - template + template InstanceDatabase::~InstanceDatabase() { #ifdef AZ_DEBUG_BUILD @@ -261,52 +254,7 @@ namespace AZ "AZ::Data::%s still has active references.", Type::GetDatabaseName()); } - template - void InstanceDatabase::AddHandler(const AssetType& assetType, const InstanceHandler& handler) - { - AZ_Assert(handler.m_createFunction, "You are required to provide a create function to InstanceDatabase."); - - AZStd::unique_lock lock(m_handlersMutex); - auto result = m_handlers.emplace(assetType, handler); - AZ_Assert(result.second, "An InstanceHandler already exists for this AssetType"); - } - - template - void InstanceDatabase::AddHandler(const AssetType& assetType, typename InstanceHandler::CreateFunction createFunction) - { - InstanceHandler instanceHandler; - instanceHandler.m_createFunction = createFunction; - - AddHandler(assetType, instanceHandler); - } - - template - void InstanceDatabase::RemoveHandler(const AssetType& assetType) - { - AZStd::unique_lock lock(m_handlersMutex); - m_handlers.erase(assetType); - } - - template - bool InstanceDatabase::FindHandler(const AssetType& assetType, InstanceHandler& handlerOut) - { - AZStd::shared_lock lock(m_handlersMutex); - - auto handlerIter = m_handlers.find(assetType); - if (handlerIter != m_handlers.end()) - { - // Since the handler is just a couple pointers, we copy the handler so we can - // release the lock right away. - handlerOut = handlerIter->second; - return true; - } - else - { - return false; - } - } - - template + template Data::Instance InstanceDatabase::Find(const InstanceId& id) const { AZStd::scoped_lock lock(m_databaseMutex); @@ -318,8 +266,9 @@ namespace AZ return nullptr; } - template - Data::Instance InstanceDatabase::FindOrCreate(const InstanceId& id, const Asset& asset) + template + Data::Instance InstanceDatabase::FindOrCreate( + const InstanceId& id, const Asset& asset, const AZStd::any* param) { if (!id.IsValid()) { @@ -358,24 +307,6 @@ namespace AZ } } - if (!azrtti_istypeof(m_baseAssetType, assetLocal.Get())) - { - InstanceHandler instanceHandler; - - // If a handler was incorrectly registered for an unrelated asset type, this is the - // first chance we have to discover that fact, because up until now all we had was two - // TypeIds. - if (FindHandler(assetLocal.GetType(), instanceHandler)) - { - AZ_Assert(false, "An InstanceHandler was added for asset type %s which is not a subclass of the base asset type %s.", - assetLocal.GetType().ToString().data(), - m_baseAssetType.ToString().data() - ); - - return nullptr; - } - } - // Take a lock to guard the insertion. Note that this will not guard against recursive insertions on the same thread. AZStd::scoped_lock lock(m_databaseMutex); @@ -390,48 +321,46 @@ namespace AZ } // Emplace a new instance and return it. - InstanceHandler instanceHandler; - if (FindHandler(assetLocal.GetType(), instanceHandler)) + // It's possible for the m_createFunction call to recursively trigger another FindOrCreate call, so be aware that + // the contents of m_database may change within this call. + Data::Instance instance = nullptr; + if (!param) { - // It's possible for the m_createFunction call to recursively trigger another FindOrCreate call, so be aware that - // the contents of m_database may change within this call. - Data::Instance instance = instanceHandler.m_createFunction(assetLocal.Get()); - if (instance) - { - AZ_Assert(m_database.find(id) == m_database.end(), - "Instance creation for asset id %s resulted in a recursive creation of that asset, which was unexpected. " - "This asset might be erroneously referencing itself as a dependent asset.", id.ToString().c_str()); - - instance->m_id = id; - instance->m_parentDatabase = this; - instance->m_assetId = assetLocal.GetId(); - instance->m_assetType = assetLocal.GetType(); - m_database.emplace(id, instance.get()); - } - return AZStd::move(instance); + instance = m_instanceHandler.m_createFunction(assetLocal.Get()); } else { - AZ_Warning( - "InstanceDatabase", false, - "No InstanceHandler found for asset type %s", assetLocal.GetType().ToString().data()); - return nullptr; + instance = m_instanceHandler.m_createFunctionWithParam(assetLocal.Get(), param); } + + if (instance) + { + AZ_Assert(m_database.find(id) == m_database.end(), + "Instance creation for asset id %s resulted in a recursive creation of that asset, which was unexpected. " + "This asset might be erroneously referencing itself as a dependent asset.", id.ToString().c_str()); + + instance->m_id = id; + instance->m_parentDatabase = this; + instance->m_assetId = assetLocal.GetId(); + instance->m_assetType = assetLocal.GetType(); + m_database.emplace(id, instance.get()); + } + return AZStd::move(instance); } - template - Data::Instance InstanceDatabase::FindOrCreate(const Asset& asset) + template + Data::Instance InstanceDatabase::FindOrCreate(const Asset& asset, const AZStd::any* param) { - return FindOrCreate(Data::InstanceId::CreateFromAssetId(asset.GetId()), asset); + return FindOrCreate(Data::InstanceId::CreateFromAssetId(asset.GetId()), asset, param); } - template - Data::Instance InstanceDatabase::Create(const Asset& asset) + template + Data::Instance InstanceDatabase::Create(const Asset& asset, const AZStd::any* param) { - return FindOrCreate(Data::InstanceId::CreateRandom(), asset); + return FindOrCreate(Data::InstanceId::CreateRandom(), asset, param); } - template + template void InstanceDatabase::ReleaseInstance(InstanceData* instance, const InstanceId& instanceId) { AZStd::scoped_lock lock(m_databaseMutex); @@ -447,22 +376,13 @@ namespace AZ instance->m_useCount.compare_exchange_strong(expectedRefCount, -1)) { m_database.erase(instance->GetId()); - - InstanceHandler instanceHandler; - if (FindHandler(instance->GetAssetType(), instanceHandler)) - { - instanceHandler.m_deleteFunction(static_cast(instance)); - } - else - { - AZ_Assert(false, - "Cannot delete Instance. No InstanceHandler found for asset type %s", instance->GetAssetType().ToString().data()); - } + m_instanceHandler.m_deleteFunction(static_cast(instance)); } } - template - void InstanceDatabase::ValidateSameAsset(InstanceData* instance, const Data::Asset& asset) const + template + void InstanceDatabase::ValidateSameAsset( + InstanceData* instance, const Data::Asset& asset) const { /** * The following validation layer is disabled in release, but is designed to catch a couple related edge cases @@ -476,46 +396,47 @@ namespace AZ */ #if defined (AZ_DEBUG_BUILD) - AZ_Error("InstanceDatabase", instance->m_assetId == asset.GetId(), - "InstanceDatabase::FindOrCreate found the requested instance, but a different asset was used to create it. " - "Instances of a specific id should be acquired using the same asset. Either make sure the instance id " - "is actually unique, or that you are using the same asset each time for that particular id."); + if (m_checkAssetIds) + { + AZ_Error( + "InstanceDatabase", (instance->m_assetId == asset.GetId()), + "InstanceDatabase::FindOrCreate found the requested instance, but a different asset was used to create it. " + "Instances of a specific id should be acquired using the same asset. Either make sure the instance id " + "is actually unique, or that you are using the same asset each time for that particular id."); + } #else AZ_UNUSED(instance); AZ_UNUSED(asset); #endif } - template + template InstanceDatabase::InstanceDatabase(const AssetType& assetType) : m_baseAssetType(assetType) { } - template - void InstanceDatabase::Create(const AssetType& assetType) + template + void InstanceDatabase::Create(const AssetType& assetType, const InstanceHandler& handler, bool checkAssetIds) { AZ_Assert(!ms_instance || !ms_instance.Get(), "InstanceDatabase already created!"); if (!ms_instance) { - ms_instance = Environment::CreateVariable(GetEnvironmentName()); + ms_instance = Environment::CreateVariable*>(GetEnvironmentName()); } if (!ms_instance.Get()) { ms_instance.Set(aznew InstanceDatabase(assetType)); } + + AZ_Assert(handler.m_createFunction || handler.m_createFunctionWithParam, "At least one create function must be valid"); + ms_instance.Get()->m_instanceHandler = handler; + ms_instance.Get()->m_checkAssetIds = checkAssetIds; } - template - void InstanceDatabase::Create(const AssetType& assetType, const InstanceHandler& handler) - { - Create(assetType); - Instance().AddHandler(assetType, handler); - } - - template + template void InstanceDatabase::Destroy() { AZ_Assert(ms_instance, "InstanceDatabase not created!"); @@ -523,7 +444,7 @@ namespace AZ *ms_instance = nullptr; } - template + template bool InstanceDatabase::IsReady() { if (!ms_instance) @@ -534,7 +455,7 @@ namespace AZ return ms_instance && *ms_instance; } - template + template InstanceDatabase& InstanceDatabase::Instance() { if (!ms_instance) @@ -546,10 +467,12 @@ namespace AZ return *(*ms_instance); } - template + template const char* InstanceDatabase::GetEnvironmentName() { - static_assert(HasInstanceDatabaseName::value, "All classes used as instances in an InstanceDatabase need to define AZ_INSTANCE_DATA in the class."); + static_assert( + HasInstanceDatabaseName::value, + "All classes used as instances in an InstanceDatabase need to define AZ_INSTANCE_DATA in the class."); return Type::GetDatabaseName(); } } diff --git a/Code/Framework/AtomCore/Tests/InstanceDatabase.cpp b/Code/Framework/AtomCore/Tests/InstanceDatabase.cpp index 833940a68e..daed818435 100644 --- a/Code/Framework/AtomCore/Tests/InstanceDatabase.cpp +++ b/Code/Framework/AtomCore/Tests/InstanceDatabase.cpp @@ -34,8 +34,7 @@ namespace UnitTest static const AssetId s_assetId3{ Uuid("{D9CDAB04-D206-431E-BDC0-1DD615D56197}") }; // test asset type - class TestAssetType - : public AssetData + class TestAssetType : public AssetData { public: AZ_CLASS_ALLOCATOR(TestAssetType, AZ::SystemAllocator, 0); @@ -47,30 +46,30 @@ namespace UnitTest } }; - class TestInstanceA - : public InstanceData + class TestInstanceA : public InstanceData { public: AZ_INSTANCE_DATA(TestInstanceA, "{65CBF1C8-F65F-4A84-8A11-B510BC435DB0}"); AZ_CLASS_ALLOCATOR(TestInstanceA, AZ::SystemAllocator, 0); TestInstanceA(TestAssetType* asset) - : m_asset{asset, AZ::Data::AssetLoadBehavior::Default} - {} + : m_asset{ asset, AZ::Data::AssetLoadBehavior::Default } + { + } Asset m_asset; }; - class TestInstanceB - : public InstanceData + class TestInstanceB : public InstanceData { public: AZ_INSTANCE_DATA(TestInstanceB, "{4ED0A8BF-7800-44B2-AC73-2CB759C61C37}"); AZ_CLASS_ALLOCATOR(TestInstanceB, AZ::SystemAllocator, 0); TestInstanceB(TestAssetType* asset) - : m_asset{asset, AZ::Data::AssetLoadBehavior::Default } - {} + : m_asset{ asset, AZ::Data::AssetLoadBehavior::Default } + { + } ~TestInstanceB() { @@ -86,8 +85,7 @@ namespace UnitTest // test asset handler template - class MyAssetHandler - : public AssetHandler + class MyAssetHandler : public AssetHandler { public: AZ_CLASS_ALLOCATOR(MyAssetHandler, AZ::SystemAllocator, 0); @@ -120,13 +118,12 @@ namespace UnitTest } }; - class InstanceDatabaseTest - : public AllocatorsFixture + class InstanceDatabaseTest : public AllocatorsFixture { protected: MyAssetHandler* m_assetHandler; - public: + public: void SetUp() override { AllocatorsFixture::SetUp(); @@ -200,7 +197,7 @@ namespace UnitTest AZStd::vector guids; AZStd::vector> assets; - + for (size_t i = 0; i < assetIdCount; ++i) { Uuid guid = Uuid::CreateRandom(); @@ -211,7 +208,6 @@ namespace UnitTest assets.emplace_back(assetManager.CreateAsset(guid, AZ::Data::AssetLoadBehavior::Default)); } - AZStd::vector threads; AZStd::mutex mutex; AZStd::atomic threadCount((int)threadCountMax); @@ -232,27 +228,29 @@ namespace UnitTest for (size_t i = 0; i < threadCountMax; ++i) { - threads.emplace_back([&instanceManager, &threadCount, &cv, &guids, &assets, &durationSeconds]() - { - AZ::Debug::Timer timer; - timer.Stamp(); - - while(timer.GetDeltaTimeInSeconds() < durationSeconds) + threads.emplace_back( + [&instanceManager, &threadCount, &cv, &guids, &assets, &durationSeconds]() { - const size_t index = rand() % guids.size(); - const Uuid uuid = guids[index]; - const InstanceId instanceId{uuid}; - const AssetId assetId{uuid}; + AZ::Debug::Timer timer; + timer.Stamp(); - Instance instance = instanceManager.FindOrCreate(instanceId, Asset(assetId, azrtti_typeid())); - EXPECT_NE(instance, nullptr); - EXPECT_EQ(instance->GetId(), instanceId); - EXPECT_EQ(instance->m_asset, assets[index]); - } + while (timer.GetDeltaTimeInSeconds() < durationSeconds) + { + const size_t index = rand() % guids.size(); + const Uuid uuid = guids[index]; + const InstanceId instanceId{ uuid }; + const AssetId assetId{ uuid }; - threadCount--; - cv.notify_one(); - }); + Instance instance = + instanceManager.FindOrCreate(instanceId, Asset(assetId, azrtti_typeid())); + EXPECT_NE(instance, nullptr); + EXPECT_EQ(instance->GetId(), instanceId); + EXPECT_EQ(instance->m_asset, assets[index]); + } + + threadCount--; + cv.notify_one(); + }); } bool timedOut = false; @@ -261,7 +259,9 @@ namespace UnitTest while (threadCount > 0 && !timedOut) { AZStd::unique_lock lock(mutex); - timedOut = (AZStd::cv_status::timeout == cv.wait_until(lock, AZStd::chrono::system_clock::now() + AZStd::chrono::seconds(durationSeconds * 2))); + timedOut = + (AZStd::cv_status::timeout == + cv.wait_until(lock, AZStd::chrono::system_clock::now() + AZStd::chrono::seconds(durationSeconds * 2))); } EXPECT_TRUE(threadCount == 0) << "One or more threads appear to be deadlocked at " << timer.GetDeltaTimeInSeconds() << " seconds"; @@ -280,8 +280,8 @@ namespace UnitTest TEST_F(InstanceDatabaseTest, ParallelInstanceCreate) { // This is the original test scenario from when InstanceDatabase was first implemented - // threads, AssetIds, seconds - ParallelInstanceCreateHelper( 8, 100, 5 ); + // threads, AssetIds, seconds + ParallelInstanceCreateHelper(8, 100, 5); // This value is checked in as 1 so this test doesn't take too much time, but can be increased locally to soak the test. const size_t attempts = 1; @@ -291,10 +291,10 @@ namespace UnitTest printf("Attempt %zu of %zu... \n", i, attempts); // The idea behind this series of tests is that there are two threads sharing one Instance, and both threads try to - // create or release that instance at the same time. + // create or release that instance at the same time. // At the time, this set of scenarios has something like a 10% failure rate. const size_t duration = 2; - // threads, AssetIds, seconds + // threads, AssetIds, seconds ParallelInstanceCreateHelper(2, 1, duration); ParallelInstanceCreateHelper(4, 1, duration); ParallelInstanceCreateHelper(8, 1, duration); @@ -306,7 +306,7 @@ namespace UnitTest // Here we try a bunch of different threadCount:assetCount ratios to be thorough const size_t duration = 2; - // threads, AssetIds, seconds + // threads, AssetIds, seconds ParallelInstanceCreateHelper(2, 1, duration); ParallelInstanceCreateHelper(4, 1, duration); ParallelInstanceCreateHelper(4, 2, duration); @@ -328,7 +328,10 @@ namespace UnitTest // Tests whether the deleter actually calls delete properly without // a parent database. - instance->m_onDeleteCallback = [this, &m_deleted] () { m_deleted = true; }; + instance->m_onDeleteCallback = [this, &m_deleted]() + { + m_deleted = true; + }; } EXPECT_TRUE(m_deleted); @@ -386,242 +389,4 @@ namespace UnitTest InstanceDatabase::Destroy(); } - - class InstanceDatabaseTestWithMultipleSubclasses - : public AllocatorsFixture - { - protected: - // We have "BaseAsset" with subclasses "FooAsset" and "BarAsset", - // and corresponding "BaseInstance" with subclasses "FooInstance" and "BarInstance". - // There is one "InstanceDatabse" that can create instances of both subtypes. - - class BaseAsset - : public AssetData - { - public: - AZ_CLASS_ALLOCATOR(BaseAsset, AZ::SystemAllocator, 0); - AZ_RTTI(FooAsset, "{35B443A6-D8ED-4C3C-A3F0-D642251F0AA5}", AssetData); - - BaseAsset() - { - m_status = AssetStatus::Ready; - } - }; - - class BaseInstance - : public InstanceData - { - public: - AZ_INSTANCE_DATA(BaseInstance, "{EFEC3406-2CB7-462E-A676-C22177E143E6}"); - AZ_CLASS_ALLOCATOR(BaseInstance, AZ::SystemAllocator, 0); - - BaseInstance(BaseAsset* asset) - : m_asset{ asset, AZ::Data::AssetLoadBehavior::Default } - {} - - Asset m_asset; - }; - - class FooAsset - : public BaseAsset - { - public: - AZ_CLASS_ALLOCATOR(FooAsset, AZ::SystemAllocator, 0); - AZ_RTTI(FooAsset, "{74BAE278-3DCA-4ADD-807E-2A6873F9EA3C}", BaseAsset); - }; - - class BarAsset - : public BaseAsset - { - public: - AZ_CLASS_ALLOCATOR(BarAsset, AZ::SystemAllocator, 0); - AZ_RTTI(FooAsset, "{2BCD66F5-768B-4569-9FC2-DE92ABC9C0BF}", BaseAsset); - }; - - class FooInstance - : public BaseInstance - { - public: - AZ_RTTI(FooInstance, "{B5487509-5518-4591-AC96-03E623A584B7}", BaseInstance); - AZ_CLASS_ALLOCATOR(FooInstance, AZ::SystemAllocator, 0); - - FooInstance(BaseAsset* asset) - : BaseInstance(asset) - { - EXPECT_TRUE(azrtti_typeid() == asset->GetType()); - } - }; - - class BarInstance - : public BaseInstance - { - public: - AZ_RTTI(BarInstance, "{CE9C844A-625D-4899-B7DB-8127D4618D25}", BaseInstance); - AZ_CLASS_ALLOCATOR(BarInstance, AZ::SystemAllocator, 0); - - BarInstance(BaseAsset* asset) - : BaseInstance(asset) - { - EXPECT_TRUE(azrtti_typeid() == asset->GetType()); - } - }; - - MyAssetHandler m_fooAssetHandler; - MyAssetHandler m_barAssetHandler; - - public: - - void SetUp() override - { - AllocatorsFixture::SetUp(); - AllocatorInstance::Create(); - AllocatorInstance::Create(); - - // create the asset database - { - AssetManager::Descriptor desc; - AssetManager::Create(desc); - } - - // create the instance database - { - InstanceDatabase::Create(azrtti_typeid()); - - InstanceHandler fooHandler; - fooHandler.m_createFunction = [](AssetData* assetData) - { - EXPECT_TRUE(azrtti_istypeof(assetData)); - return aznew FooInstance(static_cast(assetData)); - }; - InstanceDatabase::Instance().AddHandler(azrtti_typeid(), fooHandler); - - // Using a different overload of AddHandler() - InstanceDatabase::Instance().AddHandler(azrtti_typeid(), [](AssetData* assetData) - { - EXPECT_TRUE(azrtti_istypeof(assetData)); - return aznew BarInstance(static_cast(assetData)); - }); - } - - AssetManager::Instance().RegisterHandler(&m_fooAssetHandler, AzTypeInfo::Uuid()); - AssetManager::Instance().RegisterHandler(&m_barAssetHandler, AzTypeInfo::Uuid()); - } - - void TearDown() override - { - AssetManager::Instance().UnregisterHandler(&m_fooAssetHandler); - AssetManager::Instance().UnregisterHandler(&m_barAssetHandler); - AssetManager::Destroy(); - - InstanceDatabase::Destroy(); - - AllocatorInstance::Destroy(); - AllocatorInstance::Destroy(); - AllocatorsFixture::TearDown(); - } - }; - - TEST_F(InstanceDatabaseTestWithMultipleSubclasses, InstanceCreate) - { - auto& assetManager = AssetManager::Instance(); - auto& instanceDatabase = InstanceDatabase::Instance(); - - Asset fooAsset = assetManager.CreateAsset(s_assetId0, AZ::Data::AssetLoadBehavior::Default); - Asset barAsset = assetManager.CreateAsset(s_assetId1, AZ::Data::AssetLoadBehavior::Default); - - // Run the creation tests on 'A' first. - - Instance fooInstanceA = instanceDatabase.Find(s_instanceId0); - EXPECT_EQ(fooInstanceA, nullptr); - - Instance barInstanceA = instanceDatabase.Find(s_instanceId1); - EXPECT_EQ(barInstanceA, nullptr); - - fooInstanceA = instanceDatabase.FindOrCreate(s_instanceId0, fooAsset); - EXPECT_NE(fooInstanceA, nullptr); - EXPECT_EQ(fooInstanceA->m_asset, fooAsset); - EXPECT_TRUE(azrtti_typeid() == fooInstanceA->RTTI_GetType()); - EXPECT_EQ(fooInstanceA, instanceDatabase.Find(s_instanceId0)); - - barInstanceA = instanceDatabase.FindOrCreate(s_instanceId1, barAsset); - EXPECT_NE(barInstanceA, nullptr); - EXPECT_EQ(barInstanceA->m_asset, barAsset); - EXPECT_TRUE(azrtti_typeid() == barInstanceA->RTTI_GetType()); - EXPECT_EQ(barInstanceA, instanceDatabase.Find(s_instanceId1)); - - // Run the same test on 'B' to make sure it works independently. - - Instance fooInstanceB = instanceDatabase.Find(s_instanceId2); - EXPECT_EQ(fooInstanceB, nullptr); - - Instance barInstanceB = instanceDatabase.Find(s_instanceId3); - EXPECT_EQ(barInstanceB, nullptr); - - fooInstanceB = instanceDatabase.FindOrCreate(s_instanceId2, fooAsset); - EXPECT_NE(fooInstanceB, nullptr); - EXPECT_EQ(fooInstanceB->m_asset, fooAsset); - EXPECT_TRUE(azrtti_typeid() == fooInstanceB->RTTI_GetType()); - EXPECT_EQ(fooInstanceB, instanceDatabase.Find(s_instanceId2)); - - barInstanceB = instanceDatabase.FindOrCreate(s_instanceId3, barAsset); - EXPECT_NE(barInstanceB, nullptr); - EXPECT_EQ(barInstanceB->m_asset, barAsset); - EXPECT_TRUE(azrtti_typeid() == barInstanceB->RTTI_GetType()); - EXPECT_EQ(barInstanceB, instanceDatabase.Find(s_instanceId3)); - - // Make sure the instances are unique - - EXPECT_NE(fooInstanceA, fooInstanceB); - EXPECT_NE(barInstanceA, barInstanceB); - } - - TEST_F(InstanceDatabaseTestWithMultipleSubclasses, TestError_AddHandler_AssetTypeIsNotSubclass) - { - MyAssetHandler testAssetHandler; - AssetManager::Instance().RegisterHandler(&testAssetHandler, azrtti_typeid()); - - // Register an instance handler with an unrelated asset type. This can't actually - // check the AssetType yet because all it has are AssetType GUIDs, no actual data. - { - InstanceHandler instanceHandler; - instanceHandler.m_createFunction = [](AssetData* assetData) - { - return aznew BaseInstance(static_cast(assetData)); - }; - - AssetType unrelatedAssetType = azrtti_typeid(); - - InstanceDatabase::Instance().AddHandler(unrelatedAssetType, instanceHandler); - } - - // Try to use the unrelated handler. This is where we'll actually get an error. - { - AZ_TEST_START_ASSERTTEST; - - Asset testAsset = AssetManager::Instance().CreateAsset(s_assetId0, AZ::Data::AssetLoadBehavior::Default); - - EXPECT_EQ(nullptr, InstanceDatabase::Instance().FindOrCreate(s_instanceId0, testAsset)); - - AZ_TEST_STOP_ASSERTTEST(1); - } - - AssetManager::Instance().UnregisterHandler(&testAssetHandler); - } - - TEST_F(InstanceDatabaseTestWithMultipleSubclasses, TestError_AddHandler_AlreadyExists) - { - InstanceHandler instanceHandler; - instanceHandler.m_createFunction = [](AssetData*) - { - return nullptr; // Doesn't matter - }; - - AZ_TEST_START_ASSERTTEST; - - // The SetUp() function already registered a handler for FooAsset so this should fail - InstanceDatabase::Instance().AddHandler(azrtti_typeid(), instanceHandler); - InstanceDatabase::Instance().AddHandler(azrtti_typeid(), [](AssetData*) { return nullptr; }); - - AZ_TEST_STOP_ASSERTTEST(2); - } -} +} // namespace UnitTest diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp index 6e3c8cec60..8fe1bf50e2 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSystemComponent.cpp @@ -24,7 +24,12 @@ #include #include #include +#include #include +#include +#include +#include +#include #include #include #include @@ -33,12 +38,11 @@ #include #include #include +#include #include #include #include #include -#include -#include namespace AZ { @@ -98,6 +102,13 @@ namespace AZ jsonContext->Serializer() ->HandlesType(); + jsonContext->Serializer() + ->HandlesType(); + jsonContext->Serializer() + ->HandlesType(); + jsonContext->Serializer() + ->HandlesType(); + MathReflect(jsonContext); } else if (SerializeContext* serializeContext = azrtti_cast(reflectContext)) diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.cpp index 552b16a731..82db4df000 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.cpp @@ -33,34 +33,31 @@ namespace AZ , m_serializerIter(serializerMapIter) {} - JsonRegistrationContext::SerializerBuilder* JsonRegistrationContext::SerializerBuilder::HandlesTypeId(const Uuid& uuid) + JsonRegistrationContext::SerializerBuilder* JsonRegistrationContext::SerializerBuilder::HandlesTypeId( + const Uuid& uuid, bool overwriteExisting) { if (!m_context->IsRemovingReflection()) { auto serializer = m_serializerIter->second.get(); if (uuid.IsNull()) { - AZ_Error("Serialization", false, - "Could not register Json serializer %s. Its Uuid is null.", - serializer->RTTI_GetTypeName() - ); + AZ_Assert(false, "Could not register Json serializer %s. Its Uuid is null.", serializer->RTTI_GetTypeName()); return this; } - auto serializerIter = m_context->m_handledTypesMap.find(uuid); - - if (serializerIter == m_context->m_handledTypesMap.end()) + if (!overwriteExisting) { - m_context->m_handledTypesMap.emplace(uuid, serializer); - return this; + auto emplaceResult = m_context->m_handledTypesMap.try_emplace(uuid, serializer); + AZ_Assert( + emplaceResult.second, + "Couldn't register Json serializer %s. Another serializer (%s) has already been registered for the same Uuid (%s).", + serializer->RTTI_GetTypeName(), emplaceResult.first->second->RTTI_GetTypeName(), + uuid.ToString().c_str()); + } + else + { + m_context->m_handledTypesMap.insert_or_assign(uuid, serializer); } - - AZ_Error("Serialization", false, - "Couldn't register Json serializer %s. Another serializer (%s) has already been registered for the same Uuid (%s).", - serializer->RTTI_GetTypeName(), - serializerIter->second->RTTI_GetTypeName(), - serializerIter->first.ToString().c_str() - ); } else { diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.h b/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.h index 89d69e223f..fa1575a916 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.h +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/RegistrationContext.h @@ -63,52 +63,50 @@ namespace AZ SerializerBuilder* operator->(); template - SerializerBuilder* HandlesType() + SerializerBuilder* HandlesType(bool overwriteExisting = false) { - return HandlesTypeId(azrtti_typeid()); + return HandlesTypeId(azrtti_typeid(), overwriteExisting); } template class T> - SerializerBuilder* HandlesType() + SerializerBuilder* HandlesType(bool overwriteExisting = false) { - return HandlesTypeId(azrtti_typeid()); + return HandlesTypeId(azrtti_typeid(), overwriteExisting); } template class T> - SerializerBuilder* HandlesType() + SerializerBuilder* HandlesType(bool overwriteExisting = false) { - return HandlesTypeId(azrtti_typeid()); + return HandlesTypeId(azrtti_typeid(), overwriteExisting); } template class T> - SerializerBuilder* HandlesType() + SerializerBuilder* HandlesType(bool overwriteExisting = false) { - return HandlesTypeId(azrtti_typeid()); + return HandlesTypeId(azrtti_typeid(), overwriteExisting); } template class T> - SerializerBuilder* HandlesType() + SerializerBuilder* HandlesType(bool overwriteExisting = false) { - return HandlesTypeId(azrtti_typeid()); + return HandlesTypeId(azrtti_typeid(), overwriteExisting); } template class T> - SerializerBuilder* HandlesType() + SerializerBuilder* HandlesType(bool overwriteExisting = false) { - return HandlesTypeId(azrtti_typeid()); + return HandlesTypeId(azrtti_typeid(), overwriteExisting); } template class T> - SerializerBuilder* HandlesType() + SerializerBuilder* HandlesType(bool overwriteExisting = false) { - return HandlesTypeId(azrtti_typeid()); + return HandlesTypeId(azrtti_typeid(), overwriteExisting); } protected: - struct Placeholder { AZ_TYPE_INFO(PlaceHolder, "{4425191C-F497-411A-A7C3-52928E720B0A}"); }; - SerializerBuilder(JsonRegistrationContext* context, SerializerMap::const_iterator serializerMapIter); - SerializerBuilder* HandlesTypeId(const AZ::Uuid& uuid); + SerializerBuilder* HandlesTypeId(const AZ::Uuid& uuid, bool overwriteExisting); JsonRegistrationContext* m_context = nullptr; SerializerMap::const_iterator m_serializerIter; diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.cpp new file mode 100644 index 0000000000..b03215dd75 --- /dev/null +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.cpp @@ -0,0 +1,56 @@ +/* + * 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. + * + */ + +#include +#include + +namespace AZ +{ + AZ_CLASS_ALLOCATOR_IMPL(JsonUnsupportedTypesSerializer, SystemAllocator, 0); + AZ_CLASS_ALLOCATOR_IMPL(JsonAnySerializer, SystemAllocator, 0); + AZ_CLASS_ALLOCATOR_IMPL(JsonVariantSerializer, SystemAllocator, 0); + AZ_CLASS_ALLOCATOR_IMPL(JsonOptionalSerializer, SystemAllocator, 0); + + JsonSerializationResult::Result JsonUnsupportedTypesSerializer::Load(void*, const Uuid&, const rapidjson::Value&, + JsonDeserializerContext& context) + { + namespace JSR = JsonSerializationResult; + return context.Report(JSR::Tasks::ReadField, JSR::Outcomes::Invalid, GetMessage()); + } + + JsonSerializationResult::Result JsonUnsupportedTypesSerializer::Store(rapidjson::Value&, const void*, const void*, const Uuid&, + JsonSerializerContext& context) + { + namespace JSR = JsonSerializationResult; + return context.Report(JSR::Tasks::WriteValue, JSR::Outcomes::Invalid, GetMessage()); + } + + AZStd::string_view JsonAnySerializer::GetMessage() const + { + return "The Json Serialization doesn't support AZStd::any by design. The Json Serialization attempts to minimize the use of $type, " + "in particular the guid version, but no way has yet been found to use AZStd::any without explicitly and always requiring " + "one."; + } + + AZStd::string_view JsonVariantSerializer::GetMessage() const + { + return "The Json Serialization doesn't support AZStd::variant by design. The Json Serialization attempts to minimize the use of " + "$type, in particular the guid version. While combinations of AZStd::variant can be constructed that don't require a $type, " + "this cannot be guaranteed in general."; + } + + AZStd::string_view JsonOptionalSerializer::GetMessage() const + { + return "The Json Serialization doesn't support AZStd::optional by design. No JSON format has yet been found that wasn't deemed too " + "complex or overly verbose."; + } +} // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.h b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.h new file mode 100644 index 0000000000..882b479e5d --- /dev/null +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/UnsupportedTypesSerializer.h @@ -0,0 +1,72 @@ +/* + * 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. + * + */ + +#pragma once + +#include +#include +#include + +namespace AZ +{ + class JsonUnsupportedTypesSerializer : public BaseJsonSerializer + { + public: + AZ_RTTI(JsonUnsupportedTypesSerializer, "{AFCC76B9-1F28-429D-8B4E-020BFD95ADAC}", BaseJsonSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + JsonSerializationResult::Result Load( + void* outputValue, + const Uuid& outputValueTypeId, + const rapidjson::Value& inputValue, + JsonDeserializerContext& context) override; + JsonSerializationResult::Result Store( + rapidjson::Value& outputValue, + const void* inputValue, + const void* defaultValue, + const Uuid& valueTypeId, + JsonSerializerContext& context) override; + + protected: + virtual AZStd::string_view GetMessage() const = 0; + }; + + class JsonAnySerializer : public JsonUnsupportedTypesSerializer + { + public: + AZ_RTTI(JsonAnySerializer, "{699A0864-C4E2-4266-8141-99793C76870F}", JsonUnsupportedTypesSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + protected: + AZStd::string_view GetMessage() const override; + }; + + class JsonVariantSerializer : public JsonUnsupportedTypesSerializer + { + public: + AZ_RTTI(JsonVariantSerializer, "{08F8E746-F8A4-4E83-8902-713E90F3F498}", JsonUnsupportedTypesSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + protected: + AZStd::string_view GetMessage() const override; + }; + + class JsonOptionalSerializer : public JsonUnsupportedTypesSerializer + { + public: + AZ_RTTI(JsonOptionalSerializer, "{F8AF1C95-BD1B-44D2-9B4A-F5726133A104}", JsonUnsupportedTypesSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + protected: + AZStd::string_view GetMessage() const override; + }; +} // namespace AZ diff --git a/Code/Framework/AzCore/AzCore/azcore_files.cmake b/Code/Framework/AzCore/AzCore/azcore_files.cmake index dc0fb13f00..ca5b8cb7f2 100644 --- a/Code/Framework/AzCore/AzCore/azcore_files.cmake +++ b/Code/Framework/AzCore/AzCore/azcore_files.cmake @@ -544,6 +544,8 @@ set(FILES Serialization/Json/TupleSerializer.cpp Serialization/Json/UnorderedSetSerializer.h Serialization/Json/UnorderedSetSerializer.cpp + Serialization/Json/UnsupportedTypesSerializer.h + Serialization/Json/UnsupportedTypesSerializer.cpp Serialization/std/VariantReflection.inl Settings/CommandLine.cpp Settings/CommandLine.h diff --git a/Code/Framework/AzCore/Tests/Serialization/Json/JsonRegistrationContextTests.cpp b/Code/Framework/AzCore/Tests/Serialization/Json/JsonRegistrationContextTests.cpp index b10b569a42..7367fd47ff 100644 --- a/Code/Framework/AzCore/Tests/Serialization/Json/JsonRegistrationContextTests.cpp +++ b/Code/Framework/AzCore/Tests/Serialization/Json/JsonRegistrationContextTests.cpp @@ -95,6 +95,20 @@ namespace JsonSerializationTests } }; + class SerializerWithOneDuplicatedTypeWithOverride + : public JsonSerializerTemplatedMock + { + public: + AZ_RTTI(SerializerWithOneDuplicatedTypeWithOverride, "{4218D591-E578-499B-B578-ACA70C9944AB}", BaseJsonSerializer); + ~SerializerWithOneDuplicatedTypeWithOverride() override = default; + + static void Reflect(AZ::JsonRegistrationContext* context) + { + context->Serializer() + ->HandlesType(true); + } + }; + // Attempts to register the same type twice class SerializerWithTwoSameTypes : public JsonSerializerTemplatedMock @@ -271,13 +285,29 @@ namespace JsonSerializationTests EXPECT_EQ(1, m_jsonRegistrationContext->GetRegisteredSerializers().size()); AZ::BaseJsonSerializer* mockSerializer = m_jsonRegistrationContext->GetSerializerForType(azrtti_typeid()); - EXPECT_NE(mockSerializer, nullptr); + ASSERT_NE(mockSerializer, nullptr); EXPECT_EQ(AZ::AzTypeInfo::Uuid(), mockSerializer->RTTI_GetType()); SerializerWithOneType::Unreflect(m_jsonRegistrationContext.get()); SerializerWithOneDuplicatedType::Unreflect(m_jsonRegistrationContext.get()); } + TEST_F(JsonRegistrationContextTests, OverwriteRegisterSameUuidWithMultipleSerializers_Succeeds) + { + EXPECT_NE(AZ::AzTypeInfo::Uuid(), AZ::AzTypeInfo::Uuid()); + + SerializerWithOneType::Reflect(m_jsonRegistrationContext.get()); + SerializerWithOneDuplicatedTypeWithOverride::Reflect(m_jsonRegistrationContext.get()); + + EXPECT_EQ(1, m_jsonRegistrationContext->GetRegisteredSerializers().size()); + AZ::BaseJsonSerializer* mockSerializer = m_jsonRegistrationContext->GetSerializerForType(azrtti_typeid()); + ASSERT_NE(mockSerializer, nullptr); + EXPECT_EQ(AZ::AzTypeInfo::Uuid(), mockSerializer->RTTI_GetType()); + + SerializerWithOneType::Unreflect(m_jsonRegistrationContext.get()); + SerializerWithOneDuplicatedTypeWithOverride::Unreflect(m_jsonRegistrationContext.get()); + } + TEST_F(JsonRegistrationContextTests, RegisterSameUuidWithSameSerializers_Fails) { AZ_TEST_START_ASSERTTEST; diff --git a/Code/Framework/AzCore/Tests/Serialization/Json/UnsupportedTypesSerializerTests.cpp b/Code/Framework/AzCore/Tests/Serialization/Json/UnsupportedTypesSerializerTests.cpp new file mode 100644 index 0000000000..b7ad6bceae --- /dev/null +++ b/Code/Framework/AzCore/Tests/Serialization/Json/UnsupportedTypesSerializerTests.cpp @@ -0,0 +1,142 @@ +/* + * 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. + * + */ + +#include +#include +#include +#include +#include + +namespace JsonSerializationTests +{ + struct AnyInfo + { + using Type = AZStd::any; + using Serializer = AZ::JsonAnySerializer; + }; + + struct VariantInfo + { + using Type = AZStd::variant; + using Serializer = AZ::JsonVariantSerializer; + }; + + struct OptionalInfo + { + using Type = AZStd::optional; + using Serializer = AZ::JsonVariantSerializer; + }; + + template + class JsonUnsupportedTypesSerializerTests : public BaseJsonSerializerFixture + { + public: + using Type = typename Info::Type; + using Serializer = typename Info::Serializer; + + void SetUp() override + { + BaseJsonSerializerFixture::SetUp(); + this->m_serializer = AZStd::make_unique(); + } + + void TearDown() override + { + this->m_serializer.reset(); + BaseJsonSerializerFixture::TearDown(); + } + + protected: + AZStd::unique_ptr m_serializer; + Type m_instance{}; + }; + + using UnsupportedTypesTestTypes = ::testing::Types; + TYPED_TEST_CASE(JsonUnsupportedTypesSerializerTests, UnsupportedTypesTestTypes); + + TYPED_TEST(JsonUnsupportedTypesSerializerTests, Load_CallDirectly_ReportsIssueAndHalts) + { + namespace JSR = AZ::JsonSerializationResult; + + bool hasMessage = false; + auto callback = [&hasMessage](AZStd::string_view message, JSR::ResultCode result, AZStd::string_view) -> JSR::ResultCode + { + hasMessage = !message.empty(); + return result; + }; + this->m_jsonDeserializationContext->PushReporter(AZStd::move(callback)); + + JSR::Result result = this->m_serializer->Load( + &this->m_instance, azrtti_typeid(this->m_instance), *this->m_jsonDocument, *this->m_jsonDeserializationContext); + this->m_jsonDeserializationContext->PopReporter(); + + EXPECT_EQ(JSR::Processing::Halted, result.GetResultCode().GetProcessing()); + EXPECT_TRUE(hasMessage); + } + + TYPED_TEST(JsonUnsupportedTypesSerializerTests, Load_CallThroughFrontEnd_ReportsIssueAndHalts) + { + namespace JSR = AZ::JsonSerializationResult; + + bool hasMessage = false; + auto callback = [&hasMessage](AZStd::string_view message, JSR::ResultCode result, AZStd::string_view) -> JSR::ResultCode + { + hasMessage = !message.empty(); + return result; + }; + this->m_deserializationSettings->m_reporting = AZStd::move(callback); + + JSR::ResultCode result = AZ::JsonSerialization::Load(this->m_instance, *this->m_jsonDocument, *this->m_deserializationSettings); + + EXPECT_EQ(JSR::Processing::Halted, result.GetProcessing()); + EXPECT_TRUE(hasMessage); + } + + TYPED_TEST(JsonUnsupportedTypesSerializerTests, Save_CallDirectly_ReportsIssueAndHalts) + { + namespace JSR = AZ::JsonSerializationResult; + + bool hasMessage = false; + auto callback = [&hasMessage](AZStd::string_view message, JSR::ResultCode result, AZStd::string_view) -> JSR::ResultCode + { + hasMessage = !message.empty(); + return result; + }; + this->m_jsonSerializationContext->PushReporter(AZStd::move(callback)); + + JSR::Result result = this->m_serializer->Store( + *this->m_jsonDocument, &this->m_instance, nullptr, azrtti_typeid(this->m_instance), *this->m_jsonSerializationContext); + this->m_jsonSerializationContext->PopReporter(); + + EXPECT_EQ(JSR::Processing::Halted, result.GetResultCode().GetProcessing()); + EXPECT_TRUE(hasMessage); + } + + TYPED_TEST(JsonUnsupportedTypesSerializerTests, Save_CallThroughFrontEnd_ReportsIssueAndHalts) + { + namespace JSR = AZ::JsonSerializationResult; + + bool hasMessage = false; + auto callback = [&hasMessage](AZStd::string_view message, JSR::ResultCode result, AZStd::string_view) -> JSR::ResultCode + { + hasMessage = !message.empty(); + return result; + }; + this->m_serializationSettings->m_reporting = AZStd::move(callback); + + JSR::ResultCode result = AZ::JsonSerialization::Store( + *this->m_jsonDocument, this->m_jsonDocument->GetAllocator(), this->m_instance, *this->m_serializationSettings); + + EXPECT_EQ(JSR::Processing::Halted, result.GetProcessing()); + EXPECT_TRUE(hasMessage); + } +} // namespace JsonSerializationTests diff --git a/Code/Framework/AzCore/Tests/azcoretests_files.cmake b/Code/Framework/AzCore/Tests/azcoretests_files.cmake index 78b2701d92..ffbfb75f6b 100644 --- a/Code/Framework/AzCore/Tests/azcoretests_files.cmake +++ b/Code/Framework/AzCore/Tests/azcoretests_files.cmake @@ -128,6 +128,7 @@ set(FILES Serialization/Json/TransformSerializerTests.cpp Serialization/Json/TupleSerializerTests.cpp Serialization/Json/UnorderedSetSerializerTests.cpp + Serialization/Json/UnsupportedTypesSerializerTests.cpp Serialization/Json/UuidSerializerTests.cpp Math/AabbTests.cpp Math/ColorTests.cpp diff --git a/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h b/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h index c15f75e3e7..f4ef1a1ca2 100644 --- a/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h +++ b/Code/Framework/AzFramework/AzFramework/Asset/AssetProcessorMessages.h @@ -166,7 +166,7 @@ namespace AzFramework { public: AZ_CLASS_ALLOCATOR(RequestEscalateAsset, AZ::OSAllocator, 0); - AZ_RTTI(RequestAssetStatus, "{E95C5422-5F00-478B-A984-C041DE70484F}", BaseAssetProcessorMessage); + AZ_RTTI(RequestEscalateAsset, "{E95C5422-5F00-478B-A984-C041DE70484F}", BaseAssetProcessorMessage); static void Reflect(AZ::ReflectContext* context); static constexpr unsigned int MessageType = AZ_CRC("AssetSystem::RequestEscalateAsset", 0x1894d94e); diff --git a/Code/Framework/AzFramework/AzFramework/Physics/Configuration/SystemConfiguration.h b/Code/Framework/AzFramework/AzFramework/Physics/Configuration/SystemConfiguration.h index 56fe9a68c4..6119a6f630 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/Configuration/SystemConfiguration.h +++ b/Code/Framework/AzFramework/AzFramework/Physics/Configuration/SystemConfiguration.h @@ -46,7 +46,7 @@ namespace AzPhysics //! Each Physics Scene uses this as a base and will override as needed. CollisionConfiguration m_collisionConfig; - Physics::MaterialConfiguration m_defaultMaterialConfiguration; //!< Default material parameters for the project. + Physics::DefaultMaterialConfiguration m_defaultMaterialConfiguration; //!< Default material parameters for the project. AZ::Data::Asset m_materialLibraryAsset = AZ::Data::AssetLoadBehavior::NoLoad; //!< Material Library exposed by the system component SystemBus API. //! Controls whether the Physics System will self register to the TickBus and call StartSimulation / FinishSimulation on each Scene. diff --git a/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp b/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp index 78e0431753..d84d2739d0 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp +++ b/Code/Framework/AzFramework/AzFramework/Physics/Material.cpp @@ -83,14 +83,12 @@ namespace Physics AZ::EditContext* editContext = serializeContext->GetEditContext(); if (editContext) { - AZStd::unordered_set forbiddenSurfaceTypeNames; - forbiddenSurfaceTypeNames.insert("Default"); editContext->Class("", "") ->ClassElement(AZ::Edit::ClassElements::EditorData, "Physics Material") - ->DataElement(MaterialConfiguration::s_configLineEdit, &MaterialConfiguration::m_surfaceType, "Surface type", "Game surface type") // Uses ConfigStringLineEditCtrl in PhysX gem. + ->DataElement(MaterialConfiguration::s_configLineEdit, &MaterialConfiguration::m_surfaceType, "Name", "Name of the physics material") // Uses ConfigStringLineEditCtrl in PhysX gem. ->Attribute(AZ::Edit::Attributes::MaxLength, 64) + ->Attribute(AZ::Edit::Attributes::ReadOnly, &MaterialConfiguration::IsNameReadOnly) ->Attribute(MaterialConfiguration::s_stringGroup, AZ_CRC("LineEditGroupSurfaceType", 0x6670659e)) - ->Attribute(MaterialConfiguration::s_forbiddenStringSet, forbiddenSurfaceTypeNames) ->DataElement(AZ::Edit::UIHandlers::Default, &MaterialConfiguration::m_staticFriction, "Static friction", "Friction coefficient when object is still") ->Attribute(AZ::Edit::Attributes::Min, 0.f) ->DataElement(AZ::Edit::UIHandlers::Default, &MaterialConfiguration::m_dynamicFriction, "Dynamic friction", "Friction coefficient when object is moving") @@ -178,6 +176,23 @@ namespace Physics ////////////////////////////////////////////////////////////////////////// + DefaultMaterialConfiguration::DefaultMaterialConfiguration() + { + m_surfaceType = Physics::DefaultPhysicsMaterialLabel; + } + + void DefaultMaterialConfiguration::Reflect(AZ::ReflectContext* context) + { + if (auto* serializeContext = azrtti_cast(context)) + { + serializeContext->Class() + ->Version(1) + ; + } + } + + ////////////////////////////////////////////////////////////////////////// + void MaterialLibraryAsset::Reflect(AZ::ReflectContext * context) { AZ::SerializeContext* serializeContext = azrtti_cast(context); @@ -212,7 +227,7 @@ namespace Physics if (serializeContext) { serializeContext->Class() - ->Version(1) + ->Version(2) ->Field("DefaultMaterial", &MaterialInfoReflectionWrapper::m_defaultMaterialConfiguration) ->Field("Asset", &MaterialInfoReflectionWrapper::m_materialLibraryAsset) ; @@ -300,7 +315,7 @@ namespace Physics { auto foundMaterialConfiguration = AZStd::find_if(m_materialLibrary.begin(), m_materialLibrary.end(), [&materialName](const auto& data) { - return data.m_configuration.m_surfaceType == materialName; + return AZ::StringFunc::Equal(data.m_configuration.m_surfaceType, materialName, false/*bCaseSensitive*/); }); if (foundMaterialConfiguration != m_materialLibrary.end()) @@ -372,20 +387,28 @@ namespace Physics serializeContext->Class() ->Version(3, &ClassConverters::MaterialSelectionConverter) ->EventHandler() + ->Field("EditContextMaterialLibrary", &MaterialSelection::m_editContextMaterialLibrary) ->Field("MaterialIds", &MaterialSelection::m_materialIdsAssignedToSlots) ; if (auto editContext = serializeContext->GetEditContext()) { - editContext->Class("Physics Material", "Select physics material library and which materials to use for the object") + editContext->Class("Physics Materials", "Select which physics materials to use for each element of this object") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->DataElement(AZ::Edit::UIHandlers::Default, &MaterialSelection::m_materialIdsAssignedToSlots, "Mesh Surfaces", "Specify which Physics Material to use for each element of this object") + ->DataElement(AZ::Edit::UIHandlers::Default, &MaterialSelection::m_editContextMaterialLibrary, "Library", "Physics material library from PhysX Configuration") + ->Attribute(AZ::Edit::Attributes::ContainerCanBeModified, false) + ->Attribute(AZ_CRC_CE("BrowseButtonEnabled"), false) + ->Attribute(AZ_CRC_CE("EditButton"), "") + ->Attribute(AZ_CRC_CE("EditDescription"), "Open in Asset Editor") + ->Attribute(AZ::Edit::Attributes::DefaultAsset, &MaterialSelection::GetMaterialLibraryId) + ->DataElement(AZ::Edit::UIHandlers::Default, &MaterialSelection::m_materialIdsAssignedToSlots, "", "") ->ElementAttribute(Attributes::MaterialLibraryAssetId, &MaterialSelection::GetMaterialLibraryId) ->Attribute(AZ::Edit::Attributes::IndexedChildNameLabelOverride, &MaterialSelection::GetMaterialSlotLabel) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->ElementAttribute(AZ::Edit::Attributes::ReadOnly, &MaterialSelection::AreMaterialSlotsReadOnly) ->Attribute(AZ::Edit::Attributes::ContainerCanBeModified, false) + ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) ; } } diff --git a/Code/Framework/AzFramework/AzFramework/Physics/Material.h b/Code/Framework/AzFramework/AzFramework/Physics/Material.h index 69edf3ed25..1e12967945 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/Material.h +++ b/Code/Framework/AzFramework/AzFramework/Physics/Material.h @@ -25,6 +25,8 @@ namespace AZ namespace Physics { + static constexpr AZStd::string_view DefaultPhysicsMaterialLabel = ""; + /// Physics material /// ========================= /// This is the interface to the wrapper around native material type (such as PxMaterial in PhysX gem) @@ -97,10 +99,13 @@ namespace Physics class MaterialConfiguration { public: - AZ_TYPE_INFO(Physics::MaterialConfiguration, "{8807CAA1-AD08-4238-8FDB-2154ADD084A1}"); + AZ_RTTI(Physics::MaterialConfiguration, "{8807CAA1-AD08-4238-8FDB-2154ADD084A1}"); static void Reflect(AZ::ReflectContext* context); + MaterialConfiguration() = default; + virtual ~MaterialConfiguration() = default; + const static AZ::Crc32 s_stringGroup; ///< Edit context data attribute. Identifies a string group instance. String values in the same group are unique. const static AZ::Crc32 s_forbiddenStringSet; ///< Edit context data attribute. A set of strings that are not acceptable as values to the data element. Can be AZStd::unordered_set, AZStd::set, AZStd::vector const static AZ::Crc32 s_configLineEdit; ///< Edit context data element handler. Creates custom line edit widget that allows string values to be unique in a group. @@ -121,11 +126,28 @@ namespace Physics bool operator==(const MaterialConfiguration& other) const; bool operator!=(const MaterialConfiguration& other) const; + protected: + virtual bool IsNameReadOnly() const { return false; } + private: static bool VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement); static AZ::Color GenerateDebugColor(const char* materialName); }; + class DefaultMaterialConfiguration + : public MaterialConfiguration + { + public: + AZ_RTTI(Physics::DefaultMaterialConfiguration, "{A1F64C5C-D413-4757-9D42-51DD0EBFC270}", Physics::MaterialConfiguration); + + static void Reflect(AZ::ReflectContext* context); + + DefaultMaterialConfiguration(); + + protected: + bool IsNameReadOnly() const override { return true; } + }; + namespace Attributes { const static AZ::Crc32 MaterialLibraryAssetId = AZ_CRC("MaterialAssetId", 0x4a88a3f5); @@ -237,7 +259,7 @@ namespace Physics AZ_TYPE_INFO(Physics::MaterialInfoReflectionWrapper, "{02AB8CBC-D35B-4E0F-89BA-A96D94DAD4F9}"); static void Reflect(AZ::ReflectContext* context); - Physics::MaterialConfiguration m_defaultMaterialConfiguration; + Physics::DefaultMaterialConfiguration m_defaultMaterialConfiguration; AZ::Data::Asset m_materialLibraryAsset = AZ::Data::AssetLoadBehavior::NoLoad; }; @@ -296,6 +318,10 @@ namespace Physics // EditorContext callbacks AZStd::string GetMaterialSlotLabel(int index); + + // Only used for Edit Context as it requires to have an asset reflected. + // To get the material library use GetMaterialLibraryId() + AZ::Data::Asset m_editContextMaterialLibrary{ AZ::Data::AssetLoadBehavior::NoLoad }; }; /// Editor Bus used to assign material to terrain surface id. diff --git a/Code/Framework/AzFramework/AzFramework/Physics/Shape.cpp b/Code/Framework/AzFramework/AzFramework/Physics/Shape.cpp index 6325b50f4d..910184857b 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/Shape.cpp +++ b/Code/Framework/AzFramework/AzFramework/Physics/Shape.cpp @@ -62,7 +62,7 @@ namespace Physics ->Attribute(AZ::Edit::Attributes::Step, 0.01f) ->DataElement(AZ::Edit::UIHandlers::Default, &ColliderConfiguration::m_rotation, "Rotation", "Local rotation relative to the rigid body") ->Attribute(AZ::Edit::Attributes::Visibility, &ColliderConfiguration::GetOffsetVisibility) - ->DataElement(AZ::Edit::UIHandlers::Default, &ColliderConfiguration::m_materialSelection, "Physics Material", "Select physics material library and which materials to use for the shape") + ->DataElement(AZ::Edit::UIHandlers::Default, &ColliderConfiguration::m_materialSelection, "Physics Materials", "Select which physics materials to use for each element of this shape") ->Attribute(AZ::Edit::Attributes::Visibility, &ColliderConfiguration::GetMaterialSelectionVisibility) ->DataElement(AZ::Edit::UIHandlers::Default, &ColliderConfiguration::m_tag, "Tag", "Tag used to identify colliders from one another") ->DataElement(AZ::Edit::UIHandlers::Default, &ColliderConfiguration::m_restOffset, "Rest offset", diff --git a/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.cpp b/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.cpp index 275103bc28..2c3b113d65 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.cpp +++ b/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.cpp @@ -17,21 +17,6 @@ namespace Physics { - namespace Internal - { - bool ShapeConfigurationVersionConverter( - [[maybe_unused]] AZ::SerializeContext& context, - AZ::SerializeContext::DataElementNode& classElement) - { - if (classElement.GetVersion() <= 1) - { - classElement.RemoveElementByName(AZ_CRC_CE("UseMaterialsFromAsset")); - } - - return true; - } - } - void ShapeConfiguration::Reflect(AZ::ReflectContext* context) { if (auto serializeContext = azrtti_cast(context)) @@ -181,9 +166,10 @@ namespace Physics ->RegisterGenericType>(); serializeContext->Class() - ->Version(2, &Internal::ShapeConfigurationVersionConverter) + ->Version(3) ->Field("PhysicsAsset", &PhysicsAssetShapeConfiguration::m_asset) ->Field("AssetScale", &PhysicsAssetShapeConfiguration::m_assetScale) + ->Field("UseMaterialsFromAsset", &PhysicsAssetShapeConfiguration::m_useMaterialsFromAsset) ->Field("SubdivisionLevel", &PhysicsAssetShapeConfiguration::m_subdivisionLevel) ; @@ -196,6 +182,7 @@ namespace Physics ->DataElement(AZ::Edit::UIHandlers::Default, &PhysicsAssetShapeConfiguration::m_assetScale, "Asset Scale", "The scale of the asset shape") ->Attribute(AZ::Edit::Attributes::Min, 0.0f) ->Attribute(AZ::Edit::Attributes::Step, 0.01f) + ->DataElement(AZ::Edit::UIHandlers::Default, &PhysicsAssetShapeConfiguration::m_useMaterialsFromAsset, "Physics materials from asset", "Auto-set physics materials using asset's physics material names") ; } } diff --git a/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.h b/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.h index 8234ef9173..b3d04a10c9 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.h +++ b/Code/Framework/AzFramework/AzFramework/Physics/ShapeConfiguration.h @@ -140,7 +140,7 @@ namespace Physics AZ::Data::Asset m_asset{ AZ::Data::AssetLoadBehavior::PreLoad }; AZ::Vector3 m_assetScale = AZ::Vector3::CreateOne(); - bool m_useMaterialsFromAsset = false; // Not reflected or exposed to the user until there is a way to auto-match mesh's materials with physics materials + bool m_useMaterialsFromAsset = true; AZ::u8 m_subdivisionLevel = 4; ///< The level of subdivision if a primitive shape is replaced with a convex mesh due to scaling. }; diff --git a/Code/Framework/AzFramework/AzFramework/Physics/Utils.cpp b/Code/Framework/AzFramework/AzFramework/Physics/Utils.cpp index 2c3b62bb88..17c09bb6ce 100644 --- a/Code/Framework/AzFramework/AzFramework/Physics/Utils.cpp +++ b/Code/Framework/AzFramework/AzFramework/Physics/Utils.cpp @@ -118,6 +118,7 @@ namespace Physics AzPhysics::TriggerEvent::Reflect(context); AzPhysics::SceneConfiguration::Reflect(context); MaterialConfiguration::Reflect(context); + DefaultMaterialConfiguration::Reflect(context); MaterialLibraryAsset::Reflect(context); MaterialInfoReflectionWrapper::Reflect(context); JointLimitConfiguration::Reflect(context); diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h index d2a5872fc8..8236683163 100644 --- a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h +++ b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesInterface.h @@ -322,12 +322,6 @@ namespace AzFramework //! @param optionalArgs Optional additional arguments, see BarrierOptionalArgs. virtual void Barrier(EntitySpawnTicket& ticket, BarrierCallback completionCallback, BarrierOptionalArgs optionalArgs = {}) = 0; - //! Register a handler for OnSpawned events. - virtual void AddOnSpawnedHandler(AZ::Event>::Handler& handler) = 0; - - //! Register a handler for OnDespawned events. - virtual void AddOnDespawnedHandler(AZ::Event>::Handler& handler) = 0; - protected: [[nodiscard]] virtual AZStd::pair CreateTicket(AZ::Data::Asset&& spawnable) = 0; virtual void DestroyTicket(void* ticket) = 0; diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp index a482c1d4f9..d6d005a944 100644 --- a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp +++ b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.cpp @@ -150,16 +150,6 @@ namespace AzFramework QueueRequest(ticket, optionalArgs.m_priority, AZStd::move(queueEntry)); } - void SpawnableEntitiesManager::AddOnSpawnedHandler(AZ::Event>::Handler& handler) - { - handler.Connect(m_onSpawnedEvent); - } - - void SpawnableEntitiesManager::AddOnDespawnedHandler(AZ::Event>::Handler& handler) - { - handler.Connect(m_onDespawnedEvent); - } - auto SpawnableEntitiesManager::ProcessQueue(CommandQueuePriority priority) -> CommandQueueStatus { CommandQueueStatus result = CommandQueueStatus::NoCommandsLeft; @@ -320,8 +310,6 @@ namespace AzFramework ticket.m_spawnedEntities.begin() + spawnedEntitiesInitialCount, ticket.m_spawnedEntities.end())); } - m_onSpawnedEvent.Signal(ticket.m_spawnable); - ticket.m_currentRequestId++; return true; } @@ -401,8 +389,6 @@ namespace AzFramework ticket.m_spawnedEntities.begin() + spawnedEntitiesInitialCount, ticket.m_spawnedEntities.end())); } - m_onSpawnedEvent.Signal(ticket.m_spawnable); - ticket.m_currentRequestId++; return true; } @@ -434,8 +420,6 @@ namespace AzFramework request.m_completionCallback(request.m_ticketId); } - m_onDespawnedEvent.Signal(ticket.m_spawnable); - ticket.m_currentRequestId++; return true; } @@ -463,8 +447,6 @@ namespace AzFramework } } - m_onDespawnedEvent.Signal(ticket.m_spawnable); - // Rebuild the list of entities. ticket.m_spawnedEntities.clear(); const Spawnable::EntityList& entities = request.m_spawnable->GetEntities(); @@ -517,8 +499,6 @@ namespace AzFramework ticket.m_currentRequestId++; - m_onSpawnedEvent.Signal(ticket.m_spawnable); - return true; } else diff --git a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h index 638559f3f1..5f659182d3 100644 --- a/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h +++ b/Code/Framework/AzFramework/AzFramework/Spawnable/SpawnableEntitiesManager.h @@ -73,9 +73,6 @@ namespace AzFramework void Barrier(EntitySpawnTicket& spawnInfo, BarrierCallback completionCallback, BarrierOptionalArgs optionalArgs = {}) override; - void AddOnSpawnedHandler(AZ::Event>::Handler& handler) override; - void AddOnDespawnedHandler(AZ::Event>::Handler& handler) override; - // // The following function is thread safe but intended to be run from the main thread. // @@ -200,9 +197,6 @@ namespace AzFramework Queue m_highPriorityQueue; Queue m_regularPriorityQueue; - AZ::Event> m_onSpawnedEvent; - AZ::Event> m_onDespawnedEvent; - AZ::SerializeContext* m_defaultSerializeContext { nullptr }; //! The threshold used to determine if a request goes in the regular (if bigger than the value) or high priority queue (if smaller //! or equal to this value). The starting value of 64 is chosen as it's between default values SpawnablePriority_High and diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/asset_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/asset_editor.svg new file mode 100644 index 0000000000..b96f27dda7 --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/asset_editor.svg @@ -0,0 +1,7 @@ + + + Asset Editor icon + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/audio_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/audio_editor.svg new file mode 100644 index 0000000000..1cc863ebcd --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/audio_editor.svg @@ -0,0 +1,7 @@ + + + audio edit + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/emfx_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/emfx_editor.svg new file mode 100644 index 0000000000..72e67b5170 --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/emfx_editor.svg @@ -0,0 +1,7 @@ + + + EMFX header icon + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/landscape_canvas_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/landscape_canvas_editor.svg new file mode 100644 index 0000000000..ebf38d15c0 --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/landscape_canvas_editor.svg @@ -0,0 +1,7 @@ + + + Veg editor icon + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/lua_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/lua_editor.svg new file mode 100644 index 0000000000..76b4ed3da4 --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/lua_editor.svg @@ -0,0 +1,13 @@ + + + Lua icon + + + + + + + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/material_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/material_editor.svg new file mode 100644 index 0000000000..ed6f477367 --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/material_editor.svg @@ -0,0 +1,10 @@ + + + Material editor icon + + + + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/script_canvas_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/script_canvas_editor.svg new file mode 100644 index 0000000000..b2a303d237 --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/script_canvas_editor.svg @@ -0,0 +1,7 @@ + + + SC icon + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/trackview_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/trackview_editor.svg new file mode 100644 index 0000000000..56da550f0e --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/trackview_editor.svg @@ -0,0 +1,7 @@ + + + trackview icon + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/ui_editor.svg b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/ui_editor.svg new file mode 100644 index 0000000000..8d27f071da --- /dev/null +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/Menu/ui_editor.svg @@ -0,0 +1,7 @@ + + + UI editor icon + + + + \ No newline at end of file diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Images/resources.qrc b/Code/Framework/AzQtComponents/AzQtComponents/Images/resources.qrc index 2487917f67..cc66558367 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Images/resources.qrc +++ b/Code/Framework/AzQtComponents/AzQtComponents/Images/resources.qrc @@ -19,5 +19,14 @@ Menu/resolution.svg Menu/debug.svg Menu/camera.svg + Menu/asset_editor.svg + Menu/audio_editor.svg + Menu/emfx_editor.svg + Menu/landscape_canvas_editor.svg + Menu/lua_editor.svg + Menu/material_editor.svg + Menu/script_canvas_editor.svg + Menu/trackview_editor.svg + Menu/ui_editor.svg diff --git a/Code/Framework/AzTest/AzTest/Platform/Linux/AzTest_Traits_Linux.h b/Code/Framework/AzTest/AzTest/Platform/Linux/AzTest_Traits_Linux.h index 855b4fe416..64816f75b2 100644 --- a/Code/Framework/AzTest/AzTest/Platform/Linux/AzTest_Traits_Linux.h +++ b/Code/Framework/AzTest/AzTest/Platform/Linux/AzTest_Traits_Linux.h @@ -22,7 +22,7 @@ #define AZ_TRAIT_DISABLE_FAILED_AP_CONNECTION_TESTS true #define AZ_TRAIT_DISABLE_FAILED_ASSET_LOAD_TESTS true -#define AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS true + #define AZ_TRAIT_DISABLE_FAILED_ATOM_RPI_TESTS true #define AZ_TRAIT_DISABLE_FAILED_ARCHIVE_TESTS true #define AZ_TRAIT_DISABLE_FAILED_ZERO_COLOR_CONVERSION_TEST true diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h index 72150b1b57..ab5c58c72a 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/API/ToolsApplicationAPI.h @@ -916,9 +916,6 @@ namespace AzToolsFramework eECMF_USE_VIEWPORT_CENTER = 0x2, }; - /// Populate global edit-time context menu. - virtual void PopulateEditorGlobalContextMenu(QMenu * /*menu*/, const AZ::Vector2& /*point*/, int /*flags*/) {} - /// Populate slice portion of edit-time context menu virtual void PopulateEditorGlobalContextMenu_SliceSection(QMenu * /*menu*/, const AZ::Vector2& /*point*/, int /*flags*/) {} diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp index 5cdd028bbb..6805575d95 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Asset/AssetUtils.cpp @@ -230,7 +230,7 @@ namespace AzToolsFramework::AssetUtils AZStd::vector gemInfoList; if (!AzFramework::GetGemsInfo(gemInfoList, *settingsRegistry)) { - AZ_Error("AzToolsFramework::AssetUtils", false, "Failed to read gems from project folder(%s).\n", projectPath); + AZ_Error("AzToolsFramework::AssetUtils", false, "Failed to read gems from project folder(%.*s).\n", AZ_STRING_ARG(projectPath)); return {}; } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Editor/EditorContextMenuBus.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Editor/EditorContextMenuBus.h index 33710e68f3..e8f37be539 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Editor/EditorContextMenuBus.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Editor/EditorContextMenuBus.h @@ -79,7 +79,7 @@ namespace AzToolsFramework * This is the menu that appears when right clicking the main editor window, * including the Entity Outliner and the Viewport. */ - virtual void PopulateEditorGlobalContextMenu(QMenu* menu) const = 0; + virtual void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) = 0; }; using EditorContextMenuBus = AZ::EBus; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp index 766a293b4a..83a76aeb01 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp @@ -187,13 +187,14 @@ namespace AzToolsFramework return removedEntity; } - void Instance::DetachNestedEntities(const AZStd::function)>& callback) + void Instance::DetachAllEntitiesInHierarchy(const AZStd::function)>& callback) { + callback(AZStd::move(DetachContainerEntity())); DetachEntities(callback); for (const auto& [instanceAlias, instance] : m_nestedInstances) { - instance->DetachNestedEntities(callback); + instance->DetachAllEntitiesInHierarchy(callback); } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h index d14203e2e5..5f36ac10dc 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h @@ -87,7 +87,15 @@ namespace AzToolsFramework bool AddEntity(AZ::Entity& entity, EntityAlias entityAlias); AZStd::unique_ptr DetachEntity(const AZ::EntityId& entityId); void DetachEntities(const AZStd::function)>& callback); - void DetachNestedEntities(const AZStd::function)>& callback); + + /** + * Detaches all entities in the instance hierarchy. + * Includes all direct entities, all nested entities, and all container entities. + * Note that without container entities the hierarchy that remains cannot be used further without restoring new ones. + * @param callback A user provided callback that can be used to capture ownership and manipulate the detached entities. + */ + void DetachAllEntitiesInHierarchy(const AZStd::function)>& callback); + void RemoveNestedEntities(const AZStd::function&)>& filter); void Reset(); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 690d408007..189cb9d161 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -336,7 +336,7 @@ namespace AzToolsFramework { // Load the template from the file templateId = m_prefabLoaderInterface->LoadTemplateFromFile(filePath); - AZ_Assert(templateId != InvalidTemplateId, "Template with source path %s couldn't be loaded correctly.", filePath); + AZ_Assert(templateId != InvalidTemplateId, "Template with source path %.*s couldn't be loaded correctly.", AZ_STRING_ARG(filePath)); } const PrefabDom& templateDom = m_prefabSystemComponentInterface->FindTemplateDom(templateId); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Spawnable/SpawnableUtils.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Spawnable/SpawnableUtils.cpp index 3c91f99b05..241d2a3bd5 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Spawnable/SpawnableUtils.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Spawnable/SpawnableUtils.cpp @@ -38,11 +38,7 @@ namespace AzToolsFramework::Prefab::SpawnableUtils // going to be used to create clones of the entities. { AzFramework::Spawnable::EntityList& entities = spawnable.GetEntities(); - if (instance.HasContainerEntity()) - { - entities.emplace_back(AZStd::move(instance.DetachContainerEntity())); - } - instance.DetachNestedEntities( + instance.DetachAllEntitiesInHierarchy( [&entities](AZStd::unique_ptr entity) { entities.emplace_back(AZStd::move(entity)); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp index 3e13e6226b..bcbe98c3a7 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/TransformComponent.cpp @@ -1206,7 +1206,7 @@ namespace AzToolsFramework Attribute(AZ::Edit::Attributes::SliceFlags, AZ::Edit::SliceFlags::NotPushableOnSliceRoot)-> Attribute(AZ::Edit::Attributes::ReadOnly, &EditorTransform::m_locked)-> DataElement(AZ::Edit::UIHandlers::Default, &EditorTransform::m_rotate, "Rotate", "Local Rotation (Relative to parent) in degrees.")-> - Attribute(AZ::Edit::Attributes::Step, 0.1f)-> + Attribute(AZ::Edit::Attributes::Step, 1.0f)-> Attribute(AZ::Edit::Attributes::Suffix, " deg")-> Attribute(AZ::Edit::Attributes::ReadOnly, &EditorTransform::m_locked)-> Attribute(AZ::Edit::Attributes::SliceFlags, AZ::Edit::SliceFlags::NotPushableOnSliceRoot)-> diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp index 8293614525..d569d266ab 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -544,8 +545,7 @@ namespace AzToolsFramework QMenu* contextMenu = new QMenu(this); // Populate global context menu. - EBUS_EVENT(EditorEvents::Bus, - PopulateEditorGlobalContextMenu, + AzToolsFramework::EditorContextMenuBus::Broadcast(&AzToolsFramework::EditorContextMenuEvents::PopulateEditorGlobalContextMenu, contextMenu, AZ::Vector2::CreateZero(), EditorEvents::eECMF_HIDE_ENTITY_CREATION | EditorEvents::eECMF_USE_VIEWPORT_CENTER); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp index 9d01911532..77918565e4 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp @@ -119,7 +119,7 @@ namespace AzToolsFramework return "Prefabs"; } - void PrefabIntegrationManager::PopulateEditorGlobalContextMenu(QMenu* menu) const + void PrefabIntegrationManager::PopulateEditorGlobalContextMenu(QMenu* menu, [[maybe_unused]] const AZ::Vector2& point, [[maybe_unused]] int flags) { AzToolsFramework::EntityIdList selectedEntities; AzToolsFramework::ToolsApplicationRequestBus::BroadcastResult( diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h index 69ec3013cc..a3a9bc3741 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h @@ -65,7 +65,7 @@ namespace AzToolsFramework // EditorContextMenuBus... int GetMenuPosition() const override; AZStd::string GetMenuIdentifier() const override; - void PopulateEditorGlobalContextMenu(QMenu* menu) const override; + void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) override; // EntityOutlinerSourceDropHandlingBus... void HandleSourceFileType(AZStd::string_view sourceFilePath, AZ::EntityId parentId, AZ::Vector3 position) const override; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp index 169a90497b..e8be4be0a2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.cpp @@ -1130,6 +1130,16 @@ namespace AzToolsFramework m_browseEdit->setAttachedButtonIcon(icon); } + void PropertyAssetCtrl::SetBrowseButtonEnabled(bool enabled) + { + m_browseEdit->setEnabled(enabled); + } + + void PropertyAssetCtrl::SetBrowseButtonVisible(bool visible) + { + m_browseEdit->setVisible(visible); + } + const QModelIndex PropertyAssetCtrl::GetSourceIndex(const QModelIndex& index) { if (!index.isValid()) @@ -1360,6 +1370,22 @@ namespace AzToolsFramework GUI->SetBrowseButtonIcon(QIcon(iconPath.c_str())); } } + else if (attrib == AZ_CRC_CE("BrowseButtonEnabled")) + { + bool enabled = true; + if (attrValue->Read(enabled)) + { + GUI->SetBrowseButtonEnabled(enabled); + } + } + else if (attrib == AZ_CRC_CE("BrowseButtonVisible")) + { + bool visible = true; + if (attrValue->Read(visible)) + { + GUI->SetBrowseButtonVisible(visible); + } + } else if (attrib == AZ_CRC_CE("Thumbnail")) { bool showThumbnail = false; @@ -1447,6 +1473,49 @@ namespace AzToolsFramework GUI->SetBrowseButtonIcon(QIcon(iconPath.c_str())); } } + else if (attrib == AZ_CRC("EditCallback", 0xb74f2ee1)) + { + PropertyAssetCtrl::EditCallbackType* func = azdynamic_cast(attrValue->GetAttribute()); + if (func) + { + GUI->SetEditButtonVisible(true); + GUI->SetEditNotifyCallback(func); + } + else + { + GUI->SetEditNotifyCallback(nullptr); + } + } + else if (attrib == AZ_CRC("EditButton", 0x898c35dc)) + { + GUI->SetEditButtonVisible(true); + + AZStd::string iconPath; + attrValue->Read(iconPath); + + if (!iconPath.empty()) + { + QString path(iconPath.c_str()); + + if (!QFile::exists(path)) + { + AZ::IO::FixedMaxPathString engineRoot = AZ::Utils::GetEnginePath(); + QDir engineDir = !engineRoot.empty() ? QDir(QString(engineRoot.c_str())) : QDir::current(); + + path = engineDir.absoluteFilePath(iconPath.c_str()); + } + + GUI->SetEditButtonIcon(QIcon(path)); + } + } + else if (attrib == AZ_CRC("EditDescription", 0x9b52634a)) + { + AZStd::string buttonTooltip; + if (attrValue->Read(buttonTooltip)) + { + GUI->SetEditButtonTooltip(tr(buttonTooltip.c_str())); + } + } } void SimpleAssetPropertyHandlerDefault::WriteGUIValuesIntoProperty(size_t index, PropertyAssetCtrl* GUI, property_t& instance, InstanceDataNode* node) @@ -1476,6 +1545,7 @@ namespace AzToolsFramework // Set the hint in case the asset is not able to be found by assetId GUI->SetCurrentAssetHint(instance.GetAssetPath()); GUI->SetSelectedAssetID(assetId, instance.GetAssetType()); + GUI->SetEditNotifyTarget(node->GetParent()->GetInstance(0)); GUI->blockSignals(false); return false; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx index 5a6310eb35..fc52a1a9c9 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/PropertyAssetCtrl.hxx @@ -208,6 +208,8 @@ namespace AzToolsFramework void SetEditButtonIcon(const QIcon& icon); void SetEditButtonTooltip(QString tooltip); void SetBrowseButtonIcon(const QIcon& icon); + void SetBrowseButtonEnabled(bool enabled); + void SetBrowseButtonVisible(bool visible); void SetClearButtonEnabled(bool enable); void SetClearButtonVisible(bool visible); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ActionBus.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ActionBus.h index 7eaf3da37c..fa43eb422d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ActionBus.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/ActionBus.h @@ -188,7 +188,7 @@ namespace AzToolsFramework virtual void AddEditMenuAction(QAction* action) = 0; /// Add an action to the Editor menu. - virtual void AddMenuAction(AZStd::string_view categoryId, QAction* action) = 0; + virtual void AddMenuAction(AZStd::string_view categoryId, QAction* action, bool addToToolsToolbar) = 0; /// (Re)populate the default EditMenu. /// Restore the EditMenu to its default state (the options available when first opening a level). diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/EditorContextMenu.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/EditorContextMenu.cpp index 308f0f074f..4521f45783 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/EditorContextMenu.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Viewport/EditorContextMenu.cpp @@ -13,6 +13,7 @@ #include "EditorContextMenu.h" #include "AzToolsFramework/Viewport/ViewportMessages.h" +#include "Editor/EditorContextMenuBus.h" namespace AzToolsFramework { @@ -55,8 +56,7 @@ namespace AzToolsFramework // Populate global context menu. const int contextMenuFlag = 0; - EditorEvents::Bus::BroadcastReverse( - &EditorEvents::PopulateEditorGlobalContextMenu, contextMenu.m_menu.data(), + AzToolsFramework::EditorContextMenuBus::Broadcast(&AzToolsFramework::EditorContextMenuEvents::PopulateEditorGlobalContextMenu, contextMenu.m_menu.data(), AzFramework::Vector2FromScreenPoint(mouseInteraction.m_mouseInteraction.m_mousePick.m_screenCoordinates), contextMenuFlag); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp index 75bb30130d..e94b3457fa 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.cpp @@ -1025,6 +1025,7 @@ namespace AzToolsFramework EditorEntityVisibilityNotificationBus::Router::BusRouterConnect(); EditorEntityLockComponentNotificationBus::Router::BusRouterConnect(); EditorManipulatorCommandUndoRedoRequestBus::Handler::BusConnect(entityContextId); + EditorContextMenuBus::Handler::BusConnect(); CreateTransformModeSelectionCluster(); CreateSpaceSelectionCluster(); @@ -1045,6 +1046,7 @@ namespace AzToolsFramework m_pivotOverrideFrame.Reset(); + EditorContextMenuBus::Handler::BusConnect(); EditorManipulatorCommandUndoRedoRequestBus::Handler::BusDisconnect(); EditorEntityLockComponentNotificationBus::Router::BusRouterDisconnect(); EditorEntityVisibilityNotificationBus::Router::BusRouterDisconnect(); @@ -3126,15 +3128,25 @@ namespace AzToolsFramework } } - void EditorTransformComponentSelection::PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& /*point*/, const int /*flags*/) + int EditorTransformComponentSelection::GetMenuPosition() const { - QAction* action = menu->addAction(QObject::tr(s_togglePivotTitleRightClick)); - QObject::connect( - action, &QAction::triggered, action, - [this]() - { - ToggleCenterPivotSelection(); - }); + return aznumeric_cast(EditorContextMenuOrdering::BOTTOM); + } + + AZStd::string EditorTransformComponentSelection::GetMenuIdentifier() const + { + return "Transform Component"; + } + + void EditorTransformComponentSelection::PopulateEditorGlobalContextMenu(QMenu* menu, [[maybe_unused]] const AZ::Vector2& point, [[maybe_unused]] int flags) + { + QAction* action = menu->addAction(QObject::tr(s_togglePivotTitleRightClick)); + QObject::connect( + action, &QAction::triggered, action, + [this]() + { + ToggleCenterPivotSelection(); + }); } void EditorTransformComponentSelection::BeforeEntitySelectionChanged() diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h index 2ec7fa2489..1b52911978 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ViewportSelection/EditorTransformComponentSelection.h @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -126,6 +127,7 @@ namespace AzToolsFramework //! Provide a suite of functionality for manipulating entities, primarily through their TransformComponent. class EditorTransformComponentSelection : public ViewportInteraction::ViewportSelectionRequests + , public EditorContextMenuBus::Handler , private EditorEventsBus::Handler , private EditorTransformComponentSelectionRequestBus::Handler , private ToolsApplicationNotificationBus::Handler @@ -238,8 +240,12 @@ namespace AzToolsFramework void UndoRedoEntityManipulatorCommand( AZ::u8 pivotOverride, const AZ::Transform& transform, AZ::EntityId entityId) override; + // EditorContextMenuBus... + void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2 & point, int flags) override; + int GetMenuPosition() const override; + AZStd::string GetMenuIdentifier() const override; + // EditorEventsBus ... - void PopulateEditorGlobalContextMenu(QMenu *menu, const AZ::Vector2& point, int flags) override; void OnEscape() override; // ToolsApplicationNotificationBus ... diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableCreateTests.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableCreateTests.cpp index af178ec7a4..14bd977318 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableCreateTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableCreateTests.cpp @@ -71,24 +71,29 @@ namespace UnitTest m_prefabSystemComponent->CreatePrefab({ entitiesCreated[0] }, {}, "test/path1")); ASSERT_TRUE(firstInstance); + ASSERT_TRUE(firstInstance->HasContainerEntity()); + expectedEntityNameSet.insert(firstInstance->GetContainerEntity()->get().GetName()); + AZStd::unique_ptr secondInstance( m_prefabSystemComponent->CreatePrefab({ entitiesCreated[1] }, MakeInstanceList(AZStd::move(firstInstance)), "test/path2")); ASSERT_TRUE(secondInstance); + ASSERT_TRUE(secondInstance->HasContainerEntity()); + expectedEntityNameSet.insert(secondInstance->GetContainerEntity()->get().GetName()); + AZStd::unique_ptr thirdInstance( m_prefabSystemComponent->CreatePrefab({ entitiesCreated[2] }, MakeInstanceList(AZStd::move(secondInstance)), "test/path3")); ASSERT_TRUE(thirdInstance); ASSERT_TRUE(thirdInstance->HasContainerEntity()); - auto& containerEntity = thirdInstance->GetContainerEntity()->get(); - expectedEntityNameSet.insert(containerEntity.GetName()); + expectedEntityNameSet.insert(thirdInstance->GetContainerEntity()->get().GetName()); //Create Spawnable auto& prefabDom = m_prefabSystemComponent->FindTemplateDom(thirdInstance->GetTemplateId()); AzFramework::Spawnable spawnable; AzToolsFramework::Prefab::SpawnableUtils::CreateSpawnable(spawnable, prefabDom); - EXPECT_EQ(spawnable.GetEntities().size() - 1, normalEntityCount); // 1 for container entity + EXPECT_EQ(spawnable.GetEntities().size(), normalEntityCount + 3); // +1 for each container entity const auto& spawnableEntities = spawnable.GetEntities(); AZStd::unordered_set actualEntityNameSet; @@ -97,6 +102,6 @@ namespace UnitTest actualEntityNameSet.insert(spawnableEntity->GetName()); } - EXPECT_EQ(expectedEntityNameSet, actualEntityNameSet); + EXPECT_EQ(actualEntityNameSet, expectedEntityNameSet); } } diff --git a/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableRemoveEditorInfoTestFixture.cpp b/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableRemoveEditorInfoTestFixture.cpp index 152d09e9b7..03ce52cfd0 100644 --- a/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableRemoveEditorInfoTestFixture.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Prefab/SpawnableRemoveEditorInfoTestFixture.cpp @@ -213,7 +213,7 @@ namespace UnitTest AZStd::unique_ptr convertedInstance(aznew Instance()); ASSERT_TRUE(AzToolsFramework::Prefab::PrefabDomUtils::LoadInstanceFromPrefabDom(*convertedInstance, m_prefabDom)); - convertedInstance->DetachNestedEntities( + convertedInstance->DetachAllEntitiesInHierarchy( [this](AZStd::unique_ptr entity) { m_runtimeEntities.emplace_back(entity.release()); diff --git a/Code/LauncherUnified/launcher_generator.cmake b/Code/LauncherUnified/launcher_generator.cmake index 2f4c8a8b74..36cd3c5899 100644 --- a/Code/LauncherUnified/launcher_generator.cmake +++ b/Code/LauncherUnified/launcher_generator.cmake @@ -126,6 +126,10 @@ foreach(project_name project_path IN ZIP_LISTS LY_PROJECTS_TARGET_NAME LY_PROJEC FOLDER ${project_name} ) + if(LY_DEFAULT_PROJECT_PATH) + set_property(TARGET ${project_name}.GameLauncher APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${LY_DEFAULT_PROJECT_PATH}\"") + endif() + ################################################################################ # Server ################################################################################ @@ -166,6 +170,10 @@ foreach(project_name project_path IN ZIP_LISTS LY_PROJECTS_TARGET_NAME LY_PROJEC PROPERTIES FOLDER ${project_name} ) + + if(LY_DEFAULT_PROJECT_PATH) + set_property(TARGET ${project_name}.ServerLauncher APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${LY_DEFAULT_PROJECT_PATH}\"") + endif() endif() endif() diff --git a/Code/Sandbox/Editor/AssetEditor/AssetEditorWindow.cpp b/Code/Sandbox/Editor/AssetEditor/AssetEditorWindow.cpp index 53e2884943..9f14e471a3 100644 --- a/Code/Sandbox/Editor/AssetEditor/AssetEditorWindow.cpp +++ b/Code/Sandbox/Editor/AssetEditor/AssetEditorWindow.cpp @@ -117,6 +117,8 @@ void AssetEditorWindow::RegisterViewClass() { AzToolsFramework::ViewPaneOptions options; options.preferedDockingArea = Qt::LeftDockWidgetArea; + options.showOnToolsToolbar = true; + options.toolbarIcon = ":/Menu/asset_editor.svg"; AzToolsFramework::RegisterViewPane(LyViewPane::AssetEditor, LyViewPane::CategoryTools, options); } diff --git a/Code/Sandbox/Editor/CMakeLists.txt b/Code/Sandbox/Editor/CMakeLists.txt index 58d5e86a2f..e1fce97067 100644 --- a/Code/Sandbox/Editor/CMakeLists.txt +++ b/Code/Sandbox/Editor/CMakeLists.txt @@ -13,8 +13,6 @@ if(NOT PAL_TRAIT_BUILD_HOST_TOOLS) return() endif() -include(${CMAKE_CURRENT_SOURCE_DIR}/Platform/${PAL_PLATFORM_NAME}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) - ly_add_target( NAME EditorCore SHARED NAMESPACE Legacy @@ -161,7 +159,7 @@ ly_add_source_properties( # Editor ################################################################################ ly_add_target( - NAME Editor ${PAL_TRAIT_BUILD_EDITOR_APPLICATION_TYPE} # Mac Editor is a bare executable on Atom until we can fix packaging of the shader compilers. DO NOT MERGE BACK TO MAINLINE + NAME Editor APPLICATION NAMESPACE Legacy AUTORCC FILES_CMAKE diff --git a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp index 39c7ae43fd..ebc688f9da 100644 --- a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp +++ b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp @@ -1292,7 +1292,7 @@ void LevelEditorMenuHandler::AddEditMenuAction(QAction* action) } } -void LevelEditorMenuHandler::AddMenuAction(AZStd::string_view categoryId, QAction* action) +void LevelEditorMenuHandler::AddMenuAction(AZStd::string_view categoryId, QAction* action, bool addToToolsToolbar) { auto menuWrapper = m_actionManager->FindMenu(categoryId.data()); if (menuWrapper.isNull()) @@ -1301,6 +1301,11 @@ void LevelEditorMenuHandler::AddMenuAction(AZStd::string_view categoryId, QActio return; } menuWrapper.Get()->addAction(action); + + if (addToToolsToolbar) + { + m_mainWindow->GetToolbarManager()->AddButtonToEditToolbar(action); + } } void LevelEditorMenuHandler::RestoreEditMenuToDefault() diff --git a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.h b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.h index bad689ae67..aaa2c08622 100644 --- a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.h +++ b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.h @@ -98,7 +98,7 @@ private: // EditorMenuRequestBus void AddEditMenuAction(QAction* action) override; - void AddMenuAction(AZStd::string_view categoryId, QAction* action) override; + void AddMenuAction(AZStd::string_view categoryId, QAction* action, bool addToToolsToolbar) override; void RestoreEditMenuToDefault() override; MainWindow* m_mainWindow; diff --git a/Code/Sandbox/Editor/EditorViewportWidget.cpp b/Code/Sandbox/Editor/EditorViewportWidget.cpp index bc8c8bea0b..5bdd7a0d03 100644 --- a/Code/Sandbox/Editor/EditorViewportWidget.cpp +++ b/Code/Sandbox/Editor/EditorViewportWidget.cpp @@ -2664,6 +2664,18 @@ bool EditorViewportWidget::GetActiveCameraPosition(AZ::Vector3& cameraPos) return false; } +bool EditorViewportWidget::GetActiveCameraState(AzFramework::CameraState& cameraState) +{ + if (m_pPrimaryViewport == this) + { + cameraState = GetCameraState(); + + return true; + } + + return false; +} + void EditorViewportWidget::OnStartPlayInEditor() { if (m_viewEntityId.IsValid()) diff --git a/Code/Sandbox/Editor/EditorViewportWidget.h b/Code/Sandbox/Editor/EditorViewportWidget.h index 4062a3c801..5d6f06c9ae 100644 --- a/Code/Sandbox/Editor/EditorViewportWidget.h +++ b/Code/Sandbox/Editor/EditorViewportWidget.h @@ -184,6 +184,7 @@ public: void SetViewAndMovementLockFromEntityPerspective(const AZ::EntityId& entityId, bool lockCameraMovement) override; AZ::EntityId GetCurrentViewEntityId() override { return m_viewEntityId; } bool GetActiveCameraPosition(AZ::Vector3& cameraPos) override; + bool GetActiveCameraState(AzFramework::CameraState& cameraState) override; // AzToolsFramework::EditorEntityContextNotificationBus (handler moved to cpp to resolve link issues in unity builds) virtual void OnStartPlayInEditor(); diff --git a/Code/Sandbox/Editor/GameEngine.cpp b/Code/Sandbox/Editor/GameEngine.cpp index 24e9577fdf..4372ffb62f 100644 --- a/Code/Sandbox/Editor/GameEngine.cpp +++ b/Code/Sandbox/Editor/GameEngine.cpp @@ -593,6 +593,8 @@ void CGameEngine::SwitchToInGame() &AzFramework::InputSystemCursorRequests::SetSystemCursorState, AzFramework::SystemCursorState::ConstrainedAndHidden); } + + Log("Entered game mode"); } void CGameEngine::SwitchToInEditor() @@ -647,6 +649,8 @@ void CGameEngine::SwitchToInEditor() AzFramework::InputSystemCursorRequestBus::Event(AzFramework::InputDeviceMouse::Id, &AzFramework::InputSystemCursorRequests::SetSystemCursorState, AzFramework::SystemCursorState::UnconstrainedAndVisible); + + Log("Exited game mode"); } void CGameEngine::HandleQuitRequest(IConsoleCmdArgs* /*args*/) diff --git a/Code/Sandbox/Editor/MainWindow.cpp b/Code/Sandbox/Editor/MainWindow.cpp index 3753c29064..39a98236c7 100644 --- a/Code/Sandbox/Editor/MainWindow.cpp +++ b/Code/Sandbox/Editor/MainWindow.cpp @@ -833,13 +833,6 @@ void MainWindow::InitActions() .Connect(&QAction::triggered, []() { SandboxEditor::SetAngleSnapping(!SandboxEditor::AngleSnappingEnabled()); }); // Display actions - am->AddAction(ID_WIREFRAME, tr("&Wireframe")) - .SetShortcut(tr("F3")) - .SetToolTip(tr("Wireframe (F3)")) - .SetCheckable(true) - .SetStatusTip(tr("Render in Wireframe Mode.")) - .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateWireframe); - am->AddAction(ID_SWITCHCAMERA_DEFAULTCAMERA, tr("Default Camera")).SetCheckable(true) .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateSwitchToDefaultCamera); am->AddAction(ID_SWITCHCAMERA_SEQUENCECAMERA, tr("Sequence Camera")).SetCheckable(true) diff --git a/Code/Sandbox/Editor/Objects/EntityObject.cpp b/Code/Sandbox/Editor/Objects/EntityObject.cpp index 17e9fdda5c..b4dbe0901e 100644 --- a/Code/Sandbox/Editor/Objects/EntityObject.cpp +++ b/Code/Sandbox/Editor/Objects/EntityObject.cpp @@ -1277,7 +1277,6 @@ void CEntityObject::OnEvent(ObjectEvent event) break; } default: - AZ_TracePrintf("CEntityObject", "Unhandled object event: %d", event); break; } } diff --git a/Code/Sandbox/Editor/Platform/Linux/PAL_linux.cmake b/Code/Sandbox/Editor/Platform/Linux/PAL_linux.cmake deleted file mode 100644 index 5181f4afb7..0000000000 --- a/Code/Sandbox/Editor/Platform/Linux/PAL_linux.cmake +++ /dev/null @@ -1,13 +0,0 @@ -# -# 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. -# - -set (PAL_TRAIT_BUILD_EDITOR_APPLICATION_TYPE APPLICATION) - diff --git a/Code/Sandbox/Editor/Platform/Mac/PAL_mac.cmake b/Code/Sandbox/Editor/Platform/Mac/PAL_mac.cmake deleted file mode 100644 index 5181f4afb7..0000000000 --- a/Code/Sandbox/Editor/Platform/Mac/PAL_mac.cmake +++ /dev/null @@ -1,13 +0,0 @@ -# -# 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. -# - -set (PAL_TRAIT_BUILD_EDITOR_APPLICATION_TYPE APPLICATION) - diff --git a/Code/Sandbox/Editor/Platform/Windows/PAL_windows.cmake b/Code/Sandbox/Editor/Platform/Windows/PAL_windows.cmake deleted file mode 100644 index 5181f4afb7..0000000000 --- a/Code/Sandbox/Editor/Platform/Windows/PAL_windows.cmake +++ /dev/null @@ -1,13 +0,0 @@ -# -# 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. -# - -set (PAL_TRAIT_BUILD_EDITOR_APPLICATION_TYPE APPLICATION) - diff --git a/Code/Sandbox/Editor/RenderViewport.cpp b/Code/Sandbox/Editor/RenderViewport.cpp index 8cef9e802c..bd30bc7c79 100644 --- a/Code/Sandbox/Editor/RenderViewport.cpp +++ b/Code/Sandbox/Editor/RenderViewport.cpp @@ -49,6 +49,7 @@ // AzToolsFramework #include #include +#include #include #include #include @@ -112,20 +113,20 @@ static const char TextCantCreateCameraNoLevel[] = "Cannot create camera when no class EditorEntityNotifications : public AzToolsFramework::EditorEntityContextNotificationBus::Handler - , public AzToolsFramework::EditorEvents::Bus::Handler + , public AzToolsFramework::EditorContextMenuBus::Handler { public: EditorEntityNotifications(CRenderViewport& renderViewport) : m_renderViewport(renderViewport) { AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusConnect(); - AzToolsFramework::EditorEvents::Bus::Handler::BusConnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusConnect(); } ~EditorEntityNotifications() override { AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusDisconnect(); - AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusDisconnect(); } // AzToolsFramework::EditorEntityContextNotificationBus @@ -138,7 +139,7 @@ public: m_renderViewport.OnStopPlayInEditor(); } - // AzToolsFramework::EditorEvents::Bus + // AzToolsFramework::EditorContextMenu::Bus void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) override { m_renderViewport.PopulateEditorGlobalContextMenu(menu, point, flags); diff --git a/Code/Sandbox/Editor/RenderViewport.h b/Code/Sandbox/Editor/RenderViewport.h index b45c92b1c8..d7d362fe27 100644 --- a/Code/Sandbox/Editor/RenderViewport.h +++ b/Code/Sandbox/Editor/RenderViewport.h @@ -179,7 +179,7 @@ public: virtual void OnStartPlayInEditor(); virtual void OnStopPlayInEditor(); - // AzToolsFramework::EditorEvents::Bus (handler moved to cpp to resolve link issues in unity builds) + // AzToolsFramework::EditorContextMenu::Bus (handler moved to cpp to resolve link issues in unity builds) // We use this to determine when the viewport context menu is being displayed so we can exit move mode void PopulateEditorGlobalContextMenu(QMenu* /*menu*/, const AZ::Vector2& /*point*/, int /*flags*/); diff --git a/Code/Sandbox/Editor/TrackView/TrackViewDialog.cpp b/Code/Sandbox/Editor/TrackView/TrackViewDialog.cpp index 0179b779e8..9176520b15 100644 --- a/Code/Sandbox/Editor/TrackView/TrackViewDialog.cpp +++ b/Code/Sandbox/Editor/TrackView/TrackViewDialog.cpp @@ -116,6 +116,8 @@ void CTrackViewDialog::RegisterViewClass() AzToolsFramework::ViewPaneOptions opts; opts.shortcut = QKeySequence(Qt::Key_T); opts.isDisabledInSimMode = true; + opts.showOnToolsToolbar = true; + opts.toolbarIcon = ":/Menu/trackview_editor.svg"; AzToolsFramework::RegisterViewPane(LyViewPane::TrackView, LyViewPane::CategoryTools, opts); GetIEditor()->GetSettingsManager()->AddToolName(s_kTrackViewLayoutSection, LyViewPane::TrackView); diff --git a/Code/Sandbox/Editor/ViewportTitleDlg.cpp b/Code/Sandbox/Editor/ViewportTitleDlg.cpp index f85aa1f06d..dc4815eb6a 100644 --- a/Code/Sandbox/Editor/ViewportTitleDlg.cpp +++ b/Code/Sandbox/Editor/ViewportTitleDlg.cpp @@ -154,11 +154,6 @@ void CViewportTitleDlg::SetupCameraDropdownMenu() QAction* gotoPositionAction = new QAction("Go to position", cameraMenu); connect(gotoPositionAction, &QAction::triggered, this, &CViewportTitleDlg::OnBnClickedGotoPosition); cameraMenu->addAction(gotoPositionAction); - m_syncPlayerToCameraAction = new QAction("Sync camera to player", cameraMenu); - m_syncPlayerToCameraAction->setCheckable(true); - connect(m_syncPlayerToCameraAction, &QAction::triggered, this, &CViewportTitleDlg::OnBnClickedSyncplayer); - cameraMenu->addAction(m_syncPlayerToCameraAction); - cameraMenu->addSeparator(); auto cameraSpeedActionWidget = new QWidgetAction(cameraMenu); @@ -238,47 +233,35 @@ void CViewportTitleDlg::SetupOverflowMenu() overFlowMenu->addAction(m_enableGridSnappingAction); m_gridSizeActionWidget = new QWidgetAction(overFlowMenu); - auto gridSizeContainer = new QWidget(overFlowMenu); - auto gridSizeLabel = new QLabel(tr("Grid Size"), overFlowMenu); - m_gridSpinBox = new AzQtComponents::DoubleSpinBox(); m_gridSpinBox->setValue(SandboxEditor::GridSnappingSize()); m_gridSpinBox->setMinimum(1e-2f); + m_gridSpinBox->setToolTip(tr("Grid size")); QObject::connect( m_gridSpinBox, QOverload::of(&AzQtComponents::DoubleSpinBox::valueChanged), this, &CViewportTitleDlg::OnGridSpinBoxChanged); - QHBoxLayout* gridSizeLayout = new QHBoxLayout; - gridSizeLayout->addWidget(gridSizeLabel); - gridSizeLayout->addWidget(m_gridSpinBox); - gridSizeContainer->setLayout(gridSizeLayout); - m_gridSizeActionWidget->setDefaultWidget(gridSizeContainer); + m_gridSizeActionWidget->setDefaultWidget(m_gridSpinBox); overFlowMenu->addAction(m_gridSizeActionWidget); overFlowMenu->addSeparator(); - m_enableAngleSnappingAction = new QAction("Enable Grid Snapping", overFlowMenu); + m_enableAngleSnappingAction = new QAction("Enable Angle Snapping", overFlowMenu); connect(m_enableAngleSnappingAction, &QAction::triggered, this, &CViewportTitleDlg::OnAngleSnappingToggled); m_enableAngleSnappingAction->setCheckable(true); overFlowMenu->addAction(m_enableAngleSnappingAction); m_angleSizeActionWidget = new QWidgetAction(overFlowMenu); - auto angleSizeContainer = new QWidget(overFlowMenu); - auto angleSizeLabel = new QLabel(tr("Angle Snapping"), overFlowMenu); - m_angleSpinBox = new AzQtComponents::DoubleSpinBox(); m_angleSpinBox->setValue(SandboxEditor::AngleSnappingSize()); m_angleSpinBox->setMinimum(1e-2f); + m_angleSpinBox->setToolTip(tr("Angle Snapping")); QObject::connect( m_angleSpinBox, QOverload::of(&AzQtComponents::DoubleSpinBox::valueChanged), this, &CViewportTitleDlg::OnAngleSpinBoxChanged); - QHBoxLayout* angleSizeLayout = new QHBoxLayout; - angleSizeLayout->addWidget(angleSizeLabel); - angleSizeLayout->addWidget(m_angleSpinBox); - angleSizeContainer->setLayout(angleSizeLayout); - m_angleSizeActionWidget->setDefaultWidget(angleSizeContainer); + m_angleSizeActionWidget->setDefaultWidget(m_angleSpinBox); overFlowMenu->addAction(m_angleSizeActionWidget); m_ui->m_overflowBtn->setMenu(overFlowMenu); @@ -850,14 +833,6 @@ bool CViewportTitleDlg::eventFilter(QObject* object, QEvent* event) return QWidget::eventFilter(object, event) || consumeEvent; } -void CViewportTitleDlg::OnBnClickedSyncplayer() -{ - emit ActionTriggered(ID_GAME_SYNCPLAYER); - - bool bSyncPlayer = GetIEditor()->GetGameEngine()->IsSyncPlayerPosition(); - m_syncPlayerToCameraAction->setChecked(!bSyncPlayer); -} - void CViewportTitleDlg::OnBnClickedGotoPosition() { emit ActionTriggered(ID_DISPLAY_GOTOPOSITION); diff --git a/Code/Sandbox/Editor/ViewportTitleDlg.h b/Code/Sandbox/Editor/ViewportTitleDlg.h index dd0816082a..255354dcbb 100644 --- a/Code/Sandbox/Editor/ViewportTitleDlg.h +++ b/Code/Sandbox/Editor/ViewportTitleDlg.h @@ -115,10 +115,10 @@ protected: float m_prevMoveSpeed; // Speed combobox/lineEdit settings - double m_minSpeed = 0.1; + double m_minSpeed = 0.01; double m_maxSpeed = 100.0; - double m_speedStep = 0.1; - int m_numDecimals = 1; + double m_speedStep = 0.01; + int m_numDecimals = 3; // Speed presets float m_speedPresetValues[3] = { 0.1f, 1.0f, 10.0f }; @@ -143,7 +143,6 @@ protected: void SetFullViewportInfo(); void SetCompactViewportInfo(); - void OnBnClickedSyncplayer(); void OnBnClickedGotoPosition(); void OnBnClickedMuteAudio(); void OnBnClickedEnableVR(); @@ -174,7 +173,6 @@ protected: QAction* m_fullInformationAction = nullptr; QAction* m_compactInformationAction = nullptr; QAction* m_debugHelpersAction = nullptr; - QAction* m_syncPlayerToCameraAction = nullptr; QAction* m_audioMuteAction = nullptr; QAction* m_enableVRAction = nullptr; QAction* m_enableGridSnappingAction = nullptr; diff --git a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp index 694714cc6e..3b04fc70f8 100644 --- a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp +++ b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.cpp @@ -167,7 +167,7 @@ void SandboxIntegrationManager::Setup() AzToolsFramework::ToolsApplicationEvents::Bus::Handler::BusConnect(); AzToolsFramework::EditorRequests::Bus::Handler::BusConnect(); AzToolsFramework::EditorWindowRequests::Bus::Handler::BusConnect(); - AzToolsFramework::EditorEvents::Bus::Handler::BusConnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusConnect(); AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusConnect(); AzToolsFramework::SliceEditorEntityOwnershipServiceNotificationBus::Handler::BusConnect(); @@ -384,7 +384,7 @@ void SandboxIntegrationManager::Teardown() AzFramework::DisplayContextRequestBus::Handler::BusDisconnect(); AzToolsFramework::SliceEditorEntityOwnershipServiceNotificationBus::Handler::BusDisconnect(); AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusDisconnect(); - AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusDisconnect(); AzToolsFramework::EditorWindowRequests::Bus::Handler::BusDisconnect(); AzToolsFramework::EditorRequests::Bus::Handler::BusDisconnect(); AzToolsFramework::ToolsApplicationEvents::Bus::Handler::BusDisconnect(); @@ -589,6 +589,11 @@ void SandboxIntegrationManager::OnSaveLevel() m_unsavedEntities.clear(); } +int SandboxIntegrationManager::GetMenuPosition() const +{ + return aznumeric_cast(AzToolsFramework::EditorContextMenuOrdering::TOP); +} + void SandboxIntegrationManager::PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) { if (!IsLevelDocumentOpen()) @@ -662,13 +667,6 @@ void SandboxIntegrationManager::PopulateEditorGlobalContextMenu(QMenu* menu, con SetupSliceContextMenu(menu); } - else - { - menu->addSeparator(); - - // Allow handlers to append menu items to the context menu - AzToolsFramework::EditorContextMenuBus::Broadcast(&AzToolsFramework::EditorContextMenuEvents::PopulateEditorGlobalContextMenu, menu); - } action = menu->addAction(QObject::tr("Duplicate")); QObject::connect(action, &QAction::triggered, action, [this] { ContextMenu_Duplicate(); }); diff --git a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.h b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.h index 6d714b67df..5cb03cc99f 100644 --- a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.h +++ b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/SandboxIntegration.h @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -97,7 +98,7 @@ class SandboxIntegrationManager : private AzToolsFramework::ToolsApplicationEvents::Bus::Handler , private AzToolsFramework::EditorRequests::Bus::Handler , private AzToolsFramework::EditorPickModeNotificationBus::Handler - , private AzToolsFramework::EditorEvents::Bus::Handler + , private AzToolsFramework::EditorContextMenuBus::Handler , private AzToolsFramework::EditorWindowRequests::Bus::Handler , private AzFramework::AssetCatalogEventBus::Handler , private AzFramework::DisplayContextRequestBus::Handler @@ -184,8 +185,9 @@ private: void OnEntityPickModeStopped() override; ////////////////////////////////////////////////////////////////////////// - // AzToolsFramework::EditorEvents::Bus::Handler overrides + // AzToolsFramework::EditorContextMenu::Bus::Handler overrides void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) override; + int GetMenuPosition() const; ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// diff --git a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp index fb8084cb6f..33126c7f3e 100644 --- a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp +++ b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/UI/Outliner/OutlinerWidget.cpp @@ -35,6 +35,7 @@ #include #include #include +#include #include #include #include @@ -530,8 +531,8 @@ void OutlinerWidget::contextMenuEvent(QContextMenuEvent* event) QMenu* contextMenu = new QMenu(this); // Populate global context menu. - EBUS_EVENT(AzToolsFramework::EditorEvents::Bus, - PopulateEditorGlobalContextMenu, + + AzToolsFramework::EditorContextMenuBus::Broadcast(&AzToolsFramework::EditorContextMenuEvents::PopulateEditorGlobalContextMenu, contextMenu, AZ::Vector2::CreateZero(), AzToolsFramework::EditorEvents::eECMF_HIDE_ENTITY_CREATION | AzToolsFramework::EditorEvents::eECMF_USE_VIEWPORT_CENTER); diff --git a/Code/Tools/AssetProcessor/AssetBuilder/CMakeLists.txt b/Code/Tools/AssetProcessor/AssetBuilder/CMakeLists.txt index 9aa81208f6..89c2554acb 100644 --- a/Code/Tools/AssetProcessor/AssetBuilder/CMakeLists.txt +++ b/Code/Tools/AssetProcessor/AssetBuilder/CMakeLists.txt @@ -28,6 +28,10 @@ ly_add_target( AZ::AzToolsFramework ) +if(LY_DEFAULT_PROJECT_PATH) + set_property(TARGET AssetBuilder APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${LY_DEFAULT_PROJECT_PATH}\"") +endif() + # Aggregates all combined AssetBuilders into a single LY_ASSET_BUILDERS #define get_property(asset_builders GLOBAL PROPERTY LY_ASSET_BUILDERS) string (REPLACE ";" "," asset_builders "${asset_builders}") diff --git a/Code/Tools/AssetProcessor/CMakeLists.txt b/Code/Tools/AssetProcessor/CMakeLists.txt index 2db888218b..5e5ede1397 100644 --- a/Code/Tools/AssetProcessor/CMakeLists.txt +++ b/Code/Tools/AssetProcessor/CMakeLists.txt @@ -259,8 +259,7 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) ly_add_googletest( NAME AZ::AssetProcessor.Tests - TEST_COMMAND $ --unittest + TEST_COMMAND $ --unittest --gtest_filter=-*.SUITE_sandbox* ) - endif() diff --git a/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp b/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp index 5029db6603..6e71897ab7 100644 --- a/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp +++ b/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_linux.cpp @@ -11,9 +11,127 @@ */ #include +#include +#include +#include + +#include +#include + + +static constexpr int s_handleToFolderMapLockTimeout = 1000; // 1 sec timeout for obtaining the handle to folder map lock +static constexpr size_t s_iNotifyMaxEntries = 1024 * 16; // Control the maximum number of entries (from inotify) that can be read at one time +static constexpr size_t s_iNotifyEventSize = sizeof(struct inotify_event); +static constexpr size_t s_iNotifyReadBufferSize = s_iNotifyMaxEntries * s_iNotifyEventSize; + struct FolderRootWatch::PlatformImplementation { - PlatformImplementation() { } + PlatformImplementation() = default; + + int m_iNotifyHandle = -1; + QMutex m_handleToFolderMapLock; + QHash m_handleToFolderMap; + + bool Initialize() + { + if (m_iNotifyHandle < 0) + { + m_iNotifyHandle = inotify_init(); + } + return (m_iNotifyHandle >= 0); + } + + void Finalize() + { + if (m_iNotifyHandle >= 0) + { + if (!m_handleToFolderMapLock.tryLock(s_handleToFolderMapLockTimeout)) + { + AZ_Error("FileWatcher", false, "Unable to obtain inotify handle lock on thread"); + return; + } + + QHashIterator iter(m_handleToFolderMap); + while (iter.hasNext()) + { + iter.next(); + int watchHandle = iter.key(); + inotify_rm_watch(m_iNotifyHandle, watchHandle); + } + m_handleToFolderMap.clear(); + m_handleToFolderMapLock.unlock(); + + ::close(m_iNotifyHandle); + m_iNotifyHandle = -1; + } + } + + void AddWatchFolder(QString folder) + { + if (m_iNotifyHandle >= 0) + { + // Clean up the path before accepting it as a watch folder + QString cleanPath = QDir::cleanPath(folder); + + // Add the folder to watch and track it + int watchHandle = inotify_add_watch(m_iNotifyHandle, + cleanPath.toUtf8().constData(), + IN_CREATE | IN_CLOSE_WRITE | IN_DELETE | IN_DELETE_SELF | IN_MODIFY); + + if (!m_handleToFolderMapLock.tryLock(s_handleToFolderMapLockTimeout)) + { + AZ_Error("FileWatcher", false, "Unable to obtain inotify handle lock on thread"); + return; + } + m_handleToFolderMap[watchHandle] = cleanPath; + m_handleToFolderMapLock.unlock(); + + // Add all the subfolders to watch and track them + QDirIterator dirIter(folder, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks); + + while (dirIter.hasNext()) + { + QString dirName = dirIter.next(); + if (dirName.endsWith("/.") || dirName.endsWith("/..")) + { + continue; + } + + int watchHandle = inotify_add_watch(m_iNotifyHandle, + dirName.toUtf8().constData(), + IN_CREATE | IN_CLOSE_WRITE | IN_DELETE | IN_DELETE_SELF | IN_MODIFY); + + if (!m_handleToFolderMapLock.tryLock(s_handleToFolderMapLockTimeout)) + { + AZ_Error("FileWatcher", false, "Unable to obtain inotify handle lock on thread"); + return; + } + m_handleToFolderMap[watchHandle] = dirName; + m_handleToFolderMapLock.unlock(); + } + } + } + + void RemoveWatchFolder(int watchHandle) + { + if (m_iNotifyHandle >= 0) + { + if (!m_handleToFolderMapLock.tryLock(s_handleToFolderMapLockTimeout)) + { + AZ_Error("FileWatcher", false, "Unable to obtain inotify handle lock on thread"); + return; + } + + QHash::iterator handleToRemove = m_handleToFolderMap.find(watchHandle); + if (handleToRemove != m_handleToFolderMap.end()) + { + inotify_rm_watch(m_iNotifyHandle, watchHandle); + m_handleToFolderMap.erase(handleToRemove); + } + + m_handleToFolderMapLock.unlock(); + } + } }; ////////////////////////////////////////////////////////////////////////////// @@ -36,17 +154,86 @@ FolderRootWatch::~FolderRootWatch() bool FolderRootWatch::Start() { - // TODO: Implement for Linux - return false; + // inotify will be used by linux to monitor file changes within directories under the root folder + if (!m_platformImpl->Initialize()) + { + return false; + } + m_platformImpl->AddWatchFolder(m_root); + + m_shutdownThreadSignal = false; + m_thread = std::thread([this]() { WatchFolderLoop(); }); + return true; } void FolderRootWatch::Stop() { - // TODO: Implement for Linux + m_shutdownThreadSignal = true; + + m_platformImpl->Finalize(); + + if (m_thread.joinable()) + { + m_thread.join(); // wait for the thread to finish + m_thread = std::thread(); //destroy + } } + void FolderRootWatch::WatchFolderLoop() { - // TODO: Implement for Linux + char eventBuffer[s_iNotifyReadBufferSize]; + while (!m_shutdownThreadSignal) + { + ssize_t bytesRead = ::read(m_platformImpl->m_iNotifyHandle, eventBuffer, s_iNotifyReadBufferSize); + if (bytesRead < 0) + { + // Break out of the loop when the notify handle was closed (outside of this thread) + break; + } + else if (bytesRead > 0) + { + for (size_t index=0; indexname; + + if (event->mask & (IN_CREATE | IN_DELETE | IN_MODIFY | IN_MOVE )) + { + QString pathStr = QString("%1%2%3").arg(m_platformImpl->m_handleToFolderMap[event->wd], QDir::separator(), event->name); + + if (event->mask & (IN_CREATE | IN_MOVED_TO)) + { + if ( event->mask & IN_ISDIR ) + { + // New Directory, add it to the watch + m_platformImpl->AddWatchFolder(pathStr); + } + else + { + ProcessNewFileEvent(pathStr); + } + } + else if (event->mask & (IN_DELETE | IN_MOVED_FROM)) + { + if (event->mask & IN_ISDIR) + { + // Directory Deleted, remove it from the watch + m_platformImpl->RemoveWatchFolder(event->wd); + } + else + { + ProcessDeleteFileEvent(pathStr); + } + } + else if ((event->mask & IN_MODIFY) && ((event->mask & IN_ISDIR) != IN_ISDIR)) + { + ProcessModifyFileEvent(pathStr); + } + } + index += s_iNotifyEventSize + event->len; + } + } + } } diff --git a/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_win.cpp b/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_win.cpp deleted file mode 100644 index fbcfe140fd..0000000000 --- a/Code/Tools/AssetProcessor/Platform/Linux/native/FileWatcher/FileWatcher_win.cpp +++ /dev/null @@ -1,134 +0,0 @@ -/* -* 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. -* -*/ - -#include - -#include - -struct FolderRootWatch::PlatformImplementation -{ - PlatformImplementation() : m_directoryHandle(nullptr), m_ioHandle(nullptr) { } - HANDLE m_directoryHandle; - HANDLE m_ioHandle; -}; - -////////////////////////////////////////////////////////////////////////////// -/// FolderWatchRoot -FolderRootWatch::FolderRootWatch(const QString rootFolder) - : m_root(rootFolder) - , m_shutdownThreadSignal(false) - , m_fileWatcher(nullptr) - , m_platformImpl(new PlatformImplementation()) -{ -} - -FolderRootWatch::~FolderRootWatch() -{ - // Destructor is required in here since this file contains the definition of struct PlatformImplementation - Stop(); - - delete m_platformImpl; -} - -bool FolderRootWatch::Start() -{ - m_platformImpl->m_directoryHandle = ::CreateFileW(m_root.toStdWString().data(), FILE_LIST_DIRECTORY, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, nullptr, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED, nullptr); - - if (m_platformImpl->m_directoryHandle != INVALID_HANDLE_VALUE) - { - m_platformImpl->m_ioHandle = ::CreateIoCompletionPort(m_platformImpl->m_directoryHandle, nullptr, 1, 0); - if (m_platformImpl->m_ioHandle != INVALID_HANDLE_VALUE) - { - m_shutdownThreadSignal = false; - m_thread = std::thread(std::bind(&FolderRootWatch::WatchFolderLoop, this)); - return true; - } - } - return false; -} - -void FolderRootWatch::Stop() -{ - m_shutdownThreadSignal = true; - CloseHandle(m_platformImpl->m_ioHandle); - m_platformImpl->m_ioHandle = nullptr; - - if (m_thread.joinable()) - { - m_thread.join(); // wait for the thread to finish - m_thread = std::thread(); //destroy - } - CloseHandle(m_platformImpl->m_directoryHandle); - m_platformImpl->m_directoryHandle = nullptr; -} - -void FolderRootWatch::WatchFolderLoop() -{ - FILE_NOTIFY_INFORMATION aFileNotifyInformationList[50000]; - QString path; - OVERLAPPED aOverlapped; - LPOVERLAPPED pOverlapped; - DWORD dwByteCount; - ULONG_PTR ulKey; - - while (!m_shutdownThreadSignal) - { - ::memset(aFileNotifyInformationList, 0, sizeof(aFileNotifyInformationList)); - ::memset(&aOverlapped, 0, sizeof(aOverlapped)); - - if (::ReadDirectoryChangesW(m_platformImpl->m_directoryHandle, aFileNotifyInformationList, sizeof(aFileNotifyInformationList), true, FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_ATTRIBUTES | FILE_NOTIFY_CHANGE_FILE_NAME, nullptr, &aOverlapped, nullptr)) - { - //wait for up to a second for I/O to signal - dwByteCount = 0; - if (::GetQueuedCompletionStatus(m_platformImpl->m_ioHandle, &dwByteCount, &ulKey, &pOverlapped, INFINITE)) - { - //if we are signaled to shutdown bypass - if (!m_shutdownThreadSignal && ulKey) - { - if (dwByteCount) - { - int offset = 0; - FILE_NOTIFY_INFORMATION* pFileNotifyInformation = aFileNotifyInformationList; - do - { - pFileNotifyInformation = (FILE_NOTIFY_INFORMATION*)((char*)pFileNotifyInformation + offset); - - path.clear(); - path.append(m_root); - path.append(QString::fromWCharArray(pFileNotifyInformation->FileName, pFileNotifyInformation->FileNameLength / 2)); - - QString file = QDir::toNativeSeparators(QDir::cleanPath(path)); - - switch (pFileNotifyInformation->Action) - { - case FILE_ACTION_ADDED: - case FILE_ACTION_RENAMED_NEW_NAME: - ProcessNewFileEvent(file); - break; - case FILE_ACTION_REMOVED: - case FILE_ACTION_RENAMED_OLD_NAME: - ProcessDeleteFileEvent(file); - break; - case FILE_ACTION_MODIFIED: - ProcessModifyFileEvent(file); - break; - } - - offset = pFileNotifyInformation->NextEntryOffset; - } while (offset); - } - } - } - } - } -} - diff --git a/Code/Tools/AssetProcessor/native/AssetManager/PathDependencyManager.cpp b/Code/Tools/AssetProcessor/native/AssetManager/PathDependencyManager.cpp index de8bde9b05..2345c9e285 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/PathDependencyManager.cpp +++ b/Code/Tools/AssetProcessor/native/AssetManager/PathDependencyManager.cpp @@ -445,10 +445,10 @@ namespace AssetProcessor bool isExcludedDependency = dependencyPathSearch.starts_with(ExcludedDependenciesSymbol); dependencyPathSearch = isExcludedDependency ? dependencyPathSearch.substr(1) : dependencyPathSearch; bool isExactDependency = !AzFramework::StringFunc::Replace(dependencyPathSearch, '*', '%'); - SanitizeForDatabase(dependencyPathSearch); if (cleanedupDependency.m_dependencyType == AssetBuilderSDK::ProductPathDependencyType::ProductFile) { + SanitizeForDatabase(dependencyPathSearch); AzToolsFramework::AssetDatabase::ProductDatabaseEntryContainer productInfoContainer; QString productNameWithPlatform = QString("%1%2%3").arg(platform.c_str(), AZ_CORRECT_DATABASE_SEPARATOR_STRING, dependencyPathSearch.c_str()); @@ -508,6 +508,10 @@ namespace AssetProcessor } else { + // For source assets, the casing of the input path must be maintained. Just fix up the path separators. + AZStd::replace(dependencyPathSearch.begin(), dependencyPathSearch.end(), AZ_WRONG_DATABASE_SEPARATOR, AZ_CORRECT_DATABASE_SEPARATOR); + AzFramework::StringFunc::Replace(dependencyPathSearch, AZ_DOUBLE_CORRECT_DATABASE_SEPARATOR, AZ_CORRECT_DATABASE_SEPARATOR_STRING); + // See if path matches any source files AzToolsFramework::AssetDatabase::SourceDatabaseEntryContainer sourceInfoContainer; diff --git a/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp b/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp index 49c7ef7f20..c0300b2b2a 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp +++ b/Code/Tools/AssetProcessor/native/AssetManager/SourceFileRelocator.cpp @@ -190,44 +190,55 @@ Please note that only those seed files will get updated that are active for your void SourceFileRelocator::HandleMetaDataFiles(QStringList pathMatches, QHash& sourceIndexMap, const ScanFolderInfo* scanFolderInfo, SourceFileRelocationContainer& metadataFiles, bool excludeMetaDataFiles) const { QSet metaDataFileEntries; - for (QString file : pathMatches) + + // Remove all the metadata files + if (excludeMetaDataFiles) + { + pathMatches.erase(AZStd::remove_if(pathMatches.begin(), pathMatches.end(), [this](const QString& file) + { + for (int idx = 0; idx < m_platformConfig->MetaDataFileTypesCount(); idx++) + { + const auto& [metadataType, extension] = m_platformConfig->GetMetaDataFileTypeAt(idx); + if (file.endsWith("." + metadataType, Qt::CaseInsensitive)) + { + AZ_TracePrintf(AssetProcessor::ConsoleChannel, "Metadata file %s will be ignored because --excludeMetadataFiles was specified in the command line.\n", + file.toUtf8().constData()); + return true; + } + } + return false; + }), + pathMatches.end()); + } + + for (const QString& file : pathMatches) { for (int idx = 0; idx < m_platformConfig->MetaDataFileTypesCount(); idx++) { - QPair metaInfo = m_platformConfig->GetMetaDataFileTypeAt(idx); - if (file.endsWith("." + metaInfo.first, Qt::CaseInsensitive)) + const auto& [metadataType, extension] = m_platformConfig->GetMetaDataFileTypeAt(idx); + if (file.endsWith("." + metadataType, Qt::CaseInsensitive)) { - //it is a metadata file - if (excludeMetaDataFiles) + const QString normalizedFilePath = AssetUtilities::NormalizeFilePath(file); + if (!metaDataFileEntries.contains(normalizedFilePath)) { - AZ_TracePrintf(AssetProcessor::ConsoleChannel, "Metadata file %s will be ignored because --excludeMetadataFiles was specified in the command line.\n", - file.toUtf8().constData()); - break; // don't check it against other metafile entries, we've already ascertained its a metafile. - } - else - { - QString normalizedFilePath = AssetUtilities::NormalizeFilePath(file); - if (metaDataFileEntries.find(normalizedFilePath) == metaDataFileEntries.end()) - { - SourceFileRelocationInfo metaDataFile(file.toUtf8().data(), scanFolderInfo); - metaDataFile.m_isMetaDataFile = true; - metadataFiles.emplace_back(metaDataFile); - metaDataFileEntries.insert(normalizedFilePath); - } + SourceFileRelocationInfo metaDataFile(file.toUtf8().data(), scanFolderInfo); + metaDataFile.m_isMetaDataFile = true; + metadataFiles.emplace_back(metaDataFile); + metaDataFileEntries.insert(normalizedFilePath); } } - else if (!excludeMetaDataFiles && (file.endsWith("." + metaInfo.second, Qt::CaseInsensitive) || metaInfo.second.isEmpty())) + else if (!excludeMetaDataFiles && (file.endsWith("." + extension, Qt::CaseInsensitive) || extension.isEmpty())) { // if we are here it implies that a metadata file might exists for this source file, // add metadata file only if it exists and is not added already AZStd::string metadataFilePath(file.toUtf8().data()); - if (metaInfo.second.isEmpty()) + if (extension.isEmpty()) { - metadataFilePath.append(AZStd::string::format(".%s", metaInfo.first.toUtf8().data())); + metadataFilePath.append(AZStd::string::format(".%s", metadataType.toUtf8().data())); } else { - AZ::StringFunc::Path::ReplaceExtension(metadataFilePath, metaInfo.first.toUtf8().data()); + AZ::StringFunc::Path::ReplaceExtension(metadataFilePath, metadataType.toUtf8().data()); }; // The metadata file can have a different case than the source file, diff --git a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp index 47f79d9709..25ec36c888 100644 --- a/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp +++ b/Code/Tools/AssetProcessor/native/AssetManager/assetProcessorManager.cpp @@ -1697,7 +1697,10 @@ namespace AssetProcessor if(productFileInfo.absoluteDir().entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot).empty()) { - productFileInfo.absoluteDir().rmdir("."); + const QDir productDir = productFileInfo.absoluteDir(); + QDir parentDir = productDir; + parentDir.cdUp(); + successfullyRemoved &= parentDir.rmdir(productDir.dirName()); } if (successfullyRemoved) diff --git a/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp b/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp index 04949c82a9..8879697faa 100644 --- a/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp +++ b/Code/Tools/AssetProcessor/native/tests/AssetProcessorMessagesTests.cpp @@ -28,7 +28,7 @@ namespace AssetProcessorMessagesTests using namespace AssetProcessor; using namespace AssetBuilderSDK; - static constexpr unsigned short AssetProcessorPort = static_cast(888u); + static constexpr unsigned short AssetProcessorPort{65535u}; class AssetProcessorMessages; @@ -85,7 +85,6 @@ namespace AssetProcessorMessagesTests public: void SetUp() override { -#if !AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS AssetUtilities::ResetGameName(); m_temporarySourceDir = QDir(m_temporaryDir.path()); @@ -166,12 +165,10 @@ namespace AssetProcessorMessagesTests }); -#endif // !AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS } void TearDown() override { -#if !AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS QEventLoop eventLoop; QObject::connect(m_batchApplicationManager->m_connectionManager, &ConnectionManager::ReadyToQuit, &eventLoop, &QEventLoop::quit); @@ -182,7 +179,6 @@ namespace AssetProcessorMessagesTests m_assetSystemComponent->Deactivate(); m_batchApplicationManager->Destroy(); -#endif // !AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS } void RunNetworkRequest(AZStd::function func) const @@ -207,6 +203,7 @@ namespace AssetProcessorMessagesTests thread.join(); } + protected: MockAssetRequestHandler* m_assetRequestHandler{}; // Not owned, AP will delete this pointer @@ -226,11 +223,7 @@ namespace AssetProcessorMessagesTests AZStd::unique_ptr m_response; }; -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - TEST_F(AssetProcessorMessages, DISABLED_All) -#else TEST_F(AssetProcessorMessages, All) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { // Test that we can successfully send network messages and have them arrive for processing // For messages that have a response, it also verifies the response comes back @@ -311,11 +304,7 @@ namespace AssetProcessorMessagesTests }); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - TEST_F(AssetProcessorMessages, DISABLED_GetUnresolvedProductReferences_Succeeds) -#else TEST_F(AssetProcessorMessages, GetUnresolvedProductReferences_Succeeds) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { using namespace AzToolsFramework::AssetDatabase; diff --git a/Code/Tools/AssetProcessor/native/tests/SourceFileRelocatorTests.cpp b/Code/Tools/AssetProcessor/native/tests/SourceFileRelocatorTests.cpp index 2731aa6c5a..e9f18a442a 100644 --- a/Code/Tools/AssetProcessor/native/tests/SourceFileRelocatorTests.cpp +++ b/Code/Tools/AssetProcessor/native/tests/SourceFileRelocatorTests.cpp @@ -112,7 +112,6 @@ namespace UnitTests SourceDatabaseEntry sourceFile8 = { m_data->m_scanFolder1.m_scanFolderID, "test.txt", AZ::Uuid::CreateRandom(), "AnalysisFingerprint" }; SourceDatabaseEntry sourceFile9 = { m_data->m_scanFolder1.m_scanFolderID, "duplicate/folder/file1.tif", AZ::Uuid::CreateRandom(), "AnalysisFingerprint" }; SourceDatabaseEntry sourceFile10 = { m_data->m_scanFolder1.m_scanFolderID, "folder/file.foo", AZ::Uuid::CreateRandom(), "AnalysisFingerprint" }; - SourceDatabaseEntry sourceFile11 = { m_data->m_scanFolder1.m_scanFolderID, "testfolder/file.foo", AZ::Uuid::CreateRandom(), "AnalysisFingerprint" }; ASSERT_TRUE(m_data->m_connection->SetSource(sourceFile1)); ASSERT_TRUE(m_data->m_connection->SetSource(sourceFile2)); ASSERT_TRUE(m_data->m_connection->SetSource(sourceFile3)); @@ -123,7 +122,6 @@ namespace UnitTests ASSERT_TRUE(m_data->m_connection->SetSource(sourceFile8)); ASSERT_TRUE(m_data->m_connection->SetSource(sourceFile9)); ASSERT_TRUE(m_data->m_connection->SetSource(sourceFile10)); - ASSERT_TRUE(m_data->m_connection->SetSource(sourceFile11)); SourceFileDependencyEntry dependency1 = { AZ::Uuid::CreateRandom(), "subfolder1/somefile.tif", "subfolder1/otherfile.tif", SourceFileDependencyEntry::TypeOfDependency::DEP_SourceToSource, false }; SourceFileDependencyEntry dependency2 = { AZ::Uuid::CreateRandom(), "subfolder1/otherfile.tif", "otherfile.tif", SourceFileDependencyEntry::TypeOfDependency::DEP_JobToJob, false }; @@ -176,8 +174,6 @@ namespace UnitTests ASSERT_TRUE(UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("dev/dummy/foo.metadataextension"))); ASSERT_TRUE(UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("dev/folder/file.foo"))); ASSERT_TRUE(UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("dev/folder/file.bar"))); - ASSERT_TRUE(UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("dev/testfolder/file.foo"))); - ASSERT_TRUE(UnitTestUtils::CreateDummyFile(tempPath.absoluteFilePath("dev/testfolder/File.bar"))); if (AZ::IO::FileIOBase::GetInstance() == nullptr) { @@ -487,20 +483,12 @@ namespace UnitTests TestGetSourcesByPath("dev/", { }, false); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - TEST_F(SourceFileRelocatorTest, DISABLED_GetSources_MultipleScanFolders_Fails) -#else TEST_F(SourceFileRelocatorTest, GetSources_MultipleScanFolders_Fails) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { TestGetSourcesByPath("*", { }, false); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - TEST_F(SourceFileRelocatorTest, DISABLED_GetSources_PartialPath_FailsWithNoResults) -#else TEST_F(SourceFileRelocatorTest, GetSources_PartialPath_FailsWithNoResults) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { TestGetSourcesByPath("older/*", { }, false); } @@ -547,18 +535,6 @@ namespace UnitTests TestGetSourcesByPath(filePath.toUtf8().constData(), { "folder/file.foo" }, true, true); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - TEST_F(SourceFileRelocatorTest, DISABLED_GetSources_HaveMetadataDifferentFileCase_AbsolutePath_Succeeds) -#else - TEST_F(SourceFileRelocatorTest, GetSources_HaveMetadataDifferentFileCase_AbsolutePath_Succeeds) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - { - QDir tempPath(m_tempDir.path()); - - auto filePath = QDir(tempPath.absoluteFilePath(m_data->m_scanFolder1.m_scanFolder.c_str())).absoluteFilePath("testfolder/file.foo"); - TestGetSourcesByPath(filePath.toUtf8().constData(), { "testfolder/file.foo", "testfolder/File.bar" }, true, false); - } - TEST_F(SourceFileRelocatorTest, GetMetaDataFile_SingleFileWildcard_Succeeds) { QDir tempPath(m_tempDir.path()); @@ -921,32 +897,46 @@ namespace UnitTests ASSERT_FALSE(AZ::IO::FileIOBase::GetInstance()->Exists(filePath.toUtf8().constData())); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - TEST_F(SourceFileRelocatorTest, DISABLED_Delete_Real_Readonly_Fails) -#else TEST_F(SourceFileRelocatorTest, Delete_Real_Readonly_Fails) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { + struct AutoResetDirectoryReadOnlyState + { + AutoResetDirectoryReadOnlyState(QString dirName) + : m_dirName(AZStd::move(dirName)) + { + AZ::IO::SystemFile::SetWritable(m_dirName.toUtf8().constData(), false); + } + ~AutoResetDirectoryReadOnlyState() + { + AZ::IO::SystemFile::SetWritable(m_dirName.toUtf8().constData(), true); + } + AZ_DISABLE_COPY_MOVE(AutoResetDirectoryReadOnlyState) + private: + QString m_dirName; + }; + QDir tempPath(m_tempDir.path()); auto filePath = QDir(tempPath.absoluteFilePath(m_data->m_scanFolder1.m_scanFolder.c_str())).absoluteFilePath("duplicate/file1.tif"); ASSERT_TRUE(AZ::IO::FileIOBase::GetInstance()->Exists(filePath.toUtf8().constData())); + AutoResetDirectoryReadOnlyState readOnlyResetter(QFileInfo(filePath).absoluteDir().absolutePath()); + AZ::IO::SystemFile::SetWritable(filePath.toUtf8().constData(), false); auto result = m_data->m_reporter->Delete(filePath.toUtf8().constData(), false); - ASSERT_TRUE(result.IsSuccess()); + EXPECT_TRUE(result.IsSuccess()); RelocationSuccess successResult = result.TakeValue(); - ASSERT_EQ(successResult.m_moveSuccessCount, 0); - ASSERT_EQ(successResult.m_moveFailureCount, 1); - ASSERT_EQ(successResult.m_moveTotalCount, 1); - ASSERT_EQ(successResult.m_updateTotalCount, 0); + EXPECT_EQ(successResult.m_moveSuccessCount, 0); + EXPECT_EQ(successResult.m_moveFailureCount, 1); + EXPECT_EQ(successResult.m_moveTotalCount, 1); + EXPECT_EQ(successResult.m_updateTotalCount, 0); - ASSERT_TRUE(AZ::IO::FileIOBase::GetInstance()->Exists(filePath.toUtf8().constData())); + EXPECT_TRUE(AZ::IO::FileIOBase::GetInstance()->Exists(filePath.toUtf8().constData())); } TEST_F(SourceFileRelocatorTest, Delete_Real_WithDependencies_Fails) diff --git a/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp b/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp index bd99cf7a94..6cd18d534b 100644 --- a/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp +++ b/Code/Tools/AssetProcessor/native/tests/assetmanager/AssetProcessorManagerTest.cpp @@ -30,11 +30,7 @@ public: friend class GTEST_TEST_CLASS_NAME_(MultiplatformPathDependencyTest, AssetProcessed_Impl_MultiplatformDependencies); friend class GTEST_TEST_CLASS_NAME_(MultiplatformPathDependencyTest, AssetProcessed_Impl_MultiplatformDependencies_DeferredResolution); -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - friend class GTEST_TEST_CLASS_NAME_(MultiplatformPathDependencyTest, DISABLED_AssetProcessed_Impl_MultiplatformDependencies_SourcePath); -#else friend class GTEST_TEST_CLASS_NAME_(MultiplatformPathDependencyTest, AssetProcessed_Impl_MultiplatformDependencies_SourcePath); -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS friend class GTEST_TEST_CLASS_NAME_(AssetProcessorManagerTest, DeleteFolder_SignalsDeleteOfContainedFiles); @@ -70,19 +66,11 @@ public: friend class GTEST_TEST_CLASS_NAME_(AbsolutePathProductDependencyTest, UnresolvedProductPathDependency_AssetProcessedTwice_ValidatePathDependenciesMap); friend class GTEST_TEST_CLASS_NAME_(AbsolutePathProductDependencyTest, UnresolvedSourceFileTypeProductPathDependency_DependencyHasNoProductOutput_ValidatePathDependenciesMap); -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - friend class GTEST_TEST_CLASS_NAME_(ModtimeScanningTest, DISABLED_ModtimeSkipping_FileUnchanged_WithoutModtimeSkipping); -#else friend class GTEST_TEST_CLASS_NAME_(ModtimeScanningTest, ModtimeSkipping_FileUnchanged_WithoutModtimeSkipping); -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS friend class GTEST_TEST_CLASS_NAME_(ModtimeScanningTest, ModtimeSkipping_FileUnchanged); -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS - friend class GTEST_TEST_CLASS_NAME_(ModtimeScanningTest, DISABLED_ModtimeSkipping_EnablePlatform_ShouldProcessFilesForPlatform); -#else friend class GTEST_TEST_CLASS_NAME_(ModtimeScanningTest, ModtimeSkipping_EnablePlatform_ShouldProcessFilesForPlatform); -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS friend class GTEST_TEST_CLASS_NAME_(ModtimeScanningTest, ModtimeSkipping_ModifyFile); friend class GTEST_TEST_CLASS_NAME_(ModtimeScanningTest, ModtimeSkipping_ModifyFile_AndThenRevert_ProcessesAgain); @@ -2362,11 +2350,7 @@ TEST_F(PathDependencyTest, ChangeDependencies_Existing_ResolveCorrectly) ); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS -TEST_F(PathDependencyTest, DISABLED_MixedPathDependencies_Existing_ResolveCorrectly) -#else TEST_F(PathDependencyTest, MixedPathDependencies_Existing_ResolveCorrectly) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { using namespace AssetProcessor; using namespace AssetBuilderSDK; @@ -2661,11 +2645,7 @@ TEST_F(MultiplatformPathDependencyTest, AssetProcessed_Impl_MultiplatformDepende ASSERT_NE(SearchDependencies(dependencyContainer, asset1.m_products[0]), SearchDependencies(dependencyContainer, asset1.m_products[1])); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS -TEST_F(MultiplatformPathDependencyTest, DISABLED_AssetProcessed_Impl_MultiplatformDependencies_SourcePath) -#else TEST_F(MultiplatformPathDependencyTest, AssetProcessed_Impl_MultiplatformDependencies_SourcePath) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { // One product will be pc, one will be console (order is non-deterministic) TestAsset asset1("testAsset1"); @@ -3894,7 +3874,7 @@ void ModtimeScanningTest::ProcessAssetJobs() for (const auto& processResult : m_data->m_processResults) { - auto file = QDir(processResult.m_destinationPath).absoluteFilePath(processResult.m_jobEntry.m_databaseSourceName + ".arc1"); + auto file = QDir(processResult.m_destinationPath).absoluteFilePath(processResult.m_jobEntry.m_databaseSourceName.toLower() + ".arc1"); m_data->m_productPaths.emplace( QDir(processResult.m_jobEntry.m_watchFolderPath) .absoluteFilePath(processResult.m_jobEntry.m_databaseSourceName) @@ -3943,11 +3923,11 @@ void ModtimeScanningTest::ExpectWork(int createJobs, int processJobs) { ASSERT_TRUE(BlockUntilIdle(5000)); - ASSERT_EQ(m_data->m_mockBuilderInfoHandler.m_createJobsCount, createJobs); - ASSERT_EQ(m_data->m_processResults.size(), processJobs); - ASSERT_FALSE(m_data->m_processResults[0].m_autoFail); - ASSERT_FALSE(m_data->m_processResults[1].m_autoFail); - ASSERT_EQ(m_data->m_deletedSources.size(), 0); + EXPECT_EQ(m_data->m_mockBuilderInfoHandler.m_createJobsCount, createJobs); + EXPECT_EQ(m_data->m_processResults.size(), processJobs); + EXPECT_FALSE(m_data->m_processResults[0].m_autoFail); + EXPECT_FALSE(m_data->m_processResults[1].m_autoFail); + EXPECT_EQ(m_data->m_deletedSources.size(), 0); m_isIdling = false; } @@ -3975,11 +3955,7 @@ void ModtimeScanningTest::SetFileContents(QString filePath, QString contents) file.close(); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS -TEST_F(ModtimeScanningTest, DISABLED_ModtimeSkipping_FileUnchanged_WithoutModtimeSkipping) -#else TEST_F(ModtimeScanningTest, ModtimeSkipping_FileUnchanged_WithoutModtimeSkipping) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { using namespace AzToolsFramework::AssetSystem; @@ -4008,11 +3984,7 @@ TEST_F(ModtimeScanningTest, ModtimeSkipping_FileUnchanged) ExpectNoWork(); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS -TEST_F(ModtimeScanningTest, DISABLED_ModtimeSkipping_EnablePlatform_ShouldProcessFilesForPlatform) -#else TEST_F(ModtimeScanningTest, ModtimeSkipping_EnablePlatform_ShouldProcessFilesForPlatform) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { using namespace AzToolsFramework::AssetSystem; @@ -4633,11 +4605,7 @@ TEST_F(AssetProcessorManagerTest, UpdateSourceFileDependenciesDatabase_WildcardM dependList.clear(); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS -TEST_F(AssetProcessorManagerTest, DISABLED_RemoveSource_RemoveCacheFolderIfEmpty_Ok) -#else TEST_F(AssetProcessorManagerTest, RemoveSource_RemoveCacheFolderIfEmpty_Ok) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { using namespace AssetProcessor; using namespace AssetBuilderSDK; diff --git a/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp b/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp index 9c80b267eb..4a8e1a7e1c 100644 --- a/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp +++ b/Code/Tools/AssetProcessor/native/tests/platformconfiguration/platformconfigurationtests.cpp @@ -14,6 +14,7 @@ #include "native/tests/platformconfiguration/platformconfigurationtests.h" #include +#include const char TestAppRoot[] = "@exefolder@/testdata"; const char EmptyDummyProjectName[] = "EmptyDummyProject"; @@ -238,33 +239,6 @@ TEST_F(PlatformConfigurationUnitTests_OnePCHostFixture, GetScanFolderForFile_Sub EXPECT_STREQ(info->GetDisplayName().toUtf8().constData(), "Editor ScanFolder"); } -// note that in the case of GetOverridingFile, this SHOULD return the correct case if an override is found -// because its possible to override a file with another file with different case in a different scan folder -// such a situation is supposed to be very rare, so the cost of correcting the case is mitigated. -TEST_F(PlatformConfigurationUnitTests_OnePCHostFixture, GetOverridingFile_Exists_ReturnsCorrectCase) -{ - using namespace AzToolsFramework::AssetSystem; - using namespace AssetProcessor; - - // create two scan folders, since its order dependent, the ScanFolder1 is the "winner" in tie breakers (when they both contain same file relpath) - QString scanfolder1Path = m_tempPath.filePath("scanfolder1"); - QString scanfolder2Path = m_tempPath.filePath("scanfolder2"); - QString caseSensitiveDummyFileName = m_tempPath.absoluteFilePath("scanfolder1/TestCase.tXt"); - QString differentCaseDummyFileName = m_tempPath.absoluteFilePath("scanfolder2/testcase.txt"); - UnitTestUtils::CreateDummyFile(caseSensitiveDummyFileName, QString("testcase1\n")); - UnitTestUtils::CreateDummyFile(differentCaseDummyFileName, QString("testcase2\n")); - m_config->AddScanFolder(ScanFolderInfo(scanfolder1Path, "ScanFolder1", "sf1", false, true, m_platforms), true); - m_config->AddScanFolder(ScanFolderInfo(scanfolder2Path, "ScanFolder2", "sf2", false, true, m_platforms), true); - - // Perform the test by asking it whether anyone overrides "testcase" (lowercase) in scanfolder 2. - QString overrider = m_config->GetOverridingFile("testcase.txt", scanfolder2Path); - - ASSERT_FALSE(overrider.isEmpty()); - // the result should be the real actual case of the file in scanfolder 1: - EXPECT_STREQ(overrider.toUtf8().constData(), caseSensitiveDummyFileName.toUtf8().constData()); -} - - TEST_F(PlatformConfigurationUnitTests_OnePCHostFixture, GetOverridingFile_ExistsButNotOverridden_ReturnsEmpty) { using namespace AzToolsFramework::AssetSystem; @@ -360,7 +334,7 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_RegularScanfolder) ASSERT_EQ(m_absorber.m_numErrorsAbsorbed, 0); ASSERT_EQ(config.GetScanFolderCount(), 3); // the two, and then the one that has the same data as prior but different identifier. - QString scanName = AssetUtilities::ComputeProjectPath() + " Scan Folder"; + QString scanName = AssetUtilities::ComputeProjectPath(true) + " Scan Folder"; ASSERT_EQ(config.GetScanFolderAt(0).GetDisplayName(), scanName); ASSERT_EQ(config.GetScanFolderAt(0).RecurseSubFolders(), true); ASSERT_EQ(config.GetScanFolderAt(0).GetOrder(), 0); @@ -445,15 +419,11 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_RegularExcludes) ASSERT_FALSE(config.IsFileExcluded("blahblah/Levels/blahblahhold/whatever.test")); } -#if AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS -TEST_F(PlatformConfigurationUnitTests, DISABLED_TestFailReadConfigFile_Recognizers) -#else TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Recognizers) -#endif // AZ_TRAIT_DISABLE_FAILED_ASSET_PROCESSOR_TESTS { using namespace AzToolsFramework::AssetSystem; using namespace AssetProcessor; -#if defined(AZ_PLATFORM_WINDOWS) +#if defined(AZ_PLATFORM_WINDOWS) || defined(AZ_PLATFORM_LINUX) const char* platformWhichIsNotCurrentPlatform = "mac"; #else const char* platformWhichIsNotCurrentPlatform = "pc"; @@ -502,31 +472,47 @@ TEST_F(PlatformConfigurationUnitTests, TestFailReadConfigFile_Recognizers) // the "rend" test makes sure that even if you dont specify 'params' its still there by default for all enabled platforms. // (but platforms can override it) ASSERT_TRUE(recogs.contains("rend")); - ASSERT_TRUE(recogs["rend"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform())); - ASSERT_TRUE(recogs["rend"].m_platformSpecs.contains("android")); - ASSERT_TRUE(recogs["rend"].m_platformSpecs.contains("server")); - ASSERT_FALSE(recogs["rend"].m_platformSpecs.contains(platformWhichIsNotCurrentPlatform)); // this is not an enabled platform and should not be there. - ASSERT_EQ(recogs["rend"].m_platformSpecs.size(), 3); - ASSERT_EQ(recogs["rend"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "rendererparams"); - ASSERT_EQ(recogs["rend"].m_platformSpecs["android"].m_extraRCParams, "rendererparams"); - ASSERT_EQ(recogs["rend"].m_platformSpecs["server"].m_extraRCParams, ""); // default if not specified is empty string + EXPECT_THAT( + recogs["rend"].m_platformSpecs.keys(), + testing::AllOf( + testing::UnorderedElementsAre( + QString(AzToolsFramework::AssetSystem::GetHostAssetPlatform()), + QString("android"), + QString("server") + ), + testing::Not(testing::Contains(platformWhichIsNotCurrentPlatform)) // this is not an enabled platform and should not be there. + ) + ); + EXPECT_EQ(recogs["rend"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, "rendererparams"); + EXPECT_EQ(recogs["rend"].m_platformSpecs["android"].m_extraRCParams, "rendererparams"); + EXPECT_EQ(recogs["rend"].m_platformSpecs["server"].m_extraRCParams, ""); // default if not specified is empty string ASSERT_TRUE(recogs.contains("alldefault")); - ASSERT_TRUE(recogs["alldefault"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform())); - ASSERT_TRUE(recogs["alldefault"].m_platformSpecs.contains("android")); - ASSERT_TRUE(recogs["alldefault"].m_platformSpecs.contains("server")); - ASSERT_FALSE(recogs["alldefault"].m_platformSpecs.contains(platformWhichIsNotCurrentPlatform)); // this is not an enabled platform and should not be there. - ASSERT_EQ(recogs["alldefault"].m_platformSpecs.size(), 3); - ASSERT_EQ(recogs["alldefault"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, ""); - ASSERT_EQ(recogs["alldefault"].m_platformSpecs["android"].m_extraRCParams, ""); - ASSERT_EQ(recogs["alldefault"].m_platformSpecs["server"].m_extraRCParams, ""); + EXPECT_THAT( + recogs["alldefault"].m_platformSpecs.keys(), + testing::AllOf( + testing::UnorderedElementsAre( + QString(AzToolsFramework::AssetSystem::GetHostAssetPlatform()), + QString("android"), + QString("server") + ), + testing::Not(testing::Contains(platformWhichIsNotCurrentPlatform)) // this is not an enabled platform and should not be there. + ) + ); + EXPECT_EQ(recogs["alldefault"].m_platformSpecs[AzToolsFramework::AssetSystem::GetHostAssetPlatform()].m_extraRCParams, ""); + EXPECT_EQ(recogs["alldefault"].m_platformSpecs["android"].m_extraRCParams, ""); + EXPECT_EQ(recogs["alldefault"].m_platformSpecs["server"].m_extraRCParams, ""); ASSERT_TRUE(recogs.contains("skipallbutone")); - ASSERT_FALSE(recogs["skipallbutone"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform())); - ASSERT_FALSE(recogs["skipallbutone"].m_platformSpecs.contains("android")); - ASSERT_TRUE(recogs["skipallbutone"].m_platformSpecs.contains("server")); // server is only one enabled (set to copy) - ASSERT_EQ(recogs["skipallbutone"].m_platformSpecs.size(), 1); - ASSERT_EQ(recogs["skipallbutone"].m_platformSpecs["server"].m_extraRCParams, "copy"); + EXPECT_THAT( + recogs["skipallbutone"].m_platformSpecs.keys(), + testing::UnorderedElementsAre( + QString("server") // server is only one enabled (set to copy) + ) + ); + EXPECT_FALSE(recogs["skipallbutone"].m_platformSpecs.contains(AzToolsFramework::AssetSystem::GetHostAssetPlatform())); + EXPECT_FALSE(recogs["skipallbutone"].m_platformSpecs.contains("android")); + EXPECT_EQ(recogs["skipallbutone"].m_platformSpecs["server"].m_extraRCParams, "copy"); } diff --git a/Code/Tools/AssetProcessor/native/tests/utilities/assetUtilsTest.cpp b/Code/Tools/AssetProcessor/native/tests/utilities/assetUtilsTest.cpp index 5ed392d12b..796bca2af2 100644 --- a/Code/Tools/AssetProcessor/native/tests/utilities/assetUtilsTest.cpp +++ b/Code/Tools/AssetProcessor/native/tests/utilities/assetUtilsTest.cpp @@ -137,10 +137,13 @@ TEST_F(AssetUtilitiesTest, UpdateToCorrectCase_ExistingFile_ReturnsTrue_Corrects thingsToTry << "SomeFile.TxT"; thingsToTry << "otherfile.txt"; thingsToTry << "subfolder1/otherfile.txt"; + + #if defined(AZ_PLATFORM_WINDOWS) thingsToTry << "subfolder2\\otherfile.txt"; thingsToTry << "subFolder3\\somefile.txt"; thingsToTry << "subFolder4\\subfolder6\\somefile.txt"; thingsToTry << "subFolder5\\subfolder7/someFile.txt"; + #endif // AZ_PLATFORM_WINDOWS thingsToTry << "specialFileName[.txt"; thingsToTry << "specialFileName].txt"; thingsToTry << "specialFileName!.txt"; diff --git a/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp index 079cdb7c66..efeec5d7c1 100644 --- a/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp +++ b/Code/Tools/AssetProcessor/native/unittests/AssetProcessorManagerUnitTests.cpp @@ -175,6 +175,16 @@ namespace AssetProcessor UNIT_TEST_EXPECT_FALSE(gameName.isEmpty()); // should create cache folder in the root, and read everything from there. + // There is a sub-case of handling mixed cases, but is only supported on case-insensitive filesystems. +#if defined(AZ_PLATFORM_LINUX) + // Linux is case-sensitive, so 'basefile.txt' will stay the same case as the other subfolder versions + constexpr const char* subfolder3BaseFilePath = "subfolder3/basefile.txt"; + constexpr int expectedLegacyAssetIdCount = 1; +#else + constexpr const char* subfolder3BaseFilePath = "subfolder3/BaseFile.txt"; + constexpr int expectedLegacyAssetIdCount = 2; +#endif + QSet expectedFiles; // set up some interesting files: expectedFiles << tempPath.absoluteFilePath("rootfile2.txt"); @@ -185,7 +195,9 @@ namespace AssetProcessor expectedFiles << tempPath.absoluteFilePath("subfolder2/aaa/bbb/basefile.txt"); expectedFiles << tempPath.absoluteFilePath("subfolder2/aaa/bbb/ccc/basefile.txt"); expectedFiles << tempPath.absoluteFilePath("subfolder2/aaa/bbb/ccc/ddd/basefile.txt"); - expectedFiles << tempPath.absoluteFilePath("subfolder3/BaseFile.txt"); // note the case upper here + + expectedFiles << tempPath.absoluteFilePath(subfolder3BaseFilePath); + expectedFiles << tempPath.absoluteFilePath("subfolder8/a/b/c/test.txt"); // subfolder3 is not recursive so none of these should show up in any scan or override check @@ -1521,7 +1533,8 @@ namespace AssetProcessor // -------------- override test ----------------- // set up by letting it compile basefile.txt from 3: - absolutePath = AssetUtilities::NormalizeFilePath(tempPath.absoluteFilePath("subfolder3/BaseFile.txt")); + + absolutePath = AssetUtilities::NormalizeFilePath(tempPath.absoluteFilePath(subfolder3BaseFilePath)); QMetaObject::invokeMethod(&apm, "AssessModifiedFile", Qt::QueuedConnection, Q_ARG(QString, absolutePath)); UNIT_TEST_EXPECT_TRUE(BlockUntil(idling, 5000)); @@ -1583,8 +1596,7 @@ namespace AssetProcessor UNIT_TEST_EXPECT_TRUE(assetMessages.size() == 4); for (auto element : assetMessages) { - // because the source asset had UPPER CASE in it, we should have multiple legacy IDs - UNIT_TEST_EXPECT_TRUE(element.m_legacyAssetIds.size() == 2); + UNIT_TEST_EXPECT_TRUE(element.m_legacyAssetIds.size() == expectedLegacyAssetIdCount); } // ------------- setup complete, now do the test... @@ -1607,7 +1619,7 @@ namespace AssetProcessor // delete the highest priority override file and ensure that it generates tasks // for the next highest priority! Basically, deleting this file should "reveal" the file underneath it in the other subfolder - QString deletedFile = tempPath.absoluteFilePath("subfolder3/BaseFile.txt"); + QString deletedFile = tempPath.absoluteFilePath(subfolder3BaseFilePath); QString expectedReplacementInputFile = AssetUtilities::NormalizeFilePath(tempPath.absoluteFilePath("subfolder2/basefile.txt")); UNIT_TEST_EXPECT_TRUE(QFile::remove(deletedFile)); @@ -1621,6 +1633,11 @@ namespace AssetProcessor sortAssetToProcessResultList(processResults); +#if defined(AZ_PLATFORM_LINUX) + // On Linux, because of we cannot change the case of the source file, the job fingerprint is not updated due the case-switch so + // there will be actually nothing to process + UNIT_TEST_EXPECT_TRUE(processResults.size() == 0); +#else // --------- same result as above ---------- UNIT_TEST_EXPECT_TRUE(processResults.size() == 4); // 2 each for pc and android,since we have two recognizer for .txt file UNIT_TEST_EXPECT_TRUE(processResults[0].m_jobEntry.m_platformInfo.m_identifier == processResults[1].m_jobEntry.m_platformInfo.m_identifier); @@ -1641,7 +1658,7 @@ namespace AssetProcessor UNIT_TEST_EXPECT_TRUE(processFile1.startsWith(platformFolder)); UNIT_TEST_EXPECT_TRUE(processResults[checkIdx].m_jobEntry.m_computedFingerprint != 0); } - +#endif // defined(AZ_PLATFORM_LINUX) relativePathFromWatchFolder = "somefile.xxx"; watchFolderPath = tempPath.absoluteFilePath("subfolder3"); absolutePath = watchFolderPath + "/" + relativePathFromWatchFolder; @@ -2721,7 +2738,12 @@ namespace AssetProcessor { AssetBuilderSDK::JobDescriptor secondDescriptor = descriptor; secondDescriptor.m_jobKey = "yyy"; + #if defined(AZ_PLATFORM_WINDOWS) sourceFileDependency.m_sourceFileDependencyPath = "some\\random/Folders/FILEa.TxT"; + #else + sourceFileDependency.m_sourceFileDependencyPath = "some/random/folders/FileA.txt"; + #endif // defined(AZ_PLATFORM_WINDOWS) + // ... declare a job dependency on job A ('FileA.txt', 'xxx', platform) AssetBuilderSDK::JobDependency jobDependency("xxx", platformInfo.m_identifier.c_str(), AssetBuilderSDK::JobDependencyType::Fingerprint, sourceFileDependency); secondDescriptor.m_jobDependencyList.push_back(jobDependency); @@ -2805,11 +2827,11 @@ namespace AssetProcessor QDir cacheRoot; UNIT_TEST_EXPECT_TRUE(AssetUtilities::ComputeProjectCacheRoot(cacheRoot)); - QString productFileAPath = cacheRoot.filePath(QString("pc/FileAProduct.txt")); - QString productFileBPath = cacheRoot.filePath(QString("pc/FileBProduct1.txt")); - QString product2FileBPath = cacheRoot.filePath(QString("pc/FileBProduct2.txt")); - QString productFileCPath = cacheRoot.filePath(QString("pc/FileCProduct.txt")); - QString product2FileCPath = cacheRoot.filePath(QString("pc/FileCProduct2.txt")); + QString productFileAPath = cacheRoot.filePath(QString("pc/fileaproduct.txt")); + QString productFileBPath = cacheRoot.filePath(QString("pc/filebproduct1.txt")); + QString product2FileBPath = cacheRoot.filePath(QString("pc/filebproduct2.txt")); + QString productFileCPath = cacheRoot.filePath(QString("pc/filecproduct.txt")); + QString product2FileCPath = cacheRoot.filePath(QString("pc/filecproduct2.txt")); UNIT_TEST_EXPECT_TRUE(CreateDummyFile(sourceFileAPath, "")); UNIT_TEST_EXPECT_TRUE(CreateDummyFile(sourceFileBPath, "")); diff --git a/Code/Tools/AssetProcessor/native/unittests/FileWatcherUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/FileWatcherUnitTests.cpp index 785ea8efa6..f6fb21e4e7 100644 --- a/Code/Tools/AssetProcessor/native/unittests/FileWatcherUnitTests.cpp +++ b/Code/Tools/AssetProcessor/native/unittests/FileWatcherUnitTests.cpp @@ -106,7 +106,7 @@ void FileWatcherUnitTestRunner::StartTest() AZ_TracePrintf(AssetProcessor::DebugChannel, "Waiting for remaining notifications: %d \n", outstandingFiles.count()); } - if (outstandingFiles.count() > 0) + if (outstandingFiles.count() > 0) { #if defined(AZ_ENABLE_TRACING) AZ_TracePrintf(AssetProcessor::DebugChannel, "Timed out waiting for file changes: %d / %d missed\n", outstandingFiles.count(), maxFiles); @@ -226,7 +226,9 @@ void FileWatcherUnitTestRunner::StartTest() UNIT_TEST_EXPECT_TRUE(fileAddCalled); UNIT_TEST_EXPECT_TRUE(fileRemoveCalled); - UNIT_TEST_EXPECT_TRUE(fileModifiedCalled); // modified should be called on the folder that the file lives in +#if defined(AZ_PLATFORM_WINDOWS) + UNIT_TEST_EXPECT_TRUE(fileModifiedCalled); // modified should be called on the folder that the file lives in (Only on Windows) +#endif // AZ_PLATFORM_WINDOWS UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileRemoveName).toLower() == QDir::toNativeSeparators(originalName).toLower()); UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileAddName).toLower() == QDir::toNativeSeparators(newName1).toLower()); @@ -249,7 +251,10 @@ void FileWatcherUnitTestRunner::StartTest() // the new1 was "removed" and the new2 was "added" UNIT_TEST_EXPECT_TRUE(fileAddCalled); UNIT_TEST_EXPECT_TRUE(fileRemoveCalled); - UNIT_TEST_EXPECT_TRUE(fileModifiedCalled); // modified should be called on the folder that the file lives in +#if defined(AZ_PLATFORM_WINDOWS) + UNIT_TEST_EXPECT_TRUE(fileModifiedCalled); // modified should be called on the folder that the file lives in (Only on Windows) +#endif // AZ_PLATFORM_WINDOWS + UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileRemoveName).toLower() == QDir::toNativeSeparators(newName1).toLower()); UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileAddName).toLower() == QDir::toNativeSeparators(newName2).toLower()); @@ -270,11 +275,15 @@ void FileWatcherUnitTestRunner::StartTest() // the new1 was "removed" and the new2 was "added" UNIT_TEST_EXPECT_TRUE(fileAddCalled); UNIT_TEST_EXPECT_TRUE(fileRemoveCalled); - UNIT_TEST_EXPECT_TRUE(fileModifiedCalled); // modified should be called on the folder that the file lives in +#if defined(AZ_PLATFORM_WINDOWS) + UNIT_TEST_EXPECT_TRUE(fileModifiedCalled); // modified should be called on the folder that the file lives in (Only on Windows) +#endif // AZ_PLATFORM_WINDOWS UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileRemoveName).toLower() == QDir::toNativeSeparators(newName2).toLower()); UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileAddName).toLower() == QDir::toNativeSeparators(newName3).toLower()); - // final test... make sure that renaming a DIRECTORY works too +#if !defined(AZ_PLATFORM_LINUX) + // final test... make sure that renaming a DIRECTORY works too. + // Note that linux does not get any callbacks if just the directory is renamed (from inotify) QDir renamer; fileAddCalled = false; fileRemoveCalled = false; @@ -297,7 +306,7 @@ void FileWatcherUnitTestRunner::StartTest() UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileRemoveName).toLower() == QDir::toNativeSeparators(tempDirPath.absoluteFilePath("dir3")).toLower()); UNIT_TEST_EXPECT_TRUE(QDir::toNativeSeparators(fileAddName).toLower() == QDir::toNativeSeparators(tempDirPath.absoluteFilePath("dir4")).toLower()); - +#endif // AZ_PLATFORM_LINUX QObject::disconnect(connectionRemove); QObject::disconnect(connectionAdd); diff --git a/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp index 02b98e5e33..38c1377b46 100644 --- a/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp +++ b/Code/Tools/AssetProcessor/native/unittests/RCcontrollerUnitTests.cpp @@ -545,10 +545,13 @@ void RCcontrollerUnitTests::RunRCControllerTests() rcJob.SetCheckExclusiveLock(true); rcJob.Start(); + +#if defined(AZ_PLATFORM_WINDOWS) + // on windows, opening a file for reading locks it + // but on other platforms, this is not the case. // we only expect work to begin when we can gain an exclusive lock on this file. UNIT_TEST_EXPECT_FALSE(UnitTestUtils::BlockUntil(beginWork, 5000)); -#if defined(AZ_PLATFORM_WINDOWS) // Once we release the file, it should process normally lockFileTest.close(); #else diff --git a/Code/Tools/AssetProcessor/native/unittests/UtilitiesUnitTests.cpp b/Code/Tools/AssetProcessor/native/unittests/UtilitiesUnitTests.cpp index 1eada874d9..24433b550c 100644 --- a/Code/Tools/AssetProcessor/native/unittests/UtilitiesUnitTests.cpp +++ b/Code/Tools/AssetProcessor/native/unittests/UtilitiesUnitTests.cpp @@ -227,8 +227,9 @@ void UtilitiesUnitTests::StartTest() #else int handle = open(lockTestFileName.toUtf8().constData(), O_RDONLY | O_EXLOCK | O_NONBLOCK); #endif // AZ_PLATFORM_WINDOWS - UNIT_TEST_EXPECT_FALSE(AssetUtilities::CheckCanLock(lockTestFileName)); + #if defined(AZ_PLATFORM_WINDOWS) + UNIT_TEST_EXPECT_FALSE(AssetUtilities::CheckCanLock(lockTestFileName)); lockTestFile.close(); #else if (handle != -1) diff --git a/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp b/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp index b152e5ed4f..19423358b5 100644 --- a/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp +++ b/Code/Tools/AssetProcessor/native/utilities/assetUtils.cpp @@ -507,8 +507,13 @@ namespace AssetUtilities return QString::fromUtf8(s_projectName.c_str(), aznumeric_cast(s_projectName.size())); } - QString ComputeProjectPath() + QString ComputeProjectPath(bool resetCachedProjectPath/*=false*/) { + if (resetCachedProjectPath) + { + // Clear any cached value if reset was requested + s_projectPath.clear(); + } if (s_projectPath.empty()) { // Check command-line args first diff --git a/Code/Tools/AssetProcessor/native/utilities/assetUtils.h b/Code/Tools/AssetProcessor/native/utilities/assetUtils.h index 201911eb96..694498e423 100644 --- a/Code/Tools/AssetProcessor/native/utilities/assetUtils.h +++ b/Code/Tools/AssetProcessor/native/utilities/assetUtils.h @@ -104,7 +104,8 @@ namespace AssetUtilities QString ComputeProjectName(QString projectNameOverride = QString(), bool force = false); //! Determine the absolute path of the current project - QString ComputeProjectPath(); + //! The path computed path will be cached on subsequent calls unless resetCachedProjectPath=true + QString ComputeProjectPath(bool resetCachedProjectPath = false); //! Reads the allowed list directly from the bootstrap file QString ReadAllowedlistFromSettingsRegistry(QString initialFolder = QString()); diff --git a/Code/Tools/ProjectManager/Resources/ProjectManager.rc b/Code/Tools/ProjectManager/Resources/ProjectManager.rc new file mode 100644 index 0000000000..82a40935ad --- /dev/null +++ b/Code/Tools/ProjectManager/Resources/ProjectManager.rc @@ -0,0 +1 @@ +IDI_ICON1 ICON DISCARDABLE "o3de_editor.ico" diff --git a/Code/Tools/ProjectManager/Source/PythonBindings.cpp b/Code/Tools/ProjectManager/Source/PythonBindings.cpp index 3f0af7fa49..bb6c05a472 100644 --- a/Code/Tools/ProjectManager/Source/PythonBindings.cpp +++ b/Code/Tools/ProjectManager/Source/PythonBindings.cpp @@ -246,7 +246,7 @@ namespace O3DE::ProjectManager AZStd::string pyBasePath = Platform::GetPythonHomePath(PY_PACKAGE, m_enginePath.c_str()); if (!AZ::IO::SystemFile::Exists(pyBasePath.c_str())) { - AZ_Warning("python", false, "Python home path must exist. path:%s", pyBasePath.c_str()); + AZ_Assert(false, "Python home path must exist. path:%s", pyBasePath.c_str()); return false; } @@ -277,11 +277,12 @@ namespace O3DE::ProjectManager AZStd::lock_guard lock(m_lock); pybind11::gil_scoped_acquire acquire; - // Setup sys.path - int result = PyRun_SimpleString("import sys"); - AZ_Warning("ProjectManagerWindow", result != -1, "Import sys failed"); - result = PyRun_SimpleString(AZStd::string::format("sys.path.append('%s')", m_enginePath.c_str()).c_str()); - AZ_Warning("ProjectManagerWindow", result != -1, "Append to sys path failed"); + // sanity import check + if (PyRun_SimpleString("import sys") != 0) + { + AZ_Assert(false, "Import sys failed"); + return false; + } // import required modules m_cmake = pybind11::module::import("o3de.cmake"); @@ -295,11 +296,11 @@ namespace O3DE::ProjectManager // make sure the engine is registered RegisterThisEngine(); - return result == 0 && !PyErr_Occurred(); + return !PyErr_Occurred(); } catch ([[maybe_unused]] const std::exception& e) { - AZ_Warning("ProjectManagerWindow", false, "Py_Initialize() failed with %s", e.what()); + AZ_Assert(false, "Py_Initialize() failed with %s", e.what()); return false; } } diff --git a/Code/Tools/ProjectManager/project_manager_files.cmake b/Code/Tools/ProjectManager/project_manager_files.cmake index eb9cd1145e..633824f995 100644 --- a/Code/Tools/ProjectManager/project_manager_files.cmake +++ b/Code/Tools/ProjectManager/project_manager_files.cmake @@ -10,6 +10,7 @@ # set(FILES + Resources/ProjectManager.rc Resources/ProjectManager.qrc Resources/ProjectManager.qss Source/main.cpp diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/controller/error_controller.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/controller/error_controller.py new file mode 100644 index 0000000000..244245ad57 --- /dev/null +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/controller/error_controller.py @@ -0,0 +1,33 @@ +""" +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. +""" + +from PySide2.QtCore import (QCoreApplication, QObject) + +from manager.view_manager import ViewManager +from view.error_page import ErrorPage + + +class ErrorController(QObject): + """ + ErrorPage Controller + """ + def __init__(self) -> None: + super(ErrorController, self).__init__() + # Initialize manager references + self._view_manager: ViewManager = ViewManager.get_instance() + # Initialize view references + self._error_page: ErrorPage = self._view_manager.get_error_page() + + def _ok(self) -> None: + QCoreApplication.instance().quit() + + def setup(self) -> None: + self._error_page.ok_button.clicked.connect(self._ok) diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/configuration_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/configuration_manager.py index fc188582c7..7c5ceb6946 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/configuration_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/configuration_manager.py @@ -48,11 +48,15 @@ class ConfigurationManager(object): def configuration(self, new_configuration: ConfigurationManager) -> None: self._configuration = new_configuration - def setup(self, config_path: str) -> bool: + def setup(self, profile_name: str, config_path: str) -> bool: result: bool = True - logger.info("Setting up default configuration ...") + logger.debug("Setting up default configuration ...") try: - normalized_config_path: str = file_utils.normalize_file_path(config_path); + logger.debug("Setting up boto3 default session ...") + aws_utils.setup_default_session(profile_name) + + logger.debug("Setting up config directory and files ...") + normalized_config_path: str = file_utils.normalize_file_path(config_path) if normalized_config_path: self._configuration.config_directory = normalized_config_path else: @@ -61,6 +65,7 @@ class ConfigurationManager(object): file_utils.find_files_with_suffix_under_directory(self._configuration.config_directory, constants.RESOURCE_MAPPING_CONFIG_FILE_NAME_SUFFIX) + logger.debug("Setting up aws account id and region ...") self._configuration.account_id = aws_utils.get_default_account_id() self._configuration.region = aws_utils.get_default_region() except (RuntimeError, FileNotFoundError) as e: diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/controller_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/controller_manager.py index 48c45d0350..61eaaddea2 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/controller_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/controller_manager.py @@ -12,6 +12,7 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. from __future__ import annotations import logging +from controller.error_controller import ErrorController from controller.import_resources_controller import ImportResourcesController from controller.view_edit_controller import ViewEditController from model import error_messages @@ -33,8 +34,9 @@ class ControllerManager(object): def __init__(self) -> None: if ControllerManager.__instance is None: - self._view_edit_controller: ViewEditController = ViewEditController() - self._import_resources_controller: ImportResourcesController = ImportResourcesController() + self._error_controller: ErrorController = None + self._view_edit_controller: ViewEditController = None + self._import_resources_controller: ImportResourcesController = None ControllerManager.__instance = self else: raise AssertionError(error_messages.SINGLETON_OBJECT_ERROR_MESSAGE.format("ControllerManager")) @@ -47,9 +49,17 @@ class ControllerManager(object): def view_edit_controller(self) -> ViewEditController: return self._view_edit_controller - def setup(self) -> None: - logger.info("Setting up ViewEdit and ImportResource controllers ...") - self._view_edit_controller.setup() - self._import_resources_controller.setup() - self._import_resources_controller.add_import_resources_sender.connect( - self._view_edit_controller.add_import_resources_receiver) + def setup(self, setup_error: bool) -> None: + if setup_error: + logger.debug("Setting up Error controllers ...") + self._error_controller = ErrorController() + self._error_controller.setup() + else: + logger.debug("Setting up ViewEdit and ImportResource controllers ...") + self._view_edit_controller = ViewEditController() + self._import_resources_controller = ImportResourcesController() + + self._view_edit_controller.setup() + self._import_resources_controller.setup() + self._import_resources_controller.add_import_resources_sender.connect( + self._view_edit_controller.add_import_resources_receiver) diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/thread_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/thread_manager.py index 516a085439..4de928bb1b 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/thread_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/thread_manager.py @@ -37,10 +37,13 @@ class ThreadManager(object): else: raise AssertionError(error_messages.SINGLETON_OBJECT_ERROR_MESSAGE.format("ThreadManager")) - def setup(self, thread_count: int = 1) -> None: - # Based on prototype use case, we just need 1 thread - logger.info(f"Setting up thread pool with MaxThreadCount={thread_count} ...") - self._thread_pool.setMaxThreadCount(thread_count) + def setup(self, setup_error: bool, thread_count: int = 1) -> None: + if setup_error: + logger.debug("Skip thread pool creation, as there is major setup error.") + else: + # Based on prototype use case, we just need 1 thread + logger.debug(f"Setting up thread pool with MaxThreadCount={thread_count} ...") + self._thread_pool.setMaxThreadCount(thread_count) """Reserves a thread and uses it to run runnable worker, unless this thread will make the current thread count exceed max thread count. In that case, runnable is added to a run queue instead.""" diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/view_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/view_manager.py index fff5c4b59a..46158afb39 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/view_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/manager/view_manager.py @@ -16,6 +16,7 @@ from PySide2.QtGui import QIcon from PySide2.QtWidgets import (QMainWindow, QStackedWidget, QWidget) from model import (error_messages, view_size_constants) +from view.error_page import ErrorPage from view.import_resources_page import ImportResourcesPage from view.view_edit_page import ViewEditPage @@ -27,6 +28,10 @@ class ViewManagerConstants(object): IMPORT_RESOURCES_PAGE_INDEX: int = 1 +# Error page will be a single page +ERROR_PAGE_INDEX: int = 0 + + class ViewManager(object): """ View manager maintains the main stacked pages for this tool, which @@ -58,21 +63,32 @@ class ViewManager(object): ViewManager.__instance = self else: raise AssertionError(error_messages.SINGLETON_OBJECT_ERROR_MESSAGE.format("ViewManager")) - + + def get_error_page(self) -> QWidget: + return self._resource_mapping_stacked_pages.widget(ERROR_PAGE_INDEX) + def get_view_edit_page(self) -> QWidget: return self._resource_mapping_stacked_pages.widget(ViewManagerConstants.VIEW_AND_EDIT_PAGE_INDEX) def get_import_resources_page(self) -> QWidget: return self._resource_mapping_stacked_pages.widget(ViewManagerConstants.IMPORT_RESOURCES_PAGE_INDEX) - def setup(self) -> None: - logger.debug("Setting up ViewEdit and ImportResources view pages ...") - self._resource_mapping_stacked_pages.addWidget(ViewEditPage()) - self._resource_mapping_stacked_pages.addWidget(ImportResourcesPage()) + def setup(self, setup_error: bool) -> None: + if setup_error: + logger.debug("Setting up Error view pages ...") + self._resource_mapping_stacked_pages.addWidget(ErrorPage()) + self._main_window.adjustSize() # fit error page size + else: + logger.debug("Setting up ViewEdit and ImportResources view pages ...") + self._resource_mapping_stacked_pages.addWidget(ViewEditPage()) + self._resource_mapping_stacked_pages.addWidget(ImportResourcesPage()) - def show(self) -> None: + def show(self, setup_error: bool) -> None: """Show up the tool view by setting default page index and showing main widget""" - self._resource_mapping_stacked_pages.setCurrentIndex(ViewManagerConstants.VIEW_AND_EDIT_PAGE_INDEX) + if setup_error: + self._resource_mapping_stacked_pages.setCurrentIndex(ERROR_PAGE_INDEX) + else: + self._resource_mapping_stacked_pages.setCurrentIndex(ViewManagerConstants.VIEW_AND_EDIT_PAGE_INDEX) self._main_window.show() def switch_to_view_edit_page(self) -> None: diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/error_messages.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/error_messages.py index 08ab2a146d..7aef2068a2 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/error_messages.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/error_messages.py @@ -9,6 +9,12 @@ remove or modify any license notices. This file is distributed on an "AS IS" BAS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. """ +ERROR_PAGE_TOOL_SETUP_ERROR_MESSAGE: str = \ + "AWS credentials are missing or invalid. See " \ + ""\ + "documentation for details." \ + "
Check log file under Gems/AWSCore/Code/Tool/ResourceMappingTool for further information." + VIEW_EDIT_PAGE_SAVING_FAILED_WITH_INVALID_ROW_ERROR_MESSAGE: str = \ "Row {} have errors. Please correct errors or delete the row to proceed." VIEW_EDIT_PAGE_READ_FROM_JSON_FAILED_WITH_UNEXPECTED_FILE_ERROR_MESSAGE: str = \ diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/notification_label_text.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/notification_label_text.py index 1819e4c4ce..aecff69fb1 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/notification_label_text.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/notification_label_text.py @@ -11,6 +11,8 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. NOTIFICATION_LOADING_MESSAGE: str = "Loading..." +ERROR_PAGE_OK_TEXT: str = "OK" + VIEW_EDIT_PAGE_CONFIG_FILE_TEXT: str = "Config File" VIEW_EDIT_PAGE_CONFIG_LOCATION_TEXT: str = "Config Location:" VIEW_EDIT_PAGE_ADD_ROW_TEXT: str = "Add Row" diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/view_size_constants.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/view_size_constants.py index c01d81b75c..7c0eb55885 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/view_size_constants.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/model/view_size_constants.py @@ -17,6 +17,18 @@ MAIN_PAGE_LAYOUT_MARGIN_TOPBOTTOM: int = 15 INTERACTION_COMPONENT_HEIGHT: int = 25 +"""error page related constants""" +ERROR_PAGE_LAYOUT_MARGIN_LEFTRIGHT: int = 10 +ERROR_PAGE_LAYOUT_MARGIN_TOPBOTTOM: int = 10 + +ERROR_PAGE_MAIN_WINDOW_WIDTH: int = 600 +ERROR_PAGE_MAIN_WINDOW_HEIGHT: int = 145 + +ERROR_PAGE_NOTIFICATION_AREA_HEIGHT: int = 100 +ERROR_PAGE_FOOTER_AREA_HEIGHT: int = 45 + +OK_BUTTON_WIDTH: int = 90 + """view edit page related constants""" VIEW_EDIT_PAGE_HEADER_AREA_HEIGHT: int = 65 VIEW_EDIT_PAGE_CENTER_AREA_HEIGHT: int = 500 diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/resource_mapping_tool.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/resource_mapping_tool.py index 6a56491b24..177dae349e 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/resource_mapping_tool.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/resource_mapping_tool.py @@ -73,32 +73,22 @@ if __name__ == "__main__": except FileNotFoundError: logger.warning("Failed to load style sheet for resource mapping tool") - logger.info("Initializing boto3 default session ...") - try: - aws_utils.setup_default_session(arguments.profile) - except RuntimeError as error: - logger.error(error) - environment_utils.cleanup_qt_environment() - exit(-1) - logger.info("Initializing configuration manager ...") configuration_manager: ConfigurationManager = ConfigurationManager() - if not configuration_manager.setup(arguments.config_path): - environment_utils.cleanup_qt_environment() - exit(-1) + configuration_error: bool = not configuration_manager.setup(arguments.profile, arguments.config_path) logger.info("Initializing thread manager ...") thread_manager: ThreadManager = ThreadManager() - thread_manager.setup() + thread_manager.setup(configuration_error) logger.info("Initializing view manager ...") view_manager: ViewManager = ViewManager() - view_manager.setup() + view_manager.setup(configuration_error) logger.info("Initializing controller manager ...") controller_manager: ControllerManager = ControllerManager() - controller_manager.setup() + controller_manager.setup(configuration_error) - view_manager.show() + view_manager.show(configuration_error) sys.exit(app.exec_()) diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/style/base_style_sheet.qss b/Gems/AWSCore/Code/Tools/ResourceMappingTool/style/base_style_sheet.qss index c23c3d90bd..2638052e2c 100644 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/style/base_style_sheet.qss +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/style/base_style_sheet.qss @@ -368,3 +368,18 @@ QFrame#NotificationFrame margin: 4px; padding: 4px; } + +QFrame#ErrorPage +{ + background-color: #2d2d2d; + border: 1px solid #4A90E2; + border-radius: 2px; + margin: 0px; + padding: 15px; +} + +QFrame#ErrorPage QLabel#NotificationIcon +{ + padding-left: 15px; + padding-right: 15px; +} diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_configuration_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_configuration_manager.py index 552f9fff01..7c6ee496a0 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_configuration_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_configuration_manager.py @@ -33,6 +33,7 @@ class TestConfigurationManager(TestCase): def test_get_instance_raise_exception(self) -> None: self.assertRaises(Exception, ConfigurationManager) + @patch("utils.aws_utils.setup_default_session") @patch("utils.aws_utils.get_default_region", return_value=_expected_region) @patch("utils.aws_utils.get_default_account_id", return_value=_expected_account_id) @patch("utils.file_utils.find_files_with_suffix_under_directory", return_value=_expected_config_files) @@ -42,8 +43,10 @@ class TestConfigurationManager(TestCase): mock_check_path_exists: MagicMock, mock_find_files_with_suffix_under_directory: MagicMock, mock_get_default_account_id: MagicMock, - mock_get_default_region: MagicMock) -> None: - TestConfigurationManager._expected_configuration_manager.setup("") + mock_get_default_region: MagicMock, + mock_setup_default_session: MagicMock) -> None: + TestConfigurationManager._expected_configuration_manager.setup("", "") + mock_setup_default_session.assert_called_once() mock_get_current_directory_path.assert_called_once() mock_check_path_exists.assert_called_once_with(TestConfigurationManager._expected_directory_path) mock_find_files_with_suffix_under_directory.assert_called_once_with( @@ -59,6 +62,7 @@ class TestConfigurationManager(TestCase): assert TestConfigurationManager._expected_configuration_manager.configuration.region == \ TestConfigurationManager._expected_region + @patch("utils.aws_utils.setup_default_session") @patch("utils.aws_utils.get_default_region", return_value=_expected_region) @patch("utils.aws_utils.get_default_account_id", return_value=_expected_account_id) @patch("utils.file_utils.find_files_with_suffix_under_directory", return_value=_expected_config_files) @@ -68,8 +72,11 @@ class TestConfigurationManager(TestCase): mock_check_path_exists: MagicMock, mock_find_files_with_suffix_under_directory: MagicMock, mock_get_default_account_id: MagicMock, - mock_get_default_region: MagicMock) -> None: - TestConfigurationManager._expected_configuration_manager.setup(TestConfigurationManager._expected_directory_path) + mock_get_default_region: MagicMock, + mock_setup_default_session: MagicMock) -> None: + TestConfigurationManager._expected_configuration_manager.setup( + "", TestConfigurationManager._expected_directory_path) + mock_setup_default_session.assert_called_once() mock_normalize_file_path.assert_called_once() mock_check_path_exists.assert_called_once_with(TestConfigurationManager._expected_directory_path) mock_find_files_with_suffix_under_directory.assert_called_once_with( diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_controller_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_controller_manager.py index 93e49415ca..7f2f1dd3f2 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_controller_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_controller_manager.py @@ -25,6 +25,9 @@ class TestControllerManager(TestCase): @classmethod def setUpClass(cls) -> None: + error_controller_patcher: patch = patch("manager.controller_manager.ErrorController") + cls._mock_error_controller = error_controller_patcher.start() + import_resources_controller_patcher: patch = patch("manager.controller_manager.ImportResourcesController") cls._mock_import_resources_controller = import_resources_controller_patcher.start() @@ -52,8 +55,14 @@ class TestControllerManager(TestCase): mocked_import_resources_controller: MagicMock = \ TestControllerManager._mock_import_resources_controller.return_value - TestControllerManager._expected_controller_manager.setup() + TestControllerManager._expected_controller_manager.setup(False) mocked_view_edit_controller.setup.assert_called_once() mocked_import_resources_controller.setup.assert_called_once() mocked_import_resources_controller.add_import_resources_sender.connect.assert_called_once_with( mocked_view_edit_controller.add_import_resources_receiver) + + def test_setup_error_controller_setup_gets_invoked(self) -> None: + mocked_error_controller: MagicMock = TestControllerManager._mock_error_controller.return_value + + TestControllerManager._expected_controller_manager.setup(True) + mocked_error_controller.setup.assert_called_once() diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_thread_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_thread_manager.py index 456a17efe2..06e2b4abbd 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_thread_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_thread_manager.py @@ -45,9 +45,15 @@ class TestThreadManager(TestCase): def test_setup_thread_pool_setup_with_expected_configuration(self) -> None: mocked_thread_pool: MagicMock = TestThreadManager._mock_thread_pool.return_value - TestThreadManager._expected_thread_manager.setup() + TestThreadManager._expected_thread_manager.setup(False) mocked_thread_pool.setMaxThreadCount.assert_called_once_with(1) + def test_setup_thread_pool_skip_setup(self) -> None: + mocked_thread_pool: MagicMock = TestThreadManager._mock_thread_pool.return_value + + TestThreadManager._expected_thread_manager.setup(True) + mocked_thread_pool.setMaxThreadCount.asset_not_called() + def test_start_thread_pool_start_expected_worker(self) -> None: mocked_thread_pool: MagicMock = TestThreadManager._mock_thread_pool.return_value expected_mocked_worker: MagicMock = MagicMock() diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_view_manager.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_view_manager.py index e5c84c6579..57ec41ba0a 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_view_manager.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/tests/unit/manager/test_view_manager.py @@ -13,13 +13,14 @@ from typing import List from unittest import TestCase from unittest.mock import (call, MagicMock, patch) -from manager.view_manager import (ViewManager, ViewManagerConstants) +from manager.view_manager import (ERROR_PAGE_INDEX, ViewManager, ViewManagerConstants) class TestViewManager(TestCase): """ ViewManager unit test cases """ + _mock_error_page: MagicMock _mock_import_resources_page: MagicMock _mock_view_edit_page: MagicMock _mock_main_window: MagicMock @@ -28,6 +29,9 @@ class TestViewManager(TestCase): @classmethod def setUpClass(cls) -> None: + error_page_patcher: patch = patch("manager.view_manager.ErrorPage") + cls._mock_error_page = error_page_patcher.start() + import_resources_page_patcher: patch = patch("manager.view_manager.ImportResourcesPage") cls._mock_import_resources_page = import_resources_page_patcher.start() @@ -60,6 +64,15 @@ class TestViewManager(TestCase): def test_get_instance_raise_exception(self) -> None: self.assertRaises(Exception, ViewManager) + def test_get_error_page_return_expected_page(self) -> None: + expected_page: MagicMock = TestViewManager._mock_error_page.return_value + mocked_stacked_pages: MagicMock = TestViewManager._mock_stacked_pages.return_value + mocked_stacked_pages.widget.return_value = expected_page + + actual_page: MagicMock = TestViewManager._expected_view_manager.get_error_page() + mocked_stacked_pages.widget.assert_called_once_with(ERROR_PAGE_INDEX) + assert actual_page == expected_page + def test_get_import_resources_page_return_expected_page(self) -> None: expected_page: MagicMock = TestViewManager._mock_import_resources_page.return_value mocked_stacked_pages: MagicMock = TestViewManager._mock_stacked_pages.return_value @@ -83,18 +96,34 @@ class TestViewManager(TestCase): mocked_import_resources_page: MagicMock = TestViewManager._mock_import_resources_page.return_value mocked_view_edit_page: MagicMock = TestViewManager._mock_view_edit_page.return_value - TestViewManager._expected_view_manager.setup() + TestViewManager._expected_view_manager.setup(False) mocked_calls: List[call] = [call(mocked_view_edit_page), call(mocked_import_resources_page)] mocked_stacked_pages.addWidget.assert_has_calls(mocked_calls) + def test_setup_error_page_only(self) -> None: + mocked_stacked_pages: MagicMock = TestViewManager._mock_stacked_pages.return_value + mocked_error_page: MagicMock = TestViewManager._mock_error_page.return_value + + TestViewManager._expected_view_manager.setup(True) + mocked_calls: List[call] = [call(mocked_error_page)] + mocked_stacked_pages.addWidget.assert_has_calls(mocked_calls) + def test_show_stacked_pages_show_with_expected_index(self) -> None: mocked_stacked_pages: MagicMock = TestViewManager._mock_stacked_pages.return_value mocked_main_window: MagicMock = TestViewManager._mock_main_window.return_value - TestViewManager._expected_view_manager.show() + TestViewManager._expected_view_manager.show(False) mocked_stacked_pages.setCurrentIndex.assert_called_once_with(ViewManagerConstants.VIEW_AND_EDIT_PAGE_INDEX) mocked_main_window.show.assert_called_once() + def test_show_stacked_pages_show_error_plage(self) -> None: + mocked_stacked_pages: MagicMock = TestViewManager._mock_stacked_pages.return_value + mocked_main_window: MagicMock = TestViewManager._mock_main_window.return_value + + TestViewManager._expected_view_manager.show(True) + mocked_stacked_pages.setCurrentIndex.assert_called_once_with(ERROR_PAGE_INDEX) + mocked_main_window.show.assert_called_once() + def test_switch_to_view_edit_page_stacked_pages_switch_to_expected_index(self) -> None: mocked_stacked_pages: MagicMock = TestViewManager._mock_stacked_pages.return_value diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/view/common_view_components.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/view/common_view_components.py index 8aad0a785c..39c94ccf77 100755 --- a/Gems/AWSCore/Code/Tools/ResourceMappingTool/view/common_view_components.py +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/view/common_view_components.py @@ -37,10 +37,12 @@ class NotificationFrame(QFrame): self.setFrameStyle(QFrame.StyledPanel | QFrame.Plain) icon_label: QLabel = QLabel(self) + icon_label.setObjectName("NotificationIcon") icon_label.setPixmap(pixmap) self._title_label: QLabel = QLabel(title, self) - self._title_label.setObjectName("Title") + self._title_label.setOpenExternalLinks(True) + self._title_label.setObjectName("NotificationTitle") self._title_label.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred)) self._title_label.setWordWrap(True) diff --git a/Gems/AWSCore/Code/Tools/ResourceMappingTool/view/error_page.py b/Gems/AWSCore/Code/Tools/ResourceMappingTool/view/error_page.py new file mode 100644 index 0000000000..2b42d2bfc2 --- /dev/null +++ b/Gems/AWSCore/Code/Tools/ResourceMappingTool/view/error_page.py @@ -0,0 +1,89 @@ +""" +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. +""" + +from PySide2.QtGui import QPixmap +from PySide2.QtWidgets import (QHBoxLayout, QLayout, QPushButton, QSizePolicy, QSpacerItem, QVBoxLayout, QWidget) + +from model import (error_messages, notification_label_text, view_size_constants) +from view.common_view_components import NotificationFrame + + +class ErrorPage(QWidget): + """ + Error Page + """ + def __init__(self) -> None: + super().__init__() + self.setGeometry(0, 0, + view_size_constants.ERROR_PAGE_MAIN_WINDOW_WIDTH, + view_size_constants.ERROR_PAGE_MAIN_WINDOW_HEIGHT) + + page_vertical_layout: QVBoxLayout = QVBoxLayout(self) + page_vertical_layout.setSizeConstraint(QLayout.SetMinimumSize) + page_vertical_layout.setMargin(0) + + self._setup_notification_area() + page_vertical_layout.addWidget(self._notification_area) + + self._setup_footer_area() + page_vertical_layout.addWidget(self._footer_area) + + def _setup_notification_area(self) -> None: + self._notification_area: QWidget = QWidget(self) + self._notification_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) + self._notification_area.setMinimumSize(view_size_constants.ERROR_PAGE_MAIN_WINDOW_WIDTH, + view_size_constants.ERROR_PAGE_NOTIFICATION_AREA_HEIGHT) + + notification_area_layout: QVBoxLayout = QVBoxLayout(self._notification_area) + notification_area_layout.setSizeConstraint(QLayout.SetMinimumSize) + notification_area_layout.setContentsMargins( + view_size_constants.ERROR_PAGE_LAYOUT_MARGIN_LEFTRIGHT, + view_size_constants.MAIN_PAGE_LAYOUT_MARGIN_TOPBOTTOM, + view_size_constants.ERROR_PAGE_LAYOUT_MARGIN_LEFTRIGHT, 0) + + notification_frame: NotificationFrame = \ + NotificationFrame(self, QPixmap(":/error_report_warning.svg"), + error_messages.ERROR_PAGE_TOOL_SETUP_ERROR_MESSAGE, False) + notification_frame.setObjectName("ErrorPage") + notification_frame.setMinimumSize(view_size_constants.ERROR_PAGE_MAIN_WINDOW_WIDTH, + view_size_constants.ERROR_PAGE_NOTIFICATION_AREA_HEIGHT) + notification_frame.setVisible(True) + notification_area_layout.addWidget(notification_frame) + + def _setup_footer_area(self) -> None: + self._footer_area: QWidget = QWidget(self) + self._footer_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum) + self._footer_area.setMaximumSize(view_size_constants.TOOL_APPLICATION_MAIN_WINDOW_WIDTH, + view_size_constants.ERROR_PAGE_FOOTER_AREA_HEIGHT) + + footer_area_layout: QHBoxLayout = QHBoxLayout(self._footer_area) + footer_area_layout.setSizeConstraint(QLayout.SetMinimumSize) + footer_area_layout.setContentsMargins( + view_size_constants.ERROR_PAGE_LAYOUT_MARGIN_LEFTRIGHT, + view_size_constants.ERROR_PAGE_LAYOUT_MARGIN_TOPBOTTOM, + view_size_constants.ERROR_PAGE_LAYOUT_MARGIN_LEFTRIGHT, + view_size_constants.ERROR_PAGE_LAYOUT_MARGIN_TOPBOTTOM) + + footer_area_spacer: QSpacerItem = QSpacerItem(view_size_constants.ERROR_PAGE_MAIN_WINDOW_WIDTH, + view_size_constants.INTERACTION_COMPONENT_HEIGHT, + QSizePolicy.MinimumExpanding, QSizePolicy.Minimum) + footer_area_layout.addItem(footer_area_spacer) + + self._ok_button: QPushButton = QPushButton(self._footer_area) + self._ok_button.setObjectName("Secondary") + self._ok_button.setText(notification_label_text.ERROR_PAGE_OK_TEXT) + self._ok_button.setMinimumSize(view_size_constants.OK_BUTTON_WIDTH, + view_size_constants.INTERACTION_COMPONENT_HEIGHT) + footer_area_layout.addWidget(self._ok_button) + + @property + def ok_button(self) -> QPushButton: + return self._ok_button diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslBuilder.cpp deleted file mode 100644 index 668d6866d3..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslBuilder.cpp +++ /dev/null @@ -1,402 +0,0 @@ -/* -* 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. -* -*/ - -#include "AzslBuilder.h" -#include "ShaderBuilderUtility.h" -#include "ShaderPlatformInterfaceRequest.h" -#include - -#include -#include - -#include - -namespace AZ -{ - namespace ShaderBuilder - { - enum class JobParameterIndices : uint32_t - { - ApiName, - PreprocessedCode, - PreprocessorError, - SkipJob - }; - - AZ::Uuid AzslBuilder::GetUUID() - { - return AZ::Uuid::CreateString("{72DCFC95-1B9E-4A8D-8633-D497CACD98AB}"); - } - - RHI::ShaderPlatformInterface* GetShaderPlatformInterfaceForApi(const AZStd::string& apiNameFilter, const AssetBuilderSDK::PlatformInfo& currentPlatform) - { - AZStd::vector platformInterfaces; - ShaderPlatformInterfaceRequestBus::BroadcastResult(platformInterfaces, &ShaderPlatformInterfaceRequest::GetShaderPlatformInterface, currentPlatform); - for (RHI::ShaderPlatformInterface* oneInterface : platformInterfaces) - { - if (oneInterface && oneInterface->GetAPIName().GetStringView() == apiNameFilter) - { - return oneInterface; - } - } - return nullptr; - } - - PreprocessorData PreprocessSource(const AZStd::string& inputFile, const AZStd::string& originalPath, const PreprocessorOptions& options) - { - // run mcpp - PreprocessorData output; - PreprocessFile(inputFile, output, options, true, true); - // do not let the filename.api.azsl.prepend be the filename that will be regarded as the source. - // because SRG assets are located using the 'containingFile' so we need to preserve the true origin: - MutateLineDirectivesFileOrigin(output.code, originalPath); - RHI::ReportErrorMessages(AzslBuilder::BuilderName, output.diagnostics); - return output; - } - - void AddAzslBuilderJobDependency(AssetBuilderSDK::JobDescriptor& jobDescriptor, const AZStd::string& platformInfoIdentifier, AZStd::string_view apiName, AZStd::string_view fullFilePath) - { - AssetBuilderSDK::SourceFileDependency fileDependency; - fileDependency.m_sourceFileDependencyPath = fullFilePath; - - AssetBuilderSDK::JobDependency dependency; - dependency.m_jobKey = AzslBuilder::JobKey; - dependency.m_jobKey += " "; - dependency.m_jobKey += apiName; - dependency.m_platformIdentifier = platformInfoIdentifier; - dependency.m_sourceFile = fileDependency; - dependency.m_type = AssetBuilderSDK::JobDependencyType::Order; - jobDescriptor.m_jobDependencyList.emplace_back(dependency); - } - - void AzslBuilder::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const - { - AZStd::string fullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, true); - - // this builder may take as input: - // .shader .azsl .azsli .srgi - // it will not behave strictly exactly the same for each type - - // Only *.srgi files are supposed to include files that define "partial" qualified SRGs. - const bool isSrgi = AzFramework::StringFunc::Path::IsExtension(fullPath.c_str(), SrgIncludeExtension); - - // .azsli needs "skip check" - const bool isAzsli = AzFramework::StringFunc::Path::IsExtension(fullPath.c_str(), "azsli"); - - // .shader files must be opened to get their build options and the referenced azsl file - const bool isShader = AzFramework::StringFunc::Path::IsExtension(fullPath.c_str(), RPI::ShaderSourceData::Extension); - - // .azsl must not be skipped, otherwise we're creating a risk of two .shader referring to the same .azsl racing for its output product - - // 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; - - // 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; - - - // The following if-block will be removed once [GFX TODO][ATOM-5302] is addressed, and - // azslc allows redundant SrgSemantics for "partial" qualified SRGs. - if (isAzsli) - { - auto skipCheck = ShaderBuilderUtility::ShouldSkipFileForSrgProcessing(BuilderName, fullPath); - if (skipCheck != ShaderBuilderUtility::SrgSkipFileResult::ContinueProcess) - { - response.m_result = skipCheck == ShaderBuilderUtility::SrgSkipFileResult::Error ? - AssetBuilderSDK::CreateJobsResultCode::Failed : AssetBuilderSDK::CreateJobsResultCode::Success; - return; - } - } - - if (isShader) - { - // Need to get the path to the shader file from the template, so that we can preprocess the shader data and setup - // source file dependencies. - auto descriptorParseOutput = ShaderBuilderUtility::LoadShaderDataJson(fullPath); - if (!descriptorParseOutput.IsSuccess()) - { - AZ_Error(BuilderName, false, "Failed to parse Shader Descriptor JSON: %s", descriptorParseOutput.GetError().c_str()); - return; - } - // update the value of fullPath to mean directly, the azsl file: - ShaderBuilderUtility::GetAbsolutePathToAzslFile(fullPath, descriptorParseOutput.GetValue().m_source, fullPath); - } - - GlobalBuildOptions buildOptions = ReadBuildOptions(BuilderName); - - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - AZ_TraceContext("For platform", info.m_identifier.data()); - - // Get the platform interfaces to be able to access the prepend file - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverValidShaderPlatformInterfaces(info); - - // Preprocess the shader file, per activated platform. - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - auto apiNameAsStringView = shaderPlatformInterface->GetAPIName().GetStringView(); - - AssetBuilderSDK::JobDescriptor jobDescriptor; - jobDescriptor.m_priority = 2; - // [GFX TODO][ATOM-2830] Set 'm_critical' back to 'false' once proper fix for Atom startup issues are in - jobDescriptor.m_critical = true; - jobDescriptor.m_jobKey = JobKey; - jobDescriptor.m_jobKey += " "; - jobDescriptor.m_jobKey += apiNameAsStringView; - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - jobDescriptor.m_jobParameters[(u32)JobParameterIndices::ApiName] = apiNameAsStringView; - if (isShader) - { - // add a job dependency on the azsl run (of that same job: AzslBuilder - because it also runs on .azsl) - AddAzslBuilderJobDependency(jobDescriptor, info.m_identifier, apiNameAsStringView, fullPath); - } - - // execute azsl prepending here, before preprocess, in order to support macros in AzslcHeader.azsli - AZStd::string prependedAzslSourceCode; - RHI::PrependArguments args; - args.m_sourceFile = fullPath.c_str(); - args.m_prependFile = shaderPlatformInterface->GetAzslHeader(info); - args.m_addSuffixToFileName = shaderPlatformInterface->GetAPIName().GetCStr(); - args.m_destinationStringOpt = &prependedAzslSourceCode; - - if (RHI::PrependFile(args) == fullPath) // error case. it returns the combined-file's name on success, or original path on failure, but here we use the "direct to string" mode so we don't need to store the returned name. - { - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed; - return; - } - AZStd::string originalLocation; - // extract the (full) directory chain from the path: (eg from "d:/p/f.e" extract "d:/p/") - AzFramework::StringFunc::Path::GetFullPath(fullPath.c_str(), originalLocation); - // have to go through filesystem because we have no way to pipe data through mcpp (because of single threaded static link call and buffer limits) - // we can't use a temporary folder because CreateJobs API does not warrant side effects, and does not prepare a temp folder. - // we can't use the OS temp folder anyway, because many includes (eg #include "../RPI/Shadow.h") are relative and will only work from the original location - AZStd::string prependedPath = ShaderBuilderUtility::DumpAzslPrependedCode( - BuilderName, prependedAzslSourceCode, originalLocation, ShaderBuilderUtility::ExtractStemName(fullPath.c_str()), - shaderPlatformInterface->GetAPIName().GetStringView()); - // run mcpp - PreprocessorData preprocessorData = PreprocessSource(prependedPath, fullPath, buildOptions.m_preprocessorSettings); - jobDescriptor.m_jobParameters[(u32)JobParameterIndices::PreprocessorError] = preprocessorData.diagnostics; // save for ProcessJob - jobDescriptor.m_jobParameters[(u32)JobParameterIndices::PreprocessedCode] = preprocessorData.code; // save for ProcessJob - AZ::IO::SystemFile::Delete(prependedPath.c_str()); // don't let that intermediate file dirty a folder under source version control. - - for (AZStd::string includePath : preprocessorData.includedPaths) - { - // m_sourceFileDependencyList does not support paths with "." or ".." for relative lookup, but the preprocessor - // may produce path strings like "C:/a/b/c/../../d/file.azsli" so we have to normalize - AzFramework::StringFunc::Path::Normalize(includePath); - - AssetBuilderSDK::SourceFileDependency includeFileDependency; - includeFileDependency.m_sourceFileDependencyPath = includePath; - response.m_sourceFileDependencyList.emplace_back(includeFileDependency); - } - response.m_createJobOutputs.push_back(jobDescriptor); - } // all RHI platforms - } // for all request.m_enabledPlatforms - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - } - - enum class ErrorStrategy { HardFailIfAbsent, ReturnEmptyIfAbsent }; - static AZStd::string GetJobParameterValue(const AssetBuilderSDK::ProcessJobRequest& request, JobParameterIndices index, [[maybe_unused]] ErrorStrategy failBehavior) - { - auto iterator = request.m_jobDescription.m_jobParameters.find(static_cast(index)); - if (iterator == request.m_jobDescription.m_jobParameters.end()) - { - AZ_Error(AzslBuilder::BuilderName, failBehavior != ErrorStrategy::HardFailIfAbsent, "Saved data is missing in job parameters. for index [%d]", index); - return {}; - } - return iterator->second; - } - - // eg: ("D:/p/x.a", "D:/p/x.b") -> yes - static bool HasSameFileName(const AZStd::string& lhsPath, const AZStd::string& rhsPath) - { - using namespace StringFunc::Path; - AZStd::string stem1; - GetFileName(lhsPath.c_str(), stem1); - AZStd::string stem2; - GetFileName(rhsPath.c_str(), stem2); - return stem1 == stem2; - } - - void AzslBuilder::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - if (request.m_jobDescription.m_jobParameters.find((u32)JobParameterIndices::SkipJob) != request.m_jobDescription.m_jobParameters.end()) - { - AZ_TracePrintf(BuilderName, "Early out because this file was determined to not need an independent build\n"); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - // report the deffered diagnostics: - const AZStd::string& preprocessorErrors = GetJobParameterValue(request, JobParameterIndices::PreprocessorError, ErrorStrategy::ReturnEmptyIfAbsent); - if (!preprocessorErrors.empty()) - { - bool foundErrors = RHI::ReportErrorMessages(BuilderName, preprocessorErrors.c_str()); - if (foundErrors) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - } - - const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks(); - AZStd::string fullSourcePath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.c_str(), request.m_sourceFile.c_str(), fullSourcePath, true); - // extract "name" from "P:/F/name.x" - AZStd::string sourceStemName; - AzFramework::StringFunc::Path::GetFileName(fullSourcePath.c_str(), sourceStemName); - - GlobalBuildOptions buildOptions = ReadBuildOptions(BuilderName); - - // get the shader platform interface that matches this job's API - const AZStd::string& apiName = GetJobParameterValue(request, JobParameterIndices::ApiName, ErrorStrategy::HardFailIfAbsent); - const AZStd::string& preprocessedCode = GetJobParameterValue(request, JobParameterIndices::PreprocessedCode, ErrorStrategy::ReturnEmptyIfAbsent); - RHI::ShaderPlatformInterface* platformInterface = GetShaderPlatformInterfaceForApi(apiName, request.m_platformInfo); - if (!platformInterface) - { - AZ_Error(BuilderName, false, "Could not retreive Shader Platform Interface"); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - const bool isSrgi = AzFramework::StringFunc::Path::IsExtension(fullSourcePath.c_str(), SrgIncludeExtension); - const bool isAzsli = AzFramework::StringFunc::Path::IsExtension(fullSourcePath.c_str(), "azsli"); - const bool isShader = AzFramework::StringFunc::Path::IsExtension(fullSourcePath.c_str(), RPI::ShaderSourceData::Extension); - if (isShader) - { - // read .shader -> access azsl path -> make absolute - RPI::ShaderSourceData shaderAssetSource; - AZStd::shared_ptr inputFiles = ShaderBuilderUtility::PrepareSourceInput(BuilderName, fullSourcePath, shaderAssetSource); - if (!inputFiles) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (shaderAssetSource.IsRhiBackendDisabled(platformInterface->GetAPIName())) - { - // Gracefully do nothing and return success. - AZ_TracePrintf( - BuilderName, "Skipping shader compilation [%s] for API [%s]\n", fullSourcePath.c_str(), - platformInterface->GetAPIName().GetCStr()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - - // Save .shader file name - AzFramework::StringFunc::Path::GetFileName(request.m_sourceFile.data(), inputFiles->m_shaderFileName); - - // Verify the presence of potential differences between the global options, and local options: - bool mustRebuild = buildOptions.m_compilerArguments.HasDifferentAzslcArguments(shaderAssetSource.m_compiler); - - // Merge compiler options coming from 2 source: global options (from project Config/), and .shader options. - // We define a merge behavior that is: ".shader wins if set" (local overrides global) - buildOptions.m_compilerArguments.Merge(shaderAssetSource.m_compiler); - - // Earlier, we declared a job dependency on the .azsl's job, let's access the produced assets: - uint32_t subId = ShaderBuilderUtility::MakeAzslBuildProductSubId( - RPI::ShaderAssetSubId::GeneratedHlslSource, platformInterface->GetAPIType()); - auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(inputFiles->m_azslSourceFullPath, subId); - AZ_Warning(BuilderName, assetIdOutcome.IsSuccess(), "Product of dependency %s not found: this is an oddity but build can continue.", inputFiles->m_azslSourceFullPath.c_str()); - if (assetIdOutcome.IsSuccess()) - { - // The .azsl build job didn't know about the build options listed in the .shader - // so it produced "generic" artifacts xxx.ia.json, xxx.hlsl, etc. - if (!mustRebuild) - { - // They are in fact sufficient. nothing more to do - AZ_TracePrintf(BuilderName, "Product output already built by %s. exiting.", inputFiles->m_azslSourceFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - // Otherwise, let's go again, but we need to modify the output's name to avoid product conflicts.* - AZ_TracePrintf(BuilderName, "Product output already built by %s is not reusable because of incompatible azslc CompilerHints: launching independent build", inputFiles->m_azslSourceFullPath.c_str()); - } - - if (HasSameFileName(fullSourcePath, inputFiles->m_azslSourceFullPath)) - { - // let's add a "distinguisher" to the names of the outproduct artifacts of this build round.* - // Because otherwise the asset processor is not going to accept an overwrite of the ones output by the .azsl job - static constexpr char RebuildSuffix[] = ".shader-w-diff-azslc-opts"; - sourceStemName += RebuildSuffix; - } - } - - AZStd::string preprocessedPath = ShaderBuilderUtility::DumpPreprocessedCode( - BuilderName, - preprocessedCode, - request.m_tempDirPath, - sourceStemName, - apiName); - - AZ_TraceContext("Platform API", apiName); - - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - // compiler setup - ShaderBuilder::AzslCompiler azslc(preprocessedPath); - AZStd::string compilerParameters = platformInterface->GetAzslCompilerParameters(buildOptions.m_compilerArguments); - compilerParameters += " "; - compilerParameters += platformInterface->GetAzslCompilerWarningParameters(buildOptions.m_compilerArguments); - AtomShaderConfig::AddParametersFromConfigFile(compilerParameters, request.m_platformInfo); - if (isSrgi || isAzsli) - { - // When compiling srgi or azsli files, the SRGs may appear as unused. It is necessary - // to remove the flag --strip-unused-srgs in case it is present in the compiler parameters. - AzFramework::StringFunc::Replace(compilerParameters, " --strip-unused-srgs", ""); - } - - AZStd::string outputName = AZStd::string::format("%s.%s.hlsl", sourceStemName.c_str(), apiName.c_str()); - AzFramework::StringFunc::Path::Join(request.m_tempDirPath.c_str(), outputName.c_str(), outputName, true); - - auto emitFullOutcome = azslc.EmitFullData(compilerParameters, outputName); - if (!emitFullOutcome.IsSuccess()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - for (int i = 0; i < emitFullOutcome.GetValue().size(); ++i) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = emitFullOutcome.GetValue()[i]; - static const AZ::Uuid AzslOutcomeType = "{6977AEB1-17AD-4992-957B-23BB2E85B18B}"; - jobProduct.m_productAssetType = AzslOutcomeType; - jobProduct.m_productSubID = ShaderBuilderUtility::MakeAzslBuildProductSubId(ShaderBuilderUtility::AzslSubProducts::SubList[i], platformInterface->GetAPIType()); - jobProduct.m_dependenciesHandled = true; - // Note that the output products are not traditional product assets that will be used by the game project. - // They are artifacts that are produced once, cached, and used later by other AssetBuilders as a way to centralize build organization. - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - - const AZStd::sys_time_t endTime = AZStd::GetTimeNowTicks(); - const AZStd::sys_time_t deltaTime = endTime - startTime; - const float elapsedTimeSeconds = (float)(deltaTime) / (float)AZStd::GetTimeTicksPerSecond(); - - AZ_TracePrintf(BuilderName, "Finished compiling %s in %.2f seconds\n", request.m_sourceFile.c_str(), elapsedTimeSeconds); - - ShaderBuilderUtility::LogProfilingData(BuilderName, sourceStemName); - } // end ProcessJob - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslBuilder.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslBuilder.h deleted file mode 100644 index a454e8cdf6..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslBuilder.h +++ /dev/null @@ -1,68 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include - -#include -#include -#include "AtomShaderConfig.h" -#include "ShaderBuilderUtility.h" - -namespace AZ -{ - namespace ShaderBuilder - { - static constexpr char AzslBuilderName[] = "AzslBuilder"; - - //! This builder is the forerunner of the shader build pipeline. - //! It will perform the first 3 transformations on shader files (.shader) and AZSL-containing files (.azsl/.azsli/.srgi) - //! Which are: [prepend common header -> preprocess -> transpile AZSL to HLSL & reflect all shader program properties of interest into json files] - //! The next builders in the chain: SRG/Shader/Variant, will consume the output products of this builder, without having to re-run Azslc nor Mcpp - //! Note that the output products are not traditional product assets that will be used by the game project. - //! They are artifacts that are produced once, cached, and used later by other AssetBuilders as a way to centralize build organization. - class AzslBuilder - : public AssetBuilderSDK::AssetBuilderCommandBus::Handler - { - public: - - static constexpr const char* BuilderName = AzslBuilderName; - static constexpr char JobKey[] = "AZSL Build"; - static constexpr char SrgIncludeExtension[] = "srgi"; - - // Asset Builder Callback Functions - void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const; - void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - ////////////////////////////////////////////////////////////////////////// - // AssetBuilderSDK::AssetBuilderCommandBus interface - void ShutDown() override {}; - ////////////////////////////////////////////////////////////////////////// - - static AZ::Uuid GetUUID(); - }; - - //! Helper for dependent builders - void AddAzslBuilderJobDependency(AssetBuilderSDK::JobDescriptor& jobDescriptor, const AZStd::string& platformInfoIdentifier, AZStd::string_view apiName, AZStd::string_view fullFilePath); - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.cpp index e3b482742b..f45d3738c0 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.cpp @@ -123,7 +123,7 @@ namespace AZ namespace SubProducts = ShaderBuilderUtility::AzslSubProducts; - Outcome AzslCompiler::EmitFullData(const AZStd::string& parameters, const AZStd::string& outputFile /* = ""*/, const char * addSuffix) const + Outcome AzslCompiler::EmitFullData(const AZStd::string& parameters, const AZStd::string& outputFile /* = ""*/) const { bool success = Compile("--full " + parameters, outputFile); if (!success) @@ -139,16 +139,6 @@ namespace AZ // append .json if it's one of those subs: auto listOfJsons = { SubProducts::ia, SubProducts::om, SubProducts::srg, SubProducts::options, SubProducts::bindingdep }; subProductFilePath += AZStd::any_of(AZ_BEGIN_END(listOfJsons), [&](auto v) { return v == subProduct.m_value; }) ? ".json" : ""; - - // [GFX TODO] Remove when [ATOM-15472] - if (addSuffix) - { - // Rename the product file. - AZStd::string finalSubProductFilePath = AZStd::string::format("%s%s", subProductFilePath.c_str(), addSuffix); - AZ::IO::Move(subProductFilePath.c_str(), finalSubProductFilePath.c_str()); - subProductFilePath = finalSubProductFilePath; - } - productPaths[subProduct.m_value] = subProductFilePath; } productPaths[SubProducts::azslin] = GetInputFilePath(); // post-fixup this one after the loop, because it's not an output of azslc, it's an output of the builder though. diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.h index 8da03cd6e5..cb30da068f 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslCompiler.h @@ -38,9 +38,8 @@ namespace AZ //! @param inputFilePath The target input file to compile. Should be a valid AZSL file with no preprocessing directives. AzslCompiler(const AZStd::string& inputFilePath); - //! [GFX TODO] Remove @addSuffix when [ATOM-15472] //! compile with --full and generate all .json files - Outcome EmitFullData(const AZStd::string& parameters, const AZStd::string& outputFile = "", const char * addSuffix = nullptr) const; + Outcome EmitFullData(const AZStd::string& parameters, const AZStd::string& outputFile = "") const; //! compile to HLSL independently bool EmitShader(AZ::IO::GenericStream& outputStream, const AZStd::string& extraCompilerParams) const; //! compile with --ia independently and populate document @output diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp index bc2e810f84..02b4fa668e 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include @@ -83,42 +82,10 @@ namespace AZ RHI::ShaderPlatformInterfaceRegisterBus::Handler::BusConnect(); ShaderPlatformInterfaceRequestBus::Handler::BusConnect(); - // Register AZSL's compilation products Builder - AssetBuilderSDK::AssetBuilderDesc azslBuilderDescriptor; - azslBuilderDescriptor.m_name = "AZSL Builder"; - azslBuilderDescriptor.m_version = 8; // ATOM-15276 - // register all extensions thay may carry azsl code. header. main shader. or SRG - azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsl", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsli", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", SrgLayoutBuilder::MergedPartialSrgsExtension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - azslBuilderDescriptor.m_busId = AzslBuilder::GetUUID(); - azslBuilderDescriptor.m_createJobFunction = AZStd::bind(&AzslBuilder::CreateJobs, &m_azslBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); - azslBuilderDescriptor.m_processJobFunction = AZStd::bind(&AzslBuilder::ProcessJob, &m_azslBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); - - m_azslBuilder.BusConnect(azslBuilderDescriptor.m_busId); - AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, azslBuilderDescriptor); - - // Register Shader Resource Group Layout Builder - AssetBuilderSDK::AssetBuilderDesc srgLayoutBuilderDescriptor; - srgLayoutBuilderDescriptor.m_name = "Shader Resource Group Layout Builder"; - srgLayoutBuilderDescriptor.m_version = 55; // ATOM-15276 - - 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)); - srgLayoutBuilderDescriptor.m_busId = SrgLayoutBuilder::GetUUID(); - srgLayoutBuilderDescriptor.m_createJobFunction = AZStd::bind(&SrgLayoutBuilder::CreateJobs, &m_srgLayoutBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); - srgLayoutBuilderDescriptor.m_processJobFunction = AZStd::bind(&SrgLayoutBuilder::ProcessJob, &m_srgLayoutBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); - - m_srgLayoutBuilder.BusConnect(srgLayoutBuilderDescriptor.m_busId); - AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, srgLayoutBuilderDescriptor); - m_srgLayoutBuilder.Activate(); - // Register Shader Asset Builder AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilderDescriptor; shaderAssetBuilderDescriptor.m_name = "Shader Asset Builder"; - shaderAssetBuilderDescriptor.m_version = 100; // ATOM-14298 + shaderAssetBuilderDescriptor.m_version = 101; // ATOM-15472 // .shader file changes trigger rebuilds shaderAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderAssetBuilderDescriptor.m_busId = azrtti_typeid(); @@ -133,7 +100,7 @@ namespace AZ shaderVariantAssetBuilderDescriptor.m_name = "Shader Variant Asset Builder"; // Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update // ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder". - shaderVariantAssetBuilderDescriptor.m_version = 21; // ATOM-14298 + shaderVariantAssetBuilderDescriptor.m_version = 22; // ATOM-15472 shaderVariantAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderVariantAssetBuilderDescriptor.m_busId = azrtti_typeid(); shaderVariantAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::CreateJobs, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); @@ -145,7 +112,7 @@ namespace AZ // Register Precompiled Shader Builder AssetBuilderSDK::AssetBuilderDesc precompiledShaderBuilderDescriptor; precompiledShaderBuilderDescriptor.m_name = "Precompiled Shader Builder"; - precompiledShaderBuilderDescriptor.m_version = 8; // ATOM-15276 + precompiledShaderBuilderDescriptor.m_version = 9; // ATOM-15472 precompiledShaderBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", AZ::PrecompiledShaderBuilder::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); precompiledShaderBuilderDescriptor.m_busId = azrtti_typeid(); precompiledShaderBuilderDescriptor.m_createJobFunction = AZStd::bind(&PrecompiledShaderBuilder::CreateJobs, &m_precompiledShaderBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); @@ -153,53 +120,13 @@ namespace AZ m_precompiledShaderBuilder.BusConnect(precompiledShaderBuilderDescriptor.m_busId); AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, precompiledShaderBuilderDescriptor); - - // Register Shader Asset Builder 2 - AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilder2Descriptor; - shaderAssetBuilder2Descriptor.m_name = "Shader Asset Builder 2"; - shaderAssetBuilder2Descriptor.m_version = 1; // ATOM-15276 - // .shader2 file changes trigger rebuilds - shaderAssetBuilder2Descriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( - AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension2), - AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - shaderAssetBuilder2Descriptor.m_busId = azrtti_typeid(); - shaderAssetBuilder2Descriptor.m_createJobFunction = - AZStd::bind(&ShaderAssetBuilder2::CreateJobs, &m_shaderAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - shaderAssetBuilder2Descriptor.m_processJobFunction = - AZStd::bind(&ShaderAssetBuilder2::ProcessJob, &m_shaderAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - - m_shaderAssetBuilder2.BusConnect(shaderAssetBuilder2Descriptor.m_busId); - AssetBuilderSDK::AssetBuilderBus::Broadcast( - &AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderAssetBuilder2Descriptor); - - // Register Shader Variant Asset Builder 2 - AssetBuilderSDK::AssetBuilderDesc shaderVariantAssetBuilder2Descriptor; - shaderVariantAssetBuilder2Descriptor.m_name = "Shader Variant Asset Builder 2"; - // Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update - // ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder". - shaderVariantAssetBuilder2Descriptor.m_version = 1; // ATOM-15276 - shaderVariantAssetBuilder2Descriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( - AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension2), - AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - shaderVariantAssetBuilder2Descriptor.m_busId = azrtti_typeid(); - shaderVariantAssetBuilder2Descriptor.m_createJobFunction = AZStd::bind( - &ShaderVariantAssetBuilder2::CreateJobs, &m_shaderVariantAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - shaderVariantAssetBuilder2Descriptor.m_processJobFunction = AZStd::bind( - &ShaderVariantAssetBuilder2::ProcessJob, &m_shaderVariantAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - - m_shaderVariantAssetBuilder2.BusConnect(shaderVariantAssetBuilder2Descriptor.m_busId); - AssetBuilderSDK::AssetBuilderBus::Broadcast( - &AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderVariantAssetBuilder2Descriptor); } void AzslShaderBuilderSystemComponent::Deactivate() { m_shaderAssetBuilder.BusDisconnect(); - m_srgLayoutBuilder.BusDisconnect(); m_shaderVariantAssetBuilder.BusDisconnect(); m_precompiledShaderBuilder.BusDisconnect(); - m_shaderAssetBuilder2.BusDisconnect(); - m_shaderVariantAssetBuilder2.BusDisconnect(); RHI::ShaderPlatformInterfaceRegisterBus::Handler::BusDisconnect(); ShaderPlatformInterfaceRequestBus::Handler::BusDisconnect(); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h index 2f881f45d2..55b8882e08 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h @@ -18,14 +18,10 @@ #include -#include "AzslBuilder.h" -#include "SrgLayoutBuilder.h" #include "ShaderAssetBuilder.h" #include "ShaderVariantAssetBuilder.h" #include "PrecompiledShaderBuilder.h" #include "ShaderPlatformInterfaceRequest.h" -#include "ShaderAssetBuilder2.h" -#include "ShaderVariantAssetBuilder2.h" namespace AZ { @@ -68,13 +64,9 @@ namespace AZ AZStd::vector GetShaderPlatformInterface(const AssetBuilderSDK::PlatformInfo& platformInfo) override; private: - AzslBuilder m_azslBuilder; - SrgLayoutBuilder m_srgLayoutBuilder; ShaderAssetBuilder m_shaderAssetBuilder; ShaderVariantAssetBuilder m_shaderVariantAssetBuilder; PrecompiledShaderBuilder m_precompiledShaderBuilder; - ShaderAssetBuilder2 m_shaderAssetBuilder2; - ShaderVariantAssetBuilder2 m_shaderVariantAssetBuilder2; /// Contains the ShaderPlatformInterface for all registered RHIs AZStd::unordered_map m_shaderPlatformInterfaces; diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/PrecompiledShaderBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/PrecompiledShaderBuilder.cpp index 2f7816ed67..62f76c0c12 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/PrecompiledShaderBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/PrecompiledShaderBuilder.cpp @@ -72,23 +72,6 @@ namespace AZ { AZStd::vector 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) { @@ -158,25 +141,6 @@ namespace AZ AssetBuilderSDK::JobProduct jobProduct; - // load Srg product assets - // these are the dependency Srg asset products that were processed prior to running this job - RPI::ShaderAssetCreator::ShaderResourceGroupAssets srgProductAssets; - for (const auto& srgAssetFileName : precompiledShaderAsset.m_srgAssetFileNames) - { - auto assetOutcome = RPI::AssetUtils::LoadAsset(request.m_fullPath, srgAssetFileName, 0); - if (!assetOutcome) - { - AZ_Error(PrecompiledShaderBuilderName, false, "Failed to retrieve Srg asset for file [%s]", srgAssetFileName.c_str()); - return; - } - srgProductAssets.push_back(assetOutcome.GetValue()); - - AssetBuilderSDK::ProductDependency productDependency; - productDependency.m_dependencyId = assetOutcome.GetValue().GetId(); - productDependency.m_flags = AZ::Data::ProductDependencyInfo::CreateFlags(AZ::Data::AssetLoadBehavior::PreLoad); - jobProduct.m_dependencies.push_back(productDependency); - } - // 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; @@ -202,8 +166,7 @@ namespace AZ // Note that the Srg and Variant assets do not have embedded asset references and are processed with the RC Copy functionality RPI::ShaderAssetCreator shaderAssetCreator; shaderAssetCreator.Clone(Uuid::CreateRandom(), - shaderAsset, - srgProductAssets, + *shaderAsset, rootVariantProductAssets); Data::Asset outputShaderAsset; diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp index 8d491d5d4d..cd651b8176 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.cpp @@ -47,8 +47,7 @@ #include #include -#include "AzslBuilder.h" -#include "SrgLayoutBuilder.h" +#include "AzslCompiler.h" #include "ShaderVariantAssetBuilder.h" #include "ShaderBuilderUtility.h" #include "ShaderPlatformInterfaceRequest.h" @@ -63,19 +62,6 @@ namespace AZ static constexpr char ShaderAssetBuilderName[] = "ShaderAssetBuilder"; static constexpr uint32_t ShaderAssetBuildTimestampParam = 0; - static void AddSrgLayoutJobDependency(AssetBuilderSDK::JobDescriptor& jobDescriptor, const AssetBuilderSDK::PlatformInfo& platformInfo, AZStd::string_view fullFilePath) - { - AssetBuilderSDK::SourceFileDependency fileDependency; - fileDependency.m_sourceFileDependencyPath = fullFilePath; - - AssetBuilderSDK::JobDependency srgLayoutJobDependency; - srgLayoutJobDependency.m_jobKey = SrgLayoutBuilder::SrgLayoutBuilderJobKey; - srgLayoutJobDependency.m_platformIdentifier = platformInfo.m_identifier; - srgLayoutJobDependency.m_sourceFile = fileDependency; - srgLayoutJobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order; - jobDescriptor.m_jobDependencyList.emplace_back(srgLayoutJobDependency); - } - void ShaderAssetBuilder::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const { AZStd::string fullPath; @@ -90,20 +76,58 @@ namespace AZ // the PC's ShaderAsset). AZStd::sys_time_t shaderAssetBuildTimestamp = AZStd::GetTimeNowMicroSecond(); - // *** block (remove all this when [ATOM-4225] addressed) - AZStd::string azslFullPath; // Need to get the name of the azsl file from the .shader source asset, to be able to declare a dependency to SRG Layout Job. // and the macro options to preprocess. - auto descriptorParseOutput = ShaderBuilderUtility::LoadShaderDataJson(fullPath); - if (!descriptorParseOutput.IsSuccess()) + auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(fullPath); + if (!descriptorParseOutcome.IsSuccess()) { - AZ_Error(ShaderAssetBuilderName, false, "Failed to parse Shader Descriptor JSON: %s", descriptorParseOutput.GetError().c_str()); + AZ_Error( + ShaderAssetBuilderName, false, "Failed to parse Shader Descriptor JSON: %s", + descriptorParseOutcome.GetError().c_str()); return; } - ShaderBuilderUtility::GetAbsolutePathToAzslFile(fullPath, descriptorParseOutput.GetValue().m_source, azslFullPath); - AZ_Warning(ShaderAssetBuilderName, IO::FileIOBase::GetInstance()->Exists(azslFullPath.c_str()), "Shader program listed as the source entry does not exist: %s.", azslFullPath.c_str()); + + RPI::ShaderSourceData shaderSourceData = descriptorParseOutcome.TakeValue(); + + AZStd::string azslFullPath; + ShaderBuilderUtility::GetAbsolutePathToAzslFile(fullPath, shaderSourceData.m_source, azslFullPath); + if (!IO::FileIOBase::GetInstance()->Exists(azslFullPath.c_str())) + { + AZ_Error( + ShaderAssetBuilderName, false, "Shader program listed as the source entry does not exist: %s.", azslFullPath.c_str()); + response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed; + return; + } + + GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilderName); - // *** end block (remove when [Atom-4225]) + + // [GFX TODO] [ATOM-14966] In principle, based on macro definitions, included files can change per supervariant. + // So, the list of source asset dependencies must be collected by running MCPP on each supervariant. + // For now, we will run MCPP only once because CreateJobs() should be as light as possible. + // + // Regardless of the PlatformInfo and enabled ShaderPlatformInterfaces, the azsl file will be preprocessed + // with the sole purpose of extracting all included files. For each included file a SourceDependency will be declared. + PreprocessorData output; + buildOptions.m_compilerArguments.Merge(shaderSourceData.m_compiler); + PreprocessFile(azslFullPath, output, buildOptions.m_preprocessorSettings, true, true); + for (auto includePath : output.includedPaths) + { + // m_sourceFileDependencyList does not support paths with "." or ".." for relative lookup, but the preprocessor + // may produce path strings like "C:/a/b/c/../../d/file.azsli" so we have to normalize + AzFramework::StringFunc::Path::Normalize(includePath); + + AssetBuilderSDK::SourceFileDependency includeFileDependency; + includeFileDependency.m_sourceFileDependencyPath = includePath; + response.m_sourceFileDependencyList.emplace_back(includeFileDependency); + } + + { + // Add the AZSL as source dependency + AssetBuilderSDK::SourceFileDependency azslFileDependency; + azslFileDependency.m_sourceFileDependencyPath = azslFullPath; + response.m_sourceFileDependencyList.emplace_back(azslFileDependency); + } for (const AssetBuilderSDK::PlatformInfo& platformInfo : request.m_enabledPlatforms) { @@ -111,6 +135,10 @@ namespace AZ // Get the platform interfaces to be able to access the prepend file AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverValidShaderPlatformInterfaces(platformInfo); + if (platformInterfaces.empty()) + { + continue; + } AssetBuilderSDK::JobDescriptor jobDescriptor; jobDescriptor.m_priority = 2; @@ -118,46 +146,6 @@ namespace AZ jobDescriptor.m_critical = true; jobDescriptor.m_jobKey = ShaderAssetBuilderJobKey; jobDescriptor.SetPlatformIdentifier(platformInfo.m_identifier.c_str()); - - // queue up AzslBuilder dependencies: - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - AddAzslBuilderJobDependency(jobDescriptor, platformInfo.m_identifier, shaderPlatformInterface->GetAPIName().GetCStr(), fullPath); - - {// *** block (remove all this when [ATOM-4225] addressed) - // this is the same code as in AzslBuilder.cpp's CreateJobs. This is not supposed to be repeated here (temporary hack), so not factorized. refer to AzslBuilder.cpp for code comments - AZStd::string prependedAzslSourceCode; - RHI::PrependArguments args; - args.m_sourceFile = fullPath.c_str(); - args.m_prependFile = shaderPlatformInterface->GetAzslHeader(platformInfo); - args.m_addSuffixToFileName = shaderPlatformInterface->GetAPIName().GetCStr(); - args.m_destinationStringOpt = &prependedAzslSourceCode; - - if (RHI::PrependFile(args) == fullPath) - { - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed; - return; - } - AZStd::string originalLocation; - AzFramework::StringFunc::Path::GetFullPath(fullPath.c_str(), originalLocation); - AZStd::string prependedPath = ShaderBuilderUtility::DumpAzslPrependedCode( - ShaderAssetBuilderName, prependedAzslSourceCode, originalLocation, ShaderBuilderUtility::ExtractStemName(fullPath.c_str()), shaderPlatformInterface->GetAPIName().GetStringView()); - PreprocessorData output; - buildOptions.m_compilerArguments.Merge(descriptorParseOutput.GetValue().m_compiler); - 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 - // is only for diagnostics, because a preprocessed (flattened) azsl file contains - // all the SRG data it needs. - AddSrgLayoutJobDependency(jobDescriptor, platformInfo, azslFullPath); - for (auto included : output.includedPaths) - { - AddSrgLayoutJobDependency(jobDescriptor, platformInfo, included.c_str()); - } - AZ::IO::SystemFile::Delete(prependedPath.c_str()); // don't let that intermediate file dirty a folder under source version control. - }// *** end block remove when [Atom-4225] - } jobDescriptor.m_jobParameters.emplace(ShaderAssetBuildTimestampParam, AZStd::to_string(shaderAssetBuildTimestamp)); response.m_createJobOutputs.push_back(jobDescriptor); @@ -166,141 +154,55 @@ namespace AZ response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; } - static AssetBuilderSDK::ProcessJobResultCode CompileForAPI( - const ShaderBuilderUtility::AzslSubProducts::Paths& pathOfProductFiles, - RPI::ShaderAssetCreator& shaderAssetCreator, - RHI::ShaderPlatformInterface* shaderPlatformInterface, - AssetBuilderSDK::ProcessJobResponse& response, - AzslData& azslData, - const RHI::ShaderCompilerArguments& shaderCompilerArguments, - RPI::Ptr shaderOptionGroupLayout, - const RPI::ShaderSourceData& shaderSourceDataDescriptor, - AZStd::sys_time_t shaderAssetBuildTimestamp, - const ShaderResourceGroupAssets& srgAssets, - BindingDependencies& bindingDependencies, - const RootConstantData& rootConstantData, - const AssetBuilderSDK::ProcessJobRequest& request) + static bool SerializeOutShaderAsset(Data::Asset shaderAsset, + const AZStd::string& tempDirPath, + AssetBuilderSDK::ProcessJobResponse& response) { - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - - const AZStd::string& tempDirPath = request.m_tempDirPath; - - // discover entry points - MapOfStringToStageType shaderEntryPoints; - if (shaderSourceDataDescriptor.m_programSettings.m_entryPoints.empty()) + AZStd::string shaderAssetFileName = AZStd::string::format("%s.%s", shaderAsset->GetName().GetCStr(), RPI::ShaderAsset::Extension); + AZStd::string shaderAssetOutputPath; + AzFramework::StringFunc::Path::ConstructFull(tempDirPath.data(), shaderAssetFileName.data(), shaderAssetOutputPath, true); + + if (!Utils::SaveObjectToFile(shaderAssetOutputPath, DataStream::ST_BINARY, shaderAsset.Get())) { - AZ_TracePrintf(ShaderAssetBuilderName, "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); - ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslData.m_functions, shaderEntryPoints); + AZ_Error(ShaderAssetBuilderName, false, "Failed to output Shader Descriptor"); + return false; } - else + + AssetBuilderSDK::JobProduct shaderJobProduct; + if (!AssetBuilderSDK::OutputObject(shaderAsset.Get(), shaderAssetOutputPath, azrtti_typeid(), + aznumeric_cast(RPI::ShaderAssetSubId::ShaderAsset), shaderJobProduct)) { - for (auto& iter : shaderSourceDataDescriptor.m_programSettings.m_entryPoints) - { - shaderEntryPoints[iter.m_name] = iter.m_type; - } + AZ_Error(ShaderAssetBuilderName, false, "Failed to output product dependencies."); + return false; } + response.m_outputProducts.push_back(AZStd::move(shaderJobProduct)); + + return true; + } - // Check if we were canceled before we do any heavy processing of - // the shader data (compiling the shader kernels, processing SRG - // and pipeline layout data, etc.). - if (jobCancelListener.IsCancelled()) - { - return AssetBuilderSDK::ProcessJobResult_Cancelled; - } - - // Signal the begin of shader data for an RHI API. - shaderAssetCreator.BeginAPI(shaderPlatformInterface->GetAPIType()); - RHI::Ptr pipelineLayoutDescriptor = ShaderBuilderUtility::BuildPipelineLayoutDescriptorForApi( - ShaderAssetBuilderName, shaderPlatformInterface, bindingDependencies, srgAssets, shaderEntryPoints, shaderCompilerArguments, &rootConstantData); - if (!pipelineLayoutDescriptor) - { - AZ_Error(ShaderAssetBuilderName, false, "Failed to build pipeline layout descriptor for api=[%s]", - shaderPlatformInterface->GetAPIName().GetCStr()); - AssetBuilderSDK::ProcessJobResult_Failed; - } - for (const auto& srgAsset : srgAssets) - { - shaderAssetCreator.AddShaderResourceGroupAsset(srgAsset); - } - shaderAssetCreator.SetPipelineLayout(pipelineLayoutDescriptor); - - // Generate shader source. - AZStd::string hlslSourcePath = pathOfProductFiles[ShaderBuilderUtility::AzslSubProducts::hlsl]; - Outcome hlslSourceContent = Utils::ReadFile(hlslSourcePath); - if (!hlslSourceContent.IsSuccess()) - { - AZ_Error(ShaderAssetBuilderName, false, "Failed to obtain shader source from %s. [%s]", hlslSourcePath.c_str(), hlslSourceContent.TakeError().c_str()); - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // The root ShaderVariantAsset needs to be created with the known uuid of the source .shader asset because - // the ShaderAsset owns a Data::Asset<> reference that gets serialized. It must have the correct uuid - // so the root ShaderVariantAsset is found when the ShaderAsset is deserialized. - AZStd::string fullSourcePath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.c_str(), request.m_sourceFile.c_str(), fullSourcePath, true); - const uint32_t productSubID = RPI::ShaderAsset::MakeAssetProductSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), - aznumeric_cast(RPI::ShaderAssetSubId::RootShaderVariantAsset)); - auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(fullSourcePath, productSubID); - AZ_Assert(assetIdOutcome.IsSuccess(), "Failed to get AssetId from shader %s", fullSourcePath.c_str()); - const Data::AssetId variantAssetId = assetIdOutcome.TakeValue(); - - // We always include the root shader variant (all options are unspecified) in the ShaderAsset itself. - ShaderVariantCreationContext variantCreationContext = { variantAssetId, hlslSourcePath, hlslSourceContent.GetValue(), shaderSourceDataDescriptor, - tempDirPath, request.m_platformInfo, *shaderOptionGroupLayout, shaderEntryPoints, shaderAssetBuildTimestamp }; - AZ::Outcome, AZStd::string> outcomeForShaderVariantAsset = ShaderVariantAssetBuilder::CreateShaderVariantAssetForAPI( - RPI::ShaderVariantListSourceData::VariantInfo(), - variantCreationContext, - *shaderPlatformInterface, - azslData, - shaderCompilerArguments, - pathOfProductFiles[ShaderBuilderUtility::AzslSubProducts::om], - pathOfProductFiles[ShaderBuilderUtility::AzslSubProducts::ia]); - if (!outcomeForShaderVariantAsset.IsSuccess()) - { - AZ_Error(ShaderAssetBuilderName, false, "Failed to serialize out the root shader variant for API [%s]: %s" - , shaderPlatformInterface->GetAPIName().GetCStr(), outcomeForShaderVariantAsset.GetError().c_str()); - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // Time to save, for the given rhi::api, the root shader variant as an asset. - Data::Asset shaderVariantAsset = outcomeForShaderVariantAsset.TakeValue(); - - AssetBuilderSDK::JobProduct variantAssetProduct; - if (!ShaderVariantAssetBuilder::SerializeOutShaderVariantAsset(shaderVariantAsset, fullSourcePath, tempDirPath, - *shaderPlatformInterface, productSubID, variantAssetProduct)) - { - AZ_Error(ShaderAssetBuilderName, false, "Failed to serialize out the root shader variant for API [%s]" - , shaderPlatformInterface->GetAPIName().GetCStr()); - return AssetBuilderSDK::ProcessJobResult_Failed; - } - response.m_outputProducts.push_back(variantAssetProduct); - - // add byproducts as job output products: - if (variantCreationContext.m_outputByproducts) - { - uint32_t subProductType = aznumeric_cast(RPI::ShaderAssetSubId::GeneratedHlslSource) + 1; - for (const AZStd::string& byproduct : variantCreationContext.m_outputByproducts->m_intermediatePaths) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = byproduct; - jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); - jobProduct.m_productSubID = RPI::ShaderAsset::MakeAssetProductSubId(shaderPlatformInterface->GetAPIUniqueIndex(), subProductType++); - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - } - - shaderAssetCreator.SetRootShaderVariantAsset(shaderVariantAsset); - - // Populate the shader asset with all entry stage attributes + static AZ::Outcome BuildAttributesMap( + const RHI::ShaderPlatformInterface* shaderPlatformInterface, + const AzslData& azslData, + const MapOfStringToStageType& shaderEntryPoints, + bool& hasRasterProgram) + { + hasRasterProgram = false; + bool hasComputeProgram = false; + bool hasRayTracingProgram = false; RHI::ShaderStageAttributeMapList attributeMaps; attributeMaps.resize(RHI::ShaderStageCount); - for (const auto& shaderEntry : shaderSourceDataDescriptor.m_programSettings.m_entryPoints) + for (const auto& shaderEntryPoint : shaderEntryPoints) { - auto findId = AZStd::find_if(AZ_BEGIN_END(azslData.m_functions), [&shaderEntry](const auto& func) - { - return func.m_name == shaderEntry.m_name; - }); + auto shaderEntryName = shaderEntryPoint.first; + auto shaderStageType = shaderEntryPoint.second; + auto assetBuilderShaderType = ShaderBuilderUtility::ToAssetBuilderShaderType(shaderStageType); + hasRasterProgram |= shaderPlatformInterface->IsShaderStageForRaster(assetBuilderShaderType); + hasComputeProgram |= shaderPlatformInterface->IsShaderStageForCompute(assetBuilderShaderType); + hasRayTracingProgram |= shaderPlatformInterface->IsShaderStageForRayTracing(assetBuilderShaderType); + + auto findId = AZStd::find_if(AZ_BEGIN_END(azslData.m_functions), [&shaderEntryPoint](const auto& func) { + return func.m_name == shaderEntryPoint.first; + }); if (findId == azslData.m_functions.end()) { @@ -309,7 +211,7 @@ namespace AZ continue; } - const auto shaderStage = ToRHIShaderStage(ShaderBuilderUtility::ToAssetBuilderShaderType(shaderEntry.m_type)); + const auto shaderStage = ToRHIShaderStage(assetBuilderShaderType); for (const auto& attr : findId->attributesList) { // Some stages like RHI::ShaderStage::Tessellation are compound and consist of two or more shader entries @@ -320,221 +222,461 @@ namespace AZ attributeMaps[stageIndex][attributeName] = args; } } - shaderAssetCreator.SetShaderStageAttributeMapList(attributeMaps); - shaderAssetCreator.EndAPI(); - - return AssetBuilderSDK::ProcessJobResult_Success; - } - - static bool SerializeOutShaderAsset(Data::Asset shaderAsset, - const AZStd::string& tempDirPath, - AssetBuilderSDK::ProcessJobResponse& response) - { - AZStd::string shaderAssetFileName = AZStd::string::format("%s.%s", shaderAsset->GetName().GetCStr(), RPI::ShaderAsset::Extension); - AZStd::string shaderAssetOutputPath; - AzFramework::StringFunc::Path::ConstructFull(tempDirPath.data(), shaderAssetFileName.data(), shaderAssetOutputPath, true); - - if (!Utils::SaveObjectToFile(shaderAssetOutputPath, DataStream::ST_BINARY, shaderAsset.Get())) + if (hasRasterProgram && hasComputeProgram) { - AZ_Error(ShaderAssetBuilderName, false, "Failed to output Shader Descriptor"); - return false; + return AZ::Failure(AZStd::string(" Shader asset descriptor defines both a raster entry point and a compute entry point.")); } - AssetBuilderSDK::JobProduct shaderJobProduct; - if (!AssetBuilderSDK::OutputObject(shaderAsset.Get(), shaderAssetOutputPath, azrtti_typeid(), - aznumeric_cast(RPI::ShaderAssetSubId::ShaderAsset), shaderJobProduct)) + if (!hasRasterProgram && !hasComputeProgram && !hasRayTracingProgram) { - AZ_Error(ShaderAssetBuilderName, false, "Failed to output product dependencies."); - return false; + AZStd::string entryPointNames = ShaderBuilderUtility::GetAcceptableDefaultEntryPointNames(azslData); + return AZ::Failure( + AZStd::string::format( "Shader asset descriptor has a program variant that does not define any entry points. Either declare entry " + "points in the .shader file, or use one of the available default names (not case-sensitive): [%s]", + entryPointNames.c_str())); } - response.m_outputProducts.push_back(AZStd::move(shaderJobProduct)); - return true; + return AZ::Success(attributeMaps); } void ShaderAssetBuilder::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const { const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks(); - AZStd::string fullSourcePath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.c_str(), request.m_sourceFile.c_str(), fullSourcePath, true); + AZStd::string shaderFullPath; + AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.c_str(), request.m_sourceFile.c_str(), shaderFullPath, true); + // Save .shader file name (no extension and no parent directory path) + AZStd::string shaderFileName; + AzFramework::StringFunc::Path::GetFileName(request.m_sourceFile.c_str(), shaderFileName); - RPI::ShaderAssetCreator shaderAssetCreator; - shaderAssetCreator.Begin(Uuid::CreateRandom()); + // No error checking because the same calls were already executed during CreateJobs() + auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(shaderFullPath); + RPI::ShaderSourceData shaderSourceData = descriptorParseOutcome.TakeValue(); + AZStd::string azslFullPath; + ShaderBuilderUtility::GetAbsolutePathToAzslFile(shaderFullPath, shaderSourceData.m_source, azslFullPath); + AZ_TracePrintf(ShaderAssetBuilderName, "Original AZSL File: %s \n", azslFullPath.c_str()); - // read .shader -> access azsl path -> make absolute - RPI::ShaderSourceData shaderAssetSource; - AZStd::shared_ptr inputFiles = ShaderBuilderUtility::PrepareSourceInput(ShaderAssetBuilderName, fullSourcePath, shaderAssetSource); - if (!inputFiles) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilderName); - - // Save .shader file name - AzFramework::StringFunc::Path::GetFileName(request.m_sourceFile.data(), inputFiles->m_shaderFileName); + // The directory where the Azsl file was found must be added to the list of include paths + AZStd::string azslFolderPath; + AzFramework::StringFunc::Path::GetFolderPath(azslFullPath.c_str(), azslFolderPath); + GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilderName, azslFolderPath.c_str()); // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces; - ShaderPlatformInterfaceRequestBus::BroadcastResult(platformInterfaces, &ShaderPlatformInterfaceRequest::GetShaderPlatformInterface, request.m_platformInfo); - // Generate shaders for each of those ShaderPlatformInterfaces. - uint32_t countOfCompiledPlatformInterfaces = 0; - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) + AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces( + request.m_platformInfo, shaderSourceData); + if (platformInterfaces.empty()) { - ShaderResourceGroupAssets srgAssets; - RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); - - if (!shaderPlatformInterface) - { - AZ_Error(ShaderAssetBuilderName, false, "ShaderPlatformInterface for [%s] is not registered, can't compile [%s]", request.m_platformInfo.m_identifier.c_str(), request.m_sourceFile.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (shaderAssetSource.IsRhiBackendDisabled(shaderPlatformInterface->GetAPIName())) - { - // Gracefully do nothing and continue with the next shaderPlatformInterface. - AZ_TracePrintf( - ShaderAssetBuilderName, "Skipping shader compilation [%s] for API [%s]\n", inputFiles->m_shaderFileName.c_str(), - shaderPlatformInterface->GetAPIName().GetCStr()); - continue; - } - - AZStd::sys_time_t shaderAssetBuildTimestamp = 0; - auto shaderAssetBuildTimestampIterator = request.m_jobDescription.m_jobParameters.find(ShaderAssetBuildTimestampParam); - if (shaderAssetBuildTimestampIterator != request.m_jobDescription.m_jobParameters.end()) - { - shaderAssetBuildTimestamp = AZStd::stoull(shaderAssetBuildTimestampIterator->second); - - if (AZStd::to_string(shaderAssetBuildTimestamp) != shaderAssetBuildTimestampIterator->second) - { - AZ_Assert(false, "Incorrect conversion of ShaderAssetBuildTimestampParam"); - return; - } - } - - AzslData azslData(inputFiles); - - AZ_TraceContext("Platform API", AZStd::string{ shaderPlatformInterface->GetAPIName().GetStringView() }); - AZ_TracePrintf(ShaderAssetBuilderName, "Preprocessed AZSL File: %s \n", azslData.m_preprocessedFullPath.c_str()); - - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - // obtain the build artifacts from the azsl builder: - auto azslArtifactsOutcome = ShaderBuilderUtility::ObtainBuildArtifactsFromAzslBuilder(ShaderAssetBuilderName, fullSourcePath, shaderPlatformInterface->GetAPIType(), request.m_platformInfo.m_identifier); - if (!azslArtifactsOutcome.IsSuccess()) - { - // If it failed, it may be because the .shader source file created no products! (this happens when the build options are similar) - // (the .azsl file *always* produces AzslBuilder artifacts. The.shader file *sometimes* produces AzslBuilder artifacts, when it has build options that have to be accounted for) - // If there are no artifacts from the .shader, then we fall back to the ones from the .azsl: - azslArtifactsOutcome = ShaderBuilderUtility::ObtainBuildArtifactsFromAzslBuilder(ShaderAssetBuilderName, inputFiles->m_azslSourceFullPath, shaderPlatformInterface->GetAPIType(), request.m_platformInfo.m_identifier); - if (!azslArtifactsOutcome.IsSuccess()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - } - - shaderAssetCreator.SetName(Name(azslData.m_sources->m_shaderFileName)); - shaderAssetCreator.SetDrawListName(Name(shaderAssetSource.m_drawListName)); - - shaderAssetCreator.SetShaderAssetBuildTimestamp(shaderAssetBuildTimestamp); - - BindingDependencies bindingDependencies; - RootConstantData rootConstantData; - AssetBuilderSDK::ProcessJobResultCode azslJsonReadResult = ShaderBuilderUtility::PopulateAzslDataFromJsonFiles( - ShaderAssetBuilderName, - azslArtifactsOutcome.GetValue(), - azslData, - srgAssets, - shaderOptionGroupLayout, - bindingDependencies, - rootConstantData); - if (azslJsonReadResult != AssetBuilderSDK::ProcessJobResult_Success) - - { - response.m_resultCode = azslJsonReadResult; - return; - } - - shaderAssetCreator.SetName(Name(azslData.m_sources->m_shaderFileName)); - shaderAssetCreator.SetDrawListName(Name(shaderAssetSource.m_drawListName)); - shaderAssetCreator.SetShaderAssetBuildTimestamp(shaderAssetBuildTimestamp); - - // The ShaderOptionGroupLayout dictates what options/range can be used to create variants - shaderAssetCreator.SetShaderOptionGroupLayout(shaderOptionGroupLayout); - - AZ_TracePrintf(ShaderAssetBuilderName, "Original AZSL File: %s \n", azslData.m_sources->m_azslSourceFullPath.c_str()); - - const uint32_t usedShaderOptionBits = shaderOptionGroupLayout->GetBitSize(); - AZ_TracePrintf(ShaderAssetBuilderName, "Note: This shader uses %u of %u available shader variant key bits. \n", usedShaderOptionBits, RPI::ShaderVariantKeyBitCount); - - // The idea of this merge is that we have compiler options coming from 2 source: - // global options (from project Config/), and .shader options. - // We define a merge behavior that is: ".shader wins if set" - RHI::ShaderCompilerArguments mergedArguments = buildOptions.m_compilerArguments; - mergedArguments.Merge(shaderAssetSource.m_compiler); - - AssetBuilderSDK::ProcessJobResultCode compileResult = - CompileForAPI( - azslArtifactsOutcome.GetValue(), - shaderAssetCreator, - shaderPlatformInterface, - response, - azslData, - mergedArguments, - shaderOptionGroupLayout, - shaderAssetSource, - shaderAssetBuildTimestamp, - srgAssets, - bindingDependencies, - rootConstantData, - request); - if (compileResult != AssetBuilderSDK::ProcessJobResult_Success) - { - response.m_resultCode = compileResult; - return; - } - ++countOfCompiledPlatformInterfaces; - } // end for all platforms - - if (!countOfCompiledPlatformInterfaces) - { - AZ_TracePrintf( - ShaderAssetBuilderName, "No azshader is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", request.m_sourceFile.c_str()); + //No work to do. Exit gracefully. + AZ_TracePrintf(ShaderAssetBuilderName, + "No azshader is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", + shaderFullPath.c_str()); response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; return; } + // Get the time stamp string as sys_time_t, and also convert back to string to make sure it was converted correctly. + AZStd::sys_time_t shaderAssetBuildTimestamp = 0; + auto shaderAssetBuildTimestampIterator = request.m_jobDescription.m_jobParameters.find(ShaderAssetBuildTimestampParam); + if (shaderAssetBuildTimestampIterator != request.m_jobDescription.m_jobParameters.end()) + { + shaderAssetBuildTimestamp = AZStd::stoull(shaderAssetBuildTimestampIterator->second); + + if (AZStd::to_string(shaderAssetBuildTimestamp) != shaderAssetBuildTimestampIterator->second) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + AZ_Assert(false, "Incorrect conversion of ShaderAssetBuildTimestampParam"); + return; + } + } + + auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceData); + + RPI::ShaderAssetCreator shaderAssetCreator; + shaderAssetCreator.Begin(Uuid::CreateRandom()); + + shaderAssetCreator.SetName(AZ::Name{shaderFileName.c_str()}); + shaderAssetCreator.SetDrawListName(Name(shaderSourceData.m_drawListName)); + shaderAssetCreator.SetShaderAssetBuildTimestamp(shaderAssetBuildTimestamp); + + // The ShaderOptionGroupLayout must be the same across all supervariants because + // there can be only a single ShaderVariantTreeAsset per ShaderAsset. + // We will store here the one that results when the *.azslin file is + // compiled for the default, nameless, supervariant. + // For all other supervariants we just make sure the hashes are the same + // as this one. + RPI::Ptr finalShaderOptionGroupLayout = nullptr; + + + // Time to describe the big picture. + // 1- Preprocess an AZSL file with MCPP (a C-Preprocessor), and generate a flat AZSL file without #include lines and any macros in it. + // Let's call it the Flat-AZSL file. There are two levels of macro definition that need to be merged before we can invoke MCPP: + // 1.1- From /Config/shader_global_build_options.json, which we have stored in the local variable @buildOptions. + // 1.2- From the "Supervariant" definition key, which can be different for each supervariant. + // 2- There will be one Flat-AZSL per supervariant. Each Flat-AZSL will be transpiled to HLSL with AZSLc. This means there will be one HLSL file + // per supervariant. + // 3- The generated HLSL (one HLSL per supervariant) file may contain C-Preprocessor Macros inserted by AZSLc. And that file will be given to DXC. + // DXC has a preprocessor embedded in it. DXC will be executed once for each entry function listed in the .shader file. + // There will be one DXIL compiled binary for each entry function. All the DXIL compiled binaries for each supervariant will be combined + // in the ROOT ShaderVariantAsset. + + // Remark: In general, the work done by the ShaderVariantAssetBuilder is similar, but it will start from the HLSL file created; in step 2, mentioned above; by this builder, + // for each supervariant. + + // At this moment We have global build options that should be merged with the build options that are common + // to all the supervariants of this shader. + buildOptions.m_compilerArguments.Merge(shaderSourceData.m_compiler); + + for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) + { + AZStd::string apiName(shaderPlatformInterface->GetAPIName().GetCStr()); + AZ_TraceContext("Platform API", apiName); + // Signal the begin of shader data for an RHI API. + shaderAssetCreator.BeginAPI(shaderPlatformInterface->GetAPIType()); + + // Each shaderPlatformInterface has its own azsli header that needs to be prepended to the AZSL file before + // preprocessing. We will create a new temporary file that contains the combined data. + RHI::PrependArguments args; + args.m_sourceFile = azslFullPath.c_str(); + args.m_prependFile = shaderPlatformInterface->GetAzslHeader(request.m_platformInfo); + args.m_addSuffixToFileName = apiName.c_str(); + args.m_destinationFolder = request.m_tempDirPath.c_str(); + + AZStd::string prependedAzslFilePath = RHI::PrependFile(args); + if (prependedAzslFilePath == azslFullPath) + { + // The specific error is already reported by RHI::PrependFile(). + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + + // Cache common AZSLC invokation arguments related with the current RHI Backend. + // Each supervariant can, optionally, remove or add more arguments for AZSLc. + AZStd::string commonAzslcCompilerParameters = + shaderPlatformInterface->GetAzslCompilerParameters(buildOptions.m_compilerArguments); + commonAzslcCompilerParameters += " "; + commonAzslcCompilerParameters += + shaderPlatformInterface->GetAzslCompilerWarningParameters(buildOptions.m_compilerArguments); + AtomShaderConfig::AddParametersFromConfigFile(commonAzslcCompilerParameters, request.m_platformInfo); + + // The register number only makes sense if the platform uses "spaces", + // since the register Id of the resource will not change even if the pipeline layout changes. + // We can pass in a default ShaderCompilerArguments because all we care about is whether the shaderPlatformInterface + // appends the "--use-spaces" flag. + const bool platformUsesRegisterSpaces = + (AzFramework::StringFunc::Find(commonAzslcCompilerParameters, "--use-spaces") != AZStd::string::npos); + + uint32_t supervariantIndex = 0; + for (const auto& supervariantInfo : supervariantList) + { + AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); + if (jobCancelListener.IsCancelled()) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; + return; + } + + shaderAssetCreator.BeginSupervariant(supervariantInfo.m_name); + + // Let's combine the global macro definitions, with the macro definitions particular to this + // supervariant. Two steps: + // 1- Supervariants can specify which macros to remove from the global definitions. + AZStd::vector macroDefinitionNamesToRemove = supervariantInfo.GetCombinedListOfMacroDefinitionNamesToRemove(); + PreprocessorOptions preprocessorOptions = buildOptions.m_preprocessorSettings; + preprocessorOptions.RemovePredefinedMacros(macroDefinitionNamesToRemove); + // 2- Supervariants can specify which macros to add. + AZStd::vector macroDefinitionsToAdd = supervariantInfo.GetMacroDefinitionsToAdd(); + preprocessorOptions.m_predefinedMacros.insert( + preprocessorOptions.m_predefinedMacros.end(), macroDefinitionsToAdd.begin(), macroDefinitionsToAdd.end()); + // Run the preprocessor. + PreprocessorData output; + PreprocessFile(prependedAzslFilePath, output, preprocessorOptions, true, true); + RHI::ReportErrorMessages(ShaderAssetBuilderName, output.diagnostics); + // Dump the preprocessed string as a flat AZSL file with extension .azslin, which will be given to AZSLc to generate the HLSL file. + AZStd::string superVariantAzslinStemName = shaderFileName; + if (!supervariantInfo.m_name.IsEmpty()) + { + superVariantAzslinStemName += AZStd::string::format("-%s", supervariantInfo.m_name.GetCStr()); + } + AZStd::string azslinFullPath = ShaderBuilderUtility::DumpPreprocessedCode( + ShaderAssetBuilderName, output.code, request.m_tempDirPath, superVariantAzslinStemName, + apiName); + if (azslinFullPath.empty()) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + AZ_TracePrintf(ShaderAssetBuilderName, "Preprocessed AZSL File: %s \n", prependedAzslFilePath.c_str()); + + // Before transpiling the flat-AZSL(.azslin) file into HLSL it is necessary + // to setup the AZSLc arguments as required by the current supervariant. + AZStd::string azslcCompilerParameters = supervariantInfo.GetCustomizedArgumentsForAzslc(commonAzslcCompilerParameters); + + // Ready to transpile the azslin file into HLSL. + ShaderBuilder::AzslCompiler azslc(azslinFullPath); + AZStd::string hlslFullPath = AZStd::string::format("%s_%s.hlsl", superVariantAzslinStemName.c_str(), apiName.c_str()); + AzFramework::StringFunc::Path::Join(request.m_tempDirPath.c_str(), hlslFullPath.c_str(), hlslFullPath, true); + auto emitFullOutcome = azslc.EmitFullData(azslcCompilerParameters, hlslFullPath); + if (!emitFullOutcome.IsSuccess()) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + ShaderBuilderUtility::AzslSubProducts::Paths subProductsPaths = emitFullOutcome.TakeValue(); + + // In addition to the hlsl file, there are other json files that were generated. + // Each output file will become a product. + for (int i = 0; i < subProductsPaths.size(); ++i) + { + AssetBuilderSDK::JobProduct jobProduct; + jobProduct.m_productFileName = subProductsPaths[i]; + static const AZ::Uuid AzslOutcomeType = "{6977AEB1-17AD-4992-957B-23BB2E85B18B}"; + jobProduct.m_productAssetType = AzslOutcomeType; + // uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType + jobProduct.m_productSubID = RPI::ShaderAsset::MakeProductAssetSubId( + shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, + aznumeric_cast(ShaderBuilderUtility::AzslSubProducts::SubList[i])); + jobProduct.m_dependenciesHandled = true; + // Note that the output products are not traditional product assets that will be used by the game project. + // They are artifacts that are produced once, cached, and used later by other AssetBuilders as a way to centralize + // build organization. + response.m_outputProducts.push_back(AZStd::move(jobProduct)); + } + + AZStd::shared_ptr files(new ShaderFiles); + AzslData azslData(files); + azslData.m_preprocessedFullPath = azslinFullPath; + RPI::ShaderResourceGroupLayoutList srgLayoutList; + RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); + BindingDependencies bindingDependencies; + RootConstantData rootConstantData; + AssetBuilderSDK::ProcessJobResultCode azslJsonReadResult = ShaderBuilderUtility::PopulateAzslDataFromJsonFiles( + ShaderAssetBuilderName, subProductsPaths, platformUsesRegisterSpaces, azslData, srgLayoutList, shaderOptionGroupLayout, + bindingDependencies, rootConstantData); + if (azslJsonReadResult != AssetBuilderSDK::ProcessJobResult_Success) + + { + response.m_resultCode = azslJsonReadResult; + return; + } + + shaderAssetCreator.SetSrgLayoutList(srgLayoutList); + + if (!finalShaderOptionGroupLayout) + { + finalShaderOptionGroupLayout = shaderOptionGroupLayout; + shaderAssetCreator.SetShaderOptionGroupLayout(finalShaderOptionGroupLayout); + const uint32_t usedShaderOptionBits = shaderOptionGroupLayout->GetBitSize(); + AZ_TracePrintf( + ShaderAssetBuilderName, "Note: This shader uses %u of %u available shader variant key bits. \n", + usedShaderOptionBits, RPI::ShaderVariantKeyBitCount); + } + else + { + if (finalShaderOptionGroupLayout->GetHash() != shaderOptionGroupLayout->GetHash()) + { + AZ_Error( + ShaderAssetBuilderName, false, "Supervariant %s has a different ShaderOptionGroupLayout", + supervariantInfo.m_name.GetCStr()) + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + } + + // Discover entry points & type of programs. + MapOfStringToStageType shaderEntryPoints; + if (shaderSourceData.m_programSettings.m_entryPoints.empty()) + { + AZ_TracePrintf( + ShaderAssetBuilderName, + "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); + ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslData.m_functions, shaderEntryPoints); + } + else + { + for (const auto& entryPoint : shaderSourceData.m_programSettings.m_entryPoints) + { + shaderEntryPoints[entryPoint.m_name] = entryPoint.m_type; + } + } + + bool hasRasterProgram = false; + auto attributeMapsOutcome = BuildAttributesMap(shaderPlatformInterface, azslData, shaderEntryPoints, hasRasterProgram); + if (!attributeMapsOutcome.IsSuccess()) + { + AZ_Error(ShaderAssetBuilderName, false, "%s\n", attributeMapsOutcome.GetError().c_str()); + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + shaderAssetCreator.SetShaderStageAttributeMapList(attributeMapsOutcome.TakeValue()); + + // Check if we were canceled before we do any heavy processing of + // the shader data (compiling the shader kernels, processing SRG + // and pipeline layout data, etc.). + if (jobCancelListener.IsCancelled()) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; + return; + } + + RHI::Ptr pipelineLayoutDescriptor = + ShaderBuilderUtility::BuildPipelineLayoutDescriptorForApi( + ShaderAssetBuilderName, srgLayoutList, shaderEntryPoints, buildOptions.m_compilerArguments, rootConstantData, + shaderPlatformInterface, bindingDependencies); + if (!pipelineLayoutDescriptor) + { + AZ_Error( + ShaderAssetBuilderName, false, "Failed to build pipeline layout descriptor for api=[%s]", + shaderPlatformInterface->GetAPIName().GetCStr()); + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + + shaderAssetCreator.SetPipelineLayout(pipelineLayoutDescriptor); + + + RPI::ShaderInputContract shaderInputContract; + RPI::ShaderOutputContract shaderOutputContract; + size_t colorAttachmentCount = 0; + ShaderBuilderUtility::CreateShaderInputAndOutputContracts( + azslData, shaderEntryPoints, *shaderOptionGroupLayout.get(), + subProductsPaths[ShaderBuilderUtility::AzslSubProducts::om], + subProductsPaths[ShaderBuilderUtility::AzslSubProducts::ia], + shaderInputContract, shaderOutputContract, colorAttachmentCount); + shaderAssetCreator.SetInputContract(shaderInputContract); + shaderAssetCreator.SetOutputContract(shaderOutputContract); + + if (hasRasterProgram) + { + // Set the various states to what is in the descriptor. + const RHI::TargetBlendState& targetBlendState = shaderSourceData.m_blendState; + RHI::RenderStates renderStates; + renderStates.m_rasterState = shaderSourceData.m_rasterState; + renderStates.m_depthStencilState = shaderSourceData.m_depthStencilState; + // [GFX TODO][ATOM-930] We should support unique blend states per RT + for (size_t i = 0; i < colorAttachmentCount; ++i) + { + renderStates.m_blendState.m_targets[i] = targetBlendState; + } + + shaderAssetCreator.SetRenderStates(renderStates); + } + + Outcome hlslSourceCodeOutcome = Utils::ReadFile(hlslFullPath); + if (!hlslSourceCodeOutcome.IsSuccess()) + { + AZ_Error( + ShaderAssetBuilderName, false, "Failed to obtain shader source from %s. [%s]", hlslFullPath.c_str(), + hlslSourceCodeOutcome.GetError().c_str()); + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + AZStd::string hlslSourceCode = hlslSourceCodeOutcome.TakeValue(); + + // The root ShaderVariantAsset needs to be created with the known uuid of the source .shader asset because + // the ShaderAsset owns a Data::Asset<> reference that gets serialized. It must have the correct uuid + // so the root ShaderVariantAsset is found when the ShaderAsset is deserialized. + uint32_t rootVariantProductSubId = RPI::ShaderAsset::MakeProductAssetSubId( + shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, + aznumeric_cast(RPI::ShaderAssetSubId::RootShaderVariantAsset)); + auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(shaderFullPath, rootVariantProductSubId); + AZ_Assert(assetIdOutcome.IsSuccess(), "Failed to get AssetId from shader %s", shaderFullPath.c_str()); + const Data::AssetId variantAssetId = assetIdOutcome.TakeValue(); + + RPI::ShaderVariantListSourceData::VariantInfo rootVariantInfo; + ShaderVariantCreationContext shaderVariantCreationContext = { + *shaderPlatformInterface, + request.m_platformInfo, + buildOptions.m_compilerArguments, + request.m_tempDirPath, + startTime, + shaderSourceData, + *shaderOptionGroupLayout.get(), + shaderEntryPoints, + variantAssetId, + superVariantAzslinStemName, + hlslFullPath, + hlslSourceCode}; + + + AZStd::optional outputByproducts; + auto rootShaderVariantAssetOutcome = ShaderVariantAssetBuilder::CreateShaderVariantAsset(rootVariantInfo, shaderVariantCreationContext, outputByproducts); + if (!rootShaderVariantAssetOutcome.IsSuccess()) + { + AZ_Error(ShaderAssetBuilderName, false, "%s\n", rootShaderVariantAssetOutcome.GetError().c_str()) + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + Data::Asset rootShaderVariantAsset = rootShaderVariantAssetOutcome.TakeValue(); + + shaderAssetCreator.SetRootShaderVariantAsset(rootShaderVariantAsset); + + if (!shaderAssetCreator.EndSupervariant()) + { + AZ_Error( + ShaderAssetBuilderName, false, "Failed to create shader asset for supervariant [%s]", supervariantInfo.m_name.GetCStr()) + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + + // Time to save the root variant related assets in the cache. + AssetBuilderSDK::JobProduct assetProduct; + if (!ShaderVariantAssetBuilder::SerializeOutShaderVariantAsset( + rootShaderVariantAsset, superVariantAzslinStemName, request.m_tempDirPath, *shaderPlatformInterface, + rootVariantProductSubId, + assetProduct)) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + response.m_outputProducts.push_back(assetProduct); + + if (outputByproducts) + { + // add byproducts as job output products: + uint32_t subProductType = aznumeric_cast(RPI::ShaderAssetSubId::FirstByProduct); + for (const AZStd::string& byproduct : outputByproducts.value().m_intermediatePaths) + { + AssetBuilderSDK::JobProduct jobProduct; + jobProduct.m_productFileName = byproduct; + jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); + jobProduct.m_productSubID = RPI::ShaderAsset::MakeProductAssetSubId( + shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, + subProductType++); + response.m_outputProducts.push_back(AZStd::move(jobProduct)); + } + } + + + supervariantIndex++; + + } // end for the supervariant + + shaderAssetCreator.EndAPI(); + + } // end for all ShaderPlatformInterfaces + Data::Asset shaderAsset; if (!shaderAssetCreator.End(shaderAsset)) { response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; return; } - + if (!SerializeOutShaderAsset(shaderAsset, request.m_tempDirPath, response)) { response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; return; } - + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - + const AZStd::sys_time_t endTime = AZStd::GetTimeNowTicks(); const AZStd::sys_time_t deltaTime = endTime - startTime; const float elapsedTimeSeconds = (float)(deltaTime) / (float)AZStd::GetTimeTicksPerSecond(); - + AZ_TracePrintf(ShaderAssetBuilderName, "Finished processing %s in %.2f seconds\n", request.m_sourceFile.c_str(), elapsedTimeSeconds); - - ShaderBuilderUtility::LogProfilingData(ShaderAssetBuilderName, inputFiles->m_azslFileName); + + ShaderBuilderUtility::LogProfilingData(ShaderAssetBuilderName, shaderFileName); } } // ShaderBuilder diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.h index 0be043a3eb..2f1eab202f 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder.h @@ -38,7 +38,7 @@ namespace AZ : public AssetBuilderSDK::AssetBuilderCommandBus::Handler { public: - AZ_TYPE_INFO(ShaderAssetBuilder, "{AEC304A9-940C-4851-AEF0-7D00482598F9}"); + AZ_TYPE_INFO(ShaderAssetBuilder, "{C94DA151-82BC-4475-86FA-E6C92A0BD6F8}"); static constexpr const char* ShaderAssetBuilderJobKey = "Shader Asset"; diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.cpp deleted file mode 100644 index 5758db1da2..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.cpp +++ /dev/null @@ -1,683 +0,0 @@ -/* -* 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. -*/ - -#include "ShaderAssetBuilder2.h" - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AzslBuilder.h" -#include "ShaderVariantAssetBuilder2.h" -#include "ShaderBuilderUtility.h" -#include "ShaderPlatformInterfaceRequest.h" -#include "AtomShaderConfig.h" - -#include -#include -namespace AZ -{ - namespace ShaderBuilder - { - static constexpr char ShaderAssetBuilder2Name[] = "ShaderAssetBuilder2"; - static constexpr uint32_t ShaderAssetBuildTimestampParam = 0; - - void ShaderAssetBuilder2::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const - { - AZStd::string fullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, true); - - AZ_TracePrintf(ShaderAssetBuilder2Name, "CreateJobs for Shader \"%s\"\n", fullPath.data()); - - // Used to synchronize versions of the ShaderAsset and ShaderVariantTreeAsset, especially during hot-reload. - // Note it's probably important for this to be set once outside the platform loop so every platform's ShaderAsset - // has the same value, because later the ShaderVariantTreeAsset job will fetch this value from the local ShaderAsset - // which could cross platforms (i.e. building an android ShaderVariantTreeAsset on PC would fetch the tiemstamp from - // the PC's ShaderAsset). - AZStd::sys_time_t shaderAssetBuildTimestamp = AZStd::GetTimeNowMicroSecond(); - - // Need to get the name of the azsl file from the .shader source asset, to be able to declare a dependency to SRG Layout Job. - // and the macro options to preprocess. - auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(fullPath); - if (!descriptorParseOutcome.IsSuccess()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to parse Shader Descriptor JSON: %s", - descriptorParseOutcome.GetError().c_str()); - return; - } - - RPI::ShaderSourceData shaderSourceData = descriptorParseOutcome.TakeValue(); - - AZStd::string azslFullPath; - ShaderBuilderUtility::GetAbsolutePathToAzslFile(fullPath, shaderSourceData.m_source, azslFullPath); - if (!IO::FileIOBase::GetInstance()->Exists(azslFullPath.c_str())) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Shader program listed as the source entry does not exist: %s.", azslFullPath.c_str()); - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed; - return; - } - - - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilder2Name); - - // [GFX TODO] [ATOM-14966] In principle, based on macro definitions, included files can change per supervariant. - // So, the list of source asset dependencies must be collected by running MCPP on each supervariant. - // For now, we will run MCPP only once because CreateJobs() should be as light as possible. - // - // Regardless of the PlatformInfo and enabled ShaderPlatformInterfaces, the azsl file will be preprocessed - // with the sole purpose of extracting all included files. For each included file a SourceDependency will be declared. - PreprocessorData output; - buildOptions.m_compilerArguments.Merge(shaderSourceData.m_compiler); - PreprocessFile(azslFullPath, output, buildOptions.m_preprocessorSettings, true, true); - for (auto includePath : output.includedPaths) - { - // m_sourceFileDependencyList does not support paths with "." or ".." for relative lookup, but the preprocessor - // may produce path strings like "C:/a/b/c/../../d/file.azsli" so we have to normalize - AzFramework::StringFunc::Path::Normalize(includePath); - - AssetBuilderSDK::SourceFileDependency includeFileDependency; - includeFileDependency.m_sourceFileDependencyPath = includePath; - response.m_sourceFileDependencyList.emplace_back(includeFileDependency); - } - - { - // Add the AZSL as source dependency - AssetBuilderSDK::SourceFileDependency azslFileDependency; - azslFileDependency.m_sourceFileDependencyPath = azslFullPath; - response.m_sourceFileDependencyList.emplace_back(azslFileDependency); - } - - for (const AssetBuilderSDK::PlatformInfo& platformInfo : request.m_enabledPlatforms) - { - AZ_TraceContext("For platform", platformInfo.m_identifier.data()); - - // Get the platform interfaces to be able to access the prepend file - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverValidShaderPlatformInterfaces(platformInfo); - if (platformInterfaces.empty()) - { - continue; - } - - AssetBuilderSDK::JobDescriptor jobDescriptor; - jobDescriptor.m_priority = 2; - // [GFX TODO][ATOM-2830] Set 'm_critical' back to 'false' once proper fix for Atom startup issues are in - jobDescriptor.m_critical = true; - jobDescriptor.m_jobKey = ShaderAssetBuilder2JobKey; - jobDescriptor.SetPlatformIdentifier(platformInfo.m_identifier.c_str()); - jobDescriptor.m_jobParameters.emplace(ShaderAssetBuildTimestampParam, AZStd::to_string(shaderAssetBuildTimestamp)); - - response.m_createJobOutputs.push_back(jobDescriptor); - } // for all request.m_enabledPlatforms - - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - } - - static bool SerializeOutShaderAsset(Data::Asset shaderAsset, - const AZStd::string& tempDirPath, - AssetBuilderSDK::ProcessJobResponse& response) - { - AZStd::string shaderAssetFileName = AZStd::string::format("%s.%s", shaderAsset->GetName().GetCStr(), RPI::ShaderAsset2::Extension); - AZStd::string shaderAssetOutputPath; - AzFramework::StringFunc::Path::ConstructFull(tempDirPath.data(), shaderAssetFileName.data(), shaderAssetOutputPath, true); - - if (!Utils::SaveObjectToFile(shaderAssetOutputPath, DataStream::ST_BINARY, shaderAsset.Get())) - { - AZ_Error(ShaderAssetBuilder2Name, false, "Failed to output Shader Descriptor"); - return false; - } - - AssetBuilderSDK::JobProduct shaderJobProduct; - if (!AssetBuilderSDK::OutputObject(shaderAsset.Get(), shaderAssetOutputPath, azrtti_typeid(), - aznumeric_cast(RPI::ShaderAsset2ProductSubId::ShaderAsset2), shaderJobProduct)) - { - AZ_Error(ShaderAssetBuilder2Name, false, "Failed to output product dependencies."); - return false; - } - response.m_outputProducts.push_back(AZStd::move(shaderJobProduct)); - - return true; - } - - static AZ::Outcome BuildAttributesMap( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, - const AzslData& azslData, - const MapOfStringToStageType& shaderEntryPoints, - bool& hasRasterProgram) - { - hasRasterProgram = false; - bool hasComputeProgram = false; - bool hasRayTracingProgram = false; - RHI::ShaderStageAttributeMapList attributeMaps; - attributeMaps.resize(RHI::ShaderStageCount); - for (const auto& shaderEntryPoint : shaderEntryPoints) - { - auto shaderEntryName = shaderEntryPoint.first; - auto shaderStageType = shaderEntryPoint.second; - auto assetBuilderShaderType = ShaderBuilderUtility::ToAssetBuilderShaderType(shaderStageType); - hasRasterProgram |= shaderPlatformInterface->IsShaderStageForRaster(assetBuilderShaderType); - hasComputeProgram |= shaderPlatformInterface->IsShaderStageForCompute(assetBuilderShaderType); - hasRayTracingProgram |= shaderPlatformInterface->IsShaderStageForRayTracing(assetBuilderShaderType); - - auto findId = AZStd::find_if(AZ_BEGIN_END(azslData.m_functions), [&shaderEntryPoint](const auto& func) { - return func.m_name == shaderEntryPoint.first; - }); - - if (findId == azslData.m_functions.end()) - { - // shaderData.m_functions only contains Vertex, Fragment and Compute entries for now - // Tessellation shaders will need to be handled too - continue; - } - - const auto shaderStage = ToRHIShaderStage(assetBuilderShaderType); - for (const auto& attr : findId->attributesList) - { - // Some stages like RHI::ShaderStage::Tessellation are compound and consist of two or more shader entries - const Name& attributeName = attr.first; - const RHI::ShaderStageAttributeArguments& args = attr.second; - const auto stageIndex = static_cast(shaderStage); - AZ_Assert(stageIndex < RHI::ShaderStageCount, "Invalid shader stage specified!"); - attributeMaps[stageIndex][attributeName] = args; - } - } - - if (hasRasterProgram && hasComputeProgram) - { - return AZ::Failure(AZStd::string(" Shader asset descriptor defines both a raster entry point and a compute entry point.")); - } - - if (!hasRasterProgram && !hasComputeProgram && !hasRayTracingProgram) - { - AZStd::string entryPointNames = ShaderBuilderUtility::GetAcceptableDefaultEntryPointNames(azslData); - return AZ::Failure( - AZStd::string::format( "Shader asset descriptor has a program variant that does not define any entry points. Either declare entry " - "points in the .shader file, or use one of the available default names (not case-sensitive): [%s]", - entryPointNames.c_str())); - } - - return AZ::Success(attributeMaps); - } - - void ShaderAssetBuilder2::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks(); - AZStd::string shaderFullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.c_str(), request.m_sourceFile.c_str(), shaderFullPath, true); - // Save .shader file name (no extension and no parent directory path) - AZStd::string shaderFileName; - AzFramework::StringFunc::Path::GetFileName(request.m_sourceFile.c_str(), shaderFileName); - - // No error checking because the same calls were already executed during CreateJobs() - auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(shaderFullPath); - RPI::ShaderSourceData shaderSourceData = descriptorParseOutcome.TakeValue(); - AZStd::string azslFullPath; - ShaderBuilderUtility::GetAbsolutePathToAzslFile(shaderFullPath, shaderSourceData.m_source, azslFullPath); - AZ_TracePrintf(ShaderAssetBuilder2Name, "Original AZSL File: %s \n", azslFullPath.c_str()); - - // The directory where the Azsl file was found must be added to the list of include paths - AZStd::string azslFolderPath; - AzFramework::StringFunc::Path::GetFolderPath(azslFullPath.c_str(), azslFolderPath); - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilder2Name, azslFolderPath.c_str()); - - // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces( - request.m_platformInfo, shaderSourceData); - if (platformInterfaces.empty()) - { - //No work to do. Exit gracefully. - AZ_TracePrintf(ShaderAssetBuilder2Name, - "No azshader is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", - shaderFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - // Get the time stamp string as sys_time_t, and also convert back to string to make sure it was converted correctly. - AZStd::sys_time_t shaderAssetBuildTimestamp = 0; - auto shaderAssetBuildTimestampIterator = request.m_jobDescription.m_jobParameters.find(ShaderAssetBuildTimestampParam); - if (shaderAssetBuildTimestampIterator != request.m_jobDescription.m_jobParameters.end()) - { - shaderAssetBuildTimestamp = AZStd::stoull(shaderAssetBuildTimestampIterator->second); - - if (AZStd::to_string(shaderAssetBuildTimestamp) != shaderAssetBuildTimestampIterator->second) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - AZ_Assert(false, "Incorrect conversion of ShaderAssetBuildTimestampParam"); - return; - } - } - - auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceData); - - RPI::ShaderAssetCreator2 shaderAssetCreator; - shaderAssetCreator.Begin(Uuid::CreateRandom()); - - shaderAssetCreator.SetName(AZ::Name{shaderFileName.c_str()}); - shaderAssetCreator.SetDrawListName(Name(shaderSourceData.m_drawListName)); - shaderAssetCreator.SetShaderAssetBuildTimestamp(shaderAssetBuildTimestamp); - - // The ShaderOptionGroupLayout must be the same across all supervariants because - // there can be only a single ShaderVariantTreeAsset per ShaderAsset. - // We will store here the one that results when the *.azslin file is - // compiled for the default, nameless, supervariant. - // For all other supervariants we just make sure the hashes are the same - // as this one. - RPI::Ptr finalShaderOptionGroupLayout = nullptr; - - - // Time to describe the big picture. - // 1- Preprocess an AZSL file with MCPP (a C-Preprocessor), and generate a flat AZSL file without #include lines and any macros in it. - // Let's call it the Flat-AZSL file. There are two levels of macro definition that need to be merged before we can invoke MCPP: - // 1.1- From /Config/shader_global_build_options.json, which we have stored in the local variable @buildOptions. - // 1.2- From the "Supervariant" definition key, which can be different for each supervariant. - // 2- There will be one Flat-AZSL per supervariant. Each Flat-AZSL will be transpiled to HLSL with AZSLc. This means there will be one HLSL file - // per supervariant. - // 3- The generated HLSL (one HLSL per supervariant) file may contain C-Preprocessor Macros inserted by AZSLc. And that file will be given to DXC. - // DXC has a preprocessor embedded in it. DXC will be executed once for each entry function listed in the .shader file. - // There will be one DXIL compiled binary for each entry function. All the DXIL compiled binaries for each supervariant will be combined - // in the ROOT ShaderVariantAsset. - - // Remark: In general, the work done by the ShaderVariantAssetBuilder is similar, but it will start from the HLSL file created; in step 2, mentioned above; by this builder, - // for each supervariant. - - // At this moment We have global build options that should be merged with the build options that are common - // to all the supervariants of this shader. - buildOptions.m_compilerArguments.Merge(shaderSourceData.m_compiler); - - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - AZStd::string apiName(shaderPlatformInterface->GetAPIName().GetCStr()); - AZ_TraceContext("Platform API", apiName); - // Signal the begin of shader data for an RHI API. - shaderAssetCreator.BeginAPI(shaderPlatformInterface->GetAPIType()); - - // Each shaderPlatformInterface has its own azsli header that needs to be prepended to the AZSL file before - // preprocessing. We will create a new temporary file that contains the combined data. - RHI::PrependArguments args; - args.m_sourceFile = azslFullPath.c_str(); - args.m_prependFile = shaderPlatformInterface->GetAzslHeader(request.m_platformInfo); - args.m_addSuffixToFileName = apiName.c_str(); - args.m_destinationFolder = request.m_tempDirPath.c_str(); - - AZStd::string prependedAzslFilePath = RHI::PrependFile(args); - if (prependedAzslFilePath == azslFullPath) - { - // The specific error is already reported by RHI::PrependFile(). - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - // Cache common AZSLC invokation arguments related with the current RHI Backend. - // Each supervariant can, optionally, remove or add more arguments for AZSLc. - AZStd::string commonAzslcCompilerParameters = - shaderPlatformInterface->GetAzslCompilerParameters(buildOptions.m_compilerArguments); - commonAzslcCompilerParameters += " "; - commonAzslcCompilerParameters += - shaderPlatformInterface->GetAzslCompilerWarningParameters(buildOptions.m_compilerArguments); - AtomShaderConfig::AddParametersFromConfigFile(commonAzslcCompilerParameters, request.m_platformInfo); - - // The register number only makes sense if the platform uses "spaces", - // since the register Id of the resource will not change even if the pipeline layout changes. - // We can pass in a default ShaderCompilerArguments because all we care about is whether the shaderPlatformInterface - // appends the "--use-spaces" flag. - const bool platformUsesRegisterSpaces = - (AzFramework::StringFunc::Find(commonAzslcCompilerParameters, "--use-spaces") != AZStd::string::npos); - - uint32_t supervariantIndex = 0; - for (const auto& supervariantInfo : supervariantList) - { - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - shaderAssetCreator.BeginSupervariant(supervariantInfo.m_name); - - // Let's combine the global macro definitions, with the macro definitions particular to this - // supervariant. Two steps: - // 1- Supervariants can specify which macros to remove from the global definitions. - AZStd::vector macroDefinitionNamesToRemove = supervariantInfo.GetCombinedListOfMacroDefinitionNamesToRemove(); - PreprocessorOptions preprocessorOptions = buildOptions.m_preprocessorSettings; - preprocessorOptions.RemovePredefinedMacros(macroDefinitionNamesToRemove); - // 2- Supervariants can specify which macros to add. - AZStd::vector macroDefinitionsToAdd = supervariantInfo.GetMacroDefinitionsToAdd(); - preprocessorOptions.m_predefinedMacros.insert( - preprocessorOptions.m_predefinedMacros.end(), macroDefinitionsToAdd.begin(), macroDefinitionsToAdd.end()); - // Run the preprocessor. - PreprocessorData output; - PreprocessFile(prependedAzslFilePath, output, preprocessorOptions, true, true); - RHI::ReportErrorMessages(ShaderAssetBuilder2Name, output.diagnostics); - // Dump the preprocessed string as a flat AZSL file with extension .azslin, which will be given to AZSLc to generate the HLSL file. - AZStd::string superVariantAzslinStemName = shaderFileName; - if (!supervariantInfo.m_name.IsEmpty()) - { - superVariantAzslinStemName += AZStd::string::format("-%s", supervariantInfo.m_name.GetCStr()); - } - AZStd::string azslinFullPath = ShaderBuilderUtility::DumpPreprocessedCode( - ShaderAssetBuilder2Name, output.code, request.m_tempDirPath, superVariantAzslinStemName, - apiName, true /*add2*/); - if (azslinFullPath.empty()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - AZ_TracePrintf(ShaderAssetBuilder2Name, "Preprocessed AZSL File: %s \n", prependedAzslFilePath.c_str()); - - // Before transpiling the flat-AZSL(.azslin) file into HLSL it is necessary - // to setup the AZSLc arguments as required by the current supervariant. - AZStd::string azslcCompilerParameters = supervariantInfo.GetCustomizedArgumentsForAzslc(commonAzslcCompilerParameters); - - // Ready to transpile the azslin file into HLSL. - ShaderBuilder::AzslCompiler azslc(azslinFullPath); - AZStd::string hlslFullPath = AZStd::string::format("%s_%s.hlsl2", superVariantAzslinStemName.c_str(), apiName.c_str()); - AzFramework::StringFunc::Path::Join(request.m_tempDirPath.c_str(), hlslFullPath.c_str(), hlslFullPath, true); - auto emitFullOutcome = azslc.EmitFullData(azslcCompilerParameters, hlslFullPath, "2"); - if (!emitFullOutcome.IsSuccess()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - ShaderBuilderUtility::AzslSubProducts::Paths subProductsPaths = emitFullOutcome.TakeValue(); - - // In addition to the hlsl file, there are other json files that were generated. - // Each output file will become a product. - for (int i = 0; i < subProductsPaths.size(); ++i) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = subProductsPaths[i]; - static const AZ::Uuid AzslOutcomeType = "{6977AEB1-17AD-4992-957B-23BB2E85B18B}"; - jobProduct.m_productAssetType = AzslOutcomeType; - // uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType - jobProduct.m_productSubID = RPI::ShaderAsset2::MakeProductAssetSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, - aznumeric_cast(ShaderBuilderUtility::AzslSubProducts::SubList[i])); - jobProduct.m_dependenciesHandled = true; - // Note that the output products are not traditional product assets that will be used by the game project. - // They are artifacts that are produced once, cached, and used later by other AssetBuilders as a way to centralize - // build organization. - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - - AZStd::shared_ptr files(new ShaderFiles); - AzslData azslData(files); - azslData.m_preprocessedFullPath = azslinFullPath; - RPI::ShaderResourceGroupLayoutList srgLayoutList; - RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); - BindingDependencies bindingDependencies; - RootConstantData rootConstantData; - AssetBuilderSDK::ProcessJobResultCode azslJsonReadResult = ShaderBuilderUtility::PopulateAzslDataFromJsonFiles( - ShaderAssetBuilder2Name, subProductsPaths, platformUsesRegisterSpaces, azslData, srgLayoutList, shaderOptionGroupLayout, - bindingDependencies, rootConstantData); - if (azslJsonReadResult != AssetBuilderSDK::ProcessJobResult_Success) - - { - response.m_resultCode = azslJsonReadResult; - return; - } - - shaderAssetCreator.SetSrgLayoutList(srgLayoutList); - - if (!finalShaderOptionGroupLayout) - { - finalShaderOptionGroupLayout = shaderOptionGroupLayout; - shaderAssetCreator.SetShaderOptionGroupLayout(finalShaderOptionGroupLayout); - const uint32_t usedShaderOptionBits = shaderOptionGroupLayout->GetBitSize(); - AZ_TracePrintf( - ShaderAssetBuilder2Name, "Note: This shader uses %u of %u available shader variant key bits. \n", - usedShaderOptionBits, RPI::ShaderVariantKeyBitCount); - } - else - { - if (finalShaderOptionGroupLayout->GetHash() != shaderOptionGroupLayout->GetHash()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Supervariant %s has a different ShaderOptionGroupLayout", - supervariantInfo.m_name.GetCStr()) - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - } - - // Discover entry points & type of programs. - MapOfStringToStageType shaderEntryPoints; - if (shaderSourceData.m_programSettings.m_entryPoints.empty()) - { - AZ_TracePrintf( - ShaderAssetBuilder2Name, - "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); - ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslData.m_functions, shaderEntryPoints); - } - else - { - for (const auto& entryPoint : shaderSourceData.m_programSettings.m_entryPoints) - { - shaderEntryPoints[entryPoint.m_name] = entryPoint.m_type; - } - } - - bool hasRasterProgram = false; - auto attributeMapsOutcome = BuildAttributesMap(shaderPlatformInterface, azslData, shaderEntryPoints, hasRasterProgram); - if (!attributeMapsOutcome.IsSuccess()) - { - AZ_Error(ShaderAssetBuilder2Name, false, "%s\n", attributeMapsOutcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - shaderAssetCreator.SetShaderStageAttributeMapList(attributeMapsOutcome.TakeValue()); - - // Check if we were canceled before we do any heavy processing of - // the shader data (compiling the shader kernels, processing SRG - // and pipeline layout data, etc.). - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - RHI::Ptr pipelineLayoutDescriptor = - ShaderBuilderUtility::BuildPipelineLayoutDescriptorForApi( - ShaderAssetBuilder2Name, srgLayoutList, shaderEntryPoints, buildOptions.m_compilerArguments, rootConstantData, - shaderPlatformInterface, bindingDependencies); - if (!pipelineLayoutDescriptor) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to build pipeline layout descriptor for api=[%s]", - shaderPlatformInterface->GetAPIName().GetCStr()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - shaderAssetCreator.SetPipelineLayout(pipelineLayoutDescriptor); - - - RPI::ShaderInputContract shaderInputContract; - RPI::ShaderOutputContract shaderOutputContract; - size_t colorAttachmentCount = 0; - ShaderBuilderUtility::CreateShaderInputAndOutputContracts( - azslData, shaderEntryPoints, *shaderOptionGroupLayout.get(), - subProductsPaths[ShaderBuilderUtility::AzslSubProducts::om], - subProductsPaths[ShaderBuilderUtility::AzslSubProducts::ia], - shaderInputContract, shaderOutputContract, colorAttachmentCount); - shaderAssetCreator.SetInputContract(shaderInputContract); - shaderAssetCreator.SetOutputContract(shaderOutputContract); - - if (hasRasterProgram) - { - // Set the various states to what is in the descriptor. - const RHI::TargetBlendState& targetBlendState = shaderSourceData.m_blendState; - RHI::RenderStates renderStates; - renderStates.m_rasterState = shaderSourceData.m_rasterState; - renderStates.m_depthStencilState = shaderSourceData.m_depthStencilState; - // [GFX TODO][ATOM-930] We should support unique blend states per RT - for (size_t i = 0; i < colorAttachmentCount; ++i) - { - renderStates.m_blendState.m_targets[i] = targetBlendState; - } - - shaderAssetCreator.SetRenderStates(renderStates); - } - - Outcome hlslSourceCodeOutcome = Utils::ReadFile(hlslFullPath); - if (!hlslSourceCodeOutcome.IsSuccess()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to obtain shader source from %s. [%s]", hlslFullPath.c_str(), - hlslSourceCodeOutcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - AZStd::string hlslSourceCode = hlslSourceCodeOutcome.TakeValue(); - - // The root ShaderVariantAsset needs to be created with the known uuid of the source .shader asset because - // the ShaderAsset owns a Data::Asset<> reference that gets serialized. It must have the correct uuid - // so the root ShaderVariantAsset is found when the ShaderAsset is deserialized. - uint32_t rootVariantProductSubId = RPI::ShaderAsset2::MakeProductAssetSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, - aznumeric_cast(RPI::ShaderAsset2ProductSubId::RootShaderVariantAsset)); - auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(shaderFullPath, rootVariantProductSubId); - AZ_Assert(assetIdOutcome.IsSuccess(), "Failed to get AssetId from shader %s", shaderFullPath.c_str()); - const Data::AssetId variantAssetId = assetIdOutcome.TakeValue(); - - RPI::ShaderVariantListSourceData::VariantInfo rootVariantInfo; - ShaderVariantCreationContext2 shaderVariantCreationContext = { - *shaderPlatformInterface, - request.m_platformInfo, - buildOptions.m_compilerArguments, - request.m_tempDirPath, - startTime, - shaderSourceData, - *shaderOptionGroupLayout.get(), - shaderEntryPoints, - variantAssetId, - superVariantAzslinStemName, - hlslFullPath, - hlslSourceCode}; - - - AZStd::optional outputByproducts; - auto rootShaderVariantAssetOutcome = ShaderVariantAssetBuilder2::CreateShaderVariantAsset(rootVariantInfo, shaderVariantCreationContext, outputByproducts); - if (!rootShaderVariantAssetOutcome.IsSuccess()) - { - AZ_Error(ShaderAssetBuilder2Name, false, "%s\n", rootShaderVariantAssetOutcome.GetError().c_str()) - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - Data::Asset rootShaderVariantAsset = rootShaderVariantAssetOutcome.TakeValue(); - - shaderAssetCreator.SetRootShaderVariantAsset(rootShaderVariantAsset); - - if (!shaderAssetCreator.EndSupervariant()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to create shader asset for supervariant [%s]", supervariantInfo.m_name.GetCStr()) - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - // Time to save the root variant related assets in the cache. - AssetBuilderSDK::JobProduct assetProduct; - if (!ShaderVariantAssetBuilder2::SerializeOutShaderVariantAsset( - rootShaderVariantAsset, superVariantAzslinStemName, request.m_tempDirPath, *shaderPlatformInterface, - rootVariantProductSubId, - assetProduct)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - response.m_outputProducts.push_back(assetProduct); - - if (outputByproducts) - { - // add byproducts as job output products: - uint32_t subProductType = aznumeric_cast(RPI::ShaderAsset2ProductSubId::FirstByProduct); - for (const AZStd::string& byproduct : outputByproducts.value().m_intermediatePaths) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = byproduct; - jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); - jobProduct.m_productSubID = RPI::ShaderAsset2::MakeProductAssetSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, - subProductType++); - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - } - - - supervariantIndex++; - - } // end for the supervariant - - shaderAssetCreator.EndAPI(); - - } // end for all ShaderPlatformInterfaces - - Data::Asset shaderAsset; - if (!shaderAssetCreator.End(shaderAsset)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (!SerializeOutShaderAsset(shaderAsset, request.m_tempDirPath, response)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - - const AZStd::sys_time_t endTime = AZStd::GetTimeNowTicks(); - const AZStd::sys_time_t deltaTime = endTime - startTime; - const float elapsedTimeSeconds = (float)(deltaTime) / (float)AZStd::GetTimeTicksPerSecond(); - - AZ_TracePrintf(ShaderAssetBuilder2Name, "Finished processing %s in %.2f seconds\n", request.m_sourceFile.c_str(), elapsedTimeSeconds); - - ShaderBuilderUtility::LogProfilingData(ShaderAssetBuilder2Name, shaderFileName); - } - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.h deleted file mode 100644 index 915d4e53d0..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.h +++ /dev/null @@ -1,60 +0,0 @@ -/* -* 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. -* -*/ - -#pragma once - -#include -#include -#include - -#include - -namespace AZ -{ - namespace Data - { - class AssetHandler; - } - - namespace RHI - { - class ShaderPlatformInterface; - } - - namespace ShaderBuilder - { - struct AzslData; - - class ShaderAssetBuilder2 - : public AssetBuilderSDK::AssetBuilderCommandBus::Handler - { - public: - AZ_TYPE_INFO(ShaderAssetBuilder2, "{C94DA151-82BC-4475-86FA-E6C92A0BD6F8}"); - - static constexpr const char* ShaderAssetBuilder2JobKey = "Shader Asset 2"; - - ShaderAssetBuilder2() = default; - ~ShaderAssetBuilder2() = default; - - // Asset Builder Callback Functions ... - void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const; - void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - // AssetBuilderSDK::AssetBuilderCommandBus interface overrides ... - void ShutDown() override { }; - - private: - AZ_DISABLE_COPY_MOVE(ShaderAssetBuilder2); - }; - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp index c256caac4a..b34fbab9ae 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp @@ -29,8 +29,7 @@ #include #include -#include // DEPRECATED - [ATOM-15472] -#include +#include #include #include @@ -87,68 +86,6 @@ namespace AZ AzFramework::StringFunc::Path::ReplaceExtension(absoluteAzslPath, "azsl"); } - static bool LoadShaderResourceGroupAssets( - [[maybe_unused]] const char* builderName, - const SrgDataContainer& resourceGroups, - ShaderResourceGroupAssets& srgAssets) - { - bool readSRGsSuccessfuly = true; - - // Load all SRGs included in source file - for (const SrgData& srgData : resourceGroups) - { - Data::AssetId assetId = {}; - AZStd::string srgFilePath = ""; - - srgFilePath = srgData.m_containingFileName; - AzFramework::StringFunc::Path::Normalize(srgFilePath); - - bool assetFound = false; - Data::AssetInfo sourceInfo; - AZStd::string watchFolder; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult(assetFound, &AzToolsFramework::AssetSystem::AssetSystemRequest::GetSourceInfoBySourcePath, srgFilePath.c_str(), sourceInfo, watchFolder); - - if (!assetFound) - { - AZ_Error(builderName, false, "Could not find asset identified by path '%s'", srgFilePath.c_str()); - readSRGsSuccessfuly = false; - continue; - } - - assetId.m_guid = sourceInfo.m_assetId.m_guid; - assetId.m_subId = static_cast(AZStd::hash()(srgData.m_name) & 0xFFFFFFFF); - - Data::Asset asset = Data::AssetManager::Instance().GetAsset( - assetId, AZ::Data::AssetLoadBehavior::PreLoad); - asset.BlockUntilLoadComplete(); - if (!asset.IsReady()) - { - using Status = Data::AssetData::AssetStatus; - AZStd::string statusString = asset.GetStatus() == Status::Loading ? "loading" - : asset.GetStatus() == Status::ReadyPreNotify ? "ready-pre-notify" - : asset.GetStatus() == Status::Error ? "error" : "not-loaded/ready/unknown"; - - AZ_Error(builderName, false, "Searching SRG [%s]: Could not load SRG asset. (asset status [%s]) AssetId='%s' Path='%s'", - srgData.m_name.c_str(), - statusString.c_str(), - assetId.ToString().c_str(), srgFilePath.c_str()); - readSRGsSuccessfuly = false; - continue; - } - else if (!asset->IsValid()) - { - AZ_Error(builderName, false, "SRG asset has no layout information. AssetId='%s' Path='%s'", - assetId.ToString().c_str(), srgFilePath.c_str()); - readSRGsSuccessfuly = false; - continue; - } - - srgAssets.push_back(asset); - } - - return readSRGsSuccessfuly; - } - AZStd::shared_ptr PrepareSourceInput( [[maybe_unused]] const char* builderName, const AZStd::string& shaderAssetSourcePath, @@ -171,87 +108,6 @@ namespace AZ return files; } - - //! [GFX TODO] [ATOM-15472] Deprecated, remove when this ticket is addressed. - AssetBuilderSDK::ProcessJobResultCode PopulateAzslDataFromJsonFiles( - const char* builderName, - const AzslSubProducts::Paths& pathOfJsonFiles, - AzslData& azslData, - ShaderResourceGroupAssets& srgAssets, - RPI::Ptr shaderOptionGroupLayout, - BindingDependencies& bindingDependencies, - RootConstantData& rootConstantData) - { - AzslCompiler azslc(azslData.m_preprocessedFullPath); // set the input file for eventual error messages, but the compiler won't be called on it. - bool allReadSuccess = true; - // read: input assembly reflection - // shader resource group reflection - // options reflection - // binding dependencies reflection - int indicesOfInterest[] = { AzslSubProducts::ia, AzslSubProducts::srg, AzslSubProducts::options, AzslSubProducts::bindingdep }; - AZStd::unordered_map> outcomes; - for (int i : indicesOfInterest) - { - outcomes[i] = JsonSerializationUtils::ReadJsonFile(pathOfJsonFiles[i]); - if (!outcomes[i].IsSuccess()) - { - AZ_Error(builderName, false, "%s", outcomes[i].GetError().c_str()); - allReadSuccess = false; - } - } - if (!allReadSuccess) - { - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // Get full list of functions eligible for vertex shader entry points - // along with metadata for constructing the InputAssembly for each of them - if (!azslc.ParseIaPopulateFunctionData(outcomes[AzslSubProducts::ia].GetValue(), azslData.m_functions)) - { - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // Each SRG is built as a separate asset in the SrgLayoutBuilder, here we just - // build the list and load the data from multiple dependency assets. - if (!azslc.ParseSrgPopulateSrgData(outcomes[AzslSubProducts::srg].GetValue(), azslData.m_srgData)) - { - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // Add all Shader Resource Group Assets that were defined in the shader code to the shader asset - if (!LoadShaderResourceGroupAssets(builderName, azslData.m_srgData, srgAssets)) - { - AZ_Error(builderName, false, "Failed to obtain shader resource group assets"); - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // The shader options define what options are available, what are the allowed values/range - // for each option and what is its default value. - if (!azslc.ParseOptionsPopulateOptionGroupLayout(outcomes[AzslSubProducts::options].GetValue(), shaderOptionGroupLayout)) - { - AZ_Error(builderName, false, "Failed to find a valid list of shader options!"); - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // It analyzes the shader external bindings (all SRG contents) - // and informs us on register indexes and shader stages using these resources - if (!azslc.ParseBindingdepPopulateBindingDependencies(outcomes[AzslSubProducts::bindingdep].GetValue(), bindingDependencies)) // consuming data from binding-dep - { - AZ_Error(builderName, false, "Failed to obtain shader resource binding reflection"); - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - // access the root constants reflection - if (!azslc.ParseSrgPopulateRootConstantData(outcomes[AzslSubProducts::srg].GetValue(), rootConstantData)) // consuming data from --srg ("InlineConstantBuffer" subjson section) - { - AZ_Error(builderName, false, "Failed to obtain root constant data reflection"); - return AssetBuilderSDK::ProcessJobResult_Failed; - } - - return AssetBuilderSDK::ProcessJobResult_Success; - } - - AssetBuilderSDK::ProcessJobResultCode PopulateAzslDataFromJsonFiles( const char* builderName, const AzslSubProducts::Paths& pathOfJsonFiles, @@ -361,7 +217,8 @@ namespace AZ } //! the binding dependency structure may store lots of high level function names which are not entry points - static void PruneNonEntryFunctions(BindingDependencies& bindingDependencies /*inout*/, const MapOfStringToStageType& shaderEntryPoints) + static void PruneNonEntryFunctions( + BindingDependencies& bindingDependencies /*inout*/, const MapOfStringToStageType& shaderEntryPoints) { auto cleaner = [&shaderEntryPoints](BindingDependencies::FunctionsNameVector& functionVector) { @@ -387,120 +244,6 @@ namespace AZ }); } } - - RHI::Ptr BuildPipelineLayoutDescriptorForApi( - [[maybe_unused]] const char* builderName, - RHI::ShaderPlatformInterface* shaderPlatformInterface, - BindingDependencies& bindingDependencies /*inout*/, - const ShaderResourceGroupAssets& srgAssets, - const MapOfStringToStageType& shaderEntryPoints, - const RHI::ShaderCompilerArguments& shaderCompilerArguments, - const RootConstantData* rootConstantData /*= nullptr*/) - { - PruneNonEntryFunctions(bindingDependencies, shaderEntryPoints); - - // Translates from a list of function names that use a resource to a shader stage mask. - auto getRHIShaderStageMask = [&shaderEntryPoints](const BindingDependencies::FunctionsNameVector& functions) - { - RHI::ShaderStageMask mask = RHI::ShaderStageMask::None; - // Iterate through all the functions that are using the resource. - for (const auto& functionName : functions) - { - // Search the function name into the list of valid entry points into the shader. - auto findId = AZStd::find_if(shaderEntryPoints.begin(), shaderEntryPoints.end(), [&functionName, &mask](const auto& item) - { - return item.first == functionName; - }); - - if (findId != shaderEntryPoints.end()) - { - // Use the entry point shader stage type to calculate the mask. - RHI::ShaderHardwareStage hardwareStage = ToAssetBuilderShaderType(findId->second); - mask |= static_cast(AZ_BIT(static_cast(RHI::ToRHIShaderStage(hardwareStage)))); - } - } - - return mask; - }; - - // Build general PipelineLayoutDescriptor data that is provided for all platforms - RHI::Ptr pipelineLayoutDescriptor = shaderPlatformInterface->CreatePipelineLayoutDescriptor(); - RHI::ShaderPlatformInterface::ShaderResourceGroupInfoList srgInfos; - for (const auto& srgAsset : srgAssets) - { - // Search the binding info for a Shader Resource Group. - AZStd::string_view srgName = srgAsset->GetName().GetStringView(); - const BindingDependencies::SrgResources* srgResources = bindingDependencies.GetSrg(srgName); - if (!srgResources) - { - AZ_Error(builderName, false, "SRG %s not found in the dependency dataset", srgName.data()); - return nullptr; - } - - RHI::ShaderResourceGroupBindingInfo srgBindingInfo; - srgBindingInfo.m_spaceId = srgResources->m_registerSpace; - const RHI::ShaderResourceGroupLayout* layout = srgAsset->GetLayout(shaderPlatformInterface->GetAPIType()); - // Calculate the binding in for the constant data. All constant data share the same binding info. - srgBindingInfo.m_constantDataBindingInfo = { - getRHIShaderStageMask(srgResources->m_srgConstantsDependencies.m_binding.m_dependentFunctions), - srgResources->m_srgConstantsDependencies.m_binding.m_registerId }; - // Calculate the binding info for each resource of the Shader Resource Group. - for (auto const& resource : srgResources->m_resources) - { - auto const& resourceInfo = resource.second; - srgBindingInfo.m_resourcesRegisterMap.insert( - { AZ::Name(resourceInfo.m_selfName), - RHI::ResourceBindingInfo(getRHIShaderStageMask(resourceInfo.m_dependentFunctions), resourceInfo.m_registerId) }); - } - pipelineLayoutDescriptor->AddShaderResourceGroupLayoutInfo(*layout, srgBindingInfo); - srgInfos.push_back(RHI::ShaderPlatformInterface::ShaderResourceGroupInfo{ layout, srgBindingInfo }); - } - - RHI::Ptr rootConstantsLayout = RHI::ConstantsLayout::Create(); - if (rootConstantData) - { - for (const auto& constantData : rootConstantData->m_constants) - { - RHI::ShaderInputConstantDescriptor rootConstantDesc( - constantData.m_nameId, constantData.m_constantByteOffset, constantData.m_constantByteSize, - rootConstantData->m_bindingInfo.m_registerId); - - rootConstantsLayout->AddShaderInput(rootConstantDesc); - } - } - - if (!rootConstantsLayout->Finalize()) - { - AZ_Error(builderName, false, "Failed to finalize root constants layout"); - return nullptr; - } - - pipelineLayoutDescriptor->SetRootConstantsLayout(*rootConstantsLayout); - - RHI::ShaderPlatformInterface::RootConstantsInfo rootConstantInfo; - if (rootConstantData) - { - rootConstantInfo.m_spaceId = rootConstantData->m_bindingInfo.m_space; - rootConstantInfo.m_registerId = rootConstantData->m_bindingInfo.m_registerId; - } - else - { - RootConstantData dummyRootConstantData; - rootConstantInfo.m_spaceId = dummyRootConstantData.m_bindingInfo.m_space; - rootConstantInfo.m_registerId = dummyRootConstantData.m_bindingInfo.m_registerId; - } - rootConstantInfo.m_totalSizeInBytes = rootConstantsLayout->GetDataSize(); - - // Build platform-specific PipelineLayoutDescriptor data, and finalize - if (!shaderPlatformInterface->BuildPipelineLayoutDescriptor( - pipelineLayoutDescriptor, srgInfos, rootConstantInfo, shaderCompilerArguments)) - { - AZ_Error(builderName, false, "Failed to build pipeline layout descriptor"); - return nullptr; - } - - return pipelineLayoutDescriptor; - } static AZStd::string DumpCode( [[maybe_unused]] const char* builderName, @@ -539,14 +282,8 @@ namespace AZ return finalFilePath; } - // [GFX TODO] Remove 'add2' when [ATOM-15472] - AZStd::string DumpPreprocessedCode(const char* builderName, const AZStd::string& preprocessedCode, const AZStd::string& tempDirPath, const AZStd::string& stemName, const AZStd::string& apiTypeString, bool add2) + AZStd::string DumpPreprocessedCode(const char* builderName, const AZStd::string& preprocessedCode, const AZStd::string& tempDirPath, const AZStd::string& stemName, const AZStd::string& apiTypeString) { - if (add2) - { - return DumpCode(builderName, preprocessedCode, tempDirPath, stemName, apiTypeString, "azslin2"); - } - return DumpCode(builderName, preprocessedCode, tempDirPath, stemName, apiTypeString, "azslin"); } @@ -584,8 +321,7 @@ namespace AZ AZStd::remove_if(AZ_BEGIN_END(platformInterfaces), [&](const RHI::ShaderPlatformInterface* shaderPlatformInterface) { return !shaderPlatformInterface || - shaderSourceData.IsRhiBackendDisabled(shaderPlatformInterface->GetAPIName()) || - (shaderPlatformInterface->GetAPIUniqueIndex() == static_cast(AZ::RHI::APIIndex::Null)); + shaderSourceData.IsRhiBackendDisabled(shaderPlatformInterface->GetAPIName()); }), platformInterfaces.end()); return platformInterfaces; @@ -718,15 +454,7 @@ namespace AZ #endif } - uint32_t MakeAzslBuildProductSubId(RPI::ShaderAssetSubId subId, RHI::APIType apiType) - { - auto subIdMaxEnumerator = RPI::ShaderAssetSubId::GeneratedHlslSource; - // separate bit space between subid enum, and api-type: - int shiftLeft = static_cast(log2(static_cast(subIdMaxEnumerator))) + 1; - return static_cast(subId) + (apiType << shiftLeft); - } - - Outcome ObtainBuildArtifactPathFromShaderAssetBuilder2( + Outcome ObtainBuildArtifactPathFromShaderAssetBuilder( const uint32_t rhiUniqueIndex, const AZStd::string& platformIdentifier, const AZStd::string& shaderJsonPath, const uint32_t supervariantIndex, RPI::ShaderAssetSubId shaderAssetSubId) { @@ -749,12 +477,12 @@ namespace AZ platformId = AzFramework::PlatformId::IOS; } - uint32_t assetSubId = RPI::ShaderAsset2::MakeProductAssetSubId(rhiUniqueIndex, supervariantIndex, aznumeric_cast(shaderAssetSubId)); + uint32_t assetSubId = RPI::ShaderAsset::MakeProductAssetSubId(rhiUniqueIndex, supervariantIndex, aznumeric_cast(shaderAssetSubId)); auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(shaderJsonPath, assetSubId); if (!assetIdOutcome.IsSuccess()) { return Failure(AZStd::string::format( - "Missing ShaderAssetBuilder2 product %s, for sub %d", shaderJsonPath.c_str(), (uint32_t)shaderAssetSubId)); + "Missing ShaderAssetBuilder product %s, for sub %d", shaderJsonPath.c_str(), (uint32_t)shaderAssetSubId)); } Data::AssetId assetId = assetIdOutcome.TakeValue(); @@ -778,113 +506,6 @@ namespace AZ return AZ::Success(assetFullPath); } - Outcome ObtainBuildArtifactsFromAzslBuilder([[maybe_unused]] const char* builderName, const AZStd::string& sourceFullPath, RHI::APIType apiType, const AZStd::string& platform) - { - AzslSubProducts::Paths products; - - // platform id from identifier - AzFramework::PlatformId platformId = AzFramework::PlatformId::PC; - if (platform == "pc") - { - platformId = AzFramework::PlatformId::PC; - } - else if (platform == "mac") - { - platformId = AzFramework::PlatformId::MAC_ID; - } - else if (platform == "android") - { - platformId = AzFramework::PlatformId::ANDROID_ID; - } - else if (platform == "ios") - { - platformId = AzFramework::PlatformId::IOS; - } - - for (RPI::ShaderAssetSubId sub : AzslSubProducts::SubList) - { - uint32_t assetSubId = MakeAzslBuildProductSubId(sub, apiType); - auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(sourceFullPath, assetSubId); - AZ_Error(builderName, assetIdOutcome.IsSuccess(), "Missing AZSL product %s, for sub %d", sourceFullPath.c_str(), (uint32_t)sub); - if (!assetIdOutcome.IsSuccess()) - { - return Failure(); - } - Data::AssetId assetId = assetIdOutcome.TakeValue(); - // get the relative path: - AZStd::string assetPath; - Data::AssetCatalogRequestBus::BroadcastResult(assetPath, &Data::AssetCatalogRequests::GetAssetPathById, assetId); - - // get the root: - AZStd::string assetRoot = AzToolsFramework::PlatformAddressedAssetCatalog::GetAssetRootForPlatform(platformId); - // join - AZStd::string assetFullPath; - AzFramework::StringFunc::Path::Join(assetRoot.c_str(), assetPath.c_str(), assetFullPath); - bool fileExists = IO::FileIOBase::GetInstance()->Exists(assetFullPath.c_str()) && !IO::FileIOBase::GetInstance()->IsDirectory(assetFullPath.c_str()); - if (!fileExists) - { - return Failure(); - } - products.push_back(assetFullPath); - } - return AZ::Success(products); - } - - // DEPRECATED [ATOM-15472] - // See header for info. - // REMARK: The approach to string searching and matching done in this function is kind of naive - // because the strings can match text within a comment block, etc. So it is not 100% fool proof. - // We would need proper grammar parsing to reach 100% confidence. - // [GFX TODO][ATOM-5302][ATOM-5308] The following function will be removed once, both, [ATOM-5302] & [ATOM-5308] are addressed, and - // azslc allows redundant SrgSemantics for "partial" qualified SRGs. - SrgSkipFileResult ShouldSkipFileForSrgProcessing([[maybe_unused]] const char* builderName, const AZStd::string_view fullPath) - { - AZ::IO::FileIOStream stream(fullPath.data(), AZ::IO::OpenMode::ModeRead); - if (!stream.IsOpen()) - { - AZ_Warning(builderName, false, "\"%s\" source file could not be opened.", fullPath.data()); - return SrgSkipFileResult::Error; - } - - if (!stream.CanRead()) - { - AZ_Warning(builderName, false, "\"%s\" source file could not be read.", fullPath.data()); - return SrgSkipFileResult::Error; - } - - // Do a quick check for "ShaderResourceGroup" to determine if this file might even have a ShaderResourceGroup to parse. - AZStd::string fileContents; - fileContents.resize(stream.GetLength()); - stream.Read(stream.GetLength(), fileContents.data()); - - static const AZStd::regex partialSrgRegex("\n\\s*partial\\s+ShaderResourceGroup\\s+", AZStd::regex::ECMAScript); - if (AZStd::regex_search(fileContents.data(), partialSrgRegex)) - { - // It is considered a programmer's error if a file declares both, non-partial and partial SRGs. - static const AZStd::regex srgRegex("\n\\s*ShaderResourceGroup\\s+", AZStd::regex::ECMAScript); - if (AZStd::regex_search(fileContents.data(), srgRegex)) - { - AZ_Error(builderName, false, "\"%s\" defines both partial and non-partial SRGs.", fullPath.data()); - return SrgSkipFileResult::Error; - } - // We should skip files that define partial Srgs because an srgi file will eventually - // include it. - return SrgSkipFileResult::SkipFile; - } - - // This is an optimization to avoid unnecessary preprocessing a whole tree of azsli files; we can detect when a - // ShaderResourceGroupAsset wouldn't be produced and return early. Note, we could remove this early-return check - // if the preprocessing code below is updated to not follow include paths [ATOM-5302]. - // (Note this optimization is not valid for srgi files because those do require scanning all include paths)" - if (fileContents.find("ShaderResourceGroup") == AZStd::string::npos) - { - // No ShaderResourceGroup in this file, so there's nothing to do. Create no jobs and report success. - return SrgSkipFileResult::SkipFile; - } - - return SrgSkipFileResult::ContinueProcess; - } - RHI::Ptr BuildPipelineLayoutDescriptorForApi( [[maybe_unused]] const char* builderName, const RPI::ShaderResourceGroupLayoutList& srgLayoutList, const MapOfStringToStageType& shaderEntryPoints, const RHI::ShaderCompilerArguments& shaderCompilerArguments, const RootConstantData& rootConstantData, diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h index e31c6c70a1..0a44195fad 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h @@ -18,8 +18,7 @@ #include #include -#include -#include +#include #include "AzslData.h" @@ -32,7 +31,6 @@ namespace AZ struct BindingDependencies; struct RootConstantData; - using ShaderResourceGroupAssets = AZStd::fixed_vector, RHI::Limits::Pipeline::ShaderResourceGroupCountMax>; using MapOfStringToStageType = AZStd::unordered_map; namespace ShaderBuilderUtility @@ -53,7 +51,7 @@ namespace AZ using SubId = RPI::ShaderAssetSubId; // product sub id enumerators: - static constexpr SubId SubList[] = {SubId::PostPreprocessingPureAzsl, + static constexpr SubId SubList[] = {SubId::FlatAzsl, SubId::IaJson, SubId::OmJson, SubId::SrgJson, @@ -66,20 +64,6 @@ namespace AZ using Paths = AZStd::fixed_vector; }; - //! [GFX TODO] [ATOM-15472] Deprecated, remove when this ticket is addressed. - //! Collects and generates the necessary data for compiling a shader. - //! @azslData must have paths correctly set. - //! shaderOptionGroupLayout, azslData, srgAssets get the output data. - AssetBuilderSDK::ProcessJobResultCode PopulateAzslDataFromJsonFiles( - const char* builderName, - const AzslSubProducts::Paths& pathOfJsonFiles, - AzslData& azslData, - ShaderResourceGroupAssets& srgAssets, - RPI::Ptr shaderOptionGroupLayout, - BindingDependencies& bindingDependencies, - RootConstantData& rootConstantData - ); - //! Collects all the JSON files generated during AZSL compilation and loads the data as objects. //! @azslData must have paths correctly set. //! @azslData, @srgLayoutList, @shaderOptionGroupLayout, @bindingDependencies and @rootConstantData get the output data. @@ -92,22 +76,6 @@ namespace AZ RHI::ShaderHardwareStage ToAssetBuilderShaderType(RPI::ShaderStageType stageType); - //! Must be called before shaderPlatformInterface->CompilePlatformInternal() - //! This function will prune non entry functions from BindingDependencies and use the - //! rest of input data to create a pipeline layout descriptor. - //! The pipeline layout descriptor is returned, but the same data will also be set into the @shaderPlatformInterface - //! object, which is why it is important to call this method before calling shaderPlatformInterface->CompilePlatformInternal(). - RHI::Ptr BuildPipelineLayoutDescriptorForApi( - const char* builderName, - RHI::ShaderPlatformInterface* shaderPlatformInterface, - BindingDependencies& bindingDependencies /*inout*/, - const ShaderResourceGroupAssets& srgAssets, - const MapOfStringToStageType& shaderEntryPoints, - const RHI::ShaderCompilerArguments& shaderCompilerArguments, - const RootConstantData* rootConstantData = nullptr - ); - - //! Must be called before shaderPlatformInterface->CompilePlatformInternal() //! This function will prune non entry functions from BindingDependencies and use the //! rest of input data to create a pipeline layout descriptor. @@ -145,8 +113,7 @@ namespace AZ const AZStd::string& preprocessedCode, const AZStd::string& tempDirPath, const AZStd::string& preprocessedFileName, - const AZStd::string& apiTypeString = "", - bool add2 = false); // [GFX TODO] Remove add2 when [ATOM-15472] + const AZStd::string& apiTypeString = ""); //! Create a file from a string's content. //! That file will be named filename.api.azsl.prepend @@ -181,25 +148,11 @@ namespace AZ void LogProfilingData(const char* builderName, AZStd::string_view shaderPath); - //! Job products sub id generation helper for AzslBuilder - uint32_t MakeAzslBuildProductSubId(RPI::ShaderAssetSubId subId, RHI::APIType apiType); - - //! Returns the asset path of a product artifact produced by ShaderAssetBuilder2. - Outcome ObtainBuildArtifactPathFromShaderAssetBuilder2( + //! Returns the asset path of a product artifact produced by ShaderAssetBuilder. + Outcome ObtainBuildArtifactPathFromShaderAssetBuilder( const uint32_t rhiUniqueIndex, const AZStd::string& platformIdentifier, const AZStd::string& shaderJsonPath, const uint32_t supervariantIndex, RPI::ShaderAssetSubId shaderAssetSubId); - //! Reconstructs the expected output product paths of the AzslBuilder (from the 2 arguments @azslSourceFullPath and @apiType) - Outcome ObtainBuildArtifactsFromAzslBuilder(const char* builderName, const AZStd::string& azslSourceFullPath, RHI::APIType apiType, const AZStd::string& platform); - - //! Returns true if a file should skip processing. - //! Should be called only for non *.srgi files. - //! If the file contains "partial ShaderResourceGroup" (validated through a proper regular expression) - //! then it is skippable. If this same file also defines non-partial SRGs it will be skipped with error. - //! If the file doesn't contain "ShaderResourceGroup" then it does not define a ShaderResourceGroup - //! and it is skippable too. - enum class SrgSkipFileResult { Error, SkipFile, ContinueProcess }; - SrgSkipFileResult ShouldSkipFileForSrgProcessing(const char* builderName, const AZStd::string_view fullPath); } // ShaderBuilderUtility namespace } // ShaderBuilder namespace } // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp index 7114b50906..e1b99fc409 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp @@ -22,7 +22,6 @@ #include #include -#include #include #include @@ -55,7 +54,6 @@ #include "ShaderBuilderUtility.h" #include "AzslData.h" #include "AzslCompiler.h" -#include "AzslBuilder.h" #include #include #include @@ -67,18 +65,12 @@ namespace AZ { static constexpr char ShaderVariantAssetBuilderName[] = "ShaderVariantAssetBuilder"; - static constexpr uint32_t ShaderVariantLoadErrorParam = 0; - static constexpr uint32_t ShaderSourceFilePathJobParam = 2; - static constexpr uint32_t ShaderVariantJobVariantParam = 3; - static constexpr uint32_t ShouldExitEarlyFromProcessJobParam = 4; - static void AddShaderAssetJobDependency( - AssetBuilderSDK::JobDescriptor& jobDescriptor, - const AssetBuilderSDK::PlatformInfo& platformInfo, - const AZStd::string& shaderVariantListFilePath, - const AZStd::string& shaderFilePath) + AssetBuilderSDK::JobDescriptor& jobDescriptor, const AssetBuilderSDK::PlatformInfo& platformInfo, + const AZStd::string& shaderVariantListFilePath, const AZStd::string& shaderFilePath) { - AZStd::vector possibleDependencies = AZ::RPI::AssetUtils::GetPossibleDepenencyPaths(shaderVariantListFilePath, shaderFilePath); + AZStd::vector possibleDependencies = + AZ::RPI::AssetUtils::GetPossibleDepenencyPaths(shaderVariantListFilePath, shaderFilePath); for (auto& file : possibleDependencies) { AssetBuilderSDK::JobDependency jobDependency; @@ -309,12 +301,7 @@ namespace AZ jobDescriptor.m_jobKey = ShaderVariantAssetBuilderJobKey; jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - // queue up AzslBuilder dependencies: - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverValidShaderPlatformInterfaces(info); - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - AddAzslBuilderJobDependency(jobDescriptor, info.m_identifier, shaderPlatformInterface->GetAPIName().GetCStr(), shaderSourceFileFullPath); - } + AddShaderAssetJobDependency(jobDescriptor, info, variantListFullPath, shaderVariantList.m_shaderFilePath); if (loadResult.m_code == LoadResult::Code::DeferredError) { @@ -357,7 +344,7 @@ namespace AZ response.m_createJobOutputs.push_back(jobDescriptor); } - // One job for each variant. Each job will produce one ".azshadervariant". + // One job for each variant. Each job will produce one ".azshadervariant" per RHI per supervariant. for (const AZ::RPI::ShaderVariantListSourceData::VariantInfo& variantInfo : shaderVariantList.m_shaderVariants) { AZStd::string variantInfoAsJsonString; @@ -431,6 +418,99 @@ namespace AZ } } + + static RPI::Ptr LoadShaderOptionsGroupLayoutFromShaderAssetBuilder( + const RHI::ShaderPlatformInterface* shaderPlatformInterface, + const AssetBuilderSDK::PlatformInfo& platformInfo, + const AzslCompiler& azslCompiler, + const AZStd::string& shaderSourceFileFullPath, + const RPI::SupervariantIndex supervariantIndex) + { + auto optionsGroupPathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder( + shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), + AZ::RPI::ShaderAssetSubId::OptionsJson); + if (!optionsGroupPathOutcome.IsSuccess()) + { + AZ_Error(ShaderVariantAssetBuilderName, false, "%s", optionsGroupPathOutcome.GetError().c_str()); + return nullptr; + } + auto optionsGroupJsonPath = optionsGroupPathOutcome.TakeValue(); + RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); + // The shader options define what options are available, what are the allowed values/range + // for each option and what is its default value. + auto jsonOutcome = JsonSerializationUtils::ReadJsonFile(optionsGroupJsonPath); + if (!jsonOutcome.IsSuccess()) + { + AZ_Error(ShaderVariantAssetBuilderName, false, "%s", jsonOutcome.GetError().c_str()); + return nullptr; + } + if (!azslCompiler.ParseOptionsPopulateOptionGroupLayout(jsonOutcome.GetValue(), shaderOptionGroupLayout)) + { + AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to find a valid list of shader options!"); + return nullptr; + } + + return shaderOptionGroupLayout; + } + + static void LoadShaderFunctionsFromShaderAssetBuilder( + const RHI::ShaderPlatformInterface* shaderPlatformInterface, const AssetBuilderSDK::PlatformInfo& platformInfo, + const AzslCompiler& azslCompiler, const AZStd::string& shaderSourceFileFullPath, + const RPI::SupervariantIndex supervariantIndex, + AzslFunctions& functions) + { + auto functionsJsonPathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder( + shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), + AZ::RPI::ShaderAssetSubId::IaJson); + if (!functionsJsonPathOutcome.IsSuccess()) + { + AZ_Error(ShaderVariantAssetBuilderName, false, "%s", functionsJsonPathOutcome.GetError().c_str()); + return; + } + + auto functionsJsonPath = functionsJsonPathOutcome.TakeValue(); + auto jsonOutcome = JsonSerializationUtils::ReadJsonFile(functionsJsonPath); + if (!jsonOutcome.IsSuccess()) + { + AZ_Error(ShaderVariantAssetBuilderName, false, "%s", jsonOutcome.GetError().c_str()); + return; + } + if (!azslCompiler.ParseIaPopulateFunctionData(jsonOutcome.GetValue(), functions)) + { + functions.clear(); + AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to find shader functions."); + return; + } + } + + + // Returns the content of the hlsl file for the given supervariant as produced by ShaderAsssetBuilder. + // In addition to the content it also returns the full path of the hlsl file in @hlslSourcePath. + static AZStd::string LoadHlslFileFromShaderAssetBuilder( + const RHI::ShaderPlatformInterface* shaderPlatformInterface, const AssetBuilderSDK::PlatformInfo& platformInfo, + const AZStd::string& shaderSourceFileFullPath, const RPI::SupervariantIndex supervariantIndex, AZStd::string& hlslSourcePath) + { + auto hlslSourcePathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder( + shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), + AZ::RPI::ShaderAssetSubId::GeneratedHlslSource); + if (!hlslSourcePathOutcome.IsSuccess()) + { + AZ_Error(ShaderVariantAssetBuilderName, false, "%s", hlslSourcePathOutcome.GetError().c_str()); + return ""; + } + + hlslSourcePath = hlslSourcePathOutcome.TakeValue(); + Outcome hlslSourceOutcome = Utils::ReadFile(hlslSourcePath); + if (!hlslSourceOutcome.IsSuccess()) + { + AZ_Error( + ShaderVariantAssetBuilderName, false, "Failed to obtain shader source from %s. [%s]", hlslSourcePath.c_str(), + hlslSourceOutcome.TakeError().c_str()); + return ""; + } + return hlslSourceOutcome.TakeValue(); + } + void ShaderVariantAssetBuilder::ProcessShaderVariantTreeJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const { AZStd::string variantListFullPath; @@ -448,62 +528,45 @@ namespace AZ //For debugging purposes will create a dummy azshadervarianttree file. AZStd::string shaderName; - AzFramework::StringFunc::Path::Split(shaderSourceFileFullPath.c_str(), nullptr /*drive*/, nullptr /*path*/, & shaderName, nullptr /*extension*/); + AzFramework::StringFunc::Path::GetFileName(shaderSourceFileFullPath.c_str(), shaderName); - RPI::ShaderSourceData shaderSourceDescriptor; - AZStd::shared_ptr azslSources = ShaderBuilderUtility::PrepareSourceInput(ShaderVariantAssetBuilderName, shaderSourceFileFullPath, shaderSourceDescriptor); - if (!azslSources) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } + // No error checking because the same calls were already executed during CreateJobs() + auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(shaderSourceFileFullPath); + RPI::ShaderSourceData shaderSourceDescriptor = descriptorParseOutcome.TakeValue(); RPI::Ptr shaderOptionGroupLayout; - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverValidShaderPlatformInterfaces(request.m_platformInfo); - AzslCompiler azslc(azslSources->m_azslSourceFullPath); // set the input file for eventual error messages, but the compiler won't be called on it. + // Request the list of valid shader platform interfaces for the target platform. + AZStd::vector platformInterfaces = + ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces(request.m_platformInfo, shaderSourceDescriptor); + if (platformInterfaces.empty()) + { + // No work to do. Exit gracefully. + AZ_TracePrintf( + ShaderVariantAssetBuilderName, + "No azshadervarianttree is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", + shaderSourceFileFullPath.c_str()); + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; + return; + } + + + // set the input file for eventual error messages, but the compiler won't be called on it. + AZStd::string azslFullPath; + ShaderBuilderUtility::GetAbsolutePathToAzslFile(shaderSourceFileFullPath, shaderSourceDescriptor.m_source, azslFullPath); + AzslCompiler azslc(azslFullPath); + AZStd::string previousLoopApiName; for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) { - // Null backend is special and does not require any processing. - if (shaderPlatformInterface->GetAPIUniqueIndex() == static_cast(AZ::RHI::APIIndex::Null)) - { - continue; - } - - if (shaderSourceDescriptor.IsRhiBackendDisabled(shaderPlatformInterface->GetAPIName())) - { - // Gracefully do nothing and continue with the next shaderPlatformInterface. - AZ_TracePrintf( - ShaderVariantAssetBuilderName, "Skipping shader variant tree compilation of [%s] for API [%s]\n", - shaderSourceFileFullPath.c_str(), - shaderPlatformInterface->GetAPIName().GetCStr()); - continue; - } - auto thisLoopApiName = shaderPlatformInterface->GetAPIName().GetStringView(); - auto azslArtifactsOutcome = ShaderBuilderUtility::ObtainBuildArtifactsFromAzslBuilder( - ShaderVariantAssetBuilderName, azslSources->m_azslSourceFullPath, shaderPlatformInterface->GetAPIType(), request.m_platformInfo.m_identifier); - if (!azslArtifactsOutcome.IsSuccess()) + RPI::Ptr loopLocal_ShaderOptionGroupLayout = + LoadShaderOptionsGroupLayoutFromShaderAssetBuilder( + shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, RPI::DefaultSupervariantIndex); + if (!loopLocal_ShaderOptionGroupLayout) { response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; return; } - RPI::Ptr loopLocal_ShaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); - // The shader options define what options are available, what are the allowed values/range - // for each option and what is its default value. - auto jsonOutcome = JsonSerializationUtils::ReadJsonFile(azslArtifactsOutcome.GetValue()[ShaderBuilderUtility::AzslSubProducts::options]); - if (!jsonOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "%s", jsonOutcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - if (!azslc.ParseOptionsPopulateOptionGroupLayout(jsonOutcome.GetValue(), loopLocal_ShaderOptionGroupLayout)) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to find a valid list of shader options!"); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } if (shaderOptionGroupLayout && shaderOptionGroupLayout->GetHash() != loopLocal_ShaderOptionGroupLayout->GetHash()) { AZ_Error(ShaderVariantAssetBuilderName, false, "There was a discrepancy in shader options between %s and %s", previousLoopApiName.c_str(), thisLoopApiName.data()); @@ -548,76 +611,9 @@ namespace AZ response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; } - static AZStd::pair CompileShaderVariantForAPI( - Data::Asset& shaderVariantAsset, - RHI::ShaderPlatformInterface* shaderPlatformInterface, - AzslData& azslData, - const RHI::ShaderCompilerArguments& shaderCompilerArguments, - const RPI::ShaderOptionGroupLayout& shaderOptionGroupLayout, - const RPI::ShaderSourceData& shaderSourceDataDescriptor, - AZStd::sys_time_t shaderAssetBuildTimestamp, - const RPI::ShaderVariantListSourceData::VariantInfo& variantInfo, - const ShaderResourceGroupAssets& srgAssets, - const AssetBuilderSDK::ProcessJobRequest& request, - BindingDependencies& bindingDependencies, - const RootConstantData& rootConstantData, - const AZStd::string& hlslSourcePath, - const AZStd::string& hlslSourceContent, - const AZStd::string& pathToOmJson, - const AZStd::string& pathToIaJson) - { - const AZStd::string& tempDirPath = request.m_tempDirPath; - RHI::ShaderPlatformInterface::ByProducts byproducts; - - // discover entry points - MapOfStringToStageType shaderEntryPoints; - if (shaderSourceDataDescriptor.m_programSettings.m_entryPoints.empty()) - { - AZ_TracePrintf(ShaderVariantAssetBuilderName, "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); - ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslData.m_functions, shaderEntryPoints); - } - else - { - for (auto& iter : shaderSourceDataDescriptor.m_programSettings.m_entryPoints) - { - shaderEntryPoints[iter.m_name] = iter.m_type; - } - } - - if (!ShaderBuilderUtility::BuildPipelineLayoutDescriptorForApi( - ShaderVariantAssetBuilderName, shaderPlatformInterface, bindingDependencies, srgAssets, shaderEntryPoints, shaderCompilerArguments, &rootConstantData)) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to build pipeline layout descriptor for api=[%s]", - shaderPlatformInterface->GetAPIName().GetCStr()); - return { false, byproducts }; - } - - ShaderVariantCreationContext variantCreationContext = { Uuid::CreateRandom(), hlslSourcePath, hlslSourceContent, shaderSourceDataDescriptor, - tempDirPath, request.m_platformInfo, shaderOptionGroupLayout, shaderEntryPoints, shaderAssetBuildTimestamp }; - AZ::Outcome, AZStd::string> outcomeForShaderVariantAsset = ShaderVariantAssetBuilder::CreateShaderVariantAssetForAPI( - variantInfo, - variantCreationContext, - *shaderPlatformInterface, - azslData, - shaderCompilerArguments, - pathToOmJson, - pathToIaJson); - if (!outcomeForShaderVariantAsset.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to generate shader variant with StableId [%u] for API [%s]: %s" - , variantInfo.m_stableId, shaderPlatformInterface->GetAPIName().GetCStr(), outcomeForShaderVariantAsset.GetError().c_str()); - return { false, byproducts }; - } - shaderVariantAsset = outcomeForShaderVariantAsset.TakeValue(); - if (variantCreationContext.m_outputByproducts) - { - byproducts = *variantCreationContext.m_outputByproducts; - } - return { true, byproducts }; - } - void ShaderVariantAssetBuilder::ProcessShaderVariantJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const { + const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks(); AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); AZStd::string fullPath; @@ -625,419 +621,190 @@ namespace AZ const auto& jobParameters = request.m_jobDescription.m_jobParameters; const AZStd::string& shaderSourceFileFullPath = jobParameters.at(ShaderSourceFilePathJobParam); + AZStd::string shaderFileName; + AzFramework::StringFunc::Path::GetFileName(shaderSourceFileFullPath.c_str(), shaderFileName); + const AZStd::string& variantJsonString = jobParameters.at(ShaderVariantJobVariantParam); RPI::ShaderVariantListSourceData::VariantInfo variantInfo; - const bool toJsonStringSuccess = AZ::RPI::JsonUtils::LoadObjectFromJsonString(variantJsonString, variantInfo); - AZ_Assert(toJsonStringSuccess, "Failed to convert json string to VariantInfo"); - - auto shaderAssetOutcome = RPI::AssetUtils::LoadAsset(shaderSourceFileFullPath); - if (!shaderAssetOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "The shader path [%s] could not be loaded.", shaderSourceFileFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - Data::Asset shaderAsset = shaderAssetOutcome.TakeValue(); + const bool fromJsonStringSuccess = AZ::RPI::JsonUtils::LoadObjectFromJsonString(variantJsonString, variantInfo); + AZ_Assert(fromJsonStringSuccess, "Failed to convert json string to VariantInfo"); RPI::ShaderSourceData shaderSourceDescriptor; AZStd::shared_ptr sources = ShaderBuilderUtility::PrepareSourceInput(ShaderVariantAssetBuilderName, shaderSourceFileFullPath, shaderSourceDescriptor); + // set the input file for eventual error messages, but the compiler won't be called on it. + AzslCompiler azslc(sources->m_azslSourceFullPath); + // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces; - ShaderPlatformInterfaceRequestBus::BroadcastResult(platformInterfaces, &ShaderPlatformInterfaceRequest::GetShaderPlatformInterface, request.m_platformInfo); + AZStd::vector platformInterfaces = + ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces(request.m_platformInfo, shaderSourceDescriptor); + if (platformInterfaces.empty()) + { + // No work to do. Exit gracefully. + AZ_TracePrintf(ShaderVariantAssetBuilderName, + "No azshader is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", + shaderSourceFileFullPath.c_str()); + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; + return; + } + + auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceDescriptor); + + GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderVariantAssetBuilderName); + // At this moment We have global build options that should be merged with the build options that are common + // to all the supervariants of this shader. + buildOptions.m_compilerArguments.Merge(shaderSourceDescriptor.m_compiler); + + //! The ShaderOptionGroupLayout is common across all RHIs & Supervariants + RPI::Ptr shaderOptionGroupLayout = nullptr; + // Generate shaders for each of those ShaderPlatformInterfaces. for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) { - // Null backend is special and does not require any processing. - if (shaderPlatformInterface->GetAPIUniqueIndex() == static_cast(AZ::RHI::APIIndex::Null)) - { - continue; - } - AZ_TraceContext("ShaderPlatformInterface", shaderPlatformInterface->GetAPIName().GetCStr()); - if (shaderSourceDescriptor.IsRhiBackendDisabled(shaderPlatformInterface->GetAPIName())) + // Loop through all the Supervariants. + uint32_t supervariantIndexCounter = 0; + for (const auto& supervariantInfo : supervariantList) { - // Gracefully do nothing and continue with the next shaderPlatformInterface. - AZ_TracePrintf( - ShaderVariantAssetBuilderName, "Skipping shader variant compilation of [%s] with StableId [%u] for API [%s]\n", - shaderSourceFileFullPath.c_str(), variantInfo.m_stableId, shaderPlatformInterface->GetAPIName().GetCStr()); - continue; - } + RPI::SupervariantIndex supervariantIndex(supervariantIndexCounter); - if (!shaderPlatformInterface) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "ShaderPlatformInterface for [%s] is not registered, can't compile [%s]", request.m_platformInfo.m_identifier.c_str(), shaderSourceFileFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } + // Check if we were canceled before we do any heavy processing of + // the shader variant data. + if (jobCancelListener.IsCancelled()) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; + return; + } - // Check if we were canceled before we do any heavy processing of - // the shader variant data. - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } + AZStd::string shaderStemNamePrefix = shaderFileName; + if (supervariantIndex.GetIndex() > 0) + { + shaderStemNamePrefix += supervariantInfo.m_name.GetStringView(); + } - ShaderResourceGroupAssets srgAssets; - RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); - AzslData azslData(sources); - if (!azslData.m_sources) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } + // We need these additional pieces of information To build a shader variant asset: + // 1- ShaderOptionsGroupLayout (Need to load it once, because it's the same acrosss all supervariants + RHIs) + // 2- entryFunctions + // 3- hlsl code. - // Load shader reflections - auto azslArtifactsOutcome = ShaderBuilderUtility::ObtainBuildArtifactsFromAzslBuilder( - ShaderVariantAssetBuilderName, azslData.m_sources->m_azslSourceFullPath, shaderPlatformInterface->GetAPIType(), request.m_platformInfo.m_identifier); - if (!azslArtifactsOutcome.IsSuccess()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } + // 1- ShaderOptionsGroupLayout + if (!shaderOptionGroupLayout) + { + shaderOptionGroupLayout = + LoadShaderOptionsGroupLayoutFromShaderAssetBuilder( + shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, supervariantIndex); + if (!shaderOptionGroupLayout) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + } - BindingDependencies bindingDependencies; - RootConstantData rootConstantData; - AssetBuilderSDK::ProcessJobResultCode prepareResult = ShaderBuilderUtility::PopulateAzslDataFromJsonFiles( - ShaderVariantAssetBuilderName, - azslArtifactsOutcome.GetValue(), - azslData, - srgAssets, - shaderOptionGroupLayout, - bindingDependencies, - rootConstantData); - if (prepareResult != AssetBuilderSDK::ProcessJobResult_Success) - { - response.m_resultCode = prepareResult; - return; - } + // 2- entryFunctions. + AzslFunctions azslFunctions; + LoadShaderFunctionsFromShaderAssetBuilder( + shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, supervariantIndex, azslFunctions); + if (azslFunctions.empty()) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + MapOfStringToStageType shaderEntryPoints; + if (shaderSourceDescriptor.m_programSettings.m_entryPoints.empty()) + { + AZ_TracePrintf( + ShaderVariantAssetBuilderName, + "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); + ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslFunctions, shaderEntryPoints); + } + else + { + for (const auto& entryPoint : shaderSourceDescriptor.m_programSettings.m_entryPoints) + { + shaderEntryPoints[entryPoint.m_name] = entryPoint.m_type; + } + } - AZStd::string hlslSourcePath = azslArtifactsOutcome.GetValue()[ShaderBuilderUtility::AzslSubProducts::hlsl]; - Outcome hlslSourceContent = Utils::ReadFile(hlslSourcePath); - if (!hlslSourceContent.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to obtain shader source from %s. [%s]", hlslSourcePath.c_str(), hlslSourceContent.TakeError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } + // 3- hlslCode + AZStd::string hlslSourcePath; + AZStd::string hlslCode = LoadHlslFileFromShaderAssetBuilder( + shaderPlatformInterface, request.m_platformInfo, shaderSourceFileFullPath, supervariantIndex, hlslSourcePath); + if (hlslCode.empty() || hlslSourcePath.empty()) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderVariantAssetBuilderName); + // Setup the shader variant creation context: + ShaderVariantCreationContext shaderVariantCreationContext = + { + *shaderPlatformInterface, request.m_platformInfo, buildOptions.m_compilerArguments, request.m_tempDirPath, + startTime, + shaderSourceDescriptor, + *shaderOptionGroupLayout.get(), + shaderEntryPoints, + Uuid::CreateRandom(), + shaderStemNamePrefix, + hlslSourcePath, hlslCode + }; - auto shaderSourceLoadResult = ShaderBuilderUtility::LoadShaderDataJson(shaderSourceFileFullPath); - if (!shaderSourceLoadResult.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to load/parse Shader Descriptor JSON: %s", shaderSourceLoadResult.GetError().c_str()); - return; - } + AZStd::optional outputByproducts; + auto shaderVariantAssetOutcome = CreateShaderVariantAsset(variantInfo, shaderVariantCreationContext, outputByproducts); + if (!shaderVariantAssetOutcome.IsSuccess()) + { + AZ_Error(ShaderVariantAssetBuilderName, false, "%s\n", shaderVariantAssetOutcome.GetError().c_str()); + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + Data::Asset shaderVariantAsset = shaderVariantAssetOutcome.TakeValue(); - // The idea of this merge is that we have compiler options coming from 2 source: - // global options (from project Config/), and .shader options. - // We define a merge behavior that is: ".shader wins if set" - RHI::ShaderCompilerArguments mergedArguments = buildOptions.m_compilerArguments; - mergedArguments.Merge(shaderSourceLoadResult.GetValue().m_compiler); - Data::Asset shaderVariantAsset; - auto [success, byproducts] = CompileShaderVariantForAPI( - shaderVariantAsset, - shaderPlatformInterface, - azslData, - mergedArguments, - *shaderOptionGroupLayout, - shaderSourceDescriptor, - shaderAsset->GetShaderAssetBuildTimestamp(), - variantInfo, - srgAssets, - request, - bindingDependencies, - rootConstantData, - hlslSourcePath, - hlslSourceContent.GetValue(), - azslArtifactsOutcome.GetValue()[ShaderBuilderUtility::AzslSubProducts::om], - azslArtifactsOutcome.GetValue()[ShaderBuilderUtility::AzslSubProducts::ia]); - if (!success) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } + // Time to save the asset in the tmp folder so it ends up in the Cache folder. + const uint32_t productSubID = RPI::ShaderVariantAsset::MakeAssetProductSubId( + shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex.GetIndex(), + shaderVariantAsset->GetStableId()); + AssetBuilderSDK::JobProduct assetProduct; + if (!SerializeOutShaderVariantAsset(shaderVariantAsset, shaderStemNamePrefix, + request.m_tempDirPath, *shaderPlatformInterface, productSubID, + assetProduct)) + { + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; + return; + } + response.m_outputProducts.push_back(assetProduct); - // Time to save the asset in the cache tmp folder. - const uint32_t productSubID = RPI::ShaderVariantAsset::MakeAssetProductSubId(shaderPlatformInterface->GetAPIUniqueIndex(), shaderVariantAsset->GetStableId()); - AssetBuilderSDK::JobProduct assetProduct; - if (!SerializeOutShaderVariantAsset(shaderVariantAsset, shaderSourceFileFullPath, request.m_tempDirPath, *shaderPlatformInterface, productSubID, assetProduct)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - response.m_outputProducts.push_back(assetProduct); - - // add byproducts as job output products: - uint32_t subProductType = aznumeric_cast(RPI::ShaderAssetSubId::GeneratedHlslSource) + 1; - for (const AZStd::string& byproduct : byproducts.m_intermediatePaths) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = byproduct; - jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); - jobProduct.m_productSubID = RPI::ShaderVariantAsset::MakeAssetProductSubId( - shaderPlatformInterface->GetAPIType(), shaderVariantAsset->GetStableId(), subProductType++); - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } + if (outputByproducts) + { + // add byproducts as job output products: + uint32_t subProductType = RPI::ShaderVariantAsset::ShaderVariantAssetSubProductType; + for (const AZStd::string& byproduct : outputByproducts.value().m_intermediatePaths) + { + AssetBuilderSDK::JobProduct jobProduct; + jobProduct.m_productFileName = byproduct; + jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); + jobProduct.m_productSubID = RPI::ShaderVariantAsset::MakeAssetProductSubId( + shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex.GetIndex(), shaderVariantAsset->GetStableId(), + subProductType++); + response.m_outputProducts.push_back(AZStd::move(jobProduct)); + } + } + supervariantIndexCounter++; + } // End of supervariant for block + } response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; } - static bool CreateShaderVariant( - ShaderVariantCreationContext& variantCreationContext, - const AzslData& azslData, - const RHI::ShaderCompilerArguments& shaderCompilerArguments, - RHI::ShaderPlatformInterface& shaderPlatformInterface, - const size_t colorAttachmentCount, - const RPI::ShaderVariantStableId variantStableId, - RPI::ShaderVariantAssetCreator& variantCreator) - { - bool isVariantValid = true; - - bool hasRasterProgram = false; - bool hasComputeProgram = false; - bool hasRayTracingProgram = false; - - const AZStd::unordered_map& shaderEntryPoints = variantCreationContext.m_shaderEntryPoints; - for (const auto& shaderEntryPoint : shaderEntryPoints) - { - auto shaderEntryName = shaderEntryPoint.first; - auto shaderStageType = shaderEntryPoint.second; - - AZ_TracePrintf(ShaderVariantAssetBuilderName, "Entry Point: %s", shaderEntryName.c_str()); - AZ_TracePrintf(ShaderVariantAssetBuilderName, "Begin compiling shader function \"%s\"", shaderEntryName.c_str()); - - auto assetBuilderShaderType = ShaderBuilderUtility::ToAssetBuilderShaderType(shaderStageType); - - AZStd::string variantShaderSourcePath; - - // Check if we need to prepend any code prefix - if (!azslData.m_shaderCodePrefix.empty()) - { - // Prepend any shader code prefix that we should apply to this variant - // and save it back to a file. - AZStd::string variantShaderSourceString(azslData.m_shaderCodePrefix); - variantShaderSourceString += variantCreationContext.m_hlslSourceContent; - - AZStd::string shaderAssetName = AZStd::string::format("%s_%s_%s_%u.hlsl", azslData.m_sources->m_azslFileName.c_str(), shaderEntryName.c_str(), - shaderPlatformInterface.GetAPIName().GetCStr(), variantStableId.GetIndex()); - AzFramework::StringFunc::Path::Join(variantCreationContext.m_tempDirPath.c_str(), shaderAssetName.c_str(), variantShaderSourcePath, true, true); - - auto outcome = Utils::WriteFile(variantShaderSourceString, variantShaderSourcePath); - if (!outcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "Failed to create file %s", variantShaderSourcePath.c_str()); - return false; - } - } - else - { - variantShaderSourcePath = variantCreationContext.m_hlslSourcePath; - } - - // Compile HLSL to the platform specific shader. - RHI::ShaderPlatformInterface::StageDescriptor descriptor; - bool shaderWasCompiled = shaderPlatformInterface.CompilePlatformInternal( - variantCreationContext.m_platformInfo, - variantShaderSourcePath, - shaderEntryName, - assetBuilderShaderType, - variantCreationContext.m_tempDirPath, - descriptor, - shaderCompilerArguments); - - if (!shaderWasCompiled) - { - isVariantValid = false; - AZ_Error(ShaderVariantAssetBuilderName, false, "Could not compile the shader function %s", shaderEntryName.c_str()); - continue; // Using continue to report all the errors found - } - // bubble up the byproducts to the caller by moving them to the context. - variantCreationContext.m_outputByproducts.emplace(AZStd::move(descriptor.m_byProducts)); - - hasRasterProgram |= shaderPlatformInterface.IsShaderStageForRaster(assetBuilderShaderType); - hasComputeProgram |= shaderPlatformInterface.IsShaderStageForCompute(assetBuilderShaderType); - hasRayTracingProgram |= shaderPlatformInterface.IsShaderStageForRayTracing(assetBuilderShaderType); - - RHI::Ptr shaderStageFunction = shaderPlatformInterface.CreateShaderStageFunction(descriptor); - variantCreator.SetShaderFunction(ToRHIShaderStage(assetBuilderShaderType), shaderStageFunction); - - if (descriptor.m_byProducts.m_dynamicBranchCount != AZ::RHI::ShaderPlatformInterface::ByProducts::UnknownDynamicBranchCount) - { - AZ_TracePrintf(ShaderVariantAssetBuilderName, "Finished compiling shader function. Number of dynamic branches: %u", descriptor.m_byProducts.m_dynamicBranchCount); - } - else - { - AZ_TracePrintf(ShaderVariantAssetBuilderName, "Finished compiling shader function. Number of dynamic branches: unknown"); - } - } - - if (hasRasterProgram && hasComputeProgram) - { - AZ_Error(ShaderVariantAssetBuilderName, false, "Shader asset descriptor has a program variant that defines both a raster entry point and a compute entry point."); - isVariantValid = false; - } - - if (!hasRasterProgram && !hasComputeProgram && !hasRayTracingProgram) - { - AZStd::string entryPointNames = ShaderBuilderUtility::GetAcceptableDefaultEntryPointNames(azslData); - - AZ_Error(ShaderVariantAssetBuilderName, false, "Shader asset descriptor has a program variant that does not define any entry points. Either declare entry points in the .shader file, or use one of the available default names (not case-sensitive): [%s]", entryPointNames.data()); - - isVariantValid = false; - } - - if (isVariantValid && hasRasterProgram) - { - // Set the various states to what is in the descriptor first as this gives us - // the baseline. Then whatever is specified in the variant overrides the baseline - // and that will be used by the runtime. - - RHI::TargetBlendState targetBlendState = variantCreationContext.m_shaderSourceDataDescriptor.m_blendState; - RHI::DepthStencilState depthStencilState = variantCreationContext.m_shaderSourceDataDescriptor.m_depthStencilState; - RHI::RasterState rasterState = variantCreationContext.m_shaderSourceDataDescriptor.m_rasterState; - - // [GFX TODO][ATOM-930] - Shader Variant System Phase 2 - Investigation and Prototyping - // The entire Q3 epic will deal will prototyping different shader variants approaches - // A lot of code in prototype stage is disabled before a clearer vision for the system - // is in place, including the unclear way to set states below. - // RHI::MergeStateInto() needs to be further reviewed because it's not possible to - // override the base state with a variant state which sets a default value (for example) - // The states are further duplicated which suggest that they could instead just exist - // as variants and skip the merge step. This code, if it persists, should move to ShaderDataParser - // RHI::MergeStateInto(programVariant.m_blendState, targetBlendState); - // RHI::MergeStateInto(programVariant.m_depthStencilState.m_depth, depthStencilState.m_depth); - // RHI::MergeStateInto(programVariant.m_depthStencilState.m_stencil, depthStencilState.m_stencil); - // RHI::MergeStateInto(programVariant.m_rasterState, rasterState); - - RHI::RenderStates renderStates; - renderStates.m_rasterState = rasterState; - renderStates.m_depthStencilState = depthStencilState; - // [GFX TODO][ATOM-930] We should support unique blend states per RT - for (size_t i = 0; i < colorAttachmentCount; ++i) - { - renderStates.m_blendState.m_targets[i] = targetBlendState; - } - - variantCreator.SetRenderStates(renderStates); - } - - return isVariantValid; - } - - - AZ::Outcome, AZStd::string> ShaderVariantAssetBuilder::CreateShaderVariantAssetForAPI( - const RPI::ShaderVariantListSourceData::VariantInfo& variantInfo, - ShaderVariantCreationContext& variantCreationContext, - RHI::ShaderPlatformInterface& shaderPlatformInterface, - AzslData& azslData, - const RHI::ShaderCompilerArguments& shaderCompilerArguments, - const AZStd::string& pathToOmJson, - const AZStd::string& pathToIaJson) - { - RPI::ShaderInputContract shaderInputContract; - RPI::ShaderOutputContract shaderOutputContract; - size_t colorAttachmentCount = 0; - ShaderBuilderUtility::CreateShaderInputAndOutputContracts(azslData, variantCreationContext.m_shaderEntryPoints, variantCreationContext.m_shaderOptionGroupLayout, pathToOmJson, - pathToIaJson, shaderInputContract, shaderOutputContract, colorAttachmentCount); - - const RPI::ShaderOptionGroupLayout& shaderOptionGroupLayout = variantCreationContext.m_shaderOptionGroupLayout; - // Temporary structure used for sorting and caching intermediate results - struct OptionCache - { - AZ::Name m_optionName; - AZ::Name m_valueName; - RPI::ShaderOptionIndex m_optionIndex; // Cached m_optionName - RPI::ShaderOptionValue m_value; // Cached m_valueName - }; - AZStd::vector optionList; - // We can not have more options than the number of options in the layout: - optionList.reserve(variantCreationContext.m_shaderOptionGroupLayout.GetShaderOptionCount()); - - // This loop will validate and cache the indices for each option value: - for (const auto& shaderOption : variantInfo.m_options) - { - Name optionName{ shaderOption.first }; - Name optionValue{ shaderOption.second }; - - RPI::ShaderOptionIndex optionIndex = shaderOptionGroupLayout.FindShaderOptionIndex(optionName); - if (optionIndex.IsNull()) - { - return AZ::Failure(AZStd::string::format("Invalid shader option: %s", optionName.GetCStr())); - } - - const RPI::ShaderOptionDescriptor& option = shaderOptionGroupLayout.GetShaderOption(optionIndex); - RPI::ShaderOptionValue value = option.FindValue(optionValue); - if (value.IsNull()) - { - return AZ::Failure(AZStd::string::format("Invalid value (%s) for shader option: %s", optionValue.GetCStr(), optionName.GetCStr())); - } - - optionList.push_back(OptionCache{ optionName, optionValue, optionIndex, value }); - } - - // Create one instance of the shader variant - RPI::ShaderOptionGroup optionGroup(&shaderOptionGroupLayout); - - // m_shaderCodePrefix contains preprocessing macro defines to switch options on and off in our shader binary - // Clear it for this variant so we can add each option as we define it - azslData.m_shaderCodePrefix.clear(); - - // We want to go over all options listed in the variant and set their respective values - // This loop will populate the optionGroup and m_shaderCodePrefix in order of the option priority - for (const auto& optionCache : optionList) - { - const RPI::ShaderOptionDescriptor& option = shaderOptionGroupLayout.GetShaderOption(optionCache.m_optionIndex); - - // Assign the option value specified in the variant: - option.Set(optionGroup, optionCache.m_value); - - // Populate all shader option defines. We have already confirmed they're valid. - azslData.m_shaderCodePrefix += AZStd::string::format("#define %s_OPTION_DEF %s\n", optionCache.m_optionName.GetCStr(), optionCache.m_valueName.GetCStr()); - } - - AZ_TracePrintf(ShaderVariantAssetBuilderName, "Variant StableId: %u", variantInfo.m_stableId); - AZ_TracePrintf(ShaderVariantAssetBuilderName, "Variant Shader Options: %s", optionGroup.ToString().c_str()); - - const RPI::ShaderVariantStableId shaderVariantStableId{variantInfo.m_stableId}; - - // By this time the optionGroup was populated with all option values for the variant and - // the m_shaderCodePrefix contains all option related preprocessing macros - // Let's add the requested variant: - RPI::ShaderVariantAssetCreator shaderVariantAssetCreator; - shaderVariantAssetCreator.Begin(variantCreationContext.m_assetId, optionGroup.GetShaderVariantId(), shaderVariantStableId, & shaderOptionGroupLayout); - shaderVariantAssetCreator.SetShaderAssetBuildTimestamp(variantCreationContext.m_shaderAssetBuildTimestamp); - shaderVariantAssetCreator.SetInputContract(shaderInputContract); - shaderVariantAssetCreator.SetOutputContract(shaderOutputContract); - - if (!CreateShaderVariant( - variantCreationContext, - azslData, - shaderCompilerArguments, - shaderPlatformInterface, - colorAttachmentCount, - shaderVariantStableId, - shaderVariantAssetCreator)) - { - return AZ::Failure(AZStd::string::format("Failed to create shader variant with StableId=%u", shaderVariantStableId.GetIndex())); - } - - Data::Asset shaderVariantAsset; - shaderVariantAssetCreator.End(shaderVariantAsset); - return AZ::Success(AZStd::move(shaderVariantAsset)); - } - - bool ShaderVariantAssetBuilder::SerializeOutShaderVariantAsset(const Data::Asset shaderVariantAsset, const AZStd::string& shaderSourceFileFullPath, const AZStd::string& tempDirPath, + bool ShaderVariantAssetBuilder::SerializeOutShaderVariantAsset( + const Data::Asset shaderVariantAsset, const AZStd::string& shaderStemNamePrefix, + const AZStd::string& tempDirPath, const RHI::ShaderPlatformInterface& shaderPlatformInterface, const uint32_t productSubID, AssetBuilderSDK::JobProduct& assetProduct) { - AZStd::string shaderName; - AzFramework::StringFunc::Path::Split(shaderSourceFileFullPath.c_str(), nullptr /*drive*/, nullptr /*path*/, &shaderName, nullptr /*extension*/); - AZStd::string filename = AZStd::string::format("%s_%s_%u.%s", shaderName.c_str(), shaderPlatformInterface.GetAPIName().GetCStr(), shaderVariantAsset->GetStableId().GetIndex(), RPI::ShaderVariantAsset::Extension); + AZStd::string filename = AZStd::string::format( + "%s_%s_%u.%s", shaderStemNamePrefix.c_str(), shaderPlatformInterface.GetAPIName().GetCStr(), + shaderVariantAsset->GetStableId().GetIndex(), RPI::ShaderVariantAsset::Extension); AZStd::string assetPath; AzFramework::StringFunc::Path::ConstructFull(tempDirPath.c_str(), filename.c_str(), assetPath, true); @@ -1057,5 +824,154 @@ namespace AZ return true; } + + AZ::Outcome, AZStd::string> ShaderVariantAssetBuilder::CreateShaderVariantAsset( + const RPI::ShaderVariantListSourceData::VariantInfo& shaderVariantInfo, + ShaderVariantCreationContext& creationContext, + AZStd::optional& outputByproducts) + { + // Temporary structure used for sorting and caching intermediate results + struct OptionCache + { + AZ::Name m_optionName; + AZ::Name m_valueName; + RPI::ShaderOptionIndex m_optionIndex; // Cached m_optionName + RPI::ShaderOptionValue m_value; // Cached m_valueName + }; + AZStd::vector optionList; + // We can not have more options than the number of options in the layout: + optionList.reserve(creationContext.m_shaderOptionGroupLayout.GetShaderOptionCount()); + + // This loop will validate and cache the indices for each option value: + for (const auto& shaderOption : shaderVariantInfo.m_options) + { + Name optionName{shaderOption.first}; + Name optionValue{shaderOption.second}; + + RPI::ShaderOptionIndex optionIndex = creationContext.m_shaderOptionGroupLayout.FindShaderOptionIndex(optionName); + if (optionIndex.IsNull()) + { + return AZ::Failure(AZStd::string::format("Invalid shader option: %s", optionName.GetCStr())); + } + + const RPI::ShaderOptionDescriptor& option = creationContext.m_shaderOptionGroupLayout.GetShaderOption(optionIndex); + RPI::ShaderOptionValue value = option.FindValue(optionValue); + if (value.IsNull()) + { + return AZ::Failure( + AZStd::string::format("Invalid value (%s) for shader option: %s", optionValue.GetCStr(), optionName.GetCStr())); + } + + optionList.push_back(OptionCache{optionName, optionValue, optionIndex, value}); + } + + // Create one instance of the shader variant + RPI::ShaderOptionGroup optionGroup(&creationContext.m_shaderOptionGroupLayout); + + //! Contains the series of #define macro values that define a variant. Can be empty (root variant). + //! If this string is NOT empty, a new temporary hlsl file will be created that will be the combination + //! of this string + @m_hlslSourceContent. + AZStd::string hlslCodeToPrependForVariant; + + // We want to go over all options listed in the variant and set their respective values + // This loop will populate the optionGroup and m_shaderCodePrefix in order of the option priority + for (const auto& optionCache : optionList) + { + const RPI::ShaderOptionDescriptor& option = creationContext.m_shaderOptionGroupLayout.GetShaderOption(optionCache.m_optionIndex); + + // Assign the option value specified in the variant: + option.Set(optionGroup, optionCache.m_value); + + // Populate all shader option defines. We have already confirmed they're valid. + hlslCodeToPrependForVariant += AZStd::string::format( + "#define %s_OPTION_DEF %s\n", optionCache.m_optionName.GetCStr(), optionCache.m_valueName.GetCStr()); + } + + AZStd::string variantShaderSourcePath; + // Check if we need to prepend any code prefix + if (!hlslCodeToPrependForVariant.empty()) + { + // Prepend any shader code prefix that we should apply to this variant + // and save it back to a file. + AZStd::string variantShaderSourceString(hlslCodeToPrependForVariant); + variantShaderSourceString += creationContext.m_hlslSourceContent; + + AZStd::string shaderAssetName = AZStd::string::format( + "%s_%s_%u.hlsl", creationContext.m_shaderStemNamePrefix.c_str(), + creationContext.m_shaderPlatformInterface.GetAPIName().GetCStr(), shaderVariantInfo.m_stableId); + AzFramework::StringFunc::Path::Join( + creationContext.m_tempDirPath.c_str(), shaderAssetName.c_str(), variantShaderSourcePath, true, true); + + auto outcome = Utils::WriteFile(variantShaderSourceString, variantShaderSourcePath); + if (!outcome.IsSuccess()) + { + return AZ::Failure(AZStd::string::format("Failed to create file %s", variantShaderSourcePath.c_str())); + } + } + else + { + variantShaderSourcePath = creationContext.m_hlslSourcePath; + } + + AZ_TracePrintf(ShaderVariantAssetBuilderName, "Variant StableId: %u", shaderVariantInfo.m_stableId); + AZ_TracePrintf(ShaderVariantAssetBuilderName, "Variant Shader Options: %s", optionGroup.ToString().c_str()); + + const RPI::ShaderVariantStableId shaderVariantStableId{shaderVariantInfo.m_stableId}; + + // By this time the optionGroup was populated with all option values for the variant and + // the m_shaderCodePrefix contains all option related preprocessing macros + // Let's add the requested variant: + RPI::ShaderVariantAssetCreator variantCreator; + RPI::ShaderOptionGroup shaderOptions{&creationContext.m_shaderOptionGroupLayout, optionGroup.GetShaderVariantId()}; + variantCreator.Begin( + creationContext.m_shaderVariantAssetId, optionGroup.GetShaderVariantId(), shaderVariantStableId, + shaderOptions.IsFullySpecified()); + variantCreator.SetBuildTimestamp(creationContext.m_assetBuildTimestamp); + + const AZStd::unordered_map& shaderEntryPoints = creationContext.m_shaderEntryPoints; + for (const auto& shaderEntryPoint : shaderEntryPoints) + { + auto shaderEntryName = shaderEntryPoint.first; + auto shaderStageType = shaderEntryPoint.second; + + AZ_TracePrintf(ShaderVariantAssetBuilderName, "Entry Point: %s", shaderEntryName.c_str()); + AZ_TracePrintf(ShaderVariantAssetBuilderName, "Begin compiling shader function \"%s\"", shaderEntryName.c_str()); + + auto assetBuilderShaderType = ShaderBuilderUtility::ToAssetBuilderShaderType(shaderStageType); + + // Compile HLSL to the platform specific shader. + RHI::ShaderPlatformInterface::StageDescriptor descriptor; + bool shaderWasCompiled = creationContext.m_shaderPlatformInterface.CompilePlatformInternal( + creationContext.m_platformInfo, variantShaderSourcePath, shaderEntryName, assetBuilderShaderType, + creationContext.m_tempDirPath, descriptor, creationContext.m_shaderCompilerArguments); + + if (!shaderWasCompiled) + { + return AZ::Failure(AZStd::string::format("Could not compile the shader function %s", shaderEntryName.c_str())); + } + // bubble up the byproducts to the caller by moving them to the context. + outputByproducts.emplace(AZStd::move(descriptor.m_byProducts)); + + RHI::Ptr shaderStageFunction = creationContext.m_shaderPlatformInterface.CreateShaderStageFunction(descriptor); + variantCreator.SetShaderFunction(ToRHIShaderStage(assetBuilderShaderType), shaderStageFunction); + + if (descriptor.m_byProducts.m_dynamicBranchCount != AZ::RHI::ShaderPlatformInterface::ByProducts::UnknownDynamicBranchCount) + { + AZ_TracePrintf( + ShaderVariantAssetBuilderName, "Finished compiling shader function. Number of dynamic branches: %u", + descriptor.m_byProducts.m_dynamicBranchCount); + } + else + { + AZ_TracePrintf( + ShaderVariantAssetBuilderName, "Finished compiling shader function. Number of dynamic branches: unknown"); + } + } + + Data::Asset shaderVariantAsset; + variantCreator.End(shaderVariantAsset); + return AZ::Success(AZStd::move(shaderVariantAsset)); + } + } // ShaderBuilder } // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h index 84ab4fbc70..45bfd54e94 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.h @@ -29,25 +29,34 @@ namespace AZ { struct AzslData; + //! This is nothing more than a class to help consolidate all + //! the data needed to generate a shader variant and prevent + //! all the functions involved in the process to have too many + //! arguments. struct ShaderVariantCreationContext { - const Data::AssetId m_assetId; - const AZStd::string& m_hlslSourcePath; - const AZStd::string& m_hlslSourceContent; - const RPI::ShaderSourceData& m_shaderSourceDataDescriptor; - const AZStd::string& m_tempDirPath; //! Used to write temporary files during shader compilation, like *.hlsl, or *.air, or *.metallib, etc. + RHI::ShaderPlatformInterface& m_shaderPlatformInterface; const AssetBuilderSDK::PlatformInfo& m_platformInfo; + const RHI::ShaderCompilerArguments& m_shaderCompilerArguments; + //! Used to write temporary files during shader compilation, like *.hlsl, or *.air, or *.metallib, etc. + const AZStd::string& m_tempDirPath; + //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, + //! especially during hot-reload. A (ShaderVariantAsset.timestamp) >= (ShaderAsset.timestamp). + const AZStd::sys_time_t m_assetBuildTimestamp; + const RPI::ShaderSourceData& m_shaderSourceDataDescriptor; const RPI::ShaderOptionGroupLayout& m_shaderOptionGroupLayout; const MapOfStringToStageType& m_shaderEntryPoints; - AZStd::sys_time_t m_shaderAssetBuildTimestamp; //!< Copied from the ShaderAsset, used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::optional m_outputByproducts; + const Data::AssetId m_shaderVariantAssetId; + const AZStd::string& m_shaderStemNamePrefix; //- + const AZStd::string& m_hlslSourcePath; + const AZStd::string& m_hlslSourceContent; }; class ShaderVariantAssetBuilder : public AssetBuilderSDK::AssetBuilderCommandBus::Handler { public: - AZ_TYPE_INFO(ShaderVariantAssetBuilder, "{2F84C802-95AF-4B73-9017-2DA9AA8C0C89}"); + AZ_TYPE_INFO(ShaderVariantAssetBuilder, "{C959AEC2-2083-4488-AD88-F61B1144535B}"); static constexpr char ShaderVariantAssetBuilderJobKey[] = "Shader Variant Asset"; @@ -61,16 +70,14 @@ namespace AZ //! The ShaderVariantAsset returned by this function won't be written to the filesystem. //! You should call SerializeOutShaderVariantAsset to write it to the temp folder assigned //! by the asset processor. - static AZ::Outcome, AZStd::string> CreateShaderVariantAssetForAPI( + static AZ::Outcome, AZStd::string> CreateShaderVariantAsset( const RPI::ShaderVariantListSourceData::VariantInfo& shaderVariantInfo, - ShaderVariantCreationContext& context, - RHI::ShaderPlatformInterface& shaderPlatformInterface, - AzslData& azslData, - const RHI::ShaderCompilerArguments& shaderCompilerArguments, - const AZStd::string& pathToOmJson, - const AZStd::string& pathToIaJson); + ShaderVariantCreationContext& creationContext, + AZStd::optional& outputByproducts); - static bool SerializeOutShaderVariantAsset(const Data::Asset shaderVariantAsset, const AZStd::string& shaderFullPath, const AZStd::string& tempDirPath, + static bool SerializeOutShaderVariantAsset( + const Data::Asset shaderVariantAsset, + const AZStd::string& shaderStemNamePrefix, const AZStd::string& tempDirPath, const RHI::ShaderPlatformInterface& shaderPlatformInterface, const uint32_t productSubID, AssetBuilderSDK::JobProduct& assetProduct); // AssetBuilderSDK::AssetBuilderCommandBus interface overrides ... @@ -79,6 +86,11 @@ namespace AZ private: AZ_DISABLE_COPY_MOVE(ShaderVariantAssetBuilder); + static constexpr uint32_t ShaderVariantLoadErrorParam = 0; + static constexpr uint32_t ShaderSourceFilePathJobParam = 2; + static constexpr uint32_t ShaderVariantJobVariantParam = 3; + static constexpr uint32_t ShouldExitEarlyFromProcessJobParam = 4; + //! Called from ProcessJob when the job is supposed to create a ShaderVariantTreeAsset. void ProcessShaderVariantTreeJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.cpp deleted file mode 100644 index 961e54c7a8..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.cpp +++ /dev/null @@ -1,978 +0,0 @@ -/* -* 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. -*/ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ShaderAssetBuilder2.h" -#include "ShaderBuilderUtility.h" -#include "AzslData.h" -#include "AzslCompiler.h" -#include "AzslBuilder.h" -#include -#include -#include -#include "AtomShaderConfig.h" - -namespace AZ -{ - namespace ShaderBuilder - { - static constexpr char ShaderVariantAssetBuilder2Name[] = "ShaderVariantAssetBuilder2"; - - static void AddShaderAssetJobDependency2( - AssetBuilderSDK::JobDescriptor& jobDescriptor, const AssetBuilderSDK::PlatformInfo& platformInfo, - const AZStd::string& shaderVariantListFilePath, const AZStd::string& shaderFilePath) - { - AZStd::vector possibleDependencies = - AZ::RPI::AssetUtils::GetPossibleDepenencyPaths(shaderVariantListFilePath, shaderFilePath); - for (auto& file : possibleDependencies) - { - AssetBuilderSDK::JobDependency jobDependency; - jobDependency.m_jobKey = ShaderAssetBuilder2::ShaderAssetBuilder2JobKey; - jobDependency.m_platformIdentifier = platformInfo.m_identifier; - jobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order; - jobDependency.m_sourceFile.m_sourceFileDependencyPath = file; - jobDescriptor.m_jobDependencyList.push_back(jobDependency); - } - } - - //! Returns true if @sourceFileFullPath starts with a valid asset processor scan folder, false otherwise. - //! In case of true, it splits @sourceFileFullPath into @scanFolderFullPath and @filePathFromScanFolder. - //! @sourceFileFullPath The full path to a source asset file. - //! @scanFolderFullPath [out] Gets the full path of the scan folder where the source file is located. - //! @filePathFromScanFolder [out] Get the file path relative to @scanFolderFullPath. - static bool SplitSourceAssetPathIntoScanFolderFullPathAndRelativeFilePath2(const AZStd::string& sourceFileFullPath, AZStd::string& scanFolderFullPath, AZStd::string& filePathFromScanFolder) - { - AZStd::vector scanFolders; - bool success = false; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult(success, &AzToolsFramework::AssetSystem::AssetSystemRequest::GetAssetSafeFolders, scanFolders); - if (!success) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Couldn't get the scan folders"); - return false; - } - - for (AZStd::string scanFolder : scanFolders) - { - AzFramework::StringFunc::Path::Normalize(scanFolder); - if (!AZ::StringFunc::StartsWith(sourceFileFullPath, scanFolder)) - { - continue; - } - const size_t scanFolderSize = scanFolder.size(); - const size_t sourcePathSize = sourceFileFullPath.size(); - scanFolderFullPath = scanFolder; - filePathFromScanFolder = sourceFileFullPath.substr(scanFolderSize + 1, sourcePathSize - scanFolderSize - 1); - return true; - } - - return false; - } - - //! Validates if a given .shadervariantlist file is located at the correct path for a given .shader full path. - //! There are two valid paths: - //! 1- Lower Precedence: The same folder where the .shader file is located. - //! 2- Higher Precedence: //ShaderVariants/. - //! The "Higher Precedence" path gives the option to game projects to override what variants to generate. If this - //! file exists then the "Lower Precedence" path is disregarded. - //! A .shader full path is located under an AP scan folder. - //! Example: "/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.shader" - //! - In this example the Scan Folder is "/Gems/Atom/Feature/Common/Assets", while the subfolder is "Materials/Types". - //! The "Higher Precedence" expected valid location for the .shadervariantlist would be: - //! - //ShaderVariants/Materials/Types/StandardPBR_ForwardPass.shadervariantlist. - //! The "Lower Precedence" valid location would be: - //! - /Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.shadervariantlist. - //! @shouldExitEarlyFromProcessJob [out] Set to true if ProcessJob should do no work but return successfully. - //! Set to false if ProcessJob should do work and create assets. - //! When @shaderVariantListFileFullPath is provided by a Gem/Feature instead of the Game Project - //! We check if the game project already defined the shader variant list, and if it did it means - //! ProcessJob should do no work, but return successfully nonetheless. - static bool ValidateShaderVariantListLocation2(const AZStd::string& shaderVariantListFileFullPath, - const AZStd::string& shaderFileFullPath, bool& shouldExitEarlyFromProcessJob) - { - AZStd::string scanFolderFullPath; - AZStd::string shaderProductFileRelativePath; - if (!SplitSourceAssetPathIntoScanFolderFullPathAndRelativeFilePath2(shaderFileFullPath, scanFolderFullPath, shaderProductFileRelativePath)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Couldn't get the scan folder for shader [%s]", shaderFileFullPath.c_str()); - return false; - } - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "For shader [%s], Scan folder full path [%s], relative file path [%s]", shaderFileFullPath.c_str(), scanFolderFullPath.c_str(), shaderProductFileRelativePath.c_str()); - - AZStd::string shaderVariantListFileRelativePath = shaderProductFileRelativePath; - AzFramework::StringFunc::Path::ReplaceExtension(shaderVariantListFileRelativePath, RPI::ShaderVariantListSourceData::Extension); - - const char * gameProjectPath = nullptr; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult(gameProjectPath, &AzToolsFramework::AssetSystem::AssetSystemRequest::GetAbsoluteDevGameFolderPath); - - AZStd::string expectedHigherPrecedenceFileFullPath; - AzFramework::StringFunc::Path::Join(gameProjectPath, RPI::ShaderVariantTreeAsset::CommonSubFolder, expectedHigherPrecedenceFileFullPath, false /* handle directory overlap? */, false /* be case insensitive? */); - AzFramework::StringFunc::Path::Join(expectedHigherPrecedenceFileFullPath.c_str(), shaderProductFileRelativePath.c_str(), expectedHigherPrecedenceFileFullPath, false /* handle directory overlap? */, false /* be case insensitive? */); - AzFramework::StringFunc::Path::ReplaceExtension(expectedHigherPrecedenceFileFullPath, AZ::RPI::ShaderVariantListSourceData::Extension); - AzFramework::StringFunc::Path::Normalize(expectedHigherPrecedenceFileFullPath); - - AZStd::string normalizedShaderVariantListFileFullPath = shaderVariantListFileFullPath; - AzFramework::StringFunc::Path::Normalize(normalizedShaderVariantListFileFullPath); - - if (expectedHigherPrecedenceFileFullPath == normalizedShaderVariantListFileFullPath) - { - // Whenever the Game Project declares a *.shadervariantlist file we always do work. - shouldExitEarlyFromProcessJob = false; - return true; - } - - AZ::Data::AssetInfo assetInfo; - AZStd::string watchFolder; - bool foundHigherPrecedenceAsset = false; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult(foundHigherPrecedenceAsset - , &AzToolsFramework::AssetSystem::AssetSystemRequest::GetSourceInfoBySourcePath - , expectedHigherPrecedenceFileFullPath.c_str(), assetInfo, watchFolder); - if (foundHigherPrecedenceAsset) - { - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "The shadervariantlist [%s] has been overriden by the game project with [%s]", - normalizedShaderVariantListFileFullPath.c_str(), expectedHigherPrecedenceFileFullPath.c_str()); - shouldExitEarlyFromProcessJob = true; - return true; - } - - // Check the "Lower Precedence" case, .shader path == .shadervariantlist path. - AZStd::string normalizedShaderFileFullPath = shaderFileFullPath; - AzFramework::StringFunc::Path::Normalize(normalizedShaderFileFullPath); - - AZStd::string normalizedShaderFileFullPathWithoutExtension = normalizedShaderFileFullPath; - AzFramework::StringFunc::Path::StripExtension(normalizedShaderFileFullPathWithoutExtension); - - AZStd::string normalizedShaderVariantListFileFullPathWithoutExtension = normalizedShaderVariantListFileFullPath; - AzFramework::StringFunc::Path::StripExtension(normalizedShaderVariantListFileFullPathWithoutExtension); - -#if AZ_TRAIT_OS_USE_WINDOWS_FILE_PATHS - //In certain circumstances, the capitalization of the drive letter may not match - const bool caseSensitive = false; -#else - //On the other platforms there's no drive letter, so it should be a non-issue. - const bool caseSensitive = true; -#endif - if (!StringFunc::Equal(normalizedShaderFileFullPathWithoutExtension.c_str(), normalizedShaderVariantListFileFullPathWithoutExtension.c_str(), caseSensitive)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "For shader file at path [%s], the shader variant list [%s] is expected to be located at [%s.%s] or [%s]" - , normalizedShaderFileFullPath.c_str(), normalizedShaderVariantListFileFullPath.c_str(), - normalizedShaderFileFullPathWithoutExtension.c_str(), RPI::ShaderVariantListSourceData::Extension, - expectedHigherPrecedenceFileFullPath.c_str()); - return false; - } - - shouldExitEarlyFromProcessJob = false; - return true; - } - - // 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 ShaderVariantAssetBuilder2 to run again. - // Since CreateJobs will pass, we forward this message to ProcessJob which will report it as an error. - struct LoadResult2 - { - enum class Code - { - Error, - DeferredError, - Success - }; - - Code m_code; - AZStd::string m_deferredMessage; // Only used when m_code == DeferredError - }; - - static LoadResult2 LoadShaderVariantList2(const AZStd::string& variantListFullPath, RPI::ShaderVariantListSourceData& shaderVariantList, AZStd::string& shaderSourceFileFullPath, - bool& shouldExitEarlyFromProcessJob) - { - // Need to get the name of the shader file from the template so that we can preprocess the shader data and setup - // source file dependencies. - if (!RPI::JsonUtils::LoadObjectFromFile(variantListFullPath, shaderVariantList)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to parse Shader Variant List Descriptor JSON from [%s]", variantListFullPath.c_str()); - return LoadResult2{LoadResult2::Code::Error}; - } - - const AZStd::string resolvedShaderPath = AZ::RPI::AssetUtils::ResolvePathReference(variantListFullPath, shaderVariantList.m_shaderFilePath); - if (!AZ::IO::LocalFileIO::GetInstance()->Exists(resolvedShaderPath.c_str())) - { - return LoadResult2{LoadResult2::Code::DeferredError, AZStd::string::format("The shader path [%s] was not found.", resolvedShaderPath.c_str())}; - } - - shaderSourceFileFullPath = resolvedShaderPath; - - if (!ValidateShaderVariantListLocation2(variantListFullPath, shaderSourceFileFullPath, shouldExitEarlyFromProcessJob)) - { - return LoadResult2{LoadResult2::Code::Error}; - } - - if (shouldExitEarlyFromProcessJob) - { - return LoadResult2{LoadResult2::Code::Success}; - } - - auto resultOutcome = RPI::ShaderVariantTreeAssetCreator::ValidateStableIdsAreUnique(shaderVariantList.m_shaderVariants); - if (!resultOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Variant info validation error: %s", resultOutcome.GetError().c_str()); - return LoadResult2{LoadResult2::Code::Error}; - } - - if (!IO::FileIOBase::GetInstance()->Exists(shaderSourceFileFullPath.c_str())) - { - return LoadResult2{LoadResult2::Code::DeferredError, AZStd::string::format("ShaderSourceData file does not exist: %s.", shaderSourceFileFullPath.c_str())}; - } - - return LoadResult2{LoadResult2::Code::Success}; - } // LoadShaderVariantListAndAzslSource - - void ShaderVariantAssetBuilder2::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const - { - AZStd::string variantListFullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), variantListFullPath, true); - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "CreateJobs for Shader Variant List \"%s\"\n", variantListFullPath.data()); - - RPI::ShaderVariantListSourceData shaderVariantList; - AZStd::string shaderSourceFileFullPath; - bool shouldExitEarlyFromProcessJob = false; - const LoadResult2 loadResult = LoadShaderVariantList2(variantListFullPath, shaderVariantList, shaderSourceFileFullPath, shouldExitEarlyFromProcessJob); - - if (loadResult.m_code == LoadResult2::Code::Error) - { - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed; - return; - } - - if (loadResult.m_code == LoadResult2::Code::DeferredError || shouldExitEarlyFromProcessJob) - { - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - // Let's create fake jobs that will fail ProcessJob, but are useful to establish dependency on the shader file. - AssetBuilderSDK::JobDescriptor jobDescriptor; - - jobDescriptor.m_priority = -5000; - jobDescriptor.m_critical = false; - jobDescriptor.m_jobKey = ShaderVariantAssetBuilder2JobKey; - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - - AddShaderAssetJobDependency2(jobDescriptor, info, variantListFullPath, shaderVariantList.m_shaderFilePath); - - if (loadResult.m_code == LoadResult2::Code::DeferredError) - { - jobDescriptor.m_jobParameters.emplace(ShaderVariantLoadErrorParam, loadResult.m_deferredMessage); - } - - if (shouldExitEarlyFromProcessJob) - { - // The value doesn't matter, what matters is the presence of the key which will - // signal that no assets should be produced on behalf of this shadervariantlist because - // the game project overrode it. - jobDescriptor.m_jobParameters.emplace(ShouldExitEarlyFromProcessJobParam, variantListFullPath); - } - - response.m_createJobOutputs.push_back(jobDescriptor); - } - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - return; - } - - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - AZ_TraceContext("For platform", info.m_identifier.data()); - - // First job is for the ShaderVariantTreeAsset. - { - AssetBuilderSDK::JobDescriptor jobDescriptor; - - // The ShaderVariantTreeAsset is high priority, but must be generated after the ShaderAsset - jobDescriptor.m_priority = 1; - jobDescriptor.m_critical = false; - - jobDescriptor.m_jobKey = GetShaderVariantTreeAssetJobKey(); - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - - AddShaderAssetJobDependency2(jobDescriptor, info, variantListFullPath, shaderVariantList.m_shaderFilePath); - - jobDescriptor.m_jobParameters.emplace(ShaderSourceFilePathJobParam, shaderSourceFileFullPath); - - response.m_createJobOutputs.push_back(jobDescriptor); - } - - // One job for each variant. Each job will produce one ".azshadervariant" per RHI per supervariant. - for (const AZ::RPI::ShaderVariantListSourceData::VariantInfo& variantInfo : shaderVariantList.m_shaderVariants) - { - AZStd::string variantInfoAsJsonString; - const bool convertSuccess = AZ::RPI::JsonUtils::SaveObjectToJsonString(variantInfo, variantInfoAsJsonString); - AZ_Assert(convertSuccess, "Failed to convert VariantInfo to json string"); - - AssetBuilderSDK::JobDescriptor jobDescriptor; - - // There can be tens/hundreds of thousands of shader variants. By default each shader will get - // a root variant that can be used at runtime. In order to prevent the AssetProcessor from - // being overtaken by shader variant compilation We mark all non-root shader variant generation - // as non critical and very low priority. - jobDescriptor.m_priority = -5000; - jobDescriptor.m_critical = false; - - jobDescriptor.m_jobKey = GetShaderVariantAssetJobKey(RPI::ShaderVariantStableId{variantInfo.m_stableId}); - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - - // The ShaderVariantAssets are job dependent on the ShaderVariantTreeAsset. - AssetBuilderSDK::SourceFileDependency fileDependency; - fileDependency.m_sourceFileDependencyPath = variantListFullPath; - AssetBuilderSDK::JobDependency variantTreeJobDependency; - variantTreeJobDependency.m_jobKey = GetShaderVariantTreeAssetJobKey(); - variantTreeJobDependency.m_platformIdentifier = info.m_identifier; - variantTreeJobDependency.m_sourceFile = fileDependency; - variantTreeJobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order; - jobDescriptor.m_jobDependencyList.emplace_back(variantTreeJobDependency); - - jobDescriptor.m_jobParameters.emplace(ShaderVariantJobVariantParam, variantInfoAsJsonString); - jobDescriptor.m_jobParameters.emplace(ShaderSourceFilePathJobParam, shaderSourceFileFullPath); - - response.m_createJobOutputs.push_back(jobDescriptor); - } - - } - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - } // CreateJobs - - void ShaderVariantAssetBuilder2::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - const auto& jobParameters = request.m_jobDescription.m_jobParameters; - - if (jobParameters.find(ShaderVariantLoadErrorParam) != jobParameters.end()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Error during CreateJobs: %s", jobParameters.at(ShaderVariantLoadErrorParam).c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (jobParameters.find(ShouldExitEarlyFromProcessJobParam) != jobParameters.end()) - { - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Doing nothing on behalf of [%s] because it's been overridden by game project.", jobParameters.at(ShaderVariantLoadErrorParam).c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - if (request.m_jobDescription.m_jobKey == GetShaderVariantTreeAssetJobKey()) - { - ProcessShaderVariantTreeJob(request, response); - } - else - { - ProcessShaderVariantJob(request, response); - } - } - - - static RPI::Ptr LoadShaderOptionsGroupLayoutFromShaderAssetBuilder2( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, - const AssetBuilderSDK::PlatformInfo& platformInfo, - const AzslCompiler& azslCompiler, - const AZStd::string& shaderSourceFileFullPath, - const RPI::SupervariantIndex supervariantIndex) - { - auto optionsGroupPathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder2( - shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), - AZ::RPI::ShaderAssetSubId::OptionsJson); - if (!optionsGroupPathOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", optionsGroupPathOutcome.GetError().c_str()); - return nullptr; - } - auto optionsGroupJsonPath = optionsGroupPathOutcome.TakeValue(); - RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); - // The shader options define what options are available, what are the allowed values/range - // for each option and what is its default value. - auto jsonOutcome = JsonSerializationUtils::ReadJsonFile(optionsGroupJsonPath); - if (!jsonOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", jsonOutcome.GetError().c_str()); - return nullptr; - } - if (!azslCompiler.ParseOptionsPopulateOptionGroupLayout(jsonOutcome.GetValue(), shaderOptionGroupLayout)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to find a valid list of shader options!"); - return nullptr; - } - - return shaderOptionGroupLayout; - } - - static void LoadShaderFunctionsFromShaderAssetBuilder2( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, const AssetBuilderSDK::PlatformInfo& platformInfo, - const AzslCompiler& azslCompiler, const AZStd::string& shaderSourceFileFullPath, - const RPI::SupervariantIndex supervariantIndex, - AzslFunctions& functions) - { - auto functionsJsonPathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder2( - shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), - AZ::RPI::ShaderAssetSubId::IaJson); - if (!functionsJsonPathOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", functionsJsonPathOutcome.GetError().c_str()); - return; - } - - auto functionsJsonPath = functionsJsonPathOutcome.TakeValue(); - auto jsonOutcome = JsonSerializationUtils::ReadJsonFile(functionsJsonPath); - if (!jsonOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", jsonOutcome.GetError().c_str()); - return; - } - if (!azslCompiler.ParseIaPopulateFunctionData(jsonOutcome.GetValue(), functions)) - { - functions.clear(); - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to find shader functions."); - return; - } - } - - - // Returns the content of the hlsl file for the given supervariant as produced by ShaderAsssetBuilder2. - // In addition to the content it also returns the full path of the hlsl file in @hlslSourcePath. - static AZStd::string LoadHlslFileFromShaderAssetBuilder2( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, const AssetBuilderSDK::PlatformInfo& platformInfo, - const AZStd::string& shaderSourceFileFullPath, const RPI::SupervariantIndex supervariantIndex, AZStd::string& hlslSourcePath) - { - auto hlslSourcePathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder2( - shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), - AZ::RPI::ShaderAssetSubId::GeneratedHlslSource); - if (!hlslSourcePathOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", hlslSourcePathOutcome.GetError().c_str()); - return ""; - } - - hlslSourcePath = hlslSourcePathOutcome.TakeValue(); - Outcome hlslSourceOutcome = Utils::ReadFile(hlslSourcePath); - if (!hlslSourceOutcome.IsSuccess()) - { - AZ_Error( - ShaderVariantAssetBuilder2Name, false, "Failed to obtain shader source from %s. [%s]", hlslSourcePath.c_str(), - hlslSourceOutcome.TakeError().c_str()); - return ""; - } - return hlslSourceOutcome.TakeValue(); - } - - void ShaderVariantAssetBuilder2::ProcessShaderVariantTreeJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - AZStd::string variantListFullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), variantListFullPath, true); - - RPI::ShaderVariantListSourceData shaderVariantListDescriptor; - if (!RPI::JsonUtils::LoadObjectFromFile(variantListFullPath, shaderVariantListDescriptor)) - { - AZ_Assert(false, "Failed to parse Shader Variant List Descriptor JSON [%s]", variantListFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - const AZStd::string& shaderSourceFileFullPath = request.m_jobDescription.m_jobParameters.at(ShaderSourceFilePathJobParam); - - //For debugging purposes will create a dummy azshadervarianttree file. - AZStd::string shaderName; - AzFramework::StringFunc::Path::GetFileName(shaderSourceFileFullPath.c_str(), shaderName); - - // No error checking because the same calls were already executed during CreateJobs() - auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(shaderSourceFileFullPath); - RPI::ShaderSourceData shaderSourceDescriptor = descriptorParseOutcome.TakeValue(); - RPI::Ptr shaderOptionGroupLayout; - - // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces = - ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces(request.m_platformInfo, shaderSourceDescriptor); - if (platformInterfaces.empty()) - { - // No work to do. Exit gracefully. - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, - "No azshadervarianttree is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", - shaderSourceFileFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - - // set the input file for eventual error messages, but the compiler won't be called on it. - AZStd::string azslFullPath; - ShaderBuilderUtility::GetAbsolutePathToAzslFile(shaderSourceFileFullPath, shaderSourceDescriptor.m_source, azslFullPath); - AzslCompiler azslc(azslFullPath); - - AZStd::string previousLoopApiName; - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - auto thisLoopApiName = shaderPlatformInterface->GetAPIName().GetStringView(); - RPI::Ptr loopLocal_ShaderOptionGroupLayout = - LoadShaderOptionsGroupLayoutFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, RPI::DefaultSupervariantIndex); - if (!loopLocal_ShaderOptionGroupLayout) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - if (shaderOptionGroupLayout && shaderOptionGroupLayout->GetHash() != loopLocal_ShaderOptionGroupLayout->GetHash()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "There was a discrepancy in shader options between %s and %s", previousLoopApiName.c_str(), thisLoopApiName.data()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - shaderOptionGroupLayout = loopLocal_ShaderOptionGroupLayout; - previousLoopApiName = thisLoopApiName; - } - - RPI::ShaderVariantTreeAssetCreator shaderVariantTreeAssetCreator; - shaderVariantTreeAssetCreator.Begin(Uuid::CreateRandom()); - shaderVariantTreeAssetCreator.SetShaderOptionGroupLayout(*shaderOptionGroupLayout); - shaderVariantTreeAssetCreator.SetVariantInfos(shaderVariantListDescriptor.m_shaderVariants); - Data::Asset shaderVariantTreeAsset; - if (!shaderVariantTreeAssetCreator.End(shaderVariantTreeAsset)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to build Shader Variant Tree Asset"); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - AZStd::string filename = AZStd::string::format("%s.%s", shaderName.c_str(), RPI::ShaderVariantTreeAsset::Extension); - AZStd::string assetPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_tempDirPath.c_str(), filename.c_str(), assetPath, true); - if (!AZ::Utils::SaveObjectToFile(assetPath, AZ::DataStream::ST_BINARY, shaderVariantTreeAsset.Get())) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to save Shader Variant Tree Asset to \"%s\"", assetPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - AssetBuilderSDK::JobProduct assetProduct; - assetProduct.m_productSubID = RPI::ShaderVariantTreeAsset::ProductSubID; - assetProduct.m_productFileName = assetPath; - assetProduct.m_productAssetType = azrtti_typeid(); - assetProduct.m_dependenciesHandled = true; // This builder has no dependencies to output - response.m_outputProducts.push_back(assetProduct); - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Shader Variant Tree Asset [%s] compiled successfully.\n", assetPath.c_str()); - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - - void ShaderVariantAssetBuilder2::ProcessShaderVariantJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks(); - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - - AZStd::string fullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, true); - - const auto& jobParameters = request.m_jobDescription.m_jobParameters; - const AZStd::string& shaderSourceFileFullPath = jobParameters.at(ShaderSourceFilePathJobParam); - AZStd::string shaderFileName; - AzFramework::StringFunc::Path::GetFileName(shaderSourceFileFullPath.c_str(), shaderFileName); - - const AZStd::string& variantJsonString = jobParameters.at(ShaderVariantJobVariantParam); - RPI::ShaderVariantListSourceData::VariantInfo variantInfo; - const bool fromJsonStringSuccess = AZ::RPI::JsonUtils::LoadObjectFromJsonString(variantJsonString, variantInfo); - AZ_Assert(fromJsonStringSuccess, "Failed to convert json string to VariantInfo"); - - RPI::ShaderSourceData shaderSourceDescriptor; - AZStd::shared_ptr sources = ShaderBuilderUtility::PrepareSourceInput(ShaderVariantAssetBuilder2Name, shaderSourceFileFullPath, shaderSourceDescriptor); - - // set the input file for eventual error messages, but the compiler won't be called on it. - AzslCompiler azslc(sources->m_azslSourceFullPath); - - // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces = - ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces(request.m_platformInfo, shaderSourceDescriptor); - if (platformInterfaces.empty()) - { - // No work to do. Exit gracefully. - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, - "No azshader is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", - shaderSourceFileFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceDescriptor); - - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderVariantAssetBuilder2Name); - // At this moment We have global build options that should be merged with the build options that are common - // to all the supervariants of this shader. - buildOptions.m_compilerArguments.Merge(shaderSourceDescriptor.m_compiler); - - //! The ShaderOptionGroupLayout is common across all RHIs & Supervariants - RPI::Ptr shaderOptionGroupLayout = nullptr; - - // Generate shaders for each of those ShaderPlatformInterfaces. - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - AZ_TraceContext("ShaderPlatformInterface", shaderPlatformInterface->GetAPIName().GetCStr()); - - // Loop through all the Supervariants. - uint32_t supervariantIndexCounter = 0; - for (const auto& supervariantInfo : supervariantList) - { - RPI::SupervariantIndex supervariantIndex(supervariantIndexCounter); - - // Check if we were canceled before we do any heavy processing of - // the shader variant data. - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - AZStd::string shaderStemNamePrefix = shaderFileName; - if (supervariantIndex.GetIndex() > 0) - { - shaderStemNamePrefix += supervariantInfo.m_name.GetStringView(); - } - - // We need these additional pieces of information To build a shader variant asset: - // 1- ShaderOptionsGroupLayout (Need to load it once, because it's the same acrosss all supervariants + RHIs) - // 2- entryFunctions - // 3- hlsl code. - - // 1- ShaderOptionsGroupLayout - if (!shaderOptionGroupLayout) - { - shaderOptionGroupLayout = - LoadShaderOptionsGroupLayoutFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, supervariantIndex); - if (!shaderOptionGroupLayout) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - } - - // 2- entryFunctions. - AzslFunctions azslFunctions; - LoadShaderFunctionsFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, supervariantIndex, azslFunctions); - if (azslFunctions.empty()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - MapOfStringToStageType shaderEntryPoints; - if (shaderSourceDescriptor.m_programSettings.m_entryPoints.empty()) - { - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, - "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); - ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslFunctions, shaderEntryPoints); - } - else - { - for (const auto& entryPoint : shaderSourceDescriptor.m_programSettings.m_entryPoints) - { - shaderEntryPoints[entryPoint.m_name] = entryPoint.m_type; - } - } - - // 3- hlslCode - AZStd::string hlslSourcePath; - AZStd::string hlslCode = LoadHlslFileFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, shaderSourceFileFullPath, supervariantIndex, hlslSourcePath); - if (hlslCode.empty() || hlslSourcePath.empty()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - // Setup the shader variant creation context: - ShaderVariantCreationContext2 shaderVariantCreationContext = - { - *shaderPlatformInterface, request.m_platformInfo, buildOptions.m_compilerArguments, request.m_tempDirPath, - startTime, - shaderSourceDescriptor, - *shaderOptionGroupLayout.get(), - shaderEntryPoints, - Uuid::CreateRandom(), - shaderStemNamePrefix, - hlslSourcePath, hlslCode - }; - - AZStd::optional outputByproducts; - auto shaderVariantAssetOutcome = CreateShaderVariantAsset(variantInfo, shaderVariantCreationContext, outputByproducts); - if (!shaderVariantAssetOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s\n", shaderVariantAssetOutcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - Data::Asset shaderVariantAsset = shaderVariantAssetOutcome.TakeValue(); - - - // Time to save the asset in the tmp folder so it ends up in the Cache folder. - const uint32_t productSubID = RPI::ShaderVariantAsset2::MakeAssetProductSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex.GetIndex(), - shaderVariantAsset->GetStableId()); - AssetBuilderSDK::JobProduct assetProduct; - if (!SerializeOutShaderVariantAsset(shaderVariantAsset, shaderStemNamePrefix, - request.m_tempDirPath, *shaderPlatformInterface, productSubID, - assetProduct)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - response.m_outputProducts.push_back(assetProduct); - - if (outputByproducts) - { - // add byproducts as job output products: - uint32_t subProductType = RPI::ShaderVariantAsset2::ShaderVariantAsset2SubProductType; - for (const AZStd::string& byproduct : outputByproducts.value().m_intermediatePaths) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = byproduct; - jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); - jobProduct.m_productSubID = RPI::ShaderVariantAsset2::MakeAssetProductSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex.GetIndex(), shaderVariantAsset->GetStableId(), - subProductType++); - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - } - supervariantIndexCounter++; - } // End of supervariant for block - - } - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - - bool ShaderVariantAssetBuilder2::SerializeOutShaderVariantAsset( - const Data::Asset shaderVariantAsset, const AZStd::string& shaderStemNamePrefix, - const AZStd::string& tempDirPath, - const RHI::ShaderPlatformInterface& shaderPlatformInterface, const uint32_t productSubID, AssetBuilderSDK::JobProduct& assetProduct) - { - AZStd::string filename = AZStd::string::format( - "%s_%s_%u.%s", shaderStemNamePrefix.c_str(), shaderPlatformInterface.GetAPIName().GetCStr(), - shaderVariantAsset->GetStableId().GetIndex(), RPI::ShaderVariantAsset2::Extension); - - AZStd::string assetPath; - AzFramework::StringFunc::Path::ConstructFull(tempDirPath.c_str(), filename.c_str(), assetPath, true); - - if (!AZ::Utils::SaveObjectToFile(assetPath, AZ::DataStream::ST_BINARY, shaderVariantAsset.Get())) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to save Shader Variant Asset to \"%s\"", assetPath.c_str()); - return false; - } - - assetProduct.m_productSubID = productSubID; - assetProduct.m_productFileName = assetPath; - assetProduct.m_productAssetType = azrtti_typeid(); - assetProduct.m_dependenciesHandled = true; // This builder has no dependencies to output - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Shader Variant Asset [%s] compiled successfully.\n", assetPath.c_str()); - return true; - } - - - AZ::Outcome, AZStd::string> ShaderVariantAssetBuilder2::CreateShaderVariantAsset( - const RPI::ShaderVariantListSourceData::VariantInfo& shaderVariantInfo, - ShaderVariantCreationContext2& creationContext, - AZStd::optional& outputByproducts) - { - // Temporary structure used for sorting and caching intermediate results - struct OptionCache - { - AZ::Name m_optionName; - AZ::Name m_valueName; - RPI::ShaderOptionIndex m_optionIndex; // Cached m_optionName - RPI::ShaderOptionValue m_value; // Cached m_valueName - }; - AZStd::vector optionList; - // We can not have more options than the number of options in the layout: - optionList.reserve(creationContext.m_shaderOptionGroupLayout.GetShaderOptionCount()); - - // This loop will validate and cache the indices for each option value: - for (const auto& shaderOption : shaderVariantInfo.m_options) - { - Name optionName{shaderOption.first}; - Name optionValue{shaderOption.second}; - - RPI::ShaderOptionIndex optionIndex = creationContext.m_shaderOptionGroupLayout.FindShaderOptionIndex(optionName); - if (optionIndex.IsNull()) - { - return AZ::Failure(AZStd::string::format("Invalid shader option: %s", optionName.GetCStr())); - } - - const RPI::ShaderOptionDescriptor& option = creationContext.m_shaderOptionGroupLayout.GetShaderOption(optionIndex); - RPI::ShaderOptionValue value = option.FindValue(optionValue); - if (value.IsNull()) - { - return AZ::Failure( - AZStd::string::format("Invalid value (%s) for shader option: %s", optionValue.GetCStr(), optionName.GetCStr())); - } - - optionList.push_back(OptionCache{optionName, optionValue, optionIndex, value}); - } - - // Create one instance of the shader variant - RPI::ShaderOptionGroup optionGroup(&creationContext.m_shaderOptionGroupLayout); - - //! Contains the series of #define macro values that define a variant. Can be empty (root variant). - //! If this string is NOT empty, a new temporary hlsl file will be created that will be the combination - //! of this string + @m_hlslSourceContent. - AZStd::string hlslCodeToPrependForVariant; - - // We want to go over all options listed in the variant and set their respective values - // This loop will populate the optionGroup and m_shaderCodePrefix in order of the option priority - for (const auto& optionCache : optionList) - { - const RPI::ShaderOptionDescriptor& option = creationContext.m_shaderOptionGroupLayout.GetShaderOption(optionCache.m_optionIndex); - - // Assign the option value specified in the variant: - option.Set(optionGroup, optionCache.m_value); - - // Populate all shader option defines. We have already confirmed they're valid. - hlslCodeToPrependForVariant += AZStd::string::format( - "#define %s_OPTION_DEF %s\n", optionCache.m_optionName.GetCStr(), optionCache.m_valueName.GetCStr()); - } - - AZStd::string variantShaderSourcePath; - // Check if we need to prepend any code prefix - if (!hlslCodeToPrependForVariant.empty()) - { - // Prepend any shader code prefix that we should apply to this variant - // and save it back to a file. - AZStd::string variantShaderSourceString(hlslCodeToPrependForVariant); - variantShaderSourceString += creationContext.m_hlslSourceContent; - - AZStd::string shaderAssetName = AZStd::string::format( - "%s_%s_%u.hlsl", creationContext.m_shaderStemNamePrefix.c_str(), - creationContext.m_shaderPlatformInterface.GetAPIName().GetCStr(), shaderVariantInfo.m_stableId); - AzFramework::StringFunc::Path::Join( - creationContext.m_tempDirPath.c_str(), shaderAssetName.c_str(), variantShaderSourcePath, true, true); - - auto outcome = Utils::WriteFile(variantShaderSourceString, variantShaderSourcePath); - if (!outcome.IsSuccess()) - { - return AZ::Failure(AZStd::string::format("Failed to create file %s", variantShaderSourcePath.c_str())); - } - } - else - { - variantShaderSourcePath = creationContext.m_hlslSourcePath; - } - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Variant StableId: %u", shaderVariantInfo.m_stableId); - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Variant Shader Options: %s", optionGroup.ToString().c_str()); - - const RPI::ShaderVariantStableId shaderVariantStableId{shaderVariantInfo.m_stableId}; - - // By this time the optionGroup was populated with all option values for the variant and - // the m_shaderCodePrefix contains all option related preprocessing macros - // Let's add the requested variant: - RPI::ShaderVariantAssetCreator2 variantCreator; - RPI::ShaderOptionGroup shaderOptions{&creationContext.m_shaderOptionGroupLayout, optionGroup.GetShaderVariantId()}; - variantCreator.Begin( - creationContext.m_shaderVariantAssetId, optionGroup.GetShaderVariantId(), shaderVariantStableId, - shaderOptions.IsFullySpecified()); - - const AZStd::unordered_map& shaderEntryPoints = creationContext.m_shaderEntryPoints; - for (const auto& shaderEntryPoint : shaderEntryPoints) - { - auto shaderEntryName = shaderEntryPoint.first; - auto shaderStageType = shaderEntryPoint.second; - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Entry Point: %s", shaderEntryName.c_str()); - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Begin compiling shader function \"%s\"", shaderEntryName.c_str()); - - auto assetBuilderShaderType = ShaderBuilderUtility::ToAssetBuilderShaderType(shaderStageType); - - // Compile HLSL to the platform specific shader. - RHI::ShaderPlatformInterface::StageDescriptor descriptor; - bool shaderWasCompiled = creationContext.m_shaderPlatformInterface.CompilePlatformInternal( - creationContext.m_platformInfo, variantShaderSourcePath, shaderEntryName, assetBuilderShaderType, - creationContext.m_tempDirPath, descriptor, creationContext.m_shaderCompilerArguments); - - if (!shaderWasCompiled) - { - return AZ::Failure(AZStd::string::format("Could not compile the shader function %s", shaderEntryName.c_str())); - } - // bubble up the byproducts to the caller by moving them to the context. - outputByproducts.emplace(AZStd::move(descriptor.m_byProducts)); - - RHI::Ptr shaderStageFunction = creationContext.m_shaderPlatformInterface.CreateShaderStageFunction(descriptor); - variantCreator.SetShaderFunction(ToRHIShaderStage(assetBuilderShaderType), shaderStageFunction); - - if (descriptor.m_byProducts.m_dynamicBranchCount != AZ::RHI::ShaderPlatformInterface::ByProducts::UnknownDynamicBranchCount) - { - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, "Finished compiling shader function. Number of dynamic branches: %u", - descriptor.m_byProducts.m_dynamicBranchCount); - } - else - { - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, "Finished compiling shader function. Number of dynamic branches: unknown"); - } - } - - Data::Asset shaderVariantAsset; - variantCreator.End(shaderVariantAsset); - return AZ::Success(AZStd::move(shaderVariantAsset)); - } - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.h deleted file mode 100644 index c0b632d9bd..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.h +++ /dev/null @@ -1,107 +0,0 @@ -/* -* 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. -* -*/ - -#pragma once - -#include -#include -#include - -#include -#include -#include -#include - -#include "ShaderBuilderUtility.h" - -namespace AZ -{ - namespace ShaderBuilder - { - struct AzslData; - - //! This is nothing more than a class to help consolidate all - //! the data needed to generate a shader variant and prevent - //! all the functions involved in the process to have too many - //! arguments. - struct ShaderVariantCreationContext2 - { - RHI::ShaderPlatformInterface& m_shaderPlatformInterface; - const AssetBuilderSDK::PlatformInfo& m_platformInfo; - const RHI::ShaderCompilerArguments& m_shaderCompilerArguments; - //! Used to write temporary files during shader compilation, like *.hlsl, or *.air, or *.metallib, etc. - const AZStd::string& m_tempDirPath; - //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, - //! especially during hot-reload. A (ShaderVariantAsset.timestamp) >= (ShaderAsset.timestamp). - const AZStd::sys_time_t m_assetBuildTimestamp; - const RPI::ShaderSourceData& m_shaderSourceDataDescriptor; - const RPI::ShaderOptionGroupLayout& m_shaderOptionGroupLayout; - const MapOfStringToStageType& m_shaderEntryPoints; - const Data::AssetId m_shaderVariantAssetId; - const AZStd::string& m_shaderStemNamePrefix; //- - const AZStd::string& m_hlslSourcePath; - const AZStd::string& m_hlslSourceContent; - }; - - class ShaderVariantAssetBuilder2 - : public AssetBuilderSDK::AssetBuilderCommandBus::Handler - { - public: - AZ_TYPE_INFO(ShaderVariantAssetBuilder2, "{C959AEC2-2083-4488-AD88-F61B1144535B}"); - - static constexpr char ShaderVariantAssetBuilder2JobKey[] = "Shader Variant Asset 2"; - - ShaderVariantAssetBuilder2() = default; - ~ShaderVariantAssetBuilder2() = default; - - // Asset Builder Callback Functions ... - void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const; - void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - //! The ShaderVariantAsset returned by this function won't be written to the filesystem. - //! You should call SerializeOutShaderVariantAsset to write it to the temp folder assigned - //! by the asset processor. - static AZ::Outcome, AZStd::string> CreateShaderVariantAsset( - const RPI::ShaderVariantListSourceData::VariantInfo& shaderVariantInfo, - ShaderVariantCreationContext2& creationContext, - AZStd::optional& outputByproducts); - - static bool SerializeOutShaderVariantAsset( - const Data::Asset shaderVariantAsset, - const AZStd::string& shaderStemNamePrefix, const AZStd::string& tempDirPath, - const RHI::ShaderPlatformInterface& shaderPlatformInterface, const uint32_t productSubID, AssetBuilderSDK::JobProduct& assetProduct); - - // AssetBuilderSDK::AssetBuilderCommandBus interface overrides ... - void ShutDown() override { }; - - private: - AZ_DISABLE_COPY_MOVE(ShaderVariantAssetBuilder2); - - static constexpr uint32_t ShaderVariantLoadErrorParam = 0; - static constexpr uint32_t ShaderSourceFilePathJobParam = 2; - static constexpr uint32_t ShaderVariantJobVariantParam = 3; - static constexpr uint32_t ShouldExitEarlyFromProcessJobParam = 4; - - //! Called from ProcessJob when the job is supposed to create a ShaderVariantTreeAsset. - void ProcessShaderVariantTreeJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - //! Called from ProcessJob when the job is supposed to create ShaderVariantAssets. One ShaderVariantAsset will be produced per RHI::APIType - //! supported by the platform. - void ProcessShaderVariantJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - static AZStd::string GetShaderVariantTreeAssetJobKey() { return AZStd::string::format("%s_varianttree", ShaderVariantAssetBuilder2JobKey); } - static AZStd::string GetShaderVariantAssetJobKey(RPI::ShaderVariantStableId variantStableId) { return AZStd::string::format("%s_variant_%u", ShaderVariantAssetBuilder2JobKey, variantStableId.GetIndex()); } - - }; - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutBuilder.cpp deleted file mode 100644 index a7721c84a2..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutBuilder.cpp +++ /dev/null @@ -1,541 +0,0 @@ -/* -* 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. -* -*/ - -#include - -#include -#include -#include - -#include -#include - -#include - -#include -#include - -#include -#include -#include - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -namespace AZ -{ - namespace ShaderBuilder - { - AZ::Uuid SrgLayoutBuilder::GetUUID() - { - return AZ::Uuid::CreateString("{ABC78905-B3FC-497A-916A-217D1460E52F}"); - } - - void SrgLayoutBuilder::Reflect([[maybe_unused]] AZ::ReflectContext* context) - { - } - - SrgLayoutBuilder::SrgLayoutBuilder() - { - } - - SrgLayoutBuilder::~SrgLayoutBuilder() - { - } - - void SrgLayoutBuilder::Activate() - { - } - - void SrgLayoutBuilder::Deactivate() - { - } - - void SrgLayoutBuilder::ShutDown() - { - } - - RHI::ShaderInputBufferType ToShaderInputBufferType(BufferType bufferType) - { - switch (bufferType) - { - case BufferType::Buffer: - case BufferType::RwBuffer: - case BufferType::RasterizerOrderedBuffer: - return RHI::ShaderInputBufferType::Typed; - case BufferType::AppendStructuredBuffer: - case BufferType::ConsumeStructuredBuffer: - case BufferType::RasterizerOrderedStructuredBuffer: - case BufferType::RwStructuredBuffer: - case BufferType::StructuredBuffer: - return RHI::ShaderInputBufferType::Structured; - case BufferType::RasterizerOrderedByteAddressBuffer: - case BufferType::ByteAddressBuffer: - case BufferType::RwByteAddressBuffer: - return RHI::ShaderInputBufferType::Raw; - case BufferType::RaytracingAccelerationStructure: - return RHI::ShaderInputBufferType::AccelerationStructure; - default: - AZ_Assert(false, "Unhandled BufferType"); - return RHI::ShaderInputBufferType::Unknown; - } - } - - RHI::ShaderInputBufferAccess ToShaderInputBufferAccess(BufferType bufferType) - { - switch (bufferType) - { - case BufferType::Buffer: - case BufferType::ByteAddressBuffer: - case BufferType::ConsumeStructuredBuffer: - case BufferType::StructuredBuffer: - return RHI::ShaderInputBufferAccess::Read; - case BufferType::AppendStructuredBuffer: - case BufferType::RasterizerOrderedStructuredBuffer: - case BufferType::RasterizerOrderedByteAddressBuffer: - case BufferType::RasterizerOrderedBuffer: - case BufferType::RwByteAddressBuffer: - case BufferType::RwStructuredBuffer: - case BufferType::RwBuffer: - return RHI::ShaderInputBufferAccess::ReadWrite; - default: - AZ_Assert(false, "Unhandled BufferType"); - return RHI::ShaderInputBufferAccess::Read; - } - } - - RHI::ShaderInputImageType ToShaderInputImageType(TextureType textureType) - { - switch (textureType) - { - case TextureType::Texture1D: return RHI::ShaderInputImageType::Image1D; - case TextureType::Texture1DArray: return RHI::ShaderInputImageType::Image1DArray; - case TextureType::Texture2D: return RHI::ShaderInputImageType::Image2D; - case TextureType::Texture2DArray: return RHI::ShaderInputImageType::Image2DArray; - case TextureType::Texture2DMS: return RHI::ShaderInputImageType::Image2DMultisample; - case TextureType::Texture2DMSArray: return RHI::ShaderInputImageType::Image2DMultisampleArray; - case TextureType::Texture3D: return RHI::ShaderInputImageType::Image3D; - case TextureType::TextureCube: return RHI::ShaderInputImageType::ImageCube; - case TextureType::RwTexture1D: return RHI::ShaderInputImageType::Image1D; - case TextureType::RwTexture1DArray: return RHI::ShaderInputImageType::Image1DArray; - case TextureType::RwTexture2D: return RHI::ShaderInputImageType::Image2D; - case TextureType::RwTexture2DArray: return RHI::ShaderInputImageType::Image2DArray; - case TextureType::RwTexture3D: return RHI::ShaderInputImageType::Image3D; - case TextureType::RasterizerOrderedTexture1D: return RHI::ShaderInputImageType::Image1D; - case TextureType::RasterizerOrderedTexture1DArray: return RHI::ShaderInputImageType::Image1DArray; - case TextureType::RasterizerOrderedTexture2D: return RHI::ShaderInputImageType::Image2D; - case TextureType::RasterizerOrderedTexture2DArray: return RHI::ShaderInputImageType::Image2DArray; - case TextureType::RasterizerOrderedTexture3D: return RHI::ShaderInputImageType::Image3D; - case TextureType::SubpassInput: return RHI::ShaderInputImageType::SubpassInput; - default: - AZ_Assert(false, "Unhandled TextureType"); - return RHI::ShaderInputImageType::Unknown; - } - } - - RHI::ShaderInputImageAccess ToShaderInputImageAccess(TextureType textureType) - { - switch (textureType) - { - case TextureType::Texture1D: - case TextureType::Texture1DArray: - case TextureType::Texture2D: - case TextureType::Texture2DArray: - case TextureType::Texture2DMS: - case TextureType::Texture2DMSArray: - case TextureType::Texture3D: - case TextureType::TextureCube: - return RHI::ShaderInputImageAccess::Read; - case TextureType::RwTexture1D: - case TextureType::RwTexture1DArray: - case TextureType::RwTexture2D: - case TextureType::RwTexture2DArray: - case TextureType::RwTexture3D: - case TextureType::RasterizerOrderedTexture1D: - case TextureType::RasterizerOrderedTexture1DArray: - case TextureType::RasterizerOrderedTexture2D: - case TextureType::RasterizerOrderedTexture2DArray: - case TextureType::RasterizerOrderedTexture3D: - return RHI::ShaderInputImageAccess::ReadWrite; - default: - AZ_Assert(false, "Unhandled TextureType"); - return RHI::ShaderInputImageAccess::Read; - } - } - - void SrgLayoutBuilder::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const - { - AZStd::string fullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, false); - AzFramework::StringFunc::Path::Normalize(fullPath); - - AZ_TracePrintf(SrgLayoutBuilderName, "CreateJobs for Srg Layouts \"%s\"\n", fullPath.data()); - - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - AssetBuilderSDK::JobDescriptor jobDescriptor; - jobDescriptor.m_priority = 2; - // [GFX TODO][ATOM-2830] Set 'm_critical' back to 'false' once proper fix for Atom startup issues are in - jobDescriptor.m_critical = true; - jobDescriptor.m_jobKey = SrgLayoutBuilderJobKey; - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - - // Get the platform interfaces to be able to access the prepend file - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverValidShaderPlatformInterfaces(info); - // queue up AzslBuilder dependencies: - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - AddAzslBuilderJobDependency(jobDescriptor, info.m_identifier, shaderPlatformInterface->GetAPIName().GetCStr(), fullPath); - } - response.m_createJobOutputs.push_back(jobDescriptor); - } - - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - } - - void SrgLayoutBuilder::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - AZStd::string sourcePath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.c_str(), request.m_sourceFile.c_str(), sourcePath, false); - AzFramework::StringFunc::Path::Normalize(sourcePath); - - if (!AzFramework::StringFunc::Path::IsExtension(sourcePath.c_str(), MergedPartialSrgsExtension)) // not .srgi - { - auto skipCheck = ShaderBuilderUtility::ShouldSkipFileForSrgProcessing(SrgLayoutBuilderName, sourcePath); - if (skipCheck != ShaderBuilderUtility::SrgSkipFileResult::ContinueProcess) - { - response.m_resultCode = skipCheck == ShaderBuilderUtility::SrgSkipFileResult::Error ? - AssetBuilderSDK::ProcessJobResult_Failed : AssetBuilderSDK::ProcessJobResult_Success; - return; - } - } - - AZ_TracePrintf(SrgLayoutBuilderName, "Processing Shader Resource Group \"%s\".\n", sourcePath.c_str()); - - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - // Note this will update response.m_resultCode - CreateSRGAsset(sourcePath, request, response, jobCancelListener); - - AZ_TracePrintf(SrgLayoutBuilderName, "Finished processing %s\n", sourcePath.c_str()); - } - - void SrgLayoutBuilder::CreateSRGAsset( - AZStd::string fullSourcePath, - const AssetBuilderSDK::ProcessJobRequest& request, - AssetBuilderSDK::ProcessJobResponse& response, - AssetBuilderSDK::JobCancelListener& jobCancelListener) - { - // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces; - ShaderPlatformInterfaceRequestBus::BroadcastResult(platformInterfaces, &ShaderPlatformInterfaceRequest::GetShaderPlatformInterface, request.m_platformInfo); - if (platformInterfaces.empty()) - { - AZ_Error(SrgLayoutBuilderName, false, "No ShaderPlatformInterfaces found."); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - using SrgDataEntry = AZStd::pair; - // List with all SRGs that need to be processed. - AZStd::unordered_map> srgsToProcess; - // Emit all SRGs per each of the platform interfaces. - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - if (!shaderPlatformInterface) - { - AZ_Error(SrgLayoutBuilderName, false, "ShaderPlatformInterface for [%s] is not registered, can't compile [%s]", request.m_platformInfo.m_identifier.c_str(), request.m_sourceFile.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - SrgDataContainer srgDataContainer; - - auto azslArtifactsOutcome = ShaderBuilderUtility::ObtainBuildArtifactsFromAzslBuilder(SrgLayoutBuilderName, fullSourcePath, shaderPlatformInterface->GetAPIType(), request.m_platformInfo.m_identifier); - if (!azslArtifactsOutcome.IsSuccess()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - // create an AzslCompiler instance to use it's json parsing facilities, but we won't call any emit facility. So the compiler actually never runs. - AzslCompiler azslc(azslArtifactsOutcome.GetValue()[ShaderBuilderUtility::AzslSubProducts::azslin]); // set the input file for eventual error messages. - - AZ::Outcome outcome; - outcome = JsonSerializationUtils::ReadJsonFile(azslArtifactsOutcome.GetValue()[ShaderBuilderUtility::AzslSubProducts::srg]); - if (!outcome.IsSuccess()) - { - AZ_Error(SrgLayoutBuilderName, false, "%s", outcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (!azslc.ParseSrgPopulateSrgData(outcome.GetValue(), srgDataContainer)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - for (const SrgData& srgData : srgDataContainer) - { - // Ignore the SRGs included from other files. - AZStd::string normalizedContainer = srgData.m_containingFileName; - AzFramework::StringFunc::Path::Normalize(normalizedContainer); - if (normalizedContainer != fullSourcePath) - { - AZ_TracePrintf(SrgLayoutBuilderName, "SRG [%s] found in [%s] but is foreign to [%s]. skipped.", - srgData.m_name.c_str(), normalizedContainer.c_str(), fullSourcePath.c_str()); - continue; - } - AZ_TracePrintf(SrgLayoutBuilderName, "SRG [%s] found in [%s] (native to this file). added.", - srgData.m_name.c_str(), normalizedContainer.c_str()); - srgsToProcess[srgData.m_name].push_back(SrgDataEntry(shaderPlatformInterface, AZStd::move(srgData))); - } - } - - AZStd::string fileNameOnly; - AzFramework::StringFunc::Path::GetFileName(request.m_sourceFile.c_str(), fileNameOnly); - - if (srgsToProcess.empty()) - { - AZ_TracePrintf(SrgLayoutBuilderName, "No ShaderResourceGroups found in '%s'.", fullSourcePath.c_str()); - } - - // Process all SRGs that were emitted. - for (const auto& entry : srgsToProcess) - { - const auto& srgName = entry.first; - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - AZStd::string fullFileName = fileNameOnly + "_" + srgName; - AZStd::string shaderResourceGroupAssetPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_tempDirPath.c_str(), fullFileName.c_str(), shaderResourceGroupAssetPath, true); - AzFramework::StringFunc::Path::ReplaceExtension(shaderResourceGroupAssetPath, "azsrg"); - - RPI::ShaderResourceGroupAssetCreator srgAssetCreator; - srgAssetCreator.Begin(Uuid::CreateRandom(), Name{ srgName }); - - bool success = true; - // Process the SRG per each shader platform interface. - for(const SrgDataEntry& srgDataEntry : entry.second) - { - RHI::ShaderPlatformInterface* shaderPlatformInterface = srgDataEntry.first; - - // The register number only makes sense if the platform uses "spaces", - // since the register Id of the resource will not change even if the pipeline layout changes. - // We can pass in a default ShaderCompilerArguments because all we care about is whether the shaderPlatformInterface - // appends the - // "--use-spaces" flag. - AZStd::string azslCompilerParameters = - shaderPlatformInterface->GetAzslCompilerParameters(RHI::ShaderCompilerArguments{}); - bool useRegisterId = (AzFramework::StringFunc::Find(azslCompilerParameters, "--use-spaces") != AZStd::string::npos); - - const SrgData& srgData = srgDataEntry.second; - - srgAssetCreator.BeginAPI(shaderPlatformInterface->GetAPIType()); - srgAssetCreator.SetBindingSlot(srgData.m_bindingSlot.m_index); - - // Samplers - for (const SamplerSrgData& samplerData : srgData.m_samplers) - { - if (samplerData.m_isDynamic) - { - srgAssetCreator.AddShaderInput({ - samplerData.m_nameId, - samplerData.m_count, - useRegisterId ? samplerData.m_registerId : RHI::UndefinedRegisterSlot }); - } - else - { - srgAssetCreator.AddStaticSampler({ - samplerData.m_nameId, - samplerData.m_descriptor, - useRegisterId ? samplerData.m_registerId : RHI::UndefinedRegisterSlot }); - } - } - - // Images - for (const TextureSrgData& textureData : srgData.m_textures) - { - const RHI::ShaderInputImageAccess imageAccess = - textureData.m_isReadOnlyType ? - RHI::ShaderInputImageAccess::Read : - RHI::ShaderInputImageAccess::ReadWrite; - - const RHI::ShaderInputImageType imageType = ToShaderInputImageType(textureData.m_type); - - if (imageType != RHI::ShaderInputImageType::Unknown) - { - if (textureData.m_count != aznumeric_cast(-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 - { - AZ_Error(SrgLayoutBuilderName, false, "Failed to build Shader Resource Group Asset: Image %s has an unknown type.", textureData.m_nameId.GetCStr()); - success = false; - } - } - - // Buffers - { - for (const ConstantBufferData& cbData : srgData.m_constantBuffers) - { - srgAssetCreator.AddShaderInput({ - cbData.m_nameId, - RHI::ShaderInputBufferAccess::Constant, - RHI::ShaderInputBufferType::Constant, - cbData.m_count, - cbData.m_strideSize, - useRegisterId ? cbData.m_registerId : RHI::UndefinedRegisterSlot }); - } - - for (const BufferSrgData& bufferData : srgData.m_buffers) - { - const RHI::ShaderInputBufferAccess bufferAccess = - bufferData.m_isReadOnlyType ? - RHI::ShaderInputBufferAccess::Read : - RHI::ShaderInputBufferAccess::ReadWrite; - - const RHI::ShaderInputBufferType bufferType = ToShaderInputBufferType(bufferData.m_type); - - if (bufferType != RHI::ShaderInputBufferType::Unknown) - { - if (bufferData.m_count != aznumeric_cast(-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 - { - AZ_Error(SrgLayoutBuilderName, false, "Failed to build Shader Resource Group Asset: Buffer %s has un unknown type.", bufferData.m_nameId.GetCStr()); - success = false; - } - } - } - - // SRG Constants - uint32_t constantDataRegisterId = useRegisterId ? srgData.m_srgConstantDataRegisterId : RHI::UndefinedRegisterSlot; - for (const SrgConstantData& srgConstants : srgData.m_srgConstantData) - { - srgAssetCreator.AddShaderInput({ - srgConstants.m_nameId, - srgConstants.m_constantByteOffset, - srgConstants.m_constantByteSize, - constantDataRegisterId }); - } - - // Shader Variant Key fallback - if (srgData.m_fallbackSize > 0) - { - // Designates this SRG as a ShaderVariantKey fallback - srgAssetCreator.SetShaderVariantKeyFallback(srgData.m_fallbackName, srgData.m_fallbackSize); - } - - if (!srgAssetCreator.EndAPI()) - { - AZ_Error(SrgLayoutBuilderName, false, "Failed to End API."); - success = false; - } - - if (!success) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - } - - Data::Asset shaderResourceGroupAsset; - if (!srgAssetCreator.End(shaderResourceGroupAsset)) - { - AZ_Error(SrgLayoutBuilderName, false, "Failed to build Shader Resource Group Asset"); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (AZ::IO::FileIOBase::GetInstance()->Exists(shaderResourceGroupAssetPath.c_str())) - { - // This would indicate a problem above, making sure each product SRG asset file path is unique. - AZ_Error(SrgLayoutBuilderName, false, "Cannot overwrite existing file [%s]. This likely indicates conflicting SRG names.", shaderResourceGroupAssetPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - success = AZ::Utils::SaveObjectToFile(shaderResourceGroupAssetPath, AZ::DataStream::ST_JSON, shaderResourceGroupAsset.Get()); - if (!success) - { - AZ_Error(SrgLayoutBuilderName, false, "Failed to save Shader Resource Group Asset to \"%s\"", shaderResourceGroupAssetPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - AssetBuilderSDK::JobProduct srgAssetProduct; - srgAssetProduct.m_productSubID = static_cast(AZStd::hash()(srgName) & 0xFFFFFFFF); - srgAssetProduct.m_productFileName = shaderResourceGroupAssetPath; - srgAssetProduct.m_productAssetType = azrtti_typeid(); - srgAssetProduct.m_dependenciesHandled = true; // This builder has no dependencies to output - response.m_outputProducts.push_back(srgAssetProduct); - - AZ_TracePrintf(SrgLayoutBuilderName, "Shader Resource Group Asset compiled successfully.\n"); - } - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - } // namespace ShaderBuilder -} // namespace AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutBuilder.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutBuilder.h deleted file mode 100644 index 9f0953a165..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutBuilder.h +++ /dev/null @@ -1,83 +0,0 @@ -/* -* 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. -* -*/ - -#pragma once - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "AzslBuilder.h" - -namespace AZ -{ - namespace Data - { - class AssetHandler; - } - - namespace ShaderBuilder - { - struct SrgData; - struct TypeIdPair; - - class SrgLayoutBuilder - : public AssetBuilderSDK::AssetBuilderCommandBus::Handler - { - public: - SrgLayoutBuilder(); - ~SrgLayoutBuilder(); - - // An *.srgi file is nothing more than a regular azsl file that simply includes a set of srg/azsli - // files, and in turn each one of those included files define "partial ShaderResourceGroup"s, which are - // merged into a single ShaderResourceGroup by the shader compiler. - // So, *.srgi are supposed to include files that only define "partial" SRGs. - // And any file that defines a ShaderResourceGroup it should not be "partial" unless it is supposed - // to be included by a *.srgi file. - static constexpr const char* MergedPartialSrgsExtension = AzslBuilder::SrgIncludeExtension; - static constexpr const char* SrgLayoutBuilderName = "SrgLayoutBuilder"; - static constexpr const char* SrgLayoutBuilderJobKey = "Shader Resource Group Layout"; - - // Asset Builder Callback Functions - void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const; - void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - ////////////////////////////////////////////////////////////////////////// - // AssetBuilderSDK::AssetBuilderCommandBus interface - void ShutDown() override; - ////////////////////////////////////////////////////////////////////////// - - void Activate(); - void Deactivate(); - - static AZ::Uuid GetUUID(); - - static void Reflect(AZ::ReflectContext* context); - private: - AZ_DISABLE_COPY_MOVE(SrgLayoutBuilder); - - static void CreateSRGAsset( - AZStd::string fullSourcePath, - const AssetBuilderSDK::ProcessJobRequest& request, - AssetBuilderSDK::ProcessJobResponse& response, - AssetBuilderSDK::JobCancelListener& jobCancelListener); - - }; - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.cpp index fc3fbfc32c..db7251cefb 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.cpp @@ -109,6 +109,7 @@ namespace AZ { RHI::Ptr newSrgLayout = RHI::ShaderResourceGroupLayout::Create(); newSrgLayout->SetName(AZ::Name{srgData.m_name.c_str()}); + newSrgLayout->SetUniqueId(srgData.m_containingFileName); newSrgLayout->SetBindingSlot(srgData.m_bindingSlot.m_index); // Samplers diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h index 43607f600c..140e8849a0 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h @@ -15,7 +15,7 @@ #include #include "CommonFiles/CommonTypes.h" -#include +#include #include "ShaderBuilderUtility.h" namespace AZ diff --git a/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake b/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake index b3b2032c54..7f983d218b 100644 --- a/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake +++ b/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake @@ -21,27 +21,19 @@ set(FILES Source/Editor/AzslData.h Source/Editor/AzslShaderBuilderSystemComponent.cpp Source/Editor/AzslShaderBuilderSystemComponent.h - Source/Editor/AzslBuilder.cpp - Source/Editor/AzslBuilder.h Source/Editor/ShaderAssetBuilder.cpp Source/Editor/ShaderAssetBuilder.h Source/Editor/ShaderBuilderUtility.cpp Source/Editor/ShaderBuilderUtility.h Source/Editor/ShaderPlatformInterfaceRequest.h - Source/Editor/SrgLayoutBuilder.cpp - Source/Editor/SrgLayoutBuilder.h Source/Editor/AzslCompiler.cpp Source/Editor/AzslCompiler.h Source/Editor/ShaderVariantAssetBuilder.cpp Source/Editor/ShaderVariantAssetBuilder.h - Source/Editor/ShaderVariantAssetBuilder2.cpp - Source/Editor/ShaderVariantAssetBuilder2.h Source/Editor/AtomShaderConfig.cpp Source/Editor/AtomShaderConfig.h Source/Editor/PrecompiledShaderBuilder.cpp Source/Editor/PrecompiledShaderBuilder.h - Source/Editor/ShaderAssetBuilder2.cpp - Source/Editor/ShaderAssetBuilder2.h Source/Editor/SrgLayoutUtility.cpp Source/Editor/SrgLayoutUtility.h ) diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl index b221ee0a33..23e4ef0c10 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl @@ -295,6 +295,10 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float lightingOutput.m_diffuseColor.rgb += lightingOutput.m_specularColor.rgb; // add specular lightingOutput.m_specularColor.rgb = baseColor * (1.0 - lightingOutput.m_diffuseColor.w); } + else + { + lightingOutput.m_diffuseColor.w = -1; // Disable subsurface scattering + } return lightingOutput; } @@ -341,4 +345,3 @@ ForwardPassOutput StandardPbr_ForwardPassPS_EDS(VSOutput IN, bool isFrontFace : #endif return OUT; } - diff --git a/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapPipeline.pass b/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapPipeline.pass index e086f62e27..70f1999d8c 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapPipeline.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/EnvironmentCubeMapPipeline.pass @@ -206,8 +206,8 @@ "$type": "RasterPassData", "DrawListTag": "forward", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaderlib/atom/features/pbr/forwardpasssrg.azsli:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "Shaders/ForwardPassSrg.shader" } } }, diff --git a/Gems/Atom/Feature/Common/Assets/Passes/LowEndPipeline.pass b/Gems/Atom/Feature/Common/Assets/Passes/LowEndPipeline.pass index 38a4524aa2..9317fc6396 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/LowEndPipeline.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/LowEndPipeline.pass @@ -158,8 +158,8 @@ "$type": "RasterPassData", "DrawListTag": "lowEndForward", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaderlib/atom/features/pbr/forwardpasssrg.azsli:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "Shaders/ForwardPassSrg.shader" } } }, diff --git a/Gems/Atom/Feature/Common/Assets/Passes/OpaqueParent.pass b/Gems/Atom/Feature/Common/Assets/Passes/OpaqueParent.pass index a691fe2534..f45f5c8b07 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/OpaqueParent.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/OpaqueParent.pass @@ -122,8 +122,8 @@ "$type": "RasterPassData", "DrawListTag": "forward", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaderlib/atom/features/pbr/forwardpasssrg.azsli:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "Shaders/ForwardPassSrg.shader" } } }, @@ -222,8 +222,8 @@ "$type": "RasterPassData", "DrawListTag": "forwardWithSubsurfaceOutput", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaderlib/atom/features/pbr/forwardpasssrg.azsli:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "Shaders/ForwardPassSrg.shader" } } }, diff --git a/Gems/Atom/Feature/Common/Assets/Passes/Reflections.pass b/Gems/Atom/Feature/Common/Assets/Passes/Reflections.pass index 3442102291..cd548d0aea 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/Reflections.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/Reflections.pass @@ -89,8 +89,8 @@ "$type": "RasterPassData", "DrawListTag": "reflectionprobeblendweight", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaders/reflections/reflectionprobeblendweight.azsl:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "shaders/reflections/reflectionprobeblendweight.shader" } } }, @@ -203,8 +203,8 @@ "$type": "RasterPassData", "DrawListTag": "reflectionproberenderouter", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaders/reflections/reflectionproberenderouter.azsl:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "shaders/reflections/reflectionproberenderouter.shader" } } }, @@ -253,8 +253,8 @@ "$type": "RasterPassData", "DrawListTag": "reflectionproberenderinner", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaders/reflections/reflectionproberenderinner.azsl:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "shaders/reflections/reflectionproberenderinner.shader" } } }, diff --git a/Gems/Atom/Feature/Common/Assets/Passes/Reflections_nomsaa.pass b/Gems/Atom/Feature/Common/Assets/Passes/Reflections_nomsaa.pass index a35352b9f0..b3d7ef0241 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/Reflections_nomsaa.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/Reflections_nomsaa.pass @@ -84,8 +84,8 @@ "$type": "RasterPassData", "DrawListTag": "reflectionprobeblendweight", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaders/reflections/reflectionprobeblendweight.azsl:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "shaders/reflections/reflectionprobeblendweight.shader" } } }, @@ -191,8 +191,8 @@ "$type": "RasterPassData", "DrawListTag": "reflectionproberenderouter", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaders/reflections/reflectionproberenderouter.azsl:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "shaders/reflections/reflectionproberenderouter.shader" } } }, @@ -241,8 +241,8 @@ "$type": "RasterPassData", "DrawListTag": "reflectionproberenderinner", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaders/reflections/reflectionproberenderinner.azsl:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "shaders/reflections/reflectionproberenderinner.shader" } } }, diff --git a/Gems/Atom/Feature/Common/Assets/Passes/TransparentParent.pass b/Gems/Atom/Feature/Common/Assets/Passes/TransparentParent.pass index a9db59c646..bef49b777a 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/TransparentParent.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/TransparentParent.pass @@ -123,8 +123,8 @@ "DrawListTag": "transparent", "DrawListSortType": "KeyThenReverseDepth", "PipelineViewTag": "MainCamera", - "PassSrgAsset": { - "FilePath": "shaderlib/atom/features/pbr/forwardpasssrg.azsli:PassSrg" + "PassSrgShaderAsset": { + "FilePath": "Shaders/ForwardPassSrg.shader" } } } diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSrgs.azsl b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSrgs.azsl new file mode 100644 index 0000000000..7ed080d5e9 --- /dev/null +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSrgs.azsl @@ -0,0 +1,19 @@ +/* +* 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. +* +*/ + +// This shader is not used for rendering. +// The only purpose of this shader is to have a shader asset that can be used +// at runtime to find the RayTracingSceneSrg and RayTracingMaterialSrg layouts. + +#include +#include +#include diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSrgs.shader b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSrgs.shader new file mode 100644 index 0000000000..5512b1ad4d --- /dev/null +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/RayTracing/RayTracingSrgs.shader @@ -0,0 +1,44 @@ +{ + "Source" : "RayTracingSrgs.azsl", + + "CompilerHints": + { + "DxcAdditionalFreeArguments" : "-fspv-target-env=vulkan1.2" + }, + + "DepthStencilState" : + { + "Depth" : + { + "Enable" : false + }, + "Stencil" : + { + "Enable" : false + } + }, + + "ProgramSettings": + { + "EntryPoints": + [ + { + "name": "MainVS", + "type": "Vertex" + }, + { + "name": "MainPS", + "type": "Fragment" + } + ] + }, + + "Supervariants": + [ + { + "Name": "", + "PlusArguments": "", + "MinusArguments": "--strip-unused-srgs" + } + ] +} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistance.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistance.precompiledshader index ff862d587f..0322f750a4 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistance.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistance.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridblenddistance_passsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiance.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiance.precompiledshader index fa2f9db810..f6b19e6f5b 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiance.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiance.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridblendirradiance_passsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateColumn.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateColumn.precompiledshader index 1c8c4852c4..e9ab96b088 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateColumn.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateColumn.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridborderupdate_passsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateRow.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateRow.precompiledshader index fd99d34541..bbfd19ce48 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateRow.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateRow.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridborderupdate_passsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader index e7b15190e5..75fbd1d7a3 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridclassification_passsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracing.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracing.precompiledshader index 5826fc086f..a9f75bff7d 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracing.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracing.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingClosestHit.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingClosestHit.precompiledshader index fc99fb97a1..15fb9ecf52 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingClosestHit.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingClosestHit.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingMiss.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingMiss.precompiledshader index 75db2ce8c1..38bb7e3de0 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingMiss.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingMiss.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRelocation.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRelocation.precompiledshader index 05c3c7d87a..3517cd7955 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRelocation.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRelocation.precompiledshader @@ -9,10 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridrelocation_passsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader index e8249fa178..29f9476ceb 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridRender.precompiledshader @@ -9,11 +9,6 @@ [ "pc" ], - "ShaderResourceGroupAssets": - [ - "diffuseprobegridrender_passsrg.azsrg", - "diffuseprobegridrender_objectsrg.azsrg" - ], "RootShaderVariantAssets": [ { diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader index 4a5edc370b..596f9a383e 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant index e362a352c2..8481bdb15b 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant index 17b4f0c3cb..2f2cd5cccf 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_passsrg.azsrg deleted file mode 100644 index 14b61f9e93..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_passsrg.azsrg +++ /dev/null @@ -1,8329 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "PassSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeDistance" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "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": "3" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "7181601620235669059" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "13399614758886099705" - } - ] - } - ] - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeDistance" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "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": "3" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "7181601620235669059" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "13399614758886099705" - } - ] - } - ] - } - ] - }, - { - "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": "3189070339" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeDistance" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "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": "3" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "8603598590297091788" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "6181996982157220722" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant index 8ed12bf81c..cb5de53e97 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader index f0bfc085cb..fc11f9de64 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant index c51aec01bb..a35179ef7f 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant index 912946db79..2f2cd5cccf 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_passsrg.azsrg deleted file mode 100644 index 0ffa18808f..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_passsrg.azsrg +++ /dev/null @@ -1,8329 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "PassSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeIrradiance" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "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": "3" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "7181601620235669059" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "4760130259633911968" - } - ] - } - ] - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeIrradiance" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "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": "3" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "7181601620235669059" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "4760130259633911968" - } - ] - } - ] - } - ] - }, - { - "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": "3189070339" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeIrradiance" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "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": "3" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "3" - } - ] - }, - { - "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "8603598590297091788" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "15482970526060535234" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant index 7e790aa0f1..450f5595a4 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdate_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdate_passsrg.azsrg deleted file mode 100644 index edac0f6e41..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdate_passsrg.azsrg +++ /dev/null @@ -1,1333 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "PassSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "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>", - "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>", - "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>", - "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", - "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>", - "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>", - "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>", - "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>", - "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>", - "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", - "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", - "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", - "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>", - "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>", - "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>", - "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", - "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>", - "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>", - "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>", - "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>", - "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>", - "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", - "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", - "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", - "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": "3189070339" - } - ] - }, - { - "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>", - "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>", - "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>", - "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", - "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>", - "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>", - "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>", - "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": "1" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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", - "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": "11053903591437774912" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "17944211493530795673" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader index d70f7ac139..3f3d113787 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant index 8d904928c9..76f61d2fd4 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant index 7b48ea0631..2f2cd5cccf 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant index 3c2b178ac2..8b6ec377a6 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader index a817f1dd82..9050f90943 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant index 7335bfca4d..89ab946fd0 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant index 4c967f5e97..2f2cd5cccf 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant index 46f9f92877..8fb8e92117 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdaterow_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader index 39322fc484..b9552a85db 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant index 29125865a1..c5d569a0a6 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant index 58124203ee..2f2cd5cccf 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_passsrg.azsrg deleted file mode 100644 index a435420d2b..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_passsrg.azsrg +++ /dev/null @@ -1,8071 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "PassSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeStates" - }, - { - "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": "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "7181601620235669059" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "10614022793008117732" - } - ] - } - ] - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeStates" - }, - { - "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": "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "7181601620235669059" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "10614022793008117732" - } - ] - } - ] - } - ] - }, - { - "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": "3189070339" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeStates" - }, - { - "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": "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "2959428625184507101" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "4240011884224364085" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant index 3a22d2cd55..ae1bae8220 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader index 746ae357ee..66895758de 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant index 841c5defe3..fd22ac4fd3 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant index 39eacb4ade..0bf9ac53d7 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant index 597b239218..58ce16948b 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracing_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader index 0f42cd04d6..44a8b1426d 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant index 49bc94767a..acfb2aa716 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant index d9d30c99f7..0bf9ac53d7 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant index e2f2a13ca3..8c66d30c98 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg deleted file mode 100644 index 35d7050294..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg +++ /dev/null @@ -1,9925 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "RayTracingGlobalSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "field": "value2", - "typeName": "AZStd::intrusive_ptr", - "typeId": "{FF05CAD3-238F-5E19-8FF2-083353BBEC47}", - "Objects": [ - { - "field": "element", - "typeName": "ShaderResourceGroupLayout", - "typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}", - "version": 7, - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "" - }, - { - "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": "m_bilinearSampler" - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeOffsets" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - }, - { - "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_probeIrradiance" - }, - { - "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": "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_probeDistance" - }, - { - "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": "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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": "3" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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": "4" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "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": "5" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_ambientMultiplier" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "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": "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_giShadows" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - }, - { - "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": "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_useDiffuseIbl" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - }, - { - "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>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_ambientMultiplier" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_useDiffuseIbl" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "30" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_giShadows" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - } - ] - }, - { - "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": "260" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - } - ] - }, - { - "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": "264" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "268" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "268" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "3757534725879107066" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "field": "m_shaderVariantKeyFallbackSize", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - }, - { - "field": "m_shaderVariantKeyFallbackConstantIndex", - "typeName": "AZ::RHI::Handle", - "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": "2492931172876496388" - } - ] - } - ] - } - ] - }, - { - "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": 7, - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "" - }, - { - "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": "m_bilinearSampler" - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeOffsets" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - }, - { - "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_probeIrradiance" - }, - { - "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": "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_probeDistance" - }, - { - "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": "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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": "3" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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": "4" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "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": "5" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_ambientMultiplier" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "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": "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_giShadows" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - }, - { - "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": "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_useDiffuseIbl" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - }, - { - "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>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_ambientMultiplier" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_useDiffuseIbl" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "30" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_giShadows" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - } - ] - }, - { - "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": "260" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - } - ] - }, - { - "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": "264" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "268" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "268" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "3757534725879107066" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "field": "m_shaderVariantKeyFallbackSize", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - }, - { - "field": "m_shaderVariantKeyFallbackConstantIndex", - "typeName": "AZ::RHI::Handle", - "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": "2492931172876496388" - } - ] - } - ] - } - ] - }, - { - "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": "3189070339" - } - ] - }, - { - "field": "value2", - "typeName": "AZStd::intrusive_ptr", - "typeId": "{FF05CAD3-238F-5E19-8FF2-083353BBEC47}", - "Objects": [ - { - "field": "element", - "typeName": "ShaderResourceGroupLayout", - "typeId": "{1F92C651-9B83-4379-AB5C-5201F1B2C278}", - "version": 7, - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "" - }, - { - "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": "m_bilinearSampler" - }, - { - "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": "5" - } - ] - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeOffsets" - }, - { - "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": "1" - } - ] - }, - { - "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_probeStates" - }, - { - "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": "2" - } - ] - }, - { - "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_probeIrradiance" - }, - { - "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": "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": "3" - } - ] - }, - { - "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_probeDistance" - }, - { - "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": "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": "4" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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": "3" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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": "4" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "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": "5" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeGrid.origin" - }, - { - "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": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "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": "6" - } - ] - }, - { - "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_probeGrid" - }, - { - "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": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - }, - { - "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_ambientMultiplier" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "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": "6" - } - ] - }, - { - "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_giShadows" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - }, - { - "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": "6" - } - ] - }, - { - "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_useDiffuseIbl" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - }, - { - "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": "6" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_ambientMultiplier" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_useDiffuseIbl" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "30" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_giShadows" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "12" - } - ] - }, - { - "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": "12" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "52" - } - ] - }, - { - "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": "52" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "56" - } - ] - }, - { - "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": "56" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "184" - } - ] - }, - { - "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": "184" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - } - ] - }, - { - "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": "260" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - } - ] - }, - { - "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": "264" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "268" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "268" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "1426176521634445605" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "field": "m_shaderVariantKeyFallbackSize", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - }, - { - "field": "m_shaderVariantKeyFallbackConstantIndex", - "typeName": "AZ::RHI::Handle", - "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": "1425135468820160161" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader index 77a0f94f97..fad06893e9 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant index c144350c7f..1c0894bd23 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant index c369381fe9..0bf9ac53d7 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant index 13fd579d9b..cf8bbbd824 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader index d827fbe2a1..b46a476221 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant index 7d76080dd7..d0287e91ec 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant index c301dc4790..2f2cd5cccf 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_passsrg.azsrg deleted file mode 100644 index c7d3b3a113..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_passsrg.azsrg +++ /dev/null @@ -1,8551 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "PassSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeRelocation" - }, - { - "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": "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRelocation" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeDistanceScale" - }, - { - "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": "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_padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.origin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "88" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "100" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "196" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "200" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistanceScale" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "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": "4" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "88" - } - ] - }, - { - "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": "88" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - } - ] - }, - { - "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": "92" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "100" - } - ] - }, - { - "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": "100" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - } - ] - }, - { - "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": "112" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "196" - } - ] - }, - { - "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": "196" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "200" - } - ] - }, - { - "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": "200" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "2384728166189927163" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "5860410517747741014" - } - ] - } - ] - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeRelocation" - }, - { - "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": "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRelocation" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeDistanceScale" - }, - { - "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": "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_padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.origin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "88" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "100" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "196" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "200" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistanceScale" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "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": "4" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "88" - } - ] - }, - { - "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": "88" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - } - ] - }, - { - "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": "92" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "100" - } - ] - }, - { - "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": "100" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - } - ] - }, - { - "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": "112" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "196" - } - ] - }, - { - "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": "196" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "200" - } - ] - }, - { - "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": "200" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "2384728166189927163" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "5860410517747741014" - } - ] - } - ] - } - ] - }, - { - "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": "3189070339" - } - ] - }, - { - "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_probeRayTrace" - }, - { - "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": "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_probeRelocation" - }, - { - "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": "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRayTrace" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeRelocation" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_probeDistanceScale" - }, - { - "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": "2" - } - ] - }, - { - "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_padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.origin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "88" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "100" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "196" - }, - { - "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": "2" - } - ] - }, - { - "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "200" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - }, - { - "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_probeGrid" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistanceScale" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "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": "4" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - }, - { - "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": "28" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - }, - { - "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": "32" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "44" - } - ] - }, - { - "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": "44" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "68" - } - ] - }, - { - "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": "68" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "72" - } - ] - }, - { - "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": "72" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "84" - } - ] - }, - { - "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": "84" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "88" - } - ] - }, - { - "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": "88" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - } - ] - }, - { - "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": "92" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "100" - } - ] - }, - { - "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": "100" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - } - ] - }, - { - "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": "112" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "180" - } - ] - }, - { - "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": "180" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "192" - } - ] - }, - { - "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": "192" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "196" - } - ] - }, - { - "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": "196" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "200" - } - ] - }, - { - "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": "200" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "208" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "224" - } - ] - }, - { - "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": "224" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "208" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "16" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "11065231018315524923" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "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", - "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": "7371039707078468748" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant index 2a077e0bbf..f74f35eb99 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader index b88c7e4ec5..e309733d11 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant index 48bdc89867..d015d52280 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_dx12_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant index af7c962694..7922055a82 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_null_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_objectsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_objectsrg.azsrg deleted file mode 100644 index dee11c7a6a..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_objectsrg.azsrg +++ /dev/null @@ -1,9787 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "ObjectSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "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_probeOffsets" - }, - { - "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": "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_probeStates" - }, - { - "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": "1" - } - ] - }, - { - "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_probeIrradiance" - }, - { - "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": "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_probeDistance" - }, - { - "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": "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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": "3" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "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": "4" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_modelToWorld" - }, - { - "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": "48" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_aabbMin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_ambientMultiplier" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_aabbMax" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_enableDiffuseGI" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.origin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "108" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "124" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "128" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "132" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "136" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "140" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "144" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "148" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "152" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "156" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "244" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "288" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "304" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "320" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_aabbMin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_aabbMax" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "31" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_modelToWorld" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_ambientMultiplier" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "30" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_enableDiffuseGI" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - } - ] - }, - { - "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": "92" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "108" - } - ] - }, - { - "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": "108" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - } - ] - }, - { - "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": "112" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "124" - } - ] - }, - { - "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": "124" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "128" - } - ] - }, - { - "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": "128" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "132" - } - ] - }, - { - "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": "132" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "136" - } - ] - }, - { - "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": "136" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "140" - } - ] - }, - { - "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": "140" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "144" - } - ] - }, - { - "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": "144" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "148" - } - ] - }, - { - "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": "148" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "152" - } - ] - }, - { - "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": "152" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "156" - } - ] - }, - { - "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": "156" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "244" - } - ] - }, - { - "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": "244" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - } - ] - }, - { - "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": "260" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - } - ] - }, - { - "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": "264" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "272" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "288" - } - ] - }, - { - "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": "288" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "304" - } - ] - }, - { - "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": "304" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "320" - } - ] - }, - { - "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": "320" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - }, - { - "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": "272" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "15872820120758734353" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - }, - { - "field": "m_shaderVariantKeyFallbackSize", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - }, - { - "field": "m_shaderVariantKeyFallbackConstantIndex", - "typeName": "AZ::RHI::Handle", - "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": "12354971452077948474" - } - ] - } - ] - } - ] - }, - { - "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_probeOffsets" - }, - { - "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": "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_probeStates" - }, - { - "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": "1" - } - ] - }, - { - "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_probeIrradiance" - }, - { - "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": "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_probeDistance" - }, - { - "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": "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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": "3" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "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": "4" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_modelToWorld" - }, - { - "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": "48" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_aabbMin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_ambientMultiplier" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "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_aabbMax" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_enableDiffuseGI" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "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_probeGrid.origin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - }, - { - "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": "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "108" - }, - { - "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": "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "124" - }, - { - "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": "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "128" - }, - { - "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": "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "132" - }, - { - "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": "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "136" - }, - { - "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": "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "140" - }, - { - "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": "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "144" - }, - { - "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": "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "148" - }, - { - "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": "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "152" - }, - { - "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": "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "156" - }, - { - "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": "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "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": "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "244" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "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": "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - }, - { - "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": "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "288" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "304" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "320" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - }, - { - "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_probeGrid" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_aabbMin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_aabbMax" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "31" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_modelToWorld" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_ambientMultiplier" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "30" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_enableDiffuseGI" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - } - ] - }, - { - "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": "92" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "108" - } - ] - }, - { - "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": "108" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - } - ] - }, - { - "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": "112" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "124" - } - ] - }, - { - "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": "124" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "128" - } - ] - }, - { - "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": "128" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "132" - } - ] - }, - { - "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": "132" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "136" - } - ] - }, - { - "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": "136" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "140" - } - ] - }, - { - "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": "140" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "144" - } - ] - }, - { - "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": "144" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "148" - } - ] - }, - { - "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": "148" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "152" - } - ] - }, - { - "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": "152" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "156" - } - ] - }, - { - "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": "156" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "244" - } - ] - }, - { - "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": "244" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - } - ] - }, - { - "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": "260" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - } - ] - }, - { - "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": "264" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "272" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "288" - } - ] - }, - { - "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": "288" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "304" - } - ] - }, - { - "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": "304" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "320" - } - ] - }, - { - "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": "320" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - }, - { - "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": "272" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "15872820120758734353" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - }, - { - "field": "m_shaderVariantKeyFallbackSize", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - }, - { - "field": "m_shaderVariantKeyFallbackConstantIndex", - "typeName": "AZ::RHI::Handle", - "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": "12354971452077948474" - } - ] - } - ] - } - ] - }, - { - "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": "3189070339" - } - ] - }, - { - "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_probeOffsets" - }, - { - "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": "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_probeStates" - }, - { - "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": "1" - } - ] - }, - { - "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_probeIrradiance" - }, - { - "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": "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": "2" - } - ] - }, - { - "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_probeDistance" - }, - { - "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": "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": "3" - } - ] - } - ] - }, - { - "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": "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": "2" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - }, - { - "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": "3" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "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": "4" - }, - { - "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>", - "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>", - "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>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeIrradiance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeStates" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - } - ] - } - ] - }, - { - "field": "m_idReflectionForBufferUnboundedArrays", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "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>", - "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_modelToWorld" - }, - { - "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": "48" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_aabbMin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "48" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_ambientMultiplier" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - }, - { - "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": "4" - } - ] - }, - { - "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_aabbMax" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_enableDiffuseGI" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.origin" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.numRaysPerProbe" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeGridSpacing" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.probeMaxRayDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "108" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeGridCounts" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.probeDistanceExponent" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "124" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeHysteresis" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "128" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeChangeThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "132" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeBrightnessThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "136" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "140" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "144" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "148" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeNumDistanceTexels" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "152" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.normalBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "156" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.viewBias" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeVariablePad0" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.probeRayRotationTransform" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.volumeMovementType" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeScrollOffsets" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "244" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.probeBackfaceThreshold" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - }, - { - "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": "4" - } - ] - }, - { - "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_probeGrid.padding" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.padding1[0]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.padding1[1]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "288" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.padding1[2]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "304" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.padding1[3]" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "320" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid.padding1" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - }, - { - "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_probeGrid" - }, - { - "field": "m_constantByteOffset", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - }, - { - "field": "m_constantByteCount", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - }, - { - "field": "m_registerId", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "m_idReflection", - "typeName": "AZ::RHI::NameIdReflectionMap>", - "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>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMinFrontfaceDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "25" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumDistanceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "17" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "32" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeInverseIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "15" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_aabbMin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_aabbMax" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "31" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeScrollOffsets" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "23" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeIrradianceEncodingGamma" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "14" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.normalBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "18" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_modelToWorld" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBrightnessThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "13" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeHysteresis" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "11" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeRayRotationTransform" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "21" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_ambientMultiplier" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[2]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "29" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[3]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "30" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[0]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "27" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding1[1]" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "28" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeChangeThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "12" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.padding" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "26" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.origin" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.numRaysPerProbe" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "6" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridSpacing" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "7" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeBackfaceThreshold" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "24" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeMaxRayDistance" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "8" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeNumIrradianceTexels" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "16" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeGridCounts" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "9" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeVariablePad0" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "20" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.volumeMovementType" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "22" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.probeDistanceExponent" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "10" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_enableDiffuseGI" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" - } - ] - } - ] - }, - { - "field": "element", - "typeName": "AZ::RHI::ReflectionNamePair>", - "typeId": "{285A5B8D-8218-5E10-B8AE-138374D8D113}", - "version": 2, - "Objects": [ - { - "field": "Name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "m_probeGrid.viewBias" - }, - { - "field": "Index", - "typeName": "AZ::RHI::Handle", - "typeId": "{3F860893-1F57-5615-92CA-389B49687A9C}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "19" - } - ] - } - ] - } - ] - } - ] - }, - { - "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": "48" - } - ] - }, - { - "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": "48" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "60" - } - ] - }, - { - "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": "60" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "64" - } - ] - }, - { - "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": "64" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "76" - } - ] - }, - { - "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": "76" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "80" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "92" - } - ] - }, - { - "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": "92" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "96" - } - ] - }, - { - "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": "96" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "108" - } - ] - }, - { - "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": "108" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "112" - } - ] - }, - { - "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": "112" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "124" - } - ] - }, - { - "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": "124" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "128" - } - ] - }, - { - "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": "128" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "132" - } - ] - }, - { - "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": "132" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "136" - } - ] - }, - { - "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": "136" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "140" - } - ] - }, - { - "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": "140" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "144" - } - ] - }, - { - "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": "144" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "148" - } - ] - }, - { - "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": "148" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "152" - } - ] - }, - { - "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": "152" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "156" - } - ] - }, - { - "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": "156" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "160" - } - ] - }, - { - "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": "160" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "164" - } - ] - }, - { - "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": "164" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "176" - } - ] - }, - { - "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": "176" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "240" - } - ] - }, - { - "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": "240" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "244" - } - ] - }, - { - "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": "244" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "256" - } - ] - }, - { - "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": "256" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "260" - } - ] - }, - { - "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": "260" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "264" - } - ] - }, - { - "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": "264" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "272" - } - ] - }, - { - "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": "272" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "288" - } - ] - }, - { - "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": "288" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "304" - } - ] - }, - { - "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": "304" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "320" - } - ] - }, - { - "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": "320" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - }, - { - "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": "272" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - }, - { - "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": "80" - }, - { - "field": "m_max", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - } - ] - } - ] - }, - { - "field": "m_sizeInBytes", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "336" - }, - { - "field": "m_hash", - "typeName": "AZ::u64", - "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "11445921412800959080" - } - ] - } - ] - }, - { - "field": "m_bindingSlot", - "typeName": "AZ::RHI::Handle", - "typeId": "{1811456D-0C3D-58C8-ACE8-FD47F4E80E25}", - "version": 1, - "Objects": [ - { - "field": "m_index", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" - } - ] - }, - { - "field": "m_shaderVariantKeyFallbackSize", - "typeName": "unsigned int", - "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "0" - }, - { - "field": "m_shaderVariantKeyFallbackConstantIndex", - "typeName": "AZ::RHI::Handle", - "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": "16873325821914315993" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_passsrg.azsrg deleted file mode 100644 index 63be26a393..0000000000 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_passsrg.azsrg +++ /dev/null @@ -1,1675 +0,0 @@ -{ - "name": "ObjectStream", - "version": 3, - "Objects": [ - { - "typeName": "ShaderResourceGroupAsset", - "typeId": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", - "Objects": [ - { - "field": "m_name", - "typeName": "Name", - "typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}", - "value": "PassSrg" - }, - { - "field": "m_perAPILayout", - "typeName": "AZStd::vector", - "typeId": "{D41FAB43-0CAA-5170-B2BF-9D547C097E4F}", - "Objects": [ - { - "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": "3244871826" - } - ] - }, - { - "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>", - "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>", - "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>", - "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", - "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>", - "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", - "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>", - "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>", - "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>", - "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>", - "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", - "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", - "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>", - "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>", - "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>", - "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", - "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>", - "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", - "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>", - "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>", - "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>", - "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>", - "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", - "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", - "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": "3189070339" - } - ] - }, - { - "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": "2" - } - ] - } - ] - }, - { - "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>", - "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>", - "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>", - "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", - "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>", - "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", - "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>", - "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>", - "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>", - "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>", - "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", - "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", - "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": "9381862091216273238" - } - ] - } - ] - } - ] - } - ] - } - ] - } - ] -} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant index 4e9771d614..780163eb07 100644 Binary files a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant and b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_vulkan_0.azshadervariant differ diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/ForwardPassSrg.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/ForwardPassSrg.azsl new file mode 100644 index 0000000000..865b3b282b --- /dev/null +++ b/Gems/Atom/Feature/Common/Assets/Shaders/ForwardPassSrg.azsl @@ -0,0 +1,18 @@ +/* +* 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. +* +*/ + +// This shader is not used for rendering. +// The only purpose of this shader is to have a shader asset that can be used +// at runtime to find the PassSrg required by most Passes. + +#include +#include diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/ForwardPassSrg.shader b/Gems/Atom/Feature/Common/Assets/Shaders/ForwardPassSrg.shader new file mode 100644 index 0000000000..b714f0a007 --- /dev/null +++ b/Gems/Atom/Feature/Common/Assets/Shaders/ForwardPassSrg.shader @@ -0,0 +1,39 @@ +{ + "Source" : "ForwardPassSrg.azsl", + + "DepthStencilState" : + { + "Depth" : + { + "Enable" : false + }, + "Stencil" : + { + "Enable" : false + } + }, + + "ProgramSettings": + { + "EntryPoints": + [ + { + "name": "MainVS", + "type": "Vertex" + }, + { + "name": "MainPS", + "type": "Fragment" + } + ] + }, + + "Supervariants": + [ + { + "Name": "", + "PlusArguments": "", + "MinusArguments": "--strip-unused-srgs" + } + ] +} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldBlurBokeh.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldBlurBokeh.azsl index 60951ebeb5..1a9d3ecb7a 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldBlurBokeh.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldBlurBokeh.azsl @@ -20,7 +20,7 @@ #include #include -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_colorAndDofFactorTexture; float m_radiusMin; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldComposite.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldComposite.azsl index 0fd89e475e..377a07e9b5 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldComposite.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/DepthOfFieldComposite.azsl @@ -16,7 +16,7 @@ #include -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_InputColor; Texture2D m_InputDepth; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LookModificationTransform.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LookModificationTransform.azsl index 3e708a2ca3..c3e6ed7418 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LookModificationTransform.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/LookModificationTransform.azsl @@ -18,7 +18,7 @@ #include #include "EyeAdaptationUtil.azsli" -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_framebuffer; Sampler LinearSampler diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/OutputTransform.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/OutputTransform.azsl index b480d6e5c5..b225f123ed 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/OutputTransform.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/OutputTransform.azsl @@ -17,7 +17,7 @@ #include #include -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_framebuffer; Sampler LinearSampler diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAABlendingWeightCalculation.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAABlendingWeightCalculation.azsl index 04d6a8bf8b..e58a91a68a 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAABlendingWeightCalculation.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAABlendingWeightCalculation.azsl @@ -25,7 +25,7 @@ struct VSOutputBlendingWeightCalculation float4 m_offset[3] : TEXCOORD2; }; -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_framebuffer; Texture2D m_areaTexture; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAAEdgeDetection.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAAEdgeDetection.azsl index eca2e56ae2..e4d71d5c80 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAAEdgeDetection.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAAEdgeDetection.azsl @@ -24,7 +24,7 @@ struct VSOutputSMAAEdgeDetection float4 m_offset[3] : TEXCOORD1; }; -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_framebuffer; Texture2D m_depthTexture; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAANeighborhoodBlending.azsl b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAANeighborhoodBlending.azsl index de4e8cf83c..170f1e79f4 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAANeighborhoodBlending.azsl +++ b/Gems/Atom/Feature/Common/Assets/Shaders/PostProcessing/SMAANeighborhoodBlending.azsl @@ -25,7 +25,7 @@ struct VSOutputNeighborhoodBlending float4 m_offset : TEXCOORD1; }; -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_framebuffer; Texture2D m_framebufferPassThrough; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformLutPass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformLutPass.h index bc8673a64b..a6c7615574 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformLutPass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformLutPass.h @@ -48,7 +48,9 @@ namespace AZ void SetShaperParams(const ShaperParams& shaperParams); private: explicit AcesOutputTransformLutPass(const RPI::PassDescriptor& descriptor); - void Init() override; + + // Pass behavior overrides... + void InitializeInternal() override; // Scope producer functions... void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformPass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformPass.h index 5a0ccdb32a..350b178cfa 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformPass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/AcesOutputTransformPass.h @@ -50,7 +50,9 @@ namespace AZ private: explicit AcesOutputTransformPass(const RPI::PassDescriptor& descriptor); - void Init() override; + + // Pass behavior overrides + void InitializeInternal() override; // Scope producer functions... void CompileResources(const RHI::FrameGraphCompileContext& context) override; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/ApplyShaperLookupTablePass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/ApplyShaperLookupTablePass.h index 35d2fcf603..3b6d7f7c27 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/ApplyShaperLookupTablePass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/ApplyShaperLookupTablePass.h @@ -45,7 +45,9 @@ namespace AZ protected: explicit ApplyShaperLookupTablePass(const RPI::PassDescriptor& descriptor); - void Init() override; + + // Pass behavior overrides... + void InitializeInternal() override; RHI::ShaderInputImageIndex m_shaderInputLutImageIndex; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/BakeAcesOutputTransformLutPass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/BakeAcesOutputTransformLutPass.h index 60505653b7..0f6f1aa954 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/BakeAcesOutputTransformLutPass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/BakeAcesOutputTransformLutPass.h @@ -57,15 +57,13 @@ namespace AZ explicit BakeAcesOutputTransformLutPass(const RPI::PassDescriptor& descriptor); // Pass behavior overrides... - void FrameBeginInternal(FramePrepareParams params) override; + void InitializeInternal() override; // RHI::ScopeProducer overrides... void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; void CompileResources(const RHI::FrameGraphCompileContext& context) override; void BuildCommandListInternal(const RHI::FrameGraphExecuteContext& context) override; - void Init(); - void AcquireLutImage(); void ReleaseLutImage(); diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperFullScreenPass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperFullScreenPass.h index 94e52d41b0..59c02accdd 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperFullScreenPass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperFullScreenPass.h @@ -41,14 +41,11 @@ namespace AZ void SetInputReferencePassName(const Name& passName); void SetInputReferenceAttachmentName(const Name& attachmentName); - // Pass behavior overrides - virtual void BuildAttachmentsInternal() override; - protected: explicit DisplayMapperFullScreenPass(const RPI::PassDescriptor& descriptor); - // FullscreenTrianglePass behavior overrides - virtual void Init(); + // Pass behavior overrides... + virtual void BuildInternal() override; private: Name m_inputReferencePassName = Name{ "Parent" }; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperPass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperPass.h index 67d9eae9ae..b741a10953 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperPass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/DisplayMapperPass.h @@ -76,7 +76,8 @@ namespace AZ DisplayMapperPass(const RPI::PassDescriptor& descriptor); // Pass behavior overrides - void BuildAttachmentsInternal() final; + void BuildInternal() final; + void InitializeInternal() final; void FrameBeginInternal(FramePrepareParams params) final; void FrameEndInternal() final; void CreateChildPassesInternal() final; diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/OutputTransformPass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/OutputTransformPass.h index b266eab14b..caee7ae3dd 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/OutputTransformPass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/DisplayMapper/OutputTransformPass.h @@ -49,7 +49,9 @@ namespace AZ protected: explicit OutputTransformPass(const RPI::PassDescriptor& descriptor); - void Init() override; + + // Pass behavior overrides + void InitializeInternal() override; private: // Scope producer functions... diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/LuxCoreTexturePass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/LuxCoreTexturePass.h index 23e9c220b2..2ad2af3efd 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/LuxCoreTexturePass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/LuxCoreTexturePass.h @@ -42,7 +42,7 @@ namespace AZ protected: // Pass behavior overrides void CreateChildPassesInternal() final; - void BuildAttachmentsInternal() final; + void BuildInternal() final; void FrameBeginInternal(FramePrepareParams params) final; private: diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/RenderTexturePass.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/RenderTexturePass.h index 5ae5008a92..cd148d3452 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/RenderTexturePass.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/LuxCore/RenderTexturePass.h @@ -46,7 +46,7 @@ namespace AZ private: - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; void UpdataAttachment(); diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h index ff84f77a3e..f9fd9cb779 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/ReflectionProbe/ReflectionProbeFeatureProcessor.h @@ -60,8 +60,10 @@ namespace AZ // create the box vertex and index streams, which are used to render the probe volumes void CreateBoxMesh(); - // load the shader and retrieve pipeline state, Srg, and drawListTag - void LoadShader(const char* filePath, RPI::Ptr& pipelineState, Data::Asset& srgAsset, RHI::DrawListTag& drawListTag); + // load the shader and retrieve pipeline state, shader, Srg Layout, and drawListTag + void LoadShader( + const char* filePath, RPI::Ptr& pipelineState, Data::Instance& shader, + RHI::Ptr& srgLayout, RHI::DrawListTag& drawListTag); // RPI::SceneNotificationBus::Handler overrides void OnRenderPipelinePassesChanged(RPI::RenderPipeline* renderPipeline) override; diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp index 1b59802c45..552ca5d19f 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp @@ -164,7 +164,7 @@ namespace AZ Data::Instance srg; if (useManualViewProjectionOverride || primitive.m_primitiveType == PrimitiveType_PointList) { - srg = RPI::ShaderResourceGroup::Create(m_shaderData.m_perDrawSrgAsset); + srg = RPI::ShaderResourceGroup::Create(m_shader->GetAsset(), m_shader->GetSupervariantIndex(), m_shaderData.m_perDrawSrgLayout->GetName()); if (!srg) { AZ_Warning("AuxGeom", false, "Failed to create a shader resource group for an AuxGeom draw, Ignoring the draw"); @@ -425,10 +425,10 @@ namespace AZ } // Get the per-object SRG and store the indices of the data we need to set per object - m_shaderData.m_perDrawSrgAsset = m_shader->FindShaderResourceGroupAsset(Name{ "PerDrawSrg" }); - if (!m_shaderData.m_perDrawSrgAsset.GetId().IsValid()) + m_shaderData.m_perDrawSrgLayout = m_shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Draw); + if (!m_shaderData.m_perDrawSrgLayout) { - AZ_Error("DynamicPrimitiveProcessor", false, "Failed to get shader resource group asset"); + AZ_Error("DynamicPrimitiveProcessor", false, "Failed to get shader resource group layout"); return; } @@ -439,7 +439,7 @@ namespace AZ m_shaderData.m_drawListTag = m_shader->GetDrawListTag(); // Create a default SRG for draws that don't use a manual view projection override - m_shaderData.m_defaultSRG = RPI::ShaderResourceGroup::Create(m_shaderData.m_perDrawSrgAsset); + m_shaderData.m_defaultSRG = RPI::ShaderResourceGroup::Create(m_shader->GetAsset(), m_shader->GetSupervariantIndex(), m_shaderData.m_perDrawSrgLayout->GetName()); AZ_Assert(m_shaderData.m_defaultSRG != nullptr, "Creating the default SRG unexpectedly failed"); m_shaderData.m_defaultSRG->SetConstant(m_shaderData.m_pointSizeIndex, 10.0f); m_shaderData.m_defaultSRG->Compile(); diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h index a23cad7962..55e05ae0b6 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h @@ -24,7 +24,6 @@ #include #include -#include #include #include "AuxGeomBase.h" @@ -100,7 +99,7 @@ namespace AZ struct ShaderData { - AZ::Data::Asset m_perDrawSrgAsset; + RHI::Ptr m_perDrawSrgLayout; Data::Instance m_defaultSRG; // default SRG for draws not overriding the view projection matrix AZ::RHI::DrawListTag m_drawListTag; // The draw list tag from our shader variant (determines which views primitives are in and which pass) diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp index cebc6e8937..fda468db8b 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp @@ -1369,15 +1369,12 @@ namespace AZ void FixedShapeProcessor::FillShaderData(Data::Instance& shader, ShaderData& shaderData) { // Get the per-object SRG and store the indices of the data we need to set per object - shaderData.m_perObjectSrgAsset = shader->FindShaderResourceGroupAsset(Name{ "ObjectSrg" }); - if (!shaderData.m_perObjectSrgAsset.GetId().IsValid()) + shaderData.m_shaderAsset = shader->GetAsset(); + shaderData.m_supervariantIndex = shader->GetSupervariantIndex(); + shaderData.m_perObjectSrgLayout = shader->FindShaderResourceGroupLayout(Name{ "ObjectSrg" }); + if (!shaderData.m_perObjectSrgLayout) { - AZ_Error("FixedShapeProcessor", false, "Failed to get shader resource group asset"); - return; - } - else if (!shaderData.m_perObjectSrgAsset.IsReady()) - { - AZ_Error("FixedShapeProcessor", false, "Shader resource group asset is not loaded"); + AZ_Error("FixedShapeProcessor", false, "Failed to get shader resource group layout"); return; } @@ -1568,7 +1565,7 @@ namespace AZ // Create a SRG for the shape to specify its transform and color // [GFX TODO] [ATOM-2333] Try to avoid doing SRG create/compile per draw. Possibly using instancing. - auto srg = RPI::ShaderResourceGroup::Create(shaderData.m_perObjectSrgAsset); + auto srg = RPI::ShaderResourceGroup::Create(shaderData.m_shaderAsset, shaderData.m_supervariantIndex, shaderData.m_perObjectSrgLayout->GetName()); if (!srg) { AZ_Warning("AuxGeom", false, "Failed to create a shader resource group for an AuxGeom draw, Ignoring the draw"); @@ -1667,7 +1664,7 @@ namespace AZ { ShaderData& shaderData = m_perObjectShaderData[drawStyle==DrawStyle_Shaded?1:0]; // Create a SRG for the box to specify its transform and color - auto srg = RPI::ShaderResourceGroup::Create(shaderData.m_perObjectSrgAsset); + auto srg = RPI::ShaderResourceGroup::Create(shaderData.m_shaderAsset, shaderData.m_supervariantIndex, shaderData.m_perObjectSrgLayout->GetName()); if (!srg) { AZ_Warning("AuxGeom", false, "Failed to create a shader resource group for an AuxGeom draw, Ignoring the draw"); diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h index 3e898b47c2..9bf6abecfc 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.h @@ -244,7 +244,9 @@ namespace AZ struct ShaderData { - AZ::Data::Asset m_perObjectSrgAsset; + AZ::Data::Asset m_shaderAsset; // For @m_perObjectSrgLayout. + AZ::RPI::SupervariantIndex m_supervariantIndex; // For @m_perObjectSrgLayout. + AZ::RHI::Ptr m_perObjectSrgLayout; // Comes from @m_shaderAsset AZ::RHI::DrawListTag m_drawListTag; AZ::RHI::ShaderInputNameIndex m_colorIndex = "m_color"; AZ::RHI::ShaderInputNameIndex m_modelToWorldIndex = "m_modelToWorld"; diff --git a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.cpp b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.cpp index 3ebb6b370c..a6c440cf39 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.cpp @@ -60,7 +60,7 @@ namespace AZ Base::FrameBeginInternal(params); } - void CheckerboardColorResolvePass::BuildAttachmentsInternal() + void CheckerboardColorResolvePass::BuildInternal() { // For each bound attachments they are the inputs from current frame. // We use them to get their owner CheckerboardPass then find the render targets from last frame @@ -99,7 +99,7 @@ namespace AZ // reset frame offset to 0 since attachments are rebuilt m_frameOffset = 0; - Base::BuildAttachmentsInternal(); + Base::BuildInternal(); } void CheckerboardColorResolvePass::CompileResources(const RHI::FrameGraphCompileContext& context) @@ -135,7 +135,7 @@ namespace AZ void CheckerboardColorResolvePass::FrameEndInternal() { // For the input slots for current frame, they always get updated when CheckerboardPass updates the render targets - // But for the input slots for previous frame, we need to manually update them since they were manually attached in BuildAttachmentsInternal() + // But for the input slots for previous frame, we need to manually update them since they were manually attached in BuildInternal() // // When pass attachment was built, CheckerboardPass creates two resources for each render target. // For example, diffuse_0 and diffuse_1 which diffuse_0 is for even frame and diffuse_1 is for odd frame. diff --git a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.h b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.h index 8cb15d5f49..93930e2bbc 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardColorResolvePass.h @@ -52,7 +52,7 @@ namespace AZ protected: // Pass overrides... void FrameBeginInternal(FramePrepareParams params) override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameEndInternal() override; // Scope producer functions... diff --git a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.cpp b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.cpp index 09c69dfe18..a781c460f5 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.cpp @@ -50,7 +50,7 @@ namespace AZ Base::FrameBeginInternal(params); } - void CheckerboardPass::BuildAttachmentsInternal() + void CheckerboardPass::BuildInternal() { Data::Instance pool = RPI::ImageSystemInterface::Get()->GetSystemAttachmentPool(); @@ -101,7 +101,7 @@ namespace AZ // reset frame offset to 0 since attachments are rebuilt m_frameOffset = 0; - Base::BuildAttachmentsInternal(); + Base::BuildInternal(); } diff --git a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.h b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.h index 3b905cc3db..02429bb837 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/Checkerboard/CheckerboardPass.h @@ -40,7 +40,7 @@ namespace AZ protected: // Pass overrides... void FrameBeginInternal(FramePrepareParams params); - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameEndInternal() override; private: diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/CapsuleLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/CapsuleLightFeatureProcessor.cpp index d5bacf18f1..3c01222a4c 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/CapsuleLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/CapsuleLightFeatureProcessor.cpp @@ -53,7 +53,7 @@ namespace AZ desc.m_bufferSrgName = "m_capsuleLights"; desc.m_elementCountSrgName = "m_capsuleLightCount"; desc.m_elementSize = sizeof(CapsuleLightData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_lightBufferHandler = GpuBufferHandler(desc); } diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.cpp index d83201533c..b9beac4285 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.cpp @@ -100,7 +100,7 @@ namespace AZ m_arraySize = arraySize; m_updateChildren = true; - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); m_atlas.Initialize(); for (size_t cascadeIndex = 0; cascadeIndex < m_arraySize; ++cascadeIndex) @@ -149,7 +149,7 @@ namespace AZ return m_atlas; } - void CascadedShadowmapsPass::BuildAttachmentsInternal() + void CascadedShadowmapsPass::BuildInternal() { UpdateChildren(); @@ -159,7 +159,7 @@ namespace AZ } UpdateShadowmapImageSize(); - Base::BuildAttachmentsInternal(); + Base::BuildInternal(); } void CascadedShadowmapsPass::GetPipelineViewTags(RPI::SortedPipelineViewTags& outTags) const @@ -215,7 +215,7 @@ namespace AZ AZ_RPI_PASS_WARNING(child, "CascadedShadowmapsPass child Pass creation failed for %d", cascadeIndex); if (child) { - child->QueueForBuildAttachments(); + child->QueueForBuildAndInitialization(); AddChild(child); } } diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.h index aa95e0af44..772be9466d 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/CascadedShadowmapsPass.h @@ -53,7 +53,7 @@ namespace AZ explicit CascadedShadowmapsPass(const RPI::PassDescriptor& descriptor); // RPI::Pass overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; void GetPipelineViewTags(RPI::SortedPipelineViewTags& outTags) const override; void GetViewDrawListInfo(RHI::DrawListMask& outDrawListMask, RPI::PassesByDrawList& outPassesByDrawList, const RPI::PipelineViewTag& viewTag) const override; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp index 9b40097716..ae8280fc16 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DirectionalLightFeatureProcessor.cpp @@ -145,7 +145,7 @@ namespace AZ void DirectionalLightFeatureProcessor::Activate() { - const RHI::ShaderResourceGroupLayout* sceneSrgLayout = RPI::RPISystemInterface::Get()->GetSceneSrgAsset()->GetLayout(); + const RHI::ShaderResourceGroupLayout* sceneSrgLayout = RPI::RPISystemInterface::Get()->GetSceneSrgLayout().get(); GpuBufferHandler::Descriptor desc; @@ -786,7 +786,7 @@ namespace AZ } }; - const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); const IndexedDataVector lastShadowData = m_shadowData[nullptr]; IndexedDataVector lastEsmParameter = m_esmParameterData[nullptr]; while (lastEsmParameter.GetDataCount() < Shadow::MaxNumberOfCascades) @@ -1106,7 +1106,7 @@ namespace AZ { for (EsmShadowmapsPass* pass : it.second) { - pass->QueueForBuildAttachments(); + pass->QueueForBuildAndInitialization(); } } } diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp index d0fb702d5a..9fca9b512b 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/DiskLightFeatureProcessor.cpp @@ -54,7 +54,7 @@ namespace AZ desc.m_bufferSrgName = "m_diskLights"; desc.m_elementCountSrgName = "m_diskLightCount"; desc.m_elementSize = sizeof(DiskLightData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_lightBufferHandler = GpuBufferHandler(desc); m_shadowFeatureProcessor = GetParentScene()->GetFeatureProcessor(); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.cpp index a9b43ef1e7..fa293ac9fd 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.cpp @@ -163,7 +163,6 @@ namespace AZ void LightCullingPass::ResetInternal() { - m_initialized = false; m_tileDataIndex = -1; m_constantDataIndex.Reset(); @@ -260,7 +259,7 @@ namespace AZ return gridPixelSize; } - void LightCullingPass::BuildAttachmentsInternal() + void LightCullingPass::BuildInternal() { m_tileDataIndex = FindInputBinding(AZ::Name("TileLightData")); CreateLightList(); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.h index d8699ea0c7..8080379716 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingPass.h @@ -50,7 +50,7 @@ namespace AZ // Pass behavior overrides... void ResetInternal()override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; // Scope producer functions... void CompileResources(const RHI::FrameGraphCompileContext& context) override; @@ -96,7 +96,6 @@ namespace AZ AZ::RHI::ShaderInputNameIndex m_constantDataIndex = "m_constantData"; - bool m_initialized = false; Data::Instance m_lightList; uint32_t m_tileDataIndex = -1; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.cpp index 26e4ed9f6e..d13e72815b 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.cpp @@ -108,7 +108,7 @@ namespace AZ return -1; } - void LightCullingRemap::BuildAttachmentsInternal() + void LightCullingRemap::BuildInternal() { m_tileDataIndex = FindInputOutputBinding(AZ::Name("TileLightData")); m_tileDim = GetTileDataBufferResolution(); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.h index 0738acd459..6d60f93a64 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingRemap.h @@ -55,7 +55,7 @@ namespace AZ // Pass behavior overrides... void ResetInternal()override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; // RHI::ScopeProducer overrides... void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.cpp index 816ef25bc6..4f2a4f0346 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.cpp @@ -167,37 +167,36 @@ namespace AZ AZ_Assert(setOk, "LightCullingTilePreparePass::SetConstantData() - could not set constant data"); } - void LightCullingTilePreparePass::BuildAttachmentsInternal() + void LightCullingTilePreparePass::BuildInternal() { ChooseShaderVariant(); } - void LightCullingTilePreparePass::OnShaderReinitialized(const AZ::RPI::Shader&) + void LightCullingTilePreparePass::OnShaderReloaded() { LoadShader(); - if (!m_flags.m_queuedForBuildAttachment && !m_flags.m_isBuildingAttachments) + AZ_Assert(GetPassState() != RPI::PassState::Rendering, "LightCullingTilePreparePass: Trying to reload shader during rendering"); + if (GetPassState() == RPI::PassState::Idle) { ChooseShaderVariant(); } } + + void LightCullingTilePreparePass::OnShaderReinitialized(const AZ::RPI::Shader&) + { + OnShaderReloaded(); + } + void LightCullingTilePreparePass::OnShaderAssetReinitialized(const Data::Asset&) { - LoadShader(); - if (!m_flags.m_queuedForBuildAttachment && !m_flags.m_isBuildingAttachments) - { - ChooseShaderVariant(); - } + OnShaderReloaded(); } void LightCullingTilePreparePass::OnShaderVariantReinitialized( const AZ::RPI::Shader&, const AZ::RPI::ShaderVariantId&, AZ::RPI::ShaderVariantStableId) { - LoadShader(); - if (!m_flags.m_queuedForBuildAttachment && !m_flags.m_isBuildingAttachments) - { - ChooseShaderVariant(); - } + OnShaderReloaded(); } } // namespace Render diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.h index efba105912..0febb66e3d 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/LightCullingTilePreparePass.h @@ -50,7 +50,7 @@ namespace AZ LightCullingTilePreparePass(const RPI::PassDescriptor& descriptor); // Pass behavior overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; /////////////////////////////////////////////////////////////////// // ShaderReloadNotificationBus overrides... @@ -73,6 +73,7 @@ namespace AZ const AZ::RPI::ShaderVariant& CreateShaderVariant(); void CreatePipelineStateFromShaderVariant(const RPI::ShaderVariant& shaderVariant); void SetConstantData(); + void OnShaderReloaded(); AZ::RHI::ShaderInputNameIndex m_constantDataIndex = "m_constantData"; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp index bb81c52b15..ef5d7f0d03 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PointLightFeatureProcessor.cpp @@ -60,7 +60,7 @@ namespace AZ desc.m_bufferSrgName = "m_pointLights"; desc.m_elementCountSrgName = "m_pointLightCount"; desc.m_elementSize = sizeof(PointLightData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_shadowFeatureProcessor = GetParentScene()->GetFeatureProcessor(); m_lightBufferHandler = GpuBufferHandler(desc); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PolygonLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PolygonLightFeatureProcessor.cpp index 25b7526c5f..1dcb75f5b2 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/PolygonLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/PolygonLightFeatureProcessor.cpp @@ -54,7 +54,7 @@ namespace AZ::Render desc.m_bufferSrgName = "m_polygonLights"; desc.m_elementCountSrgName = "m_polygonLightCount"; desc.m_elementSize = sizeof(PolygonLightData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_lightBufferHandler = GpuBufferHandler(desc); @@ -63,7 +63,7 @@ namespace AZ::Render desc.m_bufferSrgName = "m_polygonLightPoints"; desc.m_elementCountSrgName = ""; desc.m_elementSize = 16; // While only a 12 byte float3 is needed for positions, using 16 bytes since that's the minimal alignment. - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_lightPolygonPointBufferHandler = GpuBufferHandler(desc); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.cpp index d77419fe8f..2f1badaae7 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.cpp @@ -73,7 +73,7 @@ namespace AZ { m_sizes = sizes; m_updateChildren = true; - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); m_atlas.Initialize(); for (const auto& it : m_sizes) @@ -156,7 +156,7 @@ namespace AZ return m_atlas; } - void ProjectedShadowmapsPass::BuildAttachmentsInternal() + void ProjectedShadowmapsPass::BuildInternal() { UpdateChildren(); @@ -177,7 +177,7 @@ namespace AZ imageDescriptor.m_size = RHI::Size(shadowmapWidth, shadowmapWidth, 1); imageDescriptor.m_arraySize = m_atlas.GetArraySliceCount(); - Base::BuildAttachmentsInternal(); + Base::BuildInternal(); } void ProjectedShadowmapsPass::GetPipelineViewTags(RPI::SortedPipelineViewTags& outTags) const diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.h index 63640d22c6..f1963cc885 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ProjectedShadowmapsPass.h @@ -71,7 +71,7 @@ namespace AZ explicit ProjectedShadowmapsPass(const RPI::PassDescriptor& descriptor); // RPI::Pass overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; void GetPipelineViewTags(RPI::SortedPipelineViewTags& outTags) const override; void GetViewDrawListInfo(RHI::DrawListMask& outDrawListMask, RPI::PassesByDrawList& outPassesByDrawList, const RPI::PipelineViewTag& viewTag) const override; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/QuadLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/QuadLightFeatureProcessor.cpp index ac97d22205..12f6a809d8 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/QuadLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/QuadLightFeatureProcessor.cpp @@ -56,7 +56,7 @@ namespace AZ desc.m_bufferSrgName = "m_quadLights"; desc.m_elementCountSrgName = "m_quadLightCount"; desc.m_elementSize = sizeof(QuadLightData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_lightBufferHandler = GpuBufferHandler(desc); diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.cpp index 087a73a94d..d31947da5a 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.cpp @@ -107,7 +107,7 @@ namespace AZ m_scissorState = scissor; } - void ShadowmapPass::BuildAttachmentsInternal() + void ShadowmapPass::BuildInternal() { RPI::Ptr parentPass = GetParent(); if (!parentPass) @@ -135,7 +135,7 @@ namespace AZ action.m_loadAction = m_clearEnabled ? RHI::AttachmentLoadAction::Clear : RHI::AttachmentLoadAction::DontCare; binding.m_unifiedScopeDesc = RHI::UnifiedScopeAttachmentDescriptor(attachmentId, imageViewDescriptor, action); - Base::BuildAttachmentsInternal(); + Base::BuildInternal(); } } // namespace Render diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.h b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.h index 9c308dc4df..2814761a69 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/ShadowmapPass.h @@ -58,7 +58,7 @@ namespace AZ explicit ShadowmapPass(const RPI::PassDescriptor& descriptor); // RHI::Pass overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; uint16_t m_arraySlice = 0; bool m_clearEnabled = true; diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimplePointLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimplePointLightFeatureProcessor.cpp index 591abc1b57..80d6d17a85 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimplePointLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimplePointLightFeatureProcessor.cpp @@ -53,7 +53,7 @@ namespace AZ desc.m_bufferSrgName = "m_simplePointLights"; desc.m_elementCountSrgName = "m_simplePointLightCount"; desc.m_elementSize = sizeof(SimplePointLightData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_lightBufferHandler = GpuBufferHandler(desc); } diff --git a/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimpleSpotLightFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimpleSpotLightFeatureProcessor.cpp index f26c0b19b3..95baa8e120 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimpleSpotLightFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CoreLights/SimpleSpotLightFeatureProcessor.cpp @@ -53,7 +53,7 @@ namespace AZ desc.m_bufferSrgName = "m_simpleSpotLights"; desc.m_elementCountSrgName = "m_simpleSpotLightCount"; desc.m_elementSize = sizeof(SimpleSpotLightData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_lightBufferHandler = GpuBufferHandler(desc); } diff --git a/Gems/Atom/Feature/Common/Code/Source/Decals/DecalFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Decals/DecalFeatureProcessor.cpp index 7c97af4f79..78ce3726af 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Decals/DecalFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Decals/DecalFeatureProcessor.cpp @@ -55,7 +55,7 @@ namespace AZ desc.m_bufferSrgName = "m_decals"; desc.m_elementCountSrgName = "m_decalCount"; desc.m_elementSize = sizeof(DecalData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_decalBufferHandler = GpuBufferHandler(desc); @@ -332,7 +332,7 @@ namespace AZ void DecalFeatureProcessor::CacheShaderIndices() { - const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_baseColorMapsIndex = viewSrgLayout->FindShaderInputImageIndex(m_baseColorMapShaderName); AZ_Warning("DecalFeatureProcessor", m_baseColorMapsIndex.IsValid(), "Unable to find baseColorMaps in decal shader."); diff --git a/Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArrayFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArrayFeatureProcessor.cpp index e783f3b531..ea1ac1b797 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArrayFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Decals/DecalTextureArrayFeatureProcessor.cpp @@ -72,7 +72,7 @@ namespace AZ desc.m_bufferSrgName = "m_decals"; desc.m_elementCountSrgName = "m_decalCount"; desc.m_elementSize = sizeof(DecalData); - desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + desc.m_srgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); m_decalBufferHandler = GpuBufferHandler(desc); @@ -329,7 +329,7 @@ namespace AZ { for (int i = 0; i < NumTextureArrays; ++i) { - const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); const AZStd::string baseName = "m_decalTextureArray" + AZStd::to_string(i); m_decalTextureArrayIndices[i] = viewSrgLayout->FindShaderInputImageIndex(Name(baseName.c_str())); diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.cpp index cfdfd9efa4..d0fe85c6de 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.cpp @@ -506,11 +506,11 @@ namespace AZ srg->SetConstant(constantIndex, m_probeRayRotationTransform); } - void DiffuseProbeGrid::UpdateRayTraceSrg(const Data::Asset& srgAsset) + void DiffuseProbeGrid::UpdateRayTraceSrg(const Data::Instance& shader, const RHI::Ptr& layout) { if (!m_rayTraceSrg) { - m_rayTraceSrg = RPI::ShaderResourceGroup::Create(srgAsset); + m_rayTraceSrg = RPI::ShaderResourceGroup::Create(shader->GetAsset(), shader->GetSupervariantIndex(), layout->GetName()); AZ_Error("DiffuseProbeGrid", m_rayTraceSrg.get(), "Failed to create RayTrace shader resource group"); } @@ -551,11 +551,11 @@ namespace AZ SetGridConstants(m_rayTraceSrg); } - void DiffuseProbeGrid::UpdateBlendIrradianceSrg(const Data::Asset& srgAsset) + void DiffuseProbeGrid::UpdateBlendIrradianceSrg(const Data::Instance& shader, const RHI::Ptr& layout) { if (!m_blendIrradianceSrg) { - m_blendIrradianceSrg = RPI::ShaderResourceGroup::Create(srgAsset); + m_blendIrradianceSrg = RPI::ShaderResourceGroup::Create(shader->GetAsset(), shader->GetSupervariantIndex(), layout->GetName()); AZ_Error("DiffuseProbeGrid", m_blendIrradianceSrg.get(), "Failed to create BlendIrradiance shader resource group"); } @@ -574,11 +574,11 @@ namespace AZ SetGridConstants(m_blendIrradianceSrg); } - void DiffuseProbeGrid::UpdateBlendDistanceSrg(const Data::Asset& srgAsset) + void DiffuseProbeGrid::UpdateBlendDistanceSrg(const Data::Instance& shader, const RHI::Ptr& layout) { if (!m_blendDistanceSrg) { - m_blendDistanceSrg = RPI::ShaderResourceGroup::Create(srgAsset); + m_blendDistanceSrg = RPI::ShaderResourceGroup::Create(shader->GetAsset(), shader->GetSupervariantIndex(), layout->GetName()); AZ_Error("DiffuseProbeGrid", m_blendDistanceSrg.get(), "Failed to create BlendDistance shader resource group"); } @@ -597,14 +597,15 @@ namespace AZ SetGridConstants(m_blendDistanceSrg); } - void DiffuseProbeGrid::UpdateBorderUpdateSrgs(const Data::Asset& rowSrgAsset, - const Data::Asset& columnSrgAsset) + void DiffuseProbeGrid::UpdateBorderUpdateSrgs( + const Data::Instance& rowShader, const RHI::Ptr& rowSrgLayout, + const Data::Instance& columnShader, const RHI::Ptr& columnSrgLayout) { // border update row irradiance { if (!m_borderUpdateRowIrradianceSrg) { - m_borderUpdateRowIrradianceSrg = RPI::ShaderResourceGroup::Create(rowSrgAsset); + m_borderUpdateRowIrradianceSrg = RPI::ShaderResourceGroup::Create(rowShader->GetAsset(), rowShader->GetSupervariantIndex(), rowSrgLayout->GetName()); AZ_Error("DiffuseProbeGrid", m_borderUpdateRowIrradianceSrg.get(), "Failed to create BorderUpdateRowIrradiance shader resource group"); } @@ -623,7 +624,7 @@ namespace AZ { if (!m_borderUpdateColumnIrradianceSrg) { - m_borderUpdateColumnIrradianceSrg = RPI::ShaderResourceGroup::Create(columnSrgAsset); + m_borderUpdateColumnIrradianceSrg = RPI::ShaderResourceGroup::Create(columnShader->GetAsset(), columnShader->GetSupervariantIndex(), columnSrgLayout->GetName()); AZ_Error("DiffuseProbeGrid", m_borderUpdateColumnIrradianceSrg.get(), "Failed to create BorderUpdateColumnRowIrradiance shader resource group"); } @@ -642,7 +643,7 @@ namespace AZ { if (!m_borderUpdateRowDistanceSrg) { - m_borderUpdateRowDistanceSrg = RPI::ShaderResourceGroup::Create(rowSrgAsset); + m_borderUpdateRowDistanceSrg = RPI::ShaderResourceGroup::Create(rowShader->GetAsset(), rowShader->GetSupervariantIndex(), rowSrgLayout->GetName()); AZ_Error("DiffuseProbeGrid", m_borderUpdateRowDistanceSrg.get(), "Failed to create BorderUpdateRowDistance shader resource group"); } @@ -661,7 +662,7 @@ namespace AZ { if (!m_borderUpdateColumnDistanceSrg) { - m_borderUpdateColumnDistanceSrg = RPI::ShaderResourceGroup::Create(columnSrgAsset); + m_borderUpdateColumnDistanceSrg = RPI::ShaderResourceGroup::Create(columnShader->GetAsset(), columnShader->GetSupervariantIndex(), columnSrgLayout->GetName()); AZ_Error("DiffuseProbeGrid", m_borderUpdateColumnDistanceSrg.get(), "Failed to create BorderUpdateColumnRowDistance shader resource group"); } @@ -677,11 +678,11 @@ namespace AZ } } - void DiffuseProbeGrid::UpdateRelocationSrg(const Data::Asset& srgAsset) + void DiffuseProbeGrid::UpdateRelocationSrg(const Data::Instance& shader, const RHI::Ptr& layout) { if (!m_relocationSrg) { - m_relocationSrg = RPI::ShaderResourceGroup::Create(srgAsset); + m_relocationSrg = RPI::ShaderResourceGroup::Create(shader->GetAsset(), shader->GetSupervariantIndex(), layout->GetName()); AZ_Error("DiffuseProbeGrid", m_relocationSrg.get(), "Failed to create Relocation shader resource group"); } @@ -702,11 +703,11 @@ namespace AZ SetGridConstants(m_relocationSrg); } - void DiffuseProbeGrid::UpdateClassificationSrg(const Data::Asset& srgAsset) + void DiffuseProbeGrid::UpdateClassificationSrg(const Data::Instance& shader, const RHI::Ptr& layout) { if (!m_classificationSrg) { - m_classificationSrg = RPI::ShaderResourceGroup::Create(srgAsset); + m_classificationSrg = RPI::ShaderResourceGroup::Create(shader->GetAsset(), shader->GetSupervariantIndex(), layout->GetName()); AZ_Error("DiffuseProbeGrid", m_classificationSrg.get(), "Failed to create Classification shader resource group"); } @@ -732,7 +733,7 @@ namespace AZ if (!m_renderObjectSrg) { - m_renderObjectSrg = RPI::ShaderResourceGroup::Create(m_renderData->m_srgAsset); + m_renderObjectSrg = RPI::ShaderResourceGroup::Create(m_renderData->m_shader->GetAsset(), m_renderData->m_shader->GetSupervariantIndex(), m_renderData->m_srgLayout->GetName()); AZ_Error("DiffuseProbeGrid", m_renderObjectSrg.get(), "Failed to create render shader resource group"); } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.h index 4a732ae7af..093f85906d 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGrid.h @@ -51,8 +51,9 @@ namespace AZ // render pipeline state RPI::Ptr m_pipelineState; - // render Srg asset - Data::Asset m_srgAsset; + // For the render Srg + Data::Instance m_shader; + RHI::Ptr m_srgLayout; // render drawlist tag RHI::DrawListTag m_drawListTag; @@ -129,12 +130,13 @@ namespace AZ const Data::Instance& GetRenderObjectSrg() const { return m_renderObjectSrg; } // Srg updates - void UpdateRayTraceSrg(const Data::Asset& srgAsset); - void UpdateBlendIrradianceSrg(const Data::Asset& srgAsset); - void UpdateBlendDistanceSrg(const Data::Asset& srgAsset); - void UpdateBorderUpdateSrgs(const Data::Asset& rowSrgAsset, const Data::Asset& columnSrgAsset); - void UpdateRelocationSrg(const Data::Asset& srgAsset); - void UpdateClassificationSrg(const Data::Asset& srgAsset); + void UpdateRayTraceSrg(const Data::Instance& shader, const RHI::Ptr& srgLayout); + void UpdateBlendIrradianceSrg(const Data::Instance& shader, const RHI::Ptr& srgLayout); + void UpdateBlendDistanceSrg(const Data::Instance& shader, const RHI::Ptr& srgLayout); + void UpdateBorderUpdateSrgs(const Data::Instance& rowShader, const RHI::Ptr& rowSrgLayout, + const Data::Instance& columnShader, const RHI::Ptr& columnSrgLayout); + void UpdateRelocationSrg(const Data::Instance& shader, const RHI::Ptr& srgLayout); + void UpdateClassificationSrg(const Data::Instance& shader, const RHI::Ptr& srgLayout); void UpdateRenderObjectSrg(); // textures diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.cpp index 04e68136f1..0852430f30 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.cpp @@ -55,7 +55,7 @@ namespace AZ m_pipelineState = m_shader->AcquirePipelineState(pipelineStateDescriptor); // load Pass Srg asset - m_srgAsset = m_shader->FindShaderResourceGroupAsset(RPI::SrgBindingSlot::Pass); + m_srgLayout = m_shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Pass); // retrieve the number of threads per thread group from the shader const auto numThreads = m_shader->GetAsset()->GetAttribute(RHI::ShaderStage::Compute, Name{ "numthreads" }); @@ -154,7 +154,7 @@ namespace AZ { // the diffuse probe grid Srg must be updated in the Compile phase in order to successfully bind the ReadWrite shader inputs // (see ValidateSetImageView() in ShaderResourceGroupData.cpp) - diffuseProbeGrid->UpdateBlendDistanceSrg(m_srgAsset); + diffuseProbeGrid->UpdateBlendDistanceSrg(m_shader, m_srgLayout); diffuseProbeGrid->GetBlendDistanceSrg()->Compile(); } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.h index 0f56059636..4f9816960a 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendDistancePass.h @@ -54,7 +54,7 @@ namespace AZ // shader Data::Instance m_shader; const RHI::PipelineState* m_pipelineState = nullptr; - Data::Asset m_srgAsset; + RHI::Ptr m_srgLayout; RHI::DispatchDirect m_dispatchArgs; }; } // namespace Render diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.cpp index f1fe792542..3d7de66418 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.cpp @@ -55,7 +55,7 @@ namespace AZ m_pipelineState = m_shader->AcquirePipelineState(pipelineStateDescriptor); // load Pass Srg asset - m_srgAsset = m_shader->FindShaderResourceGroupAsset(RPI::SrgBindingSlot::Pass); + m_srgLayout = m_shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Pass); // retrieve the number of threads per thread group from the shader const auto numThreads = m_shader->GetAsset()->GetAttribute(RHI::ShaderStage::Compute, Name{ "numthreads" }); @@ -154,7 +154,7 @@ namespace AZ { // the diffuse probe grid Srg must be updated in the Compile phase in order to successfully bind the ReadWrite shader inputs // (see ValidateSetImageView() in ShaderResourceGroupData.cpp) - diffuseProbeGrid->UpdateBlendIrradianceSrg(m_srgAsset); + diffuseProbeGrid->UpdateBlendIrradianceSrg(m_shader, m_srgLayout); diffuseProbeGrid->GetBlendIrradianceSrg()->Compile(); } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.h index 4e080fe960..a871600eef 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBlendIrradiancePass.h @@ -54,7 +54,7 @@ namespace AZ // shader Data::Instance m_shader; const RHI::PipelineState* m_pipelineState = nullptr; - Data::Asset m_srgAsset; + RHI::Ptr m_srgLayout; RHI::DispatchDirect m_dispatchArgs; }; } // namespace Render diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.cpp index a24d54d9b7..961c594501 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.cpp @@ -37,20 +37,20 @@ namespace AZ LoadShader("Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateRow.azshader", m_rowShader, m_rowPipelineState, - m_rowSrgAsset, + m_rowSrgLayout, m_rowDispatchArgs); LoadShader("Shaders/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdateColumn.azshader", m_columnShader, m_columnPipelineState, - m_columnSrgAsset, + m_columnSrgLayout, m_columnDispatchArgs); } void DiffuseProbeGridBorderUpdatePass::LoadShader(AZStd::string shaderFilePath, Data::Instance& shader, const RHI::PipelineState*& pipelineState, - Data::Asset& srgAsset, + RHI::Ptr& srgLayout, RHI::DispatchDirect& dispatchArgs) { // load shader @@ -68,7 +68,7 @@ namespace AZ pipelineState = shader->AcquirePipelineState(pipelineStateDescriptor); // load Pass Srg asset - srgAsset = shader->FindShaderResourceGroupAsset(RPI::SrgBindingSlot::Pass); + srgLayout = shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Pass); // retrieve the number of threads per thread group from the shader const auto numThreads = shader->GetAsset()->GetAttribute(RHI::ShaderStage::Compute, Name{ "numthreads" }); @@ -157,7 +157,7 @@ namespace AZ { // 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->UpdateBorderUpdateSrgs(m_rowSrgAsset, m_columnSrgAsset); + diffuseProbeGrid->UpdateBorderUpdateSrgs(m_rowShader, m_rowSrgLayout, m_columnShader, m_columnSrgLayout); diffuseProbeGrid->GetBorderUpdateRowIrradianceSrg()->Compile(); diffuseProbeGrid->GetBorderUpdateColumnIrradianceSrg()->Compile(); diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.h index 1633a38aff..2d7fa05cae 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridBorderUpdatePass.h @@ -40,7 +40,7 @@ namespace AZ void LoadShader(AZStd::string shaderFilePath, Data::Instance& shader, const RHI::PipelineState*& pipelineState, - Data::Asset& srgAsset, + RHI::Ptr& srgLayout, RHI::DispatchDirect& dispatchArgs); // Pass overrides @@ -55,8 +55,8 @@ namespace AZ Data::Instance m_columnShader; const RHI::PipelineState* m_rowPipelineState = nullptr; const RHI::PipelineState* m_columnPipelineState = nullptr; - Data::Asset m_rowSrgAsset; - Data::Asset m_columnSrgAsset; + RHI::Ptr m_rowSrgLayout; + RHI::Ptr m_columnSrgLayout; RHI::DispatchDirect m_rowDispatchArgs; RHI::DispatchDirect m_columnDispatchArgs; }; diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.cpp index 8d39e6fcc8..6b1d8a7e87 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.cpp @@ -59,7 +59,7 @@ namespace AZ m_pipelineState = m_shader->AcquirePipelineState(pipelineStateDescriptor); // load Pass Srg asset - m_srgAsset = m_shader->FindShaderResourceGroupAsset(RPI::SrgBindingSlot::Pass); + m_srgLayout = m_shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Pass); // retrieve the number of threads per thread group from the shader const auto numThreads = m_shader->GetAsset()->GetAttribute(RHI::ShaderStage::Compute, Name{ "numthreads" }); @@ -147,7 +147,7 @@ namespace AZ { // the diffuse probe grid Srg must be updated in the Compile phase in order to successfully bind the ReadWrite shader inputs // (see ValidateSetImageView() in ShaderResourceGroupData.cpp) - diffuseProbeGrid->UpdateClassificationSrg(m_srgAsset); + diffuseProbeGrid->UpdateClassificationSrg(m_shader, m_srgLayout); diffuseProbeGrid->GetClassificationSrg()->Compile(); } } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.h index eef59c3753..ed49883917 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridClassificationPass.h @@ -55,7 +55,7 @@ namespace AZ // shader Data::Instance m_shader; const RHI::PipelineState* m_pipelineState = nullptr; - Data::Asset m_srgAsset; + RHI::Ptr m_srgLayout; RHI::DispatchDirect m_dispatchArgs; }; } // namespace Render diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp index ba24bcc001..eca89f15db 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridFeatureProcessor.cpp @@ -90,9 +90,9 @@ namespace AZ m_probeGridRenderData.m_pipelineState->Finalize(); // load object shader resource group - m_probeGridRenderData.m_srgAsset = shader->FindShaderResourceGroupAsset(Name{ "ObjectSrg" }); - AZ_Error("DiffuseProbeGridFeatureProcessor", m_probeGridRenderData.m_srgAsset.GetId().IsValid(), "Failed to find ObjectSrg asset"); - AZ_Error("DiffuseProbeGridFeatureProcessor", m_probeGridRenderData.m_srgAsset.IsReady(), "ObjectSrg asset is not loaded"); + m_probeGridRenderData.m_shader = shader; + m_probeGridRenderData.m_srgLayout = shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Object); + AZ_Error("DiffuseProbeGridFeatureProcessor", m_probeGridRenderData.m_srgLayout != nullptr, "Failed to find ObjectSrg layout"); } EnableSceneNotification(); diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.cpp index c77f66645e..3adef43a11 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.cpp @@ -86,9 +86,8 @@ namespace AZ m_globalPipelineState = m_rayTracingShader->AcquirePipelineState(rayGenerationShaderDescriptor); AZ_Assert(m_globalPipelineState, "Failed to acquire ray tracing global pipeline state"); - m_globalSrgAsset = m_rayTracingShader->FindShaderResourceGroupAsset(Name{ "RayTracingGlobalSrg" }); - AZ_Error("ReflectionProbeFeatureProcessor", m_globalSrgAsset.GetId().IsValid(), "Failed to find RayTracingGlobalSrg asset for shader [%s]", shaderFilePath.c_str()); - AZ_Error("ReflectionProbeFeatureProcessor", m_globalSrgAsset.IsReady(), "RayTracingGlobalSrg asset is not loaded for shader [%s]", shaderFilePath.c_str()); + m_globalSrgLayout = m_rayTracingShader->FindShaderResourceGroupLayout(Name{ "RayTracingGlobalSrg" }); + AZ_Error( "ReflectionProbeFeatureProcessor", m_globalSrgLayout != nullptr, "Failed to find RayTracingGlobalSrg layout for shader [%s]", shaderFilePath.c_str()); // build the ray tracing pipeline state descriptor RHI::RayTracingPipelineStateDescriptor descriptor; @@ -264,7 +263,7 @@ namespace AZ { // 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); + diffuseProbeGrid->UpdateRayTraceSrg(m_rayTracingShader, m_globalSrgLayout); diffuseProbeGrid->GetRayTraceSrg()->Compile(); } } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.h index 910537a2f1..94b2766a22 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRayTracingPass.h @@ -63,8 +63,9 @@ namespace AZ // ray tracing shader table RHI::Ptr m_rayTracingShaderTable; - // ray tracing global shader resource group asset and pipeline state - Data::Asset m_globalSrgAsset; + // ray tracing global shader resource group layout and pipeline state + RHI::Ptr m_globalSrgLayout; + RHI::ConstPtr m_globalPipelineState; bool m_initialized = false; diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.cpp index 2f0ed373b9..086b0e91fd 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.cpp @@ -59,7 +59,7 @@ namespace AZ m_pipelineState = m_shader->AcquirePipelineState(pipelineStateDescriptor); // load Pass Srg asset - m_srgAsset = m_shader->FindShaderResourceGroupAsset(RPI::SrgBindingSlot::Pass); + m_srgLayout = m_shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Pass); // retrieve the number of threads per thread group from the shader const auto numThreads = m_shader->GetAsset()->GetAttribute(RHI::ShaderStage::Compute, Name{ "numthreads" }); @@ -171,7 +171,7 @@ namespace AZ { // the diffuse probe grid Srg must be updated in the Compile phase in order to successfully bind the ReadWrite shader inputs // (see ValidateSetImageView() in ShaderResourceGroupData.cpp) - diffuseProbeGrid->UpdateRelocationSrg(m_srgAsset); + diffuseProbeGrid->UpdateRelocationSrg(m_shader, m_srgLayout); diffuseProbeGrid->GetRelocationSrg()->Compile(); diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.h index 1900f8b786..48c4ef0bf1 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRelocationPass.h @@ -55,7 +55,7 @@ namespace AZ // shader Data::Instance m_shader; const RHI::PipelineState* m_pipelineState = nullptr; - Data::Asset m_srgAsset; + RHI::Ptr m_srgLayout; RHI::DispatchDirect m_dispatchArgs; // revision number of the ray tracing data when the shader table was built diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.cpp index f025079994..4ad5c8657e 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.cpp @@ -39,10 +39,10 @@ namespace AZ return; } - m_srgAsset = m_shader->FindShaderResourceGroupAsset(RPI::SrgBindingSlot::Pass); - AZ_Assert(m_srgAsset->IsReady(), "[DiffuseProbeGridRenderPass '%s']: Failed to find SRG asset", GetPathName().GetCStr()); + m_srgLayout = m_shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Pass); + AZ_Assert(m_srgLayout != nullptr, "[DiffuseProbeGridRenderPass '%s']: Failed to find SRG layout", GetPathName().GetCStr()); - m_shaderResourceGroup = RPI::ShaderResourceGroup::Create(m_srgAsset); + m_shaderResourceGroup = RPI::ShaderResourceGroup::Create(m_shader->GetAsset(), m_shader->GetSupervariantIndex(), m_srgLayout->GetName()); AZ_Assert(m_shaderResourceGroup, "[DiffuseProbeGridRenderPass '%s']: Failed to create SRG", GetPathName().GetCStr()); } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.h index 0ac8b695a5..eb6db1f6cb 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseGlobalIllumination/DiffuseProbeGridRenderPass.h @@ -45,7 +45,7 @@ namespace AZ void CompileResources(const RHI::FrameGraphCompileContext& context) override; Data::Instance m_shader; - Data::Asset m_srgAsset; + RHI::Ptr m_srgLayout; }; } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformLutPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformLutPass.cpp index 104a91174d..5e3bde94e9 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformLutPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformLutPass.cpp @@ -42,9 +42,9 @@ namespace AZ ReleaseLutImage(); } - void AcesOutputTransformLutPass::Init() + void AcesOutputTransformLutPass::InitializeInternal() { - DisplayMapperFullScreenPass::Init(); + DisplayMapperFullScreenPass::InitializeInternal(); AZ_Assert(m_shaderResourceGroup != nullptr, "AcesOutputTransformLutPass %s has a null shader resource group when calling Init.", GetPathName().GetCStr()); diff --git a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformPass.cpp index 6fe38ff032..ec34d40ea6 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/AcesOutputTransformPass.cpp @@ -44,9 +44,9 @@ namespace AZ { } - void AcesOutputTransformPass::Init() + void AcesOutputTransformPass::InitializeInternal() { - DisplayMapperFullScreenPass::Init(); + DisplayMapperFullScreenPass::InitializeInternal(); AZ_Assert(m_shaderResourceGroup != nullptr, "AcesOutputTransformPass %s has a null shader resource group when calling Init.", GetPathName().GetCStr()); diff --git a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/ApplyShaperLookupTablePass.cpp b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/ApplyShaperLookupTablePass.cpp index 496b4dcc8f..ff910a4b81 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/ApplyShaperLookupTablePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/ApplyShaperLookupTablePass.cpp @@ -38,9 +38,9 @@ namespace AZ ReleaseLutImage(); } - void ApplyShaperLookupTablePass::Init() + void ApplyShaperLookupTablePass::InitializeInternal() { - DisplayMapperFullScreenPass::Init(); + DisplayMapperFullScreenPass::InitializeInternal(); AZ_Assert(m_shaderResourceGroup != nullptr, "ApplyShaperLookupTablePass %s has a null shader resource group when calling Init.", GetPathName().GetCStr()); diff --git a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/BakeAcesOutputTransformLutPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/BakeAcesOutputTransformLutPass.cpp index 3322b82ff7..7a32925e93 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/BakeAcesOutputTransformLutPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/BakeAcesOutputTransformLutPass.cpp @@ -38,17 +38,7 @@ namespace AZ ReleaseLutImage(); } - void BakeAcesOutputTransformLutPass::FrameBeginInternal(FramePrepareParams params) - { - if (!m_flags.m_initialized) - { - Init(); - } - - ComputePass::FrameBeginInternal(params); - } - - void BakeAcesOutputTransformLutPass::Init() + void BakeAcesOutputTransformLutPass::InitializeInternal() { AZ_Assert(m_shaderResourceGroup != nullptr, "BakeAcesOutputTransformLutPass %s has a null shader resource group when calling Init.", GetPathName().GetCStr()); @@ -67,7 +57,6 @@ namespace AZ m_shaderInputShaperBiasIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name{ "m_shaperBias" }); m_shaderInputShaperScaleIndex = m_shaderResourceGroup->FindShaderInputConstantIndex(Name{ "m_shaperScale" }); } - m_flags.m_initialized = true; } void BakeAcesOutputTransformLutPass::SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) diff --git a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperFullScreenPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperFullScreenPass.cpp index ba83fabed3..03fcfbe71d 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperFullScreenPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperFullScreenPass.cpp @@ -34,7 +34,7 @@ namespace AZ { } - void DisplayMapperFullScreenPass::BuildAttachmentsInternal() + void DisplayMapperFullScreenPass::BuildInternal() { RPI::PassConnection inConnection; inConnection.m_localSlot = InputAttachmentName; @@ -53,9 +53,5 @@ namespace AZ m_inputReferenceAttachmentName = attachmentName; } - void DisplayMapperFullScreenPass::Init() - { - FullscreenTrianglePass::Init(); - } } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperPass.cpp index 8ae790e12c..b37c218c21 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/DisplayMapperPass.cpp @@ -46,8 +46,6 @@ namespace AZ DisplayMapperPass::DisplayMapperPass(const RPI::PassDescriptor& descriptor) : RPI::ParentPass(descriptor) { - m_flags.m_alreadyCreated = false; - AzFramework::NativeWindowHandle windowHandle = nullptr; AzFramework::WindowSystemRequestBus::BroadcastResult( windowHandle, @@ -61,8 +59,6 @@ namespace AZ { m_displayMapperConfigurationDescriptor = passData->m_config; } - - m_needToRebuildChildren = true; } DisplayMapperPass::~DisplayMapperPass() @@ -86,7 +82,7 @@ namespace AZ const Name& passName = fullscreenTrianglePass->GetName(); if (passName.GetStringView() == "CopyToSwapChain") { - fullscreenTrianglePass->Invalidate(); + fullscreenTrianglePass->QueueForInitialization(); } } } @@ -137,7 +133,7 @@ namespace AZ } } - void DisplayMapperPass::BuildAttachmentsInternal() + void DisplayMapperPass::BuildInternal() { const Name outputName = Name{ "Output" }; Name inputPass = Name{ "Parent" }; @@ -187,7 +183,21 @@ namespace AZ m_swapChainAttachmentBinding = FindAttachmentBinding(Name("SwapChainOutput")); - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); + } + + void DisplayMapperPass::InitializeInternal() + { + // Force update on bindings because children of display mapper pass have their outputs connect to + // their parent's output, which is a non-conventional and non-standard workflow. Parent outputs are + // updated after child outputs, so post-build the child outputs do not yet point to the attachments on + // the parent bindings they are connected to. Forcing this refresh sets the attachment on the child output. + for (const RPI::Ptr& child : m_children) + { + child->UpdateConnectedBindings(); + } + + RPI::ParentPass::InitializeInternal(); } void DisplayMapperPass::FrameBeginInternal(FramePrepareParams params) @@ -199,24 +209,14 @@ namespace AZ void DisplayMapperPass::FrameEndInternal() { GetDisplayMapperConfiguration(); - if (m_needToRebuildChildren) - { - ClearChildren(); - BuildGradingLutTemplate(); - CreateGradingAndAcesPasses(); - } ParentPass::FrameEndInternal(); } void DisplayMapperPass::CreateChildPassesInternal() { - if (m_needToRebuildChildren) - { - ClearChildren(); - BuildGradingLutTemplate(); - CreateGradingAndAcesPasses(); - } - ParentPass::CreateChildPassesInternal(); + ClearChildren(); + BuildGradingLutTemplate(); + CreateGradingAndAcesPasses(); } AZStd::shared_ptr CreatePassTemplateHelper( @@ -485,7 +485,6 @@ namespace AZ { AddChild(m_ldrGradingLookupTablePass); } - m_needToRebuildChildren = false; } void DisplayMapperPass::GetDisplayMapperConfiguration() @@ -513,7 +512,8 @@ namespace AZ desc.m_ldrColorGradingLut != m_displayMapperConfigurationDescriptor.m_ldrColorGradingLut || desc.m_acesParameterOverrides.m_overrideDefaults != m_displayMapperConfigurationDescriptor.m_acesParameterOverrides.m_overrideDefaults) { - m_needToRebuildChildren = true; + m_flags.m_createChildren = true; + QueueForBuildAndInitialization(); } m_displayMapperConfigurationDescriptor = desc; } @@ -527,41 +527,15 @@ namespace AZ void DisplayMapperPass::ClearChildren() { - if (m_acesOutputTransformPass) - { - RemoveChild(m_acesOutputTransformPass); - m_acesOutputTransformPass = nullptr; - } - if (m_bakeAcesOutputTransformLutPass) - { - RemoveChild(m_bakeAcesOutputTransformLutPass); - m_bakeAcesOutputTransformLutPass = nullptr; - } - if (m_acesOutputTransformLutPass) - { - RemoveChild(m_acesOutputTransformLutPass); - m_acesOutputTransformLutPass = nullptr; - } - if (m_displayMapperPassthroughPass) - { - RemoveChild(m_displayMapperPassthroughPass); - m_displayMapperPassthroughPass = nullptr; - } - if (m_displayMapperOnlyGammaCorrectionPass) - { - RemoveChild(m_displayMapperOnlyGammaCorrectionPass); - m_displayMapperOnlyGammaCorrectionPass = nullptr; - } - if (m_ldrGradingLookupTablePass) - { - RemoveChild(m_ldrGradingLookupTablePass); - m_ldrGradingLookupTablePass = nullptr; - } - if (m_outputTransformPass) - { - RemoveChild(m_outputTransformPass); - m_outputTransformPass = nullptr; - } + RemoveChildren(); + + m_acesOutputTransformPass = nullptr; + m_bakeAcesOutputTransformLutPass = nullptr; + m_acesOutputTransformLutPass = nullptr; + m_displayMapperPassthroughPass = nullptr; + m_displayMapperOnlyGammaCorrectionPass = nullptr; + m_ldrGradingLookupTablePass = nullptr; + m_outputTransformPass = nullptr; } } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/OutputTransformPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/OutputTransformPass.cpp index a6b23171a5..5937f9ee49 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/OutputTransformPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DisplayMapper/OutputTransformPass.cpp @@ -39,9 +39,9 @@ namespace AZ { } - void OutputTransformPass::Init() + void OutputTransformPass::InitializeInternal() { - DisplayMapperFullScreenPass::Init(); + DisplayMapperFullScreenPass::InitializeInternal(); AZ_Assert(m_shaderResourceGroup != nullptr, "OutputTransformPass %s has a null shader resource group when calling Init.", GetPathName().GetCStr()); diff --git a/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.cpp b/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.cpp index a29354f723..51daaac9cd 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.cpp @@ -466,19 +466,14 @@ namespace AZ // Get shader resource group { - auto perObjectSrgAsset = m_shader->FindShaderResourceGroupAsset(Name{"ObjectSrg"}); - if (!perObjectSrgAsset.GetId().IsValid()) + auto perObjectSrgLayout = m_shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Object); + if (!perObjectSrgLayout) { - AZ_Error(PassName, false, "Failed to get shader resource group asset"); - return; - } - else if (!perObjectSrgAsset.IsReady()) - { - AZ_Error(PassName, false, "Shader resource group asset is not loaded"); + AZ_Error(PassName, false, "Failed to get shader resource group layout"); return; } - m_resourceGroup = RPI::ShaderResourceGroup::Create(perObjectSrgAsset); + m_resourceGroup = RPI::ShaderResourceGroup::Create(m_shader->GetAsset(), m_shader->GetSupervariantIndex(), perObjectSrgLayout->GetName()); if (!m_resourceGroup) { AZ_Error(PassName, false, "Failed to create shader resource group"); @@ -519,13 +514,13 @@ namespace AZ io.Fonts->TexID = reinterpret_cast(m_fontAtlas.get()); } - void ImGuiPass::OnBuildAttachmentsFinishedInternal() + void ImGuiPass::InitializeInternal() { // Set output format and finalize pipeline state m_pipelineState->SetOutputFromPass(this); m_pipelineState->Finalize(); - Base::OnBuildAttachmentsFinishedInternal(); + Base::InitializeInternal(); } void ImGuiPass::SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) diff --git a/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.h b/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.h index c8be0d7ee6..f63b515536 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/ImGui/ImGuiPass.h @@ -94,7 +94,7 @@ namespace AZ explicit ImGuiPass(const RPI::PassDescriptor& descriptor); // Pass Behaviour Overrides... - void OnBuildAttachmentsFinishedInternal() override; + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; // Scope producer functions diff --git a/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreTexturePass.cpp b/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreTexturePass.cpp index 9a921205ab..724511b355 100644 --- a/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreTexturePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/LuxCore/LuxCoreTexturePass.cpp @@ -28,8 +28,6 @@ namespace AZ LuxCoreTexturePass::LuxCoreTexturePass(const RPI::PassDescriptor& descriptor) : ParentPass(descriptor) { - m_flags.m_alreadyCreated = false; - RPI::PassSystemInterface* passSystem = RPI::PassSystemInterface::Get(); // Create render target pass @@ -41,8 +39,6 @@ namespace AZ // Create readback m_readback = AZStd::make_shared(AZ::RHI::ScopeId{ Uuid::CreateRandom().ToString() }); - - CreateChildPasses(); } LuxCoreTexturePass::~LuxCoreTexturePass() @@ -61,9 +57,9 @@ namespace AZ AddChild(m_renderTargetPass); } - void LuxCoreTexturePass::BuildAttachmentsInternal() + void LuxCoreTexturePass::BuildInternal() { - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); } void LuxCoreTexturePass::FrameBeginInternal(FramePrepareParams params) diff --git a/Gems/Atom/Feature/Common/Code/Source/LuxCore/RenderTexturePass.cpp b/Gems/Atom/Feature/Common/Code/Source/LuxCore/RenderTexturePass.cpp index 0782e12278..6e0444dca4 100644 --- a/Gems/Atom/Feature/Common/Code/Source/LuxCore/RenderTexturePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/LuxCore/RenderTexturePass.cpp @@ -38,13 +38,13 @@ namespace AZ m_attachmentSize = image->GetRHIImage()->GetDescriptor().m_size; m_attachmentFormat = format; m_shaderResourceGroup->SetImage(m_textureIndex, image); - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); } - void RenderTexturePass::BuildAttachmentsInternal() + void RenderTexturePass::BuildInternal() { UpdataAttachment(); - FullscreenTrianglePass::BuildAttachmentsInternal(); + FullscreenTrianglePass::BuildInternal(); } void RenderTexturePass::FrameBeginInternal(FramePrepareParams params) diff --git a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp index 4aaa0be132..b087269089 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Mesh/MeshFeatureProcessor.cpp @@ -639,15 +639,15 @@ namespace AZ continue; } - auto& objectSrgAsset = material->GetAsset()->GetObjectSrgAsset(); + auto& objectSrgLayout = material->GetAsset()->GetObjectSrgLayout(); - if (!objectSrgAsset) + if (!objectSrgLayout) { AZ_Warning("MeshFeatureProcessor", false, "No per-object ShaderResourceGroup found."); continue; } - if (m_shaderResourceGroup && m_shaderResourceGroup->GetAsset() != objectSrgAsset) + if (m_shaderResourceGroup && m_shaderResourceGroup->GetLayout()->GetHash() != objectSrgLayout->GetHash()) { AZ_Warning("MeshFeatureProcessor", false, "All materials on a model must use the same per-object ShaderResourceGroup. Skipping."); continue; @@ -657,7 +657,8 @@ namespace AZ // in shaderResourceGroupInOut. All of the Model's draw packets will use this same instance. if (!m_shaderResourceGroup) { - m_shaderResourceGroup = RPI::ShaderResourceGroup::Create(objectSrgAsset); + auto& shaderAsset = material->GetAsset()->GetMaterialTypeAsset()->GetShaderAssetForObjectSrg(); + m_shaderResourceGroup = RPI::ShaderResourceGroup::Create(shaderAsset, RPI::DefaultSupervariantIndex, objectSrgLayout->GetName()); if (!m_shaderResourceGroup) { AZ_Warning("MeshFeatureProcessor", false, "Failed to create a new shader resource group, skipping."); @@ -775,6 +776,12 @@ namespace AZ material = materialAssignment.m_materialInstance; } + if (!material) + { + AZ_Warning("MeshFeatureProcessor", false, "No material provided for mesh. Skipping."); + continue; + } + // retrieve vertex/index buffers RPI::ModelLod::StreamBufferViewList streamBufferViews; [[maybe_unused]] bool result = modelLod->GetStreamsForMesh( diff --git a/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.cpp b/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.cpp index 1bb537ecef..42acd5c447 100644 --- a/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.cpp @@ -44,7 +44,7 @@ namespace AZ m_skinnedMeshFeatureProcessor = skinnedMeshFeatureProcessor; } - void MorphTargetComputePass::BuildAttachmentsInternal() + void MorphTargetComputePass::BuildInternal() { // The same buffer that skinning writes to is used to manage the computed vertex deltas that are passed from the // morph target pass to the skinning pass. This simplifies things by only requiring one class to manage the memory diff --git a/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.h b/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.h index 61fa485fbc..d346edd908 100644 --- a/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetComputePass.h @@ -37,7 +37,7 @@ namespace AZ void SetFeatureProcessor(SkinnedMeshFeatureProcessor* m_skinnedMeshFeatureProcessor); private: - void BuildAttachmentsInternal() override; + void BuildInternal() override; void BuildCommandListInternal(const RHI::FrameGraphExecuteContext& context) override; SkinnedMeshFeatureProcessor* m_skinnedMeshFeatureProcessor = nullptr; diff --git a/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.cpp b/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.cpp index 7b3aedd64e..4373f66bd0 100644 --- a/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/MorphTargets/MorphTargetDispatchItem.cpp @@ -103,19 +103,14 @@ namespace AZ bool MorphTargetDispatchItem::InitPerInstanceSRG() { - auto perInstanceSrgAsset = m_morphTargetShader->FindShaderResourceGroupAsset(AZ::Name{ "MorphTargetInstanceSrg" }); - if (!perInstanceSrgAsset.GetId().IsValid()) + auto perInstanceSrgLayout = m_morphTargetShader->FindShaderResourceGroupLayout(AZ::Name{ "MorphTargetInstanceSrg" }); + if (!perInstanceSrgLayout) { - AZ_Error("MorphTargetDispatchItem", false, "Failed to get shader resource group asset"); - return false; - } - else if (!perInstanceSrgAsset.IsReady()) - { - AZ_Error("MorphTargetDispatchItem", false, "Shader resource group asset is not loaded"); + AZ_Error("MorphTargetDispatchItem", false, "Failed to get shader resource group layout"); return false; } - m_instanceSrg = RPI::ShaderResourceGroup::Create(perInstanceSrgAsset); + m_instanceSrg = RPI::ShaderResourceGroup::Create(m_morphTargetShader->GetAsset(), m_morphTargetShader->GetSupervariantIndex(), perInstanceSrgLayout->GetName()); if (!m_instanceSrg) { AZ_Error("MorphTargetDispatchItem", false, "Failed to create shader resource group for morph target"); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.cpp index e0ff253301..433f9c0276 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.cpp @@ -43,14 +43,9 @@ namespace AZ ReleaseLutImage(); } - void BlendColorGradingLutsPass::FrameBeginInternal(FramePrepareParams params) + void BlendColorGradingLutsPass::InitializeInternal() { - if (!m_flags.m_initialized) - { - Init(); - } - - ComputePass::FrameBeginInternal(params); + InitializeShaderVariant(); } void BlendColorGradingLutsPass::InitializeShaderVariant() @@ -106,12 +101,6 @@ namespace AZ m_needToUpdateShaderVariant = false; } - void BlendColorGradingLutsPass::Init() - { - InitializeShaderVariant(); - m_flags.m_initialized = true; - } - void BlendColorGradingLutsPass::SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) { ComputePass::SetupFrameGraphDependencies(frameGraph); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.h index c131a3cb38..048d0069f4 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BlendColorGradingLutsPass.h @@ -56,7 +56,7 @@ namespace AZ explicit BlendColorGradingLutsPass(const RPI::PassDescriptor& descriptor); // Pass behavior overrides... - void FrameBeginInternal(FramePrepareParams params) override; + void InitializeInternal() override; // Scope producer functions... void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; @@ -66,8 +66,6 @@ namespace AZ void InitializeShaderVariant(); void UpdateCurrentShaderVariant(); - void Init(); - void AcquireLutImage(); void ReleaseLutImage(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.cpp index 1427adeb08..af95a76718 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.cpp @@ -252,10 +252,10 @@ namespace AZ } } - void BloomBlurPass::BuildAttachmentsInternal() + void BloomBlurPass::BuildInternal() { BuildChildPasses(); - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); } void BloomBlurPass::FrameBeginInternal(FramePrepareParams params) diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.h index e87d831382..4c65368506 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomBlurPass.h @@ -47,7 +47,7 @@ namespace AZ BloomBlurPass(const RPI::PassDescriptor& descriptor); // Pass behaviour overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; void GetInputInfo(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.cpp index fbb020cbf3..810353aab1 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.cpp @@ -56,10 +56,10 @@ namespace AZ m_passData = *passData; } - void BloomCompositePass::BuildAttachmentsInternal() + void BloomCompositePass::BuildInternal() { BuildChildPasses(); - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); } void BloomCompositePass::FrameBeginInternal(FramePrepareParams params) diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.h index 86d897ae7d..a19947e1d0 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomCompositePass.h @@ -44,7 +44,7 @@ namespace AZ BloomCompositePass(const RPI::PassDescriptor& descriptor); // Pass behaviour overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; void GetAttachmentInfo(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.cpp index 647177a1ce..63779beb16 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.cpp @@ -74,10 +74,10 @@ namespace AZ AddAttachmentBinding(outBinding); } - ComputePass::BuildAttachmentsInternal(); + ComputePass::BuildInternal(); } - void BloomDownsamplePass::BuildAttachmentsInternal() + void BloomDownsamplePass::BuildInternal() { BuildOutAttachmentBinding(); } diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.h index 824f703417..3eb0ac8740 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/BloomDownsamplePass.h @@ -37,7 +37,7 @@ namespace AZ BloomDownsamplePass(const RPI::PassDescriptor& descriptor); // Pass Behaviour Overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; void BuildOutAttachmentBinding(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.cpp index 4a4a8a8b76..090d87e048 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.cpp @@ -43,9 +43,9 @@ namespace AZ { } - void DepthOfFieldBokehBlurPass::Init() + void DepthOfFieldBokehBlurPass::InitializeInternal() { - FullscreenTrianglePass::Init(); + FullscreenTrianglePass::InitializeInternal(); m_sampleNumberIndex.Reset(); m_radiusMinIndex.Reset(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.h index 688138fff0..c9b2dc6be2 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldBokehBlurPass.h @@ -39,11 +39,11 @@ namespace AZ protected: // Behaviour functions override... + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; private: DepthOfFieldBokehBlurPass(const RPI::PassDescriptor& descriptor); - void Init() override; void InitializeShaderVariant(); void UpdateCurrentShaderVariant(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.cpp index 30c92963d0..bf88f8f8fb 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.cpp @@ -40,9 +40,9 @@ namespace AZ { } - void DepthOfFieldCompositePass::Init() + void DepthOfFieldCompositePass::InitializeInternal() { - FullscreenTrianglePass::Init(); + FullscreenTrianglePass::InitializeInternal(); m_backBlendFactorDivision2Index.Reset(); m_backBlendFactorDivision4Index.Reset(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.h index fe4d60e679..00afdd0b0b 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCompositePass.h @@ -37,11 +37,11 @@ namespace AZ protected: // Pass behavior overrides... + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; private: DepthOfFieldCompositePass(const RPI::PassDescriptor& descriptor); - void Init() override; void InitializeShaderVariant(); void UpdateCurrentShaderVariant(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.cpp index d64bba1957..00d5ad93c3 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.cpp @@ -52,7 +52,7 @@ namespace AZ return depth; } - void DepthOfFieldCopyFocusDepthToCpuPass::BuildAttachmentsInternal() + void DepthOfFieldCopyFocusDepthToCpuPass::BuildInternal() { SetScopeId(RHI::ScopeId(GetPathName())); } diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.h index 64301b6e0c..7e8d041e96 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldCopyFocusDepthToCpuPass.h @@ -48,7 +48,7 @@ namespace AZ void BuildCommandList(const RHI::FrameGraphExecuteContext& context) override; // Pass overrides - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; RPI::Ptr m_bufferRef; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.cpp index 3f9c09c88c..93c19e5484 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.cpp @@ -33,9 +33,9 @@ namespace AZ { } - void DepthOfFieldMaskPass::Init() + void DepthOfFieldMaskPass::InitializeInternal() { - FullscreenTrianglePass::Init(); + FullscreenTrianglePass::InitializeInternal(); m_blendFactorIndex.Reset(); m_inputResolutionInverseIndex.Reset(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.h index 09bb08a22c..7e21f87af7 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldMaskPass.h @@ -37,11 +37,11 @@ namespace AZ protected: // Pass behavior overrides... + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; private: DepthOfFieldMaskPass(const RPI::PassDescriptor& descriptor); - virtual void Init() override; // SRG binding indices... RHI::ShaderInputNameIndex m_blendFactorIndex = "m_blendFactor"; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.cpp index c355b7c8a7..6050ac2b2e 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.cpp @@ -34,18 +34,6 @@ namespace AZ DepthOfFieldReadBackFocusDepthPass::DepthOfFieldReadBackFocusDepthPass(const RPI::PassDescriptor& descriptor) : ParentPass(descriptor) { - RPI::PassSystemInterface* passSystem = RPI::PassSystemInterface::Get(); - - // Create read back pass - m_readbackPass = passSystem->CreatePass(AZ::Name("DepthOfFieldReadBackPass")); - AZ_Assert(m_readbackPass, "DepthOfFieldReadBackFocusDepthPass : read back pass is invalid"); - - AddChild(m_readbackPass); - - // Find GetDepth pass on template - auto pass = FindChildPass(Name("DepthOfFieldWriteFocusDepthFromGpu")); - m_getDepthPass = static_cast(pass.get()); - // Create buffer for read back focus depth. We append static counter to avoid name conflicts. RPI::CommonBufferDescriptor desc; desc.m_bufferName = "DepthOfFieldReadBackAutoFocusDepthBuffer"; @@ -55,9 +43,6 @@ namespace AZ desc.m_bufferData = nullptr; desc.m_elementFormat = RHI::Format::R32_FLOAT; m_buffer = RPI::BufferSystemInterface::Get()->CreateBufferFromCommonPool(desc); - - m_getDepthPass->SetBufferRef(m_buffer); - m_readbackPass->SetBufferRef(m_buffer); } DepthOfFieldReadBackFocusDepthPass::~DepthOfFieldReadBackFocusDepthPass() @@ -85,6 +70,24 @@ namespace AZ } } + void DepthOfFieldReadBackFocusDepthPass::CreateChildPassesInternal() + { + RPI::PassSystemInterface* passSystem = RPI::PassSystemInterface::Get(); + + // Create read back pass + m_readbackPass = passSystem->CreatePass(AZ::Name("DepthOfFieldReadBackPass")); + AZ_Assert(m_readbackPass, "DepthOfFieldReadBackFocusDepthPass : read back pass is invalid"); + + AddChild(m_readbackPass); + + // Find GetDepth pass on template + auto pass = FindChildPass(Name("DepthOfFieldWriteFocusDepthFromGpu")); + m_getDepthPass = static_cast(pass.get()); + + m_getDepthPass->SetBufferRef(m_buffer); + m_readbackPass->SetBufferRef(m_buffer); + } + void DepthOfFieldReadBackFocusDepthPass::FrameBeginInternal(FramePrepareParams params) { RPI::Scene* scene = GetScene(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.h index 75842fb67a..db29576d22 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldReadBackFocusDepthPass.h @@ -43,6 +43,7 @@ namespace AZ protected: // Pass behavior overrides... + void CreateChildPassesInternal() override; void FrameBeginInternal(FramePrepareParams params) override; private: diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.cpp index e7ac891198..4aaf936426 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.cpp @@ -62,9 +62,9 @@ namespace AZ m_bufferRef = bufferRef; } - void DepthOfFieldWriteFocusDepthFromGpuPass::BuildAttachmentsInternal() + void DepthOfFieldWriteFocusDepthFromGpuPass::BuildInternal() { - AZ_Assert(m_bufferRef != nullptr, "%s has a null buffer when calling BuildAttachmentsInternal.", GetPathName().GetCStr()); + AZ_Assert(m_bufferRef != nullptr, "%s has a null buffer when calling BuildInternal.", GetPathName().GetCStr()); AttachBufferToSlot(Name("DofDepthInputOutput"), m_bufferRef); } diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.h index 592ab64c01..881ef9df94 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/DepthOfFieldWriteFocusDepthFromGpuPass.h @@ -51,7 +51,7 @@ namespace AZ void CompileResources(const RHI::FrameGraphCompileContext& context) override; // Pass overrides - void BuildAttachmentsInternal() override; + void BuildInternal() override; }; } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp index bf293fd3d2..e131f7ad22 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.cpp @@ -60,7 +60,7 @@ namespace AZ m_buffer = RPI::BufferSystemInterface::Get()->CreateBufferFromCommonPool(desc); } - void EyeAdaptationPass::BuildAttachmentsInternal() + void EyeAdaptationPass::BuildInternal() { if (!m_buffer) { diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h index cef168a122..d53569a9f9 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/EyeAdaptationPass.h @@ -58,7 +58,7 @@ namespace AZ float m_exposureValue = 1.0f; }; - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.cpp index aff01d5bf1..45d3e0c39a 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.cpp @@ -48,9 +48,9 @@ namespace AZ } } - void LookModificationCompositePass::Init() + void LookModificationCompositePass::InitializeInternal() { - FullscreenTrianglePass::Init(); + FullscreenTrianglePass::InitializeInternal(); m_shaderColorGradingLutImageIndex.Reset(); m_shaderColorGradingShaperTypeIndex.Reset(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.h index fb6c968436..8292330a2d 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationCompositePass.h @@ -60,9 +60,9 @@ namespace AZ protected: LookModificationCompositePass(const RPI::PassDescriptor& descriptor); - void Init() override; //! Pass behavior overrides + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) final; private: diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.cpp index 98c842042b..9f792370fc 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.cpp @@ -36,10 +36,10 @@ namespace AZ &AzFramework::WindowSystemRequestBus::Events::GetDefaultWindowHandle); } - void LookModificationPass::BuildAttachmentsInternal() + void LookModificationPass::BuildInternal() { m_swapChainAttachmentBinding = FindAttachmentBinding(Name("SwapChainOutput")); - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); } void LookModificationPass::FrameBeginInternal([[maybe_unused]] FramePrepareParams params) diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.h index 5102015e82..8203530918 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LookModificationTransformPass.h @@ -52,7 +52,7 @@ namespace AZ //! Pass overrides ... void FrameBeginInternal(FramePrepareParams params) override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; private: const RPI::PassAttachmentBinding* m_swapChainAttachmentBinding = nullptr; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.cpp index 715ebf2945..55c64c1f33 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.cpp @@ -81,7 +81,7 @@ namespace AZ return colorBuffer->m_descriptor.m_image.m_size; } - void LuminanceHistogramGeneratorPass::BuildAttachmentsInternal() + void LuminanceHistogramGeneratorPass::BuildInternal() { CreateHistogramBuffer(); AttachHistogramBuffer(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.h index ee8a10fe16..9691daab6f 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/LuminanceHistogramGeneratorPass.h @@ -42,7 +42,7 @@ namespace AZ protected: LuminanceHistogramGeneratorPass(const RPI::PassDescriptor& descriptor); - virtual void BuildAttachmentsInternal() override; + virtual void BuildInternal() override; void CreateHistogramBuffer(); void AttachHistogramBuffer(); AZ::RHI::Size GetColorBufferResolution(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.cpp index d2424e24fd..f95637e824 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.cpp @@ -43,9 +43,9 @@ namespace AZ { } - void SMAABasePass::Init() + void SMAABasePass::InitializeInternal() { - FullscreenTrianglePass::Init(); + FullscreenTrianglePass::InitializeInternal(); AZ_Assert(m_shaderResourceGroup != nullptr, "SMAABasePass %s has a null shader resource group when calling Init.", GetPathName().GetCStr()); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.h index 0484b7d430..3a18d587b5 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABasePass.h @@ -41,9 +41,12 @@ namespace AZ protected: SMAABasePass(const RPI::PassDescriptor& descriptor); - void Init() override; + // Pass behavior overrides... + void InitializeInternal() override; + // An interface to update pass srg. virtual void UpdateSRG() = 0; + // An interface to get current shader variation option. virtual void GetCurrentShaderOption(AZ::RPI::ShaderOptionGroup& shaderOption) const = 0; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.cpp index 39d9e51c86..7776bc3904 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.cpp @@ -94,9 +94,9 @@ namespace AZ } } - void SMAABlendingWeightCalculationPass::Init() + void SMAABlendingWeightCalculationPass::InitializeInternal() { - SMAABasePass::Init(); + SMAABasePass::InitializeInternal(); AZ_Assert(m_shaderResourceGroup != nullptr, "SMAABlendingWeightCalculationPass %s has a null shader resource group when calling Init.", GetPathName().GetCStr()); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.h index b968a9c2d9..2f589a7ae6 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAABlendingWeightCalculationPass.h @@ -43,7 +43,9 @@ namespace AZ private: SMAABlendingWeightCalculationPass(const RPI::PassDescriptor& descriptor); - void Init() override; + + // Pass behavior overrides... + void InitializeInternal() override; // SMAABasePass functions... void UpdateSRG() override; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.cpp index 68485f3280..bb8069d0de 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.cpp @@ -48,9 +48,9 @@ namespace AZ { } - void SMAAEdgeDetectionPass::Init() + void SMAAEdgeDetectionPass::InitializeInternal() { - SMAABasePass::Init(); + SMAABasePass::InitializeInternal(); m_renderTargetMetricsShaderInputIndex.Reset(); m_chromaThresholdShaderInputIndex.Reset(); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.h index f8302c55ca..f2c85297b6 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAAEdgeDetectionPass.h @@ -45,7 +45,9 @@ namespace AZ private: SMAAEdgeDetectionPass(const RPI::PassDescriptor& descriptor); - void Init() override; + + // Pass behavior overrides + void InitializeInternal() override; // SMAABasePass functions... void UpdateSRG() override; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.cpp index 777e4d7d95..b2307de714 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.cpp @@ -47,9 +47,9 @@ namespace AZ { } - void SMAANeighborhoodBlendingPass::Init() + void SMAANeighborhoodBlendingPass::InitializeInternal() { - SMAABasePass::Init(); + SMAABasePass::InitializeInternal(); m_renderTargetMetricsShaderInputIndex.Reset(); } diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.h index 86386a0545..f54ff30575 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SMAANeighborhoodBlendingPass.h @@ -37,7 +37,9 @@ namespace AZ private: SMAANeighborhoodBlendingPass(const RPI::PassDescriptor& descriptor); - void Init() override; + + // Pass behavior overrides + void InitializeInternal() override; // SMAABasePass functions... void UpdateSRG() override; diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.cpp index 68472115ce..8954584886 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.cpp @@ -41,9 +41,9 @@ namespace AZ return ParentPass::IsEnabled(); } - void SsaoParentPass::OnBuildAttachmentsFinishedInternal() + void SsaoParentPass::InitializeInternal() { - ParentPass::OnBuildAttachmentsFinishedInternal(); + ParentPass::InitializeInternal(); m_blurParentPass = FindChildPass(Name("SsaoBlur"))->AsParent(); AZ_Assert(m_blurParentPass, "[SsaoParentPass] Could not retrieve parent blur pass."); diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.h index 9abd04e306..9fc5448f65 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/SsaoPasses.h @@ -36,7 +36,7 @@ namespace AZ protected: // Behavior functions override... - void OnBuildAttachmentsFinishedInternal() override; + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; private: diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.cpp b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.cpp index 9f885ede70..38e03ab156 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.cpp @@ -108,7 +108,7 @@ namespace AZ::Render Base::ResetInternal(); } - void TaaPass::BuildAttachmentsInternal() + void TaaPass::BuildInternal() { m_accumulationAttachments[0] = FindAttachment(Name("Accumulation1")); m_accumulationAttachments[1] = FindAttachment(Name("Accumulation2")); @@ -143,7 +143,7 @@ namespace AZ::Render m_outputColorBinding->SetAttachment(m_accumulationAttachments[1]); } - Base::BuildAttachmentsInternal(); + Base::BuildInternal(); } void TaaPass::UpdateAttachmentImage(RPI::Ptr& attachment) diff --git a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.h b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.h index 6133720691..e8f4796e7b 100644 --- a/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/PostProcessing/TaaPass.h @@ -63,7 +63,7 @@ namespace AZ::Render // Pass behavior overrides... void FrameBeginInternal(FramePrepareParams params) override; void ResetInternal() override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; void UpdateAttachmentImage(RPI::Ptr& attachment); diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.cpp b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.cpp index 92cd41b4e8..f1fcd2de35 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.cpp @@ -42,7 +42,7 @@ namespace AZ } } - void RayTracingAccelerationStructurePass::BuildAttachmentsInternal() + void RayTracingAccelerationStructurePass::BuildInternal() { SetScopeId(RHI::ScopeId(GetPathName())); } diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.h b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.h index 6d90d752e3..127669301e 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.h +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingAccelerationStructurePass.h @@ -44,7 +44,7 @@ namespace AZ void BuildCommandList(const RHI::FrameGraphExecuteContext& context) override; // Pass overrides - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; // buffer view descriptor for the TLAS diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp index 2db396e36d..3023e06b50 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp @@ -65,19 +65,22 @@ namespace AZ // create the TLAS object m_tlas = AZ::RHI::RayTracingTlas::CreateRHIRayTracingTlas(); - // load the RayTracingSceneSrg asset - Data::Asset rayTracingSceneSrgAsset = - RPI::AssetUtils::LoadAssetByProductPath("shaderlib/atom/features/raytracing/raytracingscenesrg_raytracingscenesrg.azsrg", RPI::AssetUtils::TraceLevel::Error); - AZ_Assert(rayTracingSceneSrgAsset.IsReady(), "Failed to load RayTracingSceneSrg asset"); + // load the RayTracingSrg asset asset + m_rayTracingSrgAsset = RPI::AssetUtils::LoadCriticalAsset("shaderlib/atom/features/rayTracing/raytracingsrgs.azshader"); + if (!m_rayTracingSrgAsset.IsReady()) + { + AZ_Assert(false, "Failed to load RayTracingSrg asset"); + return; + } - m_rayTracingSceneSrg = RPI::ShaderResourceGroup::Create(rayTracingSceneSrgAsset); + // create the RayTracingSceneSrg + m_rayTracingSceneSrg = RPI::ShaderResourceGroup::Create(m_rayTracingSrgAsset, RPI::DefaultSupervariantIndex, Name("RayTracingSceneSrg")); + AZ_Assert(m_rayTracingSceneSrg, "Failed to create RayTracingSceneSrg"); - // load the RayTracingMaterialSrg asset - Data::Asset rayTracingMaterialSrgAsset = - RPI::AssetUtils::LoadAssetByProductPath("shaderlib/atom/features/raytracing/raytracingmaterialsrg_raytracingmaterialsrg.azsrg", RPI::AssetUtils::TraceLevel::Error); - AZ_Assert(rayTracingMaterialSrgAsset.IsReady(), "Failed to load RayTracingMaterialSrg asset"); - - m_rayTracingMaterialSrg = RPI::ShaderResourceGroup::Create(rayTracingMaterialSrgAsset); + // create the RayTracingMaterialSrg + const AZ::Name rayTracingMaterialSrgName("RayTracingMaterialSrg"); + m_rayTracingMaterialSrg = RPI::ShaderResourceGroup::Create(m_rayTracingSrgAsset, RPI::DefaultSupervariantIndex, Name("RayTracingMaterialSrg")); + AZ_Assert(m_rayTracingMaterialSrg, "Failed to create RayTracingMaterialSrg"); } void RayTracingFeatureProcessor::SetMesh(const ObjectId objectId, const SubMeshVector& subMeshes) diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h index 90a9383ae6..66f068e147 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.h @@ -205,10 +205,9 @@ namespace AZ // ray tracing acceleration structure (TLAS) RHI::Ptr m_tlas; - // ray tracing scene Srg + // RayTracingScene and RayTracingMaterial asset and Srgs + Data::Asset m_rayTracingSrgAsset; Data::Instance m_rayTracingSceneSrg; - - // ray tracing material Srg Data::Instance m_rayTracingMaterialSrg; // current revision number of ray tracing data diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.cpp b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.cpp index 988870cc0e..158cf795ad 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingPass.cpp @@ -112,20 +112,19 @@ namespace AZ AZ_Assert(m_globalPipelineState, "Failed to acquire ray tracing global pipeline state"); // create global srg - Data::Asset globalSrgAsset = m_rayGenerationShader->FindShaderResourceGroupAsset(RayTracingGlobalSrgBindingSlot); - AZ_Error("PassSystem", globalSrgAsset.GetId().IsValid(), "RayTracingPass [%s] Failed to find RayTracingGlobalSrg asset", GetPathName().GetCStr()); - AZ_Error("PassSystem", globalSrgAsset.IsReady(), "RayTracingPass [%s] asset is not loaded for shader", GetPathName().GetCStr()); + const auto& globalSrgLayout = m_rayGenerationShader->FindShaderResourceGroupLayout(RayTracingGlobalSrgBindingSlot); + AZ_Error("PassSystem", globalSrgLayout != nullptr, "RayTracingPass [%s] Failed to find RayTracingGlobalSrg layout", GetPathName().GetCStr()); - m_shaderResourceGroup = RPI::ShaderResourceGroup::Create(globalSrgAsset); + m_shaderResourceGroup = RPI::ShaderResourceGroup::Create( m_rayGenerationShader->GetAsset(), m_rayGenerationShader->GetSupervariantIndex(), globalSrgLayout->GetName()); AZ_Assert(m_shaderResourceGroup, "RayTracingPass [%s]: Failed to create RayTracingGlobalSrg", GetPathName().GetCStr()); RPI::PassUtils::BindDataMappingsToSrg(m_passDescriptor, m_shaderResourceGroup.get()); // check to see if the shader requires the View and RayTracingMaterial Srgs - Data::Asset viewSrgAsset = m_rayGenerationShader->FindShaderResourceGroupAsset(RPI::SrgBindingSlot::View); - m_requiresViewSrg = viewSrgAsset.GetId().IsValid(); + const auto& viewSrgLayout = m_rayGenerationShader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::View); + m_requiresViewSrg = (viewSrgLayout != nullptr); - Data::Asset rayTracingMaterialSrgAsset = m_rayGenerationShader->FindShaderResourceGroupAsset(RayTracingMaterialSrgBindingSlot); - m_requiresRayTracingMaterialSrg = rayTracingMaterialSrgAsset.GetId().IsValid(); + const auto& rayTracingMaterialSrgLayout = m_rayGenerationShader->FindShaderResourceGroupLayout(RayTracingMaterialSrgBindingSlot); + m_requiresRayTracingMaterialSrg = (rayTracingMaterialSrgLayout != nullptr); // build the ray tracing pipeline state descriptor RHI::RayTracingPipelineStateDescriptor descriptor; diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp index 3e9e316a5a..ba7fd38428 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.cpp @@ -82,16 +82,28 @@ namespace AZ Data::AssetBus::MultiHandler::BusConnect(m_visualizationMaterialAsset.GetId()); // reflection render Srgs - m_stencilSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData->m_stencilSrgAsset); + m_stencilSrg = RPI::ShaderResourceGroup::Create( + m_reflectionRenderData->m_stencilShader->GetAsset(), + m_reflectionRenderData->m_stencilShader->GetSupervariantIndex(), + m_reflectionRenderData->m_stencilSrgLayout->GetName()); AZ_Error("ReflectionProbeFeatureProcessor", m_stencilSrg.get(), "Failed to create stencil shader resource group"); - m_blendWeightSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData->m_blendWeightSrgAsset); + m_blendWeightSrg = RPI::ShaderResourceGroup::Create( + m_reflectionRenderData->m_blendWeightShader->GetAsset(), + m_reflectionRenderData->m_blendWeightShader->GetSupervariantIndex(), + m_reflectionRenderData->m_blendWeightSrgLayout->GetName()); AZ_Error("ReflectionProbeFeatureProcessor", m_blendWeightSrg.get(), "Failed to create blend weight shader resource group"); - m_renderOuterSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData->m_renderOuterSrgAsset); + m_renderOuterSrg = RPI::ShaderResourceGroup::Create( + m_reflectionRenderData->m_renderOuterShader->GetAsset(), + m_reflectionRenderData->m_renderOuterShader->GetSupervariantIndex(), + m_reflectionRenderData->m_renderOuterSrgLayout->GetName()); AZ_Error("ReflectionProbeFeatureProcessor", m_renderOuterSrg.get(), "Failed to create render outer reflection shader resource group"); - m_renderInnerSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData->m_renderInnerSrgAsset); + m_renderInnerSrg = RPI::ShaderResourceGroup::Create( + m_reflectionRenderData->m_renderInnerShader->GetAsset(), + m_reflectionRenderData->m_renderInnerShader->GetSupervariantIndex(), + m_reflectionRenderData->m_renderInnerSrgLayout->GetName()); AZ_Error("ReflectionProbeFeatureProcessor", m_renderInnerSrg.get(), "Failed to create render inner reflection shader resource group"); // setup culling diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h index f062e0a42f..35ac7d0838 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbe.h @@ -21,7 +21,6 @@ #include #include #include -#include #include namespace AZ @@ -43,10 +42,17 @@ namespace AZ RPI::Ptr m_renderOuterPipelineState; RPI::Ptr m_renderInnerPipelineState; - Data::Asset m_stencilSrgAsset; - Data::Asset m_blendWeightSrgAsset; - Data::Asset m_renderOuterSrgAsset; - Data::Asset m_renderInnerSrgAsset; + Data::Instance m_stencilShader; + RHI::Ptr m_stencilSrgLayout; + + Data::Instance m_blendWeightShader; + RHI::Ptr m_blendWeightSrgLayout; + + Data::Instance m_renderOuterShader; + RHI::Ptr m_renderOuterSrgLayout; + + Data::Instance m_renderInnerShader; + RHI::Ptr m_renderInnerSrgLayout; RHI::DrawListTag m_stencilDrawListTag; RHI::DrawListTag m_blendWeightDrawListTag; diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp index 740069fc6b..7e2b61e261 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionProbe/ReflectionProbeFeatureProcessor.cpp @@ -59,29 +59,36 @@ namespace AZ // load shaders for stencil, blend weight, and render passes LoadShader("shaders/reflections/reflectionprobestencil.azshader", m_reflectionRenderData.m_stencilPipelineState, - m_reflectionRenderData.m_stencilSrgAsset, + m_reflectionRenderData.m_stencilShader, + m_reflectionRenderData.m_stencilSrgLayout, m_reflectionRenderData.m_stencilDrawListTag); LoadShader("shaders/reflections/reflectionprobeblendweight.azshader", m_reflectionRenderData.m_blendWeightPipelineState, - m_reflectionRenderData.m_blendWeightSrgAsset, + m_reflectionRenderData.m_blendWeightShader, + m_reflectionRenderData.m_blendWeightSrgLayout, m_reflectionRenderData.m_blendWeightDrawListTag); LoadShader("shaders/reflections/reflectionproberenderouter.azshader", m_reflectionRenderData.m_renderOuterPipelineState, - m_reflectionRenderData.m_renderOuterSrgAsset, + m_reflectionRenderData.m_renderOuterShader, + m_reflectionRenderData.m_renderOuterSrgLayout, m_reflectionRenderData.m_renderOuterDrawListTag); LoadShader("shaders/reflections/reflectionproberenderinner.azshader", m_reflectionRenderData.m_renderInnerPipelineState, - m_reflectionRenderData.m_renderInnerSrgAsset, + m_reflectionRenderData.m_renderInnerShader, + m_reflectionRenderData.m_renderInnerSrgLayout, m_reflectionRenderData.m_renderInnerDrawListTag); // create ShaderResourceGroups here so we can get the layout and cache the indices // Note: the SRGs are not needed beyond this method since each probe creates its own SRGs, we are just interested in the indices // cache probe stencil shader indices - Data::Instance stencilSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData.m_stencilSrgAsset); + Data::Instance stencilSrg = RPI::ShaderResourceGroup::Create( + m_reflectionRenderData.m_stencilShader->GetAsset(), + m_reflectionRenderData.m_stencilShader->GetSupervariantIndex(), + m_reflectionRenderData.m_stencilSrgLayout->GetName()); AZ_Error("ReflectionProbeFeatureProcessor", stencilSrg.get(), "Failed to create stencil back face shader resource group"); const RHI::ShaderResourceGroupLayout* stencilSrgLayout = stencilSrg->GetLayout(); @@ -91,7 +98,10 @@ namespace AZ // cache probe render shader indices // Note: the outer and inner render shaders use the same Srg - Data::Instance renderReflectionSrg = RPI::ShaderResourceGroup::Create(m_reflectionRenderData.m_renderOuterSrgAsset); + Data::Instance renderReflectionSrg = RPI::ShaderResourceGroup::Create( + m_reflectionRenderData.m_renderOuterShader->GetAsset(), + m_reflectionRenderData.m_renderOuterShader->GetSupervariantIndex(), + m_reflectionRenderData.m_renderOuterSrgLayout->GetName()); AZ_Error("ReflectionProbeFeatureProcessor", renderReflectionSrg.get(), "Failed to create render reflection shader resource group"); const RHI::ShaderResourceGroupLayout* renderReflectionSrgLayout = renderReflectionSrg->GetLayout(); @@ -472,11 +482,12 @@ namespace AZ void ReflectionProbeFeatureProcessor::LoadShader( const char* filePath, RPI::Ptr& pipelineState, - Data::Asset& srgAsset, + Data::Instance& shader, + RHI::Ptr& srgLayout, RHI::DrawListTag& drawListTag) { // load shader - Data::Instance shader = RPI::LoadShader(filePath); + shader = RPI::LoadShader(filePath); AZ_Error("ReflectionProbeFeatureProcessor", shader, "Failed to find asset for shader [%s]", filePath); // store drawlist tag @@ -490,9 +501,8 @@ namespace AZ pipelineState->Finalize(); // load object shader resource group - srgAsset = shader->FindShaderResourceGroupAsset(Name{ "ObjectSrg" }); - AZ_Error("ReflectionProbeFeatureProcessor", srgAsset.GetId().IsValid(), "Failed to find ObjectSrg asset for shader [%s]", filePath); - AZ_Error("ReflectionProbeFeatureProcessor", srgAsset.IsReady(), "ObjectSrg asset is not loaded for shader [%s]", filePath); + srgLayout = shader->FindShaderResourceGroupLayout(RPI::SrgBindingSlot::Object); + AZ_Error("ReflectionProbeFeatureProcessor", srgLayout != nullptr, "Failed to find ObjectSrg layout from shader [%s]", filePath); } void ReflectionProbeFeatureProcessor::OnRenderPipelinePassesChanged(RPI::RenderPipeline* renderPipeline) diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp index 5137b66bf9..9a9064bdf7 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.cpp @@ -30,7 +30,7 @@ namespace AZ { } - void ReflectionCopyFrameBufferPass::BuildAttachmentsInternal() + void ReflectionCopyFrameBufferPass::BuildInternal() { RPI::PassHierarchyFilter passFilter(AZ::Name("ReflectionScreenSpaceBlurPass")); const AZStd::vector& passes = RPI::PassSystemInterface::Get()->FindPasses(passFilter); @@ -43,7 +43,7 @@ namespace AZ AttachImageToSlot(outputBinding.m_name, frameBufferAttachment); } - FullscreenTrianglePass::BuildAttachmentsInternal(); + FullscreenTrianglePass::BuildInternal(); } } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.h index 2a2fecea40..f0b8c80d72 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionCopyFrameBufferPass.h @@ -37,7 +37,7 @@ namespace AZ explicit ReflectionCopyFrameBufferPass(const RPI::PassDescriptor& descriptor); // Pass Overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; }; } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp index 883686ac5b..631ff803dd 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.cpp @@ -47,7 +47,7 @@ namespace AZ RemoveChildren(); } - void ReflectionScreenSpaceBlurPass::CreateChildPasses(uint32_t numBlurMips) + void ReflectionScreenSpaceBlurPass::CreateChildPassesInternal() { RPI::PassSystemInterface* passSystem = RPI::PassSystemInterface::Get(); @@ -83,7 +83,7 @@ namespace AZ horizontalBlurChildDesc.m_passTemplate = blurHorizontalPassTemplate; // add child passes to perform the vertical and horizontal Gaussian blur for each roughness mip level - for (uint32_t mip = 0; mip < numBlurMips; ++mip) + for (uint32_t mip = 0; mip < m_numBlurMips; ++mip) { // create Vertical blur child passes { @@ -113,9 +113,10 @@ namespace AZ } } - void ReflectionScreenSpaceBlurPass::BuildAttachmentsInternal() + void ReflectionScreenSpaceBlurPass::BuildInternal() { RemoveChildren(); + m_flags.m_createChildren = true; Data::Instance pool = RPI::ImageSystemInterface::Get()->GetSystemAttachmentPool(); @@ -163,12 +164,11 @@ namespace AZ m_ownedAttachments.push_back(transientPassAttachment); } - // create child passes, one vertical and one horizontal blur per mip level - CreateChildPasses(mipLevels - 1); + m_numBlurMips = mipLevels - 1; - // call ParentPass::BuildAttachmentsInternal() first to configure the slots and auto-add the empty bindings, + // call ParentPass::BuildInternal() first to configure the slots and auto-add the empty bindings, // then we will assign attachments to the bindings - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); // setup attachment bindings on vertical blur child passes uint32_t attachmentIndex = 0; diff --git a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h index 53f4026aef..4a2ccce1d4 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h @@ -40,16 +40,17 @@ namespace AZ private: explicit ReflectionScreenSpaceBlurPass(const RPI::PassDescriptor& descriptor); - void CreateChildPasses(uint32_t numBlurMips); + void CreateChildPassesInternal() override; // Pass Overrides... void ResetInternal() override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; AZStd::vector> m_verticalBlurChildPasses; AZStd::vector> m_horizontalBlurChildPasses; Data::Instance m_frameBufferImageAttachment; + uint32_t m_numBlurMips = 0; }; } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.cpp b/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.cpp index 477040b74a..70e17a28d3 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.cpp @@ -46,9 +46,9 @@ namespace AZ } - void DeferredFogPass::Init() + void DeferredFogPass::InitializeInternal() { - FullscreenTrianglePass::Init(); + FullscreenTrianglePass::InitializeInternal(); // The following will ensure that in the case of data driven pass, the settings will get // updated by the pass enable state. diff --git a/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.h b/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.h index e2740850de..78b7d25bff 100644 --- a/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/ScreenSpace/DeferredFogPass.h @@ -43,13 +43,11 @@ namespace AZ { AZ_RPI_PASS(DeferredFogPass); - public: AZ_RTTI(DeferredFogPass, "{0406C8AB-E95D-43A7-AF53-BDEE22D36746}", RPI::FullscreenTrianglePass); AZ_CLASS_ALLOCATOR(DeferredFogPass, SystemAllocator, 0); ~DeferredFogPass() = default; - void Init() override; static RPI::Ptr Create(const RPI::PassDescriptor& descriptor); @@ -57,12 +55,16 @@ namespace AZ virtual bool IsEnabled() const override; - void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; - void CompileResources(const RHI::FrameGraphCompileContext& context) override; - protected: DeferredFogPass(const RPI::PassDescriptor& descriptor); + // Pass behavior overrides... + void InitializeInternal() override; + + // Scope producer functions... + void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; + void CompileResources(const RHI::FrameGraphCompileContext& context) override; + //! Set the binding indices of all members of the SRG void SetSrgBindIndices(); diff --git a/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp index 216a126953..a2d1491cad 100644 --- a/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/Shadows/ProjectedShadowFeatureProcessor.cpp @@ -38,7 +38,7 @@ namespace AZ::Render void ProjectedShadowFeatureProcessor::Activate() { - const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgAsset()->GetLayout(); + const RHI::ShaderResourceGroupLayout* viewSrgLayout = RPI::RPISystemInterface::Get()->GetViewSrgLayout().get(); GpuBufferHandler::Descriptor desc; @@ -526,7 +526,7 @@ namespace AZ::Render for (EsmShadowmapsPass* esmPass : m_esmShadowmapsPasses) { - esmPass->QueueForBuildAttachments(); + esmPass->QueueForBuildAndInitialization(); } for (ProjectedShadowmapsPass* shadowPass : m_projectedShadowmapsPasses) diff --git a/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.cpp b/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.cpp index 647a87a788..4b66c1d910 100644 --- a/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/SkinnedMesh/SkinnedMeshDispatchItem.cpp @@ -81,19 +81,14 @@ namespace AZ RHI::PipelineStateDescriptorForDispatch pipelineStateDescriptor; shaderVariant.ConfigurePipelineState(pipelineStateDescriptor); - auto perInstanceSrgAsset = m_skinningShader->FindShaderResourceGroupAsset(AZ::Name{ "InstanceSrg" }); - if (!perInstanceSrgAsset.GetId().IsValid()) + auto perInstanceSrgLayout = m_skinningShader->FindShaderResourceGroupLayout(AZ::Name{ "InstanceSrg" }); + if (!perInstanceSrgLayout) { - AZ_Error("SkinnedMeshDispatchItem", false, "Failed to get shader resource group asset"); - return false; - } - else if (!perInstanceSrgAsset.IsReady()) - { - AZ_Error("SkinnedMeshDispatchItem", false, "Shader resource group asset is not loaded"); + AZ_Error("SkinnedMeshDispatchItem", false, "Failed to get shader resource group layout"); return false; } - m_instanceSrg = RPI::ShaderResourceGroup::Create(perInstanceSrgAsset); + m_instanceSrg = RPI::ShaderResourceGroup::Create(m_skinningShader->GetAsset(), m_skinningShader->GetSupervariantIndex(), perInstanceSrgLayout->GetName()); if (!m_instanceSrg) { AZ_Error("SkinnedMeshDispatchItem", false, "Failed to create shader resource group for skinned mesh"); diff --git a/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/ShaderResourceGroupLayout.h b/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/ShaderResourceGroupLayout.h index fd14cadde8..d7f79c209e 100644 --- a/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/ShaderResourceGroupLayout.h +++ b/Gems/Atom/RHI/Code/Include/Atom/RHI.Reflect/ShaderResourceGroupLayout.h @@ -78,6 +78,14 @@ namespace AZ void SetName(const Name& name) { m_name = name; } const Name& GetName() const { return m_name; } + //! This string will be used at runtime for both ShaderResourceGroup and ShaderResourceGroupPool to + //! create a unique InstanceId to avoid redundant copies in memory. + const AZStd::string& GetUniqueId() const { return m_uniqueId; } + + //! The Set function as described above. + //! It is usually the Source azsl/azsli/srgi file where this SRG comes from. + void SetUniqueId(const AZStd::string& uniqueId) { m_uniqueId = uniqueId; } + /** * Designates this SRG as ShaderVariantKey fallback by providing the generated * shader constant name and its length in bits. @@ -277,6 +285,9 @@ namespace AZ //! Name of the ShaderResourceGroup as specified in the original *.azsl/*.azsli file. Name m_name; + //! Usually the AZSL file of origin/definition. + AZStd::string m_uniqueId; + AZStd::vector m_staticSamplers; AZStd::vector m_inputsForBuffers; @@ -319,5 +330,8 @@ namespace AZ /// The computed hash value. HashValue64 m_hash = HashValue64{ 0 }; }; + + // Suitable for functions that return a null const RHI::Ptr&. + static const RHI::Ptr NullSrgLayout; } } diff --git a/Gems/Atom/RHI/Code/Source/RHI.Reflect/ShaderResourceGroupLayout.cpp b/Gems/Atom/RHI/Code/Source/RHI.Reflect/ShaderResourceGroupLayout.cpp index 2c552d7c56..cbab90e166 100644 --- a/Gems/Atom/RHI/Code/Source/RHI.Reflect/ShaderResourceGroupLayout.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI.Reflect/ShaderResourceGroupLayout.cpp @@ -22,8 +22,9 @@ namespace AZ if (SerializeContext* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(7) + ->Version(8) // ATOM-15472 ->Field("m_name", &ShaderResourceGroupLayout::m_name) + ->Field("m_azslFileOfOrigin", &ShaderResourceGroupLayout::m_uniqueId) ->Field("m_staticSamplers", &ShaderResourceGroupLayout::m_staticSamplers) ->Field("m_inputsForBuffers", &ShaderResourceGroupLayout::m_inputsForBuffers) ->Field("m_inputsForImages", &ShaderResourceGroupLayout::m_inputsForImages) @@ -249,9 +250,9 @@ namespace AZ bool ShaderResourceGroupLayout::Finalize() { - if (!ValidateFinalizeState(ValidateFinalizeStateExpect::NotFinalized)) + if (IsFinalized()) { - return false; + return true; } if (m_bindingSlot.IsNull()) diff --git a/Gems/Atom/RPI/Assets/Shader/ImagePreview.azsl b/Gems/Atom/RPI/Assets/Shader/ImagePreview.azsl index d300216fd6..e67f2a7b04 100644 --- a/Gems/Atom/RPI/Assets/Shader/ImagePreview.azsl +++ b/Gems/Atom/RPI/Assets/Shader/ImagePreview.azsl @@ -12,7 +12,7 @@ #include -ShaderResourceGroup PassSrg : SRG_PerDraw +ShaderResourceGroup PassSrg : SRG_PerPass_WithFallback { Texture2D m_image; Texture2DMS m_msImage; diff --git a/Gems/Atom/RPI/Assets/Shader/SceneAndViewSrgs.azsl b/Gems/Atom/RPI/Assets/Shader/SceneAndViewSrgs.azsl new file mode 100644 index 0000000000..d3084eca94 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Shader/SceneAndViewSrgs.azsl @@ -0,0 +1,19 @@ +/* +* 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. +* +*/ + +// This shader is not used for rendering. +// The only purpose of this shader is to have a shader asset that can be used +// at runtime to find the SceneSrg & ViewSrg layouts. + +#include +#include +#include diff --git a/Gems/Atom/RPI/Assets/Shader/SceneAndViewSrgs.shader b/Gems/Atom/RPI/Assets/Shader/SceneAndViewSrgs.shader new file mode 100644 index 0000000000..31a3ae8476 --- /dev/null +++ b/Gems/Atom/RPI/Assets/Shader/SceneAndViewSrgs.shader @@ -0,0 +1,39 @@ +{ + "Source" : "SceneAndViewSrgs.azsl", + + "DepthStencilState" : + { + "Depth" : + { + "Enable" : false + }, + "Stencil" : + { + "Enable" : false + } + }, + + "ProgramSettings": + { + "EntryPoints": + [ + { + "name": "MainVS", + "type": "Vertex" + }, + { + "name": "MainPS", + "type": "Fragment" + } + ] + }, + + "Supervariants": + [ + { + "Name": "", + "PlusArguments": "", + "MinusArguments": "--strip-unused-srgs" + } + ] +} diff --git a/Gems/Atom/RPI/Assets/ShaderLib/Atom/RPI/DummyEntryFunctions.azsli b/Gems/Atom/RPI/Assets/ShaderLib/Atom/RPI/DummyEntryFunctions.azsli new file mode 100644 index 0000000000..2a9d692de8 --- /dev/null +++ b/Gems/Atom/RPI/Assets/ShaderLib/Atom/RPI/DummyEntryFunctions.azsli @@ -0,0 +1,55 @@ +/* +* 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. +* +*/ + +// This file is included by .AZSL files that are used to define ShaderResourceGroups. +// The idea is that .shader files require entry function definitions to compile. +// This file provides dummy, yet valid, entry points for all kinds of shaders. + +/////////////////////////////////////////////////////////////////////////////// +// Dummy Structures +/////////////////////////////////////////////////////////////////////////////// +struct VSInput +{ + float3 m_position : POSITION; +}; + +struct VSOutput +{ + float4 m_position : SV_Position; +}; + +struct PSOutput +{ + float4 m_color : SV_Target0; +}; + +/////////////////////////////////////////////////////////////////////////////// +// Entry Functions +/////////////////////////////////////////////////////////////////////////////// +VSOutput MainVS(VSInput IN) +{ + VSOutput OUT; + OUT.m_position = float4(IN.m_position, 1.0); + return OUT; +} + +PSOutput MainPS(VSOutput IN) +{ + PSOutput OUT; + OUT.m_color = IN.m_position; + return OUT; +} + +[numthreads(8,8,1)] +void MainCS(uint3 dispatch_id: SV_DispatchThreadID) +{ +} diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h index 554d20dede..86c381e2ec 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Common/AssetUtils.h @@ -15,7 +15,6 @@ #include #include -#include #include namespace AZ @@ -42,8 +41,6 @@ namespace AZ template Outcome> LoadAsset(const AZ::Data::AssetId& assetId); - uint32_t CalcSrgProductSubId(const Name& srgName); - //! Attempts to resolve the full path to a product asset given its ID AZStd::string GetProductPathByAssetId(const AZ::Data::AssetId& assetId); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h index 428898a17e..64b60ada17 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h @@ -39,7 +39,6 @@ namespace AZ AZ_CLASS_ALLOCATOR(ShaderSourceData, AZ::SystemAllocator, 0); static constexpr char Extension[] = "shader"; - static constexpr char Extension2[] = "shader2"; static void Reflect(ReflectContext* context); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h index fbe97c592a..8538db48a9 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h @@ -19,7 +19,7 @@ namespace AZ { namespace RPI { - //! The "builder" pattern class that creates a ShaderVariantAsset. + //! The "builder" pattern class that creates a ShaderVariantAsset2. class ShaderVariantAssetCreator final : public AssetCreator { @@ -32,7 +32,7 @@ namespace AZ //! It is still useful, because when creating the Root Variant for the ShaderAsset this assetId should //! match the value that will be assigned by the asset processor because the Root Variant is serialized //! as a Data::Asset inside the ShaderAsset. - void Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, const ShaderOptionGroupLayout* shaderOptionGroupLayout); + void Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, bool isFullyBaked); //! Finalizes and assigns ownership of the asset to result, if successful. //! Otherwise false is returned and result is left untouched. @@ -41,24 +41,13 @@ namespace AZ ///////////////////////////////////////////////////////////////////// // Methods for all shader variant types - //! Set the timestamp value of ShaderAsset that matches this ShaderVariantAsset. + //! Set the timestamp value when the ProcessJob() started. //! This is needed to synchronize between the ShaderAsset and ShaderVariantAsset when hot-reloading shaders. - void SetShaderAssetBuildTimestamp(AZStd::sys_time_t shaderAssetBuildTimestamp); + //! The idea is that this timestamp must be greater or equal than the ShaderAsset. + void SetBuildTimestamp(AZStd::sys_time_t buildTimestamp); //! Assigns a shaderStageFunction, which contains the byte code, to the slot dictated by the shader stage. void SetShaderFunction(RHI::ShaderStage shaderStage, RHI::Ptr shaderStageFunction); - - ///////////////////////////////////////////////////////////////////// - // Methods for PipelineStateType::Draw variants. - - //! Assigns the contract for inputs required by the shader. - void SetInputContract(const ShaderInputContract& contract); - - //! Assigns the contract for outputs required by the shader. - void SetOutputContract(const ShaderOutputContract& contract); - - //! Assigns the render states for the draw pipeline. Ignored for non-draw pipelines. - void SetRenderStates(const RHI::RenderStates& renderStates); }; } // namespace RPI diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h deleted file mode 100644 index 07cec9a01f..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h +++ /dev/null @@ -1,54 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - //! The "builder" pattern class that creates a ShaderVariantAsset2. - class ShaderVariantAssetCreator2 final - : public AssetCreator - { - public: - //! Begins construction of the shader variant asset. - //! @param assetId The "initial" assetId that the resulting ShaderVariantAsset will get. - //! "initial" was quoted because in the end the asset processor will assign another assetId - //! because on the UUID of the source asset (a *.shadervariantlist file) and the product subid - //! that gets assign when returning the Job Response. - //! It is still useful, because when creating the Root Variant for the ShaderAsset this assetId should - //! match the value that will be assigned by the asset processor because the Root Variant is serialized - //! as a Data::Asset inside the ShaderAsset. - void Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, bool isFullyBaked); - - //! Finalizes and assigns ownership of the asset to result, if successful. - //! Otherwise false is returned and result is left untouched. - bool End(Data::Asset& result); - - ///////////////////////////////////////////////////////////////////// - // Methods for all shader variant types - - //! Set the timestamp value when the ProcessJob() started. - //! This is needed to synchronize between the ShaderAsset and ShaderVariantAsset when hot-reloading shaders. - //! The idea is that this timestamp must be greater or equal than the ShaderAsset. - void SetBuildTimestamp(AZStd::sys_time_t buildTimestamp); - - //! Assigns a shaderStageFunction, which contains the byte code, to the slot dictated by the shader stage. - void SetShaderFunction(RHI::ShaderStage shaderStage, RHI::Ptr shaderStageFunction); - - }; - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h index c284627cc5..eaef4e093b 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h @@ -30,7 +30,6 @@ namespace AZ AZ_CLASS_ALLOCATOR(ShaderVariantListSourceData, AZ::SystemAllocator, 0); static constexpr const char* Extension = "shadervariantlist"; - static constexpr const char* Extension2 = "shadervariantlist2"; static void Reflect(ReflectContext* context); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h index 81b23068a1..d9afc54809 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h @@ -219,7 +219,7 @@ namespace AZ Data::Instance m_srgPerContext; RHI::ShaderResourceGroup* m_srgGroups[1]; // array for draw item's srg groups uint32_t m_perVertexDataSize = 0; - Data::Asset m_drawSrgAsset; + RHI::Ptr m_drawSrgLayout; bool m_hasShaderVariantKeyFallbackEntry = false; // Draw variations allowed in this DynamicDrawContext diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/AttachmentReadback.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/AttachmentReadback.h index 539e1a5398..3c00ce4e4c 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/AttachmentReadback.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/AttachmentReadback.h @@ -99,7 +99,7 @@ namespace AZ void DecomposeExecute(const RHI::FrameGraphExecuteContext& context); // copy data from the read back buffer (m_readbackBuffer) to the data buffer (m_dataBuffer) - void CopyBufferData(uint32_t readbackBufferIndex); + bool CopyBufferData(uint32_t readbackBufferIndex); // Get read back data in a structure ReadbackResult GetReadbackResult() const; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/CopyPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/CopyPass.h index ede14564cd..fd5cdabc83 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/CopyPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/CopyPass.h @@ -49,7 +49,7 @@ namespace AZ void CopyImageToBuffer(const RHI::FrameGraphCompileContext& context); // Pass behavior overrides - void BuildAttachmentsInternal() override; + void BuildInternal() override; // Scope producer functions... void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/FullscreenTrianglePass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/FullscreenTrianglePass.h index fdb3241b44..616fc4639a 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/FullscreenTrianglePass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/FullscreenTrianglePass.h @@ -44,14 +44,11 @@ namespace AZ //! Creates a FullscreenTrianglePass static Ptr Create(const PassDescriptor& descriptor); - // Clears the initialized flag so that the next time PrepareFrameInternal is called, it will update the pipeline state - void Invalidate(); - protected: FullscreenTrianglePass(const PassDescriptor& descriptor); - virtual void Init(); // Pass behavior overrides... + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; RHI::Viewport m_viewportState; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/MSAAResolvePass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/MSAAResolvePass.h index 91ae1536c3..71776982b3 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/MSAAResolvePass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/MSAAResolvePass.h @@ -40,7 +40,7 @@ namespace AZ MSAAResolvePass(const PassDescriptor& descriptor); // Pass behavior overrides... - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; private: diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/ParentPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/ParentPass.h index b4f63a7099..727398040d 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/ParentPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/ParentPass.h @@ -109,15 +109,16 @@ namespace AZ // --- Pass Behaviour Overrides --- void ResetInternal() override; - void BuildAttachmentsInternal() override; - void OnBuildAttachmentsFinishedInternal() override; + void BuildInternal() override; + void OnInitializationFinishedInternal() override; + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; void FrameEndInternal() override; // Finds the pass in m_children and removes it void RemoveChild(Ptr pass); - // Orphans all children from clearing m_children. + // Orphans all children by clearing m_children. void RemoveChildren(); private: diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Pass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Pass.h index 3d0a8cd3a8..9d0b36d126 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Pass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Pass.h @@ -40,6 +40,7 @@ friend class PassSystem; \ friend class PassFactory; \ friend class ParentPass; \ + friend class RenderPipeline; \ friend class UnitTest::PassTests; \ namespace UnitTest @@ -78,9 +79,9 @@ namespace AZ //! //! When authoring a new pass class, inherit from Pass and override any of the virtual functions //! ending with 'Internal' to define the behavior of your passes. These virtual are recursively - //! called in Preorder order throughout the pass tree. Only FramePrepare and FrameEnd are + //! called in preorder traversal throughout the pass tree. Only FrameBegin and FrameEnd are //! guaranteed to be called per frame. The other override-able functions are called as needed - //! when scheduled with the PassSystem. See QueueForBuildAttachments and QueueForRemoval. + //! when scheduled with the PassSystem. See QueueForBuildAndInitialization, QueueForRemoval and QueueForInitialization. //! //! Passes are created by the PassFactory. They can be created using either Pass Name, //! a PassTemplate, or a PassRequest. To register your pass class with the PassFactory, @@ -153,11 +154,14 @@ namespace AZ // --- Utility functions --- - //! Queues the pass to have BuildAttachments() called by the PassSystem on frame update - void QueueForBuildAttachments(); + //! Queues the pass to have Build() and Initilize() called by the PassSystem on frame update + void QueueForBuildAndInitialization(); //! Queues the pass to have RemoveFromParent() called by the PassSystem on frame update - void QueueForRemoval(bool needsDeletion = false); + void QueueForRemoval(); + + //! Queues the pass to have Initialize() called by the PassSystem on frame update + void QueueForInitialization(); //! Adds an attachment binding to the list of this Pass' attachment bindings void AddAttachmentBinding(PassAttachmentBinding attachmentBinding); @@ -173,8 +177,8 @@ namespace AZ //! Attach an external buffer resource as attachment to specified slot //! The buffer will be added as a pass attachment then attach to the pass slot - //! Note: the pass attachment and binding will be removed after the general BuildAttachments call. - //! you can add this call in pass' BuildAttachmentsInternal so it will be added whenever attachments get rebuilt + //! Note: the pass attachment and binding will be removed after the general Build call. + //! you can add this call in pass' BuildInternal so it will be added whenever attachments get rebuilt void AttachBufferToSlot(AZStd::string_view slot, Data::Instance buffer); void AttachBufferToSlot(const Name& slot, Data::Instance buffer); void AttachImageToSlot(const Name& slot, Data::Instance image); @@ -256,6 +260,12 @@ namespace AZ //! Returns pointer to the parent pass ParentPass* GetParent() const; + PassState GetPassState() const; + + // Update all bindings on this pass that are connected to bindings on other passes + void UpdateConnectedBindings(); + + protected: explicit Pass(const PassDescriptor& descriptor); @@ -309,18 +319,23 @@ namespace AZ // customize it's behavior, hence why these functions are called the pass behavior functions. // Resets everything in the pass (like Attachments). - // Called from PassSystem when pass is QueueForBuildAttachments. + // Called from PassSystem when pass is QueueForBuildAndInitialization. void Reset(); virtual void ResetInternal() { } // Builds and sets up any attachments and input/output connections the pass needs. - // Called from PassSystem when pass is QueueForBuildAttachments. - void BuildAttachments(); - virtual void BuildAttachmentsInternal() { } + // Called from PassSystem when pass is QueueForBuildAndInitialization. + void Build(bool calledFromPassSystem = false); + virtual void BuildInternal() { } - // Called after the pass build phase has finished. Allows passes to reset build flags. - void OnBuildAttachmentsFinished(); - virtual void OnBuildAttachmentsFinishedInternal() { }; + // Allows for additional pass initialization between building and rendering + // Can be queued independently of Build so as to only invoke Initialize() without Build() + void Initialize(); + virtual void InitializeInternal() { }; + + // Called after the pass initialization phase has finished. Allows passes to reset various states and flags. + void OnInitializationFinished(); + virtual void OnInitializationFinishedInternal() { }; // The Pass's 'Render' function. Called every frame, here the pass sets up it's rendering logic with // the FrameGraphBuilder. This is where your derived pass needs to call ImportScopeProducer on @@ -378,21 +393,36 @@ namespace AZ { struct { + // Whether this pass was created with a PassRequest (in which case m_request holds valid data) uint64_t m_createdByPassRequest : 1; - uint64_t m_initialized : 1; + + // Whether the pass is enabled (behavior can be customized by overriding IsEnabled() ) uint64_t m_enabled : 1; + + // False if parent or one of it's ancestors is disabled uint64_t m_parentEnabled : 1; - uint64_t m_alreadyCreated : 1; - uint64_t m_alreadyReset : 1; - uint64_t m_alreadyPrepared : 1; + + // If this is a parent pass, indicates if the pass has already created children this frame + // Prevents ParentPass::CreateChildPasses from executing multiple times in the same pass + uint64_t m_alreadyCreatedChildren : 1; + + // If this is a parent pass, indicates whether the pass needs to create child passes + uint64_t m_createChildren : 1; + + // Whether this pass belongs to the pass hierarchy, i.e. if you can trace it's parents up to the Root pass uint64_t m_partOfHierarchy : 1; + + // Whether this pass has a DrawListTag uint64_t m_hasDrawListTag : 1; + + // Whether this pass has a PipelineViewTag uint64_t m_hasPipelineViewTag : 1; - uint64_t m_queuedForBuildAttachment : 1; + + // Whether the pass should gather timestamp query metrics uint64_t m_timestampQueryEnabled : 1; + + // Whether the pass should gather pipeline statics uint64_t m_pipelineStatisticsQueryEnabled : 1; - uint64_t m_isBuildingAttachments : 1; - uint64_t m_isRendering : 1; }; uint64_t m_allFlags = 0; }; @@ -412,6 +442,7 @@ namespace AZ // fully custom sort implementations by overriding the SortDrawList() function. RHI::DrawListSortType m_drawListSortType = RHI::DrawListSortType::KeyThenDepth; + private: // Return the Timestamp result of this pass virtual TimestampResult GetTimestampResultInternal() const; @@ -423,6 +454,10 @@ namespace AZ // buffers and images don't get deleted during attachment build phase void StoreImportedAttachmentReferences(); + // Used by the RenderPipeline to create it's passes immediately instead of waiting on + // the next Pass System update. The function internally build and initializes the pass. + void ManualPipelineBuildAndInitialize(); + // --- Hierarchy related functions --- // Called when the pass gets a new spot in the pass hierarchy @@ -460,9 +495,6 @@ namespace AZ // This sets the binding's attachment pointer to the connected binding's attachment void UpdateConnectedBinding(PassAttachmentBinding& binding); - // Update all bindings on this pass that are connected to bindings on other passes - void UpdateConnectedBindings(); - // Process a PassFallbackConnection to connect an output to an input to act as a short-circuit for when Pass is disabled void ProcessFallbackConnection(const PassFallbackConnection& connection); @@ -502,6 +534,7 @@ namespace AZ // buffers and images don't get deleted during attachment build phase AZStd::vector> m_importedAttachmentStore; + // Name of the pass. Will be concatenated with parent names to form a unique path Name m_name; // Path of the pass in the hierarchy. Example: Root.Ssao.Downsample @@ -510,6 +543,12 @@ namespace AZ // Depth of the tree hierarchy this pass is at. // Example: Root would be depth 0, Root.Ssao.Downsample depth 2 uint32_t m_treeDepth = 0; + + // Used to track what phase of build/execution the pass is in + PassState m_state = PassState::Uninitialized; + + // Used to track what phases of build/initialization the pass is queued for + PassQueueState m_queueState = PassQueueState::NoQueue; }; //! Struct used to return results from Pass hierarchy validation diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassDefines.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassDefines.h index d536104768..a7513cc53c 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassDefines.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassDefines.h @@ -21,3 +21,100 @@ // Set this to 1 locally on your machine to facilitate pass debugging and get extra information // about passes in the output window. DO NOT SUBMIT with value set to 1 #define AZ_RPI_ENABLE_PASS_DEBUGGING 0 + +namespace AZ +{ + namespace RPI + { + // This enum tracks the state of passes across build, initialization and rendering + // + // Standard order of state progression: + // + // Uninitialized -> Queued -> Resetting -> Reset -> Building -> Built -> Initializing -> Initialized -> Idle -> Rendering -> Idle ... + // + // Addition state transitions: + // + // Queued -> Resetting + // -> Building + // -> Initializing + // + // Idle -> Queued + // -> Resetting + // -> Building + // -> Initializing + // -> Rendering + // + // Rendering -> Idle + // -> Queued (Rendering will transition to Queued if a pass was queued with the PassSystem during Rendering) + // + enum class PassState : u8 + { + // Default value, you should only ever see this in the Pass constructor + // Once the constructor is done, the Pass will set it's state to Reset + Uninitialized, + // | + // | + // V + // Pass is queued with the Pass System for an update (see PassQueueState below) + Queued, + // | + // | + // V + // Pass is currently in the process of resetting + Resetting, + // | + // | + // V + // Pass has been reset and is awaiting build + Reset, + // | + // | + // V + // Pass is currently building + Building, + // | + // | + // V + // Pass has been built and is awaiting initialization + Built, + // | + // | + // V + // Pass is currently being initialized + Initializing, + // | + // | + // V + // Pass has been initialized + Initialized, + // | + // | + // V + // Idle state, pass is awaiting rendering + Idle, + // | + // | + // V + // Pass is currently rendering. Pass must be in Idle state before entering this state + Rendering + }; + + // This enum keeps track of what actions the pass is queued for with the pass system + enum class PassQueueState : u8 + { + // The pass is currently not in any queued state and may therefore transition to any queued state + NoQueue, + + // The pass is queued for Removal at the start of the next frame. Has the highest priority and cannot be overridden by any other queue state + QueuedForRemoval, + + // The pass is queued for Build at the start of the frame. Note that any pass built at the start of the frame will also be Initialized. + // This state can be overridden by QueuedForRemoval, as we don't want to build a pass that has been removed. + QueuedForBuildAndInitialization, + + // The pass is queued for Initialization at the start of the frame. + // This state has the lowest priority and can therefore be overridden by QueueForBuildAndInitialization or QueueForRemoval. + QueuedForInitialization, + }; + } +} diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystem.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystem.h index fd30f4f406..534bf211dd 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystem.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystem.h @@ -73,12 +73,12 @@ namespace AZ bool LoadPassTemplateMappings(const AZStd::string& templateMappingPath) override; void WriteTemplateToFile(const PassTemplate& passTemplate, AZStd::string_view assetFilePath) override; void DebugPrintPassHierarchy() override; - bool IsBuilding() const override; bool IsHotReloading() const override; void SetHotReloading(bool hotReloading) override; void SetTargetedPassDebuggingName(const AZ::Name& targetPassName) override; const AZ::Name& GetTargetedPassDebuggingName() const override; void ConnectEvent(OnReadyLoadTemplatesEvent::Handler& handler) override; + PassSystemState GetState() const override; // PassSystemInterface factory related functions... void AddPassCreator(Name className, PassCreator createFunction) override; @@ -103,8 +103,11 @@ namespace AZ // Returns the root of the pass tree hierarchy const Ptr& GetRootPass() override; - // Calls BuildAttachments() on passes queued in m_buildAttachmentsList - void BuildPassAttachments(); + // Calls Build() on passes queued in m_buildPassList + void BuildPasses(); + + // Calls Initialize() on passes queued in m_initializePassList + void InitializePasses(); // Validates Pass Hierarchy after building void Validate(); @@ -113,13 +116,15 @@ namespace AZ void RemovePasses(); // Functions for queuing passes in the lists below - void QueueForBuildAttachments(Pass* pass) override; + void QueueForBuild(Pass* pass) override; void QueueForRemoval(Pass* pass) override; + void QueueForInitialization(Pass* pass) override; // Lists for queuing passes for various function calls // Name of the list reflects the pass function it will call - AZStd::vector< Ptr > m_buildAttachmentsList; + AZStd::vector< Ptr > m_buildPassList; AZStd::vector< Ptr > m_removePassList; + AZStd::vector< Ptr > m_initializePassList; // Library of pass descriptors that can be instantiated through data driven pass requests PassLibrary m_passLibrary; @@ -133,9 +138,6 @@ namespace AZ // Whether the Pass Hierarchy changed bool m_passHierarchyChanged = true; - // Whether the Pass System is currently in it's building phase - bool m_isBuilding = false; - // Whether the Pass System is currently hot reloading passes bool m_isHotReloading = false; @@ -147,6 +149,9 @@ namespace AZ // Events OnReadyLoadTemplatesEvent m_loadTemplatesEvent; + + // Used to track what phase of execution the pass system is in + PassSystemState m_state = PassSystemState::Unitialized; }; } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystemInterface.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystemInterface.h index 1224bf9545..72501fc61c 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystemInterface.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/PassSystemInterface.h @@ -40,6 +40,37 @@ namespace AZ using PassCreator = AZStd::function(const PassDescriptor& descriptor)>; + // Enum to track the different execution phases of the Pass System + enum class PassSystemState : u32 + { + // Default state, + Unitialized, + + // Initial Pass System setup. Transitions to Idle + InitializingPassSystem, + + // Pass System is processing passes queued for Removal. Transitions to Idle + RemovingPasses, + + // Pass System is processing passes queued for Build (and their child passes). Transitions to Idle + BuildingPasses, + + // Pass System is processing passes queued for Initialization (and their child passes). Transitions to Idle + InitializingPasses, + + // Pass System is validating that the Pass hierarchy is in a valid state after Build and Initialization. Transitions to Idle + ValidatingPasses, + + // Pass System is idle and can transition to any other state (except FrameEnd) + Idle, + + // Pass System is currently rendering a frame. Transitions to FrameEnd + Rendering, + + // Pass System is finishing rendering a frame. Transitions to Idle + FrameEnd, + }; + class PassSystemInterface { friend class Pass; @@ -77,9 +108,6 @@ namespace AZ //! Prints the entire pass hierarchy from the root virtual void DebugPrintPassHierarchy() = 0; - //! Returns whether the Pass System is currently in it's build phase - virtual bool IsBuilding() const = 0; - //! Returns whether the Pass System is currently hot reloading virtual bool IsHotReloading() const = 0; @@ -157,15 +185,20 @@ namespace AZ //! The handler can add new pass templates or load pass template mappings from assets virtual void ConnectEvent(OnReadyLoadTemplatesEvent::Handler& handler) = 0; + virtual PassSystemState GetState() const = 0; + private: // These functions are only meant to be used by the Pass class - // Schedules a pass to have it's BuildAttachments() function called during frame update - virtual void QueueForBuildAttachments(Pass* pass) = 0; + // Schedules a pass to have it's Build() function called during frame update + virtual void QueueForBuild(Pass* pass) = 0; // Schedules a pass to be deleted during frame update virtual void QueueForRemoval(Pass* pass) = 0; + // Schedules a pass to be initialized during frame update + virtual void QueueForInitialization(Pass* pass) = 0; + //! Registers the pass with the pass library. Called in the Pass constructor. virtual void RegisterPass(Pass* pass) = 0; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h index 5cd917e841..8f8267393e 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/RenderPass.h @@ -96,7 +96,7 @@ namespace AZ void BindPassSrg(const RHI::FrameGraphCompileContext& context, Data::Instance& shaderResourceGroup); // Pass behavior overrides... - void OnBuildAttachmentsFinishedInternal() override; + void InitializeInternal() override; void FrameBeginInternal(FramePrepareParams params) override; void FrameEndInternal() override; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/DownsampleMipChainPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/DownsampleMipChainPass.h index 71c1fe4c49..eb4c4ed0aa 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/DownsampleMipChainPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/DownsampleMipChainPass.h @@ -46,7 +46,7 @@ namespace AZ // Pass Behaviour Overrides... void ResetInternal() override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; private: diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.h index 293a750f38..235871df83 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.h @@ -61,7 +61,7 @@ namespace AZ // Pass overrides void CreateChildPassesInternal() override; - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; void FrameEndInternal() override; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/RenderToTexturePass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/RenderToTexturePass.h index c8daab8ef8..c86203b79b 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/RenderToTexturePass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/RenderToTexturePass.h @@ -47,7 +47,7 @@ namespace AZ protected: // Pass behavior overrides - void BuildAttachmentsInternal() override; + void BuildInternal() override; void FrameBeginInternal(FramePrepareParams params) override; // Function to be called when output size changed diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SelectorPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SelectorPass.h index fe0ce231eb..2d876c6040 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SelectorPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SelectorPass.h @@ -49,7 +49,7 @@ namespace AZ SelectorPass(const PassDescriptor& descriptor); // Pass behavior overrides - void BuildAttachmentsInternal() final; + void BuildInternal() final; // the input slot index each output slot connect to AZStd::vector m_connections; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SwapChainPass.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SwapChainPass.h index 9aa00c99c2..7eac0d366d 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SwapChainPass.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Pass/Specific/SwapChainPass.h @@ -64,7 +64,7 @@ namespace AZ protected: // Pass behavior overrides void CreateChildPassesInternal() override final; - void BuildAttachmentsInternal() override final; + void BuildInternal() override final; void FrameBeginInternal(FramePrepareParams params) override final; // WindowNotificationBus::Handler overrides ... diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h index ff3c784a51..c5df3efc0e 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystem.h @@ -77,8 +77,9 @@ namespace AZ ScenePtr GetScene(const SceneId& sceneId) const override; ScenePtr GetDefaultScene() const override; RenderPipelinePtr GetRenderPipelineForWindow(AzFramework::NativeWindowHandle windowHandle) override; - Data::Asset GetSceneSrgAsset() const override; - Data::Asset GetViewSrgAsset() const override; + Data::Asset GetCommonShaderAssetForSrgs() const override; + RHI::Ptr GetSceneSrgLayout() const override; + RHI::Ptr GetViewSrgLayout() const override; void SimulationTick() override; void RenderTick() override; void SetSimulationJobPolicy(RHI::JobPolicy jobPolicy) override; @@ -130,8 +131,11 @@ namespace AZ RPISystemDescriptor m_descriptor; - Data::Asset m_sceneSrgAsset; - Data::Asset m_viewSrgAsset; + // Reference to the shader asset that is used + // to get the layout for SceneSrg (@m_sceneSrgLayout) and ViewSrg (@m_viewSrgLayout). + Data::Asset m_commonShaderAssetForSrgs; + RHI::Ptr m_sceneSrgLayout; + RHI::Ptr m_viewSrgLayout; bool m_systemAssetsInitialized = false; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h index c2ceca73a9..c7934501e9 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RPISystemInterface.h @@ -13,6 +13,7 @@ #include #include +#include #include @@ -58,9 +59,12 @@ namespace AZ //! Get the render pipeline created for a window virtual RenderPipelinePtr GetRenderPipelineForWindow(AzFramework::NativeWindowHandle windowHandle) = 0; - virtual Data::Asset GetSceneSrgAsset() const = 0; + //! Returns the shader asset that is being used as the source for the SceneSrg and ViewSrg layouts. + virtual Data::Asset GetCommonShaderAssetForSrgs() const = 0; - virtual Data::Asset GetViewSrgAsset() const = 0; + virtual RHI::Ptr GetSceneSrgLayout() const = 0; + + virtual RHI::Ptr GetViewSrgLayout() const = 0; //! Tick for graphics simulation that runs on the CPU. //! This will drive FeatureProcessor simulation activity. It should be called once per game-tick. diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RenderPipeline.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RenderPipeline.h index 5595c1d2ac..26979e4388 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RenderPipeline.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/RenderPipeline.h @@ -19,7 +19,6 @@ #include #include -#include #include #include diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader.h index a81a3a99eb..938c8c06b1 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader.h @@ -60,15 +60,21 @@ namespace AZ { friend class ShaderSystem; public: - AZ_INSTANCE_DATA(Shader, "{3576FF16-C3C5-48A6-9388-C3628A231BC3}"); + AZ_INSTANCE_DATA(Shader, "{232D8BD6-3BD4-4842-ABD2-F380BD5B0863}"); AZ_CLASS_ALLOCATOR(Shader, SystemAllocator, 0); /// Returns the shader instance associated with the provided asset. + static Data::Instance FindOrCreate(const Data::Asset& shaderAsset, const Name& supervariantName); + + /// Same as above, but uses the default supervariant static Data::Instance FindOrCreate(const Data::Asset& shaderAsset); ~Shader(); AZ_DISABLE_COPY_MOVE(Shader); + /// returns the SupervariantIndex that corresponds to the given supervariant name given at instantiation. + SupervariantIndex GetSupervariantIndex() { return m_supervariantIndex; } + /// Constructs a shader option group suitable to generate a shader variant key for this shader. ShaderOptionGroup CreateShaderOptionGroup() const; @@ -104,21 +110,27 @@ namespace AZ /// Returns the pipeline state type generated by variants of this shader. RHI::PipelineStateType GetPipelineStateType() const; + + //! Returns the ShaderInputContract which describes which inputs the shader requires + const ShaderInputContract& GetInputContract() const; + + //! Returns the ShaderOutputContract which describes which outputs the shader requires + const ShaderOutputContract& GetOutputContract() const; /// Acquires a pipeline state directly from a descriptor. const RHI::PipelineState* AcquirePipelineState(const RHI::PipelineStateDescriptor& descriptor) const; /// Finds and returns the shader resource group asset with the requested name. Returns an empty handle if no matching group was found. - const Data::Asset& FindShaderResourceGroupAsset(const Name& shaderResourceGroupName) const; + const RHI::Ptr& FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const; /// Finds and returns the shader resource group asset associated with the requested binding slot. Returns an empty handle if no matching group was found. - const Data::Asset& FindShaderResourceGroupAsset(uint32_t bindingSlot) const; + const RHI::Ptr& FindShaderResourceGroupLayout(uint32_t bindingSlot) const; /// Finds and returns the shader resource group asset designated as a ShaderVariantKey fallback. - const Data::Asset& FindFallbackShaderResourceGroupAsset() const; + const RHI::Ptr& FindFallbackShaderResourceGroupLayout() const; /// Returns the set of shader resource groups referenced by all variants in the shader asset. - AZStd::array_view> GetShaderResourceGroupAssets() const; + AZStd::array_view> GetShaderResourceGroupLayouts() const; /// Returns a reference to the asset used to initialize this shader. const Data::Asset& GetAsset() const; @@ -128,9 +140,10 @@ namespace AZ RHI::DrawListTag GetDrawListTag() const; private: - Shader() = default; + explicit Shader(const SupervariantIndex& supervariantIndex) : m_supervariantIndex(supervariantIndex){}; + Shader() = delete; - static Data::Instance CreateInternal(ShaderAsset& shaderAsset); + static Data::Instance CreateInternal(ShaderAsset& shaderAsset, const AZStd::any* supervariantName); RHI::ResultCode Init(ShaderAsset& shaderAsset); @@ -150,16 +163,23 @@ namespace AZ void OnShaderVariantAssetReady(Data::Asset shaderVariantAsset, bool IsError) override; /////////////////////////////////////////////////////////////////// - /// Returns the path to the pipeline library cache file. + //! Returns the path to the pipeline library cache file. AZStd::string GetPipelineLibraryPath() const; - /// The pipeline state type required by this shader. + //! A strong reference to the shader asset. + Data::Asset m_asset; + + //! Selects current supervariant to be used. + //! This value is defined at instantiation. + SupervariantIndex m_supervariantIndex; + + //! The pipeline state type required by this shader. RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Draw; - /// A cached pointer to the pipeline state cache owned by RHISystem. + //! A cached pointer to the pipeline state cache owned by RHISystem. RHI::PipelineStateCache* m_pipelineStateCache = nullptr; - /// A handle to the pipeline library in the pipeline state cache. + //! A handle to the pipeline library in the pipeline state cache. RHI::PipelineLibraryHandle m_pipelineLibraryHandle; //! Used for thread safety for FindVariantStableId() and GetVariant(). @@ -168,14 +188,11 @@ namespace AZ //! The root variant always exist. ShaderVariant m_rootVariant; - /// Local cache of ShaderVariants (except for the root variant), searchable by StableId. - /// Gets populated when GetVariant() is called. + //! Local cache of ShaderVariants (except for the root variant), searchable by StableId. + //! Gets populated when GetVariant() is called. AZStd::unordered_map m_shaderVariants; - - /// A strong reference to the shader asset. - Data::Asset m_asset; - // DrawListTag associated with this shader. + //! DrawListTag associated with this shader. RHI::DrawListTag m_drawListTag; }; } diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader2.h deleted file mode 100644 index eb82c2d31a..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader2.h +++ /dev/null @@ -1,194 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include - -#include -#include -#include - -#include -#include - -#include - -#include - -namespace AZ -{ - namespace RHI - { - class PipelineStateCache; - } - - namespace RPI - { - /** - * Shader2 is effectively an 'uber-shader' containing a collection of 'variants'. Variants are - * designed to be 'variations' on the same core shader technique. To enforce this, every variant - * in the shader shares the same pipeline layout (i.e. set of shader resource groups). - * - * A shader owns a library of pipeline states. When a variant is resolved to a pipeline state, its - * lifetime is determined by the lifetime of the Shader2 (unless an explicit reference is taken). If - * an asset reload event occurs, the pipeline state cache is reset. - * - * To use Shader2: - * 1) Construct a ShaderOptionGroup instance using CreateShaderOptionGroup. - * 2) Configure the group by setting values on shader options. - * 3) Find the ShaderVariantStableId using the ShaderVariantId generated from the configured ShaderOptionGroup. - * 4) Acquire the ShaderVariant2 instance using the ShaderVariantStableId. - * 5) Configure a pipeline state descriptor on the variant; make local overrides as necessary (e.g. to configure runtime render state). - * 6) Acquire a RHI::PipelineState instance from the shader using the configured pipeline state descriptor. - * - * Remember that the returned RHI::PipelineState instance lifetime is tied to the Shader2 lifetime. - * If you need guarantee lifetime, it is safe to take a reference on the returned pipeline state. - */ - class Shader2 final - : public Data::InstanceData - , public Data::AssetBus::Handler - , public ShaderVariantFinderNotificationBus2::Handler - { - friend class ShaderSystem; - public: - AZ_INSTANCE_DATA(Shader2, "{232D8BD6-3BD4-4842-ABD2-F380BD5B0863}"); - AZ_CLASS_ALLOCATOR(Shader2, SystemAllocator, 0); - - /// Returns the shader instance associated with the provided asset. - static Data::Instance FindOrCreate(const Data::Asset& shaderAsset, const Name& supervariantName); - - ~Shader2(); - AZ_DISABLE_COPY_MOVE(Shader2); - - /// Constructs a shader option group suitable to generate a shader variant key for this shader. - ShaderOptionGroup CreateShaderOptionGroup() const; - - /// Finds the best matching ShaderVariant2 for the given shaderVariantId, - /// If the variant is loaded and ready it will return the corresponding ShaderVariant2. - /// If the variant is not yet available it will return the root ShaderVariant2. - /// Callers should listen to ShaderReloadNotificationBus to get notified whenever the exact - /// variant is loaded and available or if a variant changes, etc. - /// This function should be your one stop shop to get a ShaderVariant2 from a ShaderVariantId. - /// Alternatively: You can call FindVariantStableId() followed by GetVariant(shaderVariantStableId). - const ShaderVariant2& GetVariant(const ShaderVariantId& shaderVariantId); - - /// Finds the best matching shader variant asset and returns its StableId. - /// In cases where you can't cache the ShaderVariant2, and recurrently you may need - /// the same ShaderVariant2 at different times, then it can be convenient (and more performant) to call - /// this method to cache the ShaderVariantStableId and call GetVariant(ShaderVariantStableId) - /// when needed. - /// If the asset is not immediately found in the file system, it will return the StableId - /// of the root variant. - /// Callers should listen to ShaderReloadNotificationBus to get notified whenever the exact - /// variant is loaded and available or if a variant changes, etc. - ShaderVariantSearchResult FindVariantStableId(const ShaderVariantId& shaderVariantId) const; - - /// Returns the variant associated with the provided StableId. - /// You should call FindVariantStableId() which caches the variant, later - /// when this function is called the variant is fetched from a local map. - /// If the variant is not found, the root variant is returned. - /// "Alternatively: a more convenient approach is to call GetVariant(ShaderVariantId) which does both, the find and the get." - const ShaderVariant2& GetVariant(ShaderVariantStableId shaderVariantStableId); - - /// Convenient function that returns the root variant. - const ShaderVariant2& GetRootVariant(); - - /// Returns the pipeline state type generated by variants of this shader. - RHI::PipelineStateType GetPipelineStateType() const; - - //! Returns the ShaderInputContract which describes which inputs the shader requires - const ShaderInputContract& GetInputContract() const; - - //! Returns the ShaderOutputContract which describes which outputs the shader requires - const ShaderOutputContract& GetOutputContract() const; - - /// Acquires a pipeline state directly from a descriptor. - const RHI::PipelineState* AcquirePipelineState(const RHI::PipelineStateDescriptor& descriptor) const; - - /// Finds and returns the shader resource group asset with the requested name. Returns an empty handle if no matching group was found. - const RHI::Ptr FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const; - - /// Finds and returns the shader resource group asset associated with the requested binding slot. Returns an empty handle if no matching group was found. - const RHI::Ptr FindShaderResourceGroupLayout(uint32_t bindingSlot) const; - - /// Finds and returns the shader resource group asset designated as a ShaderVariantKey fallback. - const RHI::Ptr FindFallbackShaderResourceGroupLayout() const; - - /// Returns the set of shader resource groups referenced by all variants in the shader asset. - AZStd::array_view> GetShaderResourceGroupLayouts() const; - - /// Returns a reference to the asset used to initialize this shader. - const Data::Asset& GetAsset() const; - - //! Returns the DrawListTag that identifies which Pass and View objects will process this shader. - //! This tag corresponds to the ShaderAsset2 object's DrawListName. - RHI::DrawListTag GetDrawListTag() const; - - private: - Shader2() = default; - - static Data::Instance CreateInternal(ShaderAsset2& shaderAsset); - - bool SelectSupervariant(const Name& supervariantName); - - RHI::ResultCode Init(ShaderAsset2& shaderAsset); - - void Shutdown(); - - ConstPtr LoadPipelineLibrary() const; - void SavePipelineLibrary() const; - - /////////////////////////////////////////////////////////////////// - /// AssetBus overrides - void OnAssetReloaded(Data::Asset asset) override; - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus overrides - void OnShaderVariantTreeAssetReady(Data::Asset /*shaderVariantTreeAsset*/, bool /*isError*/) override {}; - void OnShaderVariantAssetReady(Data::Asset shaderVariantAsset, bool IsError) override; - /////////////////////////////////////////////////////////////////// - - //! Returns the path to the pipeline library cache file. - AZStd::string GetPipelineLibraryPath() const; - - //! A strong reference to the shader asset. - Data::Asset m_asset; - - //! Selects current supervariant to be used. - //! This value is defined at instantiation. - SupervariantIndex m_supervariantIndex; - - //! The pipeline state type required by this shader. - RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Draw; - - //! A cached pointer to the pipeline state cache owned by RHISystem. - RHI::PipelineStateCache* m_pipelineStateCache = nullptr; - - //! A handle to the pipeline library in the pipeline state cache. - RHI::PipelineLibraryHandle m_pipelineLibraryHandle; - - //! Used for thread safety for FindVariantStableId() and GetVariant(). - AZStd::shared_mutex m_variantCacheMutex; - - //! The root variant always exist. - ShaderVariant2 m_rootVariant; - - //! Local cache of ShaderVariants (except for the root variant), searchable by StableId. - //! Gets populated when GetVariant() is called. - AZStd::unordered_map m_shaderVariants; - - //! DrawListTag associated with this shader. - RHI::DrawListTag m_drawListTag; - }; - } -} diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h index 58b9809e2b..769ada0293 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h @@ -47,7 +47,8 @@ namespace AZ virtual void OnShaderReinitialized(const Shader& shader) { AZ_UNUSED(shader); } //! Called when a particular shader variant is reinitialized. - virtual void OnShaderVariantReinitialized(const Shader& shader, const ShaderVariantId& shaderVariantId, ShaderVariantStableId shaderVariantStableId) { AZ_UNUSED(shader); AZ_UNUSED(shaderVariantId); AZ_UNUSED(shaderVariantStableId); } + virtual void OnShaderVariantReinitialized(const Shader& shader, const ShaderVariantId& shaderVariantId, ShaderVariantStableId shaderVariantStableId) + { AZ_UNUSED(shader); AZ_UNUSED(shaderVariantId); AZ_UNUSED(shaderVariantStableId) } }; typedef EBus ShaderReloadNotificationBus; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h deleted file mode 100644 index 0822336ffa..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h +++ /dev/null @@ -1,58 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include -#include - -//#include -#include - -namespace AZ -{ - namespace RPI - { - class Shader2; - class ShaderAsset2; - - /** - * Connect to this EBus to get notifications whenever a Data::Instance reloads its ShaderAsset. - * The bus address is the AssetId of the ShaderAsset. - */ - class ShaderReloadNotifications2 - : public EBusTraits - { - - public: - ////////////////////////////////////////////////////////////////////////// - // EBusTraits overrides - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; - typedef Data::AssetId BusIdType; - ////////////////////////////////////////////////////////////////////////// - - virtual ~ShaderReloadNotifications2() {} - - //! Called when the ShaderAsset reinitializes itself in response to another asset being reloaded. - virtual void OnShaderAssetReinitialized(const Data::Asset& shaderAsset) { AZ_UNUSED(shaderAsset); } - - //! Called when the Shader instance reinitializes itself in response to the ShaderAsset being reloaded. - virtual void OnShaderReinitialized(const Shader2& shader) { AZ_UNUSED(shader); } - - //! Called when a particular shader variant is reinitialized. - virtual void OnShaderVariantReinitialized(const Shader2& shader, const ShaderVariantId& shaderVariantId, ShaderVariantStableId shaderVariantStableId) - { AZ_UNUSED(shader); AZ_UNUSED(shaderVariantId); AZ_UNUSED(shaderVariantStableId) } - }; - - typedef EBus ShaderReloadNotificationBus2; - - } // namespace RPI -} //namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h index d99b8f51b5..fb2b443ca5 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h @@ -12,9 +12,7 @@ #pragma once #include -#include #include -#include #include #include @@ -25,6 +23,7 @@ #include #include +#include #include namespace AZ @@ -55,19 +54,15 @@ namespace AZ : public AZ::Data::InstanceData { friend class ShaderSystem; + friend class ShaderResourceGroupPool; + public: AZ_INSTANCE_DATA(ShaderResourceGroup, "{88B52D0C-9CBF-4B4D-B9E2-180BA602E1EA}"); AZ_CLASS_ALLOCATOR(ShaderResourceGroup, AZ::SystemAllocator, 0); - /// Instantiates or returns an existing streaming image instance using its paired asset. - static Data::Instance FindOrCreate(const Data::Asset& srgAsset); - - /// Instantiates a unique shader resource group instance using its paired asset. - static Data::Instance Create(const Data::Asset& srgAsset); - - /// [GFX TODO] [ATOM-15472] Shader Build Pipeline: Remove Deprecated Files And Functions That Predate The Shader Supervariants - /// This is a temporary hack to enable integration of the new supervariant system. - bool ReplaceSrgLayoutUsingShaderAsset(Data::Asset shaderAsset, const Name& supervariantName, const Name& srgName); + /// Instantiates a unique shader resource group instance using its paired asset but with a random InstanceId. + static Data::Instance Create( + const Data::Asset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName); /// Queues a request that the underlying hardware shader resource group be compiled. void Compile(); @@ -84,8 +79,8 @@ namespace AZ RHI::ShaderInputBufferUnboundedArrayIndex FindShaderInputBufferUnboundedArrayIndex(const Name& name) const; RHI::ShaderInputImageUnboundedArrayIndex FindShaderInputImageUnboundedArrayIndex(const Name& name) const; - /// Returns the parent shader resource group asset. - const Data::Asset& GetAsset() const; + /// Returns the parent shader shader asset where the SRG layout data came from. + /// const Data::Asset& GetAsset() const; /// Returns the RHI shader resource group layout. const RHI::ShaderResourceGroupLayout* GetLayout() const; @@ -283,9 +278,34 @@ namespace AZ private: ShaderResourceGroup() = default; - RHI::ResultCode Init(ShaderResourceGroupAsset& shaderResourceGroupAsset); + //! Will be passed as AZStd::any to CreateInternal. + //! The data comes from the same parameters of ::Create() or ::FindOrCreate(). + struct SrgInitParams + { + AZ_TYPE_INFO(SrgInitParams, "{FDBDDB75-3DE6-4383-8D19-C0092246A411}"); + SupervariantIndex m_supervariantIndex; + AZ::Name m_srgName; + }; - static AZ::Data::Instance CreateInternal(ShaderResourceGroupAsset& srgAsset); + //! Usually subclasses of AZ::Data::InstanceData leverage the AssetId of the given asset as a means to define + //! the AZ::Data::InstanceId. This works well when there's a one-to-one relationship between the Asset and the InstanceData. + //! + //! ShaderResourceGroup & ShaderResourceGroupPool are different because one ShaderAsset can have several + //! ShaderResourceGroupLayouts defined in it. This means that using only the AssetId is not sufficient. + //! + //! This function searches the ShaderResourceGroupLayout of the given @srgName in the @shaderAsset. If it finds such + //! ShaderResourceGroupLayout it makes an InstanceId based on: + //! - The azsl file of origin where the ShaderResourceGroup was defined. + //! - The supervariant index. + //! - The name of the srg. + //! @param shaderAsset: The shader asset where the ShaderResourceGroupLayout will be searched. + //! @param supervariantIndex: The supervariant index in @shaderAsset where the search will be conducted. + //! @param srgName: Name of the ShaderResourceGroup as it was declared in the azsl file of origin. + static Data::InstanceId MakeInstanceId(const Data::Asset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName); + + RHI::ResultCode Init(ShaderAsset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName); + + static AZ::Data::Instance CreateInternal(ShaderAsset& shaderAsset, const AZStd::any* srgInitParams); /// A name to be used in error messages static const char* s_traceCategoryName; @@ -296,6 +316,9 @@ namespace AZ /// Allows us to return const& to a null Buffer static const Data::Instance s_nullBuffer; + /// If true, Init() was called and was successful. + bool m_isInitialized = false; + /// Pool for allocating RHI::ShaderResourceGroup objects Data::Instance m_pool; @@ -306,10 +329,7 @@ namespace AZ RHI::Ptr m_shaderResourceGroup; /// A reference to the SRG asset used to initialize and manipulate this group. - AZ::Data::Asset m_asset; - - /// A reference to the shader asset used to initialize and manipulate this group. - AZ::Data::Asset m_shaderAsset; + AZ::Data::Asset m_asset; /// A pointer to the layout inside of m_srgAsset const RHI::ShaderResourceGroupLayout* m_layout = nullptr; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroupPool.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroupPool.h index 90324f2831..a3aecfe1f6 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroupPool.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroupPool.h @@ -12,9 +12,10 @@ #pragma once -#include #include #include +#include + namespace AZ { @@ -46,10 +47,11 @@ namespace AZ AZ_CLASS_ALLOCATOR(ShaderResourceGroupPool, AZ::SystemAllocator, 0); /** - * Instantiates or returns an existing runtime pool for a given ShaderResourceGroupAsset. + * Instantiates or returns an existing runtime pool for a given ShaderResourceGroup. * @param shaderResourceGroupPoolAsset The asset used to instantiate an instance of the streaming image pool. */ - static Data::Instance FindOrCreate(const Data::Asset& srgAsset); + static Data::Instance FindOrCreate( + const Data::Asset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName); RHI::Ptr CreateRHIShaderResourceGroup(); @@ -60,8 +62,10 @@ namespace AZ ShaderResourceGroupPool() = default; // Standard RPI runtime instance initialization - static Data::Instance CreateInternal(ShaderResourceGroupAsset& srgAsset); - RHI::ResultCode Init(ShaderResourceGroupAsset& srgAsset); + // @param anySrgInitParams Of Type RPI::ShaderResourceGroup::SrgInitParams. + static Data::Instance CreateInternal(ShaderAsset& shaderAsset, const AZStd::any* anySrgInitParams); + + RHI::ResultCode Init(ShaderAsset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName); RHI::Ptr m_pool; }; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant.h index d189d26b13..bd02d03787 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant.h @@ -33,12 +33,6 @@ namespace AZ //! this does not fill the InputStreamLayout or OutputAttachmentLayout as that also requires //! information from the mesh data and pass system and must be done as a separate step). void ConfigurePipelineState(RHI::PipelineStateDescriptor& descriptor) const; - - //! Returns the ShaderInputContract which describes which inputs the shader requires - const ShaderInputContract& GetInputContract() const; - - //! Returns the ShaderOutputContract which describes which outputs the shader requires - const ShaderOutputContract& GetOutputContract() const; const ShaderVariantId& GetShaderVariantId() const { return m_shaderVariantAsset->GetShaderVariantId(); } @@ -47,9 +41,10 @@ namespace AZ //! If the shader variant is not fully baked, the ShaderVariantKeyFallbackValue must be correctly set when drawing. bool IsFullyBaked() const { return m_shaderVariantAsset->IsFullyBaked(); } - //! Return the timestamp when the associated ShaderAsset was built. + //! Return the timestamp when this asset was built. //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::sys_time_t GetShaderAssetBuildTimestamp() const { return m_shaderVariantAsset->GetShaderAssetBuildTimestamp(); } + //! This timestamp must be >= than the ShaderAsset timestamp. + AZStd::sys_time_t GetBuildTimestamp() const { return m_shaderVariantAsset->GetBuildTimestamp(); } bool IsRootVariant() const { return m_shaderVariantAsset->IsRootVariant(); } @@ -59,7 +54,8 @@ namespace AZ // Called by Shader. Initializes runtime data from asset data. Returns whether the call succeeded. bool Init( const ShaderAsset& shaderAsset, - Data::Asset shaderVariantAsset); + Data::Asset shaderVariantAsset, + SupervariantIndex supervariantIndex); // Cached state from the asset to avoid an indirection. RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Count; @@ -68,6 +64,8 @@ namespace AZ RHI::ConstPtr m_pipelineLayoutDescriptor; Data::Asset m_shaderVariantAsset; + + const RHI::RenderStates* m_renderStates = nullptr; // Cached from ShaderAsset. }; } } diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant2.h deleted file mode 100644 index 524ebf6a3c..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant2.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include - -#include - -namespace AZ -{ - namespace RPI - { - //! Represents the concrete state to configure a PipelineStateDescriptor. ShaderVariant2's match - //! the RHI::PipelineStateType of the parent Shader instance. For shaders on the raster - //! pipeline, the RHI::DrawFilterTag is also provided. - class ShaderVariant2 final - { - friend class Shader2; - public: - ShaderVariant2() = default; - AZ_DEFAULT_COPY_MOVE(ShaderVariant2); - - //! Fills a pipeline state descriptor with settings provided by the ShaderVariant2. (Note that - //! this does not fill the InputStreamLayout or OutputAttachmentLayout as that also requires - //! information from the mesh data and pass system and must be done as a separate step). - void ConfigurePipelineState(RHI::PipelineStateDescriptor& descriptor) const; - - const ShaderVariantId& GetShaderVariantId() const { return m_shaderVariantAsset->GetShaderVariantId(); } - - //! Returns whether the variant is fully baked variant (all options are static branches), or false if the - //! variant uses dynamic branches for some shader options. - //! If the shader variant is not fully baked, the ShaderVariantKeyFallbackValue must be correctly set when drawing. - bool IsFullyBaked() const { return m_shaderVariantAsset->IsFullyBaked(); } - - //! Return the timestamp when this asset was built. - //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - //! This timestamp must be >= than the ShaderAsset timestamp. - AZStd::sys_time_t GetBuildTimestamp() const { return m_shaderVariantAsset->GetBuildTimestamp(); } - - bool IsRootVariant() const { return m_shaderVariantAsset->IsRootVariant(); } - - ShaderVariantStableId GetStableId() const { return m_shaderVariantAsset->GetStableId(); } - - private: - // Called by Shader. Initializes runtime data from asset data. Returns whether the call succeeded. - bool Init( - const ShaderAsset2& shaderAsset, - Data::Asset shaderVariantAsset, - SupervariantIndex supervariantIndex); - - // Cached state from the asset to avoid an indirection. - RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Count; - - // State assigned to the pipeline state descriptor. - RHI::ConstPtr m_pipelineLayoutDescriptor; - - Data::Asset m_shaderVariantAsset; - - const RHI::RenderStates* m_renderStates = nullptr; // Cached from ShaderAsset2. - }; - } -} diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariantAsyncLoader.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariantAsyncLoader.h index 9960e6bbe0..3cb76648fb 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariantAsyncLoader.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariantAsyncLoader.h @@ -40,29 +40,37 @@ namespace AZ void Init(); void Shutdown(); - struct PairOfShaderAssetAndShaderVariantId + struct TupleShaderAssetAndShaderVariantId { Data::Asset m_shaderAsset; ShaderVariantId m_shaderVariantId; + SupervariantIndex m_supervariantIndex; - bool operator==(const PairOfShaderAssetAndShaderVariantId& anotherPair) const + bool operator==(const TupleShaderAssetAndShaderVariantId& anotherTuple) const { - return (m_shaderAsset.GetId() == anotherPair.m_shaderAsset.GetId() && m_shaderVariantId == anotherPair.m_shaderVariantId); + return ( + (m_shaderAsset.GetId() == anotherTuple.m_shaderAsset.GetId()) && + (m_shaderVariantId == anotherTuple.m_shaderVariantId) && + (m_supervariantIndex == anotherTuple.m_supervariantIndex) + ); } }; /////////////////////////////////////////////////////////////////// // IShaderVariantFinder overrides - bool QueueLoadShaderVariantAssetByVariantId(Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId) override; + bool QueueLoadShaderVariantAssetByVariantId(Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) override; bool QueueLoadShaderVariantTreeAsset(const Data::AssetId& shaderAssetId) override; - bool QueueLoadShaderVariantAsset(const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId) override; + bool QueueLoadShaderVariantAsset(const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, SupervariantIndex supervariantIndex) override; Data::Asset GetShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId) override; + Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) override; Data::Asset GetShaderVariantAssetByStableId( - Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId) override; + Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId, + SupervariantIndex supervariantIndex) override; Data::Asset GetShaderVariantTreeAsset(const Data::AssetId& shaderAssetId) override; - Data::Asset GetShaderVariantAsset(const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId) override; + Data::Asset GetShaderVariantAsset( + const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, + SupervariantIndex supervariantIndex) override; void Reset() override; /////////////////////////////////////////////////////////////////// @@ -84,7 +92,7 @@ namespace AZ void ThreadServiceLoop(); void QueueShaderVariantTreeForLoading( - const PairOfShaderAssetAndShaderVariantId& shaderAndVariantPair, + const TupleShaderAssetAndShaderVariantId& shaderAndVariantTuple, AZStd::unordered_set& shaderVariantTreePendingRequests); //! This is a helper method called from the service thread. @@ -102,7 +110,7 @@ namespace AZ AZStd::condition_variable m_workCondition; //! This is a list of AssetId of ShaderVariantAsset. - AZStd::vector m_newShaderVariantPendingRequests; + AZStd::vector m_newShaderVariantPendingRequests; //! This is a list of AssetId of ShaderAsset (Do not confuse with the AssetId ShaderVariantTreeAsset). AZStd::vector m_shaderVariantTreePendingRequests; @@ -144,13 +152,14 @@ namespace AZStd }; template<> - struct hash + struct hash { - size_t operator()(const AZ::RPI::ShaderVariantAsyncLoader::PairOfShaderAssetAndShaderVariantId& pair) const + size_t operator()(const AZ::RPI::ShaderVariantAsyncLoader::TupleShaderAssetAndShaderVariantId& tuple) const { static constexpr AZStd::hash hash_fn; - size_t retVal = pair.m_shaderAsset.GetId().m_guid.GetHash(); - AZStd::hash_combine(retVal, hash_fn(pair.m_shaderVariantId)); + size_t retVal = tuple.m_shaderAsset.GetId().m_guid.GetHash(); + AZStd::hash_combine(retVal, hash_fn(tuple.m_shaderVariantId)); + AZStd::hash_combine(retVal, tuple.m_supervariantIndex.GetIndex()); return retVal; } }; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialAsset.h index c941f1f587..a219e69acd 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialAsset.h @@ -67,15 +67,33 @@ namespace AZ //! See MaterialFunctor.h for details. const MaterialFunctorList& GetMaterialFunctors() const; - //! Returns the shader resource group asset that has per-material frequency, which indicates most of the topology + //! Returns the shader resource group layout that has per-material frequency, which indicates most of the topology //! for a material's shaders. - //! All shaders in a material will have the same per-material SRG asset. - const Data::Asset& GetMaterialSrgAsset() const; - - //! Returns the shader resource group asset that has per-object frequency. What constitutes an "object" is an + //! All shaders in a material will have the same per-material SRG layout. + //! @param supervariantIndex: supervariant index to get the layout from. + const RHI::Ptr& GetMaterialSrgLayout(const SupervariantIndex& supervariantIndex) const; + + //! Same as above but accepts the supervariant name. There's a minor penalty when using this function + //! because it will discover the index from the name. + const RHI::Ptr& GetMaterialSrgLayout(const AZ::Name& supervariantName) const; + + //! Just like the original GetMaterialSrgLayout() where it uses the index of the default supervariant. + //! See the definition of DefaultSupervariantIndex. + const RHI::Ptr& GetMaterialSrgLayout() const; + + //! Returns the shader resource group layout that has per-object frequency. What constitutes an "object" is an //! agreement between the FeatureProcessor and the shaders, but an example might be world-transform for a model. - //! All shaders in a material will have the same per-object SRG asset. - const Data::Asset& GetObjectSrgAsset() const; + //! All shaders in a material will have the same per-object SRG layout. + //! @param supervariantIndex: supervariant index to get the layout from. + const RHI::Ptr& GetObjectSrgLayout(const SupervariantIndex& supervariantIndex) const; + + //! Same as above but accepts the supervariant name. There's a minor penalty when using this function + //! because it will discover the index from the name. + const RHI::Ptr& GetObjectSrgLayout(const AZ::Name& supervariantName) const; + + //! Just like the original GetObjectSrgLayout() where it uses the index of the default supervariant. + //! See the definition of DefaultSupervariantIndex. + const RHI::Ptr& GetObjectSrgLayout() const; //! Returns a layout that includes a list of MaterialPropertyDescriptors for each material property. const MaterialPropertiesLayout* GetMaterialPropertiesLayout() const; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAsset.h index 6b260b5ae3..7bc3a7c491 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAsset.h @@ -65,6 +65,8 @@ namespace AZ static const char* Group; static const char* Extension; + static constexpr uint32_t InvalidShaderIndex = static_cast(-1); + static void Reflect(ReflectContext* context); virtual ~MaterialTypeAsset(); @@ -77,15 +79,39 @@ namespace AZ //! See MaterialFunctor.h for details. const MaterialFunctorList& GetMaterialFunctors() const; - //! Returns the shader resource group asset that has per-material frequency, which indicates most of the topology + //! Returns the shader resource group layout that has per-material frequency, which indicates most of the topology //! for a material's shaders. - //! All shaders in a material will have the same per-material SRG asset. - const Data::Asset& GetMaterialSrgAsset() const; - - //! Returns the shader resource group asset that has per-object frequency. What constitutes an "object" is an + //! All shaders in a material will have the same per-material SRG layout. + //! @param supervariantIndex: supervariant index to get the layout from. + const RHI::Ptr& GetMaterialSrgLayout(const SupervariantIndex& supervariantIndex) const; + + //! Same as above but accepts the supervariant name. There's a minor penalty when using this function + //! because it will discover the index from the name. + const RHI::Ptr& GetMaterialSrgLayout(const AZ::Name& supervariantName) const; + + //! Just like the original GetMaterialSrgLayout() where it uses the index of the default supervariant. + //! See the definition of DefaultSupervariantIndex. + const RHI::Ptr& GetMaterialSrgLayout() const; + + //! Returns a ShaderAsset from @m_shaderCollection that contains the MaterialSrg layout. + const Data::Asset& GetShaderAssetForMaterialSrg() const; + + //! Returns the shader resource group layout that has per-object frequency. What constitutes an "object" is an //! agreement between the FeatureProcessor and the shaders, but an example might be world-transform for a model. - //! All shaders in a material will have the same per-object SRG asset. - const Data::Asset& GetObjectSrgAsset() const; + //! All shaders in a material will have the same per-object SRG layout. + //! @param supervariantIndex: supervariant index to get the layout from. + const RHI::Ptr& GetObjectSrgLayout(const SupervariantIndex& supervariantIndex) const; + + //! Same as above but accepts the supervariant name. There's a minor penalty when using this function + //! because it will discover the index from the name. + const RHI::Ptr& GetObjectSrgLayout(const AZ::Name& supervariantName) const; + + //! Just like the original GetObjectSrgLayout() where it uses the index of the default supervariant. + //! See the definition of DefaultSupervariantIndex. + const RHI::Ptr& GetObjectSrgLayout() const; + + //! Returns a ShaderAsset from @m_shaderCollection that contains the ObjectSrg layout. + const Data::Asset& GetShaderAssetForObjectSrg() const; //! Returns a layout that includes a list of MaterialPropertyDescriptors for each material property. const MaterialPropertiesLayout* GetMaterialPropertiesLayout() const; @@ -102,6 +128,9 @@ namespace AZ private: bool PostLoadInit(); + const RHI::Ptr& GetSrgLayout(uint32_t shaderIndex, const SupervariantIndex& supervariantIndex, uint32_t srgBindingSlot) const; + const RHI::Ptr& GetSrgLayout(uint32_t shaderIndex, const AZ::Name& supervariantName, uint32_t srgBindingSlot) const; + //! Called by asset creators to assign the asset to a ready state. void SetReady(); @@ -125,9 +154,12 @@ namespace AZ //! See MaterialFunctor.h for details. MaterialFunctorList m_materialFunctors; - //! Reference to the SRGs that are the same for all shaders in a material - Data::Asset m_materialSrgAsset; - Data::Asset m_objectSrgAsset; + //! Index in @m_shaderCollection of the shader asset that contains the MaterialSrg. + uint32_t m_materialSrgShaderIndex = InvalidShaderIndex; + + //! Index in @m_shaderCollection of the shader asset that contains the ObjectSrg. + uint32_t m_objectSrgShaderIndex = InvalidShaderIndex; + }; class MaterialTypeAssetHandler : public AssetHandler diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAssetCreator.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAssetCreator.h index 1afd6d9039..1fd89ebb2f 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAssetCreator.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialTypeAssetCreator.h @@ -101,16 +101,17 @@ namespace AZ void AddMaterialProperty(MaterialPropertyDescriptor&& materialProperty); - //! The material type holds references to the SRGs that are supposed to be the same across all passes in the material. This function - //! extracts a specific SRG from a ShaderAsset, saves it in the material type, and validates that all shaders use the same one. - //! @srgAssetToUpdate Points to a specific ShaderResourceGroupAsset in the MaterialTypeAsset being built. If null, this will be - //! filled with an SRG from the newShaderAsset. If not null, this will validate that the same SRG is used by newShaderAsset. + //! The material type holds references to shader assets that contain SRGs that are supposed to be the same across all passes in the material. + //! This function searches for an SRG given a @bindingSlot. If a valid one is found it makes sure it is the same across all shaders + //! and records in srgShaderIndexToUpdate the index of the ShaderAsset in the ShaderCollection where it was found. + //! @srgShaderIndexToUpdate Previously found shader index. If Invalid, this will be filled with the index of the shader Asset + //! where the bindingSlot was found. If not Invalid, this will validate that the same SRG is used by + //! newShaderAsset. + //! @newShaderAssetIndex Corresponding index of @newShaderAsset in m_asset->m_shaderCollection. //! @bindingSlot The binding slot ID of the SRG to fetch from newShaderAsset. - bool UpdateShaderResourceGroup( - Data::Asset& srgAssetToUpdate, - const Data::Asset& newShaderAsset, - uint32_t bindingSlot, - const char* srgDebugName); + bool UpdateShaderIndexForShaderResourceGroup( + uint32_t& srgShaderIndexToUpdate, const Data::Asset& newShaderAsset, const uint32_t newShaderAssetIndex, + const uint32_t bindingSlot, const char* srgDebugName); //! Saves the per-material SRG layout in m_shaderResourceGroupLayout for easier access void CacheMaterialSrgLayout(); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Pass/RasterPassData.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Pass/RasterPassData.h index bcce393ee1..fd241f3be6 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Pass/RasterPassData.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Pass/RasterPassData.h @@ -37,9 +37,9 @@ namespace AZ if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(2) + ->Version(3) // ATOM-15472 ->Field("DrawListTag", &RasterPassData::m_drawListTag) - ->Field("PassSrgAsset", &RasterPassData::m_passSrgReference) + ->Field("PassSrgShaderAsset", &RasterPassData::m_passSrgShaderReference) ->Field("Viewport", &RasterPassData::m_overrideViewport) ->Field("Scissor", &RasterPassData::m_overrideScissor) ->Field("DrawListSortType", &RasterPassData::m_drawListSortType) @@ -49,8 +49,8 @@ namespace AZ Name m_drawListTag; - //! Reference to the per pass SRG asset. This will be used to load the SRG in the raster pass. - AssetReference m_passSrgReference; + //! Reference to the shader asset that contains the PassSrg. This will be used to load the SRG in the raster pass. + AssetReference m_passSrgShaderReference; RHI::Viewport m_overrideViewport = RHI::Viewport::CreateNull(); RHI::Scissor m_overrideScissor = RHI::Scissor::CreateNull(); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/RPISystemDescriptor.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/RPISystemDescriptor.h index 3d0b9f4f63..4ff7b827e9 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/RPISystemDescriptor.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/RPISystemDescriptor.h @@ -15,7 +15,6 @@ #include #include #include -#include namespace AZ { @@ -38,11 +37,9 @@ namespace AZ RHI::RHISystemDescriptor m_rhiSystemDescriptor; - //! The path of the only one scene srg asset for the RPI system. This is used to create any RPI::Scene. - AZStd::string m_sceneSrgAssetPath = "shaderlib/scenesrg_scenesrg.azsrg"; - - //! The path of the only one view srg asset for the RPI system. This is used to create any RPI::View. - AZStd::string m_viewSrgAssetPath = "shaderlib/viewsrg_viewsrg.azsrg"; + //! The asset cache relative path of the only common shader asset for the RPI system that is used + //! as means to load the layout for scene srg and view srg. This is used to create any RPI::Scene. + AZStd::string m_commonSrgsShaderAssetPath = "shader/sceneandviewsrgs.azshader"; ImageSystemDescriptor m_imageSystemDescriptor; GpuQuerySystemDescriptor m_gpuQuerySystemDescriptor; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder.h index 75a1ba7339..ef98c32b24 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder.h @@ -13,6 +13,7 @@ #include +#include #include namespace AZ @@ -31,7 +32,7 @@ namespace AZ class IShaderVariantFinder { public: - AZ_TYPE_INFO(IShaderVariantFinder, "{B39F7407-BA4E-4F2F-810A-8B57D8080A04}"); + AZ_TYPE_INFO(IShaderVariantFinder, "{4E041C2C-F158-412E-8961-76987EC75692}"); static constexpr const char* LogName = "IShaderVariantFinder"; @@ -44,7 +45,8 @@ namespace AZ //! from the given ShaderVariantId. If a valid ShaderVariantStableId is found, it will be queued for loading. //! Eventually the caller will be notified via ShaderVariantFinderNotificationBus::OnShaderVariantAssetReady() //! The notification will occur on the Main Thread. - virtual bool QueueLoadShaderVariantAssetByVariantId(Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId) = 0; + virtual bool QueueLoadShaderVariantAssetByVariantId( + Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) = 0; //! This function does the first half of the work. It simply queues the loading of the ShaderVariantTreeAsset. //! Given the AssetId of a ShaderAsset it will try to find and load its corresponding ShaderVariantTreeAsset from @@ -62,15 +64,16 @@ namespace AZ //! ShaderVariantAsset is fully loaded. //! Returns true if the request was queued successfully. virtual bool QueueLoadShaderVariantAsset( - const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId) = 0; + const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, + SupervariantIndex supervariantIndex) = 0; //! This is a quick blocking call that will return a valid asset only if it's been fully loaded already, //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantAssetByVariantId(). virtual Data::Asset GetShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId) = 0; + Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) = 0; virtual Data::Asset GetShaderVariantAssetByStableId( - Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId) = 0; + Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) = 0; //! This is a quick blocking call that will return a valid asset only if it's been fully loaded already, //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantTreeAsset(). @@ -79,7 +82,8 @@ namespace AZ //! This is a quick blocking call that will return a valid asset only if i's been fully loaded already, //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantAsset(). virtual Data::Asset GetShaderVariantAsset( - const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId) = 0; + const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, + SupervariantIndex supervariantIndex) = 0; //! Clears the cache of loaded ShaderVariantTreeAsset and ShaderVariantAsset objects. //! This is intended for testing. diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h deleted file mode 100644 index e09169c9a0..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h +++ /dev/null @@ -1,113 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include - -#include -#include - -namespace AZ -{ - namespace RPI - { - class ShaderAsset2; - class ShaderVariantTreeAsset; - class ShaderVariantAsset2; - - //! This is the AZ::Interface<> declaration for the singleton responsible - //! for finding the best ShaderVariantAsset a shader can use. - //! This interface is public only to the ShaderAsset class. - //! The expectation is that when in need of shader variants the developer - //! should use AZ::RPI::Shader::GetVariant(). - class IShaderVariantFinder2 - { - public: - AZ_TYPE_INFO(IShaderVariantFinder2, "{4E041C2C-F158-412E-8961-76987EC75692}"); - - static constexpr const char* LogName = "IShaderVariantFinder2"; - - virtual ~IShaderVariantFinder2() = default; - - //! This function should be your one stop shop. - //! It simply queues the request to load a shader variant asset. - //! This function will automatically queue the ShaderVariantTreeAsset for loading if not available. - //! Afther the ShaderVariantTreeAsset is loaded and ready, it is used to find the best matching ShaderVariantStableId - //! from the given ShaderVariantId. If a valid ShaderVariantStableId is found, it will be queued for loading. - //! Eventually the caller will be notified via ShaderVariantFinderNotificationBus::OnShaderVariantAssetReady() - //! The notification will occur on the Main Thread. - virtual bool QueueLoadShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) = 0; - - //! This function does the first half of the work. It simply queues the loading of the ShaderVariantTreeAsset. - //! Given the AssetId of a ShaderAsset it will try to find and load its corresponding ShaderVariantTreeAsset from - //! the asset cache. If found, the asset will be loaded asynchronously and the caller will be notified via - //! ShaderVariantFinderNotificationBus on main thread when the ShaderVariantTreeAsset is fully loaded. - //! It is possible the requested ShaderVariantTreeAsset will never come into existence and in such - //! case the caller will NEVER be notified. - //! Returns true if the request was queued successfully. - virtual bool QueueLoadShaderVariantTreeAsset(const Data::AssetId& shaderAssetId) = 0; - - //! This function does the second half of the work. - //! Given the AssetId of a ShaderVariantTreeAsset and the stable id of a ShaderVariantAsset it will try to - //! find its corresponding ShaderVariantAsset from the asset cache. If found, the asset will be loaded - //! asynchronously and the caller will be notified via ShaderVariantFinderNotificationBus on main thread when the - //! ShaderVariantAsset is fully loaded. - //! Returns true if the request was queued successfully. - virtual bool QueueLoadShaderVariantAsset( - const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, - SupervariantIndex supervariantIndex) = 0; - - //! This is a quick blocking call that will return a valid asset only if it's been fully loaded already, - //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantAssetByVariantId(). - virtual Data::Asset GetShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) = 0; - - virtual Data::Asset GetShaderVariantAssetByStableId( - Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) = 0; - - //! This is a quick blocking call that will return a valid asset only if it's been fully loaded already, - //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantTreeAsset(). - virtual Data::Asset GetShaderVariantTreeAsset(const Data::AssetId& shaderAssetId) = 0; - - //! This is a quick blocking call that will return a valid asset only if i's been fully loaded already, - //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantAsset(). - virtual Data::Asset GetShaderVariantAsset( - const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, - SupervariantIndex supervariantIndex) = 0; - - //! Clears the cache of loaded ShaderVariantTreeAsset and ShaderVariantAsset objects. - //! This is intended for testing. - virtual void Reset() = 0; - }; - - //! IShaderVariantFinder2 will call on this notification bus on the main thread. - //! Only the following classes are supposed to register to this notification bus: - //! AZ::RPI::ShaderAsset & AZ::RPI::Shader - class ShaderVariantFinderNotification2 - : public EBusTraits - { - public: - ////////////////////////////////////////////////////////////////////////// - // EBusTraits overrides - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; - using MutexType = AZStd::recursive_mutex; - typedef Data::AssetId BusIdType; // The AssetId of the shader asset. - ////////////////////////////////////////////////////////////////////////// - - virtual void OnShaderVariantTreeAssetReady(Data::Asset shaderVariantTreeAsset, bool isError) = 0; - virtual void OnShaderVariantAssetReady(Data::Asset shaderVariantAsset, bool isError) = 0; - }; - using ShaderVariantFinderNotificationBus2 = AZ::EBus; - - } // namespace RPI -}// namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.h index 0991afbcbb..cbaae3d099 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.h @@ -49,7 +49,6 @@ namespace AZ AZStd::string m_shaderAssetFileName; AZStd::vector m_platformIdentifiers; - AZStd::vector m_srgAssetFileNames; AZStd::vector> m_rootShaderVariantAssets; }; } // namespace RPI diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h index cc31b0735a..a09f866bde 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h @@ -19,8 +19,8 @@ #include #include #include -#include #include +#include #include #include #include @@ -36,6 +36,23 @@ namespace AZ { namespace RPI { + using ShaderResourceGroupLayoutList = AZStd::fixed_vector, RHI::Limits::Pipeline::ShaderResourceGroupCountMax>; + + enum class ShaderAssetSubId : uint32_t + { + ShaderAsset = 0, //!< for .azshader file, One per .shader. + RootShaderVariantAsset, //!< for .azshadervariant, one per supervariant and referenced inside the .azshader. + FlatAzsl, //!< .azslin, this file contains the result of preprocessing an azsl file with MCPP, along with prepending the per-RHI azsli header. + IaJson, //!< .ia.json, Input Assembly reflection data. + OmJson, //!< .om.json, Output Merger reflection data. + SrgJson, //!< .srg.json, Shader Resource Group reflection data. + OptionsJson, //!< .options.json, Shader Options reflection data. + BindingdepJson, //!<.bindingdep.json, Binding dependencies. + GeneratedHlslSource, //!<.hlsl code generated with AZSLc. + FirstByProduct, //!< This must be last because we use this as a base for adding all the debug byProducts generated + //!< with dxc, or spirv-cross, etc. + }; + class ShaderAsset final : public Data::AssetData , public ShaderVariantFinderNotificationBus::Handler @@ -45,27 +62,49 @@ namespace AZ friend class ShaderAssetHandler; friend class ShaderAssetTester; public: - AZ_RTTI(ShaderAsset, "{892C4FF2-0B56-417D-AF2E-6FF04D6D6EA9}", Data::AssetData); - + AZ_RTTI(ShaderAsset, "{823395A3-D570-49F4-99A9-D820CD1DEF98}", Data::AssetData); static void Reflect(ReflectContext* context); - static const char* DisplayName; - static const char* Extension; - static const char* Group; + static constexpr char DisplayName[] = "Shader"; + static constexpr char Extension[] = "azshader"; + static constexpr char Group[] = "Shader"; //! The default shader variant (i.e. the one without any options set). static const ShaderVariantStableId RootShaderVariantStableId; - // @subProductType is one of ShaderAssetSubId, or (ShaderAssetSubId::GeneratedHlslSource + 1)+ - static uint32_t MakeAssetProductSubId(uint32_t rhiApiUniqueIndex, uint32_t subProductType); + + // @subProductType is one of ShaderAssetSubId, or ShaderAssetSubId::FirstByProduct+ + static uint32_t MakeProductAssetSubId(uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType); + static SupervariantIndex GetSupervariantIndexFromProductAssetSubId(uint32_t assetProducSubId); + static SupervariantIndex GetSupervariantIndexFromAssetId(const Data::AssetId& assetId); + ShaderAsset() = default; ~ShaderAsset(); AZ_DISABLE_COPY_MOVE(ShaderAsset); + //! Returns the name of the shader. const Name& GetName() const; + //! Returns the pipeline state type generated by variants of this shader. + RHI::PipelineStateType GetPipelineStateType() const; + + //! Returns the draw list tag name. + //! To get the corresponding DrawListTag use DrawListTagRegistry's FindTag() or AcquireTag() (see + //! RHISystemInterface::GetDrawListTagRegistry()). The DrawListTag is also available in the Shader that corresponds to this + //! ShaderAsset. + const Name& GetDrawListName() const; + + //! Return the timestamp when the shader asset was built. + //! This is used to synchronize versions of the ShaderAsset and ShaderVariantTreeAsset, especially during hot-reload. + AZStd::sys_time_t GetShaderAssetBuildTimestamp() const; + + //! Returns the shader option group layout. + const ShaderOptionGroupLayout* GetShaderOptionGroupLayout() const; + + SupervariantIndex GetSupervariantIndex(const AZ::Name& supervariantName) const; + //! This function should be your one stop shop to get a ShaderVariantAsset. //! Finds and returns the best matching ShaderVariantAsset given a ShaderVariantId. //! If the ShaderVariantAsset is not fully loaded and ready at the moment, this function @@ -74,7 +113,9 @@ namespace AZ //! ShaderVariantAsset is loaded and ready. //! In the mean time, if the required variant is not available this function //! returns the Root Variant. - Data::Asset GetVariant(const ShaderVariantId& shaderVariantId); + Data::Asset GetVariant( + const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex); + Data::Asset GetVariant(const ShaderVariantId& shaderVariantId) { return GetVariant(shaderVariantId, DefaultSupervariantIndex); } //! Finds the best matching shader variant and returns its StableId. //! This function first loads and caches the ShaderVariantTreeAsset (if not done before). @@ -90,45 +131,94 @@ namespace AZ //! Next time around if the variant has been loaded this function will return it. Alternatively //! the caller can register with the ShaderVariantFinderNotificationBus to get the asset as soon as is available. //! This function is thread safe. - Data::Asset GetVariant(ShaderVariantStableId shaderVariantStableId) const; + Data::Asset GetVariant( + ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) const; + Data::Asset GetVariant(ShaderVariantStableId shaderVariantStableId) const { return GetVariant(shaderVariantStableId, DefaultSupervariantIndex); } - Data::Asset GetRootVariant() const; + Data::Asset GetRootVariant(SupervariantIndex supervariantIndex) const; + Data::Asset GetRootVariant() const { return GetRootVariant(DefaultSupervariantIndex); } - //! Finds and returns the shader resource group asset with the requested name. Returns an empty handle if no matching group was found. - const Data::Asset& FindShaderResourceGroupAsset(const Name& shaderResourceGroupName) const; - //! Finds and returns the shader resource group asset associated with the requested binding slot. Returns an empty handle if no matching group was found. - const Data::Asset& FindShaderResourceGroupAsset(uint32_t bindingSlot) const; + //! Finds and returns the shader resource group asset with the requested name. Returns an empty handle if no matching group was + //! found. + const RHI::Ptr& FindShaderResourceGroupLayout( + const Name& shaderResourceGroupName, SupervariantIndex supervariantIndex) const; + const RHI::Ptr& FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const + { + return FindShaderResourceGroupLayout(shaderResourceGroupName, DefaultSupervariantIndex); + } - //! Finds and returns the shader resource group asset designated as a ShaderVariantKey fallback. - const Data::Asset& FindFallbackShaderResourceGroupAsset() const; + //! Finds and returns the shader resource group layout associated with the requested binding slot. Returns an empty handle if no matching srg was found. + const RHI::Ptr& FindShaderResourceGroupLayout( + uint32_t bindingSlot, SupervariantIndex supervariantIndex) const; + const RHI::Ptr& FindShaderResourceGroupLayout(uint32_t bindingSlot) const + { + return FindShaderResourceGroupLayout(bindingSlot, DefaultSupervariantIndex); + } - //! Returns the set of shader resource groups referenced by all variants in the shader asset. - AZStd::array_view> GetShaderResourceGroupAssets() const; + //! Finds and returns the shader resource group layout designated as a ShaderVariantKey fallback. + const RHI::Ptr& FindFallbackShaderResourceGroupLayout( SupervariantIndex supervariantIndex) const; + const RHI::Ptr& FindFallbackShaderResourceGroupLayout() const + { + return FindFallbackShaderResourceGroupLayout(DefaultSupervariantIndex); + } - //! Returns the pipeline state type generated by variants of this shader. - RHI::PipelineStateType GetPipelineStateType() const; + + //! Returns the set of shader resource group layouts owned by a given supervariant. + AZStd::array_view> GetShaderResourceGroupLayouts( SupervariantIndex supervariantIndex) const; + AZStd::array_view> GetShaderResourceGroupLayouts() const + { + return GetShaderResourceGroupLayouts(DefaultSupervariantIndex); + } //! Returns the pipeline layout descriptor shared by all variants in the asset. - const RHI::PipelineLayoutDescriptor* GetPipelineLayoutDescriptor() const; - - //! Returns the shader option group layout used by all variants in the shader asset. - const ShaderOptionGroupLayout* GetShaderOptionGroupLayout() const; + const RHI::PipelineLayoutDescriptor* GetPipelineLayoutDescriptor(SupervariantIndex supervariantIndex) const; + const RHI::PipelineLayoutDescriptor* GetPipelineLayoutDescriptor() const + { + return GetPipelineLayoutDescriptor(DefaultSupervariantIndex); + } //! Returns the shader resource group asset that has per-draw frequency, which is added to every draw packet. - const Data::Asset& GetDrawSrgAsset() const; + const RHI::Ptr& GetDrawSrgLayout(SupervariantIndex supervariantIndex) const; + const RHI::Ptr& GetDrawSrgLayout() const + { + return GetDrawSrgLayout(DefaultSupervariantIndex); + } + + + //! Returns the ShaderInputContract which describes which inputs the shader requires + const ShaderInputContract& GetInputContract(SupervariantIndex supervariantIndex) const; + const ShaderInputContract& GetInputContract() const + { + return GetInputContract(DefaultSupervariantIndex); + } + + + //! Returns the ShaderOuputContract which describes which outputs the shader requires + const ShaderOutputContract& GetOutputContract(SupervariantIndex supervariantIndex) const; + const ShaderOutputContract& GetOutputContract() const + { + return GetOutputContract(DefaultSupervariantIndex); + } + + + //! Returns the render states for the draw pipeline. Only used for draw pipelines. + const RHI::RenderStates& GetRenderStates(SupervariantIndex supervariantIndex) const; + const RHI::RenderStates& GetRenderStates() const + { + return GetRenderStates(DefaultSupervariantIndex); + } + //! Returns a list of arguments for the specified attribute, or nullopt_t if the attribute is not found. The list can be empty which is still valid. - AZStd::optional GetAttribute(const RHI::ShaderStage& shaderStage, const Name& attributeName) const; + AZStd::optional GetAttribute( + const RHI::ShaderStage& shaderStage, const Name& attributeName, SupervariantIndex supervariantIndex) const; + AZStd::optional GetAttribute( + const RHI::ShaderStage& shaderStage, const Name& attributeName) const + { + return GetAttribute(shaderStage, attributeName, DefaultSupervariantIndex); + } - //! Returns the draw list tag name. - //! To get the corresponding DrawListTag use DrawListTagRegistry's FindTag() or AcquireTag() (see RHISystemInterface::GetDrawListTagRegistry()). - //! The DrawListTag is also available in the Shader that corresponds to this ShaderAsset. - const Name& GetDrawListName() const; - - //! Return the timestamp when the shader asset was built. - //! This is used to synchronize versions of the ShaderAsset and ShaderVariantTreeAsset, especially during hot-reload. - AZStd::sys_time_t GetShaderAssetBuildTimestamp() const; private: /////////////////////////////////////////////////////////////////// @@ -142,27 +232,39 @@ namespace AZ void OnShaderVariantAssetReady(Data::Asset /*shaderVariantAsset*/, bool /*isError*/) override {}; /////////////////////////////////////////////////////////////////// + //! A Supervariant represents a set of static shader compilation parameters. + //! Those parameters can be predefined c-preprocessor macros or specific arguments + //! for AZSLc. + //! For each Supervariant there's a unique Root ShaderVariantAsset, and possibly an N amount + //! of ShaderVariantAssets. The 'N' amount is the same across all Supervariants because all Supervariants + //! share the same ShaderVariantTreeAsset. + struct Supervariant + { + AZ_TYPE_INFO(Supervariant, "{850826EF-B267-4752-92F6-A85E4175CAB8}"); + static void Reflect(AZ::ReflectContext* context); + + AZ::Name m_name; + ShaderResourceGroupLayoutList m_srgLayoutList; + RHI::Ptr m_pipelineLayoutDescriptor; + ShaderInputContract m_inputContract; + ShaderOutputContract m_outputContract; + RHI::RenderStates m_renderStates; + RHI::ShaderStageAttributeMapList m_attributeMaps; + Data::Asset m_rootShaderVariantAsset; + }; + //! Container of shader data that is specific to an RHI API. //! A ShaderAsset can contain shader data for multiple RHI APIs if //! the platform support multiple RHIs. struct ShaderApiDataContainer { - AZ_TYPE_INFO(ShaderApiDataContainer, "{1CF7F153-8355-4374-89EF-AD0F78B83D95}"); + AZ_TYPE_INFO(ShaderApiDataContainer, "{C636722C-60B9-421C-ACAD-9750BF634A27}"); static void Reflect(AZ::ReflectContext* context); //! RHI API Type for this shader data. RHI::APIType m_APIType; - - //! The pipeline layout is shared between all variants in the shader. - RHI::Ptr m_pipelineLayoutDescriptor; - - Data::Asset m_rootShaderVariantAsset; - - /////////////////////////////////////////////////////////////////// - //! List of attributes attached to the shader stage entry - //! In cases where the virtual shader stage maps to one shader entry function, the attributes are of that entry function - //! In cases where the virtual shader stage maps to multiple entries, the attributes list is a union of all attributes - RHI::ShaderStageAttributeMapList m_attributeMaps; + // Index 0, will always be the default Supervariant. (see DefaultSupervariantIndex) + AZStd::vector m_supervariants; }; bool FinalizeAfterLoad(); @@ -170,38 +272,50 @@ namespace AZ ShaderApiDataContainer& GetCurrentShaderApiData(); const ShaderApiDataContainer& GetCurrentShaderApiData() const; + //! Returning pointers instead of references to allow for error checking + //! and not having to assert. + Supervariant* GetSupervariant(SupervariantIndex supervariantIndex); + const Supervariant* GetSupervariant(SupervariantIndex supervariantIndex) const; + + + //! The name is the stem of the source .shader file. Name m_name; //! Dictates the type of pipeline state generated by this asset (Draw / Dispatch / etc.). - //! All shader variants in the asset adhere to this type. + //! All shader variants, across all supervariants, in the asset adhere to this type. RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Count; - //! Shader resource group assets referenced by this shader asset. - AZStd::fixed_vector, RHI::Limits::Pipeline::ShaderResourceGroupCountMax> m_shaderResourceGroupAssets; - //! Defines the layout of the shader options in the asset. Ptr m_shaderOptionGroupLayout; //! List with shader data per RHI backend. AZStd::vector m_perAPIShaderData; - static constexpr size_t InvalidAPITypeIndex = std::numeric_limits::max(); - - //! Index that indicates which ShaderDataContainer to use. - size_t m_currentAPITypeIndex = InvalidAPITypeIndex; - Name m_drawListName; - //! Used for thread safety for FindVariantStableId(). - mutable AZStd::shared_mutex m_variantTreeMutex; - //! Use to synchronize versions of the ShaderAsset and ShaderVariantTreeAsset, especially during hot-reload. AZStd::sys_time_t m_shaderAssetBuildTimestamp = 0; - //! Do Not Serialize! We can not know the ShaderVariantTreeAsset by the time this asset is being created. + + /////////////////////////////////////////////////////////////////// + //! Do Not Serialize! + + static constexpr size_t InvalidAPITypeIndex = std::numeric_limits::max(); + + //! Index that indicates which ShaderDataContainer to use. + //! At runtime, the asset checks the current active RHI Backend + //! and based on the results this variable gets set on asset load. + //! The vector @m_perAPIShaderData will be indexed with this variable. + size_t m_currentAPITypeIndex = InvalidAPITypeIndex; + + //! We can not know the ShaderVariantTreeAsset by the time this asset is being created. //! This is a value that is discovered at run time. It becomes valid when FindVariantStableId is called at least once. - Data::Asset m_shaderVariantTree; - bool m_shaderVariantTreeLoadWasRequested = false; + Data::Asset m_shaderVariantTree; + + //! Used for thread safety for FindVariantStableId(). + mutable AZStd::shared_mutex m_variantTreeMutex; + + bool m_shaderVariantTreeLoadWasRequested = false; }; class ShaderAssetHandler final @@ -219,22 +333,6 @@ namespace AZ Data::AssetHandler::LoadResult PostLoadInit(const Data::Asset& asset); }; - ////////////////////////////////////////////////////////////////////////// - // Deprecated System - enum class ShaderAssetSubId : uint32_t - { - ShaderAsset = 0, - RootShaderVariantAsset, - PostPreprocessingPureAzsl, // .azslin - IaJson, - OmJson, - SrgJson, - OptionsJson, - BindingdepJson, - GeneratedHlslSource // This must be last because we use this as a base for adding the RHI::APIType when generating shadersource for multiple RHI APIs. - }; - - ////////////////////////////////////////////////////////////////////////// } // namespace RPI diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h deleted file mode 100644 index 632c35bb82..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h +++ /dev/null @@ -1,339 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include - -namespace AZ -{ - namespace RPI - { - using ShaderResourceGroupLayoutList = AZStd::fixed_vector, RHI::Limits::Pipeline::ShaderResourceGroupCountMax>; - - enum class ShaderAsset2ProductSubId : uint32_t - { - ShaderAsset2 = 0, //!< for .azshader file, One per .shader. - RootShaderVariantAsset, //!< for .azshadervariant, one per supervariant and referenced inside the .azshader. - AzslFlat, //!< .azslin, this file contains the result of preprocessing an azsl file with MCPP, along with prepending the per-RHI azsli header. - IaJson, //!< .ia.json, Input Assembly reflection data. - OmJson, //!< .om.json, Output Merger reflection data. - SrgJson, //!< .srg.json, Shader Resource Group reflection data. - OptionsJson, //!< .options.json, Shader Options reflection data. - BindingdepJson, //!<.bindingdep.json, Binding dependencies. - GeneratedHlslSource, //!<.hlsl code generated with AZSLc. - FirstByProduct, //!< This must be last because we use this as a base for adding all the debug byProducts generated - //!< with dxc, or spirv-cross, etc. - }; - - class ShaderAsset2 final - : public Data::AssetData - , public ShaderVariantFinderNotificationBus2::Handler - , public Data::AssetBus::Handler - { - friend class ShaderAssetCreator2; - friend class ShaderAssetHandler2; - friend class ShaderAssetTester2; - public: - AZ_RTTI(ShaderAsset2, "{823395A3-D570-49F4-99A9-D820CD1DEF98}", Data::AssetData); - static void Reflect(ReflectContext* context); - - static constexpr char DisplayName[] = "Shader"; - static constexpr char Extension[] = "azshader2"; - static constexpr char Group[] = "Shader"; - - //! The default shader variant (i.e. the one without any options set). - static const ShaderVariantStableId RootShaderVariantStableId; - - // @subProductType is one of ShaderAsset2ProductSubId, or ShaderAsset2ProductSubId::FirstByProduct+ - static uint32_t MakeProductAssetSubId(uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType); - static SupervariantIndex GetSupervariantIndexFromProductAssetSubId(uint32_t assetProducSubId); - static SupervariantIndex GetSupervariantIndexFromAssetId(const Data::AssetId& assetId); - - - ShaderAsset2() = default; - ~ShaderAsset2(); - - AZ_DISABLE_COPY_MOVE(ShaderAsset2); - - - //! Returns the name of the shader. - const Name& GetName() const; - - //! Returns the pipeline state type generated by variants of this shader. - RHI::PipelineStateType GetPipelineStateType() const; - - //! Returns the draw list tag name. - //! To get the corresponding DrawListTag use DrawListTagRegistry's FindTag() or AcquireTag() (see - //! RHISystemInterface::GetDrawListTagRegistry()). The DrawListTag is also available in the Shader that corresponds to this - //! ShaderAsset2. - const Name& GetDrawListName() const; - - //! Return the timestamp when the shader asset was built. - //! This is used to synchronize versions of the ShaderAsset2 and ShaderVariantTreeAsset, especially during hot-reload. - AZStd::sys_time_t GetShaderAssetBuildTimestamp() const; - - //! Returns the shader option group layout. - const ShaderOptionGroupLayout* GetShaderOptionGroupLayout() const; - - SupervariantIndex GetSupervariantIndex(const AZ::Name& supervariantName) const; - - //! This function should be your one stop shop to get a ShaderVariantAsset. - //! Finds and returns the best matching ShaderVariantAsset given a ShaderVariantId. - //! If the ShaderVariantAsset is not fully loaded and ready at the moment, this function - //! will QueueLoad the ShaderVariantTreeAsset and subsequently will QueueLoad the ShaderVariantAsset. - //! The called will be notified via the ShaderVariantFinderNotificationBus when the - //! ShaderVariantAsset is loaded and ready. - //! In the mean time, if the required variant is not available this function - //! returns the Root Variant. - Data::Asset GetVariant( - const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex); - Data::Asset GetVariant(const ShaderVariantId& shaderVariantId) { return GetVariant(shaderVariantId, DefaultSupervariantIndex); } - - //! Finds the best matching shader variant and returns its StableId. - //! This function first loads and caches the ShaderVariantTreeAsset (if not done before). - //! If the ShaderVariantTreeAsset is not found (either the AssetProcessor has not generated it yet, or it simply doesn't exist), then - //! it returns a search result that identifies the root variant. - //! This function is thread safe. - ShaderVariantSearchResult FindVariantStableId(const ShaderVariantId& shaderVariantId); - - //! Returns the variant asset associated with the provided StableId. - //! The user should call FindVariantStableId() first to get a ShaderVariantStableId from a ShaderVariantId, - //! Or better yet, call GetVariant(ShaderVariantId) for maximum convenience. - //! If the requested variant is not found, the root variant will be returned AND the requested variant will be queued for loading. - //! Next time around if the variant has been loaded this function will return it. Alternatively - //! the caller can register with the ShaderVariantFinderNotificationBus to get the asset as soon as is available. - //! This function is thread safe. - Data::Asset GetVariant( - ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) const; - Data::Asset GetVariant(ShaderVariantStableId shaderVariantStableId) const { return GetVariant(shaderVariantStableId, DefaultSupervariantIndex); } - - Data::Asset GetRootVariant(SupervariantIndex supervariantIndex) const; - Data::Asset GetRootVariant() const { return GetRootVariant(DefaultSupervariantIndex); } - - - //! Finds and returns the shader resource group asset with the requested name. Returns an empty handle if no matching group was - //! found. - const RHI::Ptr FindShaderResourceGroupLayout( - const Name& shaderResourceGroupName, SupervariantIndex supervariantIndex) const; - const RHI::Ptr FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const - { - return FindShaderResourceGroupLayout(shaderResourceGroupName, DefaultSupervariantIndex); - } - - //! Finds and returns the shader resource group layout associated with the requested binding slot. Returns an empty handle if no matching srg was found. - const RHI::Ptr FindShaderResourceGroupLayout( - uint32_t bindingSlot, SupervariantIndex supervariantIndex) const; - const RHI::Ptr FindShaderResourceGroupLayout(uint32_t bindingSlot) const - { - return FindShaderResourceGroupLayout(bindingSlot, DefaultSupervariantIndex); - } - - //! Finds and returns the shader resource group layout designated as a ShaderVariantKey fallback. - const RHI::Ptr FindFallbackShaderResourceGroupLayout( SupervariantIndex supervariantIndex) const; - const RHI::Ptr FindFallbackShaderResourceGroupLayout() const - { - return FindFallbackShaderResourceGroupLayout(DefaultSupervariantIndex); - } - - - //! Returns the set of shader resource group layouts owned by a given supervariant. - AZStd::array_view> GetShaderResourceGroupLayouts( SupervariantIndex supervariantIndex) const; - AZStd::array_view> GetShaderResourceGroupLayouts() const - { - return GetShaderResourceGroupLayouts(DefaultSupervariantIndex); - } - - //! Returns the pipeline layout descriptor shared by all variants in the asset. - const RHI::PipelineLayoutDescriptor* GetPipelineLayoutDescriptor(SupervariantIndex supervariantIndex) const; - const RHI::PipelineLayoutDescriptor* GetPipelineLayoutDescriptor() const - { - return GetPipelineLayoutDescriptor(DefaultSupervariantIndex); - } - - //! Returns the shader resource group asset that has per-draw frequency, which is added to every draw packet. - const RHI::Ptr GetDrawSrgLayout(SupervariantIndex supervariantIndex) const; - const RHI::Ptr GetDrawSrgLayout() const - { - return GetDrawSrgLayout(DefaultSupervariantIndex); - } - - - //! Returns the ShaderInputContract which describes which inputs the shader requires - const ShaderInputContract& GetInputContract(SupervariantIndex supervariantIndex) const; - const ShaderInputContract& GetInputContract() const - { - return GetInputContract(DefaultSupervariantIndex); - } - - - //! Returns the ShaderOuputContract which describes which outputs the shader requires - const ShaderOutputContract& GetOutputContract(SupervariantIndex supervariantIndex) const; - const ShaderOutputContract& GetOutputContract() const - { - return GetOutputContract(DefaultSupervariantIndex); - } - - - //! Returns the render states for the draw pipeline. Only used for draw pipelines. - const RHI::RenderStates& GetRenderStates(SupervariantIndex supervariantIndex) const; - const RHI::RenderStates& GetRenderStates() const - { - return GetRenderStates(DefaultSupervariantIndex); - } - - - //! Returns a list of arguments for the specified attribute, or nullopt_t if the attribute is not found. The list can be empty which is still valid. - AZStd::optional GetAttribute( - const RHI::ShaderStage& shaderStage, const Name& attributeName, SupervariantIndex supervariantIndex) const; - AZStd::optional GetAttribute( - const RHI::ShaderStage& shaderStage, const Name& attributeName) const - { - return GetAttribute(shaderStage, attributeName, DefaultSupervariantIndex); - } - - - private: - /////////////////////////////////////////////////////////////////// - /// AssetBus overrides - void OnAssetReloaded(Data::Asset asset) override; - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus2 overrides - void OnShaderVariantTreeAssetReady(Data::Asset shaderVariantTreeAsset, bool isError) override; - void OnShaderVariantAssetReady(Data::Asset /*shaderVariantAsset*/, bool /*isError*/) override {}; - /////////////////////////////////////////////////////////////////// - - //! A Supervariant represents a set of static shader compilation parameters. - //! Those parameters can be predefined c-preprocessor macros or specific arguments - //! for AZSLc. - //! For each Supervariant there's a unique Root ShaderVariantAsset, and possibly an N amount - //! of ShaderVariantAssets. The 'N' amount is the same across all Supervariants because all Supervariants - //! share the same ShaderVariantTreeAsset. - struct Supervariant - { - AZ_TYPE_INFO(Supervariant, "{850826EF-B267-4752-92F6-A85E4175CAB8}"); - static void Reflect(AZ::ReflectContext* context); - - AZ::Name m_name; - ShaderResourceGroupLayoutList m_srgLayoutList; - RHI::Ptr m_pipelineLayoutDescriptor; - ShaderInputContract m_inputContract; - ShaderOutputContract m_outputContract; - RHI::RenderStates m_renderStates; - RHI::ShaderStageAttributeMapList m_attributeMaps; - Data::Asset m_rootShaderVariantAsset; - }; - - //! Container of shader data that is specific to an RHI API. - //! A ShaderAsset2 can contain shader data for multiple RHI APIs if - //! the platform support multiple RHIs. - struct ShaderApiDataContainer - { - AZ_TYPE_INFO(ShaderApiDataContainer, "{C636722C-60B9-421C-ACAD-9750BF634A27}"); - static void Reflect(AZ::ReflectContext* context); - - //! RHI API Type for this shader data. - RHI::APIType m_APIType; - // Index 0, will always be the default Supervariant. (see DefaultSupervariantIndex) - AZStd::vector m_supervariants; - }; - - bool FinalizeAfterLoad(); - void SetReady(); - ShaderApiDataContainer& GetCurrentShaderApiData(); - const ShaderApiDataContainer& GetCurrentShaderApiData() const; - - //! Returning pointers instead of references to allow for error checking - //! and not having to assert. - Supervariant* GetSupervariant(SupervariantIndex supervariantIndex); - const Supervariant* GetSupervariant(SupervariantIndex supervariantIndex) const; - - - //! The name is the stem of the source .shader file. - Name m_name; - - //! Dictates the type of pipeline state generated by this asset (Draw / Dispatch / etc.). - //! All shader variants, across all supervariants, in the asset adhere to this type. - RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Count; - - //! Defines the layout of the shader options in the asset. - Ptr m_shaderOptionGroupLayout; - - //! List with shader data per RHI backend. - AZStd::vector m_perAPIShaderData; - - Name m_drawListName; - - //! Use to synchronize versions of the ShaderAsset2 and ShaderVariantTreeAsset, especially during hot-reload. - AZStd::sys_time_t m_shaderAssetBuildTimestamp = 0; - - - /////////////////////////////////////////////////////////////////// - //! Do Not Serialize! - - static constexpr size_t InvalidAPITypeIndex = std::numeric_limits::max(); - - //! Index that indicates which ShaderDataContainer to use. - //! At runtime, the asset checks the current active RHI Backend - //! and based on the results this variable gets set on asset load. - //! The vector @m_perAPIShaderData will be indexed with this variable. - size_t m_currentAPITypeIndex = InvalidAPITypeIndex; - - //! We can not know the ShaderVariantTreeAsset by the time this asset is being created. - //! This is a value that is discovered at run time. It becomes valid when FindVariantStableId is called at least once. - Data::Asset m_shaderVariantTree; - - //! Used for thread safety for FindVariantStableId(). - mutable AZStd::shared_mutex m_variantTreeMutex; - - bool m_shaderVariantTreeLoadWasRequested = false; - }; - - class ShaderAssetHandler2 final - : public AssetHandler - { - using Base = AssetHandler; - public: - ShaderAssetHandler2() = default; - - private: - Data::AssetHandler::LoadResult LoadAssetData( - const Data::Asset& asset, - AZStd::shared_ptr stream, - const Data::AssetFilterCB& assetLoadFilterCB) override; - Data::AssetHandler::LoadResult PostLoadInit(const Data::Asset& asset); - }; - - ////////////////////////////////////////////////////////////////////////// - } // namespace RPI - -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator.h index a55befc76b..caa686d151 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator.h @@ -37,11 +37,6 @@ namespace AZ //! [Optional] Sets the DrawListTag name associated with this shader. void SetDrawListName(const Name& name); - //! [Optional] Adds a shader resource group asset. The order of shader resource group assets must match the same - //! order supplied to the pipeline layout descriptor. A mismatch will cause End() to fail. This method - //! requires that the asset be loaded in order to validate contents properly. - void AddShaderResourceGroupAsset(const Data::Asset& shaderResourceGroupAsset); - //! [Required] Assigns the layout used to construct and parse shader options packed into shader variant keys. //! Requires that the keys assigned to shader variants were constructed using the same layout. void SetShaderOptionGroupLayout(const Ptr& shaderOptionGroupLayout); @@ -51,33 +46,54 @@ namespace AZ //! @param type The target RHI API type. void BeginAPI(RHI::APIType type); - //! [Required] There's always a root variant for each RHI::APIType. - void SetRootShaderVariantAsset(Data::Asset shaderVariantAsset); + //! Begins the creation of a Supervariant for the current RHI::APIType. + //! If this is the first supervariant its name must be empty. The first + //! supervariant is always the default, nameless, supervariant. + void BeginSupervariant(const Name& name); - //! [Optional] Not all shaders have attributes before functions. Some attributes do not exist for all RHI::APIType either. - void SetShaderStageAttributeMapList(const RHI::ShaderStageAttributeMapList& shaderStageAttributeMapList); + void SetSrgLayoutList(const ShaderResourceGroupLayoutList& srgLayoutList); //! [Required] Assigns the pipeline layout descriptor shared by all variants in the shader. Shader variants //! embedded in a single shader asset are required to use the same pipeline layout. It is not necessary to call //! Finalize() on the pipeline layout prior to assignment, but still permitted. - void SetPipelineLayout(const Ptr& pipelineLayoutDescriptor); + void SetPipelineLayout(RHI::Ptr m_pipelineLayoutDescriptor); + + //! Assigns the contract for inputs required by the shader. + void SetInputContract(const ShaderInputContract& contract); + + //! Assigns the contract for outputs required by the shader. + void SetOutputContract(const ShaderOutputContract& contract); + + //! Assigns the render states for the draw pipeline. Ignored for non-draw pipelines. + void SetRenderStates(const RHI::RenderStates& renderStates); + + //! [Optional] Not all shaders have attributes before functions. Some attributes do not exist for all RHI::APIType either. + void SetShaderStageAttributeMapList(const RHI::ShaderStageAttributeMapList& shaderStageAttributeMapList); + + //! [Required] There's always a root variant for each supervariant. + void SetRootShaderVariantAsset(Data::Asset shaderVariantAsset); + + bool EndSupervariant(); bool EndAPI(); bool End(Data::Asset& shaderAsset); - //! Clones an existing ShaderAsset and replaces the referenced Srg and Variant assets. - using ShaderResourceGroupAssets = AZStd::vector>; + //! Clones an existing ShaderAsset nd replaces the referenced Srg and Variant assets using ShaderRootVariantAssets = AZStd::vector>>; void Clone(const Data::AssetId& assetId, - const ShaderAsset* sourceShaderAsset, - const ShaderResourceGroupAssets& srgAssets, + const ShaderAsset& sourceShaderAsset, const ShaderRootVariantAssets& rootVariantAssets); private: - // Shader variants will use this draw list when they don't specify one + // Shader variants will use this draw list when they don't specify one. Name m_defaultDrawList; + + // The current supervariant is cached here to facilitate asset + // construction. Additionally, prevents BeginSupervariant to be called more than once before calling EndSupervariant. + ShaderAsset::Supervariant* m_currentSupervariant = nullptr; + }; } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h deleted file mode 100644 index 263d2e5107..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h +++ /dev/null @@ -1,97 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include -#include - -#include - -namespace AZ -{ - namespace RPI - { - class ShaderAssetCreator2 - : public AssetCreator - { - public: - //! Begins creation of a shader asset. - void Begin(const Data::AssetId& assetId); - - //! [Optional] Set the timestamp for when the ShaderAsset build process began. - //! This is needed to synchronize between the ShaderAsset and ShaderVariantTreeAsset when hot-reloading shaders. - void SetShaderAssetBuildTimestamp(AZStd::sys_time_t shaderAssetBuildTimestamp); - - //! [Optional] Sets the name of the shader asset from content. - void SetName(const Name& name); - - //! [Optional] Sets the DrawListTag name associated with this shader. - void SetDrawListName(const Name& name); - - //! [Required] Assigns the layout used to construct and parse shader options packed into shader variant keys. - //! Requires that the keys assigned to shader variants were constructed using the same layout. - void SetShaderOptionGroupLayout(const Ptr& shaderOptionGroupLayout); - - //! Begins the shader creation for a specific RHI API. - //! Begin must be called before the BeginAPI function is called. - //! @param type The target RHI API type. - void BeginAPI(RHI::APIType type); - - //! Begins the creation of a Supervariant for the current RHI::APIType. - //! If this is the first supervariant its name must be empty. The first - //! supervariant is always the default, nameless, supervariant. - void BeginSupervariant(const Name& name); - - void SetSrgLayoutList(const ShaderResourceGroupLayoutList& srgLayoutList); - - //! [Required] Assigns the pipeline layout descriptor shared by all variants in the shader. Shader variants - //! embedded in a single shader asset are required to use the same pipeline layout. It is not necessary to call - //! Finalize() on the pipeline layout prior to assignment, but still permitted. - void SetPipelineLayout(RHI::Ptr m_pipelineLayoutDescriptor); - - //! Assigns the contract for inputs required by the shader. - void SetInputContract(const ShaderInputContract& contract); - - //! Assigns the contract for outputs required by the shader. - void SetOutputContract(const ShaderOutputContract& contract); - - //! Assigns the render states for the draw pipeline. Ignored for non-draw pipelines. - void SetRenderStates(const RHI::RenderStates& renderStates); - - //! [Optional] Not all shaders have attributes before functions. Some attributes do not exist for all RHI::APIType either. - void SetShaderStageAttributeMapList(const RHI::ShaderStageAttributeMapList& shaderStageAttributeMapList); - - //! [Required] There's always a root variant for each supervariant. - void SetRootShaderVariantAsset(Data::Asset shaderVariantAsset); - - bool EndSupervariant(); - - bool EndAPI(); - - bool End(Data::Asset& shaderAsset); - - //! Clones an existing ShaderAsset. - void Clone(const Data::AssetId& assetId, - const ShaderAsset2& sourceShaderAsset); - - private: - - // Shader variants will use this draw list when they don't specify one. - Name m_defaultDrawList; - - // The current supervariant is cached here to facilitate asset - // construction. Additionally, prevents BeginSupervariant to be called more than once before calling EndSupervariant. - ShaderAsset2::Supervariant* m_currentSupervariant = nullptr; - - }; - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h index 35a12fbf45..6d42ac386e 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h @@ -18,7 +18,7 @@ namespace AZ { namespace RPI { - // Common bit positions for ShaderAsset2 and ShaderVariantAsset2 product SubIds. + // Common bit positions for ShaderAsset and ShaderVariantAsset product SubIds. static constexpr uint32_t RhiIndexBitPosition = 30; static constexpr uint32_t RhiIndexNumBits = 32 - RhiIndexBitPosition; static constexpr uint32_t RhiIndexMaxValue = (1 << RhiIndexNumBits) - 1; @@ -29,9 +29,14 @@ namespace AZ //! A wrapper around a supervariant index for type conformity. //! A supervariant index is required to find shader data from - //! Shader2 and ShaderAsset2 related APIs. - using SupervariantIndex = RHI::Handle; + //! Shader and ShaderAsset related APIs. + using SupervariantIndex = RHI::Handle; + + //! All ShaderAssets are guaranteed to have at least one supervariant. + //! It is the Default Supervariant and it is always the first supervariant + //! in the list of supervariants owned by the ShaderAsset. static const SupervariantIndex DefaultSupervariantIndex(0); + static const SupervariantIndex InvalidSupervariantIndex; enum class ShaderStageType : uint32_t diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAsset.h deleted file mode 100644 index 5268a09963..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAsset.h +++ /dev/null @@ -1,105 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include -#include - -#include - -#include - -namespace AZ -{ - namespace RHI - { - class ShaderResourceGroupLayout; - } - - namespace RPI - { - //! This asset defines the layout of a shader resource group, including any relevant metadata about reflected shader inputs. - //! - //! This is an immutable, serialized asset. It can be either serialized-in or created dynamically using ShaderResourceGroupAssetCreator. - //! See RPI::ShaderResourceGroup for runtime features based on this asset. - class ShaderResourceGroupAsset final - : public AZ::Data::AssetData - { - friend class ShaderResourceGroupAssetCreator; - friend class ShaderResourceGroupAssetHandler; - friend class ShaderResourceGroupAssetTester; - - public: - AZ_RTTI(ShaderResourceGroupAsset, "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}", AZ::Data::AssetData); - AZ_CLASS_ALLOCATOR(ShaderResourceGroupAsset, AZ::SystemAllocator, 0); - - static const char* DisplayName; - static const char* Group; - static const char* Extension; - - static void Reflect(ReflectContext* context); - - ShaderResourceGroupAsset() = default; - - AZ_DISABLE_COPY_MOVE(ShaderResourceGroupAsset); - - //! Returns the name of the ShaderResourceGroup, which is unique within the containing shader. - const Name& GetName() const; - - //! Returns the layout that defines the low-level hardware layout for shader input bindings for the current API. - const RHI::ShaderResourceGroupLayout* GetLayout() const; - - //! Returns the layout that defines the low-level hardware layout for shader input bindings for a specific API. - const RHI::ShaderResourceGroupLayout* GetLayout(const RHI::APIType type) const; - - bool IsValid() const; - - private: - //! Called by asset creators to assign the asset to a ready state. - void SetReady(); - - bool FinalizeAfterLoad(); - - //! Find the index in the m_perAPILayout for a API type. - size_t FindAPITypeIndex(RHI::APIType type) const; - - //! The name ID of the SRG, unique within the parent shader. - Name m_name; - - //! The layout of the SRG - using APIShaderResourceGroupLayout = AZStd::pair>; - AZStd::vector m_perAPILayout; - - static constexpr const size_t InvalidAPITypeIndex = std::numeric_limits::max(); - - //! Index that indicates which ShaderResourceGroupLayout to use. - size_t m_currentAPITypeIndex = InvalidAPITypeIndex; - }; - - //! Asset handler for the Shader Resource Group asset. - class ShaderResourceGroupAssetHandler final - : public AssetHandler - { - using Base = AssetHandler; - public: - ShaderResourceGroupAssetHandler() = default; - - private: - Data::AssetHandler::LoadResult LoadAssetData( - const Data::Asset& asset, - AZStd::shared_ptr stream, - const Data::AssetFilterCB& assetLoadFilterCB) override; - Data::AssetHandler::LoadResult PostLoadInit(const Data::Asset& asset); - }; - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.h deleted file mode 100644 index 8c7ef00ab0..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.h +++ /dev/null @@ -1,71 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - class ShaderResourceGroup; - - //! Use a ShaderResourceGroupAssetCreator to create and configure a new ShaderResourceGroupAsset. - //! Can create a ShaderResourceGroupAsset for multiple RHI APIs. - class ShaderResourceGroupAssetCreator - : public AssetCreator - { - public: - //! Begins construction of the shader resource group asset. - //! @param shaderResourceGroupName The friendly name used to identify the SRG at runtime, unique within the parent shader. - void Begin(const AZ::Data::AssetId& assetId, const Name& shaderResourceGroupName); - - //! Begins the shader resource group layout creation for a specific RHI API. - //! Begin must be called before the BeginAPI function is called. - //! @param type The target RHI API type. - void BeginAPI(RHI::APIType type); - - //! Assigns the binding slot used by all shader resource groups which use this asset. - void SetBindingSlot(uint32_t bindingSlot); - - //! Designates this SRG as ShaderVariantKey fallback - void SetShaderVariantKeyFallback(const Name& shaderInputName, uint32_t bitSize); - - //! Adds a static sampler to the shader resource group. Static samplers cannot be changed at runtime. - void AddStaticSampler(const RHI::ShaderInputStaticSamplerDescriptor& shaderInputStaticSampler); - - //! Adds a shader input to the ShaderResourceGroupLayout. - void AddShaderInput(const RHI::ShaderInputBufferDescriptor& shaderInputBuffer); - void AddShaderInput(const RHI::ShaderInputImageDescriptor& shaderInputImage); - void AddShaderInput(const RHI::ShaderInputBufferUnboundedArrayDescriptor& shaderInputBufferUnboundedArray); - void AddShaderInput(const RHI::ShaderInputImageUnboundedArrayDescriptor& shaderInputImageUnboundedArray); - void AddShaderInput(const RHI::ShaderInputSamplerDescriptor& shaderInputSampler); - void AddShaderInput(const RHI::ShaderInputConstantDescriptor& shaderInputConstant); - - //! Finalizes and assigns ownership of the asset to result, if successful. - //! Otherwise false is returned and result is left untouched. - bool End(Data::Asset& result); - - bool EndAPI(); - - private: - //! Release all temporary resources when building ends - void Cleanup(); - - RHI::APIType m_currentAPIType; - - RHI::Ptr m_shaderResourceGroupLayout; - }; - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h index 22ce16b9f8..7e88a99b09 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h @@ -13,14 +13,9 @@ #include -#include -#include #include - #include #include -#include -#include namespace AZ { @@ -35,7 +30,7 @@ namespace AZ friend class ShaderVariantAssetCreator; public: - AZ_RTTI(ShaderVariantAsset, "{9F4D654B-4439-4C61-8DCD-F1C7C5560768}", Data::AssetData); + AZ_RTTI(ShaderVariantAsset, "{51BED815-36D8-410E-90F0-1FA9FF765FBA}", Data::AssetData); static void Reflect(ReflectContext* context); @@ -43,12 +38,12 @@ namespace AZ static constexpr const char* DisplayName = "ShaderVariant"; static constexpr const char* Group = "Shader"; - static constexpr uint32_t ShaderVariantAssetSubProductType = 0; + static constexpr uint32_t ShaderVariantAssetSubProductType = 1; //! @rhiApiUniqueIndex comes from RHI::Factory::GetAPIUniqueIndex() //! @subProductType is always 0 for a regular ShaderVariantAsset, for all other debug subProducts created //! by ShaderVariantAssetBuilder this is 1+. static uint32_t MakeAssetProductSubId( - uint32_t rhiApiUniqueIndex, ShaderVariantStableId variantStableId, + uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, ShaderVariantStableId variantStableId, uint32_t subProductType = ShaderVariantAssetSubProductType); ShaderVariantAsset() = default; @@ -63,23 +58,14 @@ namespace AZ //! Returns the shader stage function associated with the provided stage enum value. const RHI::ShaderStageFunction* GetShaderStageFunction(RHI::ShaderStage shaderStage) const; - //! Returns the ShaderInputContract which describes which inputs the shader requires - const ShaderInputContract& GetInputContract() const; - - //! Returns the ShaderOuputContract which describes which outputs the shader requires - const ShaderOutputContract& GetOutputContract() const; - - //! Returns the render states for the draw pipeline. Only used for draw pipelines. - const RHI::RenderStates& GetRenderStates() const; - //! Returns whether the variant is fully baked variant (all options are static branches), or false if the //! variant uses dynamic branches for some shader options. //! If the shader variant is not fully baked, the ShaderVariantKeyFallbackValue must be correctly set when drawing. bool IsFullyBaked() const; - //! Return the timestamp when the associated ShaderAsset was built. + //! Return the timestamp when this asset was built, and it must be >= than the timestamp of the main ShaderAsset. //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::sys_time_t GetShaderAssetBuildTimestamp() const; + AZStd::sys_time_t GetBuildTimestamp() const; bool IsRootVariant() const { return m_stableId == RPI::RootShaderVariantStableId; } @@ -92,20 +78,13 @@ namespace AZ RPI::ShaderVariantStableId m_stableId; ShaderVariantId m_shaderVariantId; - ShaderInputContract m_inputContract; - ShaderOutputContract m_outputContract; - bool m_isFullyBaked = false; - //! The only reason the render states are part of the ShaderVariantAsset - //! instead of ShaderAsset is because the m_blendStage.m_targets[i] - //! get populated by the number of colorAttachementCounts which comes from - //! the output contract which is a per variant piece of data. - RHI::RenderStates m_renderStates; + bool m_isFullyBaked = false; AZStd::array, RHI::ShaderStageCount> m_functionsByStage; //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - AZStd::sys_time_t m_shaderAssetBuildTimestamp = 0; + AZStd::sys_time_t m_buildTimestamp = 0; }; class ShaderVariantAssetHandler final diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h deleted file mode 100644 index 82e868fda8..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h +++ /dev/null @@ -1,104 +0,0 @@ -/* -* 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. -* -*/ -#pragma once - -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - //! A ShaderVariantAsset2 contains the shader byte code for each shader stage (Vertex, Fragment, Tessellation, etc) for a given RHI::APIType (dx12, vulkan, metal, etc). - //! One independent file per RHI::APIType. - class ShaderVariantAsset2 final - : public Data::AssetData - { - friend class ShaderVariantAssetHandler2; - friend class ShaderVariantAssetCreator2; - - public: - AZ_RTTI(ShaderVariantAsset2, "{51BED815-36D8-410E-90F0-1FA9FF765FBA}", Data::AssetData); - - static void Reflect(ReflectContext* context); - - static constexpr const char* Extension = "azshadervariant2"; - static constexpr const char* DisplayName = "ShaderVariant"; - static constexpr const char* Group = "Shader"; - - static constexpr uint32_t ShaderVariantAsset2SubProductType = 1; - //! @rhiApiUniqueIndex comes from RHI::Factory::GetAPIUniqueIndex() - //! @subProductType is always 0 for a regular ShaderVariantAsset2, for all other debug subProducts created - //! by ShaderVariantAssetBuilder2 this is 1+. - static uint32_t MakeAssetProductSubId( - uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, ShaderVariantStableId variantStableId, - uint32_t subProductType = ShaderVariantAsset2SubProductType); - - ShaderVariantAsset2() = default; - ~ShaderVariantAsset2() = default; - - AZ_DISABLE_COPY_MOVE(ShaderVariantAsset2); - - RPI::ShaderVariantStableId GetStableId() const { return m_stableId; } - - const ShaderVariantId& GetShaderVariantId() const { return m_shaderVariantId; } - - //! Returns the shader stage function associated with the provided stage enum value. - const RHI::ShaderStageFunction* GetShaderStageFunction(RHI::ShaderStage shaderStage) const; - - //! Returns whether the variant is fully baked variant (all options are static branches), or false if the - //! variant uses dynamic branches for some shader options. - //! If the shader variant is not fully baked, the ShaderVariantKeyFallbackValue must be correctly set when drawing. - bool IsFullyBaked() const; - - //! Return the timestamp when this asset was built, and it must be >= than the timestamp of the main ShaderAsset. - //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset2, especially during hot-reload. - AZStd::sys_time_t GetBuildTimestamp() const; - - bool IsRootVariant() const { return m_stableId == RPI::RootShaderVariantStableId; } - - private: - //! Called by asset creators to assign the asset to a ready state. - void SetReady(); - bool FinalizeAfterLoad(); - - //! See AZ::RPI::ShaderVariantListSourceData::VariantInfo::m_stableId for details. - RPI::ShaderVariantStableId m_stableId; - - ShaderVariantId m_shaderVariantId; - - bool m_isFullyBaked = false; - - AZStd::array, RHI::ShaderStageCount> m_functionsByStage; - - //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset2, especially during hot-reload. - AZStd::sys_time_t m_buildTimestamp = 0; - }; - - class ShaderVariantAssetHandler2 final - : public AssetHandler - { - using Base = AssetHandler; - public: - ShaderVariantAssetHandler2() = default; - - private: - LoadResult LoadAssetData(const Data::Asset& asset, AZStd::shared_ptr stream, const AZ::Data::AssetFilterCB& assetLoadFilterCB) override; - bool PostLoadInit(const Data::Asset& asset); - }; - - } // namespace RPI - -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/System/SceneDescriptor.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/System/SceneDescriptor.h index 371c8afced..6a9d5c200c 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/System/SceneDescriptor.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/System/SceneDescriptor.h @@ -12,7 +12,6 @@ #pragma once -#include #include #include #include diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp b/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp index 70752bf02b..a67bce4acb 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp @@ -26,8 +26,6 @@ #include #include #include -#include -#include #include #include #include @@ -36,7 +34,6 @@ #include #include #include -#include #include #include @@ -90,8 +87,6 @@ namespace AZ m_assetWorkers.emplace_back(MakeAssetBuilder()); m_assetHandlers.emplace_back(MakeAssetHandler()); - m_assetHandlers.emplace_back(MakeAssetHandler()); - m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); @@ -101,7 +96,6 @@ namespace AZ m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); - m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp b/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp index d31b6b3802..0cd0b7cff1 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/Material/MaterialBuilder.cpp @@ -19,7 +19,6 @@ #include #include -#include #include #include #include diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/Pass/PassBuilder.cpp b/Gems/Atom/RPI/Code/Source/RPI.Builders/Pass/PassBuilder.cpp index 1b02d5eb48..e2d951fcdb 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/Pass/PassBuilder.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/Pass/PassBuilder.cpp @@ -41,7 +41,7 @@ namespace AZ { AssetBuilderSDK::AssetBuilderDesc builder; builder.m_name = PassBuilderJobKey; - builder.m_version = 11; + builder.m_version = 12; // ATOM-15472 builder.m_busId = azrtti_typeid(); builder.m_createJobFunction = AZStd::bind(&PassBuilder::CreateJobs, this, AZStd::placeholders::_1, AZStd::placeholders::_2); builder.m_processJobFunction = AZStd::bind(&PassBuilder::ProcessJob, this, AZStd::placeholders::_1, AZStd::placeholders::_2); @@ -114,23 +114,6 @@ namespace AZ AZStd::string path = assetReference->m_filePath; uint32_t subId = 0; - // [GFX TODO][ATOM-2789] This is a temporary hack that assumes anything ending with ":foo" is indicating the name of an SRG which is used to generate the SRG AssetId - if (path.find(':') != AZStd::string::npos) - { - AZStd::vector tokens; - AzFramework::StringFunc::Tokenize(assetReference->m_filePath.c_str(), tokens, ":"); - if (tokens.size() == 2) - { - path = tokens[0]; - subId = AssetUtils::CalcSrgProductSubId(Name{tokens[1]}); - } - else - { - AZ_Error(PassBuilderName, false, "Path not formatted correctly [%s]", assetReference->m_filePath.c_str()); - foundProblems = true; - } - } - auto assetIdOutcome = AssetUtils::MakeAssetId(path, subId); if (assetIdOutcome) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp index 32cffc771a..3cefa696c3 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Common/AssetUtils.cpp @@ -21,12 +21,6 @@ namespace AZ { namespace AssetUtils { - uint32_t CalcSrgProductSubId(const Name& srgName) - { - //[GFX TODO] Make SrgLayoutBuilder share this code after the gems reorg is complete - return static_cast(AZStd::hash()(srgName.GetStringView()) & 0xFFFFFFFF); - } - AZStd::string GetProductPathByAssetId(const AZ::Data::AssetId& assetId) { AZStd::string productPath; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp index 109af70166..ea623a1f48 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Material/MaterialTypeSourceData.cpp @@ -324,7 +324,7 @@ namespace AZ ); // Gather UV names - const ShaderInputContract& shaderInputContract = shaderAsset.GetValue()->GetRootVariant()->GetInputContract(); + const ShaderInputContract& shaderInputContract = shaderAsset.GetValue()->GetInputContract(); for (const ShaderInputContract::StreamChannelInfo& channel : shaderInputContract.m_streamChannels) { const RHI::ShaderSemantic& semantic = channel.m_semantic; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp index cca35533fe..e21c87648f 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp @@ -13,15 +13,13 @@ #include -#include -#include #include namespace AZ { namespace RPI { - void ShaderVariantAssetCreator::Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, const ShaderOptionGroupLayout* shaderOptionGroupLayout) + void ShaderVariantAssetCreator::Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, bool isFullyBaked) { BeginCommon(assetId); @@ -29,16 +27,7 @@ namespace AZ { m_asset->m_stableId = stableId; m_asset->m_shaderVariantId = shaderVariantId; - - if (shaderOptionGroupLayout) - { - ShaderOptionGroup shaderOptions{shaderOptionGroupLayout, shaderVariantId}; - m_asset->m_isFullyBaked = shaderOptions.IsFullySpecified(); - } - else if(shaderVariantId.m_mask.any()) - { - ReportError("ShaderVariantId is not empty, but no ShaderOptionGroupLayout was provided"); - } + m_asset->m_isFullyBaked = isFullyBaked; } } @@ -55,6 +44,12 @@ namespace AZ return false; } + if (!m_asset->m_buildTimestamp) + { + ReportError("Invalid timestamp"); + return false; + } + bool foundDrawFunctions = false; bool foundDispatchFunctions = false; @@ -91,27 +86,7 @@ namespace AZ return false; } - const ShaderInputContract& shaderInputContract = m_asset->m_inputContract; - // Validate that each stream ID appears only once. - for (const auto& channel : shaderInputContract.m_streamChannels) - { - int count = 0; - for (const auto& searchChannel : shaderInputContract.m_streamChannels) - { - if (channel.m_semantic == searchChannel.m_semantic) - { - ++count; - } - } - - if (count > 1) - { - ReportError("Input stream channel '%s' appears multiple times. For Shader Variant with StableId '%u' ", - channel.m_semantic.ToString().c_str(), m_asset->m_stableId); - return false; - } - } m_asset->SetReady(); return EndCommon(result); @@ -121,11 +96,11 @@ namespace AZ ///////////////////////////////////////////////////////////////////// // Methods for all shader variant types - void ShaderVariantAssetCreator::SetShaderAssetBuildTimestamp(AZStd::sys_time_t shaderAssetBuildTimestamp) + void ShaderVariantAssetCreator::SetBuildTimestamp(AZStd::sys_time_t buildTimestamp) { if (ValidateIsReady()) { - m_asset->m_shaderAssetBuildTimestamp = shaderAssetBuildTimestamp; + m_asset->m_buildTimestamp = buildTimestamp; } } @@ -137,33 +112,5 @@ namespace AZ } } - ///////////////////////////////////////////////////////////////////// - // Methods for PipelineStateType::Draw variants. - - void ShaderVariantAssetCreator::SetInputContract(const ShaderInputContract& contract) - { - if (ValidateIsReady()) - { - m_asset->m_inputContract = contract; - } - } - - void ShaderVariantAssetCreator::SetOutputContract(const ShaderOutputContract& contract) - { - if (ValidateIsReady()) - { - m_asset->m_outputContract = contract; - } - } - - void ShaderVariantAssetCreator::SetRenderStates(const RHI::RenderStates& renderStates) - { - if (ValidateIsReady()) - { - m_asset->m_renderStates = renderStates; - } - } - - } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp deleted file mode 100644 index 2936ed50f9..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* -* 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. -* -*/ -#include - -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - void ShaderVariantAssetCreator2::Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, bool isFullyBaked) - { - BeginCommon(assetId); - - if (ValidateIsReady()) - { - m_asset->m_stableId = stableId; - m_asset->m_shaderVariantId = shaderVariantId; - m_asset->m_isFullyBaked = isFullyBaked; - } - } - - bool ShaderVariantAssetCreator2::End(Data::Asset& result) - { - if (!ValidateIsReady()) - { - return false; - } - - if (!m_asset->FinalizeAfterLoad()) - { - ReportError("Failed to finalize the ShaderResourceGroupAsset."); - return false; - } - - bool foundDrawFunctions = false; - bool foundDispatchFunctions = false; - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Vertex) || - m_asset->GetShaderStageFunction(RHI::ShaderStage::Tessellation) || - m_asset->GetShaderStageFunction(RHI::ShaderStage::Fragment)) - { - foundDrawFunctions = true; - } - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Compute)) - { - foundDispatchFunctions = true; - } - - - if (foundDrawFunctions && foundDispatchFunctions) - { - ReportError("ShaderVariant contains both Draw functions and Dispatch functions."); - return false; - } - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Fragment) && - !m_asset->GetShaderStageFunction(RHI::ShaderStage::Vertex)) - { - ReportError("Shader Variant with StableId '%u' has a fragment function but no vertex function.", m_asset->m_stableId); - return false; - } - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Tessellation) && - !m_asset->GetShaderStageFunction(RHI::ShaderStage::Vertex)) - { - ReportError("Shader Variant with StableId '%u' has a tessellation function but no vertex function.", m_asset->m_stableId); - return false; - } - - - - m_asset->SetReady(); - return EndCommon(result); - } - - - ///////////////////////////////////////////////////////////////////// - // Methods for all shader variant types - - void ShaderVariantAssetCreator2::SetBuildTimestamp(AZStd::sys_time_t buildTimestamp) - { - if (ValidateIsReady()) - { - m_asset->m_buildTimestamp = buildTimestamp; - } - } - - void ShaderVariantAssetCreator2::SetShaderFunction(RHI::ShaderStage shaderStage, RHI::Ptr shaderStageFunction) - { - if (ValidateIsReady()) - { - m_asset->m_functionsByStage[static_cast(shaderStage)] = shaderStageFunction; - } - } - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp index 00c2122825..1a575c9385 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp @@ -129,17 +129,17 @@ namespace AZ } // Create per context srg if it exist - auto shaderAsset = shader->GetAsset(); - auto contextSrgAsset = shaderAsset->FindShaderResourceGroupAsset(Name{ PerContextSrgName }); - if (contextSrgAsset.GetId().IsValid()) + auto contextSrgLayout = m_shader->FindShaderResourceGroupLayout(Name { PerContextSrgName }); + if (contextSrgLayout) { - m_srgPerContext = AZ::RPI::ShaderResourceGroup::Create(contextSrgAsset); + m_srgPerContext = AZ::RPI::ShaderResourceGroup::Create( + m_shader->GetAsset(), m_shader->GetSupervariantIndex(), Name { PerContextSrgName }); m_srgGroups[0] = m_srgPerContext->GetRHIShaderResourceGroup(); } // Save per draw srg asset which can be used to create draw srg later - m_drawSrgAsset = shaderAsset->FindShaderResourceGroupAsset(SrgBindingSlot::Draw); - m_hasShaderVariantKeyFallbackEntry = (m_drawSrgAsset && m_drawSrgAsset->GetLayout()->HasShaderVariantKeyFallbackEntry()); + m_drawSrgLayout = m_shader->FindShaderResourceGroupLayout(SrgBindingSlot::Draw); + m_hasShaderVariantKeyFallbackEntry = (m_drawSrgLayout && m_drawSrgLayout->HasShaderVariantKeyFallbackEntry()); } void DynamicDrawContext::InitVertexFormat(const AZStd::vector& vertexChannels) @@ -397,7 +397,7 @@ namespace AZ return; } - if (m_drawSrgAsset.GetId().IsValid() && drawSrg == nullptr) + if (!m_drawSrgLayout) { AZ_Assert(false, "PerDrawSrg need to be provided since the shader uses it"); return; @@ -487,7 +487,7 @@ namespace AZ return; } - if (m_drawSrgAsset.GetId().IsValid() && drawSrg == nullptr) + if (!m_drawSrgLayout) { AZ_Assert(false, "PerDrawSrg need to be provided since the shader uses it"); return; @@ -563,11 +563,11 @@ namespace AZ Data::Instance DynamicDrawContext::NewDrawSrg() { - if (!m_drawSrgAsset.IsReady()) + if (!m_drawSrgLayout) { return nullptr; } - auto drawSrg = AZ::RPI::ShaderResourceGroup::Create(m_drawSrgAsset); + auto drawSrg = AZ::RPI::ShaderResourceGroup::Create(m_shader->GetAsset(), m_shader->GetSupervariantIndex(), m_drawSrgLayout->GetName()); // Set fallback value for shader variant if draw srg contains constant for shader variant fallback if (m_hasShaderVariantKeyFallbackEntry) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Image/ImageSystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Image/ImageSystem.cpp index f7cdc2ff71..2f29058020 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Image/ImageSystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Image/ImageSystem.cpp @@ -132,13 +132,10 @@ namespace AZ } // Register streaming image controller instance database. - // Note, third party gems may add new handlers to this InstanceDatabase as well, to handle custom implementations. - { - Data::InstanceDatabase::Create(azrtti_typeid()); - - Data::InstanceDatabase::Instance().AddHandler( - azrtti_typeid(), &DefaultStreamingImageController::CreateInternal); + Data::InstanceHandler handler; + handler.m_createFunction = DefaultStreamingImageController::CreateInternal; + Data::InstanceDatabase::Create(azrtti_typeid(), handler); } m_defaultStreamingImageControllerAsset = diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Material/Material.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Material/Material.cpp index 4a2718b9d5..4e65d68d6c 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Material/Material.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Material/Material.cpp @@ -63,13 +63,13 @@ namespace AZ AZ_TRACE_METHOD(); m_materialAsset = { &materialAsset, AZ::Data::AssetLoadBehavior::PreLoad }; - - // Cache off pointers to some key data structures from the material type... - auto& srgAsset = m_materialAsset->GetMaterialSrgAsset(); - if (srgAsset) + // Cache off pointers to some key data structures from the material type... + auto srgLayout = m_materialAsset->GetMaterialSrgLayout(); + if (srgLayout) { - m_shaderResourceGroup = ShaderResourceGroup::Create(m_materialAsset->GetMaterialSrgAsset()); + auto shaderAsset = m_materialAsset->GetMaterialTypeAsset()->GetShaderAssetForMaterialSrg(); + m_shaderResourceGroup = ShaderResourceGroup::Create(shaderAsset, DefaultSupervariantIndex, srgLayout->GetName()); if (m_shaderResourceGroup) { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp index b1265b1228..79e1f7d1d0 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/MeshDrawPacket.cpp @@ -166,8 +166,6 @@ namespace AZ return false; } - const AZ::Data::Asset& drawSrgAsset = shader->GetAsset()->GetDrawSrgAsset(); - // Set all unspecified shader options to default values, so that we get the most specialized variant possible. // (because FindVariantStableId treats unspecified options as a request specifically for a variant that doesn't specify those options) // [GFX TODO][ATOM-3883] We should consider updating the FindVariantStableId algorithm to handle default values for us, and remove this step here. @@ -177,7 +175,7 @@ namespace AZ // [GFX_TODO][ATOM-14476]: according to this usage, we should make the shader input contract uniform across all shader variants. m_modelLod->CheckOptionalStreams( shaderOptions, - shader->GetVariant(ShaderAsset::RootShaderVariantStableId).GetInputContract(), + shader->GetInputContract(), m_modelLodMeshIndex, m_materialModelUvMap, m_material->GetAsset()->GetMaterialTypeAsset()->GetUvNameMap()); @@ -215,7 +213,7 @@ namespace AZ pipelineStateDescriptor.m_inputStreamLayout, streamBufferViews, &uvStreamTangentBitmask, - variant.GetInputContract(), + shader->GetInputContract(), m_modelLodMeshIndex, m_materialModelUvMap, m_material->GetAsset()->GetMaterialTypeAsset()->GetUvNameMap())) @@ -223,14 +221,15 @@ namespace AZ return false; } + auto drawSrgLayout = shader->GetAsset()->GetDrawSrgLayout(shader->GetSupervariantIndex()); Data::Instance drawSrg; - if (drawSrgAsset) + if (drawSrgLayout) { AZ_PROFILE_SCOPE(Debug::ProfileCategory::AzRender, "create drawSrg"); // If the DrawSrg exists we must create and bind it, otherwise the CommandList will fail validation for SRG being null - drawSrg = RPI::ShaderResourceGroup::Create(drawSrgAsset); + drawSrg = RPI::ShaderResourceGroup::Create(shader->GetAsset(), shader->GetSupervariantIndex(), drawSrgLayout->GetName()); - if (!variant.IsFullyBaked() && drawSrgAsset->GetLayout()->HasShaderVariantKeyFallbackEntry()) + if (!variant.IsFullyBaked() && drawSrgLayout->HasShaderVariantKeyFallbackEntry()) { drawSrg->SetShaderVariantKeyFallbackValue(shaderOptions.GetShaderVariantKeyFallbackValue()); } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp index 6435ae9570..a7262517dd 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/AttachmentReadback.cpp @@ -134,10 +134,10 @@ namespace AZ } // Load SRG - const Data::Asset& srgAsset = m_decomposeShader->FindShaderResourceGroupAsset(Name{ "ObjectSrg" }); - if (srgAsset) + const auto srgLayout = m_decomposeShader->FindShaderResourceGroupLayout(SrgBindingSlot::Object); + if (srgLayout) { - m_decomposeSrg = ShaderResourceGroup::Create(srgAsset); + m_decomposeSrg = ShaderResourceGroup::Create(m_decomposeShader->GetAsset(), m_decomposeShader->GetSupervariantIndex(), srgLayout->GetName()); if (!m_decomposeSrg) { @@ -320,8 +320,14 @@ namespace AZ { if (m_state == ReadbackState::Reading) { - CopyBufferData(readbackBufferCurrentIndex); - m_state = ReadbackState::Success; + if (CopyBufferData(readbackBufferCurrentIndex)) + { + m_state = ReadbackState::Success; + } + else + { + m_state = ReadbackState::Failed; + } } if (m_callback) { @@ -498,13 +504,13 @@ namespace AZ return result; } - void AttachmentReadback::CopyBufferData(uint32_t readbackBufferIndex) + bool AttachmentReadback::CopyBufferData(uint32_t readbackBufferIndex) { Data::Instance readbackBufferCurrent = m_readbackBufferArray[readbackBufferIndex]; if (!readbackBufferCurrent) { - return; + return false; } auto bufferSize = readbackBufferCurrent->GetBufferSize(); @@ -537,6 +543,7 @@ namespace AZ } m_isReadbackComplete[readbackBufferIndex] = true; + return true; } } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ComputePass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ComputePass.cpp index 5077ccaa51..0253ef0c9b 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ComputePass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ComputePass.cpp @@ -87,10 +87,10 @@ namespace AZ } // Load Pass SRG... - const Data::Asset& passSrgAsset = m_shader->FindShaderResourceGroupAsset(SrgBindingSlot::Pass); - if (passSrgAsset) + const auto passSrgLayout = m_shader->FindShaderResourceGroupLayout(SrgBindingSlot::Pass); + if (passSrgLayout) { - m_shaderResourceGroup = ShaderResourceGroup::Create(passSrgAsset); + m_shaderResourceGroup = ShaderResourceGroup::Create(shaderAsset, m_shader->GetSupervariantIndex(), passSrgLayout->GetName()); AZ_Assert(m_shaderResourceGroup, "[ComputePass '%s']: Failed to create SRG from shader asset '%s'", GetPathName().GetCStr(), @@ -100,10 +100,10 @@ namespace AZ } // Load Draw SRG... - const Data::Asset& drawSrgAsset = m_shader->FindShaderResourceGroupAsset(SrgBindingSlot::Draw); - if (drawSrgAsset) + const auto drawSrgLayout = m_shader->FindShaderResourceGroupLayout(SrgBindingSlot::Draw); + if (drawSrgLayout) { - m_drawSrg = ShaderResourceGroup::Create(drawSrgAsset); + m_drawSrg = ShaderResourceGroup::Create(shaderAsset, m_shader->GetSupervariantIndex(), drawSrgLayout->GetName()); } RHI::DispatchDirect dispatchArgs; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/CopyPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/CopyPass.cpp index 4a6c883584..9648a47fd6 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/CopyPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/CopyPass.cpp @@ -74,7 +74,7 @@ namespace AZ // --- Pass behavior overrides --- - void CopyPass::BuildAttachmentsInternal() + void CopyPass::BuildInternal() { AZ_Assert(GetInputCount() == 1 && GetOutputCount() == 1, "CopyPass has %d inputs and %d outputs. It should have exactly one of each.", diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp index 1f8f361b8b..7235bb343d 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/FullscreenTrianglePass.cpp @@ -64,6 +64,8 @@ namespace AZ void FullscreenTrianglePass::LoadShader() { + AZ_Assert(GetPassState() != PassState::Rendering, "FullscreenTrianglePass - Reloading shader during Rendering phase!"); + // Load FullscreenTrianglePassData const FullscreenTrianglePassData* passData = PassUtils::GetPassData(m_passDescriptor); if (passData == nullptr) @@ -98,10 +100,10 @@ namespace AZ } // Load Pass SRG - const Data::Asset& passSrgAsset = m_shader->FindShaderResourceGroupAsset(Name{ "PassSrg" }); - if (passSrgAsset) + const auto passSrgLayout = m_shader->FindShaderResourceGroupLayout(SrgBindingSlot::Pass); + if (passSrgLayout) { - m_shaderResourceGroup = ShaderResourceGroup::Create(passSrgAsset); + m_shaderResourceGroup = ShaderResourceGroup::Create(shaderAsset, m_shader->GetSupervariantIndex(), passSrgLayout->GetName()); AZ_Assert(m_shaderResourceGroup, "[FullscreenTrianglePass '%s']: Failed to create SRG from shader asset '%s'", GetPathName().GetCStr(), @@ -112,23 +114,25 @@ namespace AZ // Load Draw SRG // this is necessary since the shader may have options, which require a default draw SRG - const Data::Asset& drawSrgAsset = m_shader->FindShaderResourceGroupAsset(Name{ "DrawSrg" }); - if (drawSrgAsset) + const auto drawSrgLayout = m_shader->FindShaderResourceGroupLayout(SrgBindingSlot::Draw); + if (drawSrgLayout) { - m_drawShaderResourceGroup = ShaderResourceGroup::Create(drawSrgAsset); + m_drawShaderResourceGroup = ShaderResourceGroup::Create(shaderAsset, m_shader->GetSupervariantIndex(), drawSrgLayout->GetName()); } // Store stencil reference value for the draw call m_stencilRef = passData->m_stencilRef; - m_flags.m_initialized = false; + QueueForInitialization(); ShaderReloadNotificationBus::Handler::BusDisconnect(); ShaderReloadNotificationBus::Handler::BusConnect(shaderAsset.GetId()); } - void FullscreenTrianglePass::Init() + void FullscreenTrianglePass::InitializeInternal() { + RenderPass::InitializeInternal(); + // This draw item purposefully does not reference any geometry buffers. // Instead it's expected that the extended class uses a vertex shader // that generates a full-screen triangle completely from vertex ids. @@ -155,17 +159,10 @@ namespace AZ m_item.m_arguments = RHI::DrawArguments(draw); m_item.m_pipelineState = m_shader->AcquirePipelineState(pipelineStateDescriptor); m_item.m_stencilRef = m_stencilRef; - - m_flags.m_initialized = true; } void FullscreenTrianglePass::FrameBeginInternal(FramePrepareParams params) { - if (!m_flags.m_initialized) - { - Init(); - } - const PassAttachment* outputAttachment = nullptr; if (GetOutputCount() > 0) @@ -225,11 +222,6 @@ namespace AZ commandList->Submit(m_item); } - - void FullscreenTrianglePass::Invalidate() - { - m_flags.m_initialized = false; - } } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/MSAAResolvePass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/MSAAResolvePass.cpp index c889f367b7..e457cb4992 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/MSAAResolvePass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/MSAAResolvePass.cpp @@ -38,7 +38,7 @@ namespace AZ { } - void MSAAResolvePass::BuildAttachmentsInternal() + void MSAAResolvePass::BuildInternal() { AZ_Assert(GetOutputCount() != 0, "MSAAResolvePass %s has no outputs to render to.", GetPathName().GetCStr()); } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ParentPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ParentPass.cpp index 106ef82bf1..cbae56e809 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ParentPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/ParentPass.cpp @@ -40,7 +40,7 @@ namespace AZ ParentPass::ParentPass(const PassDescriptor& descriptor) : Pass(descriptor) { - CreateChildPasses(); + m_flags.m_createChildren = true; } ParentPass::~ParentPass() @@ -59,7 +59,7 @@ namespace AZ child->m_parent = this; child->OnHierarchyChange(); - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); // Notify pipeline if (m_pipeline) @@ -248,25 +248,18 @@ namespace AZ void ParentPass::CreateChildPasses() { - // Flag prevents the function from executing multiple times a frame. Can happen - // as pass system has a list of passes for which it needs to call this function. - if (m_flags.m_alreadyCreated) + // The already created flag prevents this function from executing multiple times a frame + if (!m_flags.m_createChildren || m_flags.m_alreadyCreatedChildren) { return; } - m_flags.m_alreadyCreated = true; + m_flags.m_alreadyCreatedChildren = true; + RemoveChildren(); CreatePassesFromTemplate(); CreateChildPassesInternal(); - for (Ptr& child : m_children) - { - ParentPass* asParent = child->AsParent(); - if (asParent != nullptr) - { - asParent->CreateChildPasses(); - } - } + m_flags.m_createChildren = false; } void ParentPass::ResetInternal() @@ -277,19 +270,29 @@ namespace AZ } } - void ParentPass::BuildAttachmentsInternal() + void ParentPass::BuildInternal() { + CreateChildPasses(); + for (const Ptr& child : m_children) { - child->BuildAttachments(); + child->Build(); } } - void ParentPass::OnBuildAttachmentsFinishedInternal() + void ParentPass::OnInitializationFinishedInternal() { for (const Ptr& child : m_children) { - child->OnBuildAttachmentsFinished(); + child->OnInitializationFinished(); + } + } + + void ParentPass::InitializeInternal() + { + for (const Ptr& child : m_children) + { + child->Initialize(); } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Pass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Pass.cpp index 1e230a7fc0..99a6e23914 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Pass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Pass.cpp @@ -37,10 +37,12 @@ #include #include + namespace AZ { namespace RPI { + // --- Constructors --- Pass::Pass(const PassDescriptor& descriptor) @@ -71,7 +73,10 @@ namespace AZ } PassSystemInterface::Get()->RegisterPass(this); - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); + + // Skip reset since the pass just got created + m_state = PassState::Reset; } Pass::~Pass() @@ -151,6 +156,8 @@ namespace AZ { AZ_RPI_PASS_ASSERT(m_parent != nullptr, "Trying to remove pass from parent but pointer to the parent pass is null."); m_parent->RemoveChild(Ptr(this)); + m_queueState = PassQueueState::NoQueue; + m_state = PassState::Idle; } void Pass::OnOrphan() @@ -162,6 +169,11 @@ namespace AZ // --- Getters & Setters --- + PassState Pass::GetPassState() const + { + return m_state; + } + ParentPass* Pass::GetParent() const { return m_parent; @@ -348,32 +360,6 @@ namespace AZ return nullptr; } - // --- Queuing functions with PassSystem --- - - void Pass::QueueForBuildAttachments() - { - // Don't queue if we're in building phase - if (!PassSystemInterface::Get()->IsBuilding()) - { - // m_queuedForBuildAttachment makes sure the pass only be queue for once - if (!m_flags.m_queuedForBuildAttachment) - { - PassSystemInterface::Get()->QueueForBuildAttachments(this); - m_flags.m_queuedForBuildAttachment = true; - - // Set these two flags to false since when queue build attachments request, they should all be already be false except one use - // case that the pass system processed all queued requests when active a scene. - m_flags.m_alreadyPrepared = false; - m_flags.m_alreadyReset = false; - } - } - } - - void Pass::QueueForRemoval([[maybe_unused]] bool needsDeletion) - { - PassSystemInterface::Get()->QueueForRemoval(this); - } - // --- PassTemplate related functions --- void Pass::CreateBindingsFromTemplate() @@ -403,7 +389,7 @@ namespace AZ PassAttachmentBinding* localBinding = FindAttachmentBinding(slot); if (!localBinding) { - AZ_RPI_PASS_ERROR(false, "Pass::AttachBufferToSlot - Pass %s failed to find slot %s.", + AZ_RPI_PASS_ERROR(false, "Pass::AttachBufferToSlot - Pass [%s] failed to find slot [%s].", m_path.GetCStr(), slot.GetCStr()); return; } @@ -413,7 +399,7 @@ namespace AZ // handle the connected bindings if (localBinding->m_attachment) { - AZ_RPI_PASS_ERROR(false, "Pass::AttachBufferToSlot - Slot %s already has attachment %s.", + AZ_RPI_PASS_ERROR(false, "Pass::AttachBufferToSlot - Slot [%s] already has attachment [%s].", slot.GetCStr(), localBinding->m_attachment->m_name.GetCStr()); return; } @@ -435,7 +421,7 @@ namespace AZ PassAttachmentBinding* localBinding = FindAttachmentBinding(slot); if (!localBinding) { - AZ_RPI_PASS_ERROR(false, "Pass::AttachImageToSlot - Pass %s failed to find slot %s.", + AZ_RPI_PASS_ERROR(false, "Pass::AttachImageToSlot - Pass [%s] failed to find slot [%s].", m_path.GetCStr(), slot.GetCStr()); return; } @@ -445,7 +431,7 @@ namespace AZ // handle the connected bindings if (localBinding->m_attachment) { - AZ_RPI_PASS_ERROR(false, "Pass::AttachImageToSlot - Slot %s already has attachment %s.", + AZ_RPI_PASS_ERROR(false, "Pass::AttachImageToSlot - Slot [%s] already has attachment [%s].", slot.GetCStr(), localBinding->m_attachment->m_name.GetCStr()); return; } @@ -468,7 +454,7 @@ namespace AZ PassAttachmentBinding* localBinding = FindAttachmentBinding(connection.m_localSlot); if (!localBinding) { - AZ_RPI_PASS_ERROR(false, "Pass::ProcessConnection - Pass %s failed to find slot %s.", + AZ_RPI_PASS_ERROR(false, "Pass::ProcessConnection - Pass [%s] failed to find slot [%s].", m_path.GetCStr(), connection.m_localSlot.GetCStr()); return; @@ -490,7 +476,7 @@ namespace AZ { foundPass = true; const Ptr attachment = FindOwnedAttachment(connectedSlotName); - AZ_RPI_PASS_ERROR(attachment, "Pass::ProcessConnection - Pass %s doesn't own an attachment named %s.", + AZ_RPI_PASS_ERROR(attachment, "Pass::ProcessConnection - Pass [%s] doesn't own an attachment named [%s].", m_path.GetCStr(), connectedSlotName.GetCStr()); localBinding->SetAttachment(attachment); @@ -601,10 +587,10 @@ namespace AZ if (!outputBinding || !inputBinding) { - AZ_RPI_PASS_ERROR(inputBinding, "Pass::ProcessFallbackConnection - Pass %s failed to find input slot %s.", + AZ_RPI_PASS_ERROR(inputBinding, "Pass::ProcessFallbackConnection - Pass [%s] failed to find input slot [%s].", m_path.GetCStr(), connection.m_inputSlotName.GetCStr()); - AZ_RPI_PASS_ERROR(outputBinding, "Pass::ProcessFallbackConnection - Pass %s failed to find output slot %s.", + AZ_RPI_PASS_ERROR(outputBinding, "Pass::ProcessFallbackConnection - Pass [%s] failed to find output slot [%s].", m_path.GetCStr(), connection.m_outputSlotName.GetCStr()); return; @@ -614,10 +600,10 @@ namespace AZ if (!typesAreValid) { - AZ_RPI_PASS_ERROR(inputBinding->m_slotType == PassSlotType::Input, "Pass::ProcessFallbackConnection - Pass %s specifies fallback connection input %s, which is not an input.", + AZ_RPI_PASS_ERROR(inputBinding->m_slotType == PassSlotType::Input, "Pass::ProcessFallbackConnection - Pass [%s] specifies fallback connection input [%s], which is not an input.", m_path.GetCStr(), connection.m_inputSlotName.GetCStr()); - AZ_RPI_PASS_ERROR(outputBinding->m_slotType == PassSlotType::Output, "Pass::ProcessFallbackConnection - Pass %s specifies fallback connection output %s, which is not an output.", + AZ_RPI_PASS_ERROR(outputBinding->m_slotType == PassSlotType::Output, "Pass::ProcessFallbackConnection - Pass [%s] specifies fallback connection output [%s], which is not an output.", m_path.GetCStr(), connection.m_inputSlotName.GetCStr()); return; @@ -1007,7 +993,7 @@ namespace AZ { Ptr targetAttachment = nullptr; - if (!m_flags.m_isBuildingAttachments && !IsEnabled() && binding.m_slotType == PassSlotType::Output && binding.m_fallbackBinding) + if (m_state != PassState::Building && !IsEnabled() && binding.m_slotType == PassSlotType::Output && binding.m_fallbackBinding) { targetAttachment = binding.m_fallbackBinding->m_attachment; } @@ -1028,7 +1014,7 @@ namespace AZ // Check whether the template's slot allows this attachment if (m_template && !m_template->AttachmentFitsSlot(targetAttachment->m_descriptor, binding.m_name)) { - AZ_RPI_PASS_ERROR(false, "Pass::UpdateConnectedBinding - Attachment %s did not match the filters of input slot %s on pass %s.", + AZ_RPI_PASS_ERROR(false, "Pass::UpdateConnectedBinding - Attachment [%s] did not match the filters of input slot [%s] on pass [%s].", targetAttachment->m_name.GetCStr(), binding.m_name.GetCStr(), m_path.GetCStr()); @@ -1050,17 +1036,83 @@ namespace AZ } } + // --- Queuing functions with PassSystem --- + + void Pass::QueueForBuildAndInitialization() + { + // Don't queue if we're currently building. Don't queue if we're already queued for Build or Removal + if (m_state != PassState::Building && + m_queueState != PassQueueState::QueuedForBuildAndInitialization && + m_queueState != PassQueueState::QueuedForRemoval) + { + // NOTE: We only queue for Build here, the queue for Initialization happens at the end of Pass::Build + // (doing it this way is an optimization to minimize the number of passes queued for initialization, + // as many passes will be initialized by their parent passes and thus don't need to be queued) + PassSystemInterface::Get()->QueueForBuild(this); + + m_queueState = PassQueueState::QueuedForBuildAndInitialization; + + // Transition state + // If we are Rendering, the state will transition [Rendering -> Queued] in Pass::FrameEnd + if (m_state != PassState::Rendering) + { + m_state = PassState::Queued; + } + } + } + + void Pass::QueueForInitialization() + { + // Only queue if the pass is not in any queue. Don't queue if we're currently initializing. + if (m_queueState == PassQueueState::NoQueue && m_state != PassState::Initializing) + { + PassSystemInterface::Get()->QueueForInitialization(this); + m_queueState = PassQueueState::QueuedForInitialization; + + // Transition state + // If we are Rendering, the state will transition [Rendering -> Queued] in Pass::FrameEnd + // If the state is Built, preserve the state since [Built -> Initializing] is a valid transition + // Preserving PassState::Built lets the pass ignore subsequent build calls in the same frame + if (m_state != PassState::Rendering && m_state != PassState::Built) + { + m_state = PassState::Queued; + } + } + } + + void Pass::QueueForRemoval() + { + // Skip only if we're already queued for removal, otherwise proceed. + // QueuedForRemoval overrides QueuedForBuildAndInitialization and QueuedForInitialization. + if (m_queueState != PassQueueState::QueuedForRemoval) + { + PassSystemInterface::Get()->QueueForRemoval(this); + m_queueState = PassQueueState::QueuedForRemoval; + + // Transition state + // If we are Rendering, the state will transition [Rendering -> Queued] in Pass::FrameEnd + if (m_state != PassState::Rendering) + { + m_state = PassState::Queued; + } + } + } + // --- Pass behavior functions --- void Pass::Reset() { - // Flag prevents the function from executing multiple times a frame. Can happen - // as pass system has a list of passes for which it needs to call this function. - if (m_flags.m_alreadyReset) + // Ensure we're in a valid state to reset. This ensures the pass won't be reset multiple times in the same frame. + bool execute = (m_state == PassState::Idle); + execute = execute || (m_state == PassState::Queued && m_queueState == PassQueueState::QueuedForBuildAndInitialization); + execute = execute || (m_state == PassState::Queued && m_queueState == PassQueueState::QueuedForInitialization); + + if (!execute) { return; } - m_flags.m_alreadyReset = true; + + m_state = PassState::Resetting; // Store references to imported attachments to underlying images and buffers aren't deleted during attachment building StoreImportedAttachmentReferences(); @@ -1075,22 +1127,23 @@ namespace AZ m_executeBeforePasses.clear(); ResetInternal(); + + m_state = PassState::Reset; } - void Pass::BuildAttachments() + void Pass::Build(bool calledFromPassSystem) { - m_flags.m_queuedForBuildAttachment = false; + AZ_RPI_BREAK_ON_TARGET_PASS; - // Flag prevents the function from executing multiple times a frame. Can happen - // as pass system has a list of passes for which it needs to call this function. - if (m_flags.m_alreadyPrepared) + // Ensure we're in a valid state to build. This ensures the pass won't be built multiple times in the same frame. + bool execute = (m_state == PassState::Reset); + + if (!execute) { return; } - m_flags.m_alreadyPrepared = true; - m_flags.m_isBuildingAttachments = true; - AZ_RPI_BREAK_ON_TARGET_PASS; + m_state = PassState::Building; // Bindings, inputs and attachments CreateBindingsFromTemplate(); @@ -1101,7 +1154,7 @@ namespace AZ SetupInputsFromTemplate(); // Custom pass behavior - BuildAttachmentsInternal(); + BuildInternal(); // Outputs SetupOutputsFromTemplate(); @@ -1112,21 +1165,46 @@ namespace AZ UpdateOwnedAttachments(); UpdateAttachmentUsageIndices(); - m_flags.m_isBuildingAttachments = false; + m_state = PassState::Built; + m_queueState = PassQueueState::NoQueue; + + // If this pass's Build() wasn't called from the Pass System, then it was called by it's parent pass + // In which case we don't need to queue for initialization because the parent will already be queued + if (calledFromPassSystem) + { + // Queue for Initialization + QueueForInitialization(); + } } - void Pass::OnBuildAttachmentsFinished() + void Pass::Initialize() { AZ_RPI_BREAK_ON_TARGET_PASS; - // These flags are to prevent a pass from being built multiple times. - // We reset them after each build phase. - m_flags.m_alreadyCreated = false; - m_flags.m_alreadyPrepared = false; - m_flags.m_alreadyReset = false; - m_flags.m_queuedForBuildAttachment = false; + // Ensure we're in a valid state to initialize. This ensures the pass won't be initialized multiple times in the same frame. + bool execute = (m_state == PassState::Idle || m_state == PassState::Built); + execute = execute || (m_state == PassState::Queued && m_queueState == PassQueueState::QueuedForInitialization); + + if (!execute) + { + return; + } + + m_state = PassState::Initializing; + m_queueState = PassQueueState::NoQueue; + + InitializeInternal(); + + m_state = PassState::Initialized; + } + + void Pass::OnInitializationFinished() + { + m_flags.m_alreadyCreatedChildren = false; m_importedAttachmentStore.clear(); - OnBuildAttachmentsFinishedInternal(); + OnInitializationFinishedInternal(); + + m_state = PassState::Idle; } void Pass::Validate(PassValidationResults& validationResults) @@ -1182,7 +1260,9 @@ namespace AZ UpdateConnectedBindings(); return; } - m_flags.m_isRendering = true; + + AZ_Assert(m_state == PassState::Idle, "Pass::FrameBegin - Pass [%s] is attempting to render, but is not in the Idle state.", m_path.GetCStr()); + m_state = PassState::Rendering; UpdateConnectedBindings(); UpdateOwnedAttachments(); @@ -1197,10 +1277,10 @@ namespace AZ void Pass::FrameEnd() { - if (m_flags.m_isRendering) + if (m_state == PassState::Rendering) { FrameEndInternal(); - m_flags.m_isRendering = false; + m_state = (m_queueState == PassQueueState::NoQueue) ? PassState::Idle : PassState::Queued; } } @@ -1238,6 +1318,13 @@ namespace AZ return m_pipeline; } + void Pass::ManualPipelineBuildAndInitialize() + { + Build(); + Initialize(); + OnInitializationFinished(); + } + Scene* Pass::GetScene() const { if (m_pipeline) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassSystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassSystem.cpp index 448c28f202..cc51c8760a 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassSystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/PassSystem.cpp @@ -50,6 +50,7 @@ namespace AZ { namespace RPI { + PassSystemInterface* PassSystemInterface::Get() { return Interface::Get(); @@ -93,11 +94,21 @@ namespace AZ void PassSystem::Init() { + m_state = PassSystemState::InitializingPassSystem; + Interface::Register(this); m_passLibrary.Init(); m_passFactory.Init(&m_passLibrary); m_rootPass = CreatePass(Name{"Root"}); m_rootPass->m_flags.m_partOfHierarchy = true; + m_rootPass->m_flags.m_createChildren = false; + + // Here you can specify the name of a pass you would like to break into during execution + // If you enable AZ_RPI_ENABLE_PASS_DEBUGGING, then any pass matching the specified name will debug + // break on any instance of the AZ_RPI_BREAK_ON_TARGET_PASS macro. See Pass::Build for an example + // m_targetedPassDebugName = "MyPassName"; + + m_state = PassSystemState::Idle; } void PassSystem::InitPassTemplates() @@ -118,10 +129,10 @@ namespace AZ JsonSerializationUtils::SaveObjectToFile(&passAsset, assetFilePath); } - void PassSystem::QueueForBuildAttachments(Pass* pass) + void PassSystem::QueueForBuild(Pass* pass) { - AZ_Assert(pass != nullptr, "Queuing nullptr pass in PassSystem::QueueForBuildAttachments"); - m_buildAttachmentsList.push_back(pass); + AZ_Assert(pass != nullptr, "Queuing nullptr pass in PassSystem::QueueForBuild"); + m_buildPassList.push_back(pass); } void PassSystem::QueueForRemoval(Pass* pass) @@ -130,6 +141,12 @@ namespace AZ m_removePassList.push_back(pass); } + void PassSystem::QueueForInitialization(Pass* pass) + { + AZ_Assert(pass != nullptr, "Queuing nullptr pass in PassSystem::QueueForInitialization"); + m_initializePassList.push_back(pass); + } + // Sort so passes with less depth (closer to the root) are first. Used when changes // in the parent passes can affect the child passes, like with attachment building. void SortPassListAscending(AZStd::vector< Ptr >& passList) @@ -155,6 +172,7 @@ namespace AZ void PassSystem::RemovePasses() { + m_state = PassSystemState::RemovingPasses; AZ_ATOM_PROFILE_FUNCTION("RPI", "PassSystem: RemovePasses"); if (!m_removePassList.empty()) @@ -168,24 +186,25 @@ namespace AZ m_removePassList.clear(); } + + m_state = PassSystemState::Idle; } - void PassSystem::BuildPassAttachments() + void PassSystem::BuildPasses() { + m_state = PassSystemState::BuildingPasses; AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzRender); AZ_ATOM_PROFILE_FUNCTION("RPI", "PassSystem: BuildPassAttachments"); - m_isBuilding = true; + m_passHierarchyChanged = m_passHierarchyChanged || !m_buildPassList.empty(); - m_passHierarchyChanged = !m_buildAttachmentsList.empty(); - - // While loop is for the event in which passes being built add more pass to m_buildAttachmentsList - while(!m_buildAttachmentsList.empty()) + // While loop is for the event in which passes being built add more pass to m_buildPassList + while(!m_buildPassList.empty()) { AZ_Assert(m_removePassList.empty(), "Passes shouldn't be queued removal during build attachment process"); - AZStd::vector< Ptr > buildListCopy = m_buildAttachmentsList; - m_buildAttachmentsList.clear(); + AZStd::vector< Ptr > buildListCopy = m_buildPassList; + m_buildPassList.clear(); // Erase passes which were removed from pass tree already (which parent is empty) auto unused = AZStd::remove_if(buildListCopy.begin(), buildListCopy.end(), @@ -203,11 +222,8 @@ namespace AZ } for (const Ptr& pass : buildListCopy) { - pass->BuildAttachments(); + pass->Build(true); } - - // Signal all passes that we have finished building - m_rootPass->OnBuildAttachmentsFinished(); } if (m_passHierarchyChanged) @@ -221,11 +237,50 @@ namespace AZ #endif } - m_isBuilding = false; + m_state = PassSystemState::Idle; + } + + void PassSystem::InitializePasses() + { + m_state = PassSystemState::InitializingPasses; + AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzRender); + AZ_ATOM_PROFILE_FUNCTION("RPI", "PassSystem: BuildPassAttachments"); + + m_passHierarchyChanged = m_passHierarchyChanged || !m_initializePassList.empty(); + + while (!m_initializePassList.empty()) + { + AZStd::vector< Ptr > initListCopy = m_initializePassList; + m_initializePassList.clear(); + + // Erase passes which were removed from pass tree already (which parent is empty) + auto unused = AZStd::remove_if(initListCopy.begin(), initListCopy.end(), + [](const RHI::Ptr& currentPass) + { + return !currentPass->m_flags.m_partOfHierarchy; + }); + initListCopy.erase(unused, initListCopy.end()); + + SortPassListAscending(initListCopy); + + for (const Ptr& pass : initListCopy) + { + pass->Initialize(); + } + } + + if (m_passHierarchyChanged) + { + // Signal all passes that we have finished initialization + m_rootPass->OnInitializationFinished(); + } + + m_state = PassSystemState::Idle; } void PassSystem::Validate() { + m_state = PassSystemState::ValidatingPasses; AZ_ATOM_PROFILE_FUNCTION("RPI", "PassSystem: Validate"); if (PassValidation::IsEnabled()) @@ -241,12 +296,15 @@ namespace AZ m_rootPass->Validate(validationResults); validationResults.PrintValidationIfError(); } + + m_state = PassSystemState::Idle; } void PassSystem::ProcessQueuedChanges() { RemovePasses(); - BuildPassAttachments(); + BuildPasses(); + InitializePasses(); Validate(); } @@ -256,6 +314,8 @@ namespace AZ AZ_ATOM_PROFILE_FUNCTION("RPI", "PassSystem: FrameUpdate"); ProcessQueuedChanges(); + + m_state = PassSystemState::Rendering; Pass::FramePrepareParams params{ &frameGraphBuilder }; m_rootPass->FrameBegin(params); } @@ -264,6 +324,8 @@ namespace AZ { AZ_ATOM_PROFILE_FUNCTION("RHI", "PassSystem: FrameEnd"); + m_state = PassSystemState::FrameEnd; + m_rootPass->FrameEnd(); // remove any pipelines that are marked as ExecuteOnce @@ -278,12 +340,14 @@ namespace AZ } m_passHierarchyChanged = false; + + m_state = PassSystemState::Idle; } void PassSystem::Shutdown() { RemovePasses(); - m_buildAttachmentsList.clear(); + m_buildPassList.clear(); m_rootPass = nullptr; m_passFactory.Shutdown(); m_passLibrary.Shutdown(); @@ -296,9 +360,9 @@ namespace AZ return m_rootPass; } - bool PassSystem::IsBuilding() const + PassSystemState PassSystem::GetState() const { - return m_isBuilding; + return m_state; } bool PassSystem::IsHotReloading() const diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp index baf1d22da5..13f2784a2d 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RasterPass.cpp @@ -23,7 +23,6 @@ #include #include -#include namespace AZ { @@ -51,26 +50,32 @@ namespace AZ SetDrawListTag(rasterData->m_drawListTag); m_drawListSortType = rasterData->m_drawListSortType; - // Get SRG asset - Data::Asset srgAsset; - if (rasterData->m_passSrgReference.m_assetId.IsValid()) + // Get the shader asset that contains the SRG Layout. + Data::Asset shaderAsset; + if (rasterData->m_passSrgShaderReference.m_assetId.IsValid()) { - srgAsset = AssetUtils::LoadAssetById(rasterData->m_passSrgReference.m_assetId, AssetUtils::TraceLevel::Error); + shaderAsset = AssetUtils::LoadAssetById(rasterData->m_passSrgShaderReference.m_assetId, AssetUtils::TraceLevel::Error); } - else if (!rasterData->m_passSrgReference.m_filePath.empty()) + else if (!rasterData->m_passSrgShaderReference.m_filePath.empty()) { - srgAsset = AssetUtils::LoadAssetByProductPath(rasterData->m_passSrgReference.m_filePath.c_str(), AssetUtils::TraceLevel::Error); + shaderAsset = AssetUtils::LoadAssetByProductPath( + rasterData->m_passSrgShaderReference.m_filePath.c_str(), AssetUtils::TraceLevel::Error); } - if (srgAsset) + if (shaderAsset) { - m_shaderResourceGroup = ShaderResourceGroup::Create(srgAsset); + auto supervariantIndex = DefaultSupervariantIndex; + const auto srgLayout = shaderAsset->FindShaderResourceGroupLayout(SrgBindingSlot::Pass, supervariantIndex); + if (srgLayout) + { + m_shaderResourceGroup = ShaderResourceGroup::Create(shaderAsset, supervariantIndex, srgLayout->GetName()); - AZ_Assert(m_shaderResourceGroup, "[RasterPass '%s']: Failed to create SRG from shader asset '%s'", - GetPathName().GetCStr(), - rasterData->m_passSrgReference.m_filePath.data()); + AZ_Assert( + m_shaderResourceGroup, "[RasterPass '%s']: Failed to create SRG from shader asset '%s'", GetPathName().GetCStr(), + rasterData->m_passSrgShaderReference.m_filePath.data()); - PassUtils::BindDataMappingsToSrg(descriptor, m_shaderResourceGroup.get()); + PassUtils::BindDataMappingsToSrg(descriptor, m_shaderResourceGroup.get()); + } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RenderPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RenderPass.cpp index 3a2a556429..2c88ca60c9 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RenderPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/RenderPass.cpp @@ -10,6 +10,7 @@ * */ +#include #include #include #include @@ -128,7 +129,7 @@ namespace AZ } - void RenderPass::OnBuildAttachmentsFinishedInternal() + void RenderPass::InitializeInternal() { if (m_shaderResourceGroup != nullptr) { @@ -165,7 +166,7 @@ namespace AZ } else { - AZ_Error("Pass System", false, "[Pass %s] Could not bind shader buffer index '%s' because it has no attachment.", GetName().GetCStr(), shaderName.GetCStr()); + AZ_Error( "Pass System", AZ::RHI::IsNullRenderer(), "[Pass %s] Could not bind shader buffer index '%s' because it has no attachment.", GetName().GetCStr(), shaderName.GetCStr()); binding.m_shaderInputIndex = PassAttachmentBinding::ShaderInputNoBind; } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/DownsampleMipChainPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/DownsampleMipChainPass.cpp index 0e0ebf445e..329247d4eb 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/DownsampleMipChainPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/DownsampleMipChainPass.cpp @@ -181,12 +181,12 @@ namespace AZ // Pass behavior functions... - void DownsampleMipChainPass::BuildAttachmentsInternal() + void DownsampleMipChainPass::BuildInternal() { GetInputInfo(); BuildChildPasses(); UpdateChildren(); - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); } void DownsampleMipChainPass::FrameBeginInternal(FramePrepareParams params) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.cpp index c72712bce5..28a03de297 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/EnvironmentCubeMapPass.cpp @@ -37,8 +37,6 @@ namespace AZ EnvironmentCubeMapPass::EnvironmentCubeMapPass(const PassDescriptor& passDescriptor) : ParentPass(passDescriptor) { - m_flags.m_alreadyCreated = false; - // load pass data const EnvironmentCubeMapPassData* passData = PassUtils::GetPassData(passDescriptor); if (passData == nullptr) @@ -88,8 +86,6 @@ namespace AZ AZ::Matrix4x4 viewToClipMatrix; MakePerspectiveFovMatrixRH(viewToClipMatrix, AZ::Constants::HalfPi, 1.0f, 0.1f, 100.0f, true); m_view->SetViewToClipMatrix(viewToClipMatrix); - - CreateChildPasses(); } EnvironmentCubeMapPass::~EnvironmentCubeMapPass() @@ -113,7 +109,7 @@ namespace AZ AddChild(m_childPass); } - void EnvironmentCubeMapPass::BuildAttachmentsInternal() + void EnvironmentCubeMapPass::BuildInternal() { // create output image descriptor m_outputImageDesc = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::Color | RHI::ImageBindFlags::CopyRead, CubeMapFaceSize, CubeMapFaceSize, RHI::Format::R16G16B16A16_FLOAT); @@ -135,7 +131,7 @@ namespace AZ m_attachmentBindings.push_back(outputAttachment); - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); } void EnvironmentCubeMapPass::FrameBeginInternal(FramePrepareParams params) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/ImageAttachmentPreviewPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/ImageAttachmentPreviewPass.cpp index e2fdfb48e3..826b27acc2 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/ImageAttachmentPreviewPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/ImageAttachmentPreviewPass.cpp @@ -25,7 +25,6 @@ #include #include -#include namespace AZ { @@ -259,10 +258,10 @@ namespace AZ } // Load SRG - const Data::Asset& srgAsset = m_shader->FindShaderResourceGroupAsset(Name{ "PassSrg" }); - if (srgAsset) + const auto srgLayout = m_shader->FindShaderResourceGroupLayout(SrgBindingSlot::Pass); + if (srgLayout) { - m_passSrg = ShaderResourceGroup::Create(srgAsset); + m_passSrg = ShaderResourceGroup::Create(shaderAsset, m_shader->GetSupervariantIndex(), srgLayout->GetName()); if (!m_passSrg) { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/RenderToTexturePass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/RenderToTexturePass.cpp index 4356a56622..7306bf5b6a 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/RenderToTexturePass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/RenderToTexturePass.cpp @@ -50,7 +50,7 @@ namespace AZ { } - void RenderToTexturePass::BuildAttachmentsInternal() + void RenderToTexturePass::BuildInternal() { m_outputAttachment = aznew PassAttachment(); m_outputAttachment->m_name = "RenderTarget"; @@ -73,7 +73,7 @@ namespace AZ m_attachmentBindings.push_back(outputBinding); - Base::BuildAttachmentsInternal(); + Base::BuildInternal(); } void RenderToTexturePass::FrameBeginInternal(FramePrepareParams params) @@ -100,7 +100,7 @@ namespace AZ m_passData.m_width = width; m_passData.m_height = height; OnUpdateOutputSize(); - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); } void RenderToTexturePass::OnUpdateOutputSize() diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SelectorPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SelectorPass.cpp index 8e8c67393d..82cea31ca1 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SelectorPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SelectorPass.cpp @@ -44,7 +44,7 @@ namespace AZ } } - void SelectorPass::BuildAttachmentsInternal() + void SelectorPass::BuildInternal() { // Update output connections based on m_connections // This need to be done after BuildAttachment is finished @@ -72,7 +72,7 @@ namespace AZ m_connections[outputSlotIndex] = inputSlotIndex; // Queue to rebuild attachment connections - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); } void SelectorPass::Connect(const AZ::Name& inputSlot, const AZ::Name& outputSlot) @@ -113,7 +113,7 @@ namespace AZ m_connections[outputIdx] = inputIdx; // Queue to rebuild attachment connections - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); } } // namespace RPI diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SwapChainPass.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SwapChainPass.cpp index 5bcec87df0..7b79efbaec 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SwapChainPass.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Pass/Specific/SwapChainPass.cpp @@ -26,8 +26,6 @@ namespace AZ , m_windowContext(windowContext) , m_childTemplateName(childTemplateName) { - m_flags.m_alreadyCreated = false; - PassSystemInterface* passSystem = PassSystemInterface::Get(); // Create child pass @@ -44,8 +42,6 @@ namespace AZ m_childPass = passSystem->CreatePassFromRequest(&childRequest); AZ_Assert(m_childPass, "SwapChain child pass is invalid: check your passs pipeline, run configuration and your AssetProcessor set project (project_path)"); - - CreateChildPasses(); AzFramework::WindowNotificationBus::Handler::BusConnect(m_windowContext->GetWindowHandle()); } @@ -112,7 +108,7 @@ namespace AZ AddChild(m_childPass); } - void SwapChainPass::BuildAttachmentsInternal() + void SwapChainPass::BuildInternal() { if (m_windowContext->GetSwapChain() == nullptr) { @@ -124,7 +120,7 @@ namespace AZ SetupSwapChainAttachment(); - ParentPass::BuildAttachmentsInternal(); + ParentPass::BuildInternal(); } void SwapChainPass::FrameBeginInternal(FramePrepareParams params) @@ -154,7 +150,7 @@ namespace AZ void SwapChainPass::OnWindowResized([[maybe_unused]] uint32_t width, [[maybe_unused]] uint32_t height) { - QueueForBuildAttachments(); + QueueForBuildAndInitialization(); } void SwapChainPass::ReadbackSwapChain(AZStd::shared_ptr readback) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp index 44be2dabeb..768869834f 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/RPISystem.cpp @@ -112,8 +112,9 @@ namespace AZ void RPISystem::Shutdown() { m_viewportContextManager.Shutdown(); - m_viewSrgAsset.Reset(); - m_sceneSrgAsset.Reset(); + m_viewSrgLayout = nullptr; + m_sceneSrgLayout = nullptr; + m_commonShaderAssetForSrgs.Reset(); #if AZ_RPI_PRINT_GLOBAL_STATE_ON_ASSERT Debug::TraceMessageBus::Handler::BusDisconnect(); @@ -212,16 +213,22 @@ namespace AZ return nullptr; } - Data::Asset RPISystem::GetSceneSrgAsset() const + Data::Asset RPISystem::GetCommonShaderAssetForSrgs() const { AZ_Assert(m_systemAssetsInitialized, "InitializeSystemAssets() should be called once when asset catalog loaded'"); - return m_sceneSrgAsset; + return m_commonShaderAssetForSrgs; } - Data::Asset RPISystem::GetViewSrgAsset() const + RHI::Ptr RPISystem::GetSceneSrgLayout() const { AZ_Assert(m_systemAssetsInitialized, "InitializeSystemAssets() should be called once when asset catalog loaded'"); - return m_viewSrgAsset; + return m_sceneSrgLayout; + } + + RHI::Ptr RPISystem::GetViewSrgLayout() const + { + AZ_Assert(m_systemAssetsInitialized, "InitializeSystemAssets() should be called once when asset catalog loaded'"); + return m_viewSrgLayout; } void RPISystem::OnSystemTick() @@ -353,14 +360,23 @@ namespace AZ m_descriptor.m_rhiSystemDescriptor.m_platformLimits = RPI::GetDataFromAnyAsset(platformLimitsAsset); } - m_viewSrgAsset = AssetUtils::LoadCriticalAsset( m_descriptor.m_viewSrgAssetPath.c_str()); - if (!m_viewSrgAsset.IsReady()) + m_commonShaderAssetForSrgs = AssetUtils::LoadCriticalAsset( m_descriptor.m_commonSrgsShaderAssetPath.c_str()); + if (!m_commonShaderAssetForSrgs.IsReady()) { return; } - m_sceneSrgAsset = AssetUtils::LoadCriticalAsset(m_descriptor.m_sceneSrgAssetPath.c_str()); - if (!m_sceneSrgAsset.IsReady()) + m_sceneSrgLayout = m_commonShaderAssetForSrgs->FindShaderResourceGroupLayout(SrgBindingSlot::Scene); + if (!m_sceneSrgLayout) { + AZ_Error("RPISystem", false, "Failed to find SceneSrg by slot=<%u> from shader asset at path <%s>", SrgBindingSlot::Scene, + m_descriptor.m_commonSrgsShaderAssetPath.c_str()); + return; + } + m_viewSrgLayout = m_commonShaderAssetForSrgs->FindShaderResourceGroupLayout(SrgBindingSlot::View); + if (!m_viewSrgLayout) + { + AZ_Error("RPISystem", false, "Failed to find ViewSrg by slot=<%u> from shader asset at path <%s>", SrgBindingSlot::View, + m_descriptor.m_commonSrgsShaderAssetPath.c_str()); return; } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp index cc0cefd082..ad2fc4b19e 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/RenderPipeline.cpp @@ -107,7 +107,7 @@ namespace AZ pipeline->m_originalRenderSettings = desc.m_renderSettings; pipeline->m_activeRenderSettings = desc.m_renderSettings; pipeline->m_rootPass->SetRenderPipeline(pipeline); - pipeline->BuildPipelineViews(); + pipeline->m_rootPass->ManualPipelineBuildAndInitialize(); } RenderPipeline::~RenderPipeline() @@ -320,8 +320,8 @@ namespace AZ Ptr newRoot = m_rootPass->Recreate(); newRoot->SetRenderPipeline(this); - // Force processing of queued changes so we can validate the new pipeline - passSystem->ProcessQueuedChanges(); + // Manually build the pipeline + newRoot->ManualPipelineBuildAndInitialize(); // Validate the new root PassValidationResults validation; @@ -329,9 +329,8 @@ namespace AZ if (validation.IsValid()) { // Remove old pass - bool deletePass = true; m_rootPass->SetRenderPipeline(nullptr); - m_rootPass->QueueForRemoval(deletePass); + m_rootPass->QueueForRemoval(); // Set new root m_rootPass = newRoot; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp index 7e33750eb5..d87f119a7a 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Scene.cpp @@ -42,11 +42,11 @@ namespace AZ scene->EnableFeatureProcessor(FeatureProcessorId{ fpId }); } - Data::Asset sceneSrgAsset = RPISystemInterface::Get()->GetSceneSrgAsset(); - - if (sceneSrgAsset.IsReady()) + auto sceneSrgLayout = RPISystemInterface::Get()->GetSceneSrgLayout(); + if (sceneSrgLayout) { - scene->m_srg = ShaderResourceGroup::Create(sceneSrgAsset); + auto shaderAsset = RPISystemInterface::Get()->GetCommonShaderAssetForSrgs(); + scene->m_srg = ShaderResourceGroup::Create(shaderAsset, DefaultSupervariantIndex, sceneSrgLayout->GetName()); } return ScenePtr(scene); @@ -289,9 +289,10 @@ namespace AZ } pipeline->OnAddedToScene(this); + PassSystemInterface::Get()->ProcessQueuedChanges(); + pipeline->BuildPipelineViews(); // Force to update the lookup table since adding render pipeline would effect any pipeline states created before pass system tick - AZ::RPI::PassSystemInterface::Get()->ProcessQueuedChanges(); RebuildPipelineStatesLookup(); AZ_Assert(!m_id.IsNull(), "RPI::Scene needs to have a valid uuid."); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp index 7194c524ae..d74ffbfca2 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader.cpp @@ -28,24 +28,37 @@ namespace AZ { namespace RPI { - Data::Instance Shader::FindOrCreate(const Data::Asset& shaderAsset) + Data::Instance Shader::FindOrCreate(const Data::Asset& shaderAsset, const Name& supervariantName) { - return Data::InstanceDatabase::Instance().FindOrCreate( - Data::InstanceId::CreateFromAssetId(shaderAsset.GetId()), - shaderAsset); + auto anySupervariantName = AZStd::any(supervariantName); + Data::Instance shaderInstance = Data::InstanceDatabase::Instance().FindOrCreate( + Data::InstanceId::CreateFromAssetId(shaderAsset.GetId()), shaderAsset, &anySupervariantName); + return shaderInstance; } - Data::Instance Shader::CreateInternal(ShaderAsset& shaderAsset) + Data::Instance Shader::FindOrCreate(const Data::Asset& shaderAsset) { - Data::Instance shader = aznew Shader(); - const RHI::ResultCode resultCode = shader->Init(shaderAsset); + return FindOrCreate(shaderAsset, AZ::Name { "" }); + } - if (resultCode == RHI::ResultCode::Success) + Data::Instance Shader::CreateInternal([[maybe_unused]] ShaderAsset& shaderAsset, const AZStd::any* anySupervariantName) + { + AZ_Assert(anySupervariantName != nullptr, "Invalid supervariant name param"); + auto supervariantName = AZStd::any_cast(*anySupervariantName); + auto supervariantIndex = shaderAsset.GetSupervariantIndex(supervariantName); + if (!supervariantIndex.IsValid()) { - return shader; + AZ_Error("Shader", false, "Supervariant with name %s, was not found in shader %s", supervariantName.GetCStr(), shaderAsset.GetName().GetCStr()); + return nullptr; } - return nullptr; + Data::Instance shader = aznew Shader(supervariantIndex); + const RHI::ResultCode resultCode = shader->Init(shaderAsset); + if (resultCode != RHI::ResultCode::Success) + { + return nullptr; + } + return shader; } Shader::~Shader() @@ -55,6 +68,8 @@ namespace AZ RHI::ResultCode Shader::Init(ShaderAsset& shaderAsset) { + AZ_Assert(m_supervariantIndex != InvalidSupervariantIndex, "Invalid supervariant index"); + ShaderVariantFinderNotificationBus::Handler::BusDisconnect(); ShaderVariantFinderNotificationBus::Handler::BusConnect(shaderAsset.GetId()); @@ -68,7 +83,7 @@ namespace AZ AZStd::unique_lock lock(m_variantCacheMutex); m_shaderVariants.clear(); } - m_rootVariant.Init(shaderAsset, shaderAsset.GetRootVariant()); + m_rootVariant.Init(shaderAsset, shaderAsset.GetRootVariant(m_supervariantIndex), m_supervariantIndex); if (m_pipelineLibraryHandle.IsNull()) { @@ -176,7 +191,7 @@ namespace AZ { ShaderVariant& shaderVariant = iter->second; - if (!shaderVariant.Init(*m_asset.Get(), shaderVariantAsset)) + if (!shaderVariant.Init(*m_asset.Get(), shaderVariantAsset, m_supervariantIndex)) { AZ_Error("Shader", false, "Failed to init shaderVariant with StableId=%u", shaderVariantAsset->GetStableId()); m_shaderVariants.erase(stableId); @@ -186,7 +201,7 @@ namespace AZ { //This is the first time the shader variant asset comes to life. ShaderVariant newVariant; - newVariant.Init(*m_asset, shaderVariantAsset); + newVariant.Init(*m_asset, shaderVariantAsset, m_supervariantIndex); m_shaderVariants.emplace(stableId, newVariant); } } @@ -245,7 +260,7 @@ namespace AZ const ShaderVariant& Shader::GetVariant(const ShaderVariantId& shaderVariantId) { AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantId); + Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantId, m_supervariantIndex); if (!shaderVariantAsset || shaderVariantAsset->IsRootVariant()) { return m_rootVariant; @@ -285,7 +300,7 @@ namespace AZ // reloaded, but some (or all) shader variants haven't been built yet. Since we want to use the latest version of the // shader code, ignore the old variants and fall back to the newer root variant instead. There's no need to report a // warning here because m_asset->GetVariant below will report one. - if (findIt->second.GetShaderAssetBuildTimestamp() == m_asset->GetShaderAssetBuildTimestamp()) + if (findIt->second.GetBuildTimestamp() >= m_asset->GetShaderAssetBuildTimestamp()) { return findIt->second; } @@ -294,7 +309,7 @@ namespace AZ // By calling GetVariant, an asynchronous asset load request is enqueued if the variant // is not fully ready. - Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantStableId); + Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantStableId, m_supervariantIndex); if (!shaderVariantAsset || shaderVariantAsset == m_asset->GetRootVariant()) { // Return the root variant when the requested variant is not ready. @@ -308,7 +323,7 @@ namespace AZ auto findIt = m_shaderVariants.find(shaderVariantStableId); if (findIt != m_shaderVariants.end()) { - if (findIt->second.GetShaderAssetBuildTimestamp() == m_asset->GetShaderAssetBuildTimestamp()) + if (findIt->second.GetBuildTimestamp() >= m_asset->GetShaderAssetBuildTimestamp()) { return findIt->second; } @@ -325,7 +340,7 @@ namespace AZ } ShaderVariant newVariant; - newVariant.Init(*m_asset, shaderVariantAsset); + newVariant.Init(*m_asset, shaderVariantAsset, m_supervariantIndex); m_shaderVariants.emplace(shaderVariantStableId, newVariant); return m_shaderVariants.at(shaderVariantStableId); @@ -336,29 +351,39 @@ namespace AZ return m_pipelineStateType; } + const ShaderInputContract& Shader::GetInputContract() const + { + return m_asset->GetInputContract(m_supervariantIndex); + } + + const ShaderOutputContract& Shader::GetOutputContract() const + { + return m_asset->GetOutputContract(m_supervariantIndex); + } + const RHI::PipelineState* Shader::AcquirePipelineState(const RHI::PipelineStateDescriptor& descriptor) const { return m_pipelineStateCache->AcquirePipelineState(m_pipelineLibraryHandle, descriptor); } - const Data::Asset& Shader::FindShaderResourceGroupAsset(const Name& shaderResourceGroupName) const + const RHI::Ptr& Shader::FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const { - return m_asset->FindShaderResourceGroupAsset(shaderResourceGroupName); + return m_asset->FindShaderResourceGroupLayout(shaderResourceGroupName, m_supervariantIndex); } - const Data::Asset& Shader::FindShaderResourceGroupAsset(uint32_t bindingSlot) const + const RHI::Ptr& Shader::FindShaderResourceGroupLayout(uint32_t bindingSlot) const { - return m_asset->FindShaderResourceGroupAsset(bindingSlot); + return m_asset->FindShaderResourceGroupLayout(bindingSlot, m_supervariantIndex); } - const Data::Asset& Shader::FindFallbackShaderResourceGroupAsset() const + const RHI::Ptr& Shader::FindFallbackShaderResourceGroupLayout() const { - return m_asset->FindFallbackShaderResourceGroupAsset(); + return m_asset->FindFallbackShaderResourceGroupLayout(m_supervariantIndex); } - AZStd::array_view> Shader::GetShaderResourceGroupAssets() const + AZStd::array_view> Shader::GetShaderResourceGroupLayouts() const { - return m_asset->GetShaderResourceGroupAssets(); + return m_asset->GetShaderResourceGroupLayouts(m_supervariantIndex); } const Data::Asset& Shader::GetAsset() const diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader2.cpp deleted file mode 100644 index f56a18e2b9..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader2.cpp +++ /dev/null @@ -1,413 +0,0 @@ -/* -* 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. -* -*/ -#include - -#include - -#include - -#include -#include - -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - Data::Instance Shader2::FindOrCreate(const Data::Asset& shaderAsset, const Name& supervariantName) - { - Data::Instance shaderInstance = Data::InstanceDatabase::Instance().FindOrCreate( - Data::InstanceId::CreateFromAssetId(shaderAsset.GetId()), - shaderAsset); - if (!shaderInstance) - { - return nullptr; - } - - if (!shaderInstance->SelectSupervariant(supervariantName)) - { - return nullptr; - } - - const RHI::ResultCode resultCode = shaderInstance->Init(*shaderAsset.Get()); - if (resultCode != RHI::ResultCode::Success) - { - return nullptr; - } - return shaderInstance; - } - - Data::Instance Shader2::CreateInternal([[maybe_unused]] ShaderAsset2& shaderAsset) - { - Data::Instance shader = aznew Shader2(); - return shader; - } - - Shader2::~Shader2() - { - Shutdown(); - } - - bool Shader2::SelectSupervariant(const Name& supervariantName) - { - if (supervariantName.IsEmpty()) - { - m_supervariantIndex = DefaultSupervariantIndex; - return true; - } - - auto supervariantIndex = m_asset->GetSupervariantIndex(supervariantName); - if (supervariantIndex == InvalidSupervariantIndex) - { - return false; - } - - m_supervariantIndex = supervariantIndex; - return true; - } - - RHI::ResultCode Shader2::Init(ShaderAsset2& shaderAsset) - { - AZ_Assert(m_supervariantIndex != InvalidSupervariantIndex, "Invalid supervariant index"); - - ShaderVariantFinderNotificationBus2::Handler::BusDisconnect(); - ShaderVariantFinderNotificationBus2::Handler::BusConnect(shaderAsset.GetId()); - - RHI::RHISystemInterface* rhiSystem = RHI::RHISystemInterface::Get(); - RHI::DrawListTagRegistry* drawListTagRegistry = rhiSystem->GetDrawListTagRegistry(); - - m_asset = { &shaderAsset, AZ::Data::AssetLoadBehavior::PreLoad }; - m_pipelineStateType = shaderAsset.GetPipelineStateType(); - - { - AZStd::unique_lock lock(m_variantCacheMutex); - m_shaderVariants.clear(); - } - m_rootVariant.Init(shaderAsset, shaderAsset.GetRootVariant(m_supervariantIndex), m_supervariantIndex); - - if (m_pipelineLibraryHandle.IsNull()) - { - // We set up a pipeline library only once for the lifetime of the Shader2 instance. - // This should allow the Shader2 to be reloaded at runtime many times, and cache and reuse PipelineState objects rather than rebuild them. - // It also fixes a particular TDR crash that occurred on some hardware when hot-reloading shaders and building pipeline states - // in a new pipeline library every time. - - RHI::PipelineStateCache* pipelineStateCache = rhiSystem->GetPipelineStateCache(); - ConstPtr serializedData = LoadPipelineLibrary(); - RHI::PipelineLibraryHandle pipelineLibraryHandle = pipelineStateCache->CreateLibrary(serializedData.get()); - - if (pipelineLibraryHandle.IsNull()) - { - AZ_Error("Shader2", false, "Failed to create pipeline library from pipeline state cache."); - return RHI::ResultCode::Fail; - } - - m_pipelineLibraryHandle = pipelineLibraryHandle; - m_pipelineStateCache = pipelineStateCache; - } - - const Name& drawListName = shaderAsset.GetDrawListName(); - if (!drawListName.IsEmpty()) - { - m_drawListTag = drawListTagRegistry->AcquireTag(drawListName); - if (!m_drawListTag.IsValid()) - { - AZ_Error("Shader2", false, "Failed to acquire a DrawListTag. Entries are full."); - } - } - - Data::AssetBus::Handler::BusConnect(m_asset.GetId()); - - return RHI::ResultCode::Success; - } - - void Shader2::Shutdown() - { - ShaderVariantFinderNotificationBus2::Handler::BusDisconnect(); - Data::AssetBus::Handler::BusDisconnect(); - - if (m_pipelineLibraryHandle.IsValid()) - { - SavePipelineLibrary(); - - m_pipelineStateCache->ReleaseLibrary(m_pipelineLibraryHandle); - m_pipelineStateCache = nullptr; - m_pipelineLibraryHandle = {}; - } - - if (m_drawListTag.IsValid()) - { - RHI::DrawListTagRegistry* drawListTagRegistry = RHI::RHISystemInterface::Get()->GetDrawListTagRegistry(); - drawListTagRegistry->ReleaseTag(m_drawListTag); - m_drawListTag.Reset(); - } - } - - /////////////////////////////////////////////////////////////////////// - // AssetBus overrides - void Shader2::OnAssetReloaded(Data::Asset asset) - { - ShaderReloadDebugTracker::ScopedSection reloadSection("Shader2::OnAssetReloaded %s", asset.GetHint().c_str()); - - if (asset->GetId() == m_asset->GetId()) - { - Data::Asset newAsset = { asset.GetAs(), AZ::Data::AssetLoadBehavior::PreLoad }; - AZ_Assert(newAsset, "Reloaded ShaderAsset2 is null"); - - Data::AssetBus::Handler::BusDisconnect(); - Init(*newAsset.Get()); - ShaderReloadNotificationBus2::Event(asset.GetId(), &ShaderReloadNotificationBus2::Events::OnShaderReinitialized, *this); - } - } - /////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus2 overrides - void Shader2::OnShaderVariantAssetReady(Data::Asset shaderVariantAsset, bool isError) - { - AZ_Assert(shaderVariantAsset, "Reloaded ShaderVariantAsset is null"); - const ShaderVariantStableId stableId = shaderVariantAsset->GetStableId(); - const ShaderVariantId& shaderVariantId = shaderVariantAsset->GetShaderVariantId(); - - if (isError) - { - //Remark: We do not assert if the stableId == RootShaderVariantStableId, because we can not trust in the asset data - //on error. so it is possible that on error the stbleId == RootShaderVariantStableId; - if (stableId == RootShaderVariantStableId) - { - return; - } - AZStd::unique_lock lock(m_variantCacheMutex); - m_shaderVariants.erase(stableId); - } - else - { - AZ_Assert(stableId != RootShaderVariantStableId, - "The root variant is expected to be updated by the ShaderAsset2."); - AZStd::unique_lock lock(m_variantCacheMutex); - - auto iter = m_shaderVariants.find(stableId); - if (iter != m_shaderVariants.end()) - { - ShaderVariant2& shaderVariant = iter->second; - - if (!shaderVariant.Init(*m_asset.Get(), shaderVariantAsset, m_supervariantIndex)) - { - AZ_Error("Shader2", false, "Failed to init shaderVariant with StableId=%u", shaderVariantAsset->GetStableId()); - m_shaderVariants.erase(stableId); - } - } - else - { - //This is the first time the shader variant asset comes to life. - ShaderVariant2 newVariant; - newVariant.Init(*m_asset, shaderVariantAsset, m_supervariantIndex); - m_shaderVariants.emplace(stableId, newVariant); - } - } - - //Even if there was an error, the interested parties should be notified. - ShaderReloadNotificationBus2::Event(m_asset.GetId(), &ShaderReloadNotificationBus2::Events::OnShaderVariantReinitialized, *this, shaderVariantId, stableId); - } - /////////////////////////////////////////////////////////////////// - - ConstPtr Shader2::LoadPipelineLibrary() const - { - if (IO::FileIOBase::GetInstance()) - { - return Utils::LoadObjectFromFile(GetPipelineLibraryPath()); - } - return nullptr; - } - - void Shader2::SavePipelineLibrary() const - { - if (auto* fileIOBase = IO::FileIOBase::GetInstance()) - { - RHI::ConstPtr serializedData = m_pipelineStateCache->GetLibrarySerializedData(m_pipelineLibraryHandle); - if (serializedData) - { - const AZStd::string pipelineLibraryPath = GetPipelineLibraryPath(); - - char pipelineLibraryPathResolved[AZ_MAX_PATH_LEN] = { 0 }; - fileIOBase->ResolvePath(pipelineLibraryPath.c_str(), pipelineLibraryPathResolved, AZ_MAX_PATH_LEN); - Utils::SaveObjectToFile(pipelineLibraryPathResolved, DataStream::ST_BINARY, serializedData.get()); - } - } - else - { - AZ_Error("Shader2", false, "FileIOBase is not initialized"); - } - } - - AZStd::string Shader2::GetPipelineLibraryPath() const - { - const Data::InstanceId& instanceId = GetId(); - Name platformName = RHI::Factory::Get().GetName(); - Name shaderName = m_asset->GetName(); - - AZStd::string uuidString; - instanceId.m_guid.ToString(uuidString, false, false); - - return AZStd::string::format("@user@/Atom/PipelineStateCache/%s/%s_%s_%d.bin", platformName.GetCStr(), shaderName.GetCStr(), uuidString.data(), instanceId.m_subId); - } - - ShaderOptionGroup Shader2::CreateShaderOptionGroup() const - { - return ShaderOptionGroup(m_asset->GetShaderOptionGroupLayout()); - } - - const ShaderVariant2& Shader2::GetVariant(const ShaderVariantId& shaderVariantId) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantId, m_supervariantIndex); - if (!shaderVariantAsset || shaderVariantAsset->IsRootVariant()) - { - return m_rootVariant; - } - - return GetVariant(shaderVariantAsset->GetStableId()); - } - - const ShaderVariant2& Shader2::GetRootVariant() - { - return m_rootVariant; - } - - ShaderVariantSearchResult Shader2::FindVariantStableId(const ShaderVariantId& shaderVariantId) const - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - ShaderVariantSearchResult variantSearchResult = m_asset->FindVariantStableId(shaderVariantId); - return variantSearchResult; - } - - const ShaderVariant2& Shader2::GetVariant(ShaderVariantStableId shaderVariantStableId) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - - if (!shaderVariantStableId.IsValid() || shaderVariantStableId == ShaderAsset2::RootShaderVariantStableId) - { - return m_rootVariant; - } - - { - AZStd::shared_lock lock(m_variantCacheMutex); - - auto findIt = m_shaderVariants.find(shaderVariantStableId); - if (findIt != m_shaderVariants.end()) - { - // When rebuilding shaders we may be in a state where the ShaderAsset2 and root ShaderVariantAsset have been rebuilt and - // reloaded, but some (or all) shader variants haven't been built yet. Since we want to use the latest version of the - // shader code, ignore the old variants and fall back to the newer root variant instead. There's no need to report a - // warning here because m_asset->GetVariant below will report one. - if (findIt->second.GetBuildTimestamp() >= m_asset->GetShaderAssetBuildTimestamp()) - { - return findIt->second; - } - } - } - - // By calling GetVariant, an asynchronous asset load request is enqueued if the variant - // is not fully ready. - Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantStableId, m_supervariantIndex); - if (!shaderVariantAsset || shaderVariantAsset == m_asset->GetRootVariant()) - { - // Return the root variant when the requested variant is not ready. - return m_rootVariant; - } - - AZStd::unique_lock lock(m_variantCacheMutex); - - // For performance reasons We are breaking this function into two locking steps. - // which means We must check again if the variant is already in the cache. - auto findIt = m_shaderVariants.find(shaderVariantStableId); - if (findIt != m_shaderVariants.end()) - { - if (findIt->second.GetBuildTimestamp() >= m_asset->GetShaderAssetBuildTimestamp()) - { - return findIt->second; - } - else - { - // This is probably very rare, but if the variant was loaded on another thread and it's out of date - // we just return the root variant. Otherwise we could end up replacing the variant in the map below while - // it's being used for rendering. - AZ_Warning( - "Shader2", false, - "Detected an uncommon state during shader reload. Returning the root variant instead of replacing the old one."); - return m_rootVariant; - } - } - - ShaderVariant2 newVariant; - newVariant.Init(*m_asset, shaderVariantAsset, m_supervariantIndex); - m_shaderVariants.emplace(shaderVariantStableId, newVariant); - - return m_shaderVariants.at(shaderVariantStableId); - } - - RHI::PipelineStateType Shader2::GetPipelineStateType() const - { - return m_pipelineStateType; - } - - const ShaderInputContract& Shader2::GetInputContract() const - { - return m_asset->GetInputContract(m_supervariantIndex); - } - - const ShaderOutputContract& Shader2::GetOutputContract() const - { - return m_asset->GetOutputContract(m_supervariantIndex); - } - - const RHI::PipelineState* Shader2::AcquirePipelineState(const RHI::PipelineStateDescriptor& descriptor) const - { - return m_pipelineStateCache->AcquirePipelineState(m_pipelineLibraryHandle, descriptor); - } - - const RHI::Ptr Shader2::FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const - { - return m_asset->FindShaderResourceGroupLayout(shaderResourceGroupName, m_supervariantIndex); - } - - const RHI::Ptr Shader2::FindShaderResourceGroupLayout(uint32_t bindingSlot) const - { - return m_asset->FindShaderResourceGroupLayout(bindingSlot, m_supervariantIndex); - } - - const RHI::Ptr Shader2::FindFallbackShaderResourceGroupLayout() const - { - return m_asset->FindFallbackShaderResourceGroupLayout(m_supervariantIndex); - } - - AZStd::array_view> Shader2::GetShaderResourceGroupLayouts() const - { - return m_asset->GetShaderResourceGroupLayouts(m_supervariantIndex); - } - - const Data::Asset& Shader2::GetAsset() const - { - return m_asset; - } - - RHI::DrawListTag Shader2::GetDrawListTag() const - { - return m_drawListTag; - } - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp index 86cb3cd0a4..f63165495f 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp @@ -25,38 +25,51 @@ namespace AZ const Data::Instance ShaderResourceGroup::s_nullImage; const Data::Instance ShaderResourceGroup::s_nullBuffer; - Data::Instance ShaderResourceGroup::FindOrCreate(const Data::Asset& srgAsset) + Data::InstanceId ShaderResourceGroup::MakeInstanceId( + const Data::Asset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName) { - return Data::InstanceDatabase::Instance().FindOrCreate( - Data::InstanceId::CreateFromAssetId(srgAsset.GetId()), - srgAsset); + AZ_Assert(!srgName.IsEmpty(), "Invalid ShaderResourceGroup name"); + + // Let's find the srg layout with the given name, because it contains the azsl file path of origin + // which is essential to uniquely identify an SRG and avoid redundant copies in memory. + auto srgLayout = shaderAsset->FindShaderResourceGroupLayout(srgName, supervariantIndex); + AZ_Assert(srgLayout != nullptr, "Failed to find SRG with name %s, using supervariantIndex %u from shaderAsset %s", srgName.GetCStr(), + supervariantIndex.GetIndex(), shaderAsset.GetHint().c_str()); + + AZStd::string idString = AZStd::string::format("%s_%u_%s", srgLayout->GetUniqueId().c_str(), supervariantIndex.GetIndex(), srgName.GetCStr()); + return Data::InstanceId::CreateData(idString.data(), idString.size()); } - Data::Instance ShaderResourceGroup::Create(const Data::Asset& srgAsset) + Data::Instance ShaderResourceGroup::Create( + const Data::Asset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName) { + SrgInitParams initParams{ supervariantIndex, srgName }; + auto anyInitParams = AZStd::any(initParams); return Data::InstanceDatabase::Instance().FindOrCreate( - Data::InstanceId::CreateRandom(), - srgAsset); + Data::InstanceId::CreateRandom(), shaderAsset, &anyInitParams); } - Data::Instance ShaderResourceGroup::CreateInternal(ShaderResourceGroupAsset& srgAsset) + Data::Instance ShaderResourceGroup::CreateInternal(ShaderAsset& shaderAsset, const AZStd::any* anySrgInitParams) { + AZ_Assert(anySrgInitParams, "Invalid SrgInitParams"); + auto srgInitParams = AZStd::any_cast(*anySrgInitParams); + Data::Instance srg = aznew ShaderResourceGroup(); - const RHI::ResultCode resultCode = srg->Init(srgAsset); - - if (resultCode == RHI::ResultCode::Success) + const RHI::ResultCode resultCode = srg->Init(shaderAsset, srgInitParams.m_supervariantIndex, srgInitParams.m_srgName); + if (resultCode != RHI::ResultCode::Success) { - return srg; + return nullptr; } - return nullptr; + return srg; } - RHI::ResultCode ShaderResourceGroup::Init(ShaderResourceGroupAsset& shaderResourceGroupAsset) + RHI::ResultCode ShaderResourceGroup::Init(ShaderAsset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName) { AZ_TRACE_METHOD(); - m_layout = shaderResourceGroupAsset.GetLayout(); + const auto& lay = shaderAsset.FindShaderResourceGroupLayout(srgName, supervariantIndex); + m_layout = lay.get(); if (!m_layout) { @@ -64,9 +77,8 @@ namespace AZ return RHI::ResultCode::Fail; } - m_pool = ShaderResourceGroupPool::FindOrCreate(AZ::Data::Asset( - &shaderResourceGroupAsset, - AZ::Data::AssetLoadBehavior::PreLoad)); + m_pool = ShaderResourceGroupPool::FindOrCreate( + AZ::Data::Asset(&shaderAsset, AZ::Data::AssetLoadBehavior::PreLoad), supervariantIndex, srgName); if (!m_pool) { return RHI::ResultCode::Fail; @@ -77,52 +89,19 @@ namespace AZ { return RHI::ResultCode::Fail; } - m_shaderResourceGroup->SetName(shaderResourceGroupAsset.GetName()); + m_shaderResourceGroup->SetName(srgName); m_data = RHI::ShaderResourceGroupData(m_layout); - m_asset = { &shaderResourceGroupAsset, AZ::Data::AssetLoadBehavior::PreLoad }; + m_asset = { &shaderAsset, AZ::Data::AssetLoadBehavior::PreLoad }; // The RPI groups match the same dimensions as the RHI group. m_imageGroup.resize(m_layout->GetGroupSizeForImages()); m_bufferGroup.resize(m_layout->GetGroupSizeForBuffers()); + m_isInitialized = true; + return RHI::ResultCode::Success; } - bool ShaderResourceGroup::ReplaceSrgLayoutUsingShaderAsset( - Data::Asset shaderAsset, const Name& supervariantName, const Name& srgName) - { - AZ_TRACE_METHOD(); - - SupervariantIndex supervariantIndex = shaderAsset->GetSupervariantIndex(supervariantName); - if (supervariantIndex == InvalidSupervariantIndex) - { - AZ_Assert( - false, "Supervariant with name [%s] not found in shader asset [%s]", supervariantName.GetCStr(), - shaderAsset->GetName().GetCStr()); - return false; - } - - m_layout = shaderAsset->FindShaderResourceGroupLayout(srgName, supervariantIndex).get(); - - if (!m_layout) - { - AZ_Assert(false, "ShaderResourceGroup cannot be initialized due to invalid ShaderResourceGroupLayout"); - return false; - } - - m_shaderResourceGroup->SetName(m_layout->GetName()); - m_data = RHI::ShaderResourceGroupData(m_layout); - m_shaderAsset = shaderAsset; - - // The RPI groups match the same dimensions as the RHI group. - m_imageGroup.clear(); - m_imageGroup.resize(m_layout->GetGroupSizeForImages()); - m_bufferGroup.clear(); - m_bufferGroup.resize(m_layout->GetGroupSizeForBuffers()); - - return true; - } - void ShaderResourceGroup::Compile() { m_shaderResourceGroup->Compile(m_data); @@ -163,10 +142,10 @@ namespace AZ return m_layout->FindShaderInputImageUnboundedArrayIndex(name); } - const Data::Asset& ShaderResourceGroup::GetAsset() const - { - return m_asset; - } + //const Data::Asset& ShaderResourceGroup::GetAsset() const + //{ + // return m_asset; + //} const RHI::ShaderResourceGroupLayout* ShaderResourceGroup::GetLayout() const { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp index 60925acb55..19101961a0 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp @@ -16,32 +16,40 @@ #include #include +#include namespace AZ { namespace RPI { - Data::Instance ShaderResourceGroupPool::FindOrCreate(const Data::Asset& srgAsset) + Data::Instance ShaderResourceGroupPool::FindOrCreate( + const Data::Asset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName) { - return Data::InstanceDatabase::Instance().FindOrCreate( - Data::InstanceId::CreateFromAssetId(srgAsset.GetId()), - srgAsset); + auto instanceId = ShaderResourceGroup::MakeInstanceId(shaderAsset, supervariantIndex, srgName); + ShaderResourceGroup::SrgInitParams srgInitParams{ supervariantIndex, srgName }; + auto anyArgInitParams = AZStd::any(srgInitParams); + return Data::InstanceDatabase::Instance().FindOrCreate(instanceId, + shaderAsset, &anyArgInitParams); } - Data::Instance ShaderResourceGroupPool::CreateInternal(ShaderResourceGroupAsset& srgAsset) + Data::Instance ShaderResourceGroupPool::CreateInternal( + [[maybe_unused]] ShaderAsset& shaderAsset, const AZStd::any* anySrgInitParams) { - Data::Instance srgPool = aznew ShaderResourceGroupPool(); - const RHI::ResultCode resultCode = srgPool->Init(srgAsset); + AZ_Assert(anySrgInitParams, "Invalid SrgInitParams"); + auto srgInitParams = AZStd::any_cast(*anySrgInitParams); - if (resultCode == RHI::ResultCode::Success) + Data::Instance srgPool = aznew ShaderResourceGroupPool(); + const RHI::ResultCode resultCode = srgPool->Init(shaderAsset, srgInitParams.m_supervariantIndex, srgInitParams.m_srgName); + if (resultCode != RHI::ResultCode::Success) { - return srgPool; + return nullptr; } - return nullptr; + return srgPool; } - RHI::ResultCode ShaderResourceGroupPool::Init(ShaderResourceGroupAsset& srgAsset) + RHI::ResultCode ShaderResourceGroupPool::Init( + ShaderAsset& shaderAsset, const SupervariantIndex& supervariantIndex, const AZ::Name& srgName) { RHI::Ptr device = RHI::RHISystemInterface::Get()->GetDevice(); @@ -53,14 +61,11 @@ namespace AZ } RHI::ShaderResourceGroupPoolDescriptor poolDescriptor; - poolDescriptor.m_layout = srgAsset.GetLayout(); + poolDescriptor.m_layout = shaderAsset.FindShaderResourceGroupLayout(srgName, supervariantIndex).get(); - m_pool->SetName(Name(srgAsset.GetName())); + m_pool->SetName(srgName); const RHI::ResultCode resultCode = m_pool->Init(*device, poolDescriptor); - - AZ_Error("ShaderResourceGroupPool", resultCode == RHI::ResultCode::Success, "Failed to initialize RHI::ShaderResourceGroupPool"); - return resultCode; } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp index b5125ba964..d94760d243 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp @@ -12,18 +12,14 @@ #include #include -#include #include #include #include #include #include -#include #include -#include #include -#include #include #include @@ -37,7 +33,6 @@ namespace AZ void ShaderSystem::Reflect(ReflectContext* context) { - ShaderResourceGroupAsset::Reflect(context); ShaderOptionDescriptor::Reflect(context); ShaderOptionGroupLayout::Reflect(context); ShaderOptionGroupHints::Reflect(context); @@ -45,11 +40,9 @@ namespace AZ ShaderVariantId::Reflect(context); ShaderVariantStableId::Reflect(context); ShaderAsset::Reflect(context); - ShaderAsset2::Reflect(context); ShaderInputContract::Reflect(context); ShaderOutputContract::Reflect(context); ShaderVariantAsset::Reflect(context); - ShaderVariantAsset2::Reflect(context); ShaderVariantTreeAsset::Reflect(context); ReflectShaderStageType(context); PrecompiledShaderAssetSourceData::Reflect(context); @@ -63,10 +56,7 @@ namespace AZ void ShaderSystem::GetAssetHandlers(AssetHandlerPtrList& assetHandlers) { assetHandlers.emplace_back(MakeAssetHandler()); - assetHandlers.emplace_back(MakeAssetHandler()); - assetHandlers.emplace_back(MakeAssetHandler()); assetHandlers.emplace_back(MakeAssetHandler()); - assetHandlers.emplace_back(MakeAssetHandler()); assetHandlers.emplace_back(MakeAssetHandler()); } @@ -78,44 +68,35 @@ namespace AZ { Data::InstanceHandler handler; - handler.m_createFunction = [](Data::AssetData* shaderAsset) + handler.m_createFunctionWithParam = [](Data::AssetData* shaderAsset, const AZStd::any* supervariantName) { - return Shader::CreateInternal(*(azrtti_cast(shaderAsset))); + return Shader::CreateInternal(*(azrtti_cast(shaderAsset)), supervariantName); }; Data::InstanceDatabase::Create(azrtti_typeid(), handler); } - { - Data::InstanceHandler handler; - handler.m_createFunction = [](Data::AssetData* shaderAsset) { - return Shader2::CreateInternal(*(azrtti_cast(shaderAsset))); - }; - Data::InstanceDatabase::Create(azrtti_typeid(), handler); - } - { Data::InstanceHandler handler; - handler.m_createFunction = [](Data::AssetData* srgAsset) + handler.m_createFunctionWithParam = [](Data::AssetData* shaderAsset, const AZStd::any* srgInitBlob) { - return ShaderResourceGroup::CreateInternal(*(azrtti_cast(srgAsset))); + return ShaderResourceGroup::CreateInternal(*(azrtti_cast(shaderAsset)), srgInitBlob); }; - Data::InstanceDatabase::Create(azrtti_typeid(), handler); + Data::InstanceDatabase::Create(azrtti_typeid(), handler, false); } { Data::InstanceHandler handler; - handler.m_createFunction = [](Data::AssetData* srgAsset) + handler.m_createFunctionWithParam = [](Data::AssetData* shaderAsset, const AZStd::any* srgInitBlob) { - return ShaderResourceGroupPool::CreateInternal(*(azrtti_cast(srgAsset))); + return ShaderResourceGroupPool::CreateInternal(*(azrtti_cast(shaderAsset)), srgInitBlob); }; - Data::InstanceDatabase::Create(azrtti_typeid(), handler); + Data::InstanceDatabase::Create(azrtti_typeid(), handler, false); } } void ShaderSystem::Shutdown() { Data::InstanceDatabase::Destroy(); - Data::InstanceDatabase::Destroy(); Data::InstanceDatabase::Destroy(); Data::InstanceDatabase::Destroy(); Interface::Unregister(this); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant.cpp index 4d50f10c9c..09b1359e08 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant.cpp @@ -22,11 +22,13 @@ namespace AZ { bool ShaderVariant::Init( const ShaderAsset& shaderAsset, - Data::Asset shaderVariantAsset) + Data::Asset shaderVariantAsset, + SupervariantIndex supervariantIndex) { m_pipelineStateType = shaderAsset.GetPipelineStateType(); - m_pipelineLayoutDescriptor = shaderAsset.GetPipelineLayoutDescriptor(); + m_pipelineLayoutDescriptor = shaderAsset.GetPipelineLayoutDescriptor(supervariantIndex); m_shaderVariantAsset = shaderVariantAsset; + m_renderStates = &shaderAsset.GetRenderStates(supervariantIndex); return true; } @@ -39,11 +41,12 @@ namespace AZ case RHI::PipelineStateType::Draw: { AZ_Assert(m_pipelineStateType == RHI::PipelineStateType::Draw, "ShaderVariant is not intended for the raster pipeline."); + AZ_Assert(m_renderStates, "Invalid RenderStates"); RHI::PipelineStateDescriptorForDraw& descriptorForDraw = static_cast(descriptor); descriptorForDraw.m_vertexFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Vertex); descriptorForDraw.m_tessellationFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Tessellation); descriptorForDraw.m_fragmentFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Fragment); - descriptorForDraw.m_renderStates = m_shaderVariantAsset->GetRenderStates(); + descriptorForDraw.m_renderStates = *m_renderStates; break; } @@ -69,14 +72,5 @@ namespace AZ } } - const ShaderInputContract& ShaderVariant::GetInputContract() const - { - return m_shaderVariantAsset->GetInputContract(); - } - - const ShaderOutputContract& ShaderVariant::GetOutputContract() const - { - return m_shaderVariantAsset->GetOutputContract(); - } } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant2.cpp deleted file mode 100644 index d25b87fab3..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant2.cpp +++ /dev/null @@ -1,76 +0,0 @@ -/* -* 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. -* -*/ -#include - -#include -#include - -#include - -namespace AZ -{ - namespace RPI - { - bool ShaderVariant2::Init( - const ShaderAsset2& shaderAsset, - Data::Asset shaderVariantAsset, - SupervariantIndex supervariantIndex) - { - m_pipelineStateType = shaderAsset.GetPipelineStateType(); - m_pipelineLayoutDescriptor = shaderAsset.GetPipelineLayoutDescriptor(supervariantIndex); - m_shaderVariantAsset = shaderVariantAsset; - m_renderStates = &shaderAsset.GetRenderStates(supervariantIndex); - return true; - } - - void ShaderVariant2::ConfigurePipelineState(RHI::PipelineStateDescriptor& descriptor) const - { - descriptor.m_pipelineLayoutDescriptor = m_pipelineLayoutDescriptor; - - switch (descriptor.GetType()) - { - case RHI::PipelineStateType::Draw: - { - AZ_Assert(m_pipelineStateType == RHI::PipelineStateType::Draw, "ShaderVariant2 is not intended for the raster pipeline."); - AZ_Assert(m_renderStates, "Invalid RenderStates"); - RHI::PipelineStateDescriptorForDraw& descriptorForDraw = static_cast(descriptor); - descriptorForDraw.m_vertexFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Vertex); - descriptorForDraw.m_tessellationFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Tessellation); - descriptorForDraw.m_fragmentFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Fragment); - descriptorForDraw.m_renderStates = *m_renderStates; - break; - } - - case RHI::PipelineStateType::Dispatch: - { - AZ_Assert(m_pipelineStateType == RHI::PipelineStateType::Dispatch, "ShaderVariant2 is not intended for the compute pipeline."); - RHI::PipelineStateDescriptorForDispatch& descriptorForDispatch = static_cast(descriptor); - descriptorForDispatch.m_computeFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Compute); - break; - } - - case RHI::PipelineStateType::RayTracing: - { - AZ_Assert(m_pipelineStateType == RHI::PipelineStateType::RayTracing, "ShaderVariant2 is not intended for the ray tracing pipeline."); - RHI::PipelineStateDescriptorForRayTracing& descriptorForRayTracing = static_cast(descriptor); - descriptorForRayTracing.m_rayTracingFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::RayTracing); - break; - } - - default: - AZ_Assert(false, "Unexpected PipelineStateType"); - break; - } - } - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariantAsyncLoader.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariantAsyncLoader.cpp index 3fc2bbd197..bc371a6e42 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariantAsyncLoader.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariantAsyncLoader.cpp @@ -38,7 +38,7 @@ namespace AZ void ShaderVariantAsyncLoader::ThreadServiceLoop() { - AZStd::unordered_set newShaderVariantPendingRequests; + AZStd::unordered_set newShaderVariantPendingRequests; AZStd::unordered_set shaderVariantTreePendingRequests; AZStd::unordered_set shaderVariantPendingRequests; while (true) @@ -70,8 +70,8 @@ namespace AZ AZStd::for_each( m_newShaderVariantPendingRequests.begin(), m_newShaderVariantPendingRequests.end(), - [&](const ShaderVariantAsyncLoader::PairOfShaderAssetAndShaderVariantId& pair) { - newShaderVariantPendingRequests.insert(pair); + [&](const ShaderVariantAsyncLoader::TupleShaderAssetAndShaderVariantId& tuple) { + newShaderVariantPendingRequests.insert(tuple); }); m_newShaderVariantPendingRequests.clear(); @@ -91,36 +91,36 @@ namespace AZ } // Time to work hard. - auto pairItor = newShaderVariantPendingRequests.begin(); - while (pairItor != newShaderVariantPendingRequests.end()) + auto tupleItor = newShaderVariantPendingRequests.begin(); + while (tupleItor != newShaderVariantPendingRequests.end()) { - auto shaderVariantTreeAsset = GetShaderVariantTreeAsset(pairItor->m_shaderAsset.GetId()); + auto shaderVariantTreeAsset = GetShaderVariantTreeAsset(tupleItor->m_shaderAsset.GetId()); if (shaderVariantTreeAsset) { AZ_Assert(shaderVariantTreeAsset.IsReady(), "shaderVariantTreeAsset is not ready!"); // Get the stableId from the variant tree. auto searchResult = shaderVariantTreeAsset->FindVariantStableId( - pairItor->m_shaderAsset->GetShaderOptionGroupLayout(), pairItor->m_shaderVariantId); + tupleItor->m_shaderAsset->GetShaderOptionGroupLayout(), tupleItor->m_shaderVariantId); if (searchResult.IsRoot()) { - pairItor = newShaderVariantPendingRequests.erase(pairItor); + tupleItor = newShaderVariantPendingRequests.erase(tupleItor); continue; } // Record the request for metrics. - ShaderMetricsSystem::Get()->RequestShaderVariant(pairItor->m_shaderAsset.Get(), pairItor->m_shaderVariantId, searchResult); + ShaderMetricsSystem::Get()->RequestShaderVariant(tupleItor->m_shaderAsset.Get(), tupleItor->m_shaderVariantId, searchResult); - uint32_t shaderVariantProductSubId = - ShaderVariantAsset::MakeAssetProductSubId(RHI::Factory::Get().GetAPIUniqueIndex(), searchResult.GetStableId()); + uint32_t shaderVariantProductSubId = ShaderVariantAsset::MakeAssetProductSubId( + RHI::Factory::Get().GetAPIUniqueIndex(), tupleItor->m_supervariantIndex.GetIndex(), searchResult.GetStableId()); Data::AssetId shaderVariantAssetId(shaderVariantTreeAsset.GetId().m_guid, shaderVariantProductSubId); shaderVariantPendingRequests.insert(shaderVariantAssetId); - pairItor = newShaderVariantPendingRequests.erase(pairItor); + tupleItor = newShaderVariantPendingRequests.erase(tupleItor); continue; } // If we are here the shaderVariantTreeAsset is not ready, but maybe it is already queued for loading, // but we try to queue it anyways. - QueueShaderVariantTreeForLoading(*pairItor, shaderVariantTreePendingRequests); - pairItor++; + QueueShaderVariantTreeForLoading(*tupleItor, shaderVariantTreePendingRequests); + tupleItor++; } @@ -181,7 +181,7 @@ namespace AZ /////////////////////////////////////////////////////////////////// // IShaderVariantFinder overrides bool ShaderVariantAsyncLoader::QueueLoadShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId) + Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) { if (m_isServiceShutdown.load()) { @@ -190,15 +190,15 @@ namespace AZ { AZStd::unique_lock lock(m_mutex); - PairOfShaderAssetAndShaderVariantId pair = {shaderAsset, shaderVariantId}; - m_newShaderVariantPendingRequests.push_back(pair); + TupleShaderAssetAndShaderVariantId tuple = {shaderAsset, shaderVariantId, supervariantIndex}; + m_newShaderVariantPendingRequests.push_back(tuple); } m_workCondition.notify_one(); return true; } bool ShaderVariantAsyncLoader::QueueLoadShaderVariantAsset( - const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId) + const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, SupervariantIndex supervariantIndex) { if (m_isServiceShutdown.load()) { @@ -208,7 +208,7 @@ namespace AZ AZ_Assert(variantStableId != RootShaderVariantStableId, "Root Variants Are Found inside ShaderAssets"); uint32_t shaderVariantProductSubId = - ShaderVariantAsset::MakeAssetProductSubId(RHI::Factory::Get().GetAPIUniqueIndex(), variantStableId); + ShaderVariantAsset::MakeAssetProductSubId(RHI::Factory::Get().GetAPIUniqueIndex(), supervariantIndex.GetIndex(), variantStableId); Data::AssetId shaderVariantAssetId(shaderVariantTreeAssetId.m_guid, shaderVariantProductSubId); { AZStd::unique_lock lock(m_mutex); @@ -234,7 +234,7 @@ namespace AZ } Data::Asset ShaderVariantAsyncLoader::GetShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId) + Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) { Data::Asset shaderVariantTreeAsset = GetShaderVariantTreeAsset(shaderAsset.GetId()); if (!shaderVariantTreeAsset) @@ -253,11 +253,11 @@ namespace AZ // Record the request for metrics. ShaderMetricsSystem::Get()->RequestShaderVariant(shaderAsset.Get(), shaderVariantId, searchResult); - return GetShaderVariantAsset(shaderVariantTreeAsset.GetId(), searchResult.GetStableId()); + return GetShaderVariantAsset(shaderVariantTreeAsset.GetId(), searchResult.GetStableId(), supervariantIndex); } Data::Asset ShaderVariantAsyncLoader::GetShaderVariantAssetByStableId( - Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId) + Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) { AZ_Assert(shaderVariantStableId != RootShaderVariantStableId, "Root Variants Are Found inside ShaderAssets"); @@ -267,7 +267,7 @@ namespace AZ return {}; } - return GetShaderVariantAsset(shaderVariantTreeAsset.GetId(), shaderVariantStableId); + return GetShaderVariantAsset(shaderVariantTreeAsset.GetId(), shaderVariantStableId, supervariantIndex); } Data::Asset ShaderVariantAsyncLoader::GetShaderVariantTreeAsset(const Data::AssetId& shaderAssetId) @@ -292,11 +292,13 @@ namespace AZ return {}; } - Data::Asset ShaderVariantAsyncLoader::GetShaderVariantAsset(const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId) + Data::Asset ShaderVariantAsyncLoader::GetShaderVariantAsset( + const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, SupervariantIndex supervariantIndex) { AZ_Assert(variantStableId != RootShaderVariantStableId, "Root Variants Are Found inside ShaderAssets"); - uint32_t shaderVariantProductSubId = ShaderVariantAsset::MakeAssetProductSubId(RHI::Factory::Get().GetAPIUniqueIndex(), variantStableId); + uint32_t shaderVariantProductSubId = + ShaderVariantAsset::MakeAssetProductSubId(RHI::Factory::Get().GetAPIUniqueIndex(), supervariantIndex.GetIndex(), variantStableId); Data::AssetId shaderVariantAssetId(shaderVariantTreeAssetId.m_guid, shaderVariantProductSubId); AZStd::unique_lock lock(m_mutex); @@ -502,11 +504,11 @@ namespace AZ void ShaderVariantAsyncLoader::QueueShaderVariantTreeForLoading( - const PairOfShaderAssetAndShaderVariantId& shaderAndVariantPair, + const TupleShaderAssetAndShaderVariantId& shaderAndVariantTuple, AZStd::unordered_set& shaderVariantTreePendingRequests) { - auto shaderAssetId = shaderAndVariantPair.m_shaderAsset.GetId(); - if (shaderVariantTreePendingRequests.count(shaderAndVariantPair.m_shaderAsset.GetId())) + auto shaderAssetId = shaderAndVariantTuple.m_shaderAsset.GetId(); + if (shaderVariantTreePendingRequests.count(shaderAndVariantTuple.m_shaderAsset.GetId())) { // Already queued. return; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp index 24dfcb7097..f86a51124b 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/View.cpp @@ -55,11 +55,11 @@ namespace AZ AZ::MakePerspectiveFovMatrixRH(viewToClipMatrix, AZ::Constants::HalfPi, 1, 0.1f, 1000.f, true); SetViewToClipMatrix(viewToClipMatrix); - Data::Asset viewSrgAsset = RPISystemInterface::Get()->GetViewSrgAsset(); + Data::Asset viewSrgShaderAsset = RPISystemInterface::Get()->GetCommonShaderAssetForSrgs(); - if (viewSrgAsset.IsReady()) + if (viewSrgShaderAsset.IsReady()) { - m_shaderResourceGroup = ShaderResourceGroup::Create(viewSrgAsset); + m_shaderResourceGroup = ShaderResourceGroup::Create(viewSrgShaderAsset, DefaultSupervariantIndex, RPISystemInterface::Get()->GetViewSrgLayout()->GetName()); } #if AZ_TRAIT_MASKED_OCCLUSION_CULLING_SUPPORTED m_maskedOcclusionCulling = MaskedOcclusionCulling::Create(); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp index 7e9e2ddb10..0afc174ad3 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialAsset.cpp @@ -64,14 +64,34 @@ namespace AZ return m_materialTypeAsset->GetMaterialFunctors(); } - const AZ::Data::Asset& MaterialAsset::GetMaterialSrgAsset() const + const RHI::Ptr& MaterialAsset::GetMaterialSrgLayout(const SupervariantIndex& supervariantIndex) const { - return m_materialTypeAsset->GetMaterialSrgAsset(); + return m_materialTypeAsset->GetMaterialSrgLayout(supervariantIndex); } - const AZ::Data::Asset& MaterialAsset::GetObjectSrgAsset() const + const RHI::Ptr& MaterialAsset::GetMaterialSrgLayout(const AZ::Name& supervariantName) const { - return m_materialTypeAsset->GetObjectSrgAsset(); + return m_materialTypeAsset->GetMaterialSrgLayout(supervariantName); + } + + const RHI::Ptr& MaterialAsset::GetMaterialSrgLayout() const + { + return m_materialTypeAsset->GetMaterialSrgLayout(); + } + + const RHI::Ptr& MaterialAsset::GetObjectSrgLayout(const SupervariantIndex& supervariantIndex) const + { + return m_materialTypeAsset->GetObjectSrgLayout(supervariantIndex); + } + + const RHI::Ptr& MaterialAsset::GetObjectSrgLayout(const AZ::Name& supervariantName) const + { + return m_materialTypeAsset->GetObjectSrgLayout(supervariantName); + } + + const RHI::Ptr& MaterialAsset::GetObjectSrgLayout() const + { + return m_materialTypeAsset->GetObjectSrgLayout(); } const MaterialPropertiesLayout* MaterialAsset::GetMaterialPropertiesLayout() const diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAsset.cpp index 20adb63cb8..145eedf2e6 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAsset.cpp @@ -48,11 +48,11 @@ namespace AZ serializeContext->RegisterGenericType(); serializeContext->Class() - ->Version(3) + ->Version(4) // ATOM-15472 ->Field("ShaderCollection", &MaterialTypeAsset::m_shaderCollection) ->Field("MaterialFunctors", &MaterialTypeAsset::m_materialFunctors) - ->Field("MaterialSrgAsset", &MaterialTypeAsset::m_materialSrgAsset) - ->Field("ObjectSrgAsset", &MaterialTypeAsset::m_objectSrgAsset) + ->Field("MaterialSrgShaderIndex", &MaterialTypeAsset::m_materialSrgShaderIndex) + ->Field("ObjectSrgShaderIndex", &MaterialTypeAsset::m_objectSrgShaderIndex) ->Field("MaterialPropertiesLayout", &MaterialTypeAsset::m_materialPropertiesLayout) ->Field("DefaultPropertyValues", &MaterialTypeAsset::m_propertyValues) ->Field("UvNameMap", &MaterialTypeAsset::m_uvNameMap) @@ -77,14 +77,76 @@ namespace AZ return m_materialFunctors; } - const AZ::Data::Asset& MaterialTypeAsset::GetMaterialSrgAsset() const + const RHI::Ptr& MaterialTypeAsset::GetSrgLayout( + uint32_t shaderIndex, const SupervariantIndex& supervariantIndex, uint32_t srgBindingSlot) const { - return m_materialSrgAsset; + const bool validShaderIndex = (m_shaderCollection.size() > shaderIndex); + if (!validShaderIndex) + { + return RHI::NullSrgLayout; + } + const auto& shaderAsset = m_shaderCollection[shaderIndex].GetShaderAsset(); + return shaderAsset->FindShaderResourceGroupLayout(srgBindingSlot, supervariantIndex); } - const AZ::Data::Asset& MaterialTypeAsset::GetObjectSrgAsset() const + const RHI::Ptr& MaterialTypeAsset::GetSrgLayout( + uint32_t shaderIndex, const AZ::Name& supervariantName, uint32_t srgBindingSlot) const { - return m_objectSrgAsset; + const bool validShaderIndex = (m_shaderCollection.size() > shaderIndex); + if (!validShaderIndex) + { + return RHI::NullSrgLayout; + } + const auto& shaderAsset = m_shaderCollection[shaderIndex].GetShaderAsset(); + auto supervariantIndex = shaderAsset->GetSupervariantIndex(supervariantName); + return shaderAsset->FindShaderResourceGroupLayout(srgBindingSlot, supervariantIndex); + } + + const RHI::Ptr& MaterialTypeAsset::GetMaterialSrgLayout( + const SupervariantIndex& supervariantIndex) const + { + return GetSrgLayout(m_materialSrgShaderIndex, supervariantIndex, RPI::SrgBindingSlot::Material); + } + + const RHI::Ptr& MaterialTypeAsset::GetMaterialSrgLayout(const AZ::Name& supervariantName) const + { + return GetSrgLayout(m_materialSrgShaderIndex, supervariantName, RPI::SrgBindingSlot::Material); + } + + const RHI::Ptr& MaterialTypeAsset::GetMaterialSrgLayout() const + { + return GetMaterialSrgLayout(DefaultSupervariantIndex); + } + + const Data::Asset& MaterialTypeAsset::GetShaderAssetForMaterialSrg() const + { + AZ_Assert(m_shaderCollection.size() > m_materialSrgShaderIndex, "shaderIndex %u is invalid because there are only %zu shaders in the collection", m_materialSrgShaderIndex, + m_shaderCollection.size()); + return m_shaderCollection[m_materialSrgShaderIndex].GetShaderAsset(); + } + + const RHI::Ptr& MaterialTypeAsset::GetObjectSrgLayout( + const SupervariantIndex& supervariantIndex) const + { + return GetSrgLayout(m_objectSrgShaderIndex, supervariantIndex, RPI::SrgBindingSlot::Object); + } + + const RHI::Ptr& MaterialTypeAsset::GetObjectSrgLayout(const AZ::Name& supervariantName) const + { + return GetSrgLayout(m_objectSrgShaderIndex, supervariantName, RPI::SrgBindingSlot::Object); + } + + const RHI::Ptr& MaterialTypeAsset::GetObjectSrgLayout() const + { + return GetObjectSrgLayout(DefaultSupervariantIndex); + } + + const Data::Asset& MaterialTypeAsset::GetShaderAssetForObjectSrg() const + { + AZ_Assert(m_shaderCollection.size() > m_objectSrgShaderIndex, + "shaderIndex %u is invalid because there are only %zu shaders in the collection", m_objectSrgShaderIndex, + m_shaderCollection.size()); + return m_shaderCollection[m_objectSrgShaderIndex].GetShaderAsset(); } const MaterialPropertiesLayout* MaterialTypeAsset::GetMaterialPropertiesLayout() const @@ -109,13 +171,10 @@ namespace AZ bool MaterialTypeAsset::PostLoadInit() { - Data::AssetBus::MultiHandler::BusConnect(m_materialSrgAsset.GetId()); - Data::AssetBus::MultiHandler::BusConnect(m_objectSrgAsset.GetId()); for (const auto& shaderItem : m_shaderCollection) { Data::AssetBus::MultiHandler::BusConnect(shaderItem.GetShaderAsset().GetId()); } - return true; } @@ -135,8 +194,6 @@ namespace AZ // The order of asset reloads is non-deterministic. If the MaterialTypeAsset reloads before these // dependency assets, this will make sure the MaterialTypeAsset gets the latest ones when they reload. // Or in some cases a these assets could get updated and reloaded without reloading the MaterialTypeAsset at all. - TryReplaceAsset(m_materialSrgAsset, asset); - TryReplaceAsset(m_objectSrgAsset, asset); for (auto& shaderItem : m_shaderCollection) { TryReplaceAsset(shaderItem.m_shaderAsset, asset); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAssetCreator.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAssetCreator.cpp index 3ac44a2eec..bdae7a9c03 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAssetCreator.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Material/MaterialTypeAssetCreator.cpp @@ -57,33 +57,30 @@ namespace AZ return EndCommon(result); } - bool MaterialTypeAssetCreator::UpdateShaderResourceGroup( - Data::Asset& srgAssetToUpdate, - const Data::Asset& newShaderAsset, - uint32_t bindingSlot, - const char* srgDebugName) + bool MaterialTypeAssetCreator::UpdateShaderIndexForShaderResourceGroup( + uint32_t& srgShaderIndexToUpdate, const Data::Asset& newShaderAsset, const uint32_t newShaderAssetIndex, const uint32_t bindingSlot, const char* srgDebugName) { - auto& newSrgAsset = newShaderAsset->FindShaderResourceGroupAsset(bindingSlot); + const auto& newSrgLayout = newShaderAsset->FindShaderResourceGroupLayout(bindingSlot); - if (srgAssetToUpdate.GetId().IsValid() && - newSrgAsset.GetId().IsValid() && - srgAssetToUpdate.GetId() != newSrgAsset.GetId()) + if (!newSrgLayout) { - ReportError("All shaders in a material must use the same %s ShaderResourceGroup.", srgDebugName); - return false; + // It's ok if newShaderAsset doesn't have the SRG. Only some of the shaders may have an SRG of a given type. + return true; } - // It doesn't appear this case is actually possible right now, but checking anyway for completeness - if (newSrgAsset.GetId().IsValid() && !newSrgAsset.IsReady()) + if (srgShaderIndexToUpdate != MaterialTypeAsset::InvalidShaderIndex) { - ReportError("The %s ShaderResourceGroup is not loaded.", srgDebugName); - return false; + const auto& currentShaderAsset = m_asset->m_shaderCollection[srgShaderIndexToUpdate].GetShaderAsset(); + const auto& currentSrgLayout = currentShaderAsset->FindShaderResourceGroupLayout(bindingSlot); + if (currentSrgLayout->GetHash() != newSrgLayout->GetHash()) + { + ReportError("All shaders in a material must use the same %s ShaderResourceGroup.", srgDebugName); + return false; + } } - - // Only some of the shaders may have an SRG of a given type, so don't clear an SRG that was found in one of the other shaders. - if (newSrgAsset) + else { - srgAssetToUpdate = newSrgAsset; + srgShaderIndexToUpdate = newShaderAssetIndex; } return true; @@ -93,10 +90,12 @@ namespace AZ { if (!m_materialShaderResourceGroupLayout) { - if (m_asset->m_materialSrgAsset) + if (m_asset->m_materialSrgShaderIndex != MaterialTypeAsset::InvalidShaderIndex) { - m_materialShaderResourceGroupLayout = m_asset->m_materialSrgAsset->GetLayout(); - + // [GFX TODO] At the moment we are using the default supervariant. + // In the future it may be necessary to get the layout + // from a particular supervariant. + m_materialShaderResourceGroupLayout = m_asset->GetMaterialSrgLayout().get(); if (!m_materialShaderResourceGroupLayout) { ReportError("Shader resource group has a null layout."); @@ -115,9 +114,9 @@ namespace AZ ReportError(AZStd::string::format("Failed to insert shader tag '%s'. Shader tag must be unique.", shaderTag.GetCStr()).c_str()); } - // [GFX TODO]: Stop using hard-coded material srg name once we have SRG semantics in place - UpdateShaderResourceGroup(m_asset->m_materialSrgAsset, shaderAsset, SrgBindingSlot::Material, "material"); - UpdateShaderResourceGroup(m_asset->m_objectSrgAsset, shaderAsset, SrgBindingSlot::Object, "object"); + uint32_t newShaderIndex = aznumeric_caster(m_asset->m_shaderCollection.m_shaderItems.size() - 1); + UpdateShaderIndexForShaderResourceGroup(m_asset->m_materialSrgShaderIndex, shaderAsset, newShaderIndex, SrgBindingSlot::Material, "material"); + UpdateShaderIndexForShaderResourceGroup(m_asset->m_objectSrgShaderIndex, shaderAsset, newShaderIndex, SrgBindingSlot::Object, "object"); CacheMaterialSrgLayout(); } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/RPISystemDescriptor.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/RPISystemDescriptor.cpp index 11ed1b2aee..e7628697e0 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/RPISystemDescriptor.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/RPISystemDescriptor.cpp @@ -28,10 +28,9 @@ namespace AZ ; serializeContext->Class() - ->Version(5) + ->Version(6) // ATOM-15472 ->Field("RHISystemDescriptor", &RPISystemDescriptor::m_rhiSystemDescriptor) - ->Field("SceneSRGAssetPath", &RPISystemDescriptor::m_sceneSrgAssetPath) - ->Field("ViewSRGAssetPath", &RPISystemDescriptor::m_viewSrgAssetPath) + ->Field("CommonSrgsShaderAssetPath", &RPISystemDescriptor::m_commonSrgsShaderAssetPath) ->Field("ImageSystemDescriptor", &RPISystemDescriptor::m_imageSystemDescriptor) ->Field("GpuQuerySystemDescriptor", &RPISystemDescriptor::m_gpuQuerySystemDescriptor) ->Field("DynamicDrawSystemDescriptor", &RPISystemDescriptor::m_dynamicDrawSystemDescriptor) @@ -50,8 +49,8 @@ namespace AZ ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System", 0xc94d118b)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->DataElement(AZ::Edit::UIHandlers::Default, &RPISystemDescriptor::m_sceneSrgAssetPath, "Scene SRG Asset Path", "Shader Resource Group asset path for all RPI scenes") - ->DataElement(AZ::Edit::UIHandlers::Default, &RPISystemDescriptor::m_viewSrgAssetPath, "View SRG Asset Path", "Shader Resource Group asset path for all RPI views") + ->DataElement(AZ::Edit::UIHandlers::Default, &RPISystemDescriptor::m_commonSrgsShaderAssetPath, "Common Shader Asset Path For Scene & View SRGs", + "Shader asset path used to get the Scene and View SRGs for all RPI scenes and views respectively") ->DataElement(AZ::Edit::UIHandlers::Default, &RPISystemDescriptor::m_rhiSystemDescriptor, "RHI System Config", "Configuration of Render Hardware Interface") ->DataElement(AZ::Edit::UIHandlers::Default, &RPISystemDescriptor::m_imageSystemDescriptor, "Image System Config", "Configuration of Image System") ->DataElement(AZ::Edit::UIHandlers::Default, &RPISystemDescriptor::m_gpuQuerySystemDescriptor, "Gpu Query System Config", "Configuration of Gpu Query System") diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.cpp index 079d72358d..82aadd3b17 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.cpp @@ -37,10 +37,9 @@ namespace AZ if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(0) + ->Version(1) // ATOM-15472 ->Field("ShaderAssetFileName", &PrecompiledShaderAssetSourceData::m_shaderAssetFileName) ->Field("PlatformIdentifiers", &PrecompiledShaderAssetSourceData::m_platformIdentifiers) - ->Field("ShaderResourceGroupAssets", &PrecompiledShaderAssetSourceData::m_srgAssetFileNames) ->Field("RootShaderVariantAssets", &PrecompiledShaderAssetSourceData::m_rootShaderVariantAssets) ; } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp index cf655d43f7..08d0cab935 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset.cpp @@ -27,58 +27,85 @@ namespace AZ { namespace RPI { - const char* ShaderAsset::DisplayName = "Shader"; - const char* ShaderAsset::Extension = "azshader"; - const char* ShaderAsset::Group = "Shader"; + const ShaderVariantStableId ShaderAsset::RootShaderVariantStableId{0}; - const ShaderVariantStableId ShaderAsset::RootShaderVariantStableId{ 0 }; + static constexpr uint32_t SubProductTypeBitPosition = 0; + static constexpr uint32_t SubProductTypeNumBits = SupervariantIndexBitPosition - SubProductTypeBitPosition; + static constexpr uint32_t SubProductTypeMaxValue = (1 << SubProductTypeNumBits) - 1; - uint32_t ShaderAsset::MakeAssetProductSubId(uint32_t rhiApiUniqueIndex, uint32_t subProductType) + static_assert(RhiIndexMaxValue == RHI::Limits::APIType::PerPlatformApiUniqueIndexMax); + + uint32_t ShaderAsset::MakeProductAssetSubId( + uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType) { - static constexpr uint32_t SubProductTypeBitPosition = 0; - static constexpr uint32_t SubProductTypeNumBits = RhiIndexBitPosition - SubProductTypeBitPosition; - static constexpr uint32_t SubProductTypeMaxValue = (1 << SubProductTypeNumBits) - 1; - - static_assert(RhiIndexMaxValue == RHI::Limits::APIType::PerPlatformApiUniqueIndexMax); AZ_Assert(rhiApiUniqueIndex <= RhiIndexMaxValue, "Invalid rhiApiUniqueIndex [%u]", rhiApiUniqueIndex); + AZ_Assert(supervariantIndex <= SupervariantIndexMaxValue, "Invalid supervariantIndex [%u]", supervariantIndex); AZ_Assert(subProductType <= SubProductTypeMaxValue, "Invalid subProductType [%u]", subProductType); const uint32_t assetProductSubId = (rhiApiUniqueIndex << RhiIndexBitPosition) | - (subProductType << SubProductTypeBitPosition); + (supervariantIndex << SupervariantIndexBitPosition) | (subProductType << SubProductTypeBitPosition); return assetProductSubId; } + SupervariantIndex ShaderAsset::GetSupervariantIndexFromProductAssetSubId(uint32_t assetProducSubId) + { + const uint32_t supervariantIndex = assetProducSubId >> SupervariantIndexBitPosition; + return SupervariantIndex{supervariantIndex & SupervariantIndexMaxValue}; + } + + SupervariantIndex ShaderAsset::GetSupervariantIndexFromAssetId(const Data::AssetId& assetId) + { + return GetSupervariantIndexFromProductAssetSubId(assetId.m_subId); + } + + void ShaderAsset::Supervariant::Reflect(AZ::ReflectContext* context) + { + if (auto* serializeContext = azrtti_cast(context)) + { + serializeContext->Class() + ->Version(1) + ->Field("Name", &Supervariant::m_name) + ->Field("SrgLayoutList", &Supervariant::m_srgLayoutList) + ->Field("PipelineLayout", &Supervariant::m_pipelineLayoutDescriptor) + ->Field("InputContract", &Supervariant::m_inputContract) + ->Field("OutputContract", &Supervariant::m_outputContract) + ->Field("RenderStates", &Supervariant::m_renderStates) + ->Field("AttributeMapList", &Supervariant::m_attributeMaps) + ->Field("RootVariantAsset", &Supervariant::m_rootShaderVariantAsset) + ; + } + } + void ShaderAsset::ShaderApiDataContainer::Reflect(AZ::ReflectContext* context) { if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(5) + ->Version(1) ->Field("APIType", &ShaderApiDataContainer::m_APIType) - ->Field("PipelineLayoutDescriptor", &ShaderApiDataContainer::m_pipelineLayoutDescriptor) - ->Field("RootShaderVariantAsset", &ShaderApiDataContainer::m_rootShaderVariantAsset) - ->Field("AttributeMaps", &ShaderApiDataContainer::m_attributeMaps) + ->Field("Supervariants", &ShaderApiDataContainer::m_supervariants) ; } } void ShaderAsset::Reflect(ReflectContext* context) { + Supervariant::Reflect(context); + + ShaderApiDataContainer::Reflect(context); + if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(6) + ->Version(1) ->Field("name", &ShaderAsset::m_name) ->Field("pipelineStateType", &ShaderAsset::m_pipelineStateType) - ->Field("shaderResourceGroupAssets", &ShaderAsset::m_shaderResourceGroupAssets) ->Field("shaderOptionGroupLayout", &ShaderAsset::m_shaderOptionGroupLayout) - ->Field("perAPIShaderData", &ShaderAsset::m_perAPIShaderData) ->Field("drawListName", &ShaderAsset::m_drawListName) ->Field("shaderAssetBuildTimestamp", &ShaderAsset::m_shaderAssetBuildTimestamp) + ->Field("perAPIShaderData", &ShaderAsset::m_perAPIShaderData) ; } - - ShaderApiDataContainer::Reflect(context); } ShaderAsset::~ShaderAsset() @@ -92,19 +119,62 @@ namespace AZ return m_name; } - Data::Asset ShaderAsset::GetVariant(const ShaderVariantId& shaderVariantId) + RHI::PipelineStateType ShaderAsset::GetPipelineStateType() const + { + return m_pipelineStateType; + } + + const ShaderOptionGroupLayout* ShaderAsset::GetShaderOptionGroupLayout() const + { + AZ_Assert(m_shaderOptionGroupLayout, "m_shaderOptionGroupLayout is null"); + return m_shaderOptionGroupLayout.get(); + } + + const Name& ShaderAsset::GetDrawListName() const + { + return m_drawListName; + } + + AZStd::sys_time_t ShaderAsset::GetShaderAssetBuildTimestamp() const + { + return m_shaderAssetBuildTimestamp; + } + + void ShaderAsset::SetReady() + { + m_status = AssetStatus::Ready; + } + + + SupervariantIndex ShaderAsset::GetSupervariantIndex(const AZ::Name& supervariantName) const + { + const auto& supervariants = GetCurrentShaderApiData().m_supervariants; + const uint32_t supervariantCount = supervariants.size(); + for (uint32_t index = 0; index < supervariantCount; ++index) + { + if (supervariants[index].m_name == supervariantName) + { + return SupervariantIndex{index}; + } + } + return InvalidSupervariantIndex; + } + + + Data::Asset ShaderAsset::GetVariant( + const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) { AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); auto variantFinder = AZ::Interface::Get(); AZ_Assert(variantFinder, "The IShaderVariantFinder doesn't exist"); - Data::Asset shaderVariantAsset = variantFinder->GetShaderVariantAssetByVariantId( - Data::Asset(this, Data::AssetLoadBehavior::Default), shaderVariantId); + Data::Asset thisAsset(this, Data::AssetLoadBehavior::Default); + Data::Asset shaderVariantAsset = + variantFinder->GetShaderVariantAssetByVariantId(thisAsset, shaderVariantId, supervariantIndex); if (!shaderVariantAsset) { - variantFinder->QueueLoadShaderVariantAssetByVariantId( - Data::Asset(this, Data::AssetLoadBehavior::Default), shaderVariantId); + variantFinder->QueueLoadShaderVariantAssetByVariantId(thisAsset, shaderVariantId, supervariantIndex); } return shaderVariantAsset; } @@ -152,16 +222,18 @@ namespace AZ return m_shaderVariantTree->FindVariantStableId(GetShaderOptionGroupLayout(), shaderVariantId); } - Data::Asset ShaderAsset::GetVariant(ShaderVariantStableId shaderVariantStableId) const + Data::Asset ShaderAsset::GetVariant( + ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) const { if (!shaderVariantStableId.IsValid() || shaderVariantStableId == RootShaderVariantStableId) { - return GetRootVariant(); + return GetRootVariant(supervariantIndex); } auto variantFinder = AZ::Interface::Get(); AZ_Assert(variantFinder, "No Variant Finder For shaderAsset with name [%s] and stableId [%u]", GetName().GetCStr(), shaderVariantStableId.GetIndex()); - Data::Asset variant = variantFinder->GetShaderVariantAsset(m_shaderVariantTree.GetId(), shaderVariantStableId); + Data::Asset variant = + variantFinder->GetShaderVariantAsset(m_shaderVariantTree.GetId(), shaderVariantStableId, supervariantIndex); if (!variant.IsReady()) { // Enqueue a request to load the variant, next time around the caller will get the asset. @@ -175,11 +247,11 @@ namespace AZ } if (variantTreeAssetId.IsValid()) { - variantFinder->QueueLoadShaderVariantAsset(variantTreeAssetId, shaderVariantStableId); + variantFinder->QueueLoadShaderVariantAsset(variantTreeAssetId, shaderVariantStableId, supervariantIndex); } - return GetRootVariant(); + return GetRootVariant(supervariantIndex); } - else if (variant->GetShaderAssetBuildTimestamp() == m_shaderAssetBuildTimestamp) + else if (variant->GetBuildTimestamp() >= m_shaderAssetBuildTimestamp) { return variant; } @@ -188,98 +260,146 @@ namespace AZ // When rebuilding shaders we may be in a state where the ShaderAsset and root ShaderVariantAsset have been rebuilt and reloaded, but some (or all) // shader variants haven't been built yet. Since we want to use the latest version of the shader code, ignore the old variants and fall back to the newer root variant instead. AZ_Warning("ShaderAsset", false, "ShaderAsset and ShaderVariantAsset are out of sync; defaulting to root shader variant. (This is common while reloading shaders)."); - return GetRootVariant(); + return GetRootVariant(supervariantIndex); } } - Data::Asset ShaderAsset::GetRootVariant() const + Data::Asset ShaderAsset::GetRootVariant(SupervariantIndex supervariantIndex) const { - return GetCurrentShaderApiData().m_rootShaderVariantAsset; + auto supervariant = GetSupervariant(supervariantIndex); + if (!supervariant) + { + return Data::Asset(); + } + return supervariant->m_rootShaderVariantAsset; } - const Data::Asset& ShaderAsset::FindShaderResourceGroupAsset(const Name& shaderResourceGroupName) const + const RHI::Ptr& ShaderAsset::FindShaderResourceGroupLayout( + const Name& shaderResourceGroupName, SupervariantIndex supervariantIndex) const { - const auto findIt = AZStd::find_if(m_shaderResourceGroupAssets.begin(), m_shaderResourceGroupAssets.end(), [&](const Data::Asset& asset) + auto supervariant = GetSupervariant(supervariantIndex); + if (!supervariant) + { + return RHI::NullSrgLayout; + } + const auto& srgLayoutList = supervariant->m_srgLayoutList; + const auto findIt = AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) { - return asset->GetName() == shaderResourceGroupName; + return layout->GetName() == shaderResourceGroupName; }); - if (findIt != m_shaderResourceGroupAssets.end()) + if (findIt != srgLayoutList.end()) { return *findIt; } - static const Data::Asset s_nullAsset; - return s_nullAsset; + return RHI::NullSrgLayout; } - const Data::Asset& ShaderAsset::FindShaderResourceGroupAsset(uint32_t bindingSlot) const + const RHI::Ptr& ShaderAsset::FindShaderResourceGroupLayout( + uint32_t bindingSlot, SupervariantIndex supervariantIndex) const { - const auto findIt = AZStd::find_if(m_shaderResourceGroupAssets.begin(), m_shaderResourceGroupAssets.end(), [&](const Data::Asset& asset) + auto supervariant = GetSupervariant(supervariantIndex); + if (!supervariant) + { + return RHI::NullSrgLayout; + } + const auto& srgLayoutList = supervariant->m_srgLayoutList; + const auto findIt = + AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) { - const auto layout = asset->GetLayout(); return layout && layout->GetBindingSlot() == bindingSlot; }); - if (findIt != m_shaderResourceGroupAssets.end()) + if (findIt != srgLayoutList.end()) { return *findIt; } - static const Data::Asset s_nullAsset; - return s_nullAsset; + return RHI::NullSrgLayout; } - const Data::Asset& ShaderAsset::FindFallbackShaderResourceGroupAsset() const + const RHI::Ptr& ShaderAsset::FindFallbackShaderResourceGroupLayout( + SupervariantIndex supervariantIndex) const { - const auto findIt = AZStd::find_if(m_shaderResourceGroupAssets.begin(), m_shaderResourceGroupAssets.end(), [&](const Data::Asset& asset) + auto supervariant = GetSupervariant(supervariantIndex); + if (!supervariant) + { + return RHI::NullSrgLayout; + } + const auto& srgLayoutList = supervariant->m_srgLayoutList; + const auto findIt = + AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) { - const auto layout = asset->GetLayout(); return layout && layout->HasShaderVariantKeyFallbackEntry(); }); - if (findIt != m_shaderResourceGroupAssets.end()) + if (findIt != srgLayoutList.end()) { return *findIt; } - static const Data::Asset s_nullAsset; - return s_nullAsset; + return RHI::NullSrgLayout; } - AZStd::array_view> ShaderAsset::GetShaderResourceGroupAssets() const + AZStd::array_view> ShaderAsset::GetShaderResourceGroupLayouts( + SupervariantIndex supervariantIndex) const { - return m_shaderResourceGroupAssets; + auto supervariant = GetSupervariant(supervariantIndex); + if (!supervariant) + { + return {}; + } + return supervariant->m_srgLayoutList; } - RHI::PipelineStateType ShaderAsset::GetPipelineStateType() const + + const RHI::Ptr& ShaderAsset::GetDrawSrgLayout(SupervariantIndex supervariantIndex) const { - return m_pipelineStateType; + return FindShaderResourceGroupLayout(SrgBindingSlot::Draw, supervariantIndex); } - const RHI::PipelineLayoutDescriptor* ShaderAsset::GetPipelineLayoutDescriptor() const + const ShaderInputContract& ShaderAsset::GetInputContract(SupervariantIndex supervariantIndex) const { - AZ_Assert(GetCurrentShaderApiData().m_pipelineLayoutDescriptor, "m_pipelineLayoutDescriptor is null"); - return GetCurrentShaderApiData().m_pipelineLayoutDescriptor.get(); + auto supervariant = GetSupervariant(supervariantIndex); + return supervariant->m_inputContract; } - const ShaderOptionGroupLayout* ShaderAsset::GetShaderOptionGroupLayout() const + const ShaderOutputContract& ShaderAsset::GetOutputContract(SupervariantIndex supervariantIndex) const { - AZ_Assert(m_shaderOptionGroupLayout, "m_shaderOptionGroupLayout is null"); - return m_shaderOptionGroupLayout.get(); + auto supervariant = GetSupervariant(supervariantIndex); + return supervariant->m_outputContract; } - const AZ::Data::Asset& ShaderAsset::GetDrawSrgAsset() const + const RHI::RenderStates& ShaderAsset::GetRenderStates(SupervariantIndex supervariantIndex) const { - return FindShaderResourceGroupAsset(SrgBindingSlot::Draw); + auto supervariant = GetSupervariant(supervariantIndex); + return supervariant->m_renderStates; } - AZStd::optional ShaderAsset::GetAttribute(const RHI::ShaderStage& shaderStage, const Name& attributeName) const + const RHI::PipelineLayoutDescriptor* ShaderAsset::GetPipelineLayoutDescriptor(SupervariantIndex supervariantIndex) const { + auto supervariant = GetSupervariant(supervariantIndex); + if (!supervariant) + { + return nullptr; + } + AZ_Assert(supervariant->m_pipelineLayoutDescriptor, "m_pipelineLayoutDescriptor is null"); + return supervariant->m_pipelineLayoutDescriptor.get(); + } + + AZStd::optional ShaderAsset::GetAttribute(const RHI::ShaderStage& shaderStage, const Name& attributeName, + SupervariantIndex supervariantIndex) const + { + auto supervariant = GetSupervariant(supervariantIndex); + if (!supervariant) + { + return AZStd::nullopt; + } const auto stageIndex = static_cast(shaderStage); AZ_Assert(stageIndex < RHI::ShaderStageCount, "Invalid shader stage specified!"); - const auto& attributeMaps = GetCurrentShaderApiData().m_attributeMaps; + const auto& attributeMaps = supervariant->m_attributeMaps; const auto& attrPair = attributeMaps[stageIndex].find(attributeName); if (attrPair == attributeMaps[stageIndex].end()) { @@ -289,21 +409,6 @@ namespace AZ return attrPair->second; } - const Name& ShaderAsset::GetDrawListName() const - { - return m_drawListName; - } - - AZStd::sys_time_t ShaderAsset::GetShaderAssetBuildTimestamp() const - { - return m_shaderAssetBuildTimestamp; - } - - void ShaderAsset::SetReady() - { - m_status = AssetStatus::Ready; - } - ShaderAsset::ShaderApiDataContainer& ShaderAsset::GetCurrentShaderApiData() { const size_t perApiShaderDataCount = m_perAPIShaderData.size(); @@ -332,6 +437,36 @@ namespace AZ return m_perAPIShaderData[0]; } + ShaderAsset::Supervariant* ShaderAsset::GetSupervariant(SupervariantIndex supervariantIndex) + { + auto& supervariants = GetCurrentShaderApiData().m_supervariants; + auto index = supervariantIndex.GetIndex(); + if (index >= supervariants.size()) + { + AZ_Error( + "ShaderAsset", false, "Supervariant index = %u is invalid because there are only %zu supervariants", index, + supervariants.size()); + return nullptr; + } + + return &supervariants[index]; + } + + const ShaderAsset::Supervariant* ShaderAsset::GetSupervariant(SupervariantIndex supervariantIndex) const + { + const auto& supervariants = GetCurrentShaderApiData().m_supervariants; + auto index = supervariantIndex.GetIndex(); + if (index >= supervariants.size()) + { + AZ_Error( + "ShaderAsset", false, "Supervariant index = %u is invalid because there are only %zu supervariants", index, + supervariants.size()); + return nullptr; + } + + return &supervariants[index]; + } + bool ShaderAsset::FinalizeAfterLoad() { // Use the current RHI that is active to select which shader data to use. @@ -362,11 +497,15 @@ namespace AZ // Common finalize check for (const auto& shaderApiData : m_perAPIShaderData) { - bool beTrue = shaderApiData.m_attributeMaps.size() == RHI::ShaderStageCount; - if (!beTrue) + const auto& supervariants = shaderApiData.m_supervariants; + for (const auto& supervariant : supervariants) { - AZ_Error("ShaderAsset", false, "Unexpected number of shader stages!"); - return false; + bool beTrue = supervariant.m_attributeMaps.size() == RHI::ShaderStageCount; + if (!beTrue) + { + AZ_Error("ShaderAsset", false, "Unexpected number of shader stages at supervariant with name [%s]!", supervariant.m_name.GetCStr()); + return false; + } } } @@ -386,7 +525,8 @@ namespace AZ Data::Asset shaderVariantAsset = { asset.GetAs(), AZ::Data::AssetLoadBehavior::PreLoad }; AZ_Assert(shaderVariantAsset->GetStableId() == RootShaderVariantStableId, "Was expecting to update the root variant"); - GetCurrentShaderApiData().m_rootShaderVariantAsset = asset; + SupervariantIndex supervariantIndex = GetSupervariantIndexFromAssetId(asset.GetId()); + GetCurrentShaderApiData().m_supervariants[supervariantIndex.GetIndex()].m_rootShaderVariantAsset = asset; ShaderReloadNotificationBus::Event(GetId(), &ShaderReloadNotificationBus::Events::OnShaderAssetReinitialized, Data::Asset{ this, AZ::Data::AssetLoadBehavior::PreLoad } ); } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset2.cpp deleted file mode 100644 index 749f53aae7..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset2.cpp +++ /dev/null @@ -1,589 +0,0 @@ -/* -* 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. -* -*/ -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - const ShaderVariantStableId ShaderAsset2::RootShaderVariantStableId{0}; - - static constexpr uint32_t SubProductTypeBitPosition = 0; - static constexpr uint32_t SubProductTypeNumBits = SupervariantIndexBitPosition - SubProductTypeBitPosition; - static constexpr uint32_t SubProductTypeMaxValue = (1 << SubProductTypeNumBits) - 1; - - static_assert(RhiIndexMaxValue == RHI::Limits::APIType::PerPlatformApiUniqueIndexMax); - - uint32_t ShaderAsset2::MakeProductAssetSubId( - uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType) - { - AZ_Assert(rhiApiUniqueIndex <= RhiIndexMaxValue, "Invalid rhiApiUniqueIndex [%u]", rhiApiUniqueIndex); - AZ_Assert(supervariantIndex <= SupervariantIndexMaxValue, "Invalid supervariantIndex [%u]", supervariantIndex); - AZ_Assert(subProductType <= SubProductTypeMaxValue, "Invalid subProductType [%u]", subProductType); - - const uint32_t assetProductSubId = (rhiApiUniqueIndex << RhiIndexBitPosition) | - (supervariantIndex << SupervariantIndexBitPosition) | (subProductType << SubProductTypeBitPosition); - return assetProductSubId; - } - - SupervariantIndex ShaderAsset2::GetSupervariantIndexFromProductAssetSubId(uint32_t assetProducSubId) - { - const uint32_t supervariantIndex = assetProducSubId >> SupervariantIndexBitPosition; - return SupervariantIndex{supervariantIndex & SupervariantIndexMaxValue}; - } - - SupervariantIndex ShaderAsset2::GetSupervariantIndexFromAssetId(const Data::AssetId& assetId) - { - return GetSupervariantIndexFromProductAssetSubId(assetId.m_subId); - } - - void ShaderAsset2::Supervariant::Reflect(AZ::ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("Name", &Supervariant::m_name) - ->Field("SrgLayoutList", &Supervariant::m_srgLayoutList) - ->Field("PipelineLayout", &Supervariant::m_pipelineLayoutDescriptor) - ->Field("InputContract", &Supervariant::m_inputContract) - ->Field("OutputContract", &Supervariant::m_outputContract) - ->Field("RenderStates", &Supervariant::m_renderStates) - ->Field("AttributeMapList", &Supervariant::m_attributeMaps) - ->Field("RootVariantAsset", &Supervariant::m_rootShaderVariantAsset) - ; - } - } - - void ShaderAsset2::ShaderApiDataContainer::Reflect(AZ::ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("APIType", &ShaderApiDataContainer::m_APIType) - ->Field("Supervariants", &ShaderApiDataContainer::m_supervariants) - ; - } - } - - void ShaderAsset2::Reflect(ReflectContext* context) - { - Supervariant::Reflect(context); - - ShaderApiDataContainer::Reflect(context); - - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("name", &ShaderAsset2::m_name) - ->Field("pipelineStateType", &ShaderAsset2::m_pipelineStateType) - ->Field("shaderOptionGroupLayout", &ShaderAsset2::m_shaderOptionGroupLayout) - ->Field("drawListName", &ShaderAsset2::m_drawListName) - ->Field("shaderAssetBuildTimestamp", &ShaderAsset2::m_shaderAssetBuildTimestamp) - ->Field("perAPIShaderData", &ShaderAsset2::m_perAPIShaderData) - ; - } - } - - ShaderAsset2::~ShaderAsset2() - { - Data::AssetBus::Handler::BusDisconnect(); - ShaderVariantFinderNotificationBus2::Handler::BusDisconnect(); - } - - const Name& ShaderAsset2::GetName() const - { - return m_name; - } - - RHI::PipelineStateType ShaderAsset2::GetPipelineStateType() const - { - return m_pipelineStateType; - } - - const ShaderOptionGroupLayout* ShaderAsset2::GetShaderOptionGroupLayout() const - { - AZ_Assert(m_shaderOptionGroupLayout, "m_shaderOptionGroupLayout is null"); - return m_shaderOptionGroupLayout.get(); - } - - const Name& ShaderAsset2::GetDrawListName() const - { - return m_drawListName; - } - - AZStd::sys_time_t ShaderAsset2::GetShaderAssetBuildTimestamp() const - { - return m_shaderAssetBuildTimestamp; - } - - void ShaderAsset2::SetReady() - { - m_status = AssetStatus::Ready; - } - - - SupervariantIndex ShaderAsset2::GetSupervariantIndex(const AZ::Name& supervariantName) const - { - const auto& supervariants = GetCurrentShaderApiData().m_supervariants; - const uint32_t supervariantCount = supervariants.size(); - for (uint32_t index = 0; index < supervariantCount; ++index) - { - if (supervariants[index].m_name == supervariantName) - { - return SupervariantIndex{index}; - } - } - return InvalidSupervariantIndex; - } - - - Data::Asset ShaderAsset2::GetVariant( - const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - - auto variantFinder = AZ::Interface::Get(); - AZ_Assert(variantFinder, "The IShaderVariantFinder doesn't exist"); - - Data::Asset thisAsset(this, Data::AssetLoadBehavior::Default); - Data::Asset shaderVariantAsset = - variantFinder->GetShaderVariantAssetByVariantId(thisAsset, shaderVariantId, supervariantIndex); - if (!shaderVariantAsset) - { - variantFinder->QueueLoadShaderVariantAssetByVariantId(thisAsset, shaderVariantId, supervariantIndex); - } - return shaderVariantAsset; - } - - ShaderVariantSearchResult ShaderAsset2::FindVariantStableId(const ShaderVariantId& shaderVariantId) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - - uint32_t dynamicOptionCount = aznumeric_cast(GetShaderOptionGroupLayout()->GetShaderOptions().size()); - ShaderVariantSearchResult variantSearchResult{RootShaderVariantStableId, dynamicOptionCount }; - - if (!dynamicOptionCount) - { - // The shader has no options at all. There's nothing to search. - return variantSearchResult; - } - - auto variantFinder = AZ::Interface::Get(); - AZ_Assert(variantFinder, "The IShaderVariantFinder doesn't exist"); - - { - AZStd::shared_lock lock(m_variantTreeMutex); - if (m_shaderVariantTree) - { - return m_shaderVariantTree->FindVariantStableId(GetShaderOptionGroupLayout(), shaderVariantId); - } - } - - AZStd::unique_lock lock(m_variantTreeMutex); - if (!m_shaderVariantTree) - { - m_shaderVariantTree = variantFinder->GetShaderVariantTreeAsset(GetId()); - if (!m_shaderVariantTree) - { - if (!m_shaderVariantTreeLoadWasRequested) - { - variantFinder->QueueLoadShaderVariantTreeAsset(GetId()); - m_shaderVariantTreeLoadWasRequested = true; - } - - // The variant tree could be under construction or simply doesn't exist at all. - return variantSearchResult; - } - } - return m_shaderVariantTree->FindVariantStableId(GetShaderOptionGroupLayout(), shaderVariantId); - } - - Data::Asset ShaderAsset2::GetVariant( - ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) const - { - if (!shaderVariantStableId.IsValid() || shaderVariantStableId == RootShaderVariantStableId) - { - return GetRootVariant(supervariantIndex); - } - - auto variantFinder = AZ::Interface::Get(); - AZ_Assert(variantFinder, "No Variant Finder For shaderAsset with name [%s] and stableId [%u]", GetName().GetCStr(), shaderVariantStableId.GetIndex()); - Data::Asset variant = - variantFinder->GetShaderVariantAsset(m_shaderVariantTree.GetId(), shaderVariantStableId, supervariantIndex); - if (!variant.IsReady()) - { - // Enqueue a request to load the variant, next time around the caller will get the asset. - Data::AssetId variantTreeAssetId; - { - AZStd::shared_lock lock(m_variantTreeMutex); - if (m_shaderVariantTree) - { - variantTreeAssetId = m_shaderVariantTree.GetId(); - } - } - if (variantTreeAssetId.IsValid()) - { - variantFinder->QueueLoadShaderVariantAsset(variantTreeAssetId, shaderVariantStableId, supervariantIndex); - } - return GetRootVariant(supervariantIndex); - } - else if (variant->GetBuildTimestamp() >= m_shaderAssetBuildTimestamp) - { - return variant; - } - else - { - // When rebuilding shaders we may be in a state where the ShaderAsset2 and root ShaderVariantAsset have been rebuilt and reloaded, but some (or all) - // shader variants haven't been built yet. Since we want to use the latest version of the shader code, ignore the old variants and fall back to the newer root variant instead. - AZ_Warning("ShaderAsset2", false, "ShaderAsset2 and ShaderVariantAsset are out of sync; defaulting to root shader variant. (This is common while reloading shaders)."); - return GetRootVariant(supervariantIndex); - } - } - - Data::Asset ShaderAsset2::GetRootVariant(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return Data::Asset(); - } - return supervariant->m_rootShaderVariantAsset; - } - - const RHI::Ptr ShaderAsset2::FindShaderResourceGroupLayout( - const Name& shaderResourceGroupName, SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - const auto& srgLayoutList = supervariant->m_srgLayoutList; - const auto findIt = AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) - { - return layout->GetName() == shaderResourceGroupName; - }); - - if (findIt != srgLayoutList.end()) - { - return *findIt; - } - - return nullptr; - } - - const RHI::Ptr ShaderAsset2::FindShaderResourceGroupLayout( - uint32_t bindingSlot, SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - const auto& srgLayoutList = supervariant->m_srgLayoutList; - const auto findIt = - AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) - { - return layout && layout->GetBindingSlot() == bindingSlot; - }); - - if (findIt != srgLayoutList.end()) - { - return *findIt; - } - - return nullptr; - } - - const RHI::Ptr ShaderAsset2::FindFallbackShaderResourceGroupLayout( - SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - const auto& srgLayoutList = supervariant->m_srgLayoutList; - const auto findIt = - AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) - { - return layout && layout->HasShaderVariantKeyFallbackEntry(); - }); - - if (findIt != srgLayoutList.end()) - { - return *findIt; - } - - return nullptr; - } - - AZStd::array_view> ShaderAsset2::GetShaderResourceGroupLayouts( - SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return {}; - } - return supervariant->m_srgLayoutList; - } - - - const RHI::Ptr ShaderAsset2::GetDrawSrgLayout(SupervariantIndex supervariantIndex) const - { - return FindShaderResourceGroupLayout(SrgBindingSlot::Draw, supervariantIndex); - } - - const ShaderInputContract& ShaderAsset2::GetInputContract(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - return supervariant->m_inputContract; - } - - const ShaderOutputContract& ShaderAsset2::GetOutputContract(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - return supervariant->m_outputContract; - } - - const RHI::RenderStates& ShaderAsset2::GetRenderStates(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - return supervariant->m_renderStates; - } - - const RHI::PipelineLayoutDescriptor* ShaderAsset2::GetPipelineLayoutDescriptor(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - AZ_Assert(supervariant->m_pipelineLayoutDescriptor, "m_pipelineLayoutDescriptor is null"); - return supervariant->m_pipelineLayoutDescriptor.get(); - } - - AZStd::optional ShaderAsset2::GetAttribute(const RHI::ShaderStage& shaderStage, const Name& attributeName, - SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return AZStd::nullopt; - } - const auto stageIndex = static_cast(shaderStage); - AZ_Assert(stageIndex < RHI::ShaderStageCount, "Invalid shader stage specified!"); - - const auto& attributeMaps = supervariant->m_attributeMaps; - const auto& attrPair = attributeMaps[stageIndex].find(attributeName); - if (attrPair == attributeMaps[stageIndex].end()) - { - return AZStd::nullopt; - } - - return attrPair->second; - } - - ShaderAsset2::ShaderApiDataContainer& ShaderAsset2::GetCurrentShaderApiData() - { - const size_t perApiShaderDataCount = m_perAPIShaderData.size(); - AZ_Assert(perApiShaderDataCount > 0, "Invalid m_perAPIShaderData"); - - if (m_currentAPITypeIndex < perApiShaderDataCount) - { - return m_perAPIShaderData[m_currentAPITypeIndex]; - } - - // We may only endup here when running in a Builder context. - return m_perAPIShaderData[0]; - } - - const ShaderAsset2::ShaderApiDataContainer& ShaderAsset2::GetCurrentShaderApiData() const - { - const size_t perApiShaderDataCount = m_perAPIShaderData.size(); - AZ_Assert(perApiShaderDataCount > 0, "Invalid m_perAPIShaderData"); - - if (m_currentAPITypeIndex < perApiShaderDataCount) - { - return m_perAPIShaderData[m_currentAPITypeIndex]; - } - - // We may only endup here when running in a Builder context. - return m_perAPIShaderData[0]; - } - - ShaderAsset2::Supervariant* ShaderAsset2::GetSupervariant(SupervariantIndex supervariantIndex) - { - auto& supervariants = GetCurrentShaderApiData().m_supervariants; - auto index = supervariantIndex.GetIndex(); - if (index >= supervariants.size()) - { - AZ_Error( - "ShaderAsset2", false, "Supervariant index = %u is invalid because there are only %zu supervariants", index, - supervariants.size()); - return nullptr; - } - - return &supervariants[index]; - } - - const ShaderAsset2::Supervariant* ShaderAsset2::GetSupervariant(SupervariantIndex supervariantIndex) const - { - const auto& supervariants = GetCurrentShaderApiData().m_supervariants; - auto index = supervariantIndex.GetIndex(); - if (index >= supervariants.size()) - { - AZ_Error( - "ShaderAsset2", false, "Supervariant index = %u is invalid because there are only %zu supervariants", index, - supervariants.size()); - return nullptr; - } - - return &supervariants[index]; - } - - bool ShaderAsset2::FinalizeAfterLoad() - { - // Use the current RHI that is active to select which shader data to use. - // We don't assert if the Factory is not available because this method could be called during build time, - // when no Factory is available. Some assets (like the material asset) need to load the ShaderAsset2 - // in order to get some non API specific data (like a ShaderResourceGroup) during their build - // process. If they try to access any RHI API specific data, an assert will be trigger because the - // correct API index will not set. - if (RHI::Factory::IsReady()) - { - auto rhiType = RHI::Factory::Get().GetType(); - auto findIt = AZStd::find_if(m_perAPIShaderData.begin(), m_perAPIShaderData.end(), [&rhiType](const auto& shaderData) - { - return shaderData.m_APIType == rhiType; - }); - - if (findIt != m_perAPIShaderData.end()) - { - m_currentAPITypeIndex = AZStd::distance(m_perAPIShaderData.begin(), findIt); - } - else - { - AZ_Error("ShaderAsset2", false, "Could not find shader for API %s in shader %s", RHI::Factory::Get().GetName().GetCStr(), GetName().GetCStr()); - return false; - } - } - - // Common finalize check - for (const auto& shaderApiData : m_perAPIShaderData) - { - const auto& supervariants = shaderApiData.m_supervariants; - for (const auto& supervariant : supervariants) - { - bool beTrue = supervariant.m_attributeMaps.size() == RHI::ShaderStageCount; - if (!beTrue) - { - AZ_Error("ShaderAsset2", false, "Unexpected number of shader stages at supervariant with name [%s]!", supervariant.m_name.GetCStr()); - return false; - } - } - } - - // Once the ShaderAsset2 is loaded, it is necessary to listen for changes in the Root Variant Asset. - Data::AssetBus::Handler::BusConnect(GetRootVariant().GetId()); - ShaderVariantFinderNotificationBus2::Handler::BusConnect(GetId()); - - return true; - } - - /////////////////////////////////////////////////////////////////////// - // AssetBus overrides... - void ShaderAsset2::OnAssetReloaded(Data::Asset asset) - { - ShaderReloadDebugTracker::ScopedSection reloadSection("ShaderAsset2::OnAssetReloaded %s", asset.GetHint().c_str()); - - Data::Asset shaderVariantAsset = { asset.GetAs(), AZ::Data::AssetLoadBehavior::PreLoad }; - AZ_Assert(shaderVariantAsset->GetStableId() == RootShaderVariantStableId, - "Was expecting to update the root variant"); - SupervariantIndex supervariantIndex = GetSupervariantIndexFromAssetId(asset.GetId()); - GetCurrentShaderApiData().m_supervariants[supervariantIndex.GetIndex()].m_rootShaderVariantAsset = asset; - - ShaderReloadNotificationBus2::Event(GetId(), &ShaderReloadNotificationBus2::Events::OnShaderAssetReinitialized, Data::Asset{ this, AZ::Data::AssetLoadBehavior::PreLoad } ); - } - /////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus2 overrides - void ShaderAsset2::OnShaderVariantTreeAssetReady(Data::Asset shaderVariantTreeAsset, bool isError) - { - ShaderReloadDebugTracker::ScopedSection reloadSection("ShaderAsset2::OnShaderVariantTreeAssetReady %s", shaderVariantTreeAsset.GetHint().c_str()); - - AZStd::unique_lock lock(m_variantTreeMutex); - if (isError) - { - m_shaderVariantTree = {}; //This will force to attempt to reload later. - m_shaderVariantTreeLoadWasRequested = false; - } - else - { - m_shaderVariantTree = shaderVariantTreeAsset; - } - lock.unlock(); - ShaderReloadNotificationBus2::Event(GetId(), &ShaderReloadNotificationBus2::Events::OnShaderAssetReinitialized, Data::Asset{ this, AZ::Data::AssetLoadBehavior::PreLoad }); - } - - /////////////////////////////////////////////////////////////////// - - - /////////////////////////////////////////////////////////////////////// - // ShaderAssetHandler - - Data::AssetHandler::LoadResult ShaderAssetHandler2::LoadAssetData( - const Data::Asset& asset, - AZStd::shared_ptr stream, - const Data::AssetFilterCB& assetLoadFilterCB) - { - if (Base::LoadAssetData(asset, stream, assetLoadFilterCB) == Data::AssetHandler::LoadResult::LoadComplete) - { - return PostLoadInit(asset); - } - return Data::AssetHandler::LoadResult::Error; - } - - Data::AssetHandler::LoadResult ShaderAssetHandler2::PostLoadInit(const Data::Asset& asset) - { - if (ShaderAsset2* shaderAsset = asset.GetAs()) - { - if (!shaderAsset->FinalizeAfterLoad()) - { - AZ_Error("ShaderAssetHandler", false, "Shader asset failed to finalize."); - return Data::AssetHandler::LoadResult::Error; - } - return Data::AssetHandler::LoadResult::LoadComplete; - } - return Data::AssetHandler::LoadResult::Error; - } - - /////////////////////////////////////////////////////////////////////// - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator.cpp index 2e2be18e0a..40daff8c8a 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator.cpp @@ -45,26 +45,6 @@ namespace AZ } } - void ShaderAssetCreator::AddShaderResourceGroupAsset(const Data::Asset& shaderResourceGroupAsset) - { - if (!shaderResourceGroupAsset) - { - ReportError("ShaderResourceGroupAsset '%s' is not loaded.", shaderResourceGroupAsset.GetId().ToString().c_str()); - return; - } - - if (ValidateIsReady()) - { - auto& shaderResourceGroupAssets = m_asset->m_shaderResourceGroupAssets; - - const auto findIt = AZStd::find(shaderResourceGroupAssets.begin(), shaderResourceGroupAssets.end(), shaderResourceGroupAsset); - if (findIt == shaderResourceGroupAssets.end()) - { - shaderResourceGroupAssets.push_back(shaderResourceGroupAsset); - } - } - } - void ShaderAssetCreator::SetShaderOptionGroupLayout(const Ptr& shaderOptionGroupLayout) { if (ValidateIsReady()) @@ -84,28 +64,177 @@ namespace AZ } } - void ShaderAssetCreator::SetRootShaderVariantAsset(Data::Asset shaderVariantAsset) + void ShaderAssetCreator::BeginSupervariant(const Name& name) { - if (ValidateIsReady()) + if (!ValidateIsReady()) { - m_asset->GetCurrentShaderApiData().m_rootShaderVariantAsset = shaderVariantAsset; + return; + } + + if (m_currentSupervariant) + { + ReportError("Call EndSupervariant() before calling BeginSupervariant again."); + return; + } + + if (m_asset->m_currentAPITypeIndex == ShaderAsset::InvalidAPITypeIndex) + { + ReportError("Can not begin supervariant with name [%s] because this function must be called between BeginAPI()/EndAPI()", name.GetCStr()); + return; + } + + if (m_asset->m_perAPIShaderData.empty()) + { + ReportError("Can not add supervariant with name [%s] because there's no per API shader data", name.GetCStr()); + return; + } + + ShaderAsset::ShaderApiDataContainer& perAPIShaderData = m_asset->m_perAPIShaderData[m_asset->m_perAPIShaderData.size() - 1]; + if (perAPIShaderData.m_supervariants.empty()) + { + if (!name.IsEmpty()) + { + ReportError("The first supervariant must be nameless. Name [%s] is invalid", name.GetCStr()); + return; + } + } + else + { + if (name.IsEmpty()) + { + ReportError( + "Only the first supervariant can be nameless. So far there are %zu supervariants", + perAPIShaderData.m_supervariants.size()); + return; + } + } + + perAPIShaderData.m_supervariants.push_back({}); + m_currentSupervariant = &perAPIShaderData.m_supervariants[perAPIShaderData.m_supervariants.size() - 1]; + m_currentSupervariant->m_name = name; + } + + void ShaderAssetCreator::SetSrgLayoutList(const ShaderResourceGroupLayoutList& srgLayoutList) + { + if (!ValidateIsReady()) + { + return; + } + + if (!m_currentSupervariant) + { + ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); + return; + } + + m_currentSupervariant->m_srgLayoutList = srgLayoutList; + for (auto srgLayout : m_currentSupervariant->m_srgLayoutList) + { + if (!srgLayout->Finalize()) + { + ReportError( + "The current supervariant [%s], failed to finalize SRG Layout [%s]", m_currentSupervariant->m_name.GetCStr(), + srgLayout->GetName().GetCStr()); + return; + } } } + //! [Required] Assigns the pipeline layout descriptor shared by all variants in the shader. Shader variants + //! embedded in a single shader asset are required to use the same pipeline layout. It is not necessary to call + //! Finalize() on the pipeline layout prior to assignment, but still permitted. + void ShaderAssetCreator::SetPipelineLayout(RHI::Ptr pipelineLayoutDescriptor) + { + if (!ValidateIsReady()) + { + return; + } + if (!m_currentSupervariant) + { + ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); + return; + } + m_currentSupervariant->m_pipelineLayoutDescriptor = pipelineLayoutDescriptor; + } + + //! Assigns the contract for inputs required by the shader. + void ShaderAssetCreator::SetInputContract(const ShaderInputContract& contract) + { + if (!ValidateIsReady()) + { + return; + } + if (!m_currentSupervariant) + { + ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); + return; + } + m_currentSupervariant->m_inputContract = contract; + } + + //! Assigns the contract for outputs required by the shader. + void ShaderAssetCreator::SetOutputContract(const ShaderOutputContract& contract) + { + if (!ValidateIsReady()) + { + return; + } + if (!m_currentSupervariant) + { + ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); + return; + } + m_currentSupervariant->m_outputContract = contract; + } + + //! Assigns the render states for the draw pipeline. Ignored for non-draw pipelines. + void ShaderAssetCreator::SetRenderStates(const RHI::RenderStates& renderStates) + { + if (!ValidateIsReady()) + { + return; + } + if (!m_currentSupervariant) + { + ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); + return; + } + m_currentSupervariant->m_renderStates = renderStates; + } + + //! [Optional] Not all shaders have attributes before functions. Some attributes do not exist for all RHI::APIType either. void ShaderAssetCreator::SetShaderStageAttributeMapList(const RHI::ShaderStageAttributeMapList& shaderStageAttributeMapList) { - if (ValidateIsReady()) + if (!ValidateIsReady()) { - m_asset->GetCurrentShaderApiData().m_attributeMaps = shaderStageAttributeMapList; + return; } + if (!m_currentSupervariant) + { + ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); + return; + } + m_currentSupervariant->m_attributeMaps = shaderStageAttributeMapList; } - void ShaderAssetCreator::SetPipelineLayout(const Ptr& pipelineLayoutDescriptor) + //! [Required] There's always a root variant for each supervariant. + void ShaderAssetCreator::SetRootShaderVariantAsset(Data::Asset shaderVariantAsset) { - if (ValidateIsReady()) + if (!ValidateIsReady()) { - m_asset->GetCurrentShaderApiData().m_pipelineLayoutDescriptor = pipelineLayoutDescriptor; + return; } + if (!m_currentSupervariant) + { + ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); + return; + } + if (!shaderVariantAsset) + { + ReportError("Invalid root variant"); + return; + } + m_currentSupervariant->m_rootShaderVariantAsset = shaderVariantAsset; } static RHI::PipelineStateType GetPipelineStateType(const Data::Asset& shaderVariantAsset) @@ -127,65 +256,40 @@ namespace AZ return RHI::PipelineStateType::RayTracing; } - // For practical purposes We should never get to this point because a Data::Asset is always validated. - AZ_Assert(false, "Invalid Shader Variant Asset. Couldn't deduce the pipeline state type."); return RHI::PipelineStateType::Count; } - bool ShaderAssetCreator::EndAPI() + bool ShaderAssetCreator::EndSupervariant() { if (!ValidateIsReady()) { return false; } - // Shared resources by all RHI API versions - auto shaderOptionGroupLayout = m_asset->m_shaderOptionGroupLayout; - auto& shaderResourceGroupAssets = m_asset->m_shaderResourceGroupAssets; - - // RHI API specific resources - auto& pipelineLayoutDescriptor = m_asset->GetCurrentShaderApiData().m_pipelineLayoutDescriptor; - auto& rootShaderVariantAsset = m_asset->GetCurrentShaderApiData().m_rootShaderVariantAsset; - if (!rootShaderVariantAsset) + if (!m_currentSupervariant) { - ReportError("Invalid root variant"); + ReportError("Can not end a supervariant that has not started"); return false; } - if (pipelineLayoutDescriptor) + if (!m_currentSupervariant->m_rootShaderVariantAsset.IsReady()) { - if (!pipelineLayoutDescriptor->IsFinalized()) + ReportError( + "The current supervariant [%s], is missing the root ShaderVariantAsset", m_currentSupervariant->m_name.GetCStr()); + return false; + } + + // Supervariant specific resources + if (m_currentSupervariant->m_pipelineLayoutDescriptor) + { + if (!m_currentSupervariant->m_pipelineLayoutDescriptor->IsFinalized()) { - if (pipelineLayoutDescriptor->Finalize() != RHI::ResultCode::Success) + if (m_currentSupervariant->m_pipelineLayoutDescriptor->Finalize() != RHI::ResultCode::Success) { ReportError("Failed to finalize pipeline layout descriptor."); return false; } } - - // Validate that the SRG layouts match between the local SRG assets and the pipeline layout. - - if (pipelineLayoutDescriptor->GetShaderResourceGroupLayoutCount() != shaderResourceGroupAssets.size()) - { - ReportError( - "Number of shader resource group layouts specified in pipeline layout does not match the " - "number of shader resource group assets added to ShaderAssetCreator."); - return false; - } - - for (size_t i = 0; i < shaderResourceGroupAssets.size(); ++i) - { - const RHI::ShaderResourceGroupLayout* layoutForAsset = shaderResourceGroupAssets[i]->GetLayout(m_asset->GetCurrentShaderApiData().m_APIType); - const RHI::ShaderResourceGroupLayout* layoutForPipeline = pipelineLayoutDescriptor->GetShaderResourceGroupLayout(i); - - if (layoutForAsset->GetHash() != layoutForPipeline->GetHash()) - { - ReportError( - "ShaderResourceGroupAsset '%s' at index '%d' does not match ShaderResourceGroupLayout specified in PipelineLayoutDescriptor", - shaderResourceGroupAssets[i]->GetName().GetCStr(), i); - return false; - } - } } else { @@ -193,13 +297,66 @@ namespace AZ return false; } - if (!shaderOptionGroupLayout) + const ShaderInputContract& shaderInputContract = m_currentSupervariant->m_inputContract; + // Validate that each stream ID appears only once. + for (const auto& channel : shaderInputContract.m_streamChannels) { - ReportError("ShaderOptionGroupLayout not specified."); + int count = 0; + + for (const auto& searchChannel : shaderInputContract.m_streamChannels) + { + if (channel.m_semantic == searchChannel.m_semantic) + { + ++count; + } + } + + if (count > 1) + { + ReportError( + "Input stream channel [%s] appears multiple times. For supervariant with name [%s]", + channel.m_semantic.ToString().c_str(), m_currentSupervariant->m_name.GetCStr()); + return false; + } + } + + auto pipelineStateType = GetPipelineStateType(m_currentSupervariant->m_rootShaderVariantAsset); + if (pipelineStateType == RHI::PipelineStateType::Count) + { + ReportError("Invalid pipelineStateType for supervariant [%s]", m_currentSupervariant->m_name.GetCStr()); return false; } - m_asset->m_pipelineStateType = GetPipelineStateType(rootShaderVariantAsset); + + if (m_currentSupervariant->m_name.IsEmpty()) + { + m_asset->m_pipelineStateType = pipelineStateType; + } + else + { + if (m_asset->m_pipelineStateType != pipelineStateType) + { + ReportError("All supervariants must be of the same pipelineStateType. Current pipelineStateType is [%d], but for supervariant [%s] the pipelineStateType is [%d]", + m_asset->m_pipelineStateType, m_currentSupervariant->m_name.GetCStr(), pipelineStateType); + return false; + } + } + + m_currentSupervariant = nullptr; + return true; + } + + bool ShaderAssetCreator::EndAPI() + { + if (!ValidateIsReady()) + { + return false; + } + if (m_currentSupervariant) + { + ReportError("EndSupervariant() must be called before calling EndAPI()"); + return false; + } m_asset->m_currentAPITypeIndex = ShaderAsset::InvalidAPITypeIndex; return true; @@ -229,27 +386,18 @@ namespace AZ return EndCommon(shaderAsset); } - void ShaderAssetCreator::Clone(const Data::AssetId& assetId, - const ShaderAsset* sourceShaderAsset, - const ShaderResourceGroupAssets& srgAssets, - const ShaderRootVariantAssets& rootVariantAssets) + void ShaderAssetCreator::Clone(const Data::AssetId& assetId, const ShaderAsset& sourceShaderAsset, [[maybe_unused]] const ShaderRootVariantAssets& rootVariantAssets) { BeginCommon(assetId); - m_asset->m_name = sourceShaderAsset->m_name; - m_asset->m_pipelineStateType = sourceShaderAsset->m_pipelineStateType; - - // copy Srg assets - AZ_Assert(srgAssets.size() == sourceShaderAsset->m_shaderResourceGroupAssets.size(), "incorrect number of Srg assets passed to Clone()"); - for (const auto& srgAsset : srgAssets) - { - m_asset->m_shaderResourceGroupAssets.push_back(srgAsset); - } - - m_asset->m_shaderOptionGroupLayout = sourceShaderAsset->m_shaderOptionGroupLayout; + m_asset->m_name = sourceShaderAsset.m_name; + m_asset->m_pipelineStateType = sourceShaderAsset.m_pipelineStateType; + m_asset->m_drawListName = sourceShaderAsset.m_drawListName; + m_asset->m_shaderOptionGroupLayout = sourceShaderAsset.m_shaderOptionGroupLayout; + m_asset->m_shaderAssetBuildTimestamp = sourceShaderAsset.m_shaderAssetBuildTimestamp; // copy root variant assets - for (auto& perAPIShaderData : sourceShaderAsset->m_perAPIShaderData) + for (auto& perAPIShaderData : sourceShaderAsset.m_perAPIShaderData) { // find the matching ShaderVariantAsset AZ::Data::Asset foundVariantAsset; @@ -261,17 +409,25 @@ namespace AZ break; } } - + if (!foundVariantAsset) { ReportWarning("Failed to find variant asset for API [%d]", perAPIShaderData.m_APIType); } - + m_asset->m_perAPIShaderData.push_back(perAPIShaderData); - m_asset->m_perAPIShaderData.back().m_rootShaderVariantAsset = foundVariantAsset; + if (m_asset->m_perAPIShaderData.back().m_supervariants.empty()) + { + ReportWarning("Attempting to clone a shader asset that has no supervariants for API [%d]", perAPIShaderData.m_APIType); + } + else + { + // currently we only support one supervariant when cloning + // [GFX TODO][ATOM-15740] Support multiple supervariants in ShaderAssetCreator::Clone + m_asset->m_perAPIShaderData.back().m_supervariants[0].m_rootShaderVariantAsset = foundVariantAsset; + } } - m_asset->m_drawListName = sourceShaderAsset->m_drawListName; } } // namespace RPI } // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp deleted file mode 100644 index af8340a343..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp +++ /dev/null @@ -1,404 +0,0 @@ -/* -* 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. -* -*/ - -#include - -namespace AZ -{ - namespace RPI - { - void ShaderAssetCreator2::Begin(const Data::AssetId& assetId) - { - BeginCommon(assetId); - } - - void ShaderAssetCreator2::SetShaderAssetBuildTimestamp(AZStd::sys_time_t shaderAssetBuildTimestamp) - { - if (ValidateIsReady()) - { - m_asset->m_shaderAssetBuildTimestamp = shaderAssetBuildTimestamp; - } - } - - void ShaderAssetCreator2::SetName(const Name& name) - { - if (ValidateIsReady()) - { - m_asset->m_name = name; - } - } - - void ShaderAssetCreator2::SetDrawListName(const Name& name) - { - if (ValidateIsReady()) - { - m_asset->m_drawListName = name; - } - } - - void ShaderAssetCreator2::SetShaderOptionGroupLayout(const Ptr& shaderOptionGroupLayout) - { - if (ValidateIsReady()) - { - m_asset->m_shaderOptionGroupLayout = shaderOptionGroupLayout; - } - } - - void ShaderAssetCreator2::BeginAPI(RHI::APIType type) - { - if (ValidateIsReady()) - { - ShaderAsset2::ShaderApiDataContainer shaderData; - shaderData.m_APIType = type; - m_asset->m_currentAPITypeIndex = m_asset->m_perAPIShaderData.size(); - m_asset->m_perAPIShaderData.push_back(shaderData); - } - } - - void ShaderAssetCreator2::BeginSupervariant(const Name& name) - { - if (!ValidateIsReady()) - { - return; - } - - if (m_currentSupervariant) - { - ReportError("Call EndSupervariant() before calling BeginSupervariant again."); - return; - } - - if (m_asset->m_currentAPITypeIndex == ShaderAsset2::InvalidAPITypeIndex) - { - ReportError("Can not begin supervariant with name [%s] because this function must be called between BeginAPI()/EndAPI()", name.GetCStr()); - return; - } - - if (m_asset->m_perAPIShaderData.empty()) - { - ReportError("Can not add supervariant with name [%s] because there's no per API shader data", name.GetCStr()); - return; - } - - ShaderAsset2::ShaderApiDataContainer& perAPIShaderData = m_asset->m_perAPIShaderData[m_asset->m_perAPIShaderData.size() - 1]; - if (perAPIShaderData.m_supervariants.empty()) - { - if (!name.IsEmpty()) - { - ReportError("The first supervariant must be nameless. Name [%s] is invalid", name.GetCStr()); - return; - } - } - else - { - if (name.IsEmpty()) - { - ReportError( - "Only the first supervariant can be nameless. So far there are %zu supervariants", - perAPIShaderData.m_supervariants.size()); - return; - } - } - - perAPIShaderData.m_supervariants.push_back({}); - m_currentSupervariant = &perAPIShaderData.m_supervariants[perAPIShaderData.m_supervariants.size() - 1]; - m_currentSupervariant->m_name = name; - } - - void ShaderAssetCreator2::SetSrgLayoutList(const ShaderResourceGroupLayoutList& srgLayoutList) - { - if (!ValidateIsReady()) - { - return; - } - - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - - m_currentSupervariant->m_srgLayoutList = srgLayoutList; - for (auto srgLayout : m_currentSupervariant->m_srgLayoutList) - { - if (!srgLayout->Finalize()) - { - ReportError( - "The current supervariant [%s], failed to finalize SRG Layout [%s]", m_currentSupervariant->m_name.GetCStr(), - srgLayout->GetName().GetCStr()); - return; - } - } - } - - //! [Required] Assigns the pipeline layout descriptor shared by all variants in the shader. Shader variants - //! embedded in a single shader asset are required to use the same pipeline layout. It is not necessary to call - //! Finalize() on the pipeline layout prior to assignment, but still permitted. - void ShaderAssetCreator2::SetPipelineLayout(RHI::Ptr pipelineLayoutDescriptor) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - if (m_currentSupervariant->m_srgLayoutList.empty()) - { - ReportError( - "Before setting the pipeline layout, the supervariant [%s] needs the SRG layouts", - m_currentSupervariant->m_name.GetCStr()); - return; - } - m_currentSupervariant->m_pipelineLayoutDescriptor = pipelineLayoutDescriptor; - } - - //! Assigns the contract for inputs required by the shader. - void ShaderAssetCreator2::SetInputContract(const ShaderInputContract& contract) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_inputContract = contract; - } - - //! Assigns the contract for outputs required by the shader. - void ShaderAssetCreator2::SetOutputContract(const ShaderOutputContract& contract) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_outputContract = contract; - } - - //! Assigns the render states for the draw pipeline. Ignored for non-draw pipelines. - void ShaderAssetCreator2::SetRenderStates(const RHI::RenderStates& renderStates) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_renderStates = renderStates; - } - - //! [Optional] Not all shaders have attributes before functions. Some attributes do not exist for all RHI::APIType either. - void ShaderAssetCreator2::SetShaderStageAttributeMapList(const RHI::ShaderStageAttributeMapList& shaderStageAttributeMapList) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_attributeMaps = shaderStageAttributeMapList; - } - - //! [Required] There's always a root variant for each supervariant. - void ShaderAssetCreator2::SetRootShaderVariantAsset(Data::Asset shaderVariantAsset) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_rootShaderVariantAsset = shaderVariantAsset; - } - - static RHI::PipelineStateType GetPipelineStateType(const Data::Asset& shaderVariantAsset) - { - if (shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Vertex) || - shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Tessellation) || - shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Fragment)) - { - return RHI::PipelineStateType::Draw; - } - - if (shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Compute)) - { - return RHI::PipelineStateType::Dispatch; - } - - if (shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::RayTracing)) - { - return RHI::PipelineStateType::RayTracing; - } - - return RHI::PipelineStateType::Count; - } - - bool ShaderAssetCreator2::EndSupervariant() - { - if (!ValidateIsReady()) - { - return false; - } - - if (!m_currentSupervariant) - { - ReportError("Can not end a supervariant that has not started"); - return false; - } - - if (!m_currentSupervariant->m_rootShaderVariantAsset.IsReady()) - { - ReportError( - "The current supervariant [%s], is missing the root ShaderVariantAsset", m_currentSupervariant->m_name.GetCStr()); - return false; - } - - // Supervariant specific resources - if (m_currentSupervariant->m_pipelineLayoutDescriptor) - { - if (!m_currentSupervariant->m_pipelineLayoutDescriptor->IsFinalized()) - { - if (m_currentSupervariant->m_pipelineLayoutDescriptor->Finalize() != RHI::ResultCode::Success) - { - ReportError("Failed to finalize pipeline layout descriptor."); - return false; - } - } - } - else - { - ReportError("PipelineLayoutDescriptor not specified."); - return false; - } - - const ShaderInputContract& shaderInputContract = m_currentSupervariant->m_inputContract; - // Validate that each stream ID appears only once. - for (const auto& channel : shaderInputContract.m_streamChannels) - { - int count = 0; - - for (const auto& searchChannel : shaderInputContract.m_streamChannels) - { - if (channel.m_semantic == searchChannel.m_semantic) - { - ++count; - } - } - - if (count > 1) - { - ReportError( - "Input stream channel [%s] appears multiple times. For supervariant with name [%s]", - channel.m_semantic.ToString().c_str(), m_currentSupervariant->m_name.GetCStr()); - return false; - } - } - - auto pipelineStateType = GetPipelineStateType(m_currentSupervariant->m_rootShaderVariantAsset); - if (pipelineStateType == RHI::PipelineStateType::Count) - { - ReportError("Invalid pipelineStateType for supervariant [%s]", m_currentSupervariant->m_name.GetCStr()); - return false; - } - - - if (m_currentSupervariant->m_name.IsEmpty()) - { - m_asset->m_pipelineStateType = pipelineStateType; - } - else - { - if (m_asset->m_pipelineStateType != pipelineStateType) - { - ReportError("All supervariants must be of the same pipelineStateType. Current pipelineStateType is [%d], but for supervariant [%s] the pipelineStateType is [%d]", - m_asset->m_pipelineStateType, m_currentSupervariant->m_name.GetCStr(), pipelineStateType); - return false; - } - } - - m_currentSupervariant = nullptr; - return true; - } - - bool ShaderAssetCreator2::EndAPI() - { - if (!ValidateIsReady()) - { - return false; - } - if (m_currentSupervariant) - { - ReportError("EndSupervariant() must be called before calling EndAPI()"); - return false; - } - - m_asset->m_currentAPITypeIndex = ShaderAsset2::InvalidAPITypeIndex; - return true; - } - - bool ShaderAssetCreator2::End(Data::Asset& shaderAsset) - { - if (!ValidateIsReady()) - { - return false; - } - - if (m_asset->m_perAPIShaderData.empty()) - { - ReportError("Empty shader data. Check that a valid RHI is enabled for this platform."); - return false; - } - - if (!m_asset->FinalizeAfterLoad()) - { - ReportError("Failed to finalize the ShaderAsset2."); - return false; - } - - m_asset->SetReady(); - - return EndCommon(shaderAsset); - } - - void ShaderAssetCreator2::Clone(const Data::AssetId& assetId, const ShaderAsset2& sourceShaderAsset) - { - BeginCommon(assetId); - - m_asset->m_name = sourceShaderAsset.m_name; - m_asset->m_pipelineStateType = sourceShaderAsset.m_pipelineStateType; - m_asset->m_drawListName = sourceShaderAsset.m_drawListName; - m_asset->m_shaderOptionGroupLayout = sourceShaderAsset.m_shaderOptionGroupLayout; - m_asset->m_shaderAssetBuildTimestamp = sourceShaderAsset.m_shaderAssetBuildTimestamp; - m_asset->m_perAPIShaderData = sourceShaderAsset.m_perAPIShaderData; - - } - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderResourceGroupAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderResourceGroupAsset.cpp deleted file mode 100644 index d8f8c7d1ce..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderResourceGroupAsset.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* -* 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. -* -*/ - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - const char* ShaderResourceGroupAsset::DisplayName = "ShaderResourceGroup"; - const char* ShaderResourceGroupAsset::Group = ""; - const char* ShaderResourceGroupAsset::Extension = ".azsrg"; - - void ShaderResourceGroupAsset::Reflect(ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(0) - ->Field("m_name", &ShaderResourceGroupAsset::m_name) - ->Field("m_perAPILayout", &ShaderResourceGroupAsset::m_perAPILayout) - ; - } - } - - const Name& ShaderResourceGroupAsset::GetName() const - { - return m_name; - } - - const RHI::ShaderResourceGroupLayout* ShaderResourceGroupAsset::GetLayout() const - { - AZ_Error("RHI::ShaderResourceGroupLayout", m_currentAPITypeIndex < m_perAPILayout.size(), "Invalid API Type index"); - if (m_currentAPITypeIndex >= m_perAPILayout.size()) - { - return nullptr; - } - return m_perAPILayout[m_currentAPITypeIndex].second.get(); - } - - const RHI::ShaderResourceGroupLayout * ShaderResourceGroupAsset::GetLayout(const RHI::APIType type) const - { - size_t index = FindAPITypeIndex(type); - AZ_Assert(index < m_perAPILayout.size(), "Invalid API Type index"); - return m_perAPILayout[index].second.get(); - } - - bool ShaderResourceGroupAsset::IsValid() const - { - return !m_perAPILayout.empty() && !m_name.IsEmpty(); - } - - void ShaderResourceGroupAsset::SetReady() - { - m_status = AssetStatus::Ready; - } - - bool ShaderResourceGroupAsset::FinalizeAfterLoad() - { - if (RHI::Factory::IsReady()) - { - auto rhiType = RHI::Factory::Get().GetType(); - m_currentAPITypeIndex = FindAPITypeIndex(rhiType); - if (m_currentAPITypeIndex >= m_perAPILayout.size()) - { - AZ_Assert(false, "Could not find shader resource group layout for API %s", RHI::Factory::Get().GetName().GetCStr()); - return false; - } - } - else - { - m_currentAPITypeIndex = 0; - } - - return true; - } - - size_t ShaderResourceGroupAsset::FindAPITypeIndex(RHI::APIType type) const - { - auto findIt = AZStd::find_if(m_perAPILayout.begin(), m_perAPILayout.end(), [&type](const auto& shaderResourceGroupLayoutData) - { - return shaderResourceGroupLayoutData.first == type; - }); - - return findIt != m_perAPILayout.end() ? AZStd::distance(m_perAPILayout.begin(), findIt) : InvalidAPITypeIndex; - } - - Data::AssetHandler::LoadResult ShaderResourceGroupAssetHandler::LoadAssetData( - const Data::Asset& asset, - AZStd::shared_ptr stream, - const Data::AssetFilterCB& assetLoadFilterCB) - { - if (Base::LoadAssetData(asset, stream, assetLoadFilterCB) == Data::AssetHandler::LoadResult::LoadComplete) - { - return PostLoadInit(asset); - } - return Data::AssetHandler::LoadResult::Error; - } - - Data::AssetHandler::LoadResult ShaderResourceGroupAssetHandler::PostLoadInit(const Data::Asset& asset) - { - if (ShaderResourceGroupAsset* shaderAsset = asset.GetAs()) - { - if (!shaderAsset->FinalizeAfterLoad()) - { - AZ_Error("ShaderAssetHandler", false, "Shader asset failed to finalize."); - return Data::AssetHandler::LoadResult::Error; - } - return Data::AssetHandler::LoadResult::LoadComplete; - } - return Data::AssetHandler::LoadResult::Error; - } - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.cpp deleted file mode 100644 index 7791881ec0..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* -* 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. -* -*/ - -#include -#include - -namespace AZ -{ - namespace RPI - { - ////////////////////////////////////////////////////////////////////////////////////////// - //// ShaderResourceGroupAssetCreator - - void ShaderResourceGroupAssetCreator::Begin(const AZ::Data::AssetId& assetId, const Name& shaderResourceGroupName) - { - BeginCommon(assetId); - - if (ValidateIsReady()) - { - m_asset->m_name = shaderResourceGroupName; - } - } - - void ShaderResourceGroupAssetCreator::BeginAPI(RHI::APIType type) - { - if (ValidateIsReady()) - { - m_currentAPIType = type; - m_shaderResourceGroupLayout = RHI::ShaderResourceGroupLayout::Create(); - } - } - - void ShaderResourceGroupAssetCreator::SetBindingSlot(uint32_t bindingSlot) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->SetBindingSlot(bindingSlot); - } - } - - void ShaderResourceGroupAssetCreator::SetShaderVariantKeyFallback(const Name& shaderInputName, uint32_t bitSize) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->SetShaderVariantKeyFallback(shaderInputName, bitSize); - } - } - - - void ShaderResourceGroupAssetCreator::AddStaticSampler(const RHI::ShaderInputStaticSamplerDescriptor& shaderInputStaticSampler) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->AddStaticSampler(shaderInputStaticSampler); - } - } - - void ShaderResourceGroupAssetCreator::AddShaderInput(const RHI::ShaderInputBufferDescriptor& shaderInputBuffer) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->AddShaderInput(shaderInputBuffer); - } - } - - void ShaderResourceGroupAssetCreator::AddShaderInput(const RHI::ShaderInputImageDescriptor& shaderInputImage) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->AddShaderInput(shaderInputImage); - } - } - - void ShaderResourceGroupAssetCreator::AddShaderInput(const RHI::ShaderInputBufferUnboundedArrayDescriptor& shaderInputBufferUnboundedArray) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->AddShaderInput(shaderInputBufferUnboundedArray); - } - } - - void ShaderResourceGroupAssetCreator::AddShaderInput(const RHI::ShaderInputImageUnboundedArrayDescriptor& shaderInputImageUnboundedArray) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->AddShaderInput(shaderInputImageUnboundedArray); - } - } - - void ShaderResourceGroupAssetCreator::AddShaderInput(const RHI::ShaderInputSamplerDescriptor& shaderInputSampler) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->AddShaderInput(shaderInputSampler); - } - } - - void ShaderResourceGroupAssetCreator::AddShaderInput(const RHI::ShaderInputConstantDescriptor& shaderInputConstant) - { - if (ValidateIsReady()) - { - m_shaderResourceGroupLayout->AddShaderInput(shaderInputConstant); - } - } - - void ShaderResourceGroupAssetCreator::Cleanup() - { - m_shaderResourceGroupLayout = nullptr; - m_currentAPIType = RHI::APIType(); - } - - bool ShaderResourceGroupAssetCreator::End(Data::Asset& result) - { - if (!ValidateIsReady()) - { - return false; - } - - if (m_shaderResourceGroupLayout) - { - AZ_Assert(false, "Must EndAPI before ending calling End"); - return false; - } - - if (m_asset->m_perAPILayout.empty()) - { - AZ_Assert(false, "No Shader Resource Group Layout was added."); - return false; - } - - if (!m_asset->FinalizeAfterLoad()) - { - ReportError("Failed to finalize the ShaderResourceGroupAsset."); - return false; - } - - m_asset->SetReady(); - return EndCommon(result); - } - - bool ShaderResourceGroupAssetCreator::EndAPI() - { - if (!ValidateIsReady()) - { - return false; - } - - if (!m_shaderResourceGroupLayout->Finalize()) - { - return false; - } - - m_asset->m_perAPILayout.push_back({ m_currentAPIType, AZStd::move(m_shaderResourceGroupLayout) }); - - Cleanup(); - - return true; - } - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp index 5bcdcbb569..f4b0f75152 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp @@ -16,17 +16,19 @@ #include #include +#include #include +#include namespace AZ { namespace RPI { uint32_t ShaderVariantAsset::MakeAssetProductSubId( - uint32_t rhiApiUniqueIndex, ShaderVariantStableId variantStableId, uint32_t subProductType) + uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, ShaderVariantStableId variantStableId, uint32_t subProductType) { static constexpr uint32_t SubProductTypeBitPosition = 17; - static constexpr uint32_t SubProductTypeNumBits = RhiIndexBitPosition - SubProductTypeBitPosition; + static constexpr uint32_t SubProductTypeNumBits = SupervariantIndexBitPosition - SubProductTypeBitPosition; static constexpr uint32_t SubProductTypeMaxValue = (1 << SubProductTypeNumBits) - 1; static constexpr uint32_t StableIdBitPosition = 0; @@ -37,11 +39,12 @@ namespace AZ // The 2 Most significant bits encode the the RHI::API unique index. AZ_Assert(rhiApiUniqueIndex <= RhiIndexMaxValue, "Invalid rhiApiUniqueIndex [%u]", rhiApiUniqueIndex); + AZ_Assert(supervariantIndex <= SupervariantIndexMaxValue, "Invalid supervariantIndex [%u]", supervariantIndex); AZ_Assert(subProductType <= SubProductTypeMaxValue, "Invalid subProductType [%u]", subProductType); AZ_Assert(variantStableId.GetIndex() <= StableIdMaxValue, "Invalid variantStableId [%u]", variantStableId.GetIndex()); const uint32_t assetProductSubId = (rhiApiUniqueIndex << RhiIndexBitPosition) | - (subProductType << SubProductTypeBitPosition) | + (supervariantIndex << SupervariantIndexBitPosition) | (subProductType << SubProductTypeBitPosition) | (variantStableId.GetIndex() << StableIdBitPosition); return assetProductSubId; } @@ -51,22 +54,19 @@ namespace AZ if (auto* serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(3) + ->Version(1) ->Field("StableId", &ShaderVariantAsset::m_stableId) ->Field("ShaderVariantId", &ShaderVariantAsset::m_shaderVariantId) ->Field("IsFullyBaked", &ShaderVariantAsset::m_isFullyBaked) - ->Field("InputContract", &ShaderVariantAsset::m_inputContract) - ->Field("OutputContract", &ShaderVariantAsset::m_outputContract) - ->Field("RenderStates", &ShaderVariantAsset::m_renderStates) ->Field("FunctionsByStage", &ShaderVariantAsset::m_functionsByStage) - ->Field("shaderAssetBuildTimestamp", &ShaderVariantAsset::m_shaderAssetBuildTimestamp) + ->Field("BuildTimestamp", &ShaderVariantAsset::m_buildTimestamp) ; } } - AZStd::sys_time_t ShaderVariantAsset::GetShaderAssetBuildTimestamp() const + AZStd::sys_time_t ShaderVariantAsset::GetBuildTimestamp() const { - return m_shaderAssetBuildTimestamp; + return m_buildTimestamp; } const RHI::ShaderStageFunction* ShaderVariantAsset::GetShaderStageFunction(RHI::ShaderStage shaderStage) const @@ -74,21 +74,6 @@ namespace AZ return m_functionsByStage[static_cast(shaderStage)].get(); } - const ShaderInputContract& ShaderVariantAsset::GetInputContract() const - { - return m_inputContract; - } - - const ShaderOutputContract& ShaderVariantAsset::GetOutputContract() const - { - return m_outputContract; - } - - const RHI::RenderStates& ShaderVariantAsset::GetRenderStates() const - { - return m_renderStates; - } - bool ShaderVariantAsset::IsFullyBaked() const { return m_isFullyBaked; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp deleted file mode 100644 index 34daff560a..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp +++ /dev/null @@ -1,114 +0,0 @@ -/* -* 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. -* -*/ -#include - -#include -#include -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - uint32_t ShaderVariantAsset2::MakeAssetProductSubId( - uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, ShaderVariantStableId variantStableId, uint32_t subProductType) - { - static constexpr uint32_t SubProductTypeBitPosition = 17; - static constexpr uint32_t SubProductTypeNumBits = SupervariantIndexBitPosition - SubProductTypeBitPosition; - static constexpr uint32_t SubProductTypeMaxValue = (1 << SubProductTypeNumBits) - 1; - - static constexpr uint32_t StableIdBitPosition = 0; - static constexpr uint32_t StableIdNumBits = SubProductTypeBitPosition - StableIdBitPosition; - static constexpr uint32_t StableIdMaxValue = (1 << StableIdNumBits) - 1; - - static_assert(RhiIndexMaxValue == RHI::Limits::APIType::PerPlatformApiUniqueIndexMax); - - // The 2 Most significant bits encode the the RHI::API unique index. - AZ_Assert(rhiApiUniqueIndex <= RhiIndexMaxValue, "Invalid rhiApiUniqueIndex [%u]", rhiApiUniqueIndex); - AZ_Assert(supervariantIndex <= SupervariantIndexMaxValue, "Invalid supervariantIndex [%u]", supervariantIndex); - AZ_Assert(subProductType <= SubProductTypeMaxValue, "Invalid subProductType [%u]", subProductType); - AZ_Assert(variantStableId.GetIndex() <= StableIdMaxValue, "Invalid variantStableId [%u]", variantStableId.GetIndex()); - - const uint32_t assetProductSubId = (rhiApiUniqueIndex << RhiIndexBitPosition) | - (supervariantIndex << SupervariantIndexBitPosition) | (subProductType << SubProductTypeBitPosition) | - (variantStableId.GetIndex() << StableIdBitPosition); - return assetProductSubId; - } - - void ShaderVariantAsset2::Reflect(ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("StableId", &ShaderVariantAsset2::m_stableId) - ->Field("ShaderVariantId", &ShaderVariantAsset2::m_shaderVariantId) - ->Field("IsFullyBaked", &ShaderVariantAsset2::m_isFullyBaked) - ->Field("FunctionsByStage", &ShaderVariantAsset2::m_functionsByStage) - ->Field("BuildTimestamp", &ShaderVariantAsset2::m_buildTimestamp) - ; - } - } - - AZStd::sys_time_t ShaderVariantAsset2::GetBuildTimestamp() const - { - return m_buildTimestamp; - } - - const RHI::ShaderStageFunction* ShaderVariantAsset2::GetShaderStageFunction(RHI::ShaderStage shaderStage) const - { - return m_functionsByStage[static_cast(shaderStage)].get(); - } - - bool ShaderVariantAsset2::IsFullyBaked() const - { - return m_isFullyBaked; - } - - void ShaderVariantAsset2::SetReady() - { - m_status = AssetStatus::Ready; - } - - bool ShaderVariantAsset2::FinalizeAfterLoad() - { - return true; - } - - ShaderVariantAssetHandler2::LoadResult ShaderVariantAssetHandler2::LoadAssetData(const Data::Asset& asset, AZStd::shared_ptr stream, const AZ::Data::AssetFilterCB& assetLoadFilterCB) - { - if (Base::LoadAssetData(asset, stream, assetLoadFilterCB) == LoadResult::LoadComplete) - { - return PostLoadInit(asset) ? LoadResult::LoadComplete : LoadResult::Error; - } - return LoadResult::Error; - } - - bool ShaderVariantAssetHandler2::PostLoadInit(const Data::Asset& asset) - { - if (ShaderVariantAsset2* shaderVariantAsset = asset.GetAs()) - { - if (!shaderVariantAsset->FinalizeAfterLoad()) - { - AZ_Error("ShaderVariantAssetHandler", false, "Shader asset failed to finalize."); - return false; - } - return true; - } - return false; - } - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp b/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp index 2828d7eb39..2df31a0ad7 100644 --- a/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp +++ b/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.cpp @@ -25,7 +25,6 @@ #include #include -#include #include #include @@ -150,9 +149,9 @@ namespace UnitTest return AZ::RHI::RHISystemInterface::Get()->GetDevice(); } - void RPITestFixture::ProcessQueuedSrgCompilations(Data::Asset srgAsset) + void RPITestFixture::ProcessQueuedSrgCompilations(Data::Asset shaderAsset, const AZ::Name& srgName) { - Data::Instance srgPool = ShaderResourceGroupPool::FindOrCreate(srgAsset); + Data::Instance srgPool = ShaderResourceGroupPool::FindOrCreate(shaderAsset, RPI::DefaultSupervariantIndex, srgName); srgPool->GetRHIPool()->CompileGroupsBegin(); srgPool->GetRHIPool()->CompileGroupsForInterval(RHI::Interval(0, srgPool->GetRHIPool()->GetGroupsToCompileCount())); srgPool->GetRHIPool()->CompileGroupsEnd(); diff --git a/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.h b/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.h index 1d344336ce..3884d8d387 100644 --- a/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.h +++ b/Gems/Atom/RPI/Code/Tests/Common/RPITestFixture.h @@ -14,7 +14,6 @@ #include -#include #include #include @@ -48,7 +47,7 @@ namespace UnitTest //! Performs processing that would normally be done by the frame scheduler, //! which has to happen in order to recompile the same SRG instance multiple times. - void ProcessQueuedSrgCompilations(AZ::Data::Asset srgAsset); + void ProcessQueuedSrgCompilations(AZ::Data::Asset shaderAsset, const AZ::Name& srgName); AZ::JsonRegistrationContext* GetJsonRegistrationContext() override; diff --git a/Gems/Atom/RPI/Code/Tests/Common/ShaderAssetTestUtils.cpp b/Gems/Atom/RPI/Code/Tests/Common/ShaderAssetTestUtils.cpp new file mode 100644 index 0000000000..e7ced6f487 --- /dev/null +++ b/Gems/Atom/RPI/Code/Tests/Common/ShaderAssetTestUtils.cpp @@ -0,0 +1,148 @@ +/* + * 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. + * + */ + +#include +#include +#include + +#include +#include + +#include + +#include "ShaderAssetTestUtils.h" + +namespace UnitTest +{ + template + void AddShaderInputToBindingInfo(AZ::RHI::ShaderResourceGroupBindingInfo& bindingInfo, const T& shaderInputs) + { + for (const auto& shaderInput : shaderInputs) + { + bindingInfo.m_resourcesRegisterMap.insert( + { shaderInput.m_name.GetStringView(), + AZ::RHI::ResourceBindingInfo{ AZ::RHI::ShaderStageMask::Vertex, shaderInput.m_registerId } }); + } + } + + static AZ::RHI::ShaderResourceGroupBindingInfo CreateShaderResourceGroupBindingInfo(const AZ::RHI::ShaderResourceGroupLayout* layout) + { + using namespace AZ; + + RHI::ShaderResourceGroupBindingInfo bindingInfo; + if (!layout) + { + return bindingInfo; + } + + if (layout->GetConstantDataSize()) + { + // All constant in the SRG use the same the register id. + bindingInfo.m_constantDataBindingInfo.m_registerId = layout->GetShaderInputListForConstants()[0].m_registerId; + } + + AddShaderInputToBindingInfo(bindingInfo, layout->GetShaderInputListForBuffers()); + AddShaderInputToBindingInfo(bindingInfo, layout->GetShaderInputListForSamplers()); + AddShaderInputToBindingInfo(bindingInfo, layout->GetShaderInputListForImages()); + AddShaderInputToBindingInfo(bindingInfo, layout->GetStaticSamplers()); + + return bindingInfo; + } + + static AZ::Data::Asset CreateTestShaderVariantAsset( + AZ::RPI::ShaderVariantId id, + AZ::RPI::ShaderVariantStableId stableId, + const AZStd::vector& stagesToActivate = { AZ::RHI::ShaderStage::Vertex, AZ::RHI::ShaderStage::Fragment }) + { + using namespace AZ; + RPI::ShaderVariantAssetCreator shaderVariantAssetCreator; + shaderVariantAssetCreator.Begin(Uuid::CreateRandom(), id, stableId, false); + shaderVariantAssetCreator.SetBuildTimestamp(AZStd::sys_time_t(1)); // Make non-zero. + + for (RHI::ShaderStage rhiStage : stagesToActivate) + { + RHI::Ptr shaderStageFunction = aznew StubRHI::ShaderStageFunction; + shaderVariantAssetCreator.SetShaderFunction(rhiStage, shaderStageFunction); + } + + Data::Asset shaderVariantAsset; + shaderVariantAssetCreator.End(shaderVariantAsset); + + return shaderVariantAsset; + } + + AZ::Data::Asset CreateTestShaderAsset( + const AZ::Data::AssetId& shaderAssetId, + AZ::RHI::Ptr optionalSrgLayout, + AZ::RPI::Ptr optionalShaderOptions, + const AZ::Name& shaderName, + const AZ::Name& drawListName) + { + using namespace AZ; + using namespace RPI; + using namespace RHI; + + Data::Asset shaderAsset; + + RHI::Ptr pipelineLayoutDescriptor = RHI::PipelineLayoutDescriptor::Create(); + if (optionalSrgLayout) + { + const RHI::ShaderResourceGroupLayout* layout = optionalSrgLayout.get(); + RHI::ShaderResourceGroupBindingInfo bindingInfo = CreateShaderResourceGroupBindingInfo(layout); + pipelineLayoutDescriptor->AddShaderResourceGroupLayoutInfo(*layout, bindingInfo); + } + pipelineLayoutDescriptor->Finalize(); + + if (!optionalShaderOptions) + { + optionalShaderOptions = RPI::ShaderOptionGroupLayout::Create(); + optionalShaderOptions->Finalize(); + } + + ShaderAssetCreator creator; + creator.Begin(shaderAssetId); + creator.SetName(shaderName); + creator.SetDrawListName(drawListName); + creator.SetDrawListName(drawListName); + creator.SetShaderOptionGroupLayout(optionalShaderOptions); + + creator.BeginAPI(RHI::Factory::Get().GetType()); + + creator.BeginSupervariant(AZ::Name{}); // The default (first) supervariant MUST be nameless. + + if (optionalSrgLayout) + { + creator.SetSrgLayoutList({ optionalSrgLayout }); + } + creator.SetPipelineLayout(pipelineLayoutDescriptor); + + //creator.SetRenderStates(m_renderStates); + //creator.SetInputContract(CreateSimpleShaderInputContract()); + //creator.SetOutputContract(CreateSimpleShaderOutputContract()); + + RHI::ShaderStageAttributeMapList attributeMaps; + attributeMaps.resize(RHI::ShaderStageCount); + creator.SetShaderStageAttributeMapList(attributeMaps); + + Data::Asset shaderVariantAsset = + CreateTestShaderVariantAsset(RPI::ShaderVariantId{}, RPI::ShaderVariantStableId{ 0 }); + + creator.SetRootShaderVariantAsset(shaderVariantAsset); + + creator.EndSupervariant(); + + creator.EndAPI(); + creator.End(shaderAsset); + + return shaderAsset; + } +} diff --git a/Gems/Atom/RPI/Code/Tests/Common/ShaderAssetTestUtils.h b/Gems/Atom/RPI/Code/Tests/Common/ShaderAssetTestUtils.h new file mode 100644 index 0000000000..8cb8a0c80d --- /dev/null +++ b/Gems/Atom/RPI/Code/Tests/Common/ShaderAssetTestUtils.h @@ -0,0 +1,28 @@ +/* + * 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. + * + */ + +#pragma once + +#include + +namespace UnitTest +{ + + //! Utility function for creating the simplest possible ShaderAsset + AZ::Data::Asset CreateTestShaderAsset( + const AZ::Data::AssetId& shaderAssetId, + AZ::RHI::Ptr optionalSrgLayout = nullptr, + AZ::RPI::Ptr optionalShaderOptions = nullptr, + const AZ::Name& shaderName = AZ::Name{ "TestShader" }, + const AZ::Name& drawListName = AZ::Name{ "depth" } ); + +} //namespace UnitTest diff --git a/Gems/Atom/RPI/Code/Tests/Image/StreamingImageTests.cpp b/Gems/Atom/RPI/Code/Tests/Image/StreamingImageTests.cpp index 4952769d89..4fc58bc91a 100644 --- a/Gems/Atom/RPI/Code/Tests/Image/StreamingImageTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Image/StreamingImageTests.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -148,32 +149,11 @@ namespace UnitTest size_t m_expectedTimestamp = 0; }; - class TestStreamingImageControllerAsset - : public AZ::RPI::StreamingImageControllerAsset - { - public: - AZ_CLASS_ALLOCATOR(TestStreamingImageControllerAsset, AZ::SystemAllocator, 0); - AZ_RTTI(TestStreamingImageControllerAsset, "{A90B4AC0-979A-4F01-AD41-B1D32DD9DAEC}", AZ::RPI::StreamingImageControllerAsset); - - static void Reflect(AZ::ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class(); - } - } - - TestStreamingImageControllerAsset() - { - m_status = AssetStatus::Ready; - } - }; - class StreamingImageTests : public RPITestFixture { private: - AZ::Data::Asset m_testControllerAsset; + AZ::Data::Asset m_testControllerAsset; protected: AZ::RPI::BuiltInAssetHandler* m_testControllerAssetHandler; @@ -184,7 +164,7 @@ namespace UnitTest AZ::Data::Instance m_defaultPool = nullptr; StreamingImageTests() - : m_testControllerAssetId("{9202CEC4-4E31-443C-ABE8-512B3E896448}") + : m_testControllerAssetId(AZ::RPI::DefaultStreamingImageControllerAsset::BuiltInAssetId) {} void SetUp() override @@ -194,23 +174,12 @@ namespace UnitTest RPITestFixture::SetUp(); auto* serializeContext = GetSerializeContext(); - TestStreamingImageControllerAsset::Reflect(serializeContext); TestStreamingImagePoolDescriptor::Reflect(serializeContext); - m_testControllerAssetHandler = aznew RPI::BuiltInAssetHandler( - azrtti_typeid(), - []() { return aznew TestStreamingImageControllerAsset(); }); - m_testControllerAssetHandler->Register(); - m_testControllerAsset = Data::AssetManager::Instance().CreateAsset(m_testControllerAssetId); - - Data::InstanceDatabase::Instance().AddHandler( - azrtti_typeid(), - [](Data::AssetData*) { return aznew TestStreamingImageController(); }); - m_imageHandler = Data::AssetManager::Instance().GetHandler(RPI::StreamingImageAsset::RTTI_Type()); m_mipChainHandler = Data::AssetManager::Instance().GetHandler(RPI::ImageMipChainAsset::RTTI_Type()); - AZ::Data::Asset < AZ::RPI::StreamingImagePoolAsset > poolAsset = BuildImagePoolAsset(16 * 1024 * 1024); + AZ::Data::Asset poolAsset = BuildImagePoolAsset(16 * 1024 * 1024); m_defaultPool = AZ::RPI::StreamingImagePool::FindOrCreate(poolAsset); } @@ -221,10 +190,6 @@ namespace UnitTest m_defaultPool = nullptr; - m_testControllerAsset.Release(); - delete m_testControllerAssetHandler; - Data::InstanceDatabase::Instance().RemoveHandler(azrtti_typeid()); - RPITestFixture::TearDown(); } @@ -341,7 +306,7 @@ namespace UnitTest { Data::Asset asset = poolAsset->GetControllerAsset(); - EXPECT_TRUE(azrtti_typeid() == asset.GetType()); + EXPECT_TRUE(azrtti_typeid() == asset.GetType()); } } @@ -459,7 +424,7 @@ namespace UnitTest assetCreator.SetPoolDescriptor(AZStd::make_unique(budgetInBytes)); assetCreator.SetControllerAsset( - Data::AssetManager::Instance().GetAsset( + Data::AssetManager::Instance().GetAsset( m_testControllerAssetId, Data::AssetLoadBehavior::PreLoad) ); diff --git a/Gems/Atom/RPI/Code/Tests/Material/LuaMaterialFunctorTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/LuaMaterialFunctorTests.cpp index 3dcbdfce07..225ad73a59 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/LuaMaterialFunctorTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/LuaMaterialFunctorTests.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -125,7 +126,7 @@ namespace UnitTest // Setup for a single material property and a specific shader constant input void Setup( - Data::Asset materialSrgAsset, + RHI::Ptr materialSrgLayout, MaterialPropertyDataType dataType, const char* materialPropertyName, const char* shaderInputName, @@ -133,7 +134,7 @@ namespace UnitTest { MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); - materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgAsset)); + materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout)); materialTypeCreator.BeginMaterialProperty(Name{materialPropertyName}, dataType); materialTypeCreator.EndMaterialProperty(); LuaMaterialFunctorTests::AddLuaFunctor(materialTypeCreator, luaFunctorScript); @@ -238,18 +239,19 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Bool, "general.TestBool", "m_bool", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Bool, "general.TestBool", "m_bool", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{true}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(true, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{false}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(false, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -270,13 +272,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Float, "general.TestFloat", "m_float", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Float, "general.TestFloat", "m_float", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{1.25f}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_FLOAT_EQ(2.5f, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -297,13 +300,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Int, "general.TestInt", "m_int", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Int, "general.TestInt", "m_int", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{2}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(-2, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -324,13 +328,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::UInt, "general.TestUInt", "m_uint", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::UInt, "general.TestUInt", "m_uint", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{2u}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(7, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -354,13 +359,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector2, "general.TestVector2", "m_float2", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector2, "general.TestVector2", "m_float2", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector2(1.0f, 2.0f)}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(Vector2(2.0f, 1.0f), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -382,13 +388,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector3, "general.TestVector3", "m_float3", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector3, "general.TestVector3", "m_float3", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector3(5.0f, 4.0f, 3.0f)}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(Vector3(5.0f, 4.0f, 3.0f).GetNormalized(), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -410,13 +417,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector4, "general.TestVector4", "m_float4", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector4, "general.TestVector4", "m_float4", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector4(1.0f, 2.0f, 3.0f, 4.0f)}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(Vector4(1.0f, 2.0f, 3.0f, 4.0f) / 4.0f, testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -444,13 +452,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Color, "general.TestColor", "m_color", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Color, "general.TestColor", "m_color", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Color(1.0f, 0.5f, 0.4f, 0.5f)}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(Color(0.5f, 0.25f, 0.2f, 0.5f), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -472,13 +481,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Float, "general.Scale", "m_float3x3", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Float, "general.Scale", "m_float3x3", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{0.5f}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(Matrix3x3::CreateScale(Vector3(0.5f, 0.5f, 1.0f)), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } @@ -500,13 +510,14 @@ namespace UnitTest end )"; - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); TestMaterialData testData; - testData.Setup(materialSrgAsset, MaterialPropertyDataType::Vector3, "general.Offset", "m_float4x4", functorScript); + testData.Setup(materialSrgLayout, MaterialPropertyDataType::Vector3, "general.Offset", "m_float4x4", functorScript); testData.GetMaterial()->SetPropertyValue(testData.GetMaterialPropertyIndex(), MaterialPropertyValue{Vector3(1.0f, 2.0f, 3.0f)}); - ProcessQueuedSrgCompilations(materialSrgAsset); + ProcessQueuedSrgCompilations(shaderAsset, materialSrgLayout->GetName()); EXPECT_TRUE(testData.GetMaterial()->Compile()); EXPECT_EQ(Matrix4x4::CreateTranslation(Vector3(1.0f, 2.0f, 3.0f)), testData.GetMaterial()->GetRHIShaderResourceGroup()->GetData().GetConstant(testData.GetSrgConstantIndex())); } diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.cpp index 9c52e6f71b..7840419fd4 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.cpp @@ -11,7 +11,6 @@ */ #include -#include #include #include #include @@ -53,7 +52,7 @@ namespace UnitTest AddMaterialPropertyForSrg(materialTypeCreator, Name{ propertyGroupPrefix + "MyEnum" }, MaterialPropertyDataType::Enum, Name{ "m_enum" }); } - AZ::Data::Asset CreateCommonTestMaterialSrgAsset() + AZ::RHI::Ptr CreateCommonTestMaterialSrgLayout() { using namespace AZ; using namespace RPI; @@ -62,123 +61,28 @@ namespace UnitTest // Note we specify the shader inputs and material properties in a different order so the indexes don't align // We also include a couple unused inputs to further make sure shader and material indexes don't align - ShaderResourceGroupAssetCreator srgCreator; - srgCreator.Begin(Uuid::CreateRandom(), Name("MaterialSrg")); - srgCreator.BeginAPI(RHI::Factory::Get().GetType()); - srgCreator.SetBindingSlot(SrgBindingSlot::Material); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_unused" }, 0, 4, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_color" }, 4, 16, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float" }, 20, 4, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_int" }, 24, 4, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_uint" }, 28, 4, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float2" }, 32, 8, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float3" }, 40, 12, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float4" }, 52, 16, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_enum" }, 68, 4, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_bool" }, 72, 4, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float3x3" }, 76, 44, 0}); // See ConstantsData::SetConstant for packing rules - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float4x4" }, 120, 64, 0}); - srgCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{Name{ "m_unusedImage" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 1}); - srgCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{Name{ "m_image" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 2}); - srgCreator.EndAPI(); + AZ::RHI::Ptr srgLayout = RHI::ShaderResourceGroupLayout::Create(); + srgLayout->SetName(Name("MaterialSrg")); + srgLayout->SetUniqueId(Uuid::CreateRandom().ToString()); // Any random string will suffice. + srgLayout->SetBindingSlot(SrgBindingSlot::Material); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_unused" }, 0, 4, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_color" }, 4, 16, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float" }, 20, 4, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_int" }, 24, 4, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_uint" }, 28, 4, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float2" }, 32, 8, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float3" }, 40, 12, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float4" }, 52, 16, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_enum" }, 68, 4, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_bool" }, 72, 4, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float3x3" }, 76, 44, 0}); // See ConstantsData::SetConstant for packing rules + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{ "m_float4x4" }, 120, 64, 0}); + srgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{Name{ "m_unusedImage" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 1}); + srgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{Name{ "m_image" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 2}); - AZ::Data::Asset srgAsset; - EXPECT_TRUE(srgCreator.End(srgAsset)); + EXPECT_TRUE(srgLayout->Finalize()); - return srgAsset; + return srgLayout; } - template - void AddShaderInputToBindingInfo(AZ::RHI::ShaderResourceGroupBindingInfo& bindingInfo, const T& shaderInputs) - { - for (const auto& shaderInput : shaderInputs) - { - bindingInfo.m_resourcesRegisterMap.insert({shaderInput.m_name.GetStringView(), AZ::RHI::ResourceBindingInfo{AZ::RHI::ShaderStageMask::Vertex, shaderInput.m_registerId}}); - } - } - - AZ::RHI::ShaderResourceGroupBindingInfo CreateShaderResourceGroupBindingInfo(const AZ::RHI::ShaderResourceGroupLayout* layout) - { - using namespace AZ; - - RHI::ShaderResourceGroupBindingInfo bindingInfo; - if (!layout) - { - return bindingInfo; - } - - if (layout->GetConstantDataSize()) - { - // All constant in the SRG use the same the register id. - bindingInfo.m_constantDataBindingInfo.m_registerId = layout->GetShaderInputListForConstants()[0].m_registerId; - } - - AddShaderInputToBindingInfo(bindingInfo, layout->GetShaderInputListForBuffers()); - AddShaderInputToBindingInfo(bindingInfo, layout->GetShaderInputListForSamplers()); - AddShaderInputToBindingInfo(bindingInfo, layout->GetShaderInputListForImages()); - AddShaderInputToBindingInfo(bindingInfo, layout->GetStaticSamplers()); - - return bindingInfo; - } - - AZ::Data::Asset CreateTestShaderAsset( - const AZ::Data::AssetId& shaderAssetId, - AZ::Data::Asset optionalMaterialSrg, - AZ::RPI::Ptr optionalShaderOptions) - { - using namespace AZ; - using namespace RPI; - using namespace RHI; - - Data::Asset shaderAsset; - - RHI::Ptr pipelineLayoutDescriptor = RHI::PipelineLayoutDescriptor::Create(); - if (optionalMaterialSrg.IsReady()) - { - const RHI::ShaderResourceGroupLayout* layout = optionalMaterialSrg->GetLayout(); - RHI::ShaderResourceGroupBindingInfo bindingInfo = CreateShaderResourceGroupBindingInfo(layout); - pipelineLayoutDescriptor->AddShaderResourceGroupLayoutInfo(*layout, bindingInfo); - } - pipelineLayoutDescriptor->Finalize(); - - if (!optionalShaderOptions) - { - optionalShaderOptions = RPI::ShaderOptionGroupLayout::Create(); - optionalShaderOptions->Finalize(); - } - - ShaderAssetCreator shaderAssetCreator; - shaderAssetCreator.Begin(shaderAssetId); - - shaderAssetCreator.SetDrawListName(Name{"depth"}); - if (optionalMaterialSrg.IsReady()) - { - shaderAssetCreator.AddShaderResourceGroupAsset(optionalMaterialSrg); - } - shaderAssetCreator.SetShaderOptionGroupLayout(optionalShaderOptions); - - shaderAssetCreator.BeginAPI(RHI::Factory::Get().GetType()); - - RHI::ShaderStageAttributeMapList attributeMaps; - attributeMaps.resize(RHI::ShaderStageCount); - shaderAssetCreator.SetShaderStageAttributeMapList(attributeMaps); - - ShaderVariantAssetCreator shaderVariantAssetCreator; - shaderVariantAssetCreator.Begin(Uuid::CreateRandom(), RPI::ShaderVariantId(), RootShaderVariantStableId, optionalShaderOptions.get()); - - RHI::Ptr shaderStageFunction = aznew StubRHI::ShaderStageFunction; - shaderVariantAssetCreator.SetShaderFunction(RHI::ShaderStage::Vertex, shaderStageFunction); - - Data::Asset shaderVariantAsset; - EXPECT_TRUE(shaderVariantAssetCreator.End(shaderVariantAsset)); - - shaderAssetCreator.SetRootShaderVariantAsset(shaderVariantAsset); - shaderAssetCreator.SetPipelineLayout(pipelineLayoutDescriptor); - - EXPECT_TRUE(shaderAssetCreator.EndAPI()); - EXPECT_TRUE(shaderAssetCreator.End(shaderAsset)); - - return shaderAsset; - } - -} +} // namespace UnitTest diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.h b/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.h index 148881bed6..6e2758eee1 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.h +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTestUtils.h @@ -36,11 +36,6 @@ namespace UnitTest void AddCommonTestMaterialProperties(AZ::RPI::MaterialTypeAssetCreator& materialTypeCreator, AZStd::string propertyGroupPrefix = ""); - AZ::Data::Asset CreateCommonTestMaterialSrgAsset(); + AZ::RHI::Ptr CreateCommonTestMaterialSrgLayout(); - //! Utility function for creating the simplest possible ShaderAsset - AZ::Data::Asset CreateTestShaderAsset( - const AZ::Data::AssetId& shaderAssetId, - AZ::Data::Asset optionalMaterialSrg = {}, - AZ::RPI::Ptr optionalShaderOptions = nullptr); -} +} //namespace UnitTest diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTests.cpp index a859b8363e..442ca43e6b 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialAssetTests.cpp @@ -13,12 +13,12 @@ #include #include #include +#include #include #include #include #include -#include namespace UnitTest { @@ -36,13 +36,13 @@ namespace UnitTest { RPITestFixture::SetUp(); - Data::Asset materialSrgAsset = CreateCommonTestMaterialSrgAsset(); + auto materialSrgLayout = CreateCommonTestMaterialSrgLayout(); // Since this test doesn't actually instantiate a Material, it won't need to instantiate this ImageAsset, so all we // need is an asset reference with a valid ID. m_testImageAsset = Data::Asset{ Uuid::CreateRandom(), azrtti_typeid() }; - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgAsset); + auto shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), materialSrgLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp index c5e25b51c1..5b18b04a5d 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialFunctorTests.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -145,7 +146,7 @@ namespace UnitTest // structures that we can pass to the functors below, especially the shader with shader options. MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); - materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), CreateCommonTestMaterialSrgAsset(), shaderOptions)); + materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), CreateCommonTestMaterialSrgLayout(), shaderOptions)); // We claim ownership of options A and B, but not C. So C is a globally accessible option, not owned by the material. materialTypeCreator.ClaimShaderOptionOwnership(Name{"o_optionA"}); materialTypeCreator.ClaimShaderOptionOwnership(Name{"o_optionB"}); diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp index d08da67607..8402520fb9 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialSourceDataTests.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -20,7 +21,6 @@ #include #include #include -#include #include #include @@ -39,7 +39,7 @@ namespace UnitTest : public RPITestFixture { protected: - Data::Asset m_testMaterialSrgAsset; + RHI::Ptr m_testMaterialSrgLayout; Data::Asset m_testShaderAsset; Data::Asset m_testMaterialTypeAsset; Data::Asset m_testImageAsset; @@ -63,9 +63,9 @@ namespace UnitTest AZ::Utils::GetExecutableDirectory(rootPath, AZ_MAX_PATH_LEN); localFileIO->SetAlias("@exefolder@", rootPath); - m_testMaterialSrgAsset = CreateCommonTestMaterialSrgAsset(); + m_testMaterialSrgLayout = CreateCommonTestMaterialSrgLayout(); - m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset); + m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); @@ -85,7 +85,7 @@ namespace UnitTest void TearDown() override { m_testMaterialTypeAsset.Reset(); - m_testMaterialSrgAsset.Reset(); + m_testMaterialSrgLayout = nullptr; m_testShaderAsset.Reset(); m_testImageAsset.Reset(); diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp index 9ccbf96b6a..561a297c5e 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialTests.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include @@ -21,7 +22,6 @@ #include #include #include -#include #include #include @@ -34,7 +34,8 @@ namespace UnitTest : public RPITestFixture { protected: - Data::Asset m_testMaterialSrgAsset; + Data::Asset m_testMaterialShaderAsset; + AZ::RHI::Ptr m_testMaterialSrgLayout; Data::Asset m_testMaterialTypeAsset; Data::Asset m_testMaterialAsset; Data::Asset m_testImageAsset; @@ -67,13 +68,12 @@ namespace UnitTest { RPITestFixture::SetUp(); - m_testMaterialSrgAsset = CreateCommonTestMaterialSrgAsset(); - - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset); + m_testMaterialSrgLayout = CreateCommonTestMaterialSrgLayout(); + m_testMaterialShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); - materialTypeCreator.AddShader(shaderAsset); + materialTypeCreator.AddShader(m_testMaterialShaderAsset); AddCommonTestMaterialProperties(materialTypeCreator); materialTypeCreator.SetPropertyValue(Name{ "MyFloat2" }, Vector2{ 10.1f, 10.2f }); materialTypeCreator.SetPropertyValue(Name{ "MyFloat3" }, Vector3{ 11.1f, 11.2f, 11.3f }); @@ -105,7 +105,8 @@ namespace UnitTest void TearDown() override { - m_testMaterialSrgAsset.Reset(); + m_testMaterialShaderAsset.Reset(); + m_testMaterialSrgLayout = nullptr; m_testMaterialTypeAsset.Reset(); m_testMaterialAsset.Reset(); m_testImageAsset.Reset(); @@ -254,7 +255,7 @@ namespace UnitTest EXPECT_EQ(material->GetPropertyValue>(material->FindPropertyIndex(Name{ "MyImage" })), otherTestImage); EXPECT_EQ(material->GetPropertyValue(material->FindPropertyIndex(Name{ "MyEnum" })), 3u); - ProcessQueuedSrgCompilations(m_testMaterialSrgAsset); + ProcessQueuedSrgCompilations(m_testMaterialShaderAsset, m_testMaterialSrgLayout->GetName()); material->Compile(); // Dig in to the SRG to make sure the values were applied there as well... @@ -280,13 +281,12 @@ namespace UnitTest TEST_F(MaterialTests, TestSetPropertyValueToMultipleShaderSettings) { - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset); Data::Asset materialTypeAsset; Data::Asset materialAsset; MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); - materialTypeCreator.AddShader(shaderAsset); + materialTypeCreator.AddShader(m_testMaterialShaderAsset); materialTypeCreator.BeginMaterialProperty(Name{ "MyInt" }, MaterialPropertyDataType::Int); materialTypeCreator.ConnectMaterialPropertyToShaderInput(Name{ "m_int" }); materialTypeCreator.ConnectMaterialPropertyToShaderInput(Name{ "m_uint" }); @@ -305,7 +305,7 @@ namespace UnitTest EXPECT_EQ(material->GetPropertyValue(material->FindPropertyIndex(Name{ "MyInt" })), 42); - ProcessQueuedSrgCompilations(m_testMaterialSrgAsset); + ProcessQueuedSrgCompilations(m_testMaterialShaderAsset, m_testMaterialSrgLayout->GetName()); material->Compile(); // Dig in to the SRG to make sure the values were applied to both shader constants... @@ -340,7 +340,7 @@ namespace UnitTest Data::Instance actualImageInstance = material->GetPropertyValue>(material->FindPropertyIndex(Name{"MyImage"})); EXPECT_EQ(actualImageInstance, nullImageInstance); - ProcessQueuedSrgCompilations(m_testMaterialSrgAsset); + ProcessQueuedSrgCompilations(m_testMaterialShaderAsset, m_testMaterialSrgLayout->GetName()); material->Compile(); const RHI::ShaderResourceGroupData& srgData = material->GetRHIShaderResourceGroup()->GetData(); @@ -403,7 +403,7 @@ namespace UnitTest { Ptr optionsLayout = CreateTestOptionsLayout(); - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, optionsLayout); + Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, optionsLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); @@ -484,7 +484,8 @@ namespace UnitTest { Ptr optionsLayout = CreateTestOptionsLayout(); - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, optionsLayout); + Data::Asset shaderAsset = + CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, optionsLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); @@ -551,7 +552,8 @@ namespace UnitTest { Ptr optionsLayout = CreateTestOptionsLayout(); - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, optionsLayout); + Data::Asset shaderAsset = + CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, optionsLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); @@ -622,7 +624,7 @@ namespace UnitTest { Ptr optionsLayout = CreateTestOptionsLayout(); - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, optionsLayout); + Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, optionsLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); @@ -712,7 +714,7 @@ namespace UnitTest // Make sure the values have not changed - ProcessQueuedSrgCompilations(m_testMaterialSrgAsset); + ProcessQueuedSrgCompilations(m_testMaterialShaderAsset, m_testMaterialSrgLayout->GetName()); material->Compile(); ValidateInitialValuesFromMaterial(material); @@ -741,19 +743,16 @@ namespace UnitTest TEST_F(MaterialTests, ColorPropertyCanMapToFloat3) { - Data::Asset srgAsset; Data::Asset materialTypeAsset; Data::Asset materialAsset; - ShaderResourceGroupAssetCreator srgCreator; - srgCreator.Begin(Uuid::CreateRandom(), Name("MaterialSrg")); - srgCreator.BeginAPI(RHI::Factory::Get().GetType()); - srgCreator.SetBindingSlot(SrgBindingSlot::Material); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{"m_color"}, 0, 12, 0}); - srgCreator.EndAPI(); - srgCreator.End(srgAsset); + RHI::Ptr srgLayout = RHI::ShaderResourceGroupLayout::Create(); + srgLayout->SetName(Name("MaterialSrg")); + srgLayout->SetBindingSlot(SrgBindingSlot::Material); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name{"m_color"}, 0, 12, 0}); + ASSERT_TRUE(srgLayout->Finalize()); - Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), srgAsset); + Data::Asset shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), srgLayout); MaterialTypeAssetCreator materialTypeCreator; materialTypeCreator.Begin(Uuid::CreateRandom()); @@ -774,7 +773,7 @@ namespace UnitTest MaterialPropertyIndex colorProperty{0}; material->SetPropertyValue(colorProperty, inputColor); - ProcessQueuedSrgCompilations(srgAsset); + ProcessQueuedSrgCompilations(shaderAsset, srgLayout->GetName()); material->Compile(); AZ::Color colorFromMaterial = material->GetPropertyValue(colorProperty); diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeAssetTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeAssetTests.cpp index 599b098e51..a30bb975c2 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeAssetTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeAssetTests.cpp @@ -14,12 +14,12 @@ #include #include #include +#include #include #include #include #include -#include #include #include @@ -89,7 +89,7 @@ namespace UnitTest AZ::RPI::MaterialPropertyIndex m_enableIndex; }; - Data::Asset m_testMaterialSrgAsset; + RHI::Ptr m_testMaterialSrgLayout; Ptr m_testShaderOptionsLayout; Data::Asset m_testShaderAsset; Data::Asset m_testImageAsset; @@ -102,7 +102,7 @@ namespace UnitTest Splat3Functor::Reflect(GetSerializeContext()); DummyShaderCollectionFunctor::Reflect(GetSerializeContext()); - m_testMaterialSrgAsset = CreateCommonTestMaterialSrgAsset(); + m_testMaterialSrgLayout = CreateCommonTestMaterialSrgLayout(); AZStd::vector boolOptionValues; boolOptionValues.push_back({Name{"False"}, RPI::ShaderOptionValue{0}}); @@ -124,7 +124,7 @@ namespace UnitTest m_testShaderOptionsLayout->AddShaderOption(ShaderOptionDescriptor{Name{"o_lightCount"}, ShaderOptionType::IntegerRange, 3, order++, intOptionRange, Name{"0"}}); m_testShaderOptionsLayout->Finalize(); - m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, m_testShaderOptionsLayout); + m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, m_testShaderOptionsLayout); // Since this test doesn't actually instantiate a Material, it won't need to instantiate this ImageAsset, so all we // need is an asset reference with a valid ID. @@ -136,7 +136,7 @@ namespace UnitTest void TearDown() override { - m_testMaterialSrgAsset.Reset(); + m_testMaterialSrgLayout = nullptr; m_testShaderAsset.Reset(); m_testShaderOptionsLayout = nullptr; @@ -181,7 +181,7 @@ namespace UnitTest Ptr shaderInputFunctor = aznew Splat3Functor; shaderInputFunctor->m_floatIndex = materialTypeCreator.GetMaterialPropertiesLayout()->FindPropertyIndex(Name{ "NonAliasFloat" }); - shaderInputFunctor->m_vector3Index = m_testMaterialSrgAsset->GetLayout()->FindShaderInputConstantIndex(Name{ "m_float3" }); + shaderInputFunctor->m_vector3Index = m_testMaterialSrgLayout->FindShaderInputConstantIndex(Name{ "m_float3" }); materialTypeCreator.AddMaterialFunctor(shaderInputFunctor); EXPECT_TRUE(materialTypeCreator.End(materialTypeAsset)); @@ -198,7 +198,7 @@ namespace UnitTest // Validate the results { - EXPECT_EQ(m_testMaterialSrgAsset, materialTypeAsset->GetMaterialSrgAsset()); + EXPECT_EQ(m_testMaterialSrgLayout, materialTypeAsset->GetMaterialSrgLayout()); EXPECT_EQ(5, materialTypeAsset->GetMaterialPropertiesLayout()->GetPropertyCount()); // Check aliased properties @@ -235,7 +235,7 @@ namespace UnitTest // Check the functors - const RHI::ShaderInputConstantIndex expectedVector3Index = materialTypeAsset->GetMaterialSrgAsset()->GetLayout()->FindShaderInputConstantIndex(Name{ "m_float3" }); + const RHI::ShaderInputConstantIndex expectedVector3Index = materialTypeAsset->GetMaterialSrgLayout()->FindShaderInputConstantIndex(Name{ "m_float3" }); EXPECT_EQ(2, materialTypeAsset->GetMaterialFunctors().size()); const DummyShaderCollectionFunctor* shaderCollectionFunctor = azrtti_cast(materialTypeAsset->GetMaterialFunctors()[0].get()); @@ -356,7 +356,7 @@ namespace UnitTest materialTypeCreator.AddShader(m_testShaderAsset); // Add another shader that doesn't have shader options to demonstrate connecting to all // shaders with a given option simply skips shaders that don't have that option - materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset)); + materialTypeCreator.AddShader(CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout)); materialTypeCreator.BeginMaterialProperty(Name{"Quality"}, MaterialPropertyDataType::UInt); materialTypeCreator.ConnectMaterialPropertyToShaderOption(Name{"o_quality"}, 0); // Only connects to the first shader @@ -512,17 +512,16 @@ namespace UnitTest tester.SerializeOut(materialTypeAsset.Get(), AZ::DataStream::ST_XML); materialTypeAsset = tester.SerializeIn(Data::AssetId(Uuid::CreateRandom())); - EXPECT_FALSE(materialTypeAsset->GetMaterialSrgAsset().GetId().IsValid()); - EXPECT_FALSE(materialTypeAsset->GetMaterialSrgAsset().Get()); + EXPECT_FALSE(materialTypeAsset->GetMaterialSrgLayout()); EXPECT_EQ(0, materialTypeAsset->GetMaterialPropertiesLayout()->GetPropertyCount()); EXPECT_EQ(0, materialTypeAsset->GetMaterialFunctors().size()); } TEST_F(MaterialTypeAssetTests, TestWithMultipleShaders) { - Data::Asset shaderA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, m_testShaderOptionsLayout); - Data::Asset shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, m_testShaderOptionsLayout); - Data::Asset shaderC = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, m_testShaderOptionsLayout); + Data::Asset shaderA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, m_testShaderOptionsLayout); + Data::Asset shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, m_testShaderOptionsLayout); + Data::Asset shaderC = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, m_testShaderOptionsLayout); ShaderOptionGroup optionsA{m_testShaderOptionsLayout}; ShaderOptionGroup optionsB{m_testShaderOptionsLayout}; @@ -560,14 +559,14 @@ namespace UnitTest EXPECT_FALSE(materialTypeAsset->GetShaderCollection()[2].GetShaderOptions()->GetValue(Name{"o_quality"}).IsValid()); EXPECT_FALSE(materialTypeAsset->GetShaderCollection()[2].GetShaderOptions()->GetValue(Name{"o_lightCount"}).IsValid()); - EXPECT_EQ(m_testMaterialSrgAsset, materialTypeAsset->GetMaterialSrgAsset()); + EXPECT_EQ(m_testMaterialSrgLayout, materialTypeAsset->GetMaterialSrgLayout()); } TEST_F(MaterialTypeAssetTests, TestWithMultipleShaders_OnlyOneUsesSRG) { Data::Asset shaderA = CreateTestShaderAsset(Uuid::CreateRandom(), {}); - Data::Asset shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset); + Data::Asset shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout); Data::Asset shaderC = CreateTestShaderAsset(Uuid::CreateRandom(), {}); Data::Asset materialTypeAsset; @@ -579,7 +578,7 @@ namespace UnitTest materialTypeCreator.AddShader(shaderC); EXPECT_TRUE(materialTypeCreator.End(materialTypeAsset)); - EXPECT_EQ(m_testMaterialSrgAsset, materialTypeAsset->GetMaterialSrgAsset()); + EXPECT_EQ(m_testMaterialSrgLayout, materialTypeAsset->GetMaterialSrgLayout()); } TEST_F(MaterialTypeAssetTests, Error_NoBegin_BeforeBeginMaterialProperty) @@ -633,16 +632,13 @@ namespace UnitTest TEST_F(MaterialTypeAssetTests, Error_MultipleShadersUsingDifferentSRGs) { - Data::Asset otherPerMaterialSRG; - ShaderResourceGroupAssetCreator srgCreator; - srgCreator.Begin(Uuid::CreateRandom(), Name("MaterialSrg")); - srgCreator.BeginAPI(RHI::Factory::Get().GetType()); - srgCreator.SetBindingSlot(SrgBindingSlot::Material); - srgCreator.EndAPI(); - srgCreator.End(otherPerMaterialSRG); + RHI::Ptr otherPerMaterialSRGLayout = RHI::ShaderResourceGroupLayout::Create(); + otherPerMaterialSRGLayout->SetName(Name("MaterialSrg")); + otherPerMaterialSRGLayout->SetBindingSlot(SrgBindingSlot::Material); + otherPerMaterialSRGLayout->Finalize(); - Data::Asset shaderA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset); - Data::Asset shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), otherPerMaterialSRG); + Data::Asset shaderA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout); + Data::Asset shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), otherPerMaterialSRGLayout); Data::Asset materialTypeAsset; diff --git a/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeSourceDataTests.cpp b/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeSourceDataTests.cpp index fd0b432e6e..a359a24081 100644 --- a/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeSourceDataTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Material/MaterialTypeSourceDataTests.cpp @@ -13,13 +13,13 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include #include @@ -38,12 +38,11 @@ namespace UnitTest { protected: - Data::Asset m_testMaterialSrgAsset; + RHI::Ptr m_testMaterialSrgLayout; Data::Asset m_testShaderAsset; Data::Asset m_testShaderAsset2; Data::Asset m_testImageAsset; Data::Asset m_testImageAsset2; // For relative path testing. - static constexpr const char* TestMaterialSrgFilename = "test.azsl"; static constexpr const char* TestShaderFilename = "test.shader"; static constexpr const char* TestShaderFilename2 = "extra.shader"; static constexpr const char* TestImageFilename = "test.streamingimage"; @@ -270,26 +269,19 @@ namespace UnitTest AZ::RPI::MaterialFunctorSourceDataRegistration::Get()->RegisterMaterialFunctor("SetShaderOption", azrtti_typeid()); const Name materialSrgId{"MaterialSrg"}; - - // We can use a random source file Uuid, but based on the current implementation we require the - // per-material asset sub-Id to be a hash of the SRG name. - Data::AssetId materialSrgAssetId{ Uuid::CreateRandom(), AssetUtils::CalcSrgProductSubId(materialSrgId) }; - - ShaderResourceGroupAssetCreator srgAssetCreator; - srgAssetCreator.Begin(materialSrgAssetId, materialSrgId); - srgAssetCreator.BeginAPI(RHI::Factory::Get().GetType()); - srgAssetCreator.SetBindingSlot(SrgBindingSlot::Material); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_color" }, 4, 16, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float" }, 20, 4, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_int" }, 24, 4, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_uint" }, 28, 4, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float2" }, 32, 8, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float3" }, 40, 12, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float4" }, 52, 16, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_bool" }, 68, 1, 0 }); - srgAssetCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "m_image" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 1 }); - EXPECT_TRUE(srgAssetCreator.EndAPI()); - EXPECT_TRUE(srgAssetCreator.End(m_testMaterialSrgAsset)); + m_testMaterialSrgLayout = RHI::ShaderResourceGroupLayout::Create(); + m_testMaterialSrgLayout->SetName(materialSrgId); + m_testMaterialSrgLayout->SetBindingSlot(SrgBindingSlot::Material); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_color" }, 4, 16, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float" }, 20, 4, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_int" }, 24, 4, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_uint" }, 28, 4, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float2" }, 32, 8, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float3" }, 40, 12, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_float4" }, 52, 16, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "m_bool" }, 68, 1, 0 }); + m_testMaterialSrgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "m_image" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 1 }); + EXPECT_TRUE(m_testMaterialSrgLayout->Finalize()); AZStd::vector optionValues; optionValues.push_back({Name("Low"), RPI::ShaderOptionValue(0)}); @@ -303,7 +295,7 @@ namespace UnitTest shaderOptions->AddShaderOption(ShaderOptionDescriptor{Name{"o_bar"}, ShaderOptionType::Enumeration, 4, order++, optionValues, Name{"Low"}}); shaderOptions->Finalize(); - m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, shaderOptions); + m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, shaderOptions); m_testShaderAsset2 = CreateTestShaderAsset(Uuid::CreateRandom()); // Since this test doesn't actually instantiate a Material, it won't need to instantiate this ImageAsset, so all we @@ -311,10 +303,6 @@ namespace UnitTest m_testImageAsset = Data::Asset{ Data::AssetId{ Uuid::CreateRandom(), StreamingImageAsset::GetImageAssetSubId() }, azrtti_typeid() }; m_testImageAsset2 = Data::Asset{ Data::AssetId{ Uuid::CreateRandom(), StreamingImageAsset::GetImageAssetSubId() }, azrtti_typeid() }; - // Register the test assets with the AssetSystemStub so CreateMaterialTypeAsset() can use AssetUtils. - Data::AssetInfo testMaterialAssetInfo; - testMaterialAssetInfo.m_assetId = m_testMaterialSrgAsset.GetId(); - Data::AssetInfo testShaderAssetInfo; testShaderAssetInfo.m_assetId = m_testShaderAsset.GetId(); @@ -328,7 +316,6 @@ namespace UnitTest testImageAssetInfo2.m_assetId = m_testImageAsset2.GetId(); testImageAssetInfo2.m_assetType = azrtti_typeid(); - m_assetSystemStub.RegisterSourceInfo(TestMaterialSrgFilename, testMaterialAssetInfo, ""); m_assetSystemStub.RegisterSourceInfo(TestShaderFilename, testShaderAssetInfo, ""); m_assetSystemStub.RegisterSourceInfo(TestShaderFilename2, testShaderAssetInfo2, ""); m_assetSystemStub.RegisterSourceInfo(TestImageFilename, testImageAssetInfo, ""); @@ -340,7 +327,7 @@ namespace UnitTest void TearDown() override { - m_testMaterialSrgAsset.Reset(); + m_testMaterialSrgLayout = nullptr; m_testShaderAsset.Reset(); m_testShaderAsset2.Reset(); @@ -375,7 +362,7 @@ namespace UnitTest Data::Asset materialTypeAsset = materialTypeOutcome.GetValue(); - EXPECT_EQ(m_testMaterialSrgAsset, materialTypeAsset->GetMaterialSrgAsset()); + EXPECT_EQ(m_testMaterialSrgLayout, materialTypeAsset->GetMaterialSrgLayout()); } TEST_F(MaterialTypeSourceDataTests, CreateMaterialTypeAsset_NoMaterialSrgAsset) @@ -396,7 +383,7 @@ namespace UnitTest Data::Asset materialTypeAsset = materialTypeOutcome.GetValue(); - EXPECT_FALSE(materialTypeAsset->GetMaterialSrgAsset().GetId().IsValid()); + EXPECT_FALSE(materialTypeAsset->GetMaterialSrgLayout()); } TEST_F(MaterialTypeSourceDataTests, CreateMaterialTypeAsset_WithMultipleShaders) @@ -414,8 +401,8 @@ namespace UnitTest shaderOptions->AddShaderOption(ShaderOptionDescriptor{Name{"o_bar"}, ShaderOptionType::Enumeration, 2, order++, optionValues, Name{"Low"}}); shaderOptions->Finalize(); - Data::Asset shaderAssetA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, shaderOptions); - Data::Asset shaderAssetB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, shaderOptions); + Data::Asset shaderAssetA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, shaderOptions); + Data::Asset shaderAssetB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, shaderOptions); Data::Asset shaderAssetC = CreateTestShaderAsset(Uuid::CreateRandom(), {}, shaderOptions); Data::AssetInfo shaderAssetAInfo; @@ -454,7 +441,7 @@ namespace UnitTest // Check the results... - EXPECT_EQ(m_testMaterialSrgAsset, materialTypeAsset->GetMaterialSrgAsset()); + EXPECT_EQ(m_testMaterialSrgLayout, materialTypeAsset->GetMaterialSrgLayout()); EXPECT_EQ(3, materialTypeAsset->GetShaderCollection().size()); EXPECT_EQ(shaderAssetA, materialTypeAsset->GetShaderCollection()[0].GetShaderAsset()); EXPECT_EQ(shaderAssetB, materialTypeAsset->GetShaderCollection()[1].GetShaderAsset()); @@ -715,7 +702,7 @@ namespace UnitTest shaderAOptions->AddShaderOption(ShaderOptionDescriptor{ Name{"o_quality"}, ShaderOptionType::Enumeration, 0, order++, optionValues, Name{"Low"} }); shaderAOptions->AddShaderOption(ShaderOptionDescriptor{ Name{"o_speed"}, ShaderOptionType::Enumeration, 2, order++, optionValues, Name{"Low"} }); shaderAOptions->Finalize(); - auto shaderA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, shaderAOptions); + auto shaderA = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, shaderAOptions); Ptr shaderBOptions = ShaderOptionGroupLayout::Create(); order = 0; @@ -723,14 +710,14 @@ namespace UnitTest shaderBOptions->AddShaderOption(ShaderOptionDescriptor{ Name{"o_quality"}, ShaderOptionType::Enumeration, 2, order++, optionValues, Name{"Low"} }); shaderBOptions->AddShaderOption(ShaderOptionDescriptor{ Name{"o_speed"}, ShaderOptionType::Enumeration, 4, order++, optionValues, Name{"Low"} }); shaderBOptions->Finalize(); - auto shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, shaderBOptions); + auto shaderB = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, shaderBOptions); Ptr shaderCOptions = ShaderOptionGroupLayout::Create(); order = 0; shaderCOptions->AddShaderOption(ShaderOptionDescriptor{ Name{"o_accuracy"}, ShaderOptionType::Enumeration, 0, order++, optionValues, Name{"Low"} }); shaderCOptions->AddShaderOption(ShaderOptionDescriptor{ Name{"o_efficiency"}, ShaderOptionType::Enumeration, 2, order++, optionValues, Name{"Low"} }); shaderCOptions->Finalize(); - auto shaderC = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgAsset, shaderCOptions); + auto shaderC = CreateTestShaderAsset(Uuid::CreateRandom(), m_testMaterialSrgLayout, shaderCOptions); Data::AssetInfo testShaderAssetInfo; testShaderAssetInfo.m_assetId = shaderA.GetId(); @@ -841,7 +828,7 @@ namespace UnitTest EXPECT_TRUE(nullptr != shaderInputFunctor); EXPECT_EQ(propertyIndex, shaderInputFunctor->m_floatIndex); - const RHI::ShaderInputConstantIndex expectedVector3Index = materialTypeAsset->GetMaterialSrgAsset()->GetLayout()->FindShaderInputConstantIndex(Name{ "m_float3" }); + const RHI::ShaderInputConstantIndex expectedVector3Index = materialTypeAsset->GetMaterialSrgLayout()->FindShaderInputConstantIndex(Name{ "m_float3" }); EXPECT_EQ(expectedVector3Index, shaderInputFunctor->m_vector3Index); } diff --git a/Gems/Atom/RPI/Code/Tests/Pass/PassTests.cpp b/Gems/Atom/RPI/Code/Tests/Pass/PassTests.cpp index 96a21f8c9b..f9a2bc4493 100644 --- a/Gems/Atom/RPI/Code/Tests/Pass/PassTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Pass/PassTests.cpp @@ -329,7 +329,7 @@ namespace UnitTest Ptr parentPass = m_passSystem->CreatePassFromTemplate(Name("ParentPass"), Name("ParentPass")); parentPass->Reset(); - parentPass->BuildAttachments(); + parentPass->Build(); PassValidationResults validationResults; parentPass->Validate(validationResults); @@ -351,7 +351,7 @@ namespace UnitTest Ptr parentPass = m_passSystem->CreatePassFromTemplate(Name("ParentPass"), Name("ParentPass")); parentPass->Reset(); - parentPass->BuildAttachments(); + parentPass->Build(); PassValidationResults validationResults; parentPass->Validate(validationResults); @@ -373,7 +373,7 @@ namespace UnitTest Ptr parentPass = m_passSystem->CreatePassFromTemplate(Name("ParentPass"), Name("ParentPass")); parentPass->Reset(); - parentPass->BuildAttachments(); + parentPass->Build(); PassValidationResults validationResults; parentPass->Validate(validationResults); @@ -397,7 +397,7 @@ namespace UnitTest parentPass->m_flags.m_partOfHierarchy = true; parentPass->OnHierarchyChange(); parentPass->Reset(); - parentPass->BuildAttachments(); + parentPass->Build(); PassValidationResults validationResults; parentPass->Validate(validationResults); @@ -421,7 +421,7 @@ namespace UnitTest parentPass->m_flags.m_partOfHierarchy = true; parentPass->OnHierarchyChange(); parentPass->Reset(); - parentPass->BuildAttachments(); + parentPass->Build(); PassValidationResults validationResults; parentPass->Validate(validationResults); @@ -445,7 +445,7 @@ namespace UnitTest parentPass->m_flags.m_partOfHierarchy = true; parentPass->OnHierarchyChange(); parentPass->Reset(); - parentPass->BuildAttachments(); + parentPass->Build(); PassValidationResults validationResults; parentPass->Validate(validationResults); @@ -469,7 +469,7 @@ namespace UnitTest parentPass->m_flags.m_partOfHierarchy = true; parentPass->OnHierarchyChange(); parentPass->Reset(); - parentPass->BuildAttachments(); + parentPass->Build(); PassValidationResults validationResults; parentPass->Validate(validationResults); diff --git a/Gems/Atom/RPI/Code/Tests/Shader/ShaderTests.cpp b/Gems/Atom/RPI/Code/Tests/Shader/ShaderTests.cpp index 7a3fe2454e..cf13e21193 100644 --- a/Gems/Atom/RPI/Code/Tests/Shader/ShaderTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Shader/ShaderTests.cpp @@ -18,7 +18,6 @@ #include #include #include -#include #include #include @@ -240,11 +239,11 @@ namespace UnitTest for (size_t i = 0; i < RHI::Limits::Pipeline::ShaderResourceGroupCountMax; ++i) { - Data::Asset srgAsset = CreateShaderResourceGroupAsset(i); + RHI::Ptr srgLayout = CreateShaderResourceGroupLayout(i); AZ::RHI::ShaderResourceGroupBindingInfo bindingInfo = CreateShaderResouceGroupBindingInfo(i); - m_pipelineLayoutDescriptor->AddShaderResourceGroupLayoutInfo(*srgAsset->GetLayout(), bindingInfo); - m_srgAssets.push_back(srgAsset); + m_pipelineLayoutDescriptor->AddShaderResourceGroupLayoutInfo(*srgLayout.get(), bindingInfo); + m_srgLayouts.push_back(srgLayout); } m_pipelineLayoutDescriptor->Finalize(); @@ -260,7 +259,7 @@ namespace UnitTest m_bindings[i] = {}; } - m_srgAssets.clear(); + m_srgLayouts.clear(); m_pipelineLayoutDescriptor = nullptr; m_shaderOptionGroupLayoutForAsset = nullptr; m_shaderOptionGroupLayoutForVariants = nullptr; @@ -293,7 +292,7 @@ namespace UnitTest return Name{ AZStd::to_string(index) }; } - AZ::Data::Asset CreateShaderResourceGroupAsset(size_t index) + RHI::Ptr CreateShaderResourceGroupLayout(size_t index) { using namespace AZ; @@ -301,18 +300,15 @@ namespace UnitTest // Creates a simple SRG asset with a unique SRG layout hash (based on the index). - RPI::ShaderResourceGroupAssetCreator creator; - creator.Begin(Uuid::CreateRandom(), srgId); - creator.BeginAPI(RHI::Factory::Get().GetType()); - creator.SetBindingSlot(aznumeric_caster(index)); - creator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ srgId, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, static_cast(index) }); + RHI::Ptr srgLayout = RHI::ShaderResourceGroupLayout::Create(); + srgLayout->SetName(srgId); + srgLayout->SetBindingSlot(aznumeric_caster(index)); + srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ + srgId, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, static_cast(index) }); - Data::Asset srgAsset; - EXPECT_TRUE(creator.EndAPI()); - bool success = creator.End(srgAsset); - EXPECT_TRUE(success); + EXPECT_TRUE(srgLayout->Finalize()); - return srgAsset; + return srgLayout; } AZ::RHI::ShaderResourceGroupBindingInfo CreateShaderResouceGroupBindingInfo(size_t index) @@ -400,10 +396,12 @@ namespace UnitTest } Data::Asset CreateTestShaderVariantAsset(RPI::ShaderVariantId id, RPI::ShaderVariantStableId stableId, + bool isFullyBaked, const AZStd::vector& stagesToActivate = {RHI::ShaderStage::Vertex, RHI::ShaderStage::Fragment}) { RPI::ShaderVariantAssetCreator shaderVariantAssetCreator; - shaderVariantAssetCreator.Begin(Uuid::CreateRandom(), id, stableId, m_shaderOptionGroupLayoutForAsset.get()); + shaderVariantAssetCreator.Begin(Uuid::CreateRandom(), id, stableId, isFullyBaked); + shaderVariantAssetCreator.SetBuildTimestamp(AZStd::sys_time_t(1)); //Make non-zero for (RHI::ShaderStage rhiStage : stagesToActivate) { @@ -411,10 +409,6 @@ namespace UnitTest shaderVariantAssetCreator.SetShaderFunction(rhiStage, vertexStageFunction); } - shaderVariantAssetCreator.SetRenderStates(m_renderStates); - shaderVariantAssetCreator.SetInputContract(CreateSimpleShaderInputContract()); - shaderVariantAssetCreator.SetOutputContract(CreateSimpleShaderOutputContract()); - Data::Asset shaderVariantAsset; shaderVariantAssetCreator.End(shaderVariantAsset); @@ -431,21 +425,26 @@ namespace UnitTest creator.SetDrawListName(m_drawListName); creator.SetShaderOptionGroupLayout(m_shaderOptionGroupLayoutForAsset); - for (auto& srgAsset : m_srgAssets) - { - creator.AddShaderResourceGroupAsset(srgAsset); - } - creator.BeginAPI(RHI::Factory::Get().GetType()); + creator.BeginSupervariant(AZ::Name{}); // The default (first) supervariant MUST be nameless. + + creator.SetSrgLayoutList(m_srgLayouts); + creator.SetPipelineLayout(m_pipelineLayoutDescriptor); + + creator.SetRenderStates(m_renderStates); + creator.SetInputContract(CreateSimpleShaderInputContract()); + creator.SetOutputContract(CreateSimpleShaderOutputContract()); + RHI::ShaderStageAttributeMapList attributeMaps; attributeMaps.resize(RHI::ShaderStageCount); creator.SetShaderStageAttributeMapList(attributeMaps); - Data::Asset shaderVariantAsset = CreateTestShaderVariantAsset(RPI::ShaderVariantId{}, RPI::ShaderVariantStableId{0}, stagesToActivate); + Data::Asset shaderVariantAsset = CreateTestShaderVariantAsset(RPI::ShaderVariantId{}, RPI::ShaderVariantStableId{0}, false, stagesToActivate); creator.SetRootShaderVariantAsset(shaderVariantAsset); - creator.SetPipelineLayout(m_pipelineLayoutDescriptor); + + creator.EndSupervariant(); } //! Used to finish creating a shader that began with BeginCreatingTestShaderAsset(). Call this after adding all the desired shader variants. @@ -526,11 +525,11 @@ namespace UnitTest EXPECT_EQ(shaderAsset->GetShaderOptionGroupLayout()->GetHash(), m_shaderOptionGroupLayoutForAsset->GetHash()); EXPECT_EQ(shaderAsset->GetPipelineLayoutDescriptor()->GetHash(), m_pipelineLayoutDescriptor->GetHash()); - for (size_t i = 0; i < shaderAsset->GetShaderResourceGroupAssets().size(); ++i) + for (size_t i = 0; i < shaderAsset->GetShaderResourceGroupLayouts().size(); ++i) { - auto& srgAsset = shaderAsset->GetShaderResourceGroupAssets()[i]; - EXPECT_EQ(srgAsset, m_srgAssets[i]); - EXPECT_EQ(shaderAsset->FindShaderResourceGroupAsset(CreateShaderResourceGroupId(i)), srgAsset); + auto& srgLayout = shaderAsset->GetShaderResourceGroupLayouts()[i]; + EXPECT_EQ(srgLayout->GetHash(), m_srgLayouts[i]->GetHash()); + EXPECT_EQ(shaderAsset->FindShaderResourceGroupLayout(CreateShaderResourceGroupId(i))->GetHash(), srgLayout->GetHash()); } } @@ -543,7 +542,7 @@ namespace UnitTest auto shaderAsset = shader->GetAsset(); EXPECT_EQ(shader->GetPipelineStateType(), shaderAsset->GetPipelineStateType()); - EXPECT_EQ(shader->GetShaderResourceGroupAssets(), shaderAsset->GetShaderResourceGroupAssets()); + EXPECT_EQ(shader->GetShaderResourceGroupLayouts(), shaderAsset->GetShaderResourceGroupLayouts()); const RPI::ShaderVariant& rootShaderVariant = shader->GetVariant( RPI::ShaderVariantStableId{0} ); @@ -580,7 +579,7 @@ namespace UnitTest AZ::RHI::RenderStates m_renderStates; - AZStd::fixed_vector, AZ::RHI::Limits::Pipeline::ShaderResourceGroupCountMax> m_srgAssets; + AZStd::fixed_vector, AZ::RHI::Limits::Pipeline::ShaderResourceGroupCountMax> m_srgLayouts; }; TEST_F(ShaderTests, ShaderOptionBindingTest) @@ -1202,6 +1201,7 @@ namespace UnitTest { ErrorMessageFinder messageFinder("both Draw functions and Dispatch functions"); messageFinder.AddExpectedErrorMessage("Invalid root variant"); + messageFinder.AddExpectedErrorMessage("Cannot continue building ShaderAsset because 1 error(s) reported"); AZ::RPI::ShaderAssetCreator creator; BeginCreatingTestShaderAsset(creator, @@ -1216,6 +1216,7 @@ namespace UnitTest { ErrorMessageFinder messageFinder("fragment function but no vertex function"); messageFinder.AddExpectedErrorMessage("Invalid root variant"); + messageFinder.AddExpectedErrorMessage("Cannot continue building ShaderAsset because 1 error(s) reported"); AZ::RPI::ShaderAssetCreator creator; BeginCreatingTestShaderAsset(creator, {AZ::RHI::ShaderStage::Fragment}); @@ -1231,6 +1232,7 @@ namespace UnitTest { ErrorMessageFinder messageFinder("tessellation function but no vertex function"); messageFinder.AddExpectedErrorMessage("Invalid root variant"); + messageFinder.AddExpectedErrorMessage("Cannot continue building ShaderAsset because 1 error(s) reported"); AZ::RPI::ShaderAssetCreator creator; BeginCreatingTestShaderAsset(creator, { AZ::RHI::ShaderStage::Tessellation }); @@ -1264,56 +1266,7 @@ namespace UnitTest AZ_TEST_START_TRACE_SUPPRESSION; Data::Asset shaderAsset = CreateShaderAsset(); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); - - EXPECT_FALSE(shaderAsset); - } - - TEST_F(ShaderTests, ShaderAsset_PipelineLayout_SrgCountMismatch_Test) - { - using namespace AZ; - - m_pipelineLayoutDescriptor->Reset(); - // No SRGs. - m_pipelineLayoutDescriptor->Finalize(); - - AZ_TEST_START_TRACE_SUPPRESSION; - Data::Asset shaderAsset = CreateShaderAsset(); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); - - EXPECT_FALSE(shaderAsset); - } - - TEST_F(ShaderTests, ShaderAsset_PipelineLayout_SrgHashMismatch_Test) - { - using namespace AZ; - - m_pipelineLayoutDescriptor->Reset(); - for (size_t i = 0; i < RHI::Limits::Pipeline::ShaderResourceGroupCountMax; ++i) - { - // Shift SRGs by one. This will make the hashes no longer match. - size_t shiftedIndex = (i + 1) % RHI::Limits::Pipeline::ShaderResourceGroupCountMax; - AZ::RHI::ShaderResourceGroupBindingInfo bindingInfo = CreateShaderResouceGroupBindingInfo(shiftedIndex); - m_pipelineLayoutDescriptor->AddShaderResourceGroupLayoutInfo(*m_srgAssets[shiftedIndex]->GetLayout(), bindingInfo); - } - m_pipelineLayoutDescriptor->Finalize(); - - AZ_TEST_START_TRACE_SUPPRESSION; - Data::Asset shaderAsset = CreateShaderAsset(); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); - - EXPECT_FALSE(shaderAsset); - } - - TEST_F(ShaderTests, ShaderAsset_ShaderOptionGroupLayout_Missing_Test) - { - using namespace AZ; - - m_shaderOptionGroupLayoutForAsset = nullptr; - - AZ_TEST_START_TRACE_SUPPRESSION; - Data::Asset shaderAsset = CreateShaderAsset(); - AZ_TEST_STOP_TRACE_SUPPRESSION(1); + AZ_TEST_STOP_TRACE_SUPPRESSION(2); EXPECT_FALSE(shaderAsset); } @@ -1861,7 +1814,7 @@ namespace UnitTest Data::Asset shaderVariantAsset; - shaderVariantAsset = CreateTestShaderVariantAsset(shaderOptions.GetShaderVariantId(), RPI::ShaderVariantStableId{0}); + shaderVariantAsset = CreateTestShaderVariantAsset(shaderOptions.GetShaderVariantId(), RPI::ShaderVariantStableId{0}, false); EXPECT_FALSE(shaderVariantAsset->IsFullyBaked()); EXPECT_FALSE(ShaderOptionGroup(m_shaderOptionGroupLayoutForAsset, shaderVariantAsset->GetShaderVariantId()).IsFullySpecified()); @@ -1869,12 +1822,12 @@ namespace UnitTest shaderOptions.SetValue(AZ::Name{"Quality"}, AZ::Name{"Quality::Average"}); shaderOptions.SetValue(AZ::Name{"NumberSamples"}, AZ::Name{"100"}); shaderOptions.SetValue(AZ::Name{"Raytracing"}, AZ::Name{"On"}); - shaderVariantAsset = CreateTestShaderVariantAsset(shaderOptions.GetShaderVariantId(), RPI::ShaderVariantStableId{0}); + shaderVariantAsset = CreateTestShaderVariantAsset(shaderOptions.GetShaderVariantId(), RPI::ShaderVariantStableId{0}, true); EXPECT_TRUE(shaderVariantAsset->IsFullyBaked()); EXPECT_TRUE(ShaderOptionGroup(m_shaderOptionGroupLayoutForAsset, shaderVariantAsset->GetShaderVariantId()).IsFullySpecified()); shaderOptions.ClearValue(AZ::Name{"NumberSamples"}); - shaderVariantAsset = CreateTestShaderVariantAsset(shaderOptions.GetShaderVariantId(), RPI::ShaderVariantStableId{0}); + shaderVariantAsset = CreateTestShaderVariantAsset(shaderOptions.GetShaderVariantId(), RPI::ShaderVariantStableId{0}, false); EXPECT_FALSE(shaderVariantAsset->IsFullyBaked()); EXPECT_FALSE(ShaderOptionGroup(m_shaderOptionGroupLayoutForAsset, shaderVariantAsset->GetShaderVariantId()).IsFullySpecified()); } diff --git a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupAssetTests.cpp b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupAssetTests.cpp deleted file mode 100644 index 71c7dec396..0000000000 --- a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupAssetTests.cpp +++ /dev/null @@ -1,143 +0,0 @@ -/* -* 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. -* -*/ - -#include -#include -#include - -#include -#include - -namespace AZ -{ - namespace RPI - { - class ShaderResourceGroupAssetTester - : public UnitTest::SerializeTester - { - using Base = UnitTest::SerializeTester; - public: - ShaderResourceGroupAssetTester(AZ::SerializeContext* serializeContext) - : Base(serializeContext) - {} - - AZ::Data::Asset SerializeInHelper(const AZ::Data::AssetId& assetId) - { - AZ::Data::Asset asset = Base::SerializeIn(assetId); - asset->FinalizeAfterLoad(); - asset->SetReady(); - return asset; - } - }; - } -} - -namespace UnitTest -{ - using namespace AZ; - using namespace AZ::RPI; - - class ShaderResourceGroupAssetTests - : public RPITestFixture - { - protected: - Data::Asset CreateBasicSrgAsset(const Data::AssetId& assetId) - { - ShaderResourceGroupAssetCreator creator; - creator.Begin(assetId, Name("Foo")); - creator.BeginAPI(RHI::Factory::Get().GetType()); - - creator.SetBindingSlot(2); - creator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{"MyBuffer"}, RHI::ShaderInputBufferAccess::ReadWrite, RHI::ShaderInputBufferType::Raw, 1, 4, 1 }); - creator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImage" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 2 }); - creator.AddShaderInput(RHI::ShaderInputSamplerDescriptor{ Name{ "MySampler" }, 1, 3 }); - creator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{"MyFloat"}, 0, sizeof(float), 0 }); - creator.AddStaticSampler(RHI::ShaderInputStaticSamplerDescriptor{ Name("MyStaticSampler"), RHI::SamplerState::Create(RHI::FilterMode::Linear, RHI::FilterMode::Point, RHI::AddressMode::Wrap), 4 }); - - Data::Asset srgAsset; - EXPECT_TRUE(creator.EndAPI()); - EXPECT_TRUE(creator.End(srgAsset)); - - return srgAsset; - } - }; - - TEST_F(ShaderResourceGroupAssetTests, Error_Empty) - { - AZ_TEST_START_ASSERTTEST; - - ShaderResourceGroupAssetCreator creator; - creator.Begin(Uuid::CreateRandom(), Name("Foo")); - creator.BeginAPI(RHI::Factory::Get().GetType()); - - Data::Asset srgAsset; - EXPECT_FALSE(creator.EndAPI()); - EXPECT_FALSE(creator.End(srgAsset)); - - AZ_TEST_STOP_ASSERTTEST(2); - } - - TEST_F(ShaderResourceGroupAssetTests, Basic) - { - Data::AssetId assetId(Uuid::CreateRandom()); - Data::Asset srgAsset = CreateBasicSrgAsset(assetId); - - EXPECT_EQ(assetId, srgAsset->GetId()); - EXPECT_EQ(Name("Foo"), srgAsset->GetName()); - EXPECT_EQ(Data::AssetData::AssetStatus::Ready, srgAsset->GetStatus()); - EXPECT_EQ(2, srgAsset->GetLayout()->GetBindingSlot()); - EXPECT_TRUE(srgAsset->GetLayout()->FindShaderInputBufferIndex(Name{ "MyBuffer" }).IsValid()); - EXPECT_TRUE(srgAsset->GetLayout()->FindShaderInputImageIndex(Name{ "MyImage" }).IsValid()); - EXPECT_TRUE(srgAsset->GetLayout()->FindShaderInputSamplerIndex(Name{ "MySampler" }).IsValid()); - EXPECT_TRUE(srgAsset->GetLayout()->FindShaderInputConstantIndex(Name{ "MyFloat" }).IsValid()); - EXPECT_EQ(1, srgAsset->GetLayout()->GetStaticSamplers().size()); - } - - TEST_F(ShaderResourceGroupAssetTests, Serialization) - { - Data::AssetId assetId(Uuid::CreateRandom()); - Data::Asset srgAsset = CreateBasicSrgAsset(assetId); - - RPI::ShaderResourceGroupAssetTester tester(GetSerializeContext()); - tester.SerializeOut(srgAsset.Get()); - Data::Asset serializedSrgAsset = tester.SerializeInHelper(Data::AssetId(Uuid::CreateRandom())); - - EXPECT_EQ(serializedSrgAsset->GetName(), srgAsset->GetName()); - // We don't need to check the entire layout reflection as that should be tested where ShaderResourceGroupLayout is tested. - EXPECT_EQ(serializedSrgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputBufferIndex { 0 }).m_name, srgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputBufferIndex { 0 }).m_name); - EXPECT_EQ(serializedSrgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputImageIndex { 0 }).m_name, srgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputImageIndex { 0 }).m_name); - EXPECT_EQ(serializedSrgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputSamplerIndex { 0 }).m_name, srgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputSamplerIndex { 0 }).m_name); - EXPECT_EQ(serializedSrgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputConstantIndex{ 0 }).m_name, srgAsset->GetLayout()->GetShaderInput(RHI::ShaderInputConstantIndex{ 0 }).m_name); - } - - TEST_F(ShaderResourceGroupAssetTests, Error_NoBegin) - { - Data::AssetId assetId(Uuid::CreateRandom()); - - AZ_TEST_START_ASSERTTEST; - - ShaderResourceGroupAssetCreator creator; - - creator.SetBindingSlot(2); - creator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBuffer" }, RHI::ShaderInputBufferAccess::ReadWrite, RHI::ShaderInputBufferType::Raw, 1, 4, 1 }); - creator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImage" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 2 }); - creator.AddShaderInput(RHI::ShaderInputSamplerDescriptor{ Name{ "MySampler" }, 1, 3 }); - creator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "MyFloat" }, 0, sizeof(float), 0 }); - creator.AddStaticSampler(RHI::ShaderInputStaticSamplerDescriptor{ Name("MyStaticSampler"), RHI::SamplerState::Create(RHI::FilterMode::Linear, RHI::FilterMode::Point, RHI::AddressMode::Wrap), 4 }); - - Data::Asset srgAsset; - EXPECT_FALSE(creator.End(srgAsset)); - - AZ_TEST_STOP_ASSERTTEST(7); - } -} - diff --git a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupBufferTests.cpp b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupBufferTests.cpp index 03bc4ad41e..64883944db 100644 --- a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupBufferTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupBufferTests.cpp @@ -12,9 +12,9 @@ #include #include +#include #include -#include #include #include #include @@ -28,7 +28,8 @@ namespace UnitTest : public RPITestFixture { protected: - Data::Asset m_testSrgAsset; + Data::Asset m_testSrgShaderAsset; + RHI::Ptr m_testSrgLayout; Data::Instance m_testSrg; Data::Asset m_bufferPoolAsset; Data::Asset m_shortBufferAsset; @@ -47,21 +48,18 @@ namespace UnitTest const RHI::ShaderInputBufferIndex m_indexOfBufferArray{ 2 }; const RHI::ShaderInputBufferIndex m_indexOfBufferInvalid{ 3 }; - Data::Asset CreateTestSrgAsset(const char* nameId) + RHI::Ptr CreateTestSrgLayout(const char* nameId) { - Data::Asset asset; - ShaderResourceGroupAssetCreator srgCreator; + RHI::Ptr srgLayout = RHI::ShaderResourceGroupLayout::Create(); - srgCreator.Begin(Uuid::CreateRandom(), Name(nameId)); - srgCreator.BeginAPI(RHI::Factory::Get().GetType()); - srgCreator.SetBindingSlot(0); - srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferA" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 1 }); - srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferB" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 2 }); - srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferArray" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 3, 4, 3 }); - srgCreator.EndAPI(); - srgCreator.End(asset); + srgLayout->SetName(Name(nameId)); + srgLayout->SetBindingSlot(0); + srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferA" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 1 }); + srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferB" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 1, 4, 2 }); + srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferArray" }, RHI::ShaderInputBufferAccess::Read, RHI::ShaderInputBufferType::Raw, 3, 4, 3 }); + srgLayout->Finalize(); - return asset; + return srgLayout; } Data::Asset CreateTestBufferPoolAsset() @@ -101,8 +99,9 @@ namespace UnitTest { RPITestFixture::SetUp(); - m_testSrgAsset = CreateTestSrgAsset("TestSrg"); - m_testSrg = ShaderResourceGroup::Create(m_testSrgAsset); + m_testSrgLayout = CreateTestSrgLayout("TestSrg"); + m_testSrgShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testSrgLayout); + m_testSrg = ShaderResourceGroup::Create(m_testSrgShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName()); m_bufferPoolAsset = CreateTestBufferPoolAsset(); m_shortBufferAsset = CreateTestBufferAsset("Short"); @@ -123,8 +122,9 @@ namespace UnitTest void TearDown() override { + m_testSrgLayout = nullptr; m_testSrg = nullptr; - m_testSrgAsset.Reset(); + m_testSrgShaderAsset.Reset(); m_shortBufferAsset.Reset(); m_mediumBufferAsset.Reset(); m_longBufferAsset.Reset(); @@ -198,7 +198,7 @@ namespace UnitTest // Test changing back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName()); EXPECT_TRUE(m_testSrg->SetBuffer(m_indexOfBufferA, nullptr)); m_testSrg->Compile(); @@ -224,7 +224,7 @@ namespace UnitTest // Test changing back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName()); EXPECT_TRUE(m_testSrg->SetBuffer(m_indexOfBufferArray, nullptr, 1)); m_testSrg->Compile(); @@ -252,7 +252,7 @@ namespace UnitTest // Test replacing just two buffers including changing one buffer back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName()); AZStd::vector> alternateBuffers = { m_mediumBuffer, nullptr }; @@ -398,7 +398,7 @@ namespace UnitTest // Test replacing just two buffer views including changing one back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testSrgShaderAsset, m_testSrgLayout->GetName()); AZStd::vector alternateBufferViews = { m_bufferViewB.get(), nullptr }; diff --git a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupConstantBufferTests.cpp b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupConstantBufferTests.cpp index 5712ce765c..6875f0aa33 100644 --- a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupConstantBufferTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupConstantBufferTests.cpp @@ -12,9 +12,7 @@ #include #include - -#include -#include +#include #include namespace UnitTest @@ -36,7 +34,8 @@ namespace UnitTest uint32_t m_uint = 0; }; - AZ::Data::Asset m_srgAsset; + AZ::Data::Asset m_shaderAsset; + AZ::RHI::Ptr m_srgLayout; AZ::Data::Instance m_srg; void SetUp() override @@ -44,17 +43,19 @@ namespace UnitTest RPITestFixture::SetUp(); // This provides the high-level metadata and low-level srg layout - m_srgAsset = BuildSrgAssetWithShaderConstants(); - ASSERT_TRUE(m_srgAsset.IsReady()); + m_srgLayout = BuildSrgLayoutWithShaderConstants(m_shaderAsset); + ASSERT_TRUE(m_srgLayout); + ASSERT_TRUE(m_shaderAsset.IsReady()); - m_srg = AZ::RPI::ShaderResourceGroup::Create(m_srgAsset); + m_srg = AZ::RPI::ShaderResourceGroup::Create(m_shaderAsset, AZ::RPI::DefaultSupervariantIndex, m_srgLayout->GetName()); ASSERT_TRUE(m_srg != nullptr); } void TearDown() override { m_srg.reset(); - m_srgAsset.Release(); + m_srgLayout = nullptr; + m_shaderAsset.Release(); RPITestFixture::TearDown(); } @@ -71,13 +72,13 @@ namespace UnitTest } } - AZ::Data::Asset BuildSrgAssetWithShaderConstants([[maybe_unused]] bool includeMetadata = true) + AZ::RHI::Ptr BuildSrgLayoutWithShaderConstants( + AZ::Data::Asset& shaderAsset, [[maybe_unused]] bool includeMetadata = true) { using namespace AZ; - RPI::ShaderResourceGroupAssetCreator srgAssetCreator; - srgAssetCreator.Begin(Uuid::CreateRandom(), Name{"TestSrg"}); - srgAssetCreator.BeginAPI(RHI::Factory::Get().GetType()); + AZ::RHI::Ptr srgLayout = RHI::ShaderResourceGroupLayout::Create(); + srgLayout->SetName(Name{"TestSrg"}); uint32_t offset = 0; uint32_t count; @@ -85,125 +86,125 @@ namespace UnitTest uint32_t registerIndex = 0; uint32_t sizeOfBool = 4; - srgAssetCreator.SetBindingSlot(0); + srgLayout->SetBindingSlot(0); // bool, binding index 0 count = 1; size = count * sizeOfBool; - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool"), offset, size, registerIndex }); offset += size; // bool2, binding index 1 count = 2; size = count * sizeOfBool; - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool2"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool2"), offset, size, registerIndex }); offset += size; // bool3, binding index 2 count = 3; size = count * sizeOfBool; - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool3"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool3"), offset, size, registerIndex }); offset += size; // bool4, binding index 3 count = 4; size = count * sizeOfBool; - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool4"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyBool4"), offset, size, registerIndex }); offset += size; // int, binding index 4 count = 1; size = count * sizeof(int32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt"), offset, size, registerIndex }); offset += size; // int2, binding index 5 count = 2; size = count * sizeof(int32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt2"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt2"), offset, size, registerIndex }); offset += size; // int3, binding index 6 count = 3; size = count * sizeof(int32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt3"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt3"), offset, size, registerIndex }); offset += size; // int4, binding index 7 count = 4; size = count * sizeof(int32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt4"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyInt4"), offset, size, registerIndex }); offset += size; // uint, binding index 8 count = 1; size = count * sizeof(uint32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint"), offset, size, registerIndex }); offset += size; // uint2, binding index 9 count = 2; size = count * sizeof(uint32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint2"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint2"), offset, size, registerIndex }); offset += size; // uint3, binding index 10 count = 3; size = count * sizeof(uint32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint3"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint3"), offset, size, registerIndex }); offset += size; // uint4, binding index 11 count = 4; size = count * sizeof(uint32_t); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint4"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyUint4"), offset, size, registerIndex }); offset += size; // float, binding index 12 count = 1; size = count * sizeof(float); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat"), offset, size, registerIndex }); offset += size; // float2, binding index 13 count = 2; size = count * sizeof(float); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat2"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat2"), offset, size, registerIndex }); offset += size; // float3, binding index 14 count = 3; size = count * sizeof(float); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat3"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat3"), offset, size, registerIndex }); offset += size; // float4, binding index 15 count = 4; size = count * sizeof(float); - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat4"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MyFloat4"), offset, size, registerIndex }); offset += size; // simple struct, binding index 16 // [GFX TODO][ATOM-111] This is not very fleshed out right now. We still need to do more to support structs, but at least I want to verify that SRG templatized setters and getters can work with structs count = 1; size = 8; - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MySimpleStruct"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MySimpleStruct"), offset, size, registerIndex }); offset += size; // array of 2 simple structs, binding index 17 // [GFX TODO][ATOM-111] This is not very fleshed out right now. We still need to do more to support structs, but at least I want to verify that SRG templatized setters and getters can work with structs count = 2; size = 16; - srgAssetCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MySimpleStructArray2"), offset, size, registerIndex }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{Name("MySimpleStructArray2"), offset, size, registerIndex }); offset += size; - srgAssetCreator.SetBindingSlot(0); + srgLayout->SetBindingSlot(0); - Data::Asset srgAsset; - EXPECT_TRUE(srgAssetCreator.EndAPI()); - EXPECT_TRUE(srgAssetCreator.End(srgAsset)); + EXPECT_TRUE(srgLayout->Finalize()); - return srgAsset; + shaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), srgLayout); + + return srgLayout; } }; diff --git a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupGeneralTests.cpp b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupGeneralTests.cpp index 8bdc3a5165..c584d217e8 100644 --- a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupGeneralTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupGeneralTests.cpp @@ -12,9 +12,9 @@ #include #include +#include #include -#include namespace UnitTest { @@ -25,73 +25,67 @@ namespace UnitTest : public RPITestFixture { protected: - Data::Asset m_testSrgAsset; + RHI::Ptr m_testSrgLayout; + Data::Asset m_testShaderAsset; - Data::Asset CreateTestSrgAsset(const char* nameId) + RHI::Ptr CreateTestSrgLayout(const char* nameId) { - Data::Asset asset; - ShaderResourceGroupAssetCreator srgCreator; + RHI::Ptr srgLayout = RHI::ShaderResourceGroupLayout::Create(); - srgCreator.Begin(Uuid::CreateRandom(), Name(nameId)); - srgCreator.BeginAPI(RHI::Factory::Get().GetType()); - srgCreator.SetBindingSlot(0); - srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferA" }, RHI::ShaderInputBufferAccess::ReadWrite, RHI::ShaderInputBufferType::Raw, 1, 4, 1 }); - srgCreator.AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferB" }, RHI::ShaderInputBufferAccess::ReadWrite, RHI::ShaderInputBufferType::Raw, 1, 4, 2 }); - srgCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageA" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 3 }); - srgCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageB" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 4 }); - srgCreator.AddShaderInput(RHI::ShaderInputSamplerDescriptor{ Name{ "MySamplerA" }, 1, 5 }); - srgCreator.AddShaderInput(RHI::ShaderInputSamplerDescriptor{ Name{ "MySamplerB" }, 1, 6 }); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "MyFloatA" }, 0, 4, 0 }); - srgCreator.AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "MyFloatB" }, 4, 4, 0 }); - srgCreator.EndAPI(); - srgCreator.End(asset); + srgLayout->SetName(Name(nameId)); + srgLayout->SetBindingSlot(0); + srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferA" }, RHI::ShaderInputBufferAccess::ReadWrite, RHI::ShaderInputBufferType::Raw, 1, 4, 1 }); + srgLayout->AddShaderInput(RHI::ShaderInputBufferDescriptor{ Name{ "MyBufferB" }, RHI::ShaderInputBufferAccess::ReadWrite, RHI::ShaderInputBufferType::Raw, 1, 4, 2 }); + srgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageA" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 3 }); + srgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageB" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 4 }); + srgLayout->AddShaderInput(RHI::ShaderInputSamplerDescriptor{ Name{ "MySamplerA" }, 1, 5 }); + srgLayout->AddShaderInput(RHI::ShaderInputSamplerDescriptor{ Name{ "MySamplerB" }, 1, 6 }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "MyFloatA" }, 0, 4, 0 }); + srgLayout->AddShaderInput(RHI::ShaderInputConstantDescriptor{ Name{ "MyFloatB" }, 4, 4, 0 }); + srgLayout->Finalize(); - return asset; + return srgLayout; } void SetUp() override { RPITestFixture::SetUp(); - m_testSrgAsset = CreateTestSrgAsset("TestSrg"); + m_testSrgLayout = CreateTestSrgLayout("TestSrg"); + m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testSrgLayout); } void TearDown() override { - m_testSrgAsset.Reset(); + m_testSrgLayout = nullptr; + m_testShaderAsset.Reset(); RPITestFixture::TearDown(); } }; - TEST_F(ShaderResourceGroupGeneralTests, TestCreateVsFindOrCreate) + TEST_F(ShaderResourceGroupGeneralTests, TestCreate) { - Data::Instance srgInstance1 = ShaderResourceGroup::FindOrCreate(m_testSrgAsset); - Data::Instance srgInstance2 = ShaderResourceGroup::FindOrCreate(m_testSrgAsset); - Data::Instance srgInstance3 = ShaderResourceGroup::Create(m_testSrgAsset); - Data::Instance srgInstance4 = ShaderResourceGroup::Create(m_testSrgAsset); + Data::Instance srgInstance3 = ShaderResourceGroup::Create(m_testShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName()); + Data::Instance srgInstance4 = ShaderResourceGroup::Create(m_testShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName()); - EXPECT_TRUE(srgInstance1); - EXPECT_TRUE(srgInstance2); EXPECT_TRUE(srgInstance3); EXPECT_TRUE(srgInstance4); - // Instances created via FindOrCreate should be the same object + // Instances created via Create should be the same object - EXPECT_EQ(srgInstance1, srgInstance2); - EXPECT_NE(srgInstance1, srgInstance3); - EXPECT_NE(srgInstance1, srgInstance4); EXPECT_NE(srgInstance3, srgInstance4); } TEST_F(ShaderResourceGroupGeneralTests, TestResourcePool) { - Data::Instance srgA_instance1 = ShaderResourceGroup::Create(m_testSrgAsset); - Data::Instance srgA_instance2 = ShaderResourceGroup::Create(m_testSrgAsset); + Data::Instance srgA_instance1 = ShaderResourceGroup::Create(m_testShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName()); + Data::Instance srgA_instance2 = ShaderResourceGroup::Create(m_testShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName()); - Data::Asset srgAssetB = CreateTestSrgAsset("TestSrgB"); - Data::Instance srgB_instance1 = ShaderResourceGroup::Create(srgAssetB); - Data::Instance srgB_instance2 = ShaderResourceGroup::Create(srgAssetB); + auto srgLayoutB = CreateTestSrgLayout("TestSrgB"); + auto shaderAssetB = CreateTestShaderAsset(Uuid::CreateRandom(), srgLayoutB); + Data::Instance srgB_instance1 = ShaderResourceGroup::Create(shaderAssetB, AZ::RPI::DefaultSupervariantIndex, srgLayoutB->GetName()); + Data::Instance srgB_instance2 = ShaderResourceGroup::Create(shaderAssetB, AZ::RPI::DefaultSupervariantIndex, srgLayoutB->GetName()); // All instances based on the same asset should have the same pool @@ -106,7 +100,7 @@ namespace UnitTest TEST_F(ShaderResourceGroupGeneralTests, TestLayoutWrapperFunctions) { - Data::Instance testSrg = ShaderResourceGroup::Create(m_testSrgAsset); + Data::Instance testSrg = ShaderResourceGroup::Create(m_testShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName()); EXPECT_TRUE(testSrg->GetLayout()); EXPECT_EQ(testSrg->FindShaderInputBufferIndex(Name{ "MyBufferA" }), testSrg->GetLayout()->FindShaderInputBufferIndex(Name{ "MyBufferA" })); diff --git a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupImageTests.cpp b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupImageTests.cpp index 57fa88d5a2..1e95bceec4 100644 --- a/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupImageTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/ShaderResourceGroup/ShaderResourceGroupImageTests.cpp @@ -12,9 +12,9 @@ #include #include +#include #include -#include namespace UnitTest { @@ -25,7 +25,8 @@ namespace UnitTest : public RPITestFixture { protected: - Data::Asset m_testSrgAsset; + RHI::Ptr m_testSrgLayout; + Data::Asset m_testShaderAsset; Data::Instance m_testSrg; Data::Instance m_whiteImage; Data::Instance m_blackImage; @@ -40,29 +41,27 @@ namespace UnitTest const RHI::ShaderInputImageIndex m_indexImageArray{ 2 }; const RHI::ShaderInputImageIndex m_indexImageInvalid{ 3 }; - Data::Asset CreateTestSrgAsset(const char* nameId) + RHI::Ptr CreateTestSrgLayout(const char* nameId) { - Data::Asset asset; - ShaderResourceGroupAssetCreator srgCreator; + RHI::Ptr srgLayout = RHI::ShaderResourceGroupLayout::Create(); - srgCreator.Begin(Uuid::CreateRandom(), Name(nameId)); - srgCreator.BeginAPI(RHI::Factory::Get().GetType()); - srgCreator.SetBindingSlot(0); - srgCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageA" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 1 }); - srgCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageB" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 2 }); - srgCreator.AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageArray" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 3, 3 }); - srgCreator.EndAPI(); - srgCreator.End(asset); + srgLayout->SetName(Name(nameId)); + srgLayout->SetBindingSlot(0); + srgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageA" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 1 }); + srgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageB" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 1, 2 }); + srgLayout->AddShaderInput(RHI::ShaderInputImageDescriptor{ Name{ "MyImageArray" }, RHI::ShaderInputImageAccess::Read, RHI::ShaderInputImageType::Image2D, 3, 3 }); + srgLayout->Finalize(); - return asset; + return srgLayout; } void SetUp() override { RPITestFixture::SetUp(); - m_testSrgAsset = CreateTestSrgAsset("TestSrg"); - m_testSrg = ShaderResourceGroup::Create(m_testSrgAsset); + m_testSrgLayout = CreateTestSrgLayout("TestSrg"); + m_testShaderAsset = CreateTestShaderAsset(Uuid::CreateRandom(), m_testSrgLayout); + m_testSrg = ShaderResourceGroup::Create(m_testShaderAsset, AZ::RPI::DefaultSupervariantIndex, m_testSrgLayout->GetName()); m_whiteImage = RPI::ImageSystemInterface::Get()->GetSystemImage(RPI::SystemImage::White); m_blackImage = RPI::ImageSystemInterface::Get()->GetSystemImage(RPI::SystemImage::Black); @@ -84,7 +83,8 @@ namespace UnitTest void TearDown() override { - m_testSrgAsset.Reset(); + m_testShaderAsset.Reset(); + m_testSrgLayout = nullptr; m_testSrg = nullptr; m_threeImages = AZStd::vector>(); @@ -155,7 +155,7 @@ namespace UnitTest // Test changing back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testShaderAsset, m_testSrgLayout->GetName()); EXPECT_TRUE(m_testSrg->SetImage(m_indexImageA, nullptr)); m_testSrg->Compile(); @@ -181,7 +181,7 @@ namespace UnitTest // Test changing back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testShaderAsset, m_testSrgLayout->GetName()); EXPECT_TRUE(m_testSrg->SetImage(m_indexImageArray, nullptr, 1)); m_testSrg->Compile(); @@ -209,7 +209,7 @@ namespace UnitTest // Test replacing just two images including changing one image back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testShaderAsset, m_testSrgLayout->GetName()); AZStd::vector> alternateImages = { m_blackImage, nullptr }; @@ -355,7 +355,7 @@ namespace UnitTest // Test replacing just two image views including changing one back to null... - ProcessQueuedSrgCompilations(m_testSrgAsset); + ProcessQueuedSrgCompilations(m_testShaderAsset, m_testSrgLayout->GetName()); AZStd::vector alternateImageViews = { m_imageViewB.get(), nullptr }; diff --git a/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake b/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake index 2fcae8be90..a8d3a0230d 100644 --- a/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake +++ b/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake @@ -35,7 +35,6 @@ set(FILES Include/Atom/RPI.Edit/Shader/ShaderSourceData.h Include/Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h - Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h Include/Atom/RPI.Edit/Shader/ShaderVariantTreeAssetCreator.h Source/RPI.Edit/Material/LuaMaterialFunctorSourceData.cpp Source/RPI.Edit/Material/MaterialTypeSourceData.cpp @@ -53,7 +52,6 @@ set(FILES Source/RPI.Edit/Shader/ShaderSourceData.cpp Source/RPI.Edit/Shader/ShaderVariantListSourceData.cpp Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp - Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp Source/RPI.Edit/Shader/ShaderVariantTreeAssetCreator.cpp Source/RPI.Edit/Common/AssetUtils.cpp Source/RPI.Edit/Common/AssetAliasesSourceData.cpp diff --git a/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake b/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake index a1d98bbd38..6461edd291 100644 --- a/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake +++ b/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake @@ -82,11 +82,8 @@ set(FILES Include/Atom/RPI.Public/Pass/Specific/SelectorPass.h Include/Atom/RPI.Public/Pass/Specific/SwapChainPass.h Include/Atom/RPI.Public/Shader/Shader.h - Include/Atom/RPI.Public/Shader/Shader2.h Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h - Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h Include/Atom/RPI.Public/Shader/ShaderVariant.h - Include/Atom/RPI.Public/Shader/ShaderVariant2.h Include/Atom/RPI.Public/Shader/ShaderReloadDebugTracker.h Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h Include/Atom/RPI.Public/Shader/ShaderResourceGroupPool.h @@ -160,9 +157,7 @@ set(FILES Source/RPI.Public/Pass/Specific/SelectorPass.cpp Source/RPI.Public/Pass/Specific/SwapChainPass.cpp Source/RPI.Public/Shader/Shader.cpp - Source/RPI.Public/Shader/Shader2.cpp Source/RPI.Public/Shader/ShaderVariant.cpp - Source/RPI.Public/Shader/ShaderVariant2.cpp Source/RPI.Public/Shader/ShaderReloadDebugTracker.cpp Source/RPI.Public/Shader/ShaderResourceGroup.cpp Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp diff --git a/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake b/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake index 3a4e1cacc6..9986f7ebae 100644 --- a/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake +++ b/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake @@ -79,21 +79,15 @@ set(FILES Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h Include/Atom/RPI.Reflect/Shader/ShaderAsset.h Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator.h - Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h - Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h Include/Atom/RPI.Reflect/Shader/ShaderInputContract.h Include/Atom/RPI.Reflect/Shader/ShaderOptionGroup.h Include/Atom/RPI.Reflect/Shader/ShaderOptionGroupLayout.h Include/Atom/RPI.Reflect/Shader/ShaderOutputContract.h Include/Atom/RPI.Reflect/Shader/ShaderOptionTypes.h - Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAsset.h - Include/Atom/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.h Include/Atom/RPI.Reflect/Shader/ShaderVariantKey.h Include/Atom/RPI.Reflect/Shader/ShaderVariantTreeAsset.h Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h - Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder.h - Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h Include/Atom/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.h Include/Atom/RPI.Reflect/System/AnyAsset.h Include/Atom/RPI.Reflect/System/AssetAliases.h @@ -155,18 +149,13 @@ set(FILES Source/RPI.Reflect/Shader/ShaderStageType.cpp Source/RPI.Reflect/Shader/ShaderAsset.cpp Source/RPI.Reflect/Shader/ShaderAssetCreator.cpp - Source/RPI.Reflect/Shader/ShaderAsset2.cpp - Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp Source/RPI.Reflect/Shader/ShaderInputContract.cpp Source/RPI.Reflect/Shader/ShaderOptionGroup.cpp Source/RPI.Reflect/Shader/ShaderOptionGroupLayout.cpp Source/RPI.Reflect/Shader/ShaderOutputContract.cpp - Source/RPI.Reflect/Shader/ShaderResourceGroupAsset.cpp - Source/RPI.Reflect/Shader/ShaderResourceGroupAssetCreator.cpp Source/RPI.Reflect/Shader/ShaderVariantKey.cpp Source/RPI.Reflect/Shader/ShaderVariantTreeAsset.cpp Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp - Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp Source/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.cpp Source/RPI.Reflect/System/AnyAsset.cpp Source/RPI.Reflect/System/AssetAliases.cpp diff --git a/Gems/Atom/RPI/Code/atom_rpi_tests_files.cmake b/Gems/Atom/RPI/Code/atom_rpi_tests_files.cmake index 2c8035a68b..a81442f330 100644 --- a/Gems/Atom/RPI/Code/atom_rpi_tests_files.cmake +++ b/Gems/Atom/RPI/Code/atom_rpi_tests_files.cmake @@ -29,6 +29,8 @@ set(FILES Tests/Common/RHI/Factory.h Tests/Common/RHI/Stubs.cpp Tests/Common/RHI/Stubs.h + Tests/Common/ShaderAssetTestUtils.cpp + Tests/Common/ShaderAssetTestUtils.h Tests/Image/StreamingImageTests.cpp Tests/Material/LuaMaterialFunctorTests.cpp Tests/Material/MaterialTypeAssetTests.cpp @@ -45,7 +47,6 @@ set(FILES Tests/Model/ModelTests.cpp Tests/Pass/PassTests.cpp Tests/Shader/ShaderTests.cpp - Tests/ShaderResourceGroup/ShaderResourceGroupAssetTests.cpp Tests/ShaderResourceGroup/ShaderResourceGroupBufferTests.cpp Tests/ShaderResourceGroup/ShaderResourceGroupConstantBufferTests.cpp Tests/ShaderResourceGroup/ShaderResourceGroupImageTests.cpp diff --git a/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt b/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt index 134f605200..07449fe59f 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt +++ b/Gems/Atom/Tools/MaterialEditor/Code/CMakeLists.txt @@ -113,6 +113,10 @@ ly_add_target( Gem::MaterialEditor.Document ) +# Add a 'builders' alias to allow the MaterialEditor root gem path to be added to the generated +# cmake_dependencies..assetprocessor.setreg to allow the asset scan folder for it to be added +ly_create_alias(NAME MaterialEditor.Builders NAMESPACE Gem) + # Add build dependency to Editor for the MaterialEditor application since # Editor opens up the MaterialEditor ly_add_dependencies(Editor Gem::MaterialEditor) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Linux.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Linux.cpp new file mode 100644 index 0000000000..6a83c8c6de --- /dev/null +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Linux.cpp @@ -0,0 +1,42 @@ +/* +* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates, or +* a third party where indicated. +* +* 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. +* +*/ + +#include +#include +#include + +namespace Platform +{ + void LoadPluginDependencies() + { + AZ_Warning("Material Editor", false, "LoadPluginDependencies() function is not implemented"); + } + + void ProcessInput(void* message) + { + AZ_Warning("Material Editor", false, "ProcessInput() function is not implemented"); + } + + AzFramework::NativeWindowHandle GetWindowHandle(WId winId) + { + AZ_Warning("Material Editor", false, "GetWindowHandle() function is not implemented"); + AZ_UNUSED(winId); + return nullptr; + } + + AzFramework::WindowSize GetClientAreaSize(AzFramework::NativeWindowHandle window) + { + AZ_Warning("Material Editor", false, "GetClientAreaSize() function is not implemented"); + AZ_UNUSED(window); + return AzFramework::WindowSize{1,1}; + } +} diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Traits_Linux.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Traits_Linux.h new file mode 100644 index 0000000000..6f4eee610a --- /dev/null +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Traits_Linux.h @@ -0,0 +1,15 @@ +/* +* 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. +* +*/ +#pragma once + +#define AZ_TRAIT_MATERIALEDITOR_EXT "" + diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Traits_Platform.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Traits_Platform.h new file mode 100644 index 0000000000..9cd502877d --- /dev/null +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/MaterialEditor_Traits_Platform.h @@ -0,0 +1,14 @@ +/* +* 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. +* +*/ +#pragma once + +#include diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/PAL_linux.cmake b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/PAL_linux.cmake index 70d49fdb2c..77d41d4561 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/PAL_linux.cmake +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/PAL_linux.cmake @@ -9,4 +9,4 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # -set(PAL_TRAIT_ATOM_MATERIAL_EDITOR_APPLICATION_SUPPORTED FALSE) +set(PAL_TRAIT_ATOM_MATERIAL_EDITOR_APPLICATION_SUPPORTED TRUE) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/platform_linux_files.cmake b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/platform_linux_files.cmake index 5714be5dfb..038a605109 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/platform_linux_files.cmake +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Platform/Linux/platform_linux_files.cmake @@ -10,4 +10,7 @@ # set(FILES + MaterialEditor_Traits_Platform.h + MaterialEditor_Traits_Linux.h + MaterialEditor_Linux.cpp ) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorBrowserInteractions.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorBrowserInteractions.cpp index 9b79bcb6d9..c4007616c5 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorBrowserInteractions.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialEditorBrowserInteractions.cpp @@ -30,7 +30,7 @@ #include #include -#include +#include #include #include diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.cpp index 72c8daa63c..70a4361409 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.cpp @@ -15,7 +15,7 @@ #include #include -#include +#include namespace MaterialEditor { diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.h index a75e856d83..dd31faef90 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/PerformanceMonitor/PerformanceMonitorWidget.h @@ -13,7 +13,7 @@ #pragma once #include -#include +#include namespace Ui { diff --git a/Gems/Atom/Tools/MaterialEditor/gem.json b/Gems/Atom/Tools/MaterialEditor/gem.json new file mode 100644 index 0000000000..5113effc0a --- /dev/null +++ b/Gems/Atom/Tools/MaterialEditor/gem.json @@ -0,0 +1,10 @@ +{ + "gem_name": "MaterialEditor", + "display_name": "Atom Material Editor", + "summary": "Editor for creating, modifying, and previewing materials", + "canonical_tags": [ + "Gem" + ], + "user_tags": [ + ] +} diff --git a/Gems/AtomLyIntegration/AtomBridge/Code/CMakeLists.txt b/Gems/AtomLyIntegration/AtomBridge/Code/CMakeLists.txt index 4df40e3d13..abc4dfb2c6 100644 --- a/Gems/AtomLyIntegration/AtomBridge/Code/CMakeLists.txt +++ b/Gems/AtomLyIntegration/AtomBridge/Code/CMakeLists.txt @@ -111,6 +111,7 @@ if(PAL_TRAIT_BUILD_HOST_TOOLS) Gem::AtomToolsFramework.Editor Gem::AtomViewportDisplayInfo Gem::AtomViewportDisplayIcons.Editor + Gem::MaterialEditor.Builders ) diff --git a/Gems/AtomLyIntegration/AtomBridge/Code/Source/Editor/AssetCollectionAsyncLoaderTestComponent.cpp b/Gems/AtomLyIntegration/AtomBridge/Code/Source/Editor/AssetCollectionAsyncLoaderTestComponent.cpp index 0f73828186..4ab24dac92 100644 --- a/Gems/AtomLyIntegration/AtomBridge/Code/Source/Editor/AssetCollectionAsyncLoaderTestComponent.cpp +++ b/Gems/AtomLyIntegration/AtomBridge/Code/Source/Editor/AssetCollectionAsyncLoaderTestComponent.cpp @@ -23,7 +23,6 @@ #include #include #include -#include namespace AZ { @@ -162,10 +161,6 @@ namespace AZ { return azrtti_typeid(); } - else if (extension == "azsrg") - { - return azrtti_typeid(); - } AZ_Error(AssetCollectionAsyncLoaderTestComponentName, false, "Do not know the asset type for file: %s", assetPath.c_str()); return {}; @@ -269,12 +264,6 @@ namespace AZ auto asset = m_assetCollectionAsyncLoader->GetAsset(assetPath); return (bool)asset && asset.GetId().IsValid() && asset.IsReady() && asset->GetTotalImageDataSize(); } - else if (assetType == azrtti_typeid()) - { - auto asset = m_assetCollectionAsyncLoader->GetAsset(assetPath); - return (bool)asset && asset.GetId().IsValid() && asset.IsReady() && !asset->GetName().IsEmpty(); - } - AZ_Error(AssetCollectionAsyncLoaderTestComponentName, false, "Can not handle asset type for assetPath: %s", assetPath.c_str()); return false; diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialSystemComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialSystemComponent.cpp index e9a81f2e9f..06530b53b2 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialSystemComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialSystemComponent.cpp @@ -151,6 +151,7 @@ namespace AZ m_openMaterialEditorAction->setShortcut(QKeySequence(Qt::Key_M)); m_openMaterialEditorAction->setCheckable(false); m_openMaterialEditorAction->setChecked(false); + m_openMaterialEditorAction->setIcon(QIcon(":/Menu/material_editor.svg")); QObject::connect( m_openMaterialEditorAction, &QAction::triggered, m_openMaterialEditorAction, [this]() { @@ -158,7 +159,7 @@ namespace AZ } ); - AzToolsFramework::EditorMenuRequestBus::Broadcast(&AzToolsFramework::EditorMenuRequestBus::Handler::AddMenuAction, "ToolMenu", m_openMaterialEditorAction); + AzToolsFramework::EditorMenuRequestBus::Broadcast(&AzToolsFramework::EditorMenuRequestBus::Handler::AddMenuAction, "ToolMenu", m_openMaterialEditorAction, true); } } diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp index e1c9026c74..3adcaa495b 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp @@ -25,12 +25,16 @@ namespace AZ void EditorMeshComponent::Reflect(AZ::ReflectContext* context) { BaseClass::Reflect(context); + EditorMeshStats::Reflect(context); if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) { + serializeContext->RegisterGenericType(); + serializeContext->Class() ->Version(2, ConvertToEditorRenderComponentAdapter<1>) ->Field("addMaterialComponentFlag", &EditorMeshComponent::m_addMaterialComponentFlag) + ->Field("meshStats", &EditorMeshComponent::m_stats) ; // This shouldn't be registered here, but is required to make a vector from EditorMeshComponentTypeId. This can be removed when one of the following happens: @@ -55,6 +59,8 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ButtonText, "Add Material Component") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorMeshComponent::AddEditorMaterialComponent) ->Attribute(AZ::Edit::Attributes::Visibility, &EditorMeshComponent::GetEditorMaterialComponentVisibility) + ->DataElement(AZ::Edit::UIHandlers::Default, &EditorMeshComponent::m_stats, "Mesh Stats", "") + ->Attribute(AZ::Edit::Attributes::AutoExpand, false) ; editContext->Class( @@ -204,6 +210,22 @@ namespace AZ void EditorMeshComponent::OnModelReady(const Data::Asset& /*modelAsset*/, const Data::Instance& /*model*/) { + const auto& lodAssets = m_controller.GetConfiguration().m_modelAsset->GetLodAssets(); + m_stats.m_meshStatsForLod.clear(); + m_stats.m_meshStatsForLod.reserve(lodAssets.size()); + for (const auto& lodAsset : lodAssets) + { + EditorMeshStatsForLod stats; + const auto& meshes = lodAsset->GetMeshes(); + stats.m_meshCount = meshes.size(); + for (const auto& mesh : meshes) + { + stats.m_vertCount += mesh.GetVertexCount(); + stats.m_triCount += mesh.GetIndexCount() / 3; + } + m_stats.m_meshStatsForLod.emplace_back(AZStd::move(stats)); + } + // Refresh the tree when the model loads to update UI based on the model. AzToolsFramework::ToolsApplicationEvents::Bus::Broadcast( &AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, @@ -216,6 +238,10 @@ namespace AZ // places it in a bad state, which happens in OnConfigurationChanged base function. // This is a bug with AssetManager [LYN-2249] auto temp = m_controller.m_configuration.m_modelAsset; + + m_stats.m_meshStatsForLod.swap({}); + SetDirty(); + return BaseClass::OnConfigurationChanged(); } } // namespace Render diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.h index 41ea80f8d1..3397540a92 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.h @@ -18,6 +18,7 @@ #include #include #include +#include namespace AZ { @@ -71,6 +72,9 @@ namespace AZ // Flag used for button placement bool m_addMaterialComponentFlag = false; + + // Stats for current mesh asset + EditorMeshStats m_stats; }; } // namespace Render } // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStats.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStats.cpp new file mode 100644 index 0000000000..0830b6d83f --- /dev/null +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStats.cpp @@ -0,0 +1,85 @@ +/* +* 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. +* +*/ + +#include +#include +#include + +#include +#include + +namespace AZ +{ + namespace Render + { + void EditorMeshStatsForLod::Reflect(ReflectContext* context) + { + if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) + { + serializeContext->Class() + ->Field("meshCount", &EditorMeshStatsForLod::m_meshCount) + ->Field("vertCount", &EditorMeshStatsForLod::m_vertCount) + ->Field("triCount", &EditorMeshStatsForLod::m_triCount) + ; + + if (AZ::EditContext* editContext = serializeContext->GetEditContext()) + { + editContext->Class("EditorMeshStatsForLod", "") + ->ClassElement(AZ::Edit::ClassElements::EditorData, "") + ->Attribute(AZ::Edit::Attributes::AutoExpand, true) + ->DataElement(AZ::Edit::UIHandlers::Default, &EditorMeshStatsForLod::m_meshCount, "Mesh Count", "") + ->Attribute(AZ::Edit::Attributes::ReadOnly, true) + ->DataElement(AZ::Edit::UIHandlers::Default, &EditorMeshStatsForLod::m_vertCount, "Vert Count", "") + ->Attribute(AZ::Edit::Attributes::ReadOnly, true) + ->DataElement(AZ::Edit::UIHandlers::Default, &EditorMeshStatsForLod::m_triCount, "Tri Count", "") + ->Attribute(AZ::Edit::Attributes::ReadOnly, true) + ; + } + } + } + + void EditorMeshStats::Reflect(ReflectContext* context) + { + EditorMeshStatsForLod::Reflect(context); + + if (auto jsonContext = azrtti_cast(context)) + { + jsonContext->Serializer()->HandlesType(); + } + + if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) + { + serializeContext->Class() + ->Field("meshStatsForLod", &EditorMeshStats::m_meshStatsForLod) + ; + + if (AZ::EditContext* editContext = serializeContext->GetEditContext()) + { + editContext->Class( + "EditorMeshStats", "") + ->ClassElement(AZ::Edit::ClassElements::EditorData, "") + ->DataElement(AZ::Edit::UIHandlers::Default, &EditorMeshStats::m_meshStatsForLod, "Mesh Stats", "") + ->Attribute(AZ::Edit::Attributes::NameLabelOverride, "") + ->Attribute(AZ::Edit::Attributes::ContainerCanBeModified, false) + ->Attribute(AZ::Edit::Attributes::AutoExpand, true) + ->Attribute(AZ::Edit::Attributes::IndexedChildNameLabelOverride, &EditorMeshStats::GetLodLabel) + ; + } + } + } + + AZStd::string EditorMeshStats::GetLodLabel(int index) const + { + return AZStd::string::format("LOD %d", index); + } + } // namespace Render +} // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStats.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStats.h new file mode 100644 index 0000000000..6bdce7c008 --- /dev/null +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStats.h @@ -0,0 +1,47 @@ +/* +* 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. +* +*/ + +#pragma once + +#include +#include +#include +#include + +namespace AZ +{ + namespace Render + { + struct EditorMeshStatsForLod final + { + AZ_RTTI(EditorMeshStatsForLod, "{626E3AEB-0F7A-4777-BAF1-2BBA8C1857ED}"); + AZ_CLASS_ALLOCATOR(EditorMeshStatsForLod, SystemAllocator, 0); + + static void Reflect(ReflectContext* context); + + AZ::u32 m_meshCount = 0; + AZ::u32 m_vertCount = 0; + AZ::u32 m_triCount = 0; + }; + + struct EditorMeshStats final + { + AZ_RTTI(EditorMeshStats, "{68D0D3EF-17BB-46EA-B98F-51355402CCD6}"); + AZ_CLASS_ALLOCATOR(EditorMeshStats, SystemAllocator, 0); + + static void Reflect(ReflectContext* context); + AZStd::string GetLodLabel(int index) const; + + AZStd::vector m_meshStatsForLod; + }; + } // namespace Render +} // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStatsSerializer.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStatsSerializer.cpp new file mode 100644 index 0000000000..ad32c745be --- /dev/null +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStatsSerializer.cpp @@ -0,0 +1,54 @@ +/* + * 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. + * + */ + +#include +#include + +namespace AZ +{ + namespace Render + { + AZ_CLASS_ALLOCATOR_IMPL(JsonEditorMeshStatsSerializer, AZ::SystemAllocator, 0); + + JsonSerializationResult::Result JsonEditorMeshStatsSerializer::Load( + [[maybe_unused]] void* outputValue, + [[maybe_unused]] const Uuid& outputValueTypeId, + [[maybe_unused]] const rapidjson::Value& inputValue, + JsonDeserializerContext& context) + { + namespace JSR = JsonSerializationResult; + + JSR::ResultCode result(JSR::Tasks::ReadField); + + return context.Report( + result, + "Successfully loaded EditorMeshStats information."); + } + + JsonSerializationResult::Result JsonEditorMeshStatsSerializer::Store( + [[maybe_unused]] rapidjson::Value& outputValue, + [[maybe_unused]] const void* inputValue, + [[maybe_unused]] const void* defaultValue, + [[maybe_unused]] const Uuid& valueTypeId, + JsonSerializerContext& context) + { + namespace JSR = JsonSerializationResult; + + JSR::ResultCode result(JSR::Tasks::WriteValue); + + return context.Report( + result, + "Successfully stored EditorMeshStats information."); + } + + } // namespace Render +} // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStatsSerializer.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStatsSerializer.h new file mode 100644 index 0000000000..733fc3dc97 --- /dev/null +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshStatsSerializer.h @@ -0,0 +1,40 @@ +/* + * 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. + * + */ + +#pragma once + +#include +#include + +namespace AZ +{ + namespace Render + { + // Custom JSON serializer for Mesh Stats + // Mesh stats should not be serialized with EditorMeshComponent, because they are calculated based on active model, + // so the serializer simply provides empty load/store functions + class JsonEditorMeshStatsSerializer : public BaseJsonSerializer + { + public: + AZ_RTTI(JsonEditorMeshStatsSerializer, "{571290F5-98C9-45AE-BC8C-E40968B5BA6F}", BaseJsonSerializer); + AZ_CLASS_ALLOCATOR_DECL; + + JsonSerializationResult::Result Load( + void* outputValue, const Uuid& outputValueTypeId, const rapidjson::Value& inputValue, + JsonDeserializerContext& context) override; + + JsonSerializationResult::Result Store( + rapidjson::Value& outputValue, const void* inputValue, const void* defaultValue, const Uuid& valueTypeId, + JsonSerializerContext& context) override; + }; + } // namespace Render +} // namespace AZ diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/atomlyintegration_commonfeatures_editor_files.cmake b/Gems/AtomLyIntegration/CommonFeatures/Code/atomlyintegration_commonfeatures_editor_files.cmake index 020f9014aa..3390529bc6 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/atomlyintegration_commonfeatures_editor_files.cmake +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/atomlyintegration_commonfeatures_editor_files.cmake @@ -52,8 +52,12 @@ set(FILES Source/Material/MaterialThumbnail.h Source/Mesh/EditorMeshComponent.h Source/Mesh/EditorMeshComponent.cpp + Source/Mesh/EditorMeshStats.h + Source/Mesh/EditorMeshStats.cpp Source/Mesh/EditorMeshSystemComponent.cpp Source/Mesh/EditorMeshSystemComponent.h + Source/Mesh/EditorMeshStatsSerializer.cpp + Source/Mesh/EditorMeshStatsSerializer.h Source/Mesh/MeshThumbnail.h Source/Mesh/MeshThumbnail.cpp Source/OcclusionCullingPlane/EditorOcclusionCullingPlaneComponent.h diff --git a/Gems/Camera/Code/Source/CameraEditorSystemComponent.cpp b/Gems/Camera/Code/Source/CameraEditorSystemComponent.cpp index 9b6202b6c6..33290b9cfe 100644 --- a/Gems/Camera/Code/Source/CameraEditorSystemComponent.cpp +++ b/Gems/Camera/Code/Source/CameraEditorSystemComponent.cpp @@ -61,6 +61,7 @@ namespace Camera void CameraEditorSystemComponent::Activate() { + AzToolsFramework::EditorContextMenuBus::Handler::BusConnect(); AzToolsFramework::EditorEvents::Bus::Handler::BusConnect(); Camera::EditorCameraSystemRequestBus::Handler::BusConnect(); Camera::CameraViewRegistrationRequestsBus::Handler::BusConnect(); @@ -71,6 +72,7 @@ namespace Camera Camera::CameraViewRegistrationRequestsBus::Handler::BusDisconnect(); Camera::EditorCameraSystemRequestBus::Handler::BusDisconnect(); AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusDisconnect(); } void CameraEditorSystemComponent::PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2&, int flags) diff --git a/Gems/Camera/Code/Source/CameraEditorSystemComponent.h b/Gems/Camera/Code/Source/CameraEditorSystemComponent.h index ec361c1afd..44f23f38e6 100644 --- a/Gems/Camera/Code/Source/CameraEditorSystemComponent.h +++ b/Gems/Camera/Code/Source/CameraEditorSystemComponent.h @@ -15,6 +15,7 @@ #include #include +#include #include "CameraViewRegistrationBus.h" @@ -25,6 +26,7 @@ namespace Camera , private AzToolsFramework::EditorEvents::Bus::Handler , private EditorCameraSystemRequestBus::Handler , private CameraViewRegistrationRequestsBus::Handler + , private AzToolsFramework::EditorContextMenuBus::Handler { public: AZ_COMPONENT(CameraEditorSystemComponent, "{769802EB-722A-4F89-A475-DA396DA1FDCC}"); @@ -40,9 +42,13 @@ namespace Camera ////////////////////////////////////////////////////////////////////////// private: + ////////////////////////////////////////////////////////////////////////// + // AzToolsFramework::EditorContextMenuBus + void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) override; + ////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////////////////////////////////// // AzToolsFramework::EditorEvents - void PopulateEditorGlobalContextMenu(QMenu *menu, const AZ::Vector2& point, int flags) override; void NotifyRegisterViews() override; ////////////////////////////////////////////////////////////////////////// diff --git a/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.cpp index 2e0ca16af2..633cb5ed1d 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/Components/SimpleMotionComponent.cpp @@ -103,9 +103,7 @@ namespace EMotionFX ->Attribute("Hidden", AZ::Edit::Attributes::PropertyHidden) ->VirtualProperty("PlayTime", "GetPlayTime", "PlayTime") ->Event("Motion", &SimpleMotionComponentRequestBus::Events::Motion) - ->Attribute(AZ::Script::Attributes::Ignore, true) ->Event("GetMotion", &SimpleMotionComponentRequestBus::Events::GetMotion) - ->Attribute(AZ::Script::Attributes::Ignore, true) ->VirtualProperty("Motion", "GetMotion", "Motion") ->Event("BlendInTime", &SimpleMotionComponentRequestBus::Events::BlendInTime) ->Event("GetBlendInTime", &SimpleMotionComponentRequestBus::Events::GetBlendInTime) diff --git a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp index 4b463958af..ee8a0f7821 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp @@ -70,7 +70,6 @@ namespace EMotionFX ->Attribute("Hidden", AZ::Edit::Attributes::PropertyHidden) ->VirtualProperty("PreviewInEditor", "GetPreviewInEditor", "SetPreviewInEditor") ->Event("GetAssetDuration", &EditorSimpleMotionComponentRequestBus::Events::GetAssetDuration) - ->Attribute(AZ::Script::Attributes::Ignore, true) ; behaviorContext->Class() diff --git a/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp index 8e68c8cb44..61a5e89d80 100644 --- a/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/System/SystemComponent.cpp @@ -891,6 +891,9 @@ namespace EMotionFX emotionFXWindowOptions.detachedWindow = true; #endif emotionFXWindowOptions.optionalMenuText = "Animation Editor"; + emotionFXWindowOptions.showOnToolsToolbar = true; + emotionFXWindowOptions.toolbarIcon = ":/Menu/emfx_editor.svg"; + EditorRequests::Bus::Broadcast(&EditorRequests::RegisterViewPane, EMStudio::MainWindow::GetEMotionFXPaneName(), LyViewPane::CategoryTools, emotionFXWindowOptions, windowCreationFunc); } diff --git a/Gems/LandscapeCanvas/Code/Source/LandscapeCanvasSystemComponent.cpp b/Gems/LandscapeCanvas/Code/Source/LandscapeCanvasSystemComponent.cpp index 72f7a65966..9e0129c6fe 100644 --- a/Gems/LandscapeCanvas/Code/Source/LandscapeCanvasSystemComponent.cpp +++ b/Gems/LandscapeCanvas/Code/Source/LandscapeCanvasSystemComponent.cpp @@ -146,6 +146,9 @@ namespace LandscapeCanvas { AzToolsFramework::ViewPaneOptions options; options.paneRect = QRect(100, 100, 1280, 1024); + options.showOnToolsToolbar = true; + options.toolbarIcon = ":/Menu/landscape_canvas_editor.svg"; + AzToolsFramework::RegisterViewPane(LyViewPane::LandscapeCanvas, LyViewPane::CategoryTools, options); } diff --git a/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp index 931ec8041e..ad5c2e499e 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Scripting/TagComponent.cpp @@ -86,7 +86,6 @@ namespace LmbrCentral { behaviorContext->Class("Tag Helper") ->Method("Get Entities by Tag", &TagComponentBehaviorHelper::FindTaggedEntities) - ->Attribute(AZ::Script::Attributes::Ignore, 0) ->Attribute(AZ::Script::Attributes::Category, "Gameplay/Tag") ->Attribute(AZ::ScriptCanvasAttributes::FloatingFunction, 0) ; diff --git a/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.cpp b/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.cpp index c0e9b7aaac..19a47efdcd 100644 --- a/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.cpp +++ b/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.cpp @@ -107,6 +107,7 @@ namespace LyShineEditor void LyShineEditorSystemComponent::Activate() { AzToolsFramework::EditorEventsBus::Handler::BusConnect(); + LyShine::LyShineRequestBus::Handler::BusConnect(); } //////////////////////////////////////////////////////////////////////////////////////////////////// @@ -119,6 +120,7 @@ namespace LyShineEditor CUiAnimViewSequenceManager::Destroy(); } + LyShine::LyShineRequestBus::Handler::BusDisconnect(); AzToolsFramework::EditorEventsBus::Handler::BusDisconnect(); } @@ -151,6 +153,8 @@ namespace LyShineEditor opt.isPreview = true; opt.paneRect = QRect(x, y, (int)editorWidth, (int)editorHeight); opt.isDeletable = true; // we're in a plugin; make sure we can be deleted + opt.showOnToolsToolbar = true; + opt.toolbarIcon = ":/Menu/ui_editor.svg"; // opt.canHaveMultipleInstances = true; // uncomment this when CUiAnimViewSequenceManager::CanvasUnloading supports multiple canvases AzToolsFramework::RegisterViewPane(LyViewPane::UiEditor, LyViewPane::CategoryTools, opt); @@ -191,4 +195,17 @@ namespace LyShineEditor } return AzToolsFramework::AssetBrowser::SourceFileDetails(); } + + //////////////////////////////////////////////////////////////////////////////////////////////// + void LyShineEditorSystemComponent::EditUICanvas([[maybe_unused]] const AZStd::string_view& canvasPath) + { + AzToolsFramework::OpenViewPane(LyViewPane::UiEditor); + AZStd::string stringPath = canvasPath; + + if (!stringPath.empty()) + { + QString absoluteName = stringPath.c_str(); + UiEditorDLLBus::Broadcast(&UiEditorDLLInterface::OpenSourceCanvasFile, absoluteName); + } + } } diff --git a/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.h b/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.h index d37fc83735..f389c4c2f5 100644 --- a/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.h +++ b/Gems/LyShine/Code/Editor/LyShineEditorSystemComponent.h @@ -15,6 +15,7 @@ #include #include #include +#include namespace LyShineEditor { @@ -22,6 +23,7 @@ namespace LyShineEditor : public AZ::Component , protected AzToolsFramework::EditorEvents::Bus::Handler , protected AzToolsFramework::AssetBrowser::AssetBrowserInteractionNotificationBus::Handler + , protected LyShine::LyShineRequestBus::Handler { public: AZ_COMPONENT(LyShineEditorSystemComponent, "{64D08A3F-A682-4CAF-86C1-DA91638494BA}"); @@ -55,5 +57,10 @@ namespace LyShineEditor void AddSourceFileOpeners(const char* fullSourceFileName, const AZ::Uuid& /*sourceUUID*/, AzToolsFramework::AssetBrowser::SourceFileOpenerList& openers) override; AzToolsFramework::AssetBrowser::SourceFileDetails GetSourceFileDetails(const char* fullSourceFileName) override; //////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////// + // LyShineRequestBus interface implementation + void EditUICanvas(const AZStd::string_view& canvasPath) override; + //////////////////////////////////////////////////////////////////////// }; } diff --git a/Gems/LyShine/Code/Include/LyShine/LyShineBus.h b/Gems/LyShine/Code/Include/LyShine/LyShineBus.h index 1b7b81f32d..5b8fc4889d 100644 --- a/Gems/LyShine/Code/Include/LyShine/LyShineBus.h +++ b/Gems/LyShine/Code/Include/LyShine/LyShineBus.h @@ -13,6 +13,7 @@ #pragma once #include +#include namespace LyShine { @@ -24,6 +25,8 @@ namespace LyShine static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; // Public functions + + virtual void EditUICanvas(const AZStd::string_view&) {}; }; using LyShineRequestBus = AZ::EBus; } // namespace LyShine diff --git a/Gems/LyShine/Code/Source/Draw2d.cpp b/Gems/LyShine/Code/Source/Draw2d.cpp index 6feb47419d..527f7980cc 100644 --- a/Gems/LyShine/Code/Source/Draw2d.cpp +++ b/Gems/LyShine/Code/Source/Draw2d.cpp @@ -123,7 +123,7 @@ void CDraw2d::OnBootstrapSceneReady([[maybe_unused]] AZ::RPI::Scene* bootstrapSc static const char textureIndexName[] = "m_texture"; static const char worldToProjIndexName[] = "m_worldToProj"; AZ::Data::Instance drawSrg = m_dynamicDraw->NewDrawSrg(); - const AZ::RHI::ShaderResourceGroupLayout* layout = drawSrg->GetAsset()->GetLayout(); + const AZ::RHI::ShaderResourceGroupLayout* layout = drawSrg->GetLayout(); m_shaderData.m_imageInputIndex = layout->FindShaderInputImageIndex(AZ::Name(textureIndexName)); AZ_Error("Draw2d", m_shaderData.m_imageInputIndex.IsValid(), "Failed to find shader input constant %s.", textureIndexName); diff --git a/Gems/LyShine/Code/Source/UiRenderer.cpp b/Gems/LyShine/Code/Source/UiRenderer.cpp index 57acbed5d5..6971aa3fc9 100644 --- a/Gems/LyShine/Code/Source/UiRenderer.cpp +++ b/Gems/LyShine/Code/Source/UiRenderer.cpp @@ -151,7 +151,7 @@ void UiRenderer::CacheShaderData(const AZ::RHI::Ptr static const char worldToProjIndexName[] = "m_worldToProj"; static const char isClampIndexName[] = "m_isClamp"; AZ::Data::Instance drawSrg = dynamicDraw->NewDrawSrg(); - const AZ::RHI::ShaderResourceGroupLayout* layout = drawSrg->GetAsset()->GetLayout(); + const AZ::RHI::ShaderResourceGroupLayout* layout = drawSrg->GetLayout(); m_uiShaderData.m_imageInputIndex = layout->FindShaderInputImageIndex(AZ::Name(textureIndexName)); AZ_Error(LogName, m_uiShaderData.m_imageInputIndex.IsValid(), "Failed to find shader input constant %s.", textureIndexName); diff --git a/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp b/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp index 9d436f8a57..07212cad29 100644 --- a/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp +++ b/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp @@ -15,6 +15,7 @@ #include #include #include +#include //////////////////////////////////////////////////////////////////////////////////////////////////// //! UiCanvasAssetRefNotificationBus Behavior context handler class @@ -177,7 +178,10 @@ void UiCanvasAssetRefComponent::Reflect(AZ::ReflectContext* context) editInfo->DataElement("SimpleAssetRef", &UiCanvasAssetRefComponent::m_canvasAssetRef, "Canvas pathname", "The pathname of the canvas.") - ->Attribute("BrowseIcon", ":/stylesheet/img/UI20/browse-edit-select-files.svg"); + ->Attribute("BrowseIcon", ":/stylesheet/img/UI20/browse-edit-select-files.svg") + ->Attribute("EditButton", "") + ->Attribute("EditDescription", "Open in UI Editor") + ->Attribute("EditCallback", &UiCanvasAssetRefComponent::LaunchUIEditor); editInfo->DataElement(AZ::Edit::UIHandlers::CheckBox, &UiCanvasAssetRefComponent::m_isAutoLoad, "Load automatically", "When checked, the canvas is loaded when this component is activated.") ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ_CRC("RefreshEntireTree", 0xefbc823c)); @@ -209,6 +213,12 @@ void UiCanvasAssetRefComponent::Reflect(AZ::ReflectContext* context) // PROTECTED MEMBER FUNCTIONS //////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////////////////////////// +void UiCanvasAssetRefComponent::LaunchUIEditor([[maybe_unused]] const AZ::Data::AssetId& assetId, const AZ::Data::AssetType&) +{ + LyShine::LyShineRequestBus::Broadcast(&LyShine::LyShineRequests::EditUICanvas, GetCanvasPathname()); +} + //////////////////////////////////////////////////////////////////////////////////////////////////// void UiCanvasAssetRefComponent::Activate() { diff --git a/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.h b/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.h index 9d441975b4..9d0e5c405e 100644 --- a/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.h +++ b/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.h @@ -69,6 +69,8 @@ public: // static member functions protected: // member functions + void LaunchUIEditor(const AZ::Data::AssetId& assetId, const AZ::Data::AssetType&); + // AZ::Component void Activate() override; void Deactivate() override; diff --git a/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.cpp b/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.cpp index 6aaf45b184..a08d566d79 100644 --- a/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.cpp +++ b/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.cpp @@ -93,7 +93,7 @@ namespace PhysX } } - void ConfigStringLineEditCtrl::SetForbiddenStrings(const AZStd::unordered_set& forbiddenStrings) + void ConfigStringLineEditCtrl::SetForbiddenStrings(const UniqueStringContainer::StringSet& forbiddenStrings) { m_forbiddenStrings = forbiddenStrings; } @@ -122,7 +122,7 @@ namespace PhysX void ConfigStringLineEditValidator::OnEditStart(AZ::Crc32 stringGroupId , const AZStd::string& stringToEdit - , const AZStd::unordered_set& forbiddenStrings + , const UniqueStringContainer::StringSet& forbiddenStrings , int stringMaxLength , bool removeEditedString) { @@ -219,6 +219,14 @@ namespace PhysX GUI->setMaxLen(maxLen); } } + else if (attrib == AZ::Edit::Attributes::ReadOnly) + { + bool isReadOnly = false; + if (attrValue->Read(isReadOnly)) + { + GUI->setEnabled(!isReadOnly); + } + } else if (attrib == Physics::MaterialConfiguration::s_stringGroup) { AZ::Crc32 uniqueGroup; @@ -229,23 +237,23 @@ namespace PhysX } else if (attrib == Physics::MaterialConfiguration::s_forbiddenStringSet) { - AZStd::unordered_set forbiddenStringsUnorderedSet; + UniqueStringContainer::StringSet forbiddenStringsUnorderedSet; AZStd::set forbiddenStringsSet; AZStd::vector forbiddenStringsVector; - if (attrValue->Read>(forbiddenStringsUnorderedSet)) + if (attrValue->Read(forbiddenStringsUnorderedSet)) { GUI->SetForbiddenStrings(forbiddenStringsUnorderedSet); } else if (attrValue->Read>(forbiddenStringsSet)) { - forbiddenStringsUnorderedSet = AZStd::unordered_set(forbiddenStringsSet.begin() + forbiddenStringsUnorderedSet = UniqueStringContainer::StringSet(forbiddenStringsSet.begin() , forbiddenStringsSet.end()); GUI->SetForbiddenStrings(forbiddenStringsUnorderedSet); } else if (attrValue->Read>(forbiddenStringsVector)) { - forbiddenStringsUnorderedSet = AZStd::unordered_set(forbiddenStringsVector.begin() + forbiddenStringsUnorderedSet = UniqueStringContainer::StringSet(forbiddenStringsVector.begin() , forbiddenStringsVector.end()); GUI->SetForbiddenStrings(forbiddenStringsUnorderedSet); } diff --git a/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.h b/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.h index e672a9afd8..f9e7b752ec 100644 --- a/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.h +++ b/Gems/PhysX/Code/Editor/ConfigStringLineEditCtrl.h @@ -47,7 +47,7 @@ namespace PhysX void OnEditStart(AZ::Crc32 stringGroupId , const AZStd::string& stringToEdit - , const AZStd::unordered_set& forbiddenStrings + , const UniqueStringContainer::StringSet& forbiddenStrings , int stringMaxLength , bool removeEditedString = true); @@ -62,7 +62,7 @@ namespace PhysX private: AZ::Crc32 m_currStringGroup = s_groupStringNotUnique; ///< Group of string field undergoing edit. int m_currStringMaxLen = s_qtLineEditMaxLen; ///< Max length of string field undergoing edit. - AZStd::unordered_set m_forbiddenStrings; ///< Value of string edit widget cannot be any of these strings. + UniqueStringContainer::StringSet m_forbiddenStrings; ///< Value of string edit widget cannot be any of these strings. UniqueStringContainer m_uniqueStringContainer; ///< Collection of groups of unique strings. Serves for validation and fixing of string input. }; @@ -79,7 +79,7 @@ namespace PhysX , ConfigStringLineEditValidator* validator = nullptr); virtual ~ConfigStringLineEditCtrl(); - void SetForbiddenStrings(const AZStd::unordered_set& forbiddenStrings); + void SetForbiddenStrings(const UniqueStringContainer::StringSet& forbiddenStrings); void SetUniqueGroup(AZ::Crc32 uniqueGroup); AZStd::string Value() const; @@ -92,7 +92,7 @@ namespace PhysX protected: void ConnectWidgets() override; - AZStd::unordered_set m_forbiddenStrings; ///< Value of this line edit ctrl cannot be any of these forbidden strings. + UniqueStringContainer::StringSet m_forbiddenStrings; ///< Value of this line edit ctrl cannot be any of these forbidden strings. ConfigStringLineEditValidator* m_pValidator = nullptr; ///< Validator for line edit widget. AZ::Crc32 m_uniqueGroup = ConfigStringLineEditValidator::s_groupStringNotUnique; ///< String group in which line edit value must remain unique. }; diff --git a/Gems/PhysX/Code/Editor/MaterialIdWidget.cpp b/Gems/PhysX/Code/Editor/MaterialIdWidget.cpp index 44787ddd20..30db8aa76d 100644 --- a/Gems/PhysX/Code/Editor/MaterialIdWidget.cpp +++ b/Gems/PhysX/Code/Editor/MaterialIdWidget.cpp @@ -15,12 +15,12 @@ #include +#include + namespace PhysX { namespace Editor { - static const char* const DefaultPhysicsMaterialLabel = ""; - AZ::u32 MaterialIdWidget::GetHandlerName() const { return Physics::Edit::MaterialIdSelector; @@ -74,7 +74,7 @@ namespace PhysX auto lockToDefault = [gui]() { - gui->addItem(DefaultPhysicsMaterialLabel); + gui->addItem(QLatin1String(Physics::DefaultPhysicsMaterialLabel.data(), Physics::DefaultPhysicsMaterialLabel.size())); gui->setCurrentIndex(0); return false; }; @@ -103,7 +103,7 @@ namespace PhysX // Add default physics material first m_libraryIds.push_back(Physics::MaterialId()); - gui->addItem(DefaultPhysicsMaterialLabel); + gui->addItem(QLatin1String(Physics::DefaultPhysicsMaterialLabel.data(), Physics::DefaultPhysicsMaterialLabel.size())); for (const auto& material : materials) { diff --git a/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.cpp b/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.cpp index b28bf6ab4a..fff13d2f39 100644 --- a/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.cpp +++ b/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.cpp @@ -134,6 +134,7 @@ namespace PhysX void EditorSystemComponent::Activate() { Physics::EditorWorldBus::Handler::BusConnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusConnect(); m_onMaterialLibraryLoadErrorEventHandler = AzPhysics::SystemEvents::OnMaterialLibraryLoadErrorEvent::Handler( [this]([[maybe_unused]] AzPhysics::SystemEvents::MaterialLibraryLoadErrorType error) @@ -168,6 +169,7 @@ namespace PhysX { AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusDisconnect(); AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusDisconnect(); Physics::EditorWorldBus::Handler::BusDisconnect(); if (auto* physicsSystem = AZ::Interface::Get()) diff --git a/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.h b/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.h index 4bd11a951f..8105709244 100644 --- a/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.h +++ b/Gems/PhysX/Code/Editor/Source/Components/EditorSystemComponent.h @@ -15,6 +15,7 @@ #include #include #include +#include #include namespace AzPhysics @@ -32,6 +33,7 @@ namespace PhysX , public Physics::EditorWorldBus::Handler , private AzToolsFramework::EditorEntityContextNotificationBus::Handler , private AzToolsFramework::EditorEvents::Bus::Handler + , private AzToolsFramework::EditorContextMenuBus::Handler { public: AZ_COMPONENT(EditorSystemComponent, "{560F08DC-94F5-4D29-9AD4-CDFB3B57C654}"); @@ -62,8 +64,10 @@ namespace PhysX void OnStartPlayInEditorBegin() override; void OnStopPlayInEditor() override; - // AztoolsFramework::EditorEvents::Bus::Handler + // AztoolsFramework::EditorContextMenuBus::Handler void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) override; + + // AztoolsFramework::EditorEvents::Bus::Handler void NotifyRegisterViews() override; AZStd::optional> RetrieveDefaultMaterialLibrary(); diff --git a/Gems/PhysX/Code/Editor/UniqueStringContainer.cpp b/Gems/PhysX/Code/Editor/UniqueStringContainer.cpp index 6482624dc4..1d92471919 100644 --- a/Gems/PhysX/Code/Editor/UniqueStringContainer.cpp +++ b/Gems/PhysX/Code/Editor/UniqueStringContainer.cpp @@ -23,7 +23,7 @@ namespace PhysX StringGroups::iterator stringGroupsIter = m_stringGroups.find(stringGroupId); if (stringGroupsIter == m_stringGroups.end()) { - m_stringGroups.emplace(stringGroupId, AZStd::unordered_set()); + m_stringGroups.emplace(stringGroupId, StringSet()); } m_stringGroups[stringGroupId].insert(stringIn); } @@ -31,7 +31,7 @@ namespace PhysX AZStd::string UniqueStringContainer::GetUniqueString(AZ::Crc32 stringGroupId , const AZStd::string& stringIn , AZ::u64 maxStringLength - , const AZStd::unordered_set& forbiddenStrings) const + , const StringSet& forbiddenStrings) const { StringGroups::const_iterator stringGroupsIter = m_stringGroups.find(stringGroupId); @@ -45,7 +45,7 @@ namespace PhysX } AZStd::string stringOut; - const AZStd::unordered_set& stringGroup = (stringGroupsIter == m_stringGroups.end())? AZStd::unordered_set():stringGroupsIter->second; + const StringSet& stringGroup = (stringGroupsIter == m_stringGroups.end())? StringSet():stringGroupsIter->second; // Attempts to append a post-fix value, e.g. "_1" etc., to the original string so it is unique. // A unique post-fix index can be found by iterating total number of invalid string plus 1. @@ -86,8 +86,8 @@ namespace PhysX return true; } - const AZStd::unordered_set& stringGroup = stringGroupsIter->second; - return stringGroup.find(stringIn) == stringGroup.end(); + const StringSet& stringSet = stringGroupsIter->second; + return stringSet.find(stringIn) == stringSet.end(); } void UniqueStringContainer::RemoveString(AZ::Crc32 stringGroupId diff --git a/Gems/PhysX/Code/Editor/UniqueStringContainer.h b/Gems/PhysX/Code/Editor/UniqueStringContainer.h index 176063f341..7144137f8a 100644 --- a/Gems/PhysX/Code/Editor/UniqueStringContainer.h +++ b/Gems/PhysX/Code/Editor/UniqueStringContainer.h @@ -16,13 +16,38 @@ #include #include #include +#include namespace PhysX { - /// Class that keeps track of unique strings in groups. + /// Class that keeps track of unique strings (case insensitive) in groups. class UniqueStringContainer { public: + struct CaseInsensitiveStringHash + { + AZ_TYPE_INFO(UniqueStringContainer::CaseInsensitiveStringHash, "{EB80F2A1-2DEB-47CC-ABF7-592F492C20A9}"); + + size_t operator()(const AZStd::string& str) const + { + AZStd::string lowerStr = str; + AZStd::to_lower(lowerStr.begin(), lowerStr.end()); + return AZStd::hash{}(lowerStr); + } + }; + + struct CaseInsensitiveStringEqual + { + AZ_TYPE_INFO(UniqueStringContainer::CaseInsensitiveStringEqual, "{6ADEA1D9-27B8-4C7A-913D-EC8191F1B6A9}"); + + bool operator()(const AZStd::string& arg0, const AZStd::string& arg1) const + { + return AZ::StringFunc::Equal(arg0, arg1, false/*bCaseSensitive*/); + } + }; + + using StringSet = AZStd::unordered_set; + /// Add a unique string to a group of unique strings. void AddString(AZ::Crc32 stringGroupId, const AZStd::string& stringIn); @@ -30,7 +55,7 @@ namespace PhysX AZStd::string GetUniqueString(AZ::Crc32 stringGroupId , const AZStd::string& stringIn , AZ::u64 maxStringLength - , const AZStd::unordered_set& forbiddenStrings) const; + , const StringSet& forbiddenStrings) const; /// Checks if a string would be unique in the identified string group. bool IsStringUnique(AZ::Crc32 stringGroupId, const AZStd::string& stringIn) const; @@ -39,7 +64,7 @@ namespace PhysX void RemoveString(AZ::Crc32 stringGroupId, const AZStd::string& stringIn); private: - using StringGroups = AZStd::unordered_map>; + using StringGroups = AZStd::unordered_map; StringGroups m_stringGroups; ///< Collection of groups of unique strings, each group identified by an ID. }; -} +} // namespace PhysX diff --git a/Gems/PhysX/Code/Include/PhysX/MeshAsset.h b/Gems/PhysX/Code/Include/PhysX/MeshAsset.h index 8467c04359..fffa8b43b3 100644 --- a/Gems/PhysX/Code/Include/PhysX/MeshAsset.h +++ b/Gems/PhysX/Code/Include/PhysX/MeshAsset.h @@ -62,8 +62,8 @@ namespace PhysX using ShapeConfigurationList = AZStd::vector; ShapeConfigurationList m_colliderShapes; //!< Shapes data with optional collider configuration override. - AZStd::vector m_surfaceNames; //!< List of all surface names. - AZStd::vector m_materialNames; //!< List of all material names. + AZStd::vector m_materialNames; //!< List of material names of the mesh asset. + AZStd::vector m_physicsMaterialNames; //!< List of physics material names associated with each material. AZStd::vector m_materialIndexPerShape; //!< An index of the material in m_materialNames for each shape. }; @@ -75,6 +75,8 @@ namespace PhysX AZ_CLASS_ALLOCATOR(MeshAsset, AZ::SystemAllocator, 0); AZ_RTTI(MeshAsset, "{7A2871B9-5EAB-4DE0-A901-B0D2C6920DDB}", AZ::Data::AssetData); + static void Reflect(AZ::ReflectContext* context); + MeshAssetData m_assetData; }; } // namespace Pipeline diff --git a/Gems/PhysX/Code/Source/EditorColliderComponent.cpp b/Gems/PhysX/Code/Source/EditorColliderComponent.cpp index 4454429092..0671e3e77e 100644 --- a/Gems/PhysX/Code/Source/EditorColliderComponent.cpp +++ b/Gems/PhysX/Code/Source/EditorColliderComponent.cpp @@ -58,10 +58,12 @@ namespace PhysX { editContext->Class("EditorProxyShapeConfig", "PhysX Base shape collider") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") - ->Attribute(AZ::Edit::Attributes::AutoExpand, true) + ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::Default, &EditorProxyAssetShapeConfig::m_pxAsset, "PhysX Mesh", "PhysX mesh collider asset") + ->Attribute(AZ_CRC_CE("EditButton"), "") + ->Attribute(AZ_CRC_CE("EditDescription"), "Open in FBX Settings") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorProxyAssetShapeConfig::m_configuration, "Configuration", "Configuration of asset shape") - ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly); + ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly); } } } @@ -356,6 +358,7 @@ namespace PhysX [this](const AZ::Data::AssetId& defaultMaterialLibrary) { m_configuration.m_materialSelection.OnMaterialLibraryChanged(defaultMaterialLibrary); + UpdateMaterialSlotsFromMeshAsset(); AzToolsFramework::PropertyEditorGUIMessages::Bus::Broadcast(&AzToolsFramework::PropertyEditorGUIMessages::RequestRefresh, AzToolsFramework::PropertyModificationRefreshLevel::Refresh_AttributesAndValues); @@ -698,10 +701,10 @@ namespace PhysX AzToolsFramework::ToolsApplicationEvents::Bus::Broadcast(&AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, AzToolsFramework::Refresh_EntireTree); - ValidateMaterialSurfaces(); + ValidateAssetMaterials(); } - void EditorColliderComponent::ValidateMaterialSurfaces() + void EditorColliderComponent::ValidateAssetMaterials() { const AZ::Data::Asset& physicsAsset = m_shapeConfiguration.m_physicsAsset.m_pxAsset; @@ -712,7 +715,7 @@ namespace PhysX // Here we check the material indices assigned to every shape and validate that every index is used at least once. // It's not an error if the validation fails here but something we want to let the designers know about. - [[maybe_unused]] size_t surfacesNum = physicsAsset->m_assetData.m_surfaceNames.size(); + [[maybe_unused]] size_t materialsNum = physicsAsset->m_assetData.m_materialNames.size(); const AZStd::vector& indexPerShape = physicsAsset->m_assetData.m_materialIndexPerShape; AZStd::unordered_set usedIndices; @@ -728,10 +731,10 @@ namespace PhysX usedIndices.insert(index); } - AZ_Warning("PhysX", usedIndices.size() == surfacesNum, - "EditorColliderComponent::ValidateMaterialSurfaces. Entity: %s. Number of surfaces used by the shape (%d) does not match the " - "total number of surfaces in the asset (%d). Please check that there are no convex meshes with per-face materials. Asset: %s", - GetEntity()->GetName().c_str(), usedIndices.size(), surfacesNum, physicsAsset.GetHint().c_str()) + AZ_Warning("PhysX", usedIndices.size() == materialsNum, + "EditorColliderComponent::ValidateMaterialSurfaces. Entity: %s. Number of materials used by the shape (%d) does not match the " + "total number of materials in the asset (%d). Please check that there are no convex meshes with per-face materials. Asset: %s", + GetEntity()->GetName().c_str(), usedIndices.size(), materialsNum, physicsAsset.GetHint().c_str()) } void EditorColliderComponent::OnAssetReady(AZ::Data::Asset asset) diff --git a/Gems/PhysX/Code/Source/EditorColliderComponent.h b/Gems/PhysX/Code/Source/EditorColliderComponent.h index 07e1131ea9..603e0bf0b3 100644 --- a/Gems/PhysX/Code/Source/EditorColliderComponent.h +++ b/Gems/PhysX/Code/Source/EditorColliderComponent.h @@ -244,7 +244,7 @@ namespace PhysX AZ::Data::AssetId FindMatchingPhysicsAsset(const AZ::Data::Asset& renderMeshAsset, const AZStd::vector& physicsAssets); - void ValidateMaterialSurfaces(); + void ValidateAssetMaterials(); void InitEventHandlers(); DebugDraw::Collider m_colliderDebugDraw; diff --git a/Gems/PhysX/Code/Source/Material.cpp b/Gems/PhysX/Code/Source/Material.cpp index 5e8e3bf759..ada01dad48 100644 --- a/Gems/PhysX/Code/Source/Material.cpp +++ b/Gems/PhysX/Code/Source/Material.cpp @@ -410,7 +410,7 @@ namespace PhysX } // Set the slots from the mesh asset - materialSelection.SetMaterialSlots(meshAsset->m_assetData.m_surfaceNames); + materialSelection.SetMaterialSlots(meshAsset->m_assetData.m_materialNames); if (!assetConfiguration.m_useMaterialsFromAsset) { @@ -419,12 +419,14 @@ namespace PhysX } // Update material IDs in the selection for each slot - const AZStd::vector& meshMaterialNames = meshAsset->m_assetData.m_materialNames; - for (size_t slotIndex = 0; slotIndex < meshMaterialNames.size(); ++slotIndex) + const AZStd::vector& physicsMaterialNames = meshAsset->m_assetData.m_physicsMaterialNames; + for (size_t slotIndex = 0; slotIndex < physicsMaterialNames.size(); ++slotIndex) { - const AZStd::string& physicsMaterialNameFromPhysicsAsset = meshMaterialNames[slotIndex]; - if (physicsMaterialNameFromPhysicsAsset == DefaultPhysicsMaterialNameFromPhysicsAsset) + const AZStd::string& physicsMaterialNameFromPhysicsAsset = physicsMaterialNames[slotIndex]; + if (physicsMaterialNameFromPhysicsAsset.empty() || + physicsMaterialNameFromPhysicsAsset == Physics::DefaultPhysicsMaterialLabel) { + materialSelection.SetMaterialId(Physics::MaterialId(), slotIndex); continue; } @@ -436,9 +438,10 @@ namespace PhysX else { AZ_Warning("PhysX", false, - "UpdateMaterialSelectionFromPhysicsAsset: Physics material '%s' not found in the material library. Mesh surface '%s' will use the default material.", + "UpdateMaterialSelectionFromPhysicsAsset: Physics material '%s' not found in the material library. Mesh material '%s' will use the default physics material.", physicsMaterialNameFromPhysicsAsset.c_str(), - meshAsset->m_assetData.m_surfaceNames[slotIndex].c_str()); + meshAsset->m_assetData.m_materialNames[slotIndex].c_str()); + materialSelection.SetMaterialId(Physics::MaterialId(), slotIndex); } } } @@ -516,7 +519,7 @@ namespace PhysX auto it = AZStd::find_if(m_materials.begin(), m_materials.end(), [&materialName](const auto& data) { - return data.second->GetSurfaceTypeName() == materialName; + return AZ::StringFunc::Equal(data.second->GetSurfaceTypeName(), materialName, false/*bCaseSensitive*/); }); if (it != m_materials.end()) { diff --git a/Gems/PhysX/Code/Source/Material.h b/Gems/PhysX/Code/Source/Material.h index 1541d156d8..694c48ea7c 100644 --- a/Gems/PhysX/Code/Source/Material.h +++ b/Gems/PhysX/Code/Source/Material.h @@ -21,12 +21,6 @@ namespace PhysX { - /// Name used by physx asset exporter to indicate that the default - /// physics material should be used for a mesh surface. The exporter - /// will use it as the fallback option when it's not possible to obtain - /// the surface information from the mesh material. - static const char* const DefaultPhysicsMaterialNameFromPhysicsAsset = ""; - /// PhysX implementation of Physics::Material interface /// =================================================== /// diff --git a/Gems/PhysX/Code/Source/Pipeline/MeshAssetHandler.cpp b/Gems/PhysX/Code/Source/Pipeline/MeshAssetHandler.cpp index 430ef7aef3..d909b31c47 100644 --- a/Gems/PhysX/Code/Source/Pipeline/MeshAssetHandler.cpp +++ b/Gems/PhysX/Code/Source/Pipeline/MeshAssetHandler.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -151,13 +152,34 @@ namespace PhysX serializeContext->Class() ->Field("ColliderShapes", &MeshAssetData::m_colliderShapes) - ->Field("SurfaceNames", &MeshAssetData::m_surfaceNames) - ->Field("MaterialNames", &MeshAssetData::m_materialNames) + ->Field("SurfaceNames", &MeshAssetData::m_materialNames) + ->Field("MaterialNames", &MeshAssetData::m_physicsMaterialNames) ->Field("MaterialIndexPerShape", &MeshAssetData::m_materialIndexPerShape) ; } } + void MeshAsset::Reflect(AZ::ReflectContext* context) + { + MeshAssetData::Reflect(context); + + if (auto* serializeContext = azrtti_cast(context)) + { + serializeContext->Class() + ->Field("MeshAssetData", &MeshAsset::m_assetData) + ; + + // Note: This class needs to have edit context reflection so PropertyAssetCtrl::OnEditButtonClicked + // can open the asset with the preferred asset editor (FBX Settings). + if (auto* editContext = serializeContext->GetEditContext()) + { + editContext->Class("PhysX Mesh Asset", "") + ->ClassElement(AZ::Edit::ClassElements::EditorData, "") + ; + } + } + } + void AssetColliderConfiguration::Reflect(AZ::ReflectContext* context) { if (AZ::SerializeContext* serializeContext = azrtti_cast(context)) diff --git a/Gems/PhysX/Code/Source/Pipeline/MeshBehavior.cpp b/Gems/PhysX/Code/Source/Pipeline/MeshBehavior.cpp index ce46d72fb4..8762349ad1 100644 --- a/Gems/PhysX/Code/Source/Pipeline/MeshBehavior.cpp +++ b/Gems/PhysX/Code/Source/Pipeline/MeshBehavior.cpp @@ -97,6 +97,10 @@ namespace PhysX nodeSelectionList.AddSelectedNode(graph.GetNodeName(nodeIndex).GetPath()); } } + + // Update list of materials slots after the group's node selection list has been gathered + group->SetSceneGraph(&graph); + group->UpdateMaterialSlots(); } AZ::SceneAPI::Events::ProcessingResult MeshBehavior::UpdateManifest(AZ::SceneAPI::Containers::Scene& scene, ManifestAction action, @@ -129,6 +133,8 @@ namespace PhysX // in the same way again. To guarantee the same uuid, generate a stable one instead. group->OverrideId(AZ::SceneAPI::DataTypes::Utilities::CreateStableUuid(scene, MeshGroup::TYPEINFO_Uuid())); + group->SetSceneGraph(&scene.GetGraph()); + EBUS_EVENT(AZ::SceneAPI::Events::ManifestMetaInfoBus, InitializeObject, scene, *group); scene.GetManifest().AddEntry(AZStd::move(group)); @@ -149,10 +155,15 @@ namespace PhysX } AZ::SceneAPI::Utilities::SceneGraphSelector::UpdateNodeSelection(scene.GetGraph(), group.GetSceneNodeSelectionList()); + + // Update list of materials slots after the group's node selection list has been updated + group.SetSceneGraph(&scene.GetGraph()); + group.UpdateMaterialSlots(); + updated = true; } return updated ? AZ::SceneAPI::Events::ProcessingResult::Success : AZ::SceneAPI::Events::ProcessingResult::Ignored; } - } // namespace SceneAPI -} // namespace AZ + } // namespace Pipeline +} // namespace PhysX diff --git a/Gems/PhysX/Code/Source/Pipeline/MeshExporter.cpp b/Gems/PhysX/Code/Source/Pipeline/MeshExporter.cpp index 24e532e2d1..8440e77330 100644 --- a/Gems/PhysX/Code/Source/Pipeline/MeshExporter.cpp +++ b/Gems/PhysX/Code/Source/Pipeline/MeshExporter.cpp @@ -68,16 +68,6 @@ namespace PhysX } } pxDefaultErrorCallback; - // A struct to store the asset-wide material names shared by multiple shapes - struct AssetMaterialsData - { - // Material names coming from FBX, these will be Mesh Surfaces in the Collider Component - AZStd::vector m_fbxMaterialNames; - - // Look-up table for fbxMaterialNames - AZStd::unordered_map m_materialIndexByName; - }; - // A struct to store the geometry data per FBX node struct NodeCollisionGeomExportData { @@ -153,7 +143,7 @@ namespace PhysX AZ::SerializeContext* serializeContext = azrtti_cast(context); if (serializeContext) { - serializeContext->Class()->Version(4); + serializeContext->Class()->Version(5); } } @@ -182,100 +172,49 @@ namespace PhysX return newIndex; } - // Building a map between FBX material name and the corresponding Cry surface type that is set in the .mtl file. - void BuildMaterialToSurfaceTypeMap(const AZStd::string& materialFilename, - AZStd::unordered_map& materialToSurfaceTypeMap) + bool UpdateAssetPhysicsMaterials( + const AZStd::vector& newMaterials, + AZStd::vector& materials, + AZStd::vector& physicsMaterials) { - AZ::IO::SystemFile mtlFile; - bool fileOpened = mtlFile.Open(materialFilename.c_str(), AZ::IO::SystemFile::SF_OPEN_READ_ONLY); - if (fileOpened && mtlFile.Length() != 0) + if (materials.size() != physicsMaterials.size()) { - //Read material override file into a buffer - AZStd::vector buffer(mtlFile.Length()); - mtlFile.Read(mtlFile.Length(), buffer.data()); - mtlFile.Close(); - - //Apparently in rapidxml if 'parse_no_data_nodes' isn't set it creates both value and data nodes - //with the data nodes having precedence such that updating values doesn't work. - AZ::rapidxml::xml_document document; - document.parse(buffer.data()); - - //Parse MTL file for materials and/or submaterials. - AZ::rapidxml::xml_node* rootMaterialNode = document.first_node(AZ::GFxFramework::MaterialExport::g_materialString); - - AZ::rapidxml::xml_node* subMaterialNode = rootMaterialNode->first_node(AZ::GFxFramework::MaterialExport::g_subMaterialString); - - if (subMaterialNode) - { - for (AZ::rapidxml::xml_node* materialNode = subMaterialNode->first_node(AZ::GFxFramework::MaterialExport::g_materialString); - materialNode; - materialNode = materialNode->next_sibling(AZ::GFxFramework::MaterialExport::g_materialString)) - { - AZ::rapidxml::xml_attribute* nameAttribute = materialNode->first_attribute(AZ::GFxFramework::MaterialExport::g_nameString); - if (nameAttribute) - { - AZStd::string materialName = nameAttribute->value(); - AZStd::string surfaceTypeName = DefaultPhysicsMaterialNameFromPhysicsAsset; - - AZ::rapidxml::xml_attribute* surfaceTypeNode = materialNode->first_attribute("SurfaceType"); - if (surfaceTypeNode && surfaceTypeNode->value_size() != 0) - { - surfaceTypeName = surfaceTypeNode->value(); - } - - materialToSurfaceTypeMap[materialName] = surfaceTypeName; - } - else - { - AZ_TracePrintf(AZ::SceneAPI::Utilities::ErrorWindow, "A SubMaterial without Name found in the .mtl file: %s", materialFilename.c_str()); - } - } - } - else - { - AZ_TracePrintf(AZ::SceneAPI::Utilities::ErrorWindow, "No SubMaterial node in the .mtl file: %s", materialFilename.c_str()); - } - } - } - - void UpdateAssetMaterialsFromCrySurfaceTypes(const AZStd::vector& fbxMaterialNames, - const AZStd::unordered_map& materialToSurfaceTypeMap, - MeshAssetData& assetData) - { - AZStd::vector& materialNames = assetData.m_materialNames; - AZ_Assert(materialNames.empty(), - "UpdateAssetMaterialsFromCrySurfaceTypes: Mesh Asset Data should not have materials already assigned."); - - materialNames.clear(); - materialNames.reserve(fbxMaterialNames.size()); - - for (const AZStd::string& fbxMaterial : fbxMaterialNames) - { - AZStd::string materialName; - - // Here we assign the actual engine surface type based on the material name - auto materialToSurfaceIt = materialToSurfaceTypeMap.find(fbxMaterial); - if (materialToSurfaceIt != materialToSurfaceTypeMap.end() - && !materialToSurfaceIt->second.empty()) - { - materialName = materialToSurfaceIt->second; - - // Remove the mat_ prefix since the material library generated from surface types doesn't have it. - if (materialName.find("mat_") == 0) - { - materialName = materialName.substr(4); - } - } - else - { - materialName = DefaultPhysicsMaterialNameFromPhysicsAsset; - } - - materialNames.emplace_back(AZStd::move(materialName)); + AZ_TracePrintf( + AZ::SceneAPI::Utilities::WarningWindow, + "Materials and Physics Materials have different number of elements. %d materials and %d physics materials.", + materials.size(), physicsMaterials.size()); + return false; } - // Asset mesh surfaces match FBX materials. These are the names that users see in the Collider Component in the Editor. - assetData.m_surfaceNames = fbxMaterialNames; + AZStd::vector newPhysicsMaterials; + newPhysicsMaterials.reserve(newMaterials.size()); + + // In the new material list, the materials might have changed slots. + // Form the new list of physics materials by looking at the previous list + // and keeping the same physics materials association when found. + for (const auto& newMaterial : newMaterials) + { + AZStd::string physicsMaterialName = Physics::DefaultPhysicsMaterialLabel; + + for (size_t slotId = 0; slotId < materials.size(); ++slotId) + { + if (AZ::StringFunc::Equal(materials[slotId], newMaterial, false/*bCaseSensitive*/)) + { + if (!physicsMaterials[slotId].empty()) + { + physicsMaterialName = physicsMaterials[slotId]; + } + break; + } + } + + newPhysicsMaterials.emplace_back(AZStd::move(physicsMaterialName)); + } + + materials = newMaterials; + physicsMaterials = AZStd::move(newPhysicsMaterials); + + return true; } bool ValidateCookedTriangleMesh(void* assetData, AZ::u32 assetDataSize) @@ -320,6 +259,86 @@ namespace PhysX return materialNames; } + + AZStd::optional GatherMaterialsFromMeshGroup( + const MeshGroup& meshGroup, + const AZ::SceneAPI::Containers::SceneGraph& sceneGraph) + { + AssetMaterialsData assetMaterialData; + + const auto& sceneNodeSelectionList = meshGroup.GetSceneNodeSelectionList(); + size_t selectedNodeCount = sceneNodeSelectionList.GetSelectedNodeCount(); + + for (size_t index = 0; index < selectedNodeCount; index++) + { + AZ::SceneAPI::Containers::SceneGraph::NodeIndex nodeIndex = sceneGraph.Find(sceneNodeSelectionList.GetSelectedNode(index)); + if (!nodeIndex.IsValid()) + { + AZ_TracePrintf( + AZ::SceneAPI::Utilities::WarningWindow, + "Node '%s' was not found in the scene graph.", + sceneNodeSelectionList.GetSelectedNode(index).c_str() + ); + continue; + } + auto nodeMesh = azrtti_cast(*sceneGraph.ConvertToStorageIterator(nodeIndex)); + if (!nodeMesh) + { + continue; + } + + AZStd::string_view nodeName = sceneGraph.GetNodeName(nodeIndex).GetName(); + + const AZStd::vector localFbxMaterialsList = GenerateLocalNodeMaterialMap(sceneGraph, nodeIndex); + if (localFbxMaterialsList.empty()) + { + AZ_TracePrintf( + AZ::SceneAPI::Utilities::WarningWindow, + "Node '%.*s' does not have any material assigned to it. Material '%s' will be used.", + AZ_STRING_ARG(nodeName), DefaultMaterialName + ); + } + + const AZ::u32 faceCount = nodeMesh->GetFaceCount(); + + assetMaterialData.m_nodesToPerFaceMaterialIndices.emplace(nodeName, AZStd::vector(faceCount)); + + // Convex and primitive methods can only have 1 material + const bool limitToOneMaterial = meshGroup.GetExportAsConvex() || meshGroup.GetExportAsPrimitive(); + + for (AZ::u32 faceIndex = 0; faceIndex < faceCount; ++faceIndex) + { + AZStd::string materialName = DefaultMaterialName; + if (!localFbxMaterialsList.empty()) + { + const int materialId = nodeMesh->GetFaceMaterialId(faceIndex); + if (materialId >= localFbxMaterialsList.size()) + { + AZ_TracePrintf(AZ::SceneAPI::Utilities::ErrorWindow, + "materialId %d for face %d is out of bound for localFbxMaterialsList (size %d).", + materialId, faceIndex, localFbxMaterialsList.size()); + + return AZStd::nullopt; + } + + materialName = localFbxMaterialsList[materialId]; + + // Keep using the first material when it has to be limited to one. + if (limitToOneMaterial && + assetMaterialData.m_fbxMaterialNames.size() == 1 && + assetMaterialData.m_fbxMaterialNames[0] != materialName) + { + materialName = assetMaterialData.m_fbxMaterialNames[0]; + } + } + + const AZ::u16 materialIndex = InsertMaterialIndexByName(materialName, assetMaterialData); + assetMaterialData.m_nodesToPerFaceMaterialIndices[nodeName][faceIndex] = materialIndex; + } + } + + return assetMaterialData; + } } static physx::PxMeshMidPhase::Enum GetMidPhaseStructureType(const AZStd::string& platformIdentifier) @@ -468,21 +487,11 @@ namespace PhysX return cookingSuccessful; } - // Utility function finding out the .mtl file for a given FBX (at the moment it's the same name as FBX but with .mtl extension) - static AZStd::string GetAssetMaterialFilename(const AZ::SceneAPI::Events::ExportEventContext& context) - { - const AZ::SceneAPI::Containers::Scene& scene = context.GetScene(); - - AZStd::string materialFilename = scene.GetSourceFilename(); - AzFramework::StringFunc::Path::ReplaceExtension(materialFilename, ".mtl"); - return materialFilename; - } - // Processes the collected data and writes into a file static AZ::SceneAPI::Events::ProcessingResult WritePxMeshAsset( AZ::SceneAPI::Events::ExportEventContext& context, const AZStd::vector& totalExportData, - const AssetMaterialsData &assetMaterialsData, + const Utils::AssetMaterialsData &assetMaterialsData, const MeshGroup& meshGroup) { SceneEvents::ProcessingResult result = SceneEvents::ProcessingResult::Ignored; @@ -492,14 +501,18 @@ namespace PhysX MeshAssetData assetData; - const AZStd::string& materialFilename = GetAssetMaterialFilename(context); - - // Read the information about surface type for each material from the .mtl file - AZStd::unordered_map fbxMaterialToCrySurfaceTypeMap; - Utils::BuildMaterialToSurfaceTypeMap(materialFilename, fbxMaterialToCrySurfaceTypeMap); - // Assign the materials into cooked data - Utils::UpdateAssetMaterialsFromCrySurfaceTypes(assetMaterialsData.m_fbxMaterialNames, fbxMaterialToCrySurfaceTypeMap, assetData); + assetData.m_materialNames = meshGroup.GetMaterialSlots(); + assetData.m_physicsMaterialNames = meshGroup.GetPhysicsMaterials(); + + // Updating materials lists from new materials gathered from fbx + // because this exporter runs when the FBX is being processed, which + // could have a different content from when the mesh group info was + // entered in FBX Settings Editor. + if (!Utils::UpdateAssetPhysicsMaterials(assetMaterialsData.m_fbxMaterialNames, assetData.m_materialNames, assetData.m_physicsMaterialNames)) + { + return SceneEvents::ProcessingResult::Failure; + } for (const NodeCollisionGeomExportData& subMesh : totalExportData) { @@ -714,9 +727,15 @@ namespace PhysX for (const MeshGroup& pxMeshGroup : view) { + // Gather material data from asset for the mesh group + AZStd::optional assetMaterialData = Utils::GatherMaterialsFromMeshGroup(pxMeshGroup, graph); + if (!assetMaterialData.has_value()) + { + return SceneEvents::ProcessingResult::Failure; + } + // Export data per node AZStd::vector totalExportData; - AssetMaterialsData assetMaterialData; const AZStd::string& groupName = pxMeshGroup.GetName(); @@ -764,7 +783,6 @@ namespace PhysX const AZ::SceneAPI::Containers::SceneGraph::Name& nodeName = graph.GetNodeName(nodeIndex); - const AZStd::vector localFbxMaterialsList = Utils::GenerateLocalNodeMaterialMap(graph, nodeIndex); const AZ::SceneAPI::DataTypes::MatrixType worldTransform = SceneUtil::BuildWorldTransform(graph, nodeIndex); NodeCollisionGeomExportData nodeExportData; @@ -783,53 +801,24 @@ namespace PhysX } nodeExportData.m_indices.resize(faceCount * 3); - nodeExportData.m_perFaceMaterialIndices.resize(faceCount); - if (localFbxMaterialsList.empty()) + nodeExportData.m_perFaceMaterialIndices = assetMaterialData->m_nodesToPerFaceMaterialIndices[nodeExportData.m_nodeName]; + if (nodeExportData.m_perFaceMaterialIndices.size() != faceCount) { AZ_TracePrintf( AZ::SceneAPI::Utilities::WarningWindow, - "Node '%s' does not have any material assigned to it. Material '%s' will be used.", - nodeExportData.m_nodeName.c_str(), DefaultMaterialName + "Node '%s' material information face count %d does not match the node's %d.", + nodeExportData.m_nodeName.c_str(), nodeExportData.m_perFaceMaterialIndices.size(), faceCount ); + return SceneEvents::ProcessingResult::Failure; } - // Convex and primitive methods can only have 1 material - const bool limitToOneMaterial = pxMeshGroup.GetExportAsConvex() || pxMeshGroup.GetExportAsPrimitive(); - for (AZ::u32 faceIndex = 0; faceIndex < faceCount; ++faceIndex) { - AZStd::string materialName = DefaultMaterialName; - if (!localFbxMaterialsList.empty()) - { - int materialId = nodeMesh->GetFaceMaterialId(faceIndex); - if (materialId >= localFbxMaterialsList.size()) - { - AZ_TracePrintf(AZ::SceneAPI::Utilities::ErrorWindow, - "materialId %d for face %d is out of bound for localFbxMaterialsList (size %d).", - materialId, faceIndex, localFbxMaterialsList.size()); - - return SceneEvents::ProcessingResult::Failure; - } - - materialName = localFbxMaterialsList[materialId]; - - // Keep using the first material when it has to be limited to one. - if (limitToOneMaterial && - assetMaterialData.m_fbxMaterialNames.size() == 1 && - assetMaterialData.m_fbxMaterialNames[0] != materialName) - { - materialName = assetMaterialData.m_fbxMaterialNames[0]; - } - } - const AZ::SceneAPI::DataTypes::IMeshData::Face& face = nodeMesh->GetFaceInfo(faceIndex); nodeExportData.m_indices[faceIndex * 3] = face.vertexIndex[0]; nodeExportData.m_indices[faceIndex * 3 + 1] = face.vertexIndex[1]; nodeExportData.m_indices[faceIndex * 3 + 2] = face.vertexIndex[2]; - - AZ::u16 materialIndex = Utils::InsertMaterialIndexByName(materialName, assetMaterialData); - nodeExportData.m_perFaceMaterialIndices[faceIndex] = materialIndex; } if (pxMeshGroup.GetDecomposeMeshes()) @@ -880,7 +869,7 @@ namespace PhysX if (!totalExportData.empty()) { - result += WritePxMeshAsset(context, totalExportData, assetMaterialData, pxMeshGroup); + result += WritePxMeshAsset(context, totalExportData, *assetMaterialData, pxMeshGroup); } } diff --git a/Gems/PhysX/Code/Source/Pipeline/MeshExporter.h b/Gems/PhysX/Code/Source/Pipeline/MeshExporter.h index ef0e58cecb..0593b27301 100644 --- a/Gems/PhysX/Code/Source/Pipeline/MeshExporter.h +++ b/Gems/PhysX/Code/Source/Pipeline/MeshExporter.h @@ -26,6 +26,7 @@ namespace AZ namespace Containers { class Scene; + class SceneGraph; } namespace DataTypes @@ -57,5 +58,34 @@ namespace PhysX private: AZ::SceneAPI::Events::ProcessingResult ExportMeshObject(AZ::SceneAPI::Events::ExportEventContext& context, const AZStd::shared_ptr& meshToExport, const AZStd::string& nodePath, const Pipeline::MeshGroup& pxMeshGroup) const; }; - } -} + + namespace Utils + { + //! A struct to store the materials of the mesh nodes selected in a mesh group. + struct AssetMaterialsData + { + //! Material names coming from FBX. + AZStd::vector m_fbxMaterialNames; + + //! Look-up table for fbxMaterialNames. + AZStd::unordered_map m_materialIndexByName; + + //! Map of mesh nodes to their list of material indices associated to each face. + AZStd::unordered_map> m_nodesToPerFaceMaterialIndices; + }; + + //! Returns the list of materials assigned to the triangles + //! of the mesh nodes selected in a mesh group. + AZStd::optional GatherMaterialsFromMeshGroup( + const MeshGroup& meshGroup, + const AZ::SceneAPI::Containers::SceneGraph& sceneGraph); + + //! Function to update a list of materials and physics materials from a new list. + //! All those new materials not found in the previous list will fallback to default physics material. + bool UpdateAssetPhysicsMaterials( + const AZStd::vector& newMaterials, + AZStd::vector& materials, + AZStd::vector& physicsMaterials); + } // namespace Utils + } // namespace Pipeline +} // namespace PhysX diff --git a/Gems/PhysX/Code/Source/Pipeline/MeshGroup.cpp b/Gems/PhysX/Code/Source/Pipeline/MeshGroup.cpp index db6e7e12e0..ffae8c449b 100644 --- a/Gems/PhysX/Code/Source/Pipeline/MeshGroup.cpp +++ b/Gems/PhysX/Code/Source/Pipeline/MeshGroup.cpp @@ -16,12 +16,17 @@ #include #include #include +#include +#include #include #include #include #include +#include #include +#include +#include #include @@ -577,7 +582,21 @@ namespace PhysX MeshGroup::MeshGroup() : m_id(AZ::Uuid::CreateRandom()) + , m_materialLibraryChangedHandler( + [this](const AZ::Data::AssetId& materialLibraryAssetId) + { + OnMaterialLibraryChanged(materialLibraryAssetId); + }) { + if (auto* physicsSystem = AZ::Interface::Get()) + { + physicsSystem->RegisterOnMaterialLibraryChangedEventHandler(m_materialLibraryChangedHandler); + } + } + + MeshGroup::~MeshGroup() + { + m_materialLibraryChangedHandler.Disconnect(); } void MeshGroup::Reflect(AZ::ReflectContext* context) @@ -602,6 +621,8 @@ namespace PhysX ->Field("PrimitiveAssetParams", &MeshGroup::m_primitiveAssetParams) ->Field("DecomposeMeshes", &MeshGroup::m_decomposeMeshes) ->Field("ConvexDecompositionParams", &MeshGroup::m_convexDecompositionParams) + ->Field("MaterialSlots", &MeshGroup::m_materialSlots) + ->Field("PhysicsMaterials", &MeshGroup::m_physicsMaterials) ->Field("rules", &MeshGroup::m_rules); if ( @@ -622,6 +643,7 @@ namespace PhysX "Select the meshes to be included in the mesh group.") ->Attribute("FilterName", "meshes") ->Attribute("FilterType", AZ::SceneAPI::DataTypes::IMeshData::TYPEINFO_Uuid()) + ->Attribute(AZ::Edit::Attributes::ChangeNotify, &MeshGroup::OnNodeSelectionChanged) ->DataElement(AZ::Edit::UIHandlers::ComboBox, &MeshGroup::m_exportMethod, "Export As", "The cooking method to be applied to this mesh group. For the asset to be usable as " @@ -629,14 +651,14 @@ namespace PhysX ->EnumAttribute(MeshExportMethod::TriMesh, "Triangle Mesh") ->EnumAttribute(MeshExportMethod::Convex, "Convex") ->EnumAttribute(MeshExportMethod::Primitive, "Primitive") - ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::EntireTree) + ->Attribute(AZ::Edit::Attributes::ChangeNotify, &MeshGroup::OnExportMethodChanged) ->DataElement(AZ_CRC("DecomposeMeshes", 0xe0e2ac1e), &MeshGroup::m_decomposeMeshes, "Decompose Meshes", "If enables, this option will apply the V-HACD algorithm to split each node " "into approximately convex parts. Each part will individually be exported as a convex " "collider using the parameters configured above.") ->Attribute(AZ::Edit::Attributes::Visibility, &MeshGroup::GetDecomposeMeshesVisibility) - ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ::Edit::PropertyRefreshLevels::EntireTree) + ->Attribute(AZ::Edit::Attributes::ChangeNotify, &MeshGroup::OnDecomposeMeshesChanged) ->DataElement(AZ_CRC("TriangleMeshAssetParams", 0x1a408def), &MeshGroup::m_triangleMeshAssetParams, "Triangle Mesh Asset Parameters", "Configure the parameters controlling the exported triangle mesh asset.") @@ -658,6 +680,14 @@ namespace PhysX ->Attribute(AZ::Edit::Attributes::Visibility, &MeshGroup::GetDecomposeMeshes) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) + ->DataElement(AZ::Edit::UIHandlers::Default, &MeshGroup::m_physicsMaterials, "Physics Materials", + "Configure which physics materials to use for each element.") + ->Attribute(AZ::Edit::Attributes::IndexedChildNameLabelOverride, &MeshGroup::GetMaterialSlotLabel) + ->Attribute(AZ::Edit::Attributes::AutoExpand, true) + ->Attribute(AZ::Edit::Attributes::ContainerCanBeModified, false) + ->ElementAttribute(AZ::Edit::UIHandlers::Handler, AZ::Edit::UIHandlers::ComboBox) + ->ElementAttribute(AZ::Edit::Attributes::StringList, &MeshGroup::GetPhysicsMaterialNames) + ->DataElement(AZ::Edit::UIHandlers::Default, &MeshGroup::m_rules, "", "Add or remove rules to fine-tune the export process.") ->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20)); @@ -710,6 +740,37 @@ namespace PhysX return (GetExportAsConvex() || GetExportAsPrimitive()) && m_decomposeMeshes; } + const AZStd::vector& MeshGroup::GetPhysicsMaterials() const + { + return m_physicsMaterials; + } + + const AZStd::vector& MeshGroup::GetMaterialSlots() const + { + return m_materialSlots; + } + + void MeshGroup::SetSceneGraph(const AZ::SceneAPI::Containers::SceneGraph* graph) + { + m_graph = graph; + } + + void MeshGroup::UpdateMaterialSlots() + { + if (!m_graph) + { + return; + } + + AZStd::optional assetMaterialData = Utils::GatherMaterialsFromMeshGroup(*this, *m_graph); + if (!assetMaterialData) + { + return; + } + + Utils::UpdateAssetPhysicsMaterials(assetMaterialData->m_fbxMaterialNames, m_materialSlots, m_physicsMaterials); + } + AZ::SceneAPI::Containers::RuleContainer& MeshGroup::GetRuleContainer() { return m_rules; @@ -770,11 +831,79 @@ namespace PhysX return m_convexDecompositionParams; } + AZ::u32 MeshGroup::OnNodeSelectionChanged() + { + UpdateMaterialSlots(); + return AZ::Edit::PropertyRefreshLevels::EntireTree; + } + + AZ::u32 MeshGroup::OnExportMethodChanged() + { + UpdateMaterialSlots(); + return AZ::Edit::PropertyRefreshLevels::EntireTree; + } + + AZ::u32 MeshGroup::OnDecomposeMeshesChanged() + { + UpdateMaterialSlots(); + return AZ::Edit::PropertyRefreshLevels::EntireTree; + } + bool MeshGroup::GetDecomposeMeshesVisibility() const { return GetExportAsConvex() || GetExportAsPrimitive(); } + AZStd::string MeshGroup::GetMaterialSlotLabel(int index) const + { + if (index < m_materialSlots.size()) + { + // When limited to one material, clarify in the label the material + // will be used for the entire object. + if (index == 0 && (GetExportAsConvex() || GetExportAsPrimitive())) + { + return m_materialSlots[index] + " (entire object)"; + } + else + { + return m_materialSlots[index]; + } + } + else + { + return ""; + } + } + + AZStd::vector MeshGroup::GetPhysicsMaterialNames() const + { + if (auto* physicsSystem = AZ::Interface::Get()) + { + if (const auto* physicsConfiguration = physicsSystem->GetConfiguration()) + { + const auto& materials = physicsConfiguration->m_materialLibraryAsset->GetMaterialsData(); + + AZStd::vector physicsMaterialNames; + physicsMaterialNames.reserve(materials.size() + 1); + + physicsMaterialNames.emplace_back(Physics::DefaultPhysicsMaterialLabel); + for (const auto& material : materials) + { + physicsMaterialNames.emplace_back(material.m_configuration.m_surfaceType); + } + + return physicsMaterialNames; + } + } + return {Physics::DefaultPhysicsMaterialLabel}; + } + + void MeshGroup::OnMaterialLibraryChanged([[maybe_unused]] const AZ::Data::AssetId& materialLibraryAssetId) + { + AzToolsFramework::PropertyEditorGUIMessages::Bus::Broadcast(&AzToolsFramework::PropertyEditorGUIMessages::RequestRefresh, + AzToolsFramework::PropertyModificationRefreshLevel::Refresh_AttributesAndValues); + } + bool MeshGroup::VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement) { // Remove the material rule. diff --git a/Gems/PhysX/Code/Source/Pipeline/MeshGroup.h b/Gems/PhysX/Code/Source/Pipeline/MeshGroup.h index 0095a3dce2..5b70ded7ea 100644 --- a/Gems/PhysX/Code/Source/Pipeline/MeshGroup.h +++ b/Gems/PhysX/Code/Source/Pipeline/MeshGroup.h @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -23,6 +24,11 @@ namespace AZ { class ReflectContext; + + namespace SceneAPI::Containers + { + class SceneGraph; + } } namespace PhysX @@ -172,7 +178,7 @@ namespace PhysX AZ_CLASS_ALLOCATOR_DECL MeshGroup(); - ~MeshGroup() override = default; + ~MeshGroup() override; static void Reflect(AZ::ReflectContext* context); @@ -185,6 +191,11 @@ namespace PhysX bool GetExportAsTriMesh() const; bool GetExportAsPrimitive() const; bool GetDecomposeMeshes() const; + const AZStd::vector& GetPhysicsMaterials() const; + const AZStd::vector& GetMaterialSlots() const; + + void SetSceneGraph(const AZ::SceneAPI::Containers::SceneGraph* graph); + void UpdateMaterialSlots(); AZ::SceneAPI::Containers::RuleContainer& GetRuleContainer() override; const AZ::SceneAPI::Containers::RuleContainer& GetRuleContainerConst() const override; @@ -207,8 +218,17 @@ namespace PhysX protected: static bool VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement); + AZ::u32 OnNodeSelectionChanged(); + AZ::u32 OnExportMethodChanged(); + AZ::u32 OnDecomposeMeshesChanged(); + bool GetDecomposeMeshesVisibility() const; + AZStd::string GetMaterialSlotLabel(int index) const; + AZStd::vector GetPhysicsMaterialNames() const; + + void OnMaterialLibraryChanged(const AZ::Data::AssetId& materialLibraryAssetId); + AZ::Uuid m_id{}; AZStd::string m_name{}; AZ::SceneAPI::SceneData::SceneNodeSelectionList m_nodeSelectionList{}; @@ -219,6 +239,12 @@ namespace PhysX PrimitiveAssetParams m_primitiveAssetParams{}; ConvexDecompositionParams m_convexDecompositionParams{}; AZ::SceneAPI::Containers::RuleContainer m_rules{}; + AZStd::vector m_materialSlots; + AZStd::vector m_physicsMaterials; + + const AZ::SceneAPI::Containers::SceneGraph* m_graph = nullptr; + + AzPhysics::SystemEvents::OnMaterialLibraryChangedEvent::Handler m_materialLibraryChangedHandler; }; } } diff --git a/Gems/PhysX/Code/Source/SystemComponent.cpp b/Gems/PhysX/Code/Source/SystemComponent.cpp index b4c17f672d..eae56967b2 100644 --- a/Gems/PhysX/Code/Source/SystemComponent.cpp +++ b/Gems/PhysX/Code/Source/SystemComponent.cpp @@ -94,7 +94,7 @@ namespace PhysX void SystemComponent::Reflect(AZ::ReflectContext* context) { D6JointLimitConfiguration::Reflect(context); - Pipeline::MeshAssetData::Reflect(context); + Pipeline::MeshAsset::Reflect(context); PhysX::ReflectionUtils::ReflectPhysXOnlyApi(context); diff --git a/Gems/PhysX/Code/Tests/PhysXSceneQueryTests.cpp b/Gems/PhysX/Code/Tests/PhysXSceneQueryTests.cpp index 313565caf2..90a2774ca4 100644 --- a/Gems/PhysX/Code/Tests/PhysXSceneQueryTests.cpp +++ b/Gems/PhysX/Code/Tests/PhysXSceneQueryTests.cpp @@ -172,7 +172,7 @@ namespace PhysX ASSERT_EQ(hit.m_material, rigidBody->GetShape(0).get()->GetMaterial().get()); const AZStd::string& typeName = hit.m_material->GetSurfaceTypeName(); - ASSERT_EQ(typeName, AZStd::string("Default")); + ASSERT_EQ(typeName, Physics::DefaultPhysicsMaterialLabel); } TEST_F(PhysXSceneQueryFixture, RayCast_AgainstStaticObject_ReturnsHit) diff --git a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp index 8a06848709..e3cc9b7896 100644 --- a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp @@ -360,6 +360,8 @@ namespace ScriptCanvasEditor } } + AzToolsFramework::ScopedUndoBatch undo("Update Entity With New SC Graph"); + AzToolsFramework::ToolsApplicationRequests::Bus::Broadcast(&AzToolsFramework::ToolsApplicationRequests::Bus::Events::AddDirtyEntity, GetEntityId()); AzToolsFramework::ToolsApplicationEvents::Bus::Broadcast(&AzToolsFramework::ToolsApplicationEvents::InvalidatePropertyDisplay, AzToolsFramework::Refresh_AttributesAndValues); } diff --git a/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp b/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp index 60e8e5f23a..1ba9a64083 100644 --- a/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/SystemComponent.cpp @@ -66,6 +66,7 @@ namespace ScriptCanvasEditor SystemComponent::~SystemComponent() { AzToolsFramework::UnregisterViewPane(LyViewPane::ScriptCanvas); + AzToolsFramework::EditorContextMenuBus::Handler::BusDisconnect(); AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect(); AzFramework::AssetCatalogEventBus::Handler::BusDisconnect(); AzToolsFramework::AssetSeedManagerRequests::Bus::Handler::BusDisconnect(); @@ -119,6 +120,7 @@ namespace ScriptCanvasEditor void SystemComponent::Init() { AzToolsFramework::EditorEvents::Bus::Handler::BusConnect(); + AzToolsFramework::EditorContextMenuBus::Handler::BusConnect(); } void SystemComponent::Activate() @@ -165,6 +167,8 @@ namespace ScriptCanvasEditor options.canHaveMultipleInstances = false; options.isPreview = true; options.showInMenu = true; + options.showOnToolsToolbar = true; + options.toolbarIcon = ":/Menu/script_canvas_editor.svg"; AzToolsFramework::RegisterViewPane(LyViewPane::ScriptCanvas, LyViewPane::CategoryTools, options); } diff --git a/Gems/ScriptCanvas/Code/Editor/SystemComponent.h b/Gems/ScriptCanvas/Code/Editor/SystemComponent.h index f2ebad38cd..ced5a67a4c 100644 --- a/Gems/ScriptCanvas/Code/Editor/SystemComponent.h +++ b/Gems/ScriptCanvas/Code/Editor/SystemComponent.h @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -42,6 +43,7 @@ namespace ScriptCanvasEditor , private AZ::Data::AssetBus::MultiHandler , private AZ::Interface::Registrar , private AzToolsFramework::AssetSeedManagerRequests::Bus::Handler + , private AzToolsFramework::EditorContextMenuBus::Handler { public: AZ_COMPONENT(SystemComponent, "{1DE7A120-4371-4009-82B5-8140CB1D7B31}"); @@ -71,8 +73,12 @@ namespace ScriptCanvasEditor //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// - // AztoolsFramework::EditorEvents::Bus::Handler... + // AztoolsFramework::EditorContextMenuBus::Handler... void PopulateEditorGlobalContextMenu(QMenu* menu, const AZ::Vector2& point, int flags) override; + //////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////// + // AztoolsFramework::EditorEvents::Bus::Handler... void NotifyRegisterViews() override; //////////////////////////////////////////////////////////////////////// diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.cpp b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.cpp index 905f68604a..a5e9c179e6 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.cpp +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.cpp @@ -1220,8 +1220,18 @@ namespace ScriptCanvas void GraphToLua::WriteClassPropertyRead(Grammar::ExecutionTreeConstPtr execution) { - WriteFunctionCallInput(execution, 0, IsFormatStringInput::No); - m_dotLua.Write(".%s", Grammar::ToIdentifier(execution->GetName()).c_str()); + if (execution->GetInputCount() > 0) + { + WriteFunctionCallInput(execution, 0, IsFormatStringInput::No); + m_dotLua.Write("."); + } + else + { + // it's a constant + WriteResolvedScope(execution, execution->GetNameLexicalScope()); + } + + m_dotLua.Write(Grammar::ToIdentifier(execution->GetName()).c_str()); } void GraphToLua::WriteClassPropertyWrite(Grammar::ExecutionTreeConstPtr execution) @@ -1509,20 +1519,7 @@ namespace ScriptCanvas } else { - const AZStd::string resolvedScope = ResolveScope(lexicalScope.m_namespaces); - - auto& abbreviation = FindAbbreviation(resolvedScope); - - if (!abbreviation.empty()) - { - m_dotLua.Write("%s%.*s", abbreviation.c_str(), - aznumeric_cast(m_configuration.m_lexicalScopeDelimiter.size()), m_configuration.m_lexicalScopeDelimiter.data()); - } - else if (!resolvedScope.empty()) - { - m_dotLua.Write("%s%.*s", resolvedScope.c_str(), - aznumeric_cast(m_configuration.m_lexicalScopeDelimiter.size()), m_configuration.m_lexicalScopeDelimiter.data()); - } + WriteResolvedScope(execution, lexicalScope); } } break; @@ -2413,5 +2410,28 @@ namespace ScriptCanvas } } + void GraphToLua::WriteResolvedScope(Grammar::ExecutionTreeConstPtr execution, const Grammar::LexicalScope& lexicalScope) + { + if (lexicalScope.m_type != Grammar::LexicalScopeType::Class && lexicalScope.m_type != Grammar::LexicalScopeType::Namespace) + { + AddError(execution, aznew Internal::ParseError(execution->GetNodeId(), "Invalid arguments to WriteResolvedScope.")); + return; + } + + const AZStd::string resolvedScope = ResolveScope(lexicalScope.m_namespaces); + + auto& abbreviation = FindAbbreviation(resolvedScope); + + if (!abbreviation.empty()) + { + m_dotLua.Write("%s%.*s", abbreviation.c_str(), + aznumeric_cast(m_configuration.m_lexicalScopeDelimiter.size()), m_configuration.m_lexicalScopeDelimiter.data()); + } + else if (!resolvedScope.empty()) + { + m_dotLua.Write("%s%.*s", resolvedScope.c_str(), + aznumeric_cast(m_configuration.m_lexicalScopeDelimiter.size()), m_configuration.m_lexicalScopeDelimiter.data()); + } + } } } diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.h b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.h index 82c865da8c..9894a30841 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.h +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/Translation/GraphToLua.h @@ -160,6 +160,7 @@ namespace ScriptCanvas void WriteOperatorArithmetic(Grammar::ExecutionTreeConstPtr execution); void WriteOutputAssignments(Grammar::ExecutionTreeConstPtr execution); void WriteOutputAssignments(Grammar::ExecutionTreeConstPtr execution, const AZStd::vector>& output); + void WriteResolvedScope(Grammar::ExecutionTreeConstPtr execution, const Grammar::LexicalScope& lexicalScope); void WriteReturnStatement(Grammar::ExecutionTreeConstPtr execution); void WriteReturnValueInitialization(Grammar::ExecutionTreeConstPtr execution); void WriteStaticInitializerInput(IsLeadingCommaRequired commaRequired); @@ -170,7 +171,6 @@ namespace ScriptCanvas void WriteVariableWrite(Grammar::ExecutionTreeConstPtr execution, const AZStd::vector>& output); void WriteWrittenMathExpression(Grammar::ExecutionTreeConstPtr execution); - private: }; } diff --git a/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h b/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h index 5238c52e0e..14f03aa7c4 100644 --- a/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h +++ b/Gems/ScriptCanvasPhysics/Code/Source/WorldNodes.h @@ -165,6 +165,7 @@ namespace ScriptCanvasPhysics request.m_start = worldSpaceTransform.GetTranslation(); request.m_direction = worldSpaceTransform.TransformVector(direction.GetNormalized()); request.m_distance = distance; + request.m_reportMultipleHits = true; request.m_filterCallback = [ignore](const AzPhysics::SimulatedBody* body, [[maybe_unused]] const Physics::Shape* shape) { return body->GetEntityId() != ignore ? AzPhysics::SceneQuery::QueryHitType::Touch : AzPhysics::SceneQuery::QueryHitType::None; diff --git a/Gems/ScriptCanvasTesting/Assets/ScriptCanvas/UnitTests/LY_SC_UnitTest_UseBehaviorContextClassConstant.scriptcanvas b/Gems/ScriptCanvasTesting/Assets/ScriptCanvas/UnitTests/LY_SC_UnitTest_UseBehaviorContextClassConstant.scriptcanvas new file mode 100644 index 0000000000..d80e4dcac8 --- /dev/null +++ b/Gems/ScriptCanvasTesting/Assets/ScriptCanvas/UnitTests/LY_SC_UnitTest_UseBehaviorContextClassConstant.scriptcanvas @@ -0,0 +1,1173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h b/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h index 7fa3896ff1..eba6b71169 100644 --- a/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h +++ b/Gems/ScriptCanvasTesting/Code/Source/Nodes/BehaviorContextObjectTestNode.h @@ -53,6 +53,7 @@ namespace ScriptCanvasTestingNodes ->Method("SetString", &BehaviorContextObjectTest::SetString) ->Method("GetString", &BehaviorContextObjectTest::GetString) ->Property("Name", BehaviorValueProperty(&BehaviorContextObjectTest::m_name)) + ->Constant("Always24", BehaviorConstant(24)) ; } } diff --git a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp index 5bda0f3941..e2665f31cf 100644 --- a/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp +++ b/Gems/ScriptCanvasTesting/Code/Tests/ScriptCanvas_RuntimeInterpreted.cpp @@ -90,6 +90,11 @@ public: } }; +TEST_F(ScriptCanvasTestFixture, UseBehaviorContextClassConstant) +{ + RunUnitTestGraph("LY_SC_UnitTest_UseBehaviorContextClassConstant"); +} + TEST_F(ScriptCanvasTestFixture, ParseFunctionIfBranchWithConnectedInput) { RunUnitTestGraph("LY_SC_UnitTest_ParseFunctionIfBranchWithConnectedInput"); diff --git a/Gems/StartingPointInput/Code/Source/StartingPointInputGem.cpp b/Gems/StartingPointInput/Code/Source/StartingPointInputGem.cpp index c08cac0188..28ca91976b 100644 --- a/Gems/StartingPointInput/Code/Source/StartingPointInputGem.cpp +++ b/Gems/StartingPointInput/Code/Source/StartingPointInputGem.cpp @@ -167,6 +167,7 @@ namespace StartingPointInput { "actionName", "The name of the Input event action used to create an InputEventNotificationId" } } }); behaviorContext->EBus("InputEventNotificationBus") + ->Attribute(AZ::Script::Attributes::ExcludeFrom, AZ::Script::Attributes::ExcludeFlags::List) ->Handler() ->Event("OnPressed", &InputEventNotificationBus::Events::OnPressed) ->Event("OnHeld", &InputEventNotificationBus::Events::OnHeld) diff --git a/Registry/AssetProcessorPlatformConfig.setreg b/Registry/AssetProcessorPlatformConfig.setreg index 2147842da7..0e91bec8a7 100644 --- a/Registry/AssetProcessorPlatformConfig.setreg +++ b/Registry/AssetProcessorPlatformConfig.setreg @@ -471,17 +471,11 @@ "params": "copy", "productAssetType": "{F3BE5CAB-85B7-44B7-9495-863863F6B267}" }, - // Precompiled shader srg - "RC azsrg": { - "glob": "*.azsrg", - "params": "copy", - "productAssetType": "{F8C9F4AE-3F6A-45AD-B4FB-0CA415FCC2E1}" - }, // Precompiled shader variant "RC azshadervariant": { "glob": "*.azshadervariant", "params": "copy", - "productAssetType": "{9F4D654B-4439-4C61-8DCD-F1C7C5560768}" + "productAssetType": "{51BED815-36D8-410E-90F0-1FA9FF765FBA}" } } } diff --git a/Templates/DefaultGem/Template/Code/Include/${Name}/${Name}Bus.h b/Templates/DefaultGem/Template/Code/Include/${Name}/${Name}Bus.h index 0e8ab29cc4..32f34e309e 100644 --- a/Templates/DefaultGem/Template/Code/Include/${Name}/${Name}Bus.h +++ b/Templates/DefaultGem/Template/Code/Include/${Name}/${Name}Bus.h @@ -15,22 +15,30 @@ #pragma once #include +#include -namespace ${Name} +namespace ${SanitizedCppName} { - class ${Name}Requests + class ${SanitizedCppName}Requests + { + public: + AZ_RTTI(${SanitizedCppName}Requests, "${Random_Uuid}"); + virtual ~${SanitizedCppName}Requests() = default; + // Put your public methods here + }; + + class ${SanitizedCppName}BusTraits : public AZ::EBusTraits { public: ////////////////////////////////////////////////////////////////////////// // EBusTraits overrides - static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; + static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; + static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; ////////////////////////////////////////////////////////////////////////// - - // Put your public methods here }; - using ${Name}RequestBus = AZ::EBus<${Name}Requests>; + using ${SanitizedCppName}RequestBus = AZ::EBus<${SanitizedCppName}Requests, ${SanitizedCppName}BusTraits>; + using ${SanitizedCppName}Interface = AZ::Interface<${SanitizedCppName}Requests>; -} // namespace ${Name} +} // namespace ${SanitizedCppName} diff --git a/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.cpp b/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.cpp index 5884489904..fedc37da6b 100644 --- a/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.cpp +++ b/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.cpp @@ -15,24 +15,40 @@ #include #include <${Name}EditorSystemComponent.h> -namespace ${Name} +namespace ${SanitizedCppName} { - void ${Name}EditorSystemComponent::Reflect(AZ::ReflectContext* context) + void ${SanitizedCppName}EditorSystemComponent::Reflect(AZ::ReflectContext* context) { if (auto serializeContext = azrtti_cast(context)) { - serializeContext->Class<${Name}EditorSystemComponent, AZ::Component>()->Version(1); + serializeContext->Class<${SanitizedCppName}EditorSystemComponent, AZ::Component>()->Version(1); } } - void ${Name}EditorSystemComponent::Activate() + ${SanitizedCppName}EditorSystemComponent::${SanitizedCppName}EditorSystemComponent() + { + if (${SanitizedCppName}Interface::Get() == nullptr) + { + ${SanitizedCppName}Interface::Register(this); + } + } + + ${SanitizedCppName}EditorSystemComponent::~${SanitizedCppName}EditorSystemComponent() + { + if (${SanitizedCppName}Interface::Get() == this) + { + ${SanitizedCppName}Interface::Unregister(this); + } + } + + void ${SanitizedCppName}EditorSystemComponent::Activate() { AzToolsFramework::EditorEvents::Bus::Handler::BusConnect(); } - void ${Name}EditorSystemComponent::Deactivate() + void ${SanitizedCppName}EditorSystemComponent::Deactivate() { AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect(); } -} // namespace ${Name} +} // namespace ${SanitizedCppName} diff --git a/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.h b/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.h index 1f973651ee..ef7b0a2f2e 100644 --- a/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.h +++ b/Templates/DefaultGem/Template/Code/Source/${Name}EditorSystemComponent.h @@ -18,32 +18,33 @@ #include -namespace ${Name} +namespace ${SanitizedCppName} { - /// System component for ${Name} editor - class ${Name}EditorSystemComponent + /// System component for ${SanitizedCppName} editor + class ${SanitizedCppName}EditorSystemComponent : public AZ::Component , private AzToolsFramework::EditorEvents::Bus::Handler { public: - AZ_COMPONENT(${Name}EditorSystemComponent, "${EditorSysCompClassId}"); + AZ_COMPONENT(${SanitizedCppName}EditorSystemComponent, "${EditorSysCompClassId}"); static void Reflect(AZ::ReflectContext* context); - ${Name}EditorSystemComponent() = default; + ${SanitizedCppName}EditorSystemComponent(); + ~${SanitizedCppName}EditorSystemComponent(); private: static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) { - provided.push_back(AZ_CRC("${Name}EditorService")); + provided.push_back(AZ_CRC("${SanitizedCppName}EditorService")); } static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required) { - required.push_back(AZ_CRC("${Name}Service")); + required.push_back(AZ_CRC("${SanitizedCppName}Service")); } // AZ::Component void Activate() override; void Deactivate() override; }; -} // namespace ${Name} +} // namespace ${SanitizedCppName} diff --git a/Templates/DefaultGem/Template/Code/Source/${Name}Module.cpp b/Templates/DefaultGem/Template/Code/Source/${Name}Module.cpp index 3c6be88158..ca4a724f49 100644 --- a/Templates/DefaultGem/Template/Code/Source/${Name}Module.cpp +++ b/Templates/DefaultGem/Template/Code/Source/${Name}Module.cpp @@ -17,21 +17,21 @@ #include <${Name}SystemComponent.h> -namespace ${Name} +namespace ${SanitizedCppName} { - class ${Name}Module + class ${SanitizedCppName}Module : public AZ::Module { public: - AZ_RTTI(${Name}Module, "${ModuleClassId}", AZ::Module); - AZ_CLASS_ALLOCATOR(${Name}Module, AZ::SystemAllocator, 0); + AZ_RTTI(${SanitizedCppName}Module, "${ModuleClassId}", AZ::Module); + AZ_CLASS_ALLOCATOR(${SanitizedCppName}Module, AZ::SystemAllocator, 0); - ${Name}Module() + ${SanitizedCppName}Module() : AZ::Module() { // Push results of [MyComponent]::CreateDescriptor() into m_descriptors here. m_descriptors.insert(m_descriptors.end(), { - ${Name}SystemComponent::CreateDescriptor(), + ${SanitizedCppName}SystemComponent::CreateDescriptor(), }); } @@ -41,10 +41,10 @@ namespace ${Name} AZ::ComponentTypeList GetRequiredSystemComponents() const override { return AZ::ComponentTypeList { - azrtti_typeid<${Name}SystemComponent>(), + azrtti_typeid<${SanitizedCppName}SystemComponent>(), }; } }; -}// namespace ${Name} +}// namespace ${SanitizedCppName} -AZ_DECLARE_MODULE_CLASS(Gem_${Name}, ${Name}::${Name}Module) +AZ_DECLARE_MODULE_CLASS(Gem_${SanitizedCppName}, ${SanitizedCppName}::${SanitizedCppName}Module) diff --git a/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.cpp b/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.cpp index 7f91197e4a..8f7eabf74e 100644 --- a/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.cpp +++ b/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.cpp @@ -18,19 +18,19 @@ #include #include -namespace ${Name} +namespace ${SanitizedCppName} { - void ${Name}SystemComponent::Reflect(AZ::ReflectContext* context) + void ${SanitizedCppName}SystemComponent::Reflect(AZ::ReflectContext* context) { if (AZ::SerializeContext* serialize = azrtti_cast(context)) { - serialize->Class<${Name}SystemComponent, AZ::Component>() + serialize->Class<${SanitizedCppName}SystemComponent, AZ::Component>() ->Version(0) ; if (AZ::EditContext* ec = serialize->GetEditContext()) { - ec->Class<${Name}SystemComponent>("${Name}", "[Description of functionality provided by this System Component]") + ec->Class<${SanitizedCppName}SystemComponent>("${SanitizedCppName}", "[Description of functionality provided by this System Component]") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System")) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) @@ -39,45 +39,61 @@ namespace ${Name} } } - void ${Name}SystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) + void ${SanitizedCppName}SystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) { - provided.push_back(AZ_CRC("${Name}Service")); + provided.push_back(AZ_CRC("${SanitizedCppName}Service")); } - void ${Name}SystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) + void ${SanitizedCppName}SystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) { - incompatible.push_back(AZ_CRC("${Name}Service")); + incompatible.push_back(AZ_CRC("${SanitizedCppName}Service")); } - void ${Name}SystemComponent::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required) + void ${SanitizedCppName}SystemComponent::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required) { AZ_UNUSED(required); } - void ${Name}SystemComponent::GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent) + void ${SanitizedCppName}SystemComponent::GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent) { AZ_UNUSED(dependent); } - void ${Name}SystemComponent::Init() + ${SanitizedCppName}SystemComponent::${SanitizedCppName}SystemComponent() + { + if (${SanitizedCppName}Interface::Get() == nullptr) + { + ${SanitizedCppName}Interface::Register(this); + } + } + + ${SanitizedCppName}SystemComponent::~${SanitizedCppName}SystemComponent() + { + if (${SanitizedCppName}Interface::Get() == this) + { + ${SanitizedCppName}Interface::Unregister(this); + } + } + + void ${SanitizedCppName}SystemComponent::Init() { } - void ${Name}SystemComponent::Activate() + void ${SanitizedCppName}SystemComponent::Activate() { - ${Name}RequestBus::Handler::BusConnect(); + ${SanitizedCppName}RequestBus::Handler::BusConnect(); AZ::TickBus::Handler::BusConnect(); } - void ${Name}SystemComponent::Deactivate() + void ${SanitizedCppName}SystemComponent::Deactivate() { AZ::TickBus::Handler::BusDisconnect(); - ${Name}RequestBus::Handler::BusDisconnect(); + ${SanitizedCppName}RequestBus::Handler::BusDisconnect(); } - void ${Name}SystemComponent::OnTick(float /*deltaTime*/, AZ::ScriptTimePoint /*time*/) + void ${SanitizedCppName}SystemComponent::OnTick(float /*deltaTime*/, AZ::ScriptTimePoint /*time*/) { } -} // namespace ${Name} +} // namespace ${SanitizedCppName} diff --git a/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.h b/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.h index 5071e7b9c7..8e91650c65 100644 --- a/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.h +++ b/Templates/DefaultGem/Template/Code/Source/${Name}SystemComponent.h @@ -18,15 +18,15 @@ #include #include <${Name}/${Name}Bus.h> -namespace ${Name} +namespace ${SanitizedCppName} { - class ${Name}SystemComponent + class ${SanitizedCppName}SystemComponent : public AZ::Component - , protected ${Name}RequestBus::Handler + , protected ${SanitizedCppName}RequestBus::Handler , public AZ::TickBus::Handler { public: - AZ_COMPONENT(${Name}SystemComponent, "${SysCompClassId}"); + AZ_COMPONENT(${SanitizedCppName}SystemComponent, "${SysCompClassId}"); static void Reflect(AZ::ReflectContext* context); @@ -35,9 +35,12 @@ namespace ${Name} static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required); static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent); + ${SanitizedCppName}SystemComponent(); + ~${SanitizedCppName}SystemComponent(); + protected: //////////////////////////////////////////////////////////////////////// - // ${Name}RequestBus interface implementation + // ${SanitizedCppName}RequestBus interface implementation //////////////////////////////////////////////////////////////////////// @@ -54,4 +57,4 @@ namespace ${Name} //////////////////////////////////////////////////////////////////////// }; -} // namespace ${Name} +} // namespace ${SanitizedCppName} diff --git a/Templates/DefaultGem/Template/Code/Tests/${Name}EditorTest.cpp b/Templates/DefaultGem/Template/Code/Tests/${Name}EditorTest.cpp index 7fd3fa7cfa..9b36a3aadb 100644 --- a/Templates/DefaultGem/Template/Code/Tests/${Name}EditorTest.cpp +++ b/Templates/DefaultGem/Template/Code/Tests/${Name}EditorTest.cpp @@ -14,7 +14,7 @@ #include -class ${Name}EditorTest +class ${SanitizedCppName}EditorTest : public ::testing::Test { protected: @@ -29,7 +29,7 @@ protected: } }; -TEST_F(${Name}EditorTest, SanityTest) +TEST_F(${SanitizedCppName}EditorTest, SanityTest) { ASSERT_TRUE(true); } diff --git a/Templates/DefaultGem/Template/Code/Tests/${Name}Test.cpp b/Templates/DefaultGem/Template/Code/Tests/${Name}Test.cpp index 8021ca920e..bee38fa9d7 100644 --- a/Templates/DefaultGem/Template/Code/Tests/${Name}Test.cpp +++ b/Templates/DefaultGem/Template/Code/Tests/${Name}Test.cpp @@ -14,7 +14,7 @@ #include -class ${Name}Test +class ${SanitizedCppName}Test : public ::testing::Test { protected: @@ -29,7 +29,7 @@ protected: } }; -TEST_F(${Name}Test, SanityTest) +TEST_F(${SanitizedCppName}Test, SanityTest) { ASSERT_TRUE(true); } diff --git a/Templates/DefaultProject/Template/CMakeLists.txt b/Templates/DefaultProject/Template/CMakeLists.txt index b5b8692059..50e3a528e6 100644 --- a/Templates/DefaultProject/Template/CMakeLists.txt +++ b/Templates/DefaultProject/Template/CMakeLists.txt @@ -11,18 +11,6 @@ # # {END_LICENSE} -#! Adds the --project-path argument to the VS IDE debugger command arguments -function(add_vs_debugger_arguments) - # Inject the project root into the --project-path argument into the Visual Studio Debugger arguments by defaults - list(APPEND app_targets ${Name}.GameLauncher ${Name}.ServerLauncher) - list(APPEND app_targets AssetBuilder AssetProcessor AssetProcessorBatch Editor) - foreach(app_target IN LISTS app_targets) - if (TARGET ${app_target}) - set_property(TARGET ${app_target} APPEND PROPERTY VS_DEBUGGER_COMMAND_ARGUMENTS "--project-path=\"${CMAKE_CURRENT_LIST_DIR}\"") - endif() - endforeach() -endfunction() - if(NOT PROJECT_NAME) cmake_minimum_required(VERSION 3.19) project(${Name} @@ -32,7 +20,6 @@ if(NOT PROJECT_NAME) include(EngineFinder.cmake OPTIONAL) find_package(o3de REQUIRED) o3de_initialize() - add_vs_debugger_arguments() else() # Add the project_name to global LY_PROJECTS_TARGET_NAME property file(READ "${CMAKE_CURRENT_LIST_DIR}/project.json" project_json) diff --git a/Templates/DefaultProject/Template/Code/Include/${Name}/${Name}Bus.h b/Templates/DefaultProject/Template/Code/Include/${Name}/${Name}Bus.h index faa0e8acf6..05e434ec03 100644 --- a/Templates/DefaultProject/Template/Code/Include/${Name}/${Name}Bus.h +++ b/Templates/DefaultProject/Template/Code/Include/${Name}/${Name}Bus.h @@ -15,20 +15,30 @@ #pragma once #include +#include -namespace ${Name} +namespace ${SanitizedCppName} { - class ${Name}Requests + class ${SanitizedCppName}Requests + { + public: + AZ_RTTI(${SanitizedCppName}Requests, "${Random_Uuid}"); + virtual ~${SanitizedCppName}Requests() = default; + // Put your public methods here + }; + + class ${SanitizedCppName}BusTraits : public AZ::EBusTraits { public: ////////////////////////////////////////////////////////////////////////// // EBusTraits overrides - static const AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; + static constexpr AZ::EBusHandlerPolicy HandlerPolicy = AZ::EBusHandlerPolicy::Single; + static constexpr AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::Single; ////////////////////////////////////////////////////////////////////////// - - // Put your public methods here }; - using ${Name}RequestBus = AZ::EBus<${Name}Requests>; -} // namespace ${Name} + + using ${SanitizedCppName}RequestBus = AZ::EBus<${SanitizedCppName}Requests, ${SanitizedCppName}BusTraits>; + using ${SanitizedCppName}Interface = AZ::Interface<${SanitizedCppName}Requests>; + +} // namespace ${SanitizedCppName} diff --git a/Templates/DefaultProject/Template/Code/Source/${Name}Module.cpp b/Templates/DefaultProject/Template/Code/Source/${Name}Module.cpp index 4f11828366..57b473b317 100644 --- a/Templates/DefaultProject/Template/Code/Source/${Name}Module.cpp +++ b/Templates/DefaultProject/Template/Code/Source/${Name}Module.cpp @@ -17,21 +17,21 @@ #include "${Name}SystemComponent.h" -namespace ${Name} +namespace ${SanitizedCppName} { - class ${Name}Module + class ${SanitizedCppName}Module : public AZ::Module { public: - AZ_RTTI(${Name}Module, "${ModuleClassId}", AZ::Module); - AZ_CLASS_ALLOCATOR(${Name}Module, AZ::SystemAllocator, 0); + AZ_RTTI(${SanitizedCppName}Module, "${ModuleClassId}", AZ::Module); + AZ_CLASS_ALLOCATOR(${SanitizedCppName}Module, AZ::SystemAllocator, 0); - ${Name}Module() + ${SanitizedCppName}Module() : AZ::Module() { // Push results of [MyComponent]::CreateDescriptor() into m_descriptors here. m_descriptors.insert(m_descriptors.end(), { - ${Name}SystemComponent::CreateDescriptor(), + ${SanitizedCppName}SystemComponent::CreateDescriptor(), }); } @@ -41,10 +41,10 @@ namespace ${Name} AZ::ComponentTypeList GetRequiredSystemComponents() const override { return AZ::ComponentTypeList{ - azrtti_typeid<${Name}SystemComponent>(), + azrtti_typeid<${SanitizedCppName}SystemComponent>(), }; } }; -}// namespace ${Name} +}// namespace ${SanitizedCppName} -AZ_DECLARE_MODULE_CLASS(Gem_${Name}, ${Name}::${Name}Module) +AZ_DECLARE_MODULE_CLASS(Gem_${SanitizedCppName}, ${SanitizedCppName}::${SanitizedCppName}Module) diff --git a/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.cpp b/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.cpp index 1e505f743c..ed0a47d6db 100644 --- a/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.cpp +++ b/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.cpp @@ -18,19 +18,19 @@ #include "${Name}SystemComponent.h" -namespace ${Name} +namespace ${SanitizedCppName} { - void ${Name}SystemComponent::Reflect(AZ::ReflectContext* context) + void ${SanitizedCppName}SystemComponent::Reflect(AZ::ReflectContext* context) { if (AZ::SerializeContext* serialize = azrtti_cast(context)) { - serialize->Class<${Name}SystemComponent, AZ::Component>() + serialize->Class<${SanitizedCppName}SystemComponent, AZ::Component>() ->Version(0) ; if (AZ::EditContext* ec = serialize->GetEditContext()) { - ec->Class<${Name}SystemComponent>("${Name}", "[Description of functionality provided by this System Component]") + ec->Class<${SanitizedCppName}SystemComponent>("${SanitizedCppName}", "[Description of functionality provided by this System Component]") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System")) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) @@ -39,37 +39,53 @@ namespace ${Name} } } - void ${Name}SystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) + void ${SanitizedCppName}SystemComponent::GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided) { - provided.push_back(AZ_CRC("${Name}Service")); + provided.push_back(AZ_CRC("${SanitizedCppName}Service")); } - void ${Name}SystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) + void ${SanitizedCppName}SystemComponent::GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible) { - incompatible.push_back(AZ_CRC("${Name}Service")); + incompatible.push_back(AZ_CRC("${SanitizedCppName}Service")); } - void ${Name}SystemComponent::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required) + void ${SanitizedCppName}SystemComponent::GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required) { AZ_UNUSED(required); } - void ${Name}SystemComponent::GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent) + void ${SanitizedCppName}SystemComponent::GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent) { AZ_UNUSED(dependent); } + + ${SanitizedCppName}SystemComponent::${SanitizedCppName}SystemComponent() + { + if (${SanitizedCppName}Interface::Get() == nullptr) + { + ${SanitizedCppName}Interface::Register(this); + } + } - void ${Name}SystemComponent::Init() + ${SanitizedCppName}SystemComponent::~${SanitizedCppName}SystemComponent() + { + if (${SanitizedCppName}Interface::Get() == this) + { + ${SanitizedCppName}Interface::Unregister(this); + } + } + + void ${SanitizedCppName}SystemComponent::Init() { } - void ${Name}SystemComponent::Activate() + void ${SanitizedCppName}SystemComponent::Activate() { - ${Name}RequestBus::Handler::BusConnect(); + ${SanitizedCppName}RequestBus::Handler::BusConnect(); } - void ${Name}SystemComponent::Deactivate() + void ${SanitizedCppName}SystemComponent::Deactivate() { - ${Name}RequestBus::Handler::BusDisconnect(); + ${SanitizedCppName}RequestBus::Handler::BusDisconnect(); } } diff --git a/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.h b/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.h index 39ccbda549..10a500aba2 100644 --- a/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.h +++ b/Templates/DefaultProject/Template/Code/Source/${Name}SystemComponent.h @@ -18,14 +18,14 @@ #include <${Name}/${Name}Bus.h> -namespace ${Name} +namespace ${SanitizedCppName} { - class ${Name}SystemComponent + class ${SanitizedCppName}SystemComponent : public AZ::Component - , protected ${Name}RequestBus::Handler + , protected ${SanitizedCppName}RequestBus::Handler { public: - AZ_COMPONENT(${Name}SystemComponent, "${SysCompClassId}"); + AZ_COMPONENT(${SanitizedCppName}SystemComponent, "${SysCompClassId}"); static void Reflect(AZ::ReflectContext* context); @@ -34,9 +34,12 @@ namespace ${Name} static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required); static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent); + ${SanitizedCppName}SystemComponent(); + ~${SanitizedCppName}SystemComponent(); + protected: //////////////////////////////////////////////////////////////////////// - // ${Name}RequestBus interface implementation + // ${SanitizedCppName}RequestBus interface implementation //////////////////////////////////////////////////////////////////////// diff --git a/cmake/Platform/Common/Clang/Configurations_clang.cmake b/cmake/Platform/Common/Clang/Configurations_clang.cmake index 768b7dd4c2..4f9b3154e6 100644 --- a/cmake/Platform/Common/Clang/Configurations_clang.cmake +++ b/cmake/Platform/Common/Clang/Configurations_clang.cmake @@ -40,7 +40,6 @@ ly_append_configurations_options( -Wno-unused-private-field -Wno-unused-value -Wno-unused-variable - -Wno-non-pod-varargs -Wno-unused-lambda-capture # Workaround for compiler seeing file case differently from what OS show in console. -Wno-nonportable-include-path diff --git a/cmake/Platform/Common/Install_common.cmake b/cmake/Platform/Common/Install_common.cmake index a579e3128d..933d64149b 100644 --- a/cmake/Platform/Common/Install_common.cmake +++ b/cmake/Platform/Common/Install_common.cmake @@ -374,7 +374,7 @@ function(ly_setup_cmake_install) string(APPEND builtinpackages "ly_associate_package(PACKAGE_NAME ${package_name} TARGETS ${targets} PACKAGE_HASH ${package_hash})\n") endforeach() - ly_get_absolute_pal_filename(pal_builtin_file ${CMAKE_CURRENT_BINARY_DIR}/cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}/BuiltInPackages_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) + set(pal_builtin_file ${CMAKE_CURRENT_BINARY_DIR}/cmake/3rdParty/Platform/${PAL_PLATFORM_NAME}/BuiltInPackages_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) file(GENERATE OUTPUT ${pal_builtin_file} CONTENT ${builtinpackages} ) diff --git a/scripts/o3de/o3de/engine_template.py b/scripts/o3de/o3de/engine_template.py index 9bb62eff35..06e34cc449 100755 --- a/scripts/o3de/o3de/engine_template.py +++ b/scripts/o3de/o3de/engine_template.py @@ -1232,10 +1232,12 @@ def create_from_template(destination_path: str, with_this = replace.pop(0) replacements.append((replace_this, with_this)) + sanitized_cpp_name = utils.sanitize_identifier_for_cpp(destination_name) # dst name is Name replacements.append(("${Name}", destination_name)) replacements.append(("${NameUpper}", destination_name.upper())) replacements.append(("${NameLower}", destination_name.lower())) + replacements.append(("${SanitizedCppName}", sanitized_cpp_name)) if _instantiate_template(template_json_data, destination_name, @@ -1536,10 +1538,12 @@ def create_project(project_path: str, with_this = replace.pop(0) replacements.append((replace_this, with_this)) + sanitized_cpp_name = utils.sanitize_identifier_for_cpp(project_name) # project name replacements.append(("${Name}", project_name)) replacements.append(("${NameUpper}", project_name.upper())) replacements.append(("${NameLower}", project_name.lower())) + replacements.append(("${SanitizedCppName}", sanitized_cpp_name)) # module id is a uuid with { and - if module_id: @@ -1890,6 +1894,10 @@ def create_gem(gem_path: str, # gem name is now the last component of the gem_path gem_name = os.path.basename(gem_path) + if not utils.validate_identifier(gem_name): + logger.error(f'Gem name must be fewer than 64 characters, contain only alphanumeric, "_" or "-" characters, and start with a letter. {gem_name}') + return 1 + # gem name cannot be the same as a restricted platform name if gem_name in restricted_platforms: logger.error(f'Gem path cannot be a restricted name. {gem_name}') @@ -1927,10 +1935,13 @@ def create_gem(gem_path: str, with_this = replace.pop(0) replacements.append((replace_this, with_this)) + sanitized_cpp_name = utils.sanitize_identifier_for_cpp(gem_name) # gem name replacements.append(("${Name}", gem_name)) replacements.append(("${NameUpper}", gem_name.upper())) replacements.append(("${NameLower}", gem_name.lower())) + replacements.append(("${SanitizedCppName}", sanitized_cpp_name)) + # module id is a uuid with { and - if module_id: diff --git a/scripts/o3de/o3de/project_properties.py b/scripts/o3de/o3de/project_properties.py index 52f1346b51..33a4c8ff95 100644 --- a/scripts/o3de/o3de/project_properties.py +++ b/scripts/o3de/o3de/project_properties.py @@ -45,20 +45,20 @@ def edit_project_props(proj_path, proj_name, new_origin, new_display, if new_icon: proj_json['icon_path'] = new_icon if new_tags: - tag_list = [new_tags] if isinstance(new_tags, str) else new_tags + tag_list = new_tags.split() if isinstance(new_tags, str) else new_tags proj_json.setdefault('user_tags', []).extend(tag_list) if delete_tags: - removal_list = [delete_tags] if isinstance(delete_tags, str) else delete_tags + removal_list = delete_tags.split() if isinstance(delete_tags, str) else delete_tags if 'user_tags' in proj_json: for tag in removal_list: if tag in proj_json['user_tags']: proj_json['user_tags'].remove(tag) else: - logger.warn(f'{tag} not found in user_tags for removal.') + logger.warning(f'{tag} not found in user_tags for removal.') else: - logger.warn(f'user_tags property not found for removal of {remove_tags}.') + logger.warning(f'user_tags property not found for removal of {delete_tags}.') if replace_tags: - tag_list = [replace_tags] if isinstance(replace_tags, str) else replace_tags + tag_list = replace_tags.split() if isinstance(replace_tags, str) else replace_tags proj_json['user_tags'] = tag_list manifest.save_o3de_manifest(proj_json, pathlib.Path(proj_path) / 'project.json') diff --git a/scripts/o3de/o3de/utils.py b/scripts/o3de/o3de/utils.py index 4330de25b8..11c668a37b 100755 --- a/scripts/o3de/o3de/utils.py +++ b/scripts/o3de/o3de/utils.py @@ -36,6 +36,23 @@ def validate_identifier(identifier: str) -> bool: return True +def sanitize_identifier_for_cpp(identifier: str) -> str: + """ + Convert the provided identifier to a valid C++ identifier + :param identifier: the name which needs to to sanitized + :return: str: sanitized identifier + """ + if not identifier: + return '' + + sanitized_identifier = list(identifier) + for index, character in enumerate(sanitized_identifier): + if not (character.isalnum() or character == '_'): + sanitized_identifier[index] = '_' + + return "".join(sanitized_identifier) + + def validate_uuid4(uuid_string: str) -> bool: """ Determine if the uuid supplied is valid. diff --git a/scripts/o3de/tests/CMakeLists.txt b/scripts/o3de/tests/CMakeLists.txt index 82b994e387..98c4be3b2f 100644 --- a/scripts/o3de/tests/CMakeLists.txt +++ b/scripts/o3de/tests/CMakeLists.txt @@ -41,3 +41,10 @@ ly_add_pytest( TEST_SUITE smoke EXCLUDE_TEST_RUN_TARGET_FROM_IDE ) + +ly_add_pytest( + NAME o3de_project_properties + PATH ${CMAKE_CURRENT_LIST_DIR}/unit_test_project_properties.py + TEST_SUITE smoke + EXCLUDE_TEST_RUN_TARGET_FROM_IDE +) diff --git a/scripts/o3de/tests/unit_test_project_properties.py b/scripts/o3de/tests/unit_test_project_properties.py new file mode 100644 index 0000000000..5e9aea3964 --- /dev/null +++ b/scripts/o3de/tests/unit_test_project_properties.py @@ -0,0 +1,83 @@ +# +# 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. +# + +import pytest +import pathlib +from unittest.mock import patch +from o3de import project_properties + + +TEST_DEFAULT_PROJECT_DATA = { + "template_name": "DefaultProject", + "restricted_name": "o3de", + "restricted_platform_relative_path": "Templates", + "origin": "The primary repo for DefaultProject goes here: i.e. http://www.mydomain.com", + "license": "What license DefaultProject uses goes here: i.e. https://opensource.org/licenses/MIT", + "display_name": "Default", + "summary": "A short description of DefaultProject.", + "included_gems": ["Atom","Camera","EMotionFX","UI","Maestro","Input","ImGui"], + "canonical_tags": [], + "user_tags": [ + "DefaultProject" + ], + "icon_path": "preview.png" +} + +@pytest.fixture(scope='class') +def init_project_json_data(request): + class ProjectJsonData: + def __init__(self): + self.data = TEST_DEFAULT_PROJECT_DATA + request.cls.project_json = ProjectJsonData() + +@pytest.mark.usefixtures('init_project_json_data') +class TestEditProjectProperties: + @pytest.mark.parametrize("project_path, project_name, project_origin, project_display,\ + project_summary, project_icon, add_tags, delete_tags,\ + replace_tags, expected_result", [ + pytest.param(pathlib.PurePath('E:/TestProject'), + 'test', 'editing by pytest', 'Unit Test', 'pyTest project', 'pytest.bmp', 'A B C', + 'B', 'D E F', 0), + pytest.param('', + 'test', 'editing by pytest', 'Unit Test', 'pyTest project', 'pytest.bmp', 'A B C', + 'B', 'D E F', 1) + ] + ) + def test_edit_project_properties(self, project_path, project_name, project_origin, project_display, + project_summary, project_icon, add_tags, delete_tags, + replace_tags, expected_result): + + def get_project_json_data(project_name: str, project_path) -> dict: + if not project_path: + self.project_json.data = None + return None + return self.project_json.data + + def save_o3de_manifest(new_proj_data: dict, project_path) -> None: + self.project_json.data = new_proj_data + + with patch('o3de.manifest.get_project_json_data', side_effect=get_project_json_data) as get_project_json_data_patch, \ + patch('o3de.manifest.save_o3de_manifest', side_effect=save_o3de_manifest) as save_o3de_manifest_patch: + result = project_properties.edit_project_props(project_path, project_name, project_origin, + project_display, project_summary, project_icon, + add_tags, delete_tags, replace_tags) + assert result == expected_result + if project_path: + assert self.project_json.data + assert self.project_json.data.get('origin', '') == project_origin + assert self.project_json.data.get('display_name', '') == project_display + assert self.project_json.data.get('summary', '') == project_summary + assert self.project_json.data.get('icon_path', '') == project_icon + expected_tag_set = set(replace_tags.split()) + project_json_tag_set = set(self.project_json.data.get('user_tags', [])) + assert project_json_tag_set == expected_tag_set + else: + assert not self.project_json.data