From a371edd07fa94d1c231162cc24062eb3452a95bb Mon Sep 17 00:00:00 2001 From: srikappa Date: Wed, 14 Apr 2021 17:26:14 -0700 Subject: [PATCH 01/59] Initial commit of CreatePrefab work --- .../PrefabEditorEntityOwnershipService.cpp | 25 ++- .../PrefabEditorEntityOwnershipService.h | 2 +- .../Prefab/Instance/Instance.cpp | 2 +- .../Instance/InstanceUpdateExecutor.cpp | 57 ++++- .../Prefab/Instance/InstanceUpdateExecutor.h | 14 ++ .../Prefab/PrefabPublicHandler.cpp | 211 ++++++++++++------ .../Prefab/PrefabPublicHandler.h | 5 +- .../Prefab/PrefabPublicInterface.h | 2 +- .../Prefab/PrefabSystemComponent.cpp | 33 ++- .../UI/Prefab/PrefabIntegrationManager.cpp | 16 +- .../UI/Prefab/PrefabIntegrationManager.h | 4 + 11 files changed, 281 insertions(+), 90 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp index 4b23b46ffd..2424658ecf 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp @@ -279,18 +279,29 @@ namespace AzToolsFramework AZStd::unique_ptr createdPrefabInstance = m_prefabSystemComponent->CreatePrefab(entities, AZStd::move(nestedPrefabInstances), filePath); - if (!instanceToParentUnder) - { - instanceToParentUnder = *m_rootInstance; - } - if (createdPrefabInstance) { + if (!instanceToParentUnder) + { + instanceToParentUnder = *m_rootInstance; + } + Prefab::Instance& addedInstance = instanceToParentUnder->get().AddInstance(AZStd::move(createdPrefabInstance)); - HandleEntitiesAdded({addedInstance.m_containerEntity.get()}); + AZ::Entity* containerEntity = addedInstance.m_containerEntity.get(); + containerEntity->AddComponent(aznew Prefab::EditorPrefabComponent()); + HandleEntitiesAdded({containerEntity}); + HandleEntitiesAdded(entities); + + // Update the template of the instance since we modified the entities of the instance by calling HandleEntitiesAdded. + Prefab::PrefabDom serializedInstance; + if (Prefab::PrefabDomUtils::StoreInstanceInPrefabDom(addedInstance, serializedInstance)) + { + m_prefabSystemComponent->UpdatePrefabTemplate(addedInstance.GetTemplateId(), serializedInstance); + } + return addedInstance; } - HandleEntitiesAdded(entities); + return AZStd::nullopt; } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h index ad11547506..36a60cc501 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.h @@ -186,7 +186,7 @@ namespace AzToolsFramework PlayInEditorData m_playInEditorData; ////////////////////////////////////////////////////////////////////////// - // PrefabSystemComponentInterface interface implementation + // PrefabEditorEntityOwnershipInterface implementation Prefab::InstanceOptionalReference CreatePrefab( const AZStd::vector& entities, AZStd::vector>&& nestedPrefabInstances, AZ::IO::PathView filePath, Prefab::InstanceOptionalReference instanceToParentUnder) override; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp index 0a5b43482e..bd4c343a3c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp @@ -283,7 +283,7 @@ namespace AzToolsFramework { if (!m_instanceEntityMapper->RegisterEntityToInstance(entityId, *this)) { - AZ_Assert(false, + AZ_Error("Prefab", false, "Prefab - Failed to register entity with id %s with a Prefab Instance derived from source asset %s " "This entity is likely already registered. Check for a double add.", entityId.ToString().c_str(), diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp index 65de6b713c..7df1602bff 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -117,6 +118,8 @@ namespace AzToolsFramework currentTemplateId); isUpdateSuccessful = false; + m_instancesUpdateQueue.pop(); + continue; } } @@ -139,9 +142,16 @@ namespace AzToolsFramework } m_instancesUpdateQueue.pop(); - } + for (auto entityIdIterator = selectedEntityIds.begin(); entityIdIterator != selectedEntityIds.end(); entityIdIterator++) + { + AZ::Entity* entity = GetEntityById(*entityIdIterator); + if (entity == nullptr) + { + selectedEntityIds.erase(entityIdIterator--); + } + } ToolsApplicationRequestBus::Broadcast(&ToolsApplicationRequests::SetSelectedEntities, selectedEntityIds); // Enable the Outliner @@ -163,5 +173,50 @@ namespace AzToolsFramework return isUpdateSuccessful; } + + Instance* InstanceUpdateExecutor::UniqueInstanceQueue::front() + { + return m_instancesQueue.front(); + } + + void InstanceUpdateExecutor::UniqueInstanceQueue::pop() + { + m_instancesSet.erase(m_instancesQueue.front()); + m_instancesQueue.pop(); + } + + void InstanceUpdateExecutor::UniqueInstanceQueue::emplace(Instance* instance) + { + Instance* ancestorInstance = instance; + + while (ancestorInstance != nullptr) + { + if (m_instancesSet.contains(ancestorInstance)) + { + return; + } + + auto parent = ancestorInstance->GetParentInstance(); + if (parent.has_value()) + { + ancestorInstance = &(parent->get()); + } + else + { + ancestorInstance = nullptr; + } + } + + // TODO - remove child instances too? + // Optimization. + + m_instancesQueue.emplace(instance); + m_instancesSet.emplace(instance); + } + + size_t InstanceUpdateExecutor::UniqueInstanceQueue::size() + { + return m_instancesQueue.size(); + } } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h index 04bd189816..a29e19dc8a 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h @@ -15,6 +15,7 @@ #include #include #include +#include #include #include @@ -45,6 +46,19 @@ namespace AzToolsFramework PrefabSystemComponentInterface* m_prefabSystemComponentInterface = nullptr; TemplateInstanceMapperInterface* m_templateInstanceMapperInterface = nullptr; int m_instanceCountToUpdateInBatch = 0; + + class UniqueInstanceQueue + { + public: + Instance* front(); + void pop(); + void emplace(Instance* instance); + size_t size(); + private: + AZStd::queue m_instancesQueue; + AZStd::unordered_set m_instancesSet; + }; + //UniqueInstanceQueue m_instancesUpdateQueue; AZStd::queue m_instancesUpdateQueue; bool m_updatingTemplateInstancesInQueue { false }; }; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 417a524e77..292ee3c7f8 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -15,15 +15,16 @@ #include #include +#include #include #include #include #include -#include #include #include #include #include +#include #include #include #include @@ -37,12 +38,14 @@ namespace AzToolsFramework void PrefabPublicHandler::RegisterPrefabPublicHandlerInterface() { m_instanceEntityMapperInterface = AZ::Interface::Get(); - AZ_Assert( - m_instanceEntityMapperInterface, "PrefabPublicHandler - Could not retrieve instance of InstanceEntityMapperInterface"); + AZ_Assert(m_instanceEntityMapperInterface, "PrefabPublicHandler - Could not retrieve instance of InstanceEntityMapperInterface"); m_instanceToTemplateInterface = AZ::Interface::Get(); AZ_Assert(m_instanceToTemplateInterface, "PrefabPublicHandler - Could not retrieve instance of InstanceToTemplateInterface"); + m_prefabLoaderInterface = AZ::Interface::Get(); + AZ_Assert(m_prefabLoaderInterface, "Could not get PrefabLoaderInterface on PrefabPublicHandler construction."); + m_prefabSystemComponentInterface = AZ::Interface::Get(); AZ_Assert(m_prefabSystemComponentInterface, "Could not get PrefabSystemComponentInterface on PrefabPublicHandler construction."); @@ -58,7 +61,7 @@ namespace AzToolsFramework m_prefabUndoCache.Destroy(); } - PrefabOperationResult PrefabPublicHandler::CreatePrefab(const AZStd::vector& entityIds, AZStd::string_view filePath) + PrefabOperationResult PrefabPublicHandler::CreatePrefab(const AZStd::vector& entityIds, AZ::IO::PathView filePath) { // Retrieve entityList from entityIds EntityList inputEntityList; @@ -70,17 +73,14 @@ namespace AzToolsFramework EntityList topLevelEntities; AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult( - entitiesHaveCommonRoot, - &AzToolsFramework::ToolsApplicationRequests::FindCommonRootInactive, - inputEntityList, - commonRootEntityId, - &topLevelEntities - ); + entitiesHaveCommonRoot, &AzToolsFramework::ToolsApplicationRequests::FindCommonRootInactive, inputEntityList, + commonRootEntityId, &topLevelEntities); // Bail if entities don't share a common root if (!entitiesHaveCommonRoot) { - return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root.")); + return AZ::Failure( + AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root.")); } AZ::Entity* commonRootEntity = nullptr; @@ -91,58 +91,139 @@ namespace AzToolsFramework // Retrieve the owning instance of the common root entity, which will be our new instance's parent instance. InstanceOptionalReference commonRootEntityOwningInstance = GetOwnerInstanceByEntityId(commonRootEntityId); - AZ_Assert(commonRootEntityOwningInstance.has_value(), "Failed to create prefab : " + AZ_Assert( + commonRootEntityOwningInstance.has_value(), + "Failed to create prefab : " "Couldn't get a valid owning instance for the common root entity of the enities provided"); AZStd::vector entities; AZStd::vector> instances; - // Retrieve all entities affected and identify Instances - if (!RetrieveAndSortPrefabEntitiesAndInstances(inputEntityList, commonRootEntityOwningInstance->get(), entities, instances)) + InstanceOptionalReference instance; + { - return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root.")); + // Initialize Undo Batch object + ScopedUndoBatch undoBatch("Create Prefab"); + + TemplateId commonRootOwningTemplateId = commonRootEntityOwningInstance->get().GetTemplateId(); + + PrefabDom commonRootInstanceDomBeforeCreate; + m_instanceToTemplateInterface->GenerateDomForInstance( + commonRootInstanceDomBeforeCreate, commonRootEntityOwningInstance->get()); + + // Retrieve all entities affected and identify Instances + if (!RetrieveAndSortPrefabEntitiesAndInstances(inputEntityList, commonRootEntityOwningInstance->get(), entities, instances)) + { + return AZ::Failure( + AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root.")); + } + + auto prefabEditorEntityOwnershipInterface = AZ::Interface::Get(); + if (!prefabEditorEntityOwnershipInterface) + { + return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error " + "(PrefabEditorEntityOwnershipInterface unavailable).")); + } + + // When you move instances from another template, you have to remove the links and propagate changes to target template. + auto linkRemoveUndo = aznew PrefabUndoInstanceLink("Undo Link Remove Node"); + for (auto& nestedInstance : instances) + { + PrefabDom emptyLinkDom; + linkRemoveUndo->Capture( + commonRootOwningTemplateId, nestedInstance->GetTemplateId(), nestedInstance->GetInstanceAlias(), emptyLinkDom, + nestedInstance->GetLinkId()); + linkRemoveUndo->SetParent(undoBatch.GetUndoBatch()); + } + + // Create the Prefab + instance = prefabEditorEntityOwnershipInterface->CreatePrefab( + entities, AZStd::move(instances), filePath, commonRootEntityOwningInstance); + + if (!instance) + { + return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error " + "(A null instance is returned).")); + } + + PrefabDom commonRootInstanceDomAfterCreate; + m_instanceToTemplateInterface->GenerateDomForInstance( + commonRootInstanceDomAfterCreate, commonRootEntityOwningInstance->get()); + + auto commonRootInstanceUndoNode = aznew PrefabUndoInstance("Undo Instance Node"); + commonRootInstanceUndoNode->Capture( + commonRootInstanceDomBeforeCreate, commonRootInstanceDomAfterCreate, commonRootOwningTemplateId); + commonRootInstanceUndoNode->SetParent(undoBatch.GetUndoBatch()); + commonRootInstanceUndoNode->Redo(); + + linkRemoveUndo->Redo(); + + + AZ::EntityId containerEntityId = instance->get().GetContainerEntityId(); + AZ::Entity* containerEntity = GetEntityById(containerEntityId); + + // Apply Transform changes as overrides + { + Prefab::PrefabDom containerEntityDomBefore; + m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomBefore, *containerEntity); + + AZ::Vector3 containerEntityTranslation(AZ::Vector3::CreateZero()); + AZ::Quaternion containerEntityRotation(AZ::Quaternion::CreateZero()); + + // Set the transform (translation, rotation) of the container entity + GenerateContainerEntityTransform(topLevelEntities, containerEntityTranslation, containerEntityRotation); + + // Set container entity to be child of common root + AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetParent, commonRootEntityId); + + AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalTranslation, containerEntityTranslation); + AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalRotationQuaternion, containerEntityRotation); + + PrefabDom containerEntityDomAfter; + m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomAfter, *containerEntity); + + PrefabDom patch; + m_instanceToTemplateInterface->GeneratePatch(patch, containerEntityDomBefore, containerEntityDomAfter); + + m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(patch, containerEntityId); + + + auto linkAddUndo = aznew PrefabUndoInstanceLink("Undo Link Add Node"); + linkAddUndo->Capture( + commonRootEntityOwningInstance->get().GetTemplateId(), instance->get().GetTemplateId(), instance->get().GetInstanceAlias(), + patch, InvalidLinkId); + linkAddUndo->SetParent(undoBatch.GetUndoBatch()); + + linkAddUndo->Redo(); + + // Update the cache - this prevents these changes from being stored in the regular undo/redo nodes + m_prefabUndoCache.Store(containerEntityId, AZStd::move(containerEntityDomAfter)); + } + + // Change top level entities to be parented to the container entity + // Mark them as dirty so this change is correctly applied to the template + for (AZ::Entity* topLevelEntity : topLevelEntities) + { + m_prefabUndoCache.UpdateCache(topLevelEntity->GetId()); + undoBatch.MarkEntityDirty(topLevelEntity->GetId()); + AZ::TransformBus::Event(topLevelEntity->GetId(), &AZ::TransformBus::Events::SetParent, containerEntityId); + } + + /* + // Select Container Entity + { + auto selectionUndo = aznew SelectionCommand({containerEntityId}, "Select Prefab Container Entity"); + selectionUndo->SetParent(undoBatch.GetUndoBatch()); + + ToolsApplicationRequestBus::Broadcast(&ToolsApplicationRequestBus::Events::RunRedoSeparately, selectionUndo); + }*/ } - auto prefabEditorEntityOwnershipInterface = AZ::Interface::Get(); - if (!prefabEditorEntityOwnershipInterface) - { - return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error " - "(PrefabEditorEntityOwnershipInterface unavailable).")); - } + // Save Template to file + m_prefabLoaderInterface->SaveTemplate(instance->get().GetTemplateId()); - InstanceOptionalReference instance = prefabEditorEntityOwnershipInterface->CreatePrefab( - entities, AZStd::move(instances), filePath, commonRootEntityOwningInstance); - - if (!instance) - { - return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error " - "(A null instance is returned).")); - } - - AZ::EntityId containerEntityId = instance->get().GetContainerEntityId(); - AZ::Vector3 containerEntityTranslation(AZ::Vector3::CreateZero()); - AZ::Quaternion containerEntityRotation(AZ::Quaternion::CreateZero()); - - // Set the transform (translation, rotation) of the container entity - GenerateContainerEntityTransform(topLevelEntities, containerEntityTranslation, containerEntityRotation); - - AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalTranslation, containerEntityTranslation); - AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalRotationQuaternion, containerEntityRotation); - - // Set container entity to be child of common root - AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetParent, commonRootEntityId); - - // Assign the EditorPrefabComponent to the instance container - EntityCompositionRequests::AddComponentsOutcome outcome; - EntityCompositionRequestBus::BroadcastResult( - outcome, &EntityCompositionRequests::AddComponentsToEntities, EntityIdList{containerEntityId}, - AZ::ComponentTypeList{azrtti_typeid()}); - - // Change top level entities to be parented to the container entity - for (AZ::Entity* topLevelEntity : topLevelEntities) - { - AZ::TransformBus::Event(topLevelEntity->GetId(), &AZ::TransformBus::Events::SetParent, containerEntityId); - } + // This function does not support undo/redo yet, so clear the undo stack to prevent issues. + //AzToolsFramework::ToolsApplicationRequestBus::Broadcast(&AzToolsFramework::ToolsApplicationRequestBus::Events::FlushUndo); return AZ::Success(); } @@ -174,14 +255,7 @@ namespace AzToolsFramework AZStd::string("SavePrefab - Path error. Path could be invalid, or the prefab may not be loaded in this level.")); } - auto prefabLoaderInterface = AZ::Interface::Get(); - if (prefabLoaderInterface == nullptr) - { - return AZ::Failure(AZStd::string( - "Could not save prefab - internal error (PrefabLoaderInterface unavailable).")); - } - - if (!prefabLoaderInterface->SaveTemplate(templateId)) + if (!m_prefabLoaderInterface->SaveTemplate(templateId)) { return AZ::Failure(AZStd::string("Could not save prefab - internal error (Json write operation failure).")); } @@ -260,15 +334,15 @@ namespace AzToolsFramework // Create Undo node on entities if they belong to an instance InstanceOptionalReference instanceOptionalReference = m_instanceEntityMapperInterface->FindOwningInstance(entityId); - if (instanceOptionalReference.has_value()) + if (instanceOptionalReference.has_value() && !IsInstanceContainerEntity(entityId)) { - PrefabDom beforeState; - m_prefabUndoCache.Retrieve(entityId, beforeState); - PrefabDom afterState; AZ::Entity* entity = GetEntityById(entityId); if (entity) { + PrefabDom beforeState; + m_prefabUndoCache.Retrieve(entityId, beforeState); + m_instanceToTemplateInterface->GenerateDomForEntity(afterState, *entity); PrefabDom patch; @@ -287,7 +361,10 @@ namespace AzToolsFramework // Update the cache m_prefabUndoCache.Store(entityId, AZStd::move(afterState)); } - + else + { + m_prefabUndoCache.PurgeCache(entityId); + } } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h index 46a7f946ba..de892470ab 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h @@ -27,8 +27,10 @@ namespace AzToolsFramework namespace Prefab { class Instance; + class InstanceEntityMapperInterface; class InstanceToTemplateInterface; + class PrefabLoaderInterface; class PrefabSystemComponentInterface; class PrefabPublicHandler final @@ -42,7 +44,7 @@ namespace AzToolsFramework void UnregisterPrefabPublicHandlerInterface(); // PrefabPublicInterface... - PrefabOperationResult CreatePrefab(const AZStd::vector& entityIds, AZStd::string_view filePath) override; + PrefabOperationResult CreatePrefab(const AZStd::vector& entityIds, AZ::IO::PathView filePath) override; PrefabOperationResult InstantiatePrefab(AZStd::string_view filePath, AZ::EntityId parent, AZ::Vector3 position) override; PrefabOperationResult SavePrefab(AZ::IO::Path filePath) override; PrefabEntityResult CreateEntity(AZ::EntityId parentId, const AZ::Vector3& position) override; @@ -74,6 +76,7 @@ namespace AzToolsFramework InstanceEntityMapperInterface* m_instanceEntityMapperInterface = nullptr; InstanceToTemplateInterface* m_instanceToTemplateInterface = nullptr; + PrefabLoaderInterface* m_prefabLoaderInterface = nullptr; PrefabSystemComponentInterface* m_prefabSystemComponentInterface = nullptr; // Caches entity states for undo/redo purposes diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h index 81a5258d91..4e59729ab2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicInterface.h @@ -49,7 +49,7 @@ namespace AzToolsFramework * @param filePath The path for the new prefab file. * @return An outcome object; on failure, it comes with an error message detailing the cause of the error. */ - virtual PrefabOperationResult CreatePrefab(const AZStd::vector& entityIds, AZStd::string_view filePath) = 0; + virtual PrefabOperationResult CreatePrefab(const AZStd::vector& entityIds, AZ::IO::PathView filePath) = 0; /** * Instantiate a prefab from a prefab file. diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp index bf9fd658c6..37620ed9ec 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp @@ -104,7 +104,6 @@ namespace AzToolsFramework return nullptr; } - AZStd::unique_ptr newInstance = AZStd::make_unique(AZStd::move(containerEntity)); for (AZ::Entity* entity : entities) @@ -120,8 +119,11 @@ namespace AzToolsFramework newInstance->AddInstance(AZStd::move(instance)); } - - newInstance->SetTemplateSourcePath(relativeFilePath); + /* + AzToolsFramework::EditorEntityContextRequestBus::Broadcast( + &AzToolsFramework::EditorEntityContextRequests::HandleEntitiesAdded, EntityList{containerEntity->GetId()}); + */ + newInstance->SetTemplateSourcePath(filePath); TemplateId newTemplateId = CreateTemplateFromInstance(*newInstance); if (newTemplateId == InvalidTemplateId) @@ -157,11 +159,16 @@ namespace AzToolsFramework void PrefabSystemComponent::UpdatePrefabTemplate(TemplateId templateId, const PrefabDom& updatedDom) { - PrefabDom& templateDomToUpdate = FindTemplateDom(templateId); - if (AZ::JsonSerialization::Compare(templateDomToUpdate, updatedDom) != AZ::JsonSerializerCompareResult::Equal) + auto templateRef = FindTemplate(templateId); + if (templateRef.has_value()) { - templateDomToUpdate.CopyFrom(updatedDom, templateDomToUpdate.GetAllocator()); - PropagateTemplateChanges(templateId); + PrefabDom& templateDomToUpdate = templateRef->get().GetPrefabDom(); + if (AZ::JsonSerialization::Compare(templateDomToUpdate, updatedDom) != AZ::JsonSerializerCompareResult::Equal) + { + templateDomToUpdate.CopyFrom(updatedDom, templateDomToUpdate.GetAllocator()); + templateRef->get().MarkAsDirty(true); + PropagateTemplateChanges(templateId); + } } } @@ -615,7 +622,12 @@ namespace AzToolsFramework instancesValue = memberFound->value; } - instancesValue->get().AddMember(rapidjson::StringRef(instanceAlias.c_str()), PrefabDomValue(), targetTemplateDom.GetAllocator()); + // Only add the instance if it's not there already + if (instancesValue->get().FindMember(rapidjson::StringRef(instanceAlias.c_str())) == instancesValue->get().MemberEnd()) + { + instancesValue->get().AddMember( + rapidjson::StringRef(instanceAlias.c_str()), PrefabDomValue(), targetTemplateDom.GetAllocator()); + } Template& sourceTemplate = sourceTemplateRef->get(); @@ -628,9 +640,12 @@ namespace AzToolsFramework newLink.GetLinkDom().AddMember(rapidjson::StringRef(PrefabDomUtils::SourceName), rapidjson::StringRef(sourceTemplate.GetFilePath().c_str()), newLink.GetLinkDom().GetAllocator()); + PrefabDom linkPatchCopy; + linkPatchCopy.CopyFrom(linkPatch->get(), newLink.GetLinkDom().GetAllocator()); + if (linkPatch && linkPatch->get().IsArray() && !(linkPatch->get().Empty())) { - m_instanceToTemplatePropagator.AddPatchesToLink(linkPatch.value(), newLink); + m_instanceToTemplatePropagator.AddPatchesToLink(linkPatchCopy, newLink); } //update the target template dom to have the proper values for the source template dom diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp index 1e71b545b5..6ce3fdc755 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -39,9 +40,12 @@ namespace AzToolsFramework { namespace Prefab { + EditorEntityUiInterface* PrefabIntegrationManager::s_editorEntityUiInterface = nullptr; PrefabPublicInterface* PrefabIntegrationManager::s_prefabPublicInterface = nullptr; PrefabEditInterface* PrefabIntegrationManager::s_prefabEditInterface = nullptr; + PrefabLoaderInterface* PrefabIntegrationManager::s_prefabLoaderInterface = nullptr; + const AZStd::string PrefabIntegrationManager::s_prefabFileExtension = ".prefab"; void PrefabUserSettings::Reflect(AZ::ReflectContext* context) @@ -79,6 +83,13 @@ namespace AzToolsFramework return; } + s_prefabLoaderInterface = AZ::Interface::Get(); + if (s_prefabLoaderInterface == nullptr) + { + AZ_Assert(false, "Prefab - could not get PrefabLoaderInterface on PrefabIntegrationManager construction."); + return; + } + EditorContextMenuBus::Handler::BusConnect(); PrefabInstanceContainerNotificationBus::Handler::BusConnect(); AZ::Interface::Register(this); @@ -320,14 +331,15 @@ namespace AzToolsFramework GenerateSuggestedFilenameFromEntities(prefabRootEntities, suggestedName); - if (!QueryUserForPrefabSaveLocation(suggestedName, targetDirectory, AZ_CRC("PrefabUserSettings"), activeWindow, prefabName, prefabFilePath)) + if (!QueryUserForPrefabSaveLocation( + suggestedName, targetDirectory, AZ_CRC("PrefabUserSettings"), activeWindow, prefabName, prefabFilePath)) { // User canceled prefab creation, or error prevented continuation. return; } } - auto createPrefabOutcome = s_prefabPublicInterface->CreatePrefab(selectedEntities, prefabFilePath); + auto createPrefabOutcome = s_prefabPublicInterface->CreatePrefab(selectedEntities, s_prefabLoaderInterface->GetRelativePathToProject(prefabFilePath.data())); if (!createPrefabOutcome.IsSuccess()) { diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h index 66a047df28..c9b846aa5b 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/PrefabIntegrationManager.h @@ -29,6 +29,9 @@ namespace AzToolsFramework { namespace Prefab { + + class PrefabLoaderInterface; + //! Structure for saving/retrieving user settings related to prefab workflows. class PrefabUserSettings : public AZ::UserSettings @@ -129,6 +132,7 @@ namespace AzToolsFramework static EditorEntityUiInterface* s_editorEntityUiInterface; static PrefabPublicInterface* s_prefabPublicInterface; static PrefabEditInterface* s_prefabEditInterface; + static PrefabLoaderInterface* s_prefabLoaderInterface; }; } } From 778d60bd0c47ad25e43b166928dfa64e54202167 Mon Sep 17 00:00:00 2001 From: srikappa Date: Thu, 15 Apr 2021 18:45:48 -0700 Subject: [PATCH 02/59] Replaced unique instance queue with checks in template to instance mapper --- .../Instance/InstanceUpdateExecutor.cpp | 54 ++++--------------- .../Prefab/Instance/InstanceUpdateExecutor.h | 14 ----- .../Prefab/PrefabPublicHandler.cpp | 2 +- .../Prefab/PrefabSystemComponent.cpp | 5 +- 4 files changed, 14 insertions(+), 61 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp index 7df1602bff..d84edd6212 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp @@ -123,6 +123,15 @@ namespace AzToolsFramework } } + auto findInstancesResult = m_templateInstanceMapperInterface->FindInstancesOwnedByTemplate(instanceTemplateId)->get(); + + if (findInstancesResult.find(instanceToUpdate) == findInstancesResult.end()) + { + isUpdateSuccessful = false; + m_instancesUpdateQueue.pop(); + continue; + } + Template& currentTemplate = currentTemplateReference->get(); Instance::EntityList newEntities; if (PrefabDomUtils::LoadInstanceFromPrefabDom(*instanceToUpdate, newEntities, currentTemplate.GetPrefabDom())) @@ -173,50 +182,5 @@ namespace AzToolsFramework return isUpdateSuccessful; } - - Instance* InstanceUpdateExecutor::UniqueInstanceQueue::front() - { - return m_instancesQueue.front(); - } - - void InstanceUpdateExecutor::UniqueInstanceQueue::pop() - { - m_instancesSet.erase(m_instancesQueue.front()); - m_instancesQueue.pop(); - } - - void InstanceUpdateExecutor::UniqueInstanceQueue::emplace(Instance* instance) - { - Instance* ancestorInstance = instance; - - while (ancestorInstance != nullptr) - { - if (m_instancesSet.contains(ancestorInstance)) - { - return; - } - - auto parent = ancestorInstance->GetParentInstance(); - if (parent.has_value()) - { - ancestorInstance = &(parent->get()); - } - else - { - ancestorInstance = nullptr; - } - } - - // TODO - remove child instances too? - // Optimization. - - m_instancesQueue.emplace(instance); - m_instancesSet.emplace(instance); - } - - size_t InstanceUpdateExecutor::UniqueInstanceQueue::size() - { - return m_instancesQueue.size(); - } } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h index a29e19dc8a..04bd189816 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.h @@ -15,7 +15,6 @@ #include #include #include -#include #include #include @@ -46,19 +45,6 @@ namespace AzToolsFramework PrefabSystemComponentInterface* m_prefabSystemComponentInterface = nullptr; TemplateInstanceMapperInterface* m_templateInstanceMapperInterface = nullptr; int m_instanceCountToUpdateInBatch = 0; - - class UniqueInstanceQueue - { - public: - Instance* front(); - void pop(); - void emplace(Instance* instance); - size_t size(); - private: - AZStd::queue m_instancesQueue; - AZStd::unordered_set m_instancesSet; - }; - //UniqueInstanceQueue m_instancesUpdateQueue; AZStd::queue m_instancesUpdateQueue; bool m_updatingTemplateInstancesInQueue { false }; }; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 292ee3c7f8..b97e9ebd98 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -334,7 +334,7 @@ namespace AzToolsFramework // Create Undo node on entities if they belong to an instance InstanceOptionalReference instanceOptionalReference = m_instanceEntityMapperInterface->FindOwningInstance(entityId); - if (instanceOptionalReference.has_value() && !IsInstanceContainerEntity(entityId)) + if (instanceOptionalReference.has_value()) { PrefabDom afterState; AZ::Entity* entity = GetEntityById(entityId); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp index 37620ed9ec..7a9ec0a62e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp @@ -144,7 +144,6 @@ namespace AzToolsFramework void PrefabSystemComponent::PropagateTemplateChanges(TemplateId templateId) { - UpdatePrefabInstances(templateId); auto templateIdToLinkIdsIterator = m_templateToLinkIdsMap.find(templateId); if (templateIdToLinkIdsIterator != m_templateToLinkIdsMap.end()) { @@ -155,6 +154,10 @@ namespace AzToolsFramework templateIdToLinkIdsIterator->second.end())); UpdateLinkedInstances(linkIdsToUpdateQueue); } + else + { + UpdatePrefabInstances(templateId); + } } void PrefabSystemComponent::UpdatePrefabTemplate(TemplateId templateId, const PrefabDom& updatedDom) From 22d6e1ec0dfd41a49d2e8b37e4ee71566a274838 Mon Sep 17 00:00:00 2001 From: srikappa Date: Fri, 16 Apr 2021 16:18:34 -0700 Subject: [PATCH 03/59] Modularized undo instannce update undo operation and enabled setting container entity to be selected --- .../Prefab/PrefabPublicHandler.cpp | 20 ++++--------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index b97e9ebd98..0ce929217d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -146,15 +146,8 @@ namespace AzToolsFramework "(A null instance is returned).")); } - PrefabDom commonRootInstanceDomAfterCreate; - m_instanceToTemplateInterface->GenerateDomForInstance( - commonRootInstanceDomAfterCreate, commonRootEntityOwningInstance->get()); - - auto commonRootInstanceUndoNode = aznew PrefabUndoInstance("Undo Instance Node"); - commonRootInstanceUndoNode->Capture( - commonRootInstanceDomBeforeCreate, commonRootInstanceDomAfterCreate, commonRootOwningTemplateId); - commonRootInstanceUndoNode->SetParent(undoBatch.GetUndoBatch()); - commonRootInstanceUndoNode->Redo(); + PrefabUndoHelpers::UpdatePrefabInstance( + commonRootEntityOwningInstance->get(), "Undo detaching entity", commonRootInstanceDomBeforeCreate, undoBatch.GetUndoBatch()); linkRemoveUndo->Redo(); @@ -208,22 +201,17 @@ namespace AzToolsFramework undoBatch.MarkEntityDirty(topLevelEntity->GetId()); AZ::TransformBus::Event(topLevelEntity->GetId(), &AZ::TransformBus::Events::SetParent, containerEntityId); } - - /* + // Select Container Entity { auto selectionUndo = aznew SelectionCommand({containerEntityId}, "Select Prefab Container Entity"); selectionUndo->SetParent(undoBatch.GetUndoBatch()); - ToolsApplicationRequestBus::Broadcast(&ToolsApplicationRequestBus::Events::RunRedoSeparately, selectionUndo); - }*/ + } } // Save Template to file m_prefabLoaderInterface->SaveTemplate(instance->get().GetTemplateId()); - - // This function does not support undo/redo yet, so clear the undo stack to prevent issues. - //AzToolsFramework::ToolsApplicationRequestBus::Broadcast(&AzToolsFramework::ToolsApplicationRequestBus::Events::FlushUndo); return AZ::Success(); } From 82f6d249eb11edb3907c59d97e67b5348558f6e5 Mon Sep 17 00:00:00 2001 From: Chris Santora Date: Fri, 16 Apr 2021 23:01:27 -0700 Subject: [PATCH 04/59] ATOM-14765 Add More Texture Preset Masks Several image preset files had a full list of file masks for only one platform. I made sure that the same list was applied to every platform including the default preset. Removed the "Swizzle" command from Displacement.preset. Swizzle "aaa1" is wrong since this preset expects a single channel image. Added "_col" to Albedo.preset as an abbreviation for "_color". Added "_rough" to Roughness.preset as it's a common abbreviation. Added "_rgbmask" filter to LayerMask.preset to correspond to the "_mask" filter in Grayscale.preset. Added a warning when an image can't be processed according to the assigned preset due to dimension issues. Otherwise it's difficult to figure out why it's using the ReferenceImage preset instead of what was expected. Resized the "bark" textures to make them compatible with the image presets. Removed the "bark1disp2.jgp" image and just applied the changes to the original bark1disp.jpg". It's just blurred a bit to remove excessive noise. Renamed all the "bark" textures to include an underscore "_" after "bark1" to get the image pipeline to properly recognize the file masks. Testing: AtomSampleViewer automation. All assets in AtomTest build. Opened several levels in AtomTest. --- .../BuilderSettings/BuilderSettingManager.cpp | 4 ++ .../Code/Source/ImageBuilderComponent.cpp | 2 +- .../ImageProcessingAtom/Config/Albedo.preset | 5 ++ .../Config/AmbientOcclusion.preset | 20 ++++++-- .../Config/Displacement.preset | 49 +++++++++++++++---- .../Config/Emissive.preset | 24 +++++++-- .../Config/LayerMask.preset | 15 ++++-- .../Config/NormalsWithSmoothness.preset | 24 +++++++-- .../ImageProcessingAtom/Config/Opacity.preset | 40 ++++++++++++--- .../Config/Reflectance.preset | 15 ++++-- .../001_ManyFeatures.material | 12 ++--- .../002_ParallaxPdo.material | 8 +-- .../TestData/Textures/cc0/bark1_col.jpg | 3 ++ .../TestData/Textures/cc0/bark1_disp.jpg | 3 ++ .../TestData/Textures/cc0/bark1_norm.jpg | 3 ++ .../TestData/Textures/cc0/bark1_roughness.jpg | 3 ++ .../TestData/Textures/cc0/bark1col.jpg | 3 -- .../TestData/Textures/cc0/bark1disp.jpg | 3 -- .../TestData/Textures/cc0/bark1disp2.jpg | 3 -- .../TestData/Textures/cc0/bark1norm.jpg | 3 -- .../TestData/Textures/cc0/bark1roughness.jpg | 3 -- 21 files changed, 182 insertions(+), 63 deletions(-) create mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1_col.jpg create mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1_disp.jpg create mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1_norm.jpg create mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1_roughness.jpg delete mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1col.jpg delete mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1disp.jpg delete mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1disp2.jpg delete mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1norm.jpg delete mode 100644 Gems/Atom/TestData/TestData/Textures/cc0/bark1roughness.jpg diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp index e30fb9c6a2..3b6c906c10 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/BuilderSettings/BuilderSettingManager.cpp @@ -524,6 +524,10 @@ namespace ImageProcessingAtom { return outPreset; } + else + { + AZ_Warning("Image Processing", false, "Image dimensions are not compatible with preset '%s'. The default preset will be used.", presetInfo->m_name.c_str()); + } } //uncompressed one which could be used for almost everything diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp index 4de024c088..5d5fd21b44 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/ImageBuilderComponent.cpp @@ -79,7 +79,7 @@ namespace ImageProcessingAtom builderDescriptor.m_busId = azrtti_typeid(); builderDescriptor.m_createJobFunction = AZStd::bind(&ImageBuilderWorker::CreateJobs, &m_imageBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); builderDescriptor.m_processJobFunction = AZStd::bind(&ImageBuilderWorker::ProcessJob, &m_imageBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); - builderDescriptor.m_version = 19; // [ATOM-14459] + builderDescriptor.m_version = 22; // [ATOM-14765] builderDescriptor.m_analysisFingerprint = ImageProcessingAtom::BuilderSettingManager::Instance()->GetAnalysisFingerprint(); m_imageBuilder.BusConnect(builderDescriptor.m_busId); AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBusTraits::RegisterBuilderInformation, builderDescriptor); diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Albedo.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/Albedo.preset index d81fefede2..c00185e255 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Albedo.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/Albedo.preset @@ -11,6 +11,7 @@ "_basecolor", "_diff", "_color", + "_col", "_albedo", "_alb", "_bc", @@ -31,6 +32,7 @@ "FileMasks": [ "_diff", "_color", + "_col", "_albedo", "_alb", "_basecolor", @@ -51,6 +53,7 @@ "FileMasks": [ "_diff", "_color", + "_col", "_albedo", "_alb", "_basecolor", @@ -71,6 +74,7 @@ "FileMasks": [ "_diff", "_color", + "_col", "_albedo", "_alb", "_basecolor", @@ -91,6 +95,7 @@ "FileMasks": [ "_diff", "_color", + "_col", "_albedo", "_alb", "_basecolor", diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/AmbientOcclusion.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/AmbientOcclusion.preset index 222a1d4c7b..6b1197e28d 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/AmbientOcclusion.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/AmbientOcclusion.preset @@ -9,7 +9,10 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ao" + "_ao", + "_ambocc", + "_amb", + "_ambientocclusion" ], "PixelFormat": "BC4" }, @@ -33,7 +36,10 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ao" + "_ao", + "_ambocc", + "_amb", + "_ambientocclusion" ], "PixelFormat": "EAC_R11" }, @@ -43,7 +49,10 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ao" + "_ao", + "_ambocc", + "_amb", + "_ambientocclusion" ], "PixelFormat": "BC4" }, @@ -53,7 +62,10 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ao" + "_ao", + "_ambocc", + "_amb", + "_ambientocclusion" ], "PixelFormat": "BC4" } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Displacement.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/Displacement.preset index 1cac9c1d3a..569ff6ce23 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Displacement.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/Displacement.preset @@ -9,12 +9,20 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_displ" + "_displ", + "_disp", + "_dsp", + "_d", + "_dm", + "_displacement", + "_height", + "_hm", + "_ht", + "_h" ], "PixelFormat": "BC4", "DiscardAlpha": true, "IsPowerOf2": true, - "Swizzle": "aaa1", "MipMapSetting": { "MipGenType": "Box" } @@ -26,13 +34,21 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_displ" + "_displ", + "_disp", + "_dsp", + "_d", + "_dm", + "_displacement", + "_height", + "_hm", + "_ht", + "_h" ], "PixelFormat": "EAC_R11", "DiscardAlpha": true, "IsPowerOf2": true, "SizeReduceLevel": 3, - "Swizzle": "aaa1", "MipMapSetting": { "MipGenType": "Box" } @@ -57,7 +73,6 @@ "PixelFormat": "EAC_R11", "DiscardAlpha": true, "IsPowerOf2": true, - "Swizzle": "aaa1", "MipMapSetting": { "MipGenType": "Box" } @@ -68,12 +83,20 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_displ" + "_displ", + "_disp", + "_dsp", + "_d", + "_dm", + "_displacement", + "_height", + "_hm", + "_ht", + "_h" ], "PixelFormat": "BC4", "DiscardAlpha": true, "IsPowerOf2": true, - "Swizzle": "aaa1", "MipMapSetting": { "MipGenType": "Box" } @@ -84,12 +107,20 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_displ" + "_displ", + "_disp", + "_dsp", + "_d", + "_dm", + "_displacement", + "_height", + "_hm", + "_ht", + "_h" ], "PixelFormat": "BC4", "DiscardAlpha": true, "IsPowerOf2": true, - "Swizzle": "aaa1", "MipMapSetting": { "MipGenType": "Box" } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Emissive.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/Emissive.preset index d3290eb469..5dc75397a0 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Emissive.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/Emissive.preset @@ -8,7 +8,11 @@ "Name": "Emissive", "RGB_Weight": "CIEXYZ", "FileMasks": [ - "_emissive" + "_emissive", + "_e", + "_glow", + "_em", + "_emit" ], "PixelFormat": "BC7", "DiscardAlpha": true @@ -33,7 +37,11 @@ "Name": "Emissive", "RGB_Weight": "CIEXYZ", "FileMasks": [ - "_emissive" + "_emissive", + "_e", + "_glow", + "_em", + "_emit" ], "PixelFormat": "ASTC_6x6", "DiscardAlpha": true @@ -43,7 +51,11 @@ "Name": "Emissive", "RGB_Weight": "CIEXYZ", "FileMasks": [ - "_emissive" + "_emissive", + "_e", + "_glow", + "_em", + "_emit" ], "PixelFormat": "BC7", "DiscardAlpha": true @@ -53,7 +65,11 @@ "Name": "Emissive", "RGB_Weight": "CIEXYZ", "FileMasks": [ - "_emissive" + "_emissive", + "_e", + "_glow", + "_em", + "_emit" ], "PixelFormat": "BC7", "DiscardAlpha": true diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/LayerMask.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/LayerMask.preset index 363a6f9f9d..66927b175c 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/LayerMask.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/LayerMask.preset @@ -9,7 +9,8 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_layers" + "_layers", + "_rgbmask" ], "PixelFormat": "R8G8B8X8" }, @@ -20,7 +21,8 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_layers" + "_layers", + "_rgbmask" ], "PixelFormat": "R8G8B8X8" }, @@ -30,7 +32,8 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_layers" + "_layers", + "_rgbmask" ], "PixelFormat": "R8G8B8X8" }, @@ -40,7 +43,8 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_layers" + "_layers", + "_rgbmask" ], "PixelFormat": "R8G8B8X8" }, @@ -50,7 +54,8 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_layers" + "_layers", + "_rgbmask" ], "PixelFormat": "R8G8B8X8" } diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset index fb8b1da6a4..fdb24ecd09 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset @@ -9,7 +9,11 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ddna" + "_ddna", + "_normala", + "_nrma", + "_nma", + "_na" ], "PixelFormat": "BC5s", "PixelFormatAlpha": "BC4", @@ -48,7 +52,11 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ddna" + "_ddna", + "_normala", + "_nrma", + "_nma", + "_na" ], "PixelFormat": "ASTC_4x4", "PixelFormatAlpha": "ASTC_4x4", @@ -65,7 +73,11 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ddna" + "_ddna", + "_normala", + "_nrma", + "_nma", + "_na" ], "PixelFormat": "BC5s", "PixelFormatAlpha": "BC4", @@ -82,7 +94,11 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ddna" + "_ddna", + "_normala", + "_nrma", + "_nma", + "_na" ], "PixelFormat": "BC5s", "PixelFormatAlpha": "BC4", diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset index bd9299d71d..6d0d9009a5 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset @@ -9,9 +9,16 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_sss", - "_trans", - "_opac" + "_sss", + "_trans", + "_opac", + "_opacity", + "_o", + "_opac", + "_op", + "_mask", + "_msk", + "_blend" ], "PixelFormat": "BC4", "IsPowerOf2": true, @@ -28,7 +35,14 @@ "FileMasks": [ "_sss", "_trans", - "_opac" + "_opac", + "_opacity", + "_o", + "_opac", + "_op", + "_mask", + "_msk", + "_blend" ], "PixelFormat": "EAC_R11", "IsPowerOf2": true, @@ -67,7 +81,14 @@ "FileMasks": [ "_sss", "_trans", - "_opac" + "_opac", + "_opacity", + "_o", + "_opac", + "_op", + "_mask", + "_msk", + "_blend" ], "PixelFormat": "BC4", "IsPowerOf2": true, @@ -83,7 +104,14 @@ "FileMasks": [ "_sss", "_trans", - "_opac" + "_opac", + "_opacity", + "_o", + "_opac", + "_op", + "_mask", + "_msk", + "_blend" ], "PixelFormat": "BC4", "IsPowerOf2": true, diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Reflectance.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/Reflectance.preset index ca773debbb..7a6af50728 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Reflectance.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/Reflectance.preset @@ -24,7 +24,8 @@ "_mt", "_metalness", "_metallic", - "_roughness" + "_roughness", + "_rough" ], "PixelFormat": "BC1", "IsPowerOf2": true, @@ -53,7 +54,8 @@ "_mt", "_metalness", "_metallic", - "_roughness" + "_roughness", + "_rough" ], "PixelFormat": "ETC2", "IsPowerOf2": true, @@ -81,7 +83,8 @@ "_mt", "_metalness", "_metallic", - "_roughness" + "_roughness", + "_rough" ], "PixelFormat": "ASTC_6x6", "IsPowerOf2": true, @@ -109,7 +112,8 @@ "_mt", "_metalness", "_metallic", - "_roughness" + "_roughness", + "_rough" ], "PixelFormat": "BC1", "IsPowerOf2": true, @@ -137,7 +141,8 @@ "_mt", "_metalness", "_metallic", - "_roughness" + "_roughness", + "_rough" ], "PixelFormat": "BC1", "IsPowerOf2": true, diff --git a/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/001_ManyFeatures.material b/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/001_ManyFeatures.material index c013eecae5..e84c6296be 100644 --- a/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/001_ManyFeatures.material +++ b/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/001_ManyFeatures.material @@ -7,7 +7,7 @@ "layer1_ambientOcclusion": { "enable": true, "factor": 1.6399999856948853, - "textureMap": "TestData/Textures/cc0/bark1disp2.jpg" + "textureMap": "TestData/Textures/cc0/bark1_disp.jpg" }, "layer1_baseColor": { "color": [ @@ -16,7 +16,7 @@ 0.12039368599653244, 1.0 ], - "textureMap": "TestData/Textures/cc0/bark1col.jpg" + "textureMap": "TestData/Textures/cc0/bark1_col.jpg" }, "layer1_emissive": { "color": [ @@ -30,16 +30,16 @@ "layer1_normal": { "factor": 0.4444443881511688, "flipY": true, - "textureMap": "TestData/Textures/cc0/bark1norm.jpg" + "textureMap": "TestData/Textures/cc0/bark1_norm.jpg" }, "layer1_parallax": { "enable": true, "factor": 0.02500000037252903, - "textureMap": "TestData/Textures/cc0/bark1disp2.jpg" + "textureMap": "TestData/Textures/cc0/bark1_disp.jpg" }, "layer1_roughness": { "lowerBound": 0.010100999847054482, - "textureMap": "TestData/Textures/cc0/bark1roughness.jpg" + "textureMap": "TestData/Textures/cc0/bark1_roughness.jpg" }, "layer1_specularF0": { "factor": 0.5099999904632568, @@ -55,7 +55,7 @@ }, "layer2_ambientOcclusion": { "factor": 1.2200000286102296, - "textureMap": "TestData/Textures/cc0/bark1disp2.jpg" + "textureMap": "TestData/Textures/cc0/bark1_disp.jpg" }, "layer2_baseColor": { "textureMap": "TestData/Textures/cc0/Lava004_1K_Color.jpg" diff --git a/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/002_ParallaxPdo.material b/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/002_ParallaxPdo.material index 471b437bd2..126e1a7fcb 100644 --- a/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/002_ParallaxPdo.material +++ b/Gems/Atom/TestData/TestData/Materials/StandardMultilayerPbrTestCases/002_ParallaxPdo.material @@ -5,18 +5,18 @@ "propertyLayoutVersion": 3, "properties": { "layer1_baseColor": { - "textureMap": "TestData/Textures/cc0/bark1col.jpg" + "textureMap": "TestData/Textures/cc0/bark1_col.jpg" }, "layer1_normal": { - "textureMap": "TestData/Textures/cc0/bark1norm.jpg" + "textureMap": "TestData/Textures/cc0/bark1_norm.jpg" }, "layer1_parallax": { "enable": true, "factor": 0.03999999910593033, - "textureMap": "TestData/Textures/cc0/bark1disp2.jpg" + "textureMap": "TestData/Textures/cc0/bark1_disp.jpg" }, "layer1_roughness": { - "textureMap": "TestData/Textures/cc0/bark1roughness.jpg" + "textureMap": "TestData/Textures/cc0/bark1_roughness.jpg" }, "layer2_baseColor": { "textureMap": "TestData/Textures/cc0/Rock030_2K_Color.jpg" diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1_col.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_col.jpg new file mode 100644 index 0000000000..0a4c5f380c --- /dev/null +++ b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_col.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd44119610135ca5674de7144647df6580d7ac3e03576e9a8e87e741548e7364 +size 2105853 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1_disp.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_disp.jpg new file mode 100644 index 0000000000..57c74af488 --- /dev/null +++ b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_disp.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dbb74aac2450d6457bb02d36bd3d74e671c2dc7e938e090331151ecc52d545b +size 845683 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1_norm.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_norm.jpg new file mode 100644 index 0000000000..41b1d6d30b --- /dev/null +++ b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_norm.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e69a3844c3a595245619a9dda4ed8981476a516ad3648a8b4dfb8151a68b0db5 +size 4439966 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1_roughness.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_roughness.jpg new file mode 100644 index 0000000000..2e7ccba4e0 --- /dev/null +++ b/Gems/Atom/TestData/TestData/Textures/cc0/bark1_roughness.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8caa5961599624a6414d7277c389dd85b175b9587989b815ffd90aff8f62b6c +size 1747230 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1col.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1col.jpg deleted file mode 100644 index 944a968d5b..0000000000 --- a/Gems/Atom/TestData/TestData/Textures/cc0/bark1col.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:24f5c234f11a1b29de9000b5a7ba74262f1bc5ebd2227ca1e85a12fa0e8b5237 -size 8273450 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1disp.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1disp.jpg deleted file mode 100644 index c8a2a44e9b..0000000000 --- a/Gems/Atom/TestData/TestData/Textures/cc0/bark1disp.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0112ac235da74c60105b0e1a2da49c1e4ab7b89a60960a60cec54ad65db0b4b6 -size 4585685 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1disp2.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1disp2.jpg deleted file mode 100644 index f93d68141b..0000000000 --- a/Gems/Atom/TestData/TestData/Textures/cc0/bark1disp2.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a202449e5d787e76d959b6bee7a4b60b3821441ac918944c21358742ed1c546 -size 878112 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1norm.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1norm.jpg deleted file mode 100644 index f68ed8b696..0000000000 --- a/Gems/Atom/TestData/TestData/Textures/cc0/bark1norm.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b0100b3c356d76ae1cb4c42bd4cc9c58ff359155aab6b9e3c1b205fe25956738 -size 16848020 diff --git a/Gems/Atom/TestData/TestData/Textures/cc0/bark1roughness.jpg b/Gems/Atom/TestData/TestData/Textures/cc0/bark1roughness.jpg deleted file mode 100644 index f6e7acd7b6..0000000000 --- a/Gems/Atom/TestData/TestData/Textures/cc0/bark1roughness.jpg +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11badf07e6a7d0501c915f669ff1b14c8744d427d47d06e2fdca46b8f86839c9 -size 4441528 From 007589a98de65718ef52ad623a4f05156049a61e Mon Sep 17 00:00:00 2001 From: dmcdiar Date: Mon, 19 Apr 2021 02:29:20 -0700 Subject: [PATCH 05/59] Added DiffuseProbeGridClassification pass. Updated RayTracing shaders to use the new light types. --- .../Assets/Passes/DiffuseProbeGridUpdate.pass | 4 + .../Assets/Passes/PassTemplates.azasset | 4 + .../RayTracingSceneSrg.azsli | 36 +- .../diffuseprobegridblenddistance.azshader | Bin 40240 -> 41674 bytes ...begridblenddistance_dx12_0.azshadervariant | Bin 11626 -> 12166 bytes ...begridblenddistance_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...iffuseprobegridblenddistance_passsrg.azsrg | 328 ++++++++++++++-- ...gridblenddistance_vulkan_0.azshadervariant | Bin 11798 -> 12234 bytes .../diffuseprobegridblendirradiance.azshader | Bin 40262 -> 41696 bytes ...gridblendirradiance_dx12_0.azshadervariant | Bin 12102 -> 12630 bytes ...gridblendirradiance_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...fuseprobegridblendirradiance_passsrg.azsrg | 328 ++++++++++++++-- ...idblendirradiance_vulkan_0.azshadervariant | Bin 12974 -> 13410 bytes ...iffuseprobegridborderupdatecolumn.azshader | Bin 10253 -> 10253 bytes ...dborderupdatecolumn_dx12_0.azshadervariant | Bin 8498 -> 8498 bytes ...dborderupdatecolumn_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...orderupdatecolumn_vulkan_0.azshadervariant | Bin 6717 -> 6717 bytes .../diffuseprobegridborderupdaterow.azshader | Bin 10250 -> 10250 bytes ...gridborderupdaterow_dx12_0.azshadervariant | Bin 8314 -> 8314 bytes ...gridborderupdaterow_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...idborderupdaterow_vulkan_0.azshadervariant | Bin 6238 -> 6238 bytes .../diffuseprobegridraytracing.azshader | Bin 75199 -> 79309 bytes ...probegridraytracing_dx12_0.azshadervariant | Bin 31618 -> 34086 bytes ...probegridraytracing_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...obegridraytracing_vulkan_0.azshadervariant | Bin 33896 -> 36232 bytes ...fuseprobegridraytracingclosesthit.azshader | Bin 75209 -> 79319 bytes ...aytracingclosesthit_dx12_0.azshadervariant | Bin 16294 -> 16754 bytes ...aytracingclosesthit_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...tracingclosesthit_vulkan_0.azshadervariant | Bin 8872 -> 9172 bytes ...raytracingcommon_raytracingglobalsrg.azsrg | 352 ++++++++++++++--- .../diffuseprobegridraytracingmiss.azshader | Bin 75203 -> 79313 bytes ...egridraytracingmiss_dx12_0.azshadervariant | Bin 16394 -> 16838 bytes ...egridraytracingmiss_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...ridraytracingmiss_vulkan_0.azshadervariant | Bin 10276 -> 10364 bytes .../diffuseprobegridrelocation.azshader | Bin 42190 -> 42190 bytes ...probegridrelocation_dx12_0.azshadervariant | Bin 12098 -> 12098 bytes ...probegridrelocation_null_0.azshadervariant | Bin 4502 -> 4502 bytes ...obegridrelocation_vulkan_0.azshadervariant | Bin 13314 -> 13314 bytes .../diffuseprobegridrender.azshader | Bin 112069 -> 116296 bytes ...fuseprobegridrender_dx12_0.azshadervariant | Bin 33020 -> 33592 bytes ...fuseprobegridrender_null_0.azshadervariant | Bin 4854 -> 4854 bytes .../diffuseprobegridrender_objectsrg.azsrg | 354 +++++++++++++++--- ...seprobegridrender_vulkan_0.azshadervariant | Bin 24334 -> 24478 bytes .../Code/Source/CommonSystemComponent.cpp | 2 + .../DiffuseProbeGrid/DiffuseProbeGrid.cpp | 49 +++ .../DiffuseProbeGrid/DiffuseProbeGrid.h | 9 + .../DiffuseProbeGridBlendDistancePass.cpp | 10 + .../DiffuseProbeGridBlendIrradiancePass.cpp | 10 + .../DiffuseProbeGridFeatureProcessor.cpp | 1 + .../DiffuseProbeGridRayTracingPass.cpp | 13 + .../DiffuseProbeGridRenderPass.cpp | 10 + .../RayTracing/RayTracingFeatureProcessor.cpp | 20 +- .../Code/atom_feature_common_files.cmake | 2 + 53 files changed, 1361 insertions(+), 171 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridUpdate.pass b/Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridUpdate.pass index 3d4057f6df..6852cc2d1a 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridUpdate.pass +++ b/Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridUpdate.pass @@ -26,6 +26,10 @@ { "Name": "DiffuseProbeGridRelocationPass", "TemplateName": "DiffuseProbeGridRelocationPassTemplate" + }, + { + "Name": "DiffuseProbeGridClassificationPass", + "TemplateName": "DiffuseProbeGridClassificationPassTemplate" } ] } diff --git a/Gems/Atom/Feature/Common/Assets/Passes/PassTemplates.azasset b/Gems/Atom/Feature/Common/Assets/Passes/PassTemplates.azasset index 3cedd78210..29ccb1db09 100644 --- a/Gems/Atom/Feature/Common/Assets/Passes/PassTemplates.azasset +++ b/Gems/Atom/Feature/Common/Assets/Passes/PassTemplates.azasset @@ -416,6 +416,10 @@ "Name": "DiffuseProbeGridRelocationPassTemplate", "Path": "Passes/DiffuseProbeGridRelocation.pass" }, + { + "Name": "DiffuseProbeGridClassificationPassTemplate", + "Path": "Passes/DiffuseProbeGridClassification.pass" + }, { "Name": "DiffuseGlobalIlluminationPassTemplate", "Path": "Passes/DiffuseGlobalIllumination.pass" diff --git a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/RayTracingSceneSrg.azsli b/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/RayTracingSceneSrg.azsli index 2025e3b81b..0aeb43bcf2 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/RayTracingSceneSrg.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderResourceGroups/RayTracingSceneSrg.azsli @@ -18,7 +18,7 @@ partial ShaderResourceGroup RayTracingSceneSrg { RaytracingAccelerationStructure m_scene; - // directional Lights + // directional lights struct DirectionalLight { float3 m_direction; @@ -30,7 +30,33 @@ partial ShaderResourceGroup RayTracingSceneSrg StructuredBuffer m_directionalLights; uint m_directionalLightCount; - // point Lights + // simple point lights + struct SimplePointLight + { + float3 m_position; + float m_invAttenuationRadiusSquared; // For a radius at which this light no longer has an effect, 1 / radius^2. + float3 m_rgbIntensityCandelas; + float m_padding; // explicit padding. + }; + + StructuredBuffer m_simplePointLights; + uint m_simplePointLightCount; + + // simple spot lights + struct SimpleSpotLight + { + float3 m_position; + float m_invAttenuationRadiusSquared; // For a radius at which this light no longer has an effect, 1 / radius^2. + float3 m_direction; + float m_cosInnerConeAngle; // cosine of the outer cone angle + float3 m_rgbIntensityCandelas; + float m_cosOuterConeAngle; // cosine of the inner cone angle + }; + + StructuredBuffer m_simpleSpotLights; + uint m_simpleSpotLightCount; + + // point lights (sphere) struct PointLight { float3 m_position; @@ -42,7 +68,7 @@ partial ShaderResourceGroup RayTracingSceneSrg StructuredBuffer m_pointLights; uint m_pointLightCount; - // disk Lights + // disk lights struct DiskLight { float3 m_position; @@ -60,7 +86,7 @@ partial ShaderResourceGroup RayTracingSceneSrg StructuredBuffer m_diskLights; uint m_diskLightCount; - // capsule Lights + // capsule lights struct CapsuleLight { float3 m_startPoint; // one of the end points of the capsule @@ -74,7 +100,7 @@ partial ShaderResourceGroup RayTracingSceneSrg StructuredBuffer m_capsuleLights; uint m_capsuleLightCount; - // quad Lights + // quad lights struct QuadLight { float3 m_position; diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance.azshader index ae07080eba08c4979c64374fc9d6e974c8e409d3..4a5edc370b5c1a1d22dd012739345fd0d299317c 100644 GIT binary patch delta 804 zcmdn6i|N!+rVUc;lN+b&xFzps2M`Ylq{L|_37dLmAo@5yW4&wCD5ZbI{cJejDWb4^lo8M*JWu}R% zf*FA!TIgssd97UxkadxJI+)a*eBM46EMq@efQMyrgF`S>{6nwurVD>(VD!kOk%QjnF&-xLDmo`0+T=BQUnxF^t7Mc;4d`! zPdQlJbs|*l1h*uZF86FGt3jj~%F3zco!rnXJh{pPW?D{l4p1)9b1q!1&}2KWL@4hp zoaGQIIr(iZOqWBb*yP$ef2b-DPoN%|r|k>lDKx;`v!Nl9nVErMvSYgT=KX$uMLEjT zBpu``aOV<+L&)IA}`z<4f+VYE! J7BMg|003+5B{Tp4 delta 561 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 HE!_Wa4Njx~ 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 575eb94769774026fe913a0bdb9afdbac874c1ce..17b4f0c3cb5168b9654cfef4d9a121661a033107 100644 GIT binary patch delta 16 YcmbQHJWY8+pCE_Y@{5laF)%Oy05)9(>;M1& delta 16 XcmbQHJWY8+pCHFu$7Y|K3=9kaHRT1M diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_passsrg.azsrg index c050a315a1..45c0fc7efb 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_passsrg.azsrg +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblenddistance_passsrg.azsrg @@ -136,6 +136,44 @@ "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" + } + ] } ] }, @@ -203,6 +241,26 @@ "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" + } + ] } ] }, @@ -221,7 +279,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -318,6 +376,34 @@ ] } ] + }, + { + "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" + } + ] + } + ] } ] } @@ -2691,7 +2777,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "10722138557170830784" + "value": "13399614758886099705" } ] } @@ -2818,6 +2904,44 @@ "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" + } + ] } ] }, @@ -2885,6 +3009,26 @@ "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" + } + ] } ] }, @@ -2903,7 +3047,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -3000,6 +3144,34 @@ ] } ] + }, + { + "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" + } + ] + } + ] } ] } @@ -5373,7 +5545,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "10722138557170830784" + "value": "13399614758886099705" } ] } @@ -5500,6 +5672,44 @@ "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" + } + ] } ] }, @@ -5567,6 +5777,26 @@ "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" + } + ] } ] }, @@ -5585,7 +5815,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -5682,6 +5912,34 @@ ] } ] + }, + { + "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" + } + ] + } + ] } ] } @@ -5766,7 +6024,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5798,7 +6056,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5830,7 +6088,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5862,7 +6120,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5894,7 +6152,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5926,7 +6184,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5958,7 +6216,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5990,7 +6248,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6022,7 +6280,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6054,7 +6312,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6086,7 +6344,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6118,7 +6376,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6150,7 +6408,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6182,7 +6440,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6214,7 +6472,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6246,7 +6504,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6278,7 +6536,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6310,7 +6568,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6342,7 +6600,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6374,7 +6632,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6406,7 +6664,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6438,7 +6696,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6470,7 +6728,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6502,7 +6760,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6534,7 +6792,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6566,7 +6824,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6598,7 +6856,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6630,7 +6888,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] } @@ -8011,7 +8269,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "2959428625184507101" + "value": "8603598590297091788" } ] } @@ -8055,7 +8313,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "6463331605863849001" + "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 d2fa9789ef0bb1494eba4c719068477bae03878b..8ed12bf81cb9a1f6114c2cbe8c8591cda346bb5a 100644 GIT binary patch literal 12234 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 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance.azshader index 3eb4955132e71c6976b1aacdb017bb9e8bd5da04..f0bfc085cbc871297e6fe760f7ab54a8d85ee4d8 100644 GIT binary patch delta 800 zcmX@Mi|N5prVR@0lP6|t^YP}!7Zl|ur3RNImZTO>=4VTvoM6qmS&5yAak4=X>tqXU zO-824jarh7%##zXy&0J|=W#SMPJZ9XHo22i6QBnx?TCtp{Qo2{+1{ z5X-F}NHV(5fQrsnP@lYB1ZH>cW#fMG+!7K$VWJKpVy4;Ch56^NJ@zd2_(5 zi4x9}8@&C2ViP4M0m+ATAQB|{OA;hn=w>y!p_y}XuN2JWeKNe0MWlhe&56=lVjSgZ z@}VtT*PWRhFnub=wR`<59oNMknrvVc4^%M0NR@Dsv;BX;X8Fg(r#1)9e#^+AwoIpL I4FdxM0MpF}wg3PC delta 593 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 delta 5263 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 bCe23VuIPr|P3W%s7rqX8D(roH4Xpncr%hMX 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 594cb48e02f3b1a8b29efe53d2468c4f65c674ae..912946db79bad2bfb696b75275f5ce11e6de5ae3 100644 GIT binary patch delta 16 XcmbQHJWY8+pCE_YGM%b53=9kaFqj1B delta 16 YcmbQHJWY8+pCHFu$CIy)F)%Oy06J3!aR2}S diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_passsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_passsrg.azsrg index 062882a45b..4b7667c981 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_passsrg.azsrg +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridblendirradiance_passsrg.azsrg @@ -136,6 +136,44 @@ "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" + } + ] } ] }, @@ -203,6 +241,26 @@ "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" + } + ] } ] }, @@ -221,7 +279,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -318,6 +376,34 @@ ] } ] + }, + { + "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" + } + ] + } + ] } ] } @@ -2691,7 +2777,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "2253369087368484601" + "value": "4760130259633911968" } ] } @@ -2818,6 +2904,44 @@ "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" + } + ] } ] }, @@ -2885,6 +3009,26 @@ "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" + } + ] } ] }, @@ -2903,7 +3047,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -3000,6 +3144,34 @@ ] } ] + }, + { + "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" + } + ] + } + ] } ] } @@ -5373,7 +5545,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "2253369087368484601" + "value": "4760130259633911968" } ] } @@ -5500,6 +5672,44 @@ "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" + } + ] } ] }, @@ -5567,6 +5777,26 @@ "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" + } + ] } ] }, @@ -5585,7 +5815,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -5682,6 +5912,34 @@ ] } ] + }, + { + "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" + } + ] + } + ] } ] } @@ -5766,7 +6024,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5798,7 +6056,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5830,7 +6088,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5862,7 +6120,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5894,7 +6152,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5926,7 +6184,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5958,7 +6216,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -5990,7 +6248,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6022,7 +6280,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6054,7 +6312,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6086,7 +6344,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6118,7 +6376,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6150,7 +6408,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6182,7 +6440,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6214,7 +6472,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6246,7 +6504,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6278,7 +6536,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6310,7 +6568,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6342,7 +6600,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6374,7 +6632,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6406,7 +6664,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6438,7 +6696,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6470,7 +6728,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6502,7 +6760,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6534,7 +6792,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6566,7 +6824,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6598,7 +6856,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6630,7 +6888,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] } @@ -8011,7 +8269,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "2959428625184507101" + "value": "8603598590297091788" } ] } @@ -8055,7 +8313,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "1715809227613203910" + "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 7178a643b1f1cd76ab68346dd62a662a9c6dee58..7e790aa0f1ad05e8cd022ea42dcf33fe3553b0be 100644 GIT binary patch literal 13410 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 SM9ZyRs>#3YW1VJg75_JVv_?Sy literal 12974 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 Zu*=Ho!@fAyYE#$R^8X@v-|@ZT{{~N!ATs~} diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridborderupdatecolumn.azshader index f2d6a2e169542edef0939d0ad69287d24b8aa11a..d70f7ac139958df72e00df283daa8d18f84925d5 100644 GIT binary patch delta 62 zcmV-E0Kxx_P>oQqc@7BL-{qy@s~IP=fes`L2x_S0a64~mOtY;TV+#oEiL^K2ZkMl< Ut{N({LMFoj2qvd;lcfLv0B%GY5dZ)H delta 62 zcmV-E0Kxx_P>oQqc@7BqulHUwJ5=AZfes`L2)KXA*v|pF 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 16d5486bc2d8ec81a564bde07c8369b436f098bb..8d904928c902e29c9d1554d243b8d8f89155e982 100644 GIT binary patch delta 16 Xcmdnww8?3MmLiAR@}kL085kGN8nb`A)x`HqEtq6Dt9ehwrI2+XnrI41siPP3{SV+#nN9ZZ2#Q4QFW Us~Re^KPJNg2qvd%wf_JB03Spb>i_@% delta 62 zcmV-E0Kxx?P>N8nb`A*FzwQ5u-&@eLehwrI2wa%sD5+5vC9|p;V+#nMs{b3a*0^(% Us~Re^KPJNg2<<`n9Z>)P0F5vju>b%7 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 5555d906468d2bfbac4d58135f82539e5729abef..7335bfca4d3baf8a179abf2165443c62f11a8c80 100644 GIT binary patch delta 16 Xcmez6@XKLCkphR>^6ahu85kGiqd delta 16 XcmbQHJWY8+pCHFu$Dgu+3=9kaHJ$}u 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 4f9d140b86f8f2df884f6717e2d6d93a78fac132..46f9f928772e23c4ba4f28e5d54c7a808e081b96 100644 GIT binary patch delta 16 Xcmca-aL-^vm;{H~^6ahu85kGF815+rE*D#%SS>68sRB~gTL`!)>jo7!b?PW1unz|XHZ~_~_)s)k(6UU$ zA;`xQayO??W3m`sHnzKk=oVm!$riE7HXXrDTlNtdOB6!pL{WEo>1`|7&n5iv*L~0P zp7Y-KGtb*UsBr$J==na3jka00y zore1v1u`ytNmzlaJ}gJ;=(?aVnG6boiN1c)WJPL+OT*t5iB^yF;qOP2`L=zTm3nTHi<_r2;mV$}YITHyL$Z&}q6ZIUs zSc=wy_L0pZv`B&q5O?_{4}_MHR196t6y@w#J*+>^$^$M9+_74u)mNbSkz}G3((6YF zs@z7_Z{_o=I)ccHEZp`)WXGy86UTXcGh)D%OMPegCp07xal0aLIi91A8qwv>nGGa0 z(81ktX5faO^9h`7xJj5z*KYnA(JWb}^l{Yim7ToL;7fV`mha zlh=yHJNTZS)<=U~W8dM#A6#IavYU$dlS_!6R;G|froi1sJ#CvJPq+&HjE=;hr$-^! z#yPp*ZazkoN}IL1wyM0MV0+p23YZOBP|7mszn+9AufHW&xYcrW)oegV+IkX#*e z^5iWsm#d}>!cd2r%ocgoRHEtuQ`^w9(}+@y0>ABiRB%o$BOUzXydjcA!u0n>PaTE4 z71vW3-TNm$Yjbi6VX{AEt~VrUy~jc?4TvSkDdpg5i4>a4j?0lFGY6NGe*cr`} z-|=)<4{34bcBT)rOsipdZXxbv`QN+lR7-k(H%q&bGx?PRxk|oDLs!4P0I>URrSHW= zI7x=}p7%vp$E>0&0}c1B(j~a=s5|3HiSIn&*yfRWZ7@mUb0UZuw{t`b{5m-?p~;*l zs_Ef?B$&{%+J~BON> z@1-NQT+2kC9lUD~o=)T=;z=hH{cX&0`=zT##Rd|f|H=XU@A delta 2368 zcmeH|T}+!*7{@vAmb_(9+QPdOHlSUEL9uW7sG%ro2}~{^fN^AtWP{?2h)$Ses0*+% zmk9fytbfN_9WWMlG4>Iv?~ug{K8%S8Y=XOxL@ghZEz^O_#3_jmeBaX!xX{Fl&8uCV z^L(7=obx%i9ni?>1&n9#jt`_UCr zlYT^a!YTHgWoX+-mS+Km(X%w0rCamlFJbpRBPO<<2$l;`Qw@!)2t!UD`a|J(Gciv} zY80*|x@eM?oq1UKSb_V0B*CH6pwXB|pLXel5vt$4Qc-v*!6j018Ca5xwAOm$x%7;1 zBaK9%EkYr7EtvvEkGY3PDP%r%4+H`cW+XoqO_+W=(GWTN7c%0ZZr6yN9ZEuiFsw6+ zS=Py9Hs$=tX=BUnTcTk!iBON}vHl>o;`>S6N=w0eV*Bga!H*m4af3bV1{LYzl|eFU&~J_uP3$@H2s=(F-$EF1d)-HmnrS2i_Ds`ys`)ezxc0K&VLjda zDj(l0e#u9<2hxVv-F|)Nkx~@bDG;B(9rshg8}8yj5^U zlgM@@@tv&9OhDOlb<}G~NqYQVZn`Gg+UY7gEfng6xKRJ8o!QOQa68*K+GPj*MJ@|grUgeyYMPU-j|1>7@z;5 zj{WI|bys2Pmv*V+QqlLy9yVj-jXkQGUwdiSDWtADEq0Ho$l8cZQDgqvbrLi%o<_bS c?7M$@pFDV>(>w5qg+vl|CQ;YW6c7;bH{xv0tN;K2 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 46c99b0d3ddcb8fbc6cf08974f29b437d0f7c350..e9f841047e633f729f147731f9e8b3ed5dc1383b 100644 GIT binary patch literal 34086 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 H2z>r8)R2yn 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 df447c8da00f01cc0b384c650132128240ec0a3a..e399dbcef0fef75481aaf50adde0ecf40c34350d 100644 GIT binary patch delta 16 XcmbQHJWY8+pCE@i%d70U3=9kaFdqcx delta 16 XcmbQHJWY8+pCHEr4T;)D1_lNIG2sO0 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 e2d34e23f7aedd46394608210faf80f45637f123..1580aa2477a788fd6aaad857b568327862e53b35 100644 GIT binary patch literal 36232 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 literal 33896 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 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingclosesthit.azshader index d1a669bacfae4238d30c8f1d0686a96ebca80fe3..bfed840febab47233bd7efbc8529ce1564a32892 100644 GIT binary patch delta 2968 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 delta 5688 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 b^1^McD8T;$)xf$y0UtlHW{ 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 1a0ec0f96219c3e202a5c1de3dd1b98575b7f9c0..e2f5a8cb502b189e07cdec95a357c9d43f7c880f 100644 GIT binary patch delta 2793 zcmY+FS#MQk6o&WdU;zo(K+3q3vc^)DWn;3>&V124SU>;l_$*tKHDn`j zo)3OV_Q+(Phm;?c?C|A~xQhsj!b9wo~CNv{u z79y?J2FzTPbY~#njg;@o``fykXQ0XGSpqvNKi0NhW#;IoSuugQ9#|8rt&?&{?0Kw9`3q|aZ( z%k^cItm?FQAC5nfcBgG{6zfO#EqsPj0|V$~AQy2P(2a9y5qB-Rv2p{SD_uqDI@;|bosD1qx)No^KL}1=$sDr zry^U>O_cm5`EEkje<6s%ThYDOHsuP9i9$D{%g34965oQ1{9Dk;uM8hxP#mxw-GDgY zR&)y#8@LU-*nlySe>=Lo<6ey10c>hJkaOBgkvrVKJHG?NohyH1wC?CmumpGyc7nS= zaCf5zcTa(HP4@yPV%~kgywgn53wb|~?*zZo{x0fQ0}$0)X@Cj4fDNg~6b8{9cX5on zvFkxQaQ_`3rtko|d@sc>Lq1sLY7In8<)K8xrFa-y-*ga#A3^spxwsRLqU$fNpV3-2%l1p2RNZ8x#3Yq07geaPoWH zzXwb1Bh|g{2a=9$0rF|E47fKBYehZ-^dBb1oFT9u)ciG{cg8zZ<7z+Q1K6%`xM>R= z1jQXr#g49@O?=qTVY|mz*YoK5rh}Nw3+U#_#kyWZ*FRhs{Sc@$@W-y)mqAhJC3FMg z(3cZmynKi874waW{8!NBBmW4x=NB7z)j<~zFenaq4V{4DedXvj<-u~XuGi7!%yTtw zfZ}S7VjENQ*H+_C)}QcE7abk?TXo02Vey;bPjPhmZXZK00l)Dc;MZ&+@=Z`&;Y4g3 zYD2!2_;W3JnG?W#!DDjd1F}4%ZU;IzH8auw6 zC((OAA7B!d>X$CaPjL1o(qDNSuY_2AI=WRu(9gf;-!-)6Q!V|=SDdb`>2ApCOIemRXJ1_Sx@D?%;1a}mR+lwmmw_Kv zF6t$PzF6p`h5j+0Xxm(B%#XEomX=+ZZ_7(}5y`Hg#VYJ-VE@o-;I)Zf3$IIbC%gu% zKW>TkbCP`%p_S%uF-3k=>V{YabqPHILgB^}3qJ9r{YR$Nj&~8&(~ucHtQT!=N7Q zpmGIv6gb2^cs;A@3m;~|=h@u=^!uA7Pv4E80*qO!Zw#2{%8_>yoZRX{aFV6g;}{19 zEVgJTkGT`8-;H_DHv^Aij^^rH3ST#Nl*o11TR|=80Oo6>egbZMQCG9v#-ryQ##ujW1JU44c-p|EXs{P< zJR10hxInsryU}UAIZ=NP+_8@Wzr!(wC$F5(48xMU9o{sA{THgi`C-XYoI%6@e6VBg2y09bhxZITUIssy#X}Ixd zIs-SJj_V{ktv4s?XW_=9e$Hk#NH_2XI&CnAjs|bSjmNm&f=>e*8;fzh4L4?;qj?9U zqj?u?PSrrnW z<5j+3jSH9MOyM-(&xSR?f`07#pb_jv4`R<2zW68e0ose@FMJ=u_1P8(3gM1)MEz?8k89F6fhO#eM?PCtHhlqdnMjMLg<1MSDW}V;rBsm#9Z5YK43b nmV!zCF2~LTPsGJ-V1YR!U>)#NU5}m5C%R`Ef9w6`%O=!+3^LUh diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg index 889e5a51fe..c9fa0f4e1c 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingcommon_raytracingglobalsrg.azsrg @@ -251,6 +251,44 @@ } ] }, + { + "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", @@ -433,6 +471,26 @@ "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" + } + ] } ] }, @@ -451,7 +509,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" + "value": "5" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -515,7 +573,7 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] } @@ -599,7 +657,35 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "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" } ] } @@ -3217,7 +3303,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "3506265182085703910" + "value": "2492931172876496388" } ] } @@ -3459,6 +3545,44 @@ } ] }, + { + "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", @@ -3641,6 +3765,26 @@ "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" + } + ] } ] }, @@ -3659,7 +3803,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" + "value": "5" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -3723,7 +3867,7 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] } @@ -3807,7 +3951,35 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "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" } ] } @@ -6425,7 +6597,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "3506265182085703910" + "value": "2492931172876496388" } ] } @@ -6575,7 +6747,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" + "value": "5" } ] } @@ -6667,6 +6839,44 @@ } ] }, + { + "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", @@ -6701,7 +6911,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] }, @@ -6739,7 +6949,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] } @@ -6849,6 +7059,26 @@ "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" + } + ] } ] }, @@ -6867,7 +7097,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "4" + "value": "5" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -6931,7 +7161,7 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] } @@ -7015,7 +7245,35 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "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" } ] } @@ -7104,7 +7362,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7136,7 +7394,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7168,7 +7426,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7200,7 +7458,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7232,7 +7490,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7264,7 +7522,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7296,7 +7554,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7328,7 +7586,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7360,7 +7618,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7392,7 +7650,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7424,7 +7682,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7456,7 +7714,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7488,7 +7746,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7520,7 +7778,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7552,7 +7810,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7584,7 +7842,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7616,7 +7874,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7648,7 +7906,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7680,7 +7938,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7712,7 +7970,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7744,7 +8002,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7776,7 +8034,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7808,7 +8066,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7840,7 +8098,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7872,7 +8130,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7904,7 +8162,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7936,7 +8194,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -7968,7 +8226,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -8000,7 +8258,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -8032,7 +8290,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] }, @@ -8064,7 +8322,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "5" + "value": "6" } ] } @@ -9589,7 +9847,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "16848591129341445217" + "value": "1426176521634445605" } ] } @@ -9633,7 +9891,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "4017610420074377641" + "value": "1425135468820160161" } ] } diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridraytracingmiss.azshader index 91c528661acd213ef512656f94c454c4d82cf4eb..84e773d9db95f1fc18b7e3add5bddde12e043425 100644 GIT binary patch delta 3097 zcmeHJYfO_@80OR#KMRFYEJ8b_u(q%YUkmECpg_@uIe`EHkwtBx0XLLOf!1s!+Ws&u z8xsjnwBFI_mSx>g_wA-rG0|j31IQ0FyU1{hC`_Pa(QJ#%oqo_3__HioHh=iE>_mG# zgVt&-q|b$6L&zqu847ehWRPE@g{m(C%1|dfy$s9}Eeu^Pa5gYV4AEkDVkpvUop4+c zp(tr3I=gLXbqi53CP!}1Q6lC>dJYMY6t|jRqL#Igc`!F#z=bL~4%;?{1){90s-b&S0G;Ct3v_Un72cte2|s}DKTp7YO>%|ijW!;P@}M5tVsvY14Wy0 zHF^}u82f%H49Zdxjo!WG+_2I~(7#oTZ3CKFM>*19>>q@uP*0DLwZ(da)6*m5Smg93 zLFL$V8l)a3r3`s0mL{X05uGCozkY6}t;yk9Z*L^j<#=2SR+OZ;Viynvj>bEfuG`rS z1Mxvy(DL&hCiq+X*N@H|%7b;sLuA}zk$=Yw&qWr}@Nm=)zD&dzzZi|~!M5q89k}B_ z+1*l{RkLs;l=9un8`AL&QY2pC+xB?pe0UO~=lbr`pF<_ClPaR4Jy}ar5#rok9qmC0 zO;N}d59bJ|TM?I@bc9GGHD+r=ou#tKR&J}r_^#I>-NJy`t))ed=V;hRfA*o-3^VMx`ZU|59XHy3l8m)u;;#P4&T zZtY@)v<}C-UNB*{&x)g7{R+Ki!Y^qOV(R50%Q?%x5-{4GC8=MmSU1EOE3$&0KA@)$ z=;;IcXAda%e6oA_vNwmg`02Ar(d_3hIf6(ULTS1r@@M`{p8=JHZ^4`I)c5Z)S}ZZf#JahKYqMtvtQ2pG!CK9=lXG{TZS@@ z_SzNDIf|c!@r3~HbT354Zvi~9uhzf6bq)2mKVUO{q{E^=0{GT}ZPV7uFq&58$ErdZ zT9%vqSh*$|{f7d3ttTW=+PvJr%g>WrxoA4s-BRGR$Zn?`%F86cqFqm*?>Z delta 2324 zcmeHIZA@Eb6y_~0-nA6USA{YI==dm;+oCL@>0-(1Fi2o?B;bgA1*dbk6~{CNfrc<; zZnCbAc$s#5#4T=SNZrM4ac+S6L&E^)RFsUij6k{xp~Pt#9O~N(w2MECG26fWdveaX z=REh^=RW7sFXAr;#kL<-p{)8Kj7Byn_@&a_#$70v?L>cw3N4Ea@_$T%vo-|!(QVkY zTZOr57G)D*_-oXJ{!td)KeceqAi|(Zo`jC8!6>US!8RtrRLyB}4?YfwGvL%T%bNCHclNl`zOXlY(g ziD=O73P*i2OC*TzuizUVI8M+~tl~nFNgka0)0r<`Z7kpLmij8#`Bvs=M&AI4 zNxyTCE9padW;INgqA`=aXJzB*o_sn`j4L-%;n))jV@kGnZEzfl#J4FHVdFQ|*%(=n zV8)_G$7C3e{FaTAZ?klLQ3zi9wXpQzRJHK6IxX3hv>0m!S+Jg`p~#f*dp$WK#1BgN zzSeefs_mQzr|cSN)~SdX6A>}3^~6KhEyd5)MBZ#w5icP=GBfZ&MtgkV{nUM~Y5EFX zbnVSBTf_MA=ROT&WbGvm_d9)S`S-SG1>Kd=T^ap98C_uyUuO!x`IYY+L7*V~?-wHZ z+{;JFoz)bP@%aktZ8fG65s_lvkamkbWza}gqm~E`CE!BpQQoMx&hJzz8mV>_dVOl? z39nNvRV{f{E|GG2B`HFFoc<2j){R$AJiM=G>IK2J47O|JT+#}&Rt+MZ{8c=mJ@F825b>vR0MmUCgS+j70f?us?2n5m?f3WBLh1sLyYq$1bIrRJhSKzx0T*G@tN~lBBjSmxPGZ{ tUK|%h(d3DNi5@ij&}W3HD(-d%KQ#FVx<*ntM+UjhIFpU*4+I1R{0+{a5Fh{m 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 57660de9e803dc08fa613c1e31202b581e7f6bdb..b288bb7647484f5b9a304def316271a8b425a39a 100644 GIT binary patch delta 6330 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 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 74e6d6263d2936a48c0e8702b82acade825eb2eb..0f2473b60661c98f9fe92e1ec3d3c4f05a572d03 100644 GIT binary patch delta 16 XcmbQHJWY8+pCE_Y|F-Vg3=9kaH8cgA delta 16 XcmbQHJWY8+pCHEr^#a=-1_lNIGS&qO 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 15d17bca27324078944b7ca7b9d4d083aea6758d..bfd979e588d5a15ff3c6ccce525bae8a2c8e6fa9 100644 GIT binary patch delta 407 zcmZ1y@F!q{pCF$m_chrCiIX2N#Auq|{5<&}yYS?EK|RKV&GQ5=F){K@E)Gx7iV{G(JQ!HPcCrK6%0R4uB*wA%y>vG-(5z~Cd7vS)<)tSdlhnEYN| zTvQXN5Cr&vSdM`kY>4P&aRqftEuaV!5QDrT&cMQ;4Wwm&m>GyAfP5VwEe*shKn#-C z1=3PL%rrS&L7P!~@?-^lQIHyt9*|y;90==9zOHasQ3J>V=>!35APeLURxl63*V?>W PF_Dc!?SEVMY@jdzIucCn delta 355 zcmewpuq0rEpCF&KP5jY+ezy%7Vl>Tfex7`gU3hZ7pdKT~=6Qmbm>78{7mCPD{x2du zd7X%qU_pL~PiA^XiF1BwUI_ym1JC4#Kv`o^@yT_ zcrP!_E6%{epaGPU0%E4g>tfBU@LbzbQ_GV$FL^h5G>IJqvKw$ump+9c` diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrelocation.azshader index e5446589e8aa26e03fd61ebd2324a70a84fec04e..d827fbe2a181de9df1ebc19f0eec3720dc8f81d1 100644 GIT binary patch delta 67 zcmV-J0KEUs$pX&F0F^0N>)y)_6N?q8|A%G~giyErSdZqYOd6EDET Zg(MNWle{=8vjd~U0SN6u149r1002AC9LWFx 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 abfbda4bae32f81f3f26e826b1567e3501ae1198..7d76080dd79fd6606d4302c5822ff903e8888cd8 100644 GIT binary patch delta 16 YcmX>UcPMUyl|F~s@}={pGcYg!06hT)2><{9 delta 16 XcmX>UcPMUyl|IK?M`mXM1_lNIIKTwv 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 c2689bcb40cbf967f8c0a4dda1c1ad45b06f8ddd..c301dc47904b0ef3153d55cbf01d1895204c4000 100644 GIT binary patch delta 16 YcmbQHJWY8+pCE_Y@}={pGcYg!05jDEaR2}S delta 16 XcmbQHJWY8+pCHFuM`mXM1_lNIFO&pM 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 cc5cc308183699e005b4afa210ffe005388c2180..2a077e0bbf7bafe71fa27bcbe10130b0e105f20e 100644 GIT binary patch delta 16 XcmZq5Xv)~|%a}uL`OBeSyr0|Ns9I=}@! diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender.azshader index 9e62bc1927545963c08003722c3871870e55c28f..b88c7e4ec562e81480498d413d19812aa15012e4 100644 GIT binary patch delta 4966 zcmeHLeNdF=5qI$gUr)K?+q)CxFn}I#?|Xa%PW%X_en5b73>kuvgM)$|%E6(eI;Mo9 z+Np_&oVU?Mq6E@5$&5ybm&s`?AKKB$SOMEVIx%(xn>Kc|7H486He<&=?|pEWKb&c% ze`U%)chBxVyU*@E`|SPpF5M0L^!0gzn|WEZwPshN)z;KtL=%5b7Ud_)@xn11Iu@#_ zItO?>H9y69tP8{65^yp}7Sd3UwF|76e}E&G4b)^zgEShHLs;bYhM%-G)NgETYHQeO ztle2_rAQt893966>R1JfG2-}EjO5j5TEx?2I;7xK7>8nl0#g^-vGjc&o5NGE<3tt8QmE9mmW4SG%MA4_t)r9i zsJWyML!w@sId*M{rxkxqwIBXu~oDhf{sO1#U~!y`KE7**q_w!oRk zzL@=y3u-h!C_wq;6g2CVuo~Aj)G{gxM{;AF8A^6X5<`DQjjJvyVLhXYvF~D*r0DEs zx|wf~RRJQi9ZS{aAmH>BkvWrq@!6~naz$C3KjLy4DTf`*=}qkZMV!vQNcc{gNV=MUc`x?il{f7#_-i5i5npS(^vim?`4Y4yaF1Kv6GES zv98ziIst34L@75ad~{X7(QMH@Sp|t9G*|_qERc6PTmkFcTn+po43a2uD?G=7F8h(5 zS{H%p=r(rGG4FvcBqSd@|D<98GZFig)&-v3c)Dvbgixynl)QcU{_)GEH!sj(4P;RB zHmK)6-w?aI>PGyhl(-i*P=bX$v^NsrS=2PMda}S~srE6cER~i16lx|jUA;GYAgK7L ze>-$YMJL0zipN+=GDxuj=CRjHn(a`^YL26E8>FH!Iu1{jjIlsD94JT)F8YpEsKBJj z{j7+ECl>!1mb&|YR%5(TV76k&)&kc_Xkj-fmAC!YCaLH{(ORN)9#f#HY!jI?|ITOOru3=BP6HcMyLy?)6&6wXsiJg!|>-WGV zSMyhAb^OVfK8W6zIh+?rvzw*)B;fRmu{d>0735j#87RcTJsjTMqN4mg5b7Fmo&)}~ z{yUA|Za<=O+1_+;LD`#ask1G0wx!Ot)Y+D*{+=y$zO3)dFEgSq@0&v>K7v&Dv&m2$ z0@2jJ9R4=jV1J;P_2OLWTh4|FzA=TtFgdn=RP1GRk7&uh9;yT4$s}`tn9g2|;>W(d zl|x#LSQ$@0-UvR9WX|#Xc&v7N8D!W5`)0Ih*aYd=b=D_4TLfCX_jDY-ydt1ZU0c|6 zpfB`UlniLmu6@yCgd~*(z9H#5NZWgc#i|X0+g=?{hymQ4?KQNb2%h&K?-{!cpjV9q?Fb-~s6BA3JZ%vb-9QT^sSE56YE zHRDPUs{f+lU!R@6D=EohTt@yT*$M$zp@Udw(Ihq&%Up8F=|MMV#&0qZzjj`U=k4Q%?h*&}4nuiLZW55jT3lpH*p+}j^{>`AZJaP(IYgG>JHJ>a3ufDyZ+ z@Vt+PO&tP@-zeUHyvx6)G=T6Uy}q5SZAgqJkMyDKsDBsJ zh{EyKS`Xbll1hi1V3G(=*Tm_abu$DFAOt8TilzyUO`-nHR2u4&`<;~0kevNol)O~p zF)#Vh5(b;4e?_Fel8;lb#QGeFb&nr~bt=C1vzS{K=Ks+my|*L$om6GZnZ8HYgPt1a zd1^F~2$fR(2>yw(f)ytXx3KK6p)rE)ErX)}e*U|4u%htmU++8ZW>`f7e9C){BKe#- GbN&M-CmBcp delta 4211 zcmeHKdr(y873VA$SQc4!MRa$0E!vH7Veeid1Rn(0sg{`Xve;Ox2)jka7+{r*wrRCX zXVj*NivFTsEDn+x(R6&RY$7S~MI#}lBADo;%yjJHG?_7IAZ;hpYDfCryUQx=f0=3f zNBQT@d41=ebM86k{=N@ii|QGP^j4^u*+X%-7wy3pYEhV0SJjA;BW_gBHNhJ#Mos4e zcf(7}nM0dZVQ!@9ji}RzF`BxnwT*R+Y zW1cuzMDhD$J-9SY#Oc_V0=Ax55vk|&__5Z5T&>95MWjVly9W=nBFfeYaK9aklw%(J zv0cQ~V+S#ILqPsl1^Y{8__~fSit^>3IZqUev-gd-XKJ4a6irEsq3aTu*F}*yX`aW- zKjiuKpRH6P+mj@s?PCp2CtITAT;=e|oQ=J+HAqdVLBR?E4NZ}_|Bi(XK1CXwPkEF1 zO`O=BV&TDS@yk>ZQh^3ZX_iSv=zhn}2A2|#yCa<^mX9$mP-=VloXDC_aTnD-3onHO z%{w*tqQfGmoJ$(t_B2U@{%i3V?S45*7Yu5jI2-PaAE4SM;$emhW427}v8`oePMV3s zqJfoFP!@DOYw?FGE}XGjQEYd?zbFA^k^w`U?vt!&{=kLpy*4EEx^Qi=2BVoz;zX~B zRaf$_B{gK?OwJq}dCEW;aMn9;R|wjwA0QJ9nM{ceaSpCVMD!$Bl)|e3Iq*7kY?1l5kib00DIFJ|F67_Qj@A8F zu{+le>9P^-YprsH?L3L;C>;=)bb>SE7xlO>aCZL!JL)Z3oEU6lx-?$hiiPPIypYP; z)=@j^2klB)rMY=%&9)=ue8Ra}Y9c13lAU=sP$3FFvHMbQrm0BF^l9YkG}qDQNSHS^-IOL^p~YD5C2+e(^r;Td7C2f_En6OW(rD|-7R0i`$oW$6}Et2Q&9=; z1OcCySmBS1?~D0D`k5Vi$L!&kXZgN7)GSPGnyF1QwP~g{&3|IkM8~&8)O_0a z{g1+!xreNsOC(yOV%}Ax#=Fr^$b0qOsrB=}Uq8PICp{dNUHtjwdwWRF-aJ6_A$15$ zdVvF^r1uQWznroZBO6Bvi4f-&aZcYOVcYd2j9!pAhsDO+OK7#O3|chb)MIsb&`A(RtjnL`-=-@1S_yVZJ|8hE5)k+7OE>$aiA8_`N7YqCYocp zAHnUEFH(AJ|JyoQ0;@Jt+<{_JPO@JepdBHtxha;7Cz1}&Z4CKkcZpsISrqI_!?qV6DcwFwX1U=3 zXV_5pddSk;l+4^hP{HG4%_f@7rbPrL3mceXI@HiIafE5(DU+2&k^v*`EJeDoAqRuI zX0Vp1M~-l5=X8v3S~GDBuWqgh(aDW2g*Ns)32$SqOtWPgdSk+XdD|$KCB;zHMI)$Id8A^t(T|afZ827dcR}uz>d%)ge#N4 z`-gF0U&tFsR4xb?4;I2a8o}IKX`XyRU>j}p?SDc2DR0j?d_KA2VJH6;n@N4ovFe$q Iu&}Uy0$#yybN~PV 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 ae976a7cd9387fb22b236e6c1361548c84cf149d..48bdc8986766d7f4467669244413fbb6ec33af5d 100644 GIT binary patch delta 12905 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 Rvk_}Xc)?jc&j6ZK{|C1g-mCxs 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 674ed7b1ac9a931a9c56889d13f32032fd5390ae..af7c9626941cbdb222496d8485268501ae2beaac 100644 GIT binary patch delta 16 XcmeyS`b~AiJ0T9Wh{0 diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_objectsrg.azsrg b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_objectsrg.azsrg index 856baff38e..47f5e48fca 100644 --- a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_objectsrg.azsrg +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridrender_objectsrg.azsrg @@ -99,6 +99,44 @@ } ] }, + { + "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", @@ -261,6 +299,26 @@ "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" + } + ] } ] }, @@ -279,7 +337,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -343,7 +401,7 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" + "value": "2" } ] } @@ -399,7 +457,35 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "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" } ] } @@ -3177,7 +3263,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "10943999648486519461" + "value": "12354971452077948474" } ] } @@ -3267,6 +3353,44 @@ } ] }, + { + "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", @@ -3429,6 +3553,26 @@ "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" + } + ] } ] }, @@ -3447,7 +3591,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -3511,7 +3655,7 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" + "value": "2" } ] } @@ -3567,7 +3711,35 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "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" } ] } @@ -6345,7 +6517,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "10943999648486519461" + "value": "12354971452077948474" } ] } @@ -6435,6 +6607,44 @@ } ] }, + { + "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", @@ -6469,7 +6679,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" + "value": "2" } ] }, @@ -6507,7 +6717,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "value": "3" } ] } @@ -6597,6 +6807,26 @@ "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" + } + ] } ] }, @@ -6615,7 +6845,7 @@ "field": "m_groupSizeForImages", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" }, { "field": "m_groupSizeForBufferUnboundedArrays", @@ -6679,7 +6909,7 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "1" + "value": "2" } ] } @@ -6735,7 +6965,35 @@ "field": "m_index", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "2" + "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" } ] } @@ -6824,7 +7082,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -6856,7 +7114,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -6888,7 +7146,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -6920,7 +7178,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -6952,7 +7210,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -6984,7 +7242,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7016,7 +7274,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7048,7 +7306,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7080,7 +7338,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7112,7 +7370,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7144,7 +7402,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7176,7 +7434,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7208,7 +7466,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7240,7 +7498,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7272,7 +7530,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7304,7 +7562,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7336,7 +7594,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7368,7 +7626,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7400,7 +7658,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7432,7 +7690,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7464,7 +7722,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7496,7 +7754,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7528,7 +7786,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7560,7 +7818,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7592,7 +7850,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7624,7 +7882,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7656,7 +7914,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7688,7 +7946,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7720,7 +7978,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7752,7 +8010,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7784,7 +8042,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7816,7 +8074,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] }, @@ -7848,7 +8106,7 @@ "field": "m_registerId", "typeName": "unsigned int", "typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}", - "value": "3" + "value": "4" } ] } @@ -9469,7 +9727,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "14153574899631108967" + "value": "11445921412800959080" } ] } @@ -9513,7 +9771,7 @@ "field": "m_hash", "typeName": "AZ::u64", "typeId": "{D6597933-47CD-4FC8-B911-63F3E2B0993A}", - "value": "8072403242124824453" + "value": "16873325821914315993" } ] } 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 1dfcbd3ac3ce6667f3ae591d8da91d8aa7af5c35..4e9771d614e2d6c7fc40b5ed9eae75421e5e1360 100644 GIT binary patch delta 529 zcmeC%$2f04z`E?;;;+tE<7PB%6P1cZ+XJpyzAtTK!=)u4Wwox2thcXZwY)+70%giV>nNQhv zv%9h~E1#o@-M6)ytdGFML3nbvh92Xa&AT+tG3jyx-Ar^iOx~z1A_op6Y#s+01o1eF z4#?wjlg)JaCQInZF@n6TJ$V|Cw^vk&6{Jph@^l^b$fi zQGBzx?teC*H_c7vGcrxSZX(afJo!72WSN|!D8Jdv^bZr*+aPlg-qyE}Wd(ZM*VcA( Qn{9(4huZQ9-h4n60A*^2i2wiq delta 416 zcmbQYpRsQro7qCEs=m@~v^n&139*^ozcvXGDtW6WlIp=nI)TnsD>3=BMz z^>q~WA#7eCKP)q~Jh&)5J~zI&Aiu;XGd-ikIlnZo1SrM8#=s5M!#6obRC{u?DBt9% zqH>elf%G07DOQkaf|DPJ8Z!z_=GRpQ^Mxndh^aG*Opb^0MJM+F`C^mT>xyqaE!M-z zC^$JnMxK#*bA^mF^XBF9tC$%jCkH9pZl0_x&&pT&pE)FwdFm{<`-LZ8*3e^IvYAQq z91|ngOihnpB$tk1a!R=D@a6O@_HR@pi>@*>Vx?p_p394 z+^#&?NLOfbj;<6V$mPnDn{WIiL~WPek6MyAR6K$3a#21WVJ>rDSJ kZQf@g#mX$nz&825t@Pw?whEi2>}nJ_-a1CvvIA`c03e5KYybcN diff --git a/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp b/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp index 5f7057c9be..be6d438a62 100644 --- a/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/CommonSystemComponent.cpp @@ -96,6 +96,7 @@ #include #include #include +#include #include #include #include @@ -261,6 +262,7 @@ namespace AZ passSystem->AddPassCreator(Name("DiffuseProbeGridBlendDistancePass"), &Render::DiffuseProbeGridBlendDistancePass::Create); passSystem->AddPassCreator(Name("DiffuseProbeGridBorderUpdatePass"), &Render::DiffuseProbeGridBorderUpdatePass::Create); passSystem->AddPassCreator(Name("DiffuseProbeGridRelocationPass"), &Render::DiffuseProbeGridRelocationPass::Create); + passSystem->AddPassCreator(Name("DiffuseProbeGridClassificationPass"), &Render::DiffuseProbeGridClassificationPass::Create); passSystem->AddPassCreator(Name("DiffuseProbeGridRenderPass"), &Render::DiffuseProbeGridRenderPass::Create); passSystem->AddPassCreator(Name("LuminanceHistogramGeneratorPass"), &LuminanceHistogramGeneratorPass::Create); diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.cpp index eeb32cdd07..8a349083ea 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.cpp @@ -41,6 +41,7 @@ namespace AZ m_irradianceImageAttachmentId = AZStd::string::format("ProbeIrradianceImageAttachmentId_%s", uuidString.c_str()); m_distanceImageAttachmentId = AZStd::string::format("ProbeDistanceImageAttachmentId_%s", uuidString.c_str()); m_relocationImageAttachmentId = AZStd::string::format("ProbeRelocationImageAttachmentId_%s", uuidString.c_str()); + m_classificationImageAttachmentId = AZStd::string::format("ProbeClassificationImageAttachmentId_%s", uuidString.c_str()); // setup culling m_cullable.m_cullData.m_scene = m_scene; @@ -252,6 +253,20 @@ namespace AZ AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize m_probeRelocationImage image"); } + // probe classification + { + uint32_t width = probeCountX; + uint32_t height = probeCountY; + + m_classificationImage[m_currentImageIndex] = RHI::Factory::Get().CreateImage(); + + RHI::ImageInitRequest request; + request.m_image = m_classificationImage[m_currentImageIndex].get(); + request.m_descriptor = RHI::ImageDescriptor::Create2D(RHI::ImageBindFlags::ShaderReadWrite, width, height, DiffuseProbeGridRenderData::ClassificationImageFormat); + RHI::ResultCode result = m_renderData->m_imagePool->InitImage(request); + AZ_Assert(result == RHI::ResultCode::Success, "Failed to initialize m_probeClassificationImage image"); + } + m_updateTextures = false; // textures have changed so we need to update the render Srg to bind the new ones @@ -401,6 +416,10 @@ namespace AZ imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeOffsets")); m_rayTraceSrg->SetImageView(imageIndex, m_relocationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeRelocationImageViewDescriptor).get()); + // probe classification + imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeStates")); + m_rayTraceSrg->SetImageView(imageIndex, m_classificationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeClassificationImageViewDescriptor).get()); + // grid settings constantIndex = srgLayout->FindShaderInputConstantIndex(Name("m_ambientMultiplier")); m_rayTraceSrg->SetConstant(constantIndex, m_ambientMultiplier); @@ -431,6 +450,9 @@ namespace AZ imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeIrradiance")); m_blendIrradianceSrg->SetImageView(imageIndex, m_irradianceImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeIrradianceImageViewDescriptor).get()); + imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeStates")); + m_blendIrradianceSrg->SetImageView(imageIndex, m_classificationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeClassificationImageViewDescriptor).get()); + SetGridConstants(m_blendIrradianceSrg); } @@ -451,6 +473,9 @@ namespace AZ imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeDistance")); m_blendDistanceSrg->SetImageView(imageIndex, m_distanceImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeDistanceImageViewDescriptor).get()); + imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeStates")); + m_blendDistanceSrg->SetImageView(imageIndex, m_classificationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeClassificationImageViewDescriptor).get()); + SetGridConstants(m_blendDistanceSrg); } @@ -559,6 +584,27 @@ namespace AZ SetGridConstants(m_relocationSrg); } + void DiffuseProbeGrid::UpdateClassificationSrg(const Data::Asset& srgAsset) + { + if (!m_classificationSrg) + { + m_classificationSrg = RPI::ShaderResourceGroup::Create(srgAsset); + AZ_Error("DiffuseProbeGrid", m_classificationSrg.get(), "Failed to create Classification shader resource group"); + } + + const RHI::ShaderResourceGroupLayout* srgLayout = m_classificationSrg->GetLayout(); + RHI::ShaderInputConstantIndex constantIndex; + RHI::ShaderInputImageIndex imageIndex; + + imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeRayTrace")); + m_classificationSrg->SetImageView(imageIndex, m_rayTraceImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeRayTraceImageViewDescriptor).get()); + + imageIndex = srgLayout->FindShaderInputImageIndex(AZ::Name("m_probeStates")); + m_classificationSrg->SetImageView(imageIndex, m_classificationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeClassificationImageViewDescriptor).get()); + + SetGridConstants(m_classificationSrg); + } + void DiffuseProbeGrid::UpdateRenderObjectSrg() { if (!m_updateRenderObjectSrg) @@ -601,6 +647,9 @@ namespace AZ imageIndex = srgLayout->FindShaderInputImageIndex(Name("m_probeOffsets")); m_renderObjectSrg->SetImageView(imageIndex, m_relocationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeRelocationImageViewDescriptor).get()); + imageIndex = srgLayout->FindShaderInputImageIndex(Name("m_probeStates")); + m_renderObjectSrg->SetImageView(imageIndex, m_classificationImage[m_currentImageIndex]->GetImageView(m_renderData->m_probeClassificationImageViewDescriptor).get()); + SetGridConstants(m_renderObjectSrg); m_updateRenderObjectSrg = false; diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.h index a92daeffaa..e1ca2123a5 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGrid.h @@ -30,6 +30,7 @@ namespace AZ static const RHI::Format IrradianceImageFormat = RHI::Format::R16G16B16A16_UNORM; static const RHI::Format DistanceImageFormat = RHI::Format::R32G32_FLOAT; static const RHI::Format RelocationImageFormat = RHI::Format::R16G16B16A16_FLOAT; + static const RHI::Format ClassificationImageFormat = RHI::Format::R8_UINT; // image pool RHI::Ptr m_imagePool; @@ -43,6 +44,7 @@ namespace AZ RHI::ImageViewDescriptor m_probeIrradianceImageViewDescriptor; RHI::ImageViewDescriptor m_probeDistanceImageViewDescriptor; RHI::ImageViewDescriptor m_probeRelocationImageViewDescriptor; + RHI::ImageViewDescriptor m_probeClassificationImageViewDescriptor; // render pipeline state RPI::Ptr m_pipelineState; @@ -118,6 +120,7 @@ namespace AZ const Data::Instance& GetBorderUpdateRowDistanceSrg() const { return m_borderUpdateRowDistanceSrg; } const Data::Instance& GetBorderUpdateColumnDistanceSrg() const { return m_borderUpdateColumnDistanceSrg; } const Data::Instance& GetRelocationSrg() const { return m_relocationSrg; } + const Data::Instance& GetClassificationSrg() const { return m_classificationSrg; } const Data::Instance& GetRenderObjectSrg() const { return m_renderObjectSrg; } // Srg updates @@ -126,6 +129,7 @@ namespace AZ 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 UpdateRenderObjectSrg(); // textures @@ -133,12 +137,14 @@ namespace AZ const RHI::Ptr& GetIrradianceImage() { return m_irradianceImage[m_currentImageIndex]; } const RHI::Ptr& GetDistanceImage() { return m_distanceImage[m_currentImageIndex]; } const RHI::Ptr& GetRelocationImage() { return m_relocationImage[m_currentImageIndex]; } + const RHI::Ptr& GetClassificationImage() { return m_classificationImage[m_currentImageIndex]; } // attachment Ids const RHI::AttachmentId GetRayTraceImageAttachmentId() const { return m_rayTraceImageAttachmentId; } const RHI::AttachmentId GetIrradianceImageAttachmentId() const { return m_irradianceImageAttachmentId; } const RHI::AttachmentId GetDistanceImageAttachmentId() const { return m_distanceImageAttachmentId; } const RHI::AttachmentId GetRelocationImageAttachmentId() const { return m_relocationImageAttachmentId; } + const RHI::AttachmentId GetClassificationImageAttachmentId() const { return m_classificationImageAttachmentId; } const DiffuseProbeGridRenderData* GetRenderData() const { return m_renderData; } @@ -222,6 +228,7 @@ namespace AZ RHI::Ptr m_irradianceImage[ImageFrameCount]; RHI::Ptr m_distanceImage[ImageFrameCount]; RHI::Ptr m_relocationImage[ImageFrameCount]; + RHI::Ptr m_classificationImage[ImageFrameCount]; uint32_t m_currentImageIndex = 0; bool m_updateTextures = false; bool m_irradianceClearRequired = true; @@ -235,6 +242,7 @@ namespace AZ Data::Instance m_borderUpdateRowDistanceSrg; Data::Instance m_borderUpdateColumnDistanceSrg; Data::Instance m_relocationSrg; + Data::Instance m_classificationSrg; Data::Instance m_renderObjectSrg; bool m_updateRenderObjectSrg = true; @@ -243,6 +251,7 @@ namespace AZ RHI::AttachmentId m_irradianceImageAttachmentId; RHI::AttachmentId m_distanceImageAttachmentId; RHI::AttachmentId m_relocationImageAttachmentId; + RHI::AttachmentId m_classificationImageAttachmentId; }; } // namespace Render } // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.cpp index 33c14afe86..3df13556d3 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.cpp @@ -132,6 +132,16 @@ namespace AZ frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); } + + // probe classification image + { + RHI::ImageScopeAttachmentDescriptor desc; + desc.m_attachmentId = diffuseProbeGrid->GetClassificationImageAttachmentId(); + desc.m_imageViewDescriptor = diffuseProbeGrid->GetRenderData()->m_probeClassificationImageViewDescriptor; + desc.m_loadStoreAction.m_loadAction = AZ::RHI::AttachmentLoadAction::Load; + + frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); + } } } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.cpp index 5d25b68b18..4e05b8ef31 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridBlendIrradiancePass.cpp @@ -132,6 +132,16 @@ namespace AZ frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); } + + // probe classification image + { + RHI::ImageScopeAttachmentDescriptor desc; + desc.m_attachmentId = diffuseProbeGrid->GetClassificationImageAttachmentId(); + desc.m_imageViewDescriptor = diffuseProbeGrid->GetRenderData()->m_probeClassificationImageViewDescriptor; + desc.m_loadStoreAction.m_loadAction = AZ::RHI::AttachmentLoadAction::Load; + + frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); + } } } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.cpp index 8f39b6e1b3..1aaa06c797 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.cpp @@ -73,6 +73,7 @@ namespace AZ m_probeGridRenderData.m_probeIrradianceImageViewDescriptor = RHI::ImageViewDescriptor::Create(DiffuseProbeGridRenderData::IrradianceImageFormat, 0, 0); m_probeGridRenderData.m_probeDistanceImageViewDescriptor = RHI::ImageViewDescriptor::Create(DiffuseProbeGridRenderData::DistanceImageFormat, 0, 0); m_probeGridRenderData.m_probeRelocationImageViewDescriptor = RHI::ImageViewDescriptor::Create(DiffuseProbeGridRenderData::RelocationImageFormat, 0, 0); + m_probeGridRenderData.m_probeClassificationImageViewDescriptor = RHI::ImageViewDescriptor::Create(DiffuseProbeGridRenderData::ClassificationImageFormat, 0, 0); // load shader // Note: the shader may not be available on all platforms diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.cpp index ddda810eb7..6a0e618830 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRayTracingPass.cpp @@ -291,6 +291,19 @@ namespace AZ frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); } + + // probe classification + { + RHI::ResultCode result = frameGraph.GetAttachmentDatabase().ImportImage(diffuseProbeGrid->GetClassificationImageAttachmentId(), diffuseProbeGrid->GetClassificationImage()); + AZ_Assert(result == RHI::ResultCode::Success, "Failed to import probeClassificationImage"); + + RHI::ImageScopeAttachmentDescriptor desc; + desc.m_attachmentId = diffuseProbeGrid->GetClassificationImageAttachmentId(); + desc.m_imageViewDescriptor = diffuseProbeGrid->GetRenderData()->m_probeClassificationImageViewDescriptor; + desc.m_loadStoreAction.m_loadAction = AZ::RHI::AttachmentLoadAction::Load; + + frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); + } } } diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.cpp index c5ac94607e..af6fce6f6a 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.cpp @@ -117,6 +117,16 @@ namespace AZ frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); } + + // probe classification image + { + RHI::ImageScopeAttachmentDescriptor desc; + desc.m_attachmentId = diffuseProbeGrid->GetClassificationImageAttachmentId(); + desc.m_imageViewDescriptor = diffuseProbeGrid->GetRenderData()->m_probeClassificationImageViewDescriptor; + desc.m_loadStoreAction.m_loadAction = AZ::RHI::AttachmentLoadAction::Load; + + frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); + } } Base::SetupFrameGraphDependencies(frameGraph); diff --git a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp index 9df7f262ac..bb8f7ff54d 100644 --- a/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/RayTracing/RayTracingFeatureProcessor.cpp @@ -21,6 +21,8 @@ #include #include #include +#include +#include #include #include #include @@ -195,7 +197,23 @@ namespace AZ constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_directionalLightCount")); m_rayTracingSceneSrg->SetConstant(constantIndex, directionalLightFP->GetLightCount()); - // point lights + // simple point lights + const auto simplePointLightFP = GetParentScene()->GetFeatureProcessor(); + bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_simplePointLights")); + m_rayTracingSceneSrg->SetBufferView(bufferIndex, simplePointLightFP->GetLightBuffer()->GetBufferView()); + + constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_simplePointLightCount")); + m_rayTracingSceneSrg->SetConstant(constantIndex, simplePointLightFP->GetLightCount()); + + // simple spot lights + const auto simpleSpotLightFP = GetParentScene()->GetFeatureProcessor(); + bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_simpleSpotLights")); + m_rayTracingSceneSrg->SetBufferView(bufferIndex, simpleSpotLightFP->GetLightBuffer()->GetBufferView()); + + constantIndex = srgLayout->FindShaderInputConstantIndex(AZ::Name("m_simpleSpotLightCount")); + m_rayTracingSceneSrg->SetConstant(constantIndex, simpleSpotLightFP->GetLightCount()); + + // point lights (sphere) const auto pointLightFP = GetParentScene()->GetFeatureProcessor(); bufferIndex = srgLayout->FindShaderInputBufferIndex(AZ::Name("m_pointLights")); m_rayTracingSceneSrg->SetBufferView(bufferIndex, pointLightFP->GetLightBuffer()->GetBufferView()); diff --git a/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake b/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake index 7e23bc340f..47000d8a5c 100644 --- a/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake +++ b/Gems/Atom/Feature/Common/Code/atom_feature_common_files.cmake @@ -131,6 +131,8 @@ set(FILES Source/DiffuseProbeGrid/DiffuseProbeGridBorderUpdatePass.h Source/DiffuseProbeGrid/DiffuseProbeGridRelocationPass.cpp Source/DiffuseProbeGrid/DiffuseProbeGridRelocationPass.h + Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.cpp + Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.cpp Source/DiffuseProbeGrid/DiffuseProbeGridRenderPass.h Source/DiffuseProbeGrid/DiffuseProbeGrid.cpp From c367e514627c6e8c83be407b33273f1dde387470 Mon Sep 17 00:00:00 2001 From: dmcdiar Date: Mon, 19 Apr 2021 02:30:52 -0700 Subject: [PATCH 06/59] Added DiffuseProbeGridClassification pass. --- .../DiffuseProbeGridClassification.pass | 11 + ...eProbeGridClassification.precompiledshader | 32 + .../diffuseprobegridclassification.azshader | Bin 0 -> 40224 bytes ...egridclassification_dx12_0.azshadervariant | Bin 0 -> 10106 bytes ...egridclassification_null_0.azshadervariant | Bin 0 -> 4502 bytes ...ffuseprobegridclassification_passsrg.azsrg | 8071 +++++++++++++++++ ...ridclassification_vulkan_0.azshadervariant | Bin 0 -> 8914 bytes .../DiffuseProbeGridClassificationPass.cpp | 182 + .../DiffuseProbeGridClassificationPass.h | 66 + 9 files changed, 8362 insertions(+) create mode 100644 Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridClassification.pass create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_dx12_0.azshadervariant create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_null_0.azshadervariant create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_passsrg.azsrg create mode 100644 Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification_vulkan_0.azshadervariant create mode 100644 Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.cpp create mode 100644 Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h diff --git a/Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridClassification.pass b/Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridClassification.pass new file mode 100644 index 0000000000..c50890dac2 --- /dev/null +++ b/Gems/Atom/Feature/Common/Assets/Passes/DiffuseProbeGridClassification.pass @@ -0,0 +1,11 @@ +{ + "Type": "JsonSerialization", + "Version": 1, + "ClassName": "PassAsset", + "ClassData": { + "PassTemplate": { + "Name": "DiffuseProbeGridClassificationPassTemplate", + "PassClass": "DiffuseProbeGridClassificationPass" + } + } +} \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader new file mode 100644 index 0000000000..e7b15190e5 --- /dev/null +++ b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.precompiledshader @@ -0,0 +1,32 @@ +{ + "Type": "JsonSerialization", + "Version": 1, + "ClassName": "PrecompiledShaderAssetSourceData", + "ClassData": + { + "ShaderAssetFileName": "diffuseprobegridclassification.azshader", + "PlatformIdentifiers": + [ + "pc" + ], + "ShaderResourceGroupAssets": + [ + "diffuseprobegridclassification_passsrg.azsrg" + ], + "RootShaderVariantAssets": + [ + { + "APIName": "dx12", + "RootShaderVariantAssetFileName": "diffuseprobegridclassification_dx12_0.azshadervariant" + }, + { + "APIName": "vulkan", + "RootShaderVariantAssetFileName": "diffuseprobegridclassification_vulkan_0.azshadervariant" + }, + { + "APIName": "null", + "RootShaderVariantAssetFileName": "diffuseprobegridclassification_null_0.azshadervariant" + } + ] + } +} \ No newline at end of file diff --git a/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader b/Gems/Atom/Feature/Common/Assets/Shaders/DiffuseGlobalIllumination/diffuseprobegridclassification.azshader new file mode 100644 index 0000000000000000000000000000000000000000..39322fc48481c8420d1e60c410ab4a9b5a965852 GIT binary patch literal 40224 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 WWOyUcgs|33j}_Bho5 literal 0 HcmV?d00001 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 new file mode 100644 index 0000000000000000000000000000000000000000..58124203ee382908b2dfc7187dc9934d7cc6e491 GIT binary patch literal 4502 zcmZQzU|?YGV4m-r>g{6blh}Lq=`GnObRz;TyI}%Bx>fQ)%kg$oP2cD9EKD7 zdJ6R!Z^a~stZEGK?%3b=wNYwUV$7MA8>!B>CS=#X_gOK0LaQU&<)6(!bAiCa*ZzBy z`o@2Udb-@NFEB~t{KctlQrR_O^-9fClO)BT#GjvO^6pG*C-+VPhz2CGvOfQ?0bykf zk#UcW-z+%Q!L$B}^XW-Bk!w6W6NMNUPIO!hc*0oICdj7}>UyC$>9EZD{CBfGE}Fiu z;3(KGw}vg|+l691ac&&;~n*&o>xc!)FfqhbRW|iwjhvXq%so4>$S^X*9A(cp#3IAM5OdgUu{Ks2h7&74^(Qfw72mjV z__mwY!qD>%FBuC@kCL1eUjAmm7Um;AyxXS!Y0T(l$#Y;}WQeNS#4Ug!4vYxdUiS+9 z8|!&9i=%y~&6u}8PpZJ?grh^8C1cO&b}gO59y3T}vJxUFdC5ug7}8m~ByEY2|l%P^dHaBtN&M$W!< z&5J)f6>ML#=Av-g?wz(-x+HVa3V<+i6{z8uUifmAHQH-6V(muY^ly8*k5)3?=|v3L2L z{@b=4iww}TJ$2F{*i8eaVJu$f2ZkcJLLT)dT5~sMG&V;Q?P%T{ErLc%TCCL*?g|B1 zeR;gR>", + "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 new file mode 100644 index 0000000000000000000000000000000000000000..3a22d2cd552ecd70656fd5f864600db591cb9123 GIT binary patch literal 8914 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 S_Cmk9;q*Reo1g6#=6?dAfp;PR literal 0 HcmV?d00001 diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.cpp b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.cpp new file mode 100644 index 0000000000..db85914cee --- /dev/null +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.cpp @@ -0,0 +1,182 @@ +/* +* 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 + +namespace AZ +{ + namespace Render + { + RPI::Ptr DiffuseProbeGridClassificationPass::Create(const RPI::PassDescriptor& descriptor) + { + RPI::Ptr pass = aznew DiffuseProbeGridClassificationPass(descriptor); + return AZStd::move(pass); + } + + DiffuseProbeGridClassificationPass::DiffuseProbeGridClassificationPass(const RPI::PassDescriptor& descriptor) + : RPI::RenderPass(descriptor) + { + LoadShader(); + } + + void DiffuseProbeGridClassificationPass::LoadShader() + { + // load shader + // Note: the shader may not be available on all platforms + AZStd::string shaderFilePath = "Shaders/DiffuseGlobalIllumination/DiffuseProbeGridClassification.azshader"; + m_shader = RPI::LoadShader(shaderFilePath); + if (m_shader == nullptr) + { + return; + } + + // load pipeline state + RHI::PipelineStateDescriptorForDispatch pipelineStateDescriptor; + const auto& shaderVariant = m_shader->GetVariant(RPI::ShaderAsset::RootShaderVariantStableId); + shaderVariant.ConfigurePipelineState(pipelineStateDescriptor); + m_pipelineState = m_shader->AcquirePipelineState(pipelineStateDescriptor); + + // load Pass Srg asset + m_srgAsset = m_shader->FindShaderResourceGroupAsset(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" }); + if (numThreads) + { + const RHI::ShaderStageAttributeArguments& args = *numThreads; + bool validArgs = args.size() == 3; + if (validArgs) + { + validArgs &= args[0].type() == azrtti_typeid(); + validArgs &= args[1].type() == azrtti_typeid(); + validArgs &= args[2].type() == azrtti_typeid(); + } + + if (!validArgs) + { + AZ_Error("PassSystem", false, "[DiffuseProbeClassificationPass '%s']: Shader '%s' contains invalid numthreads arguments.", GetPathName().GetCStr(), shaderFilePath.c_str()); + return; + } + + m_dispatchArgs.m_threadsPerGroupX = AZStd::any_cast(args[0]); + m_dispatchArgs.m_threadsPerGroupY = AZStd::any_cast(args[1]); + m_dispatchArgs.m_threadsPerGroupZ = AZStd::any_cast(args[2]); + } + } + + void DiffuseProbeGridClassificationPass::FrameBeginInternal(FramePrepareParams params) + { + RPI::Scene* scene = m_pipeline->GetScene(); + DiffuseProbeGridFeatureProcessor* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor(); + + if (!diffuseProbeGridFeatureProcessor || diffuseProbeGridFeatureProcessor->GetProbeGrids().empty()) + { + // no diffuse probe grids + return; + } + + RayTracingFeatureProcessor* rayTracingFeatureProcessor = scene->GetFeatureProcessor(); + AZ_Assert(rayTracingFeatureProcessor, "DiffuseProbeGridClassificationPass requires the RayTracingFeatureProcessor"); + + if (!rayTracingFeatureProcessor->GetSubMeshCount()) + { + // empty scene + return; + } + + RenderPass::FrameBeginInternal(params); + } + + void DiffuseProbeGridClassificationPass::SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) + { + RenderPass::SetupFrameGraphDependencies(frameGraph); + + RPI::Scene* scene = m_pipeline->GetScene(); + DiffuseProbeGridFeatureProcessor* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor(); + for (auto& diffuseProbeGrid : diffuseProbeGridFeatureProcessor->GetProbeGrids()) + { + // probe raytrace image + { + RHI::ImageScopeAttachmentDescriptor desc; + desc.m_attachmentId = diffuseProbeGrid->GetRayTraceImageAttachmentId(); + desc.m_imageViewDescriptor = diffuseProbeGrid->GetRenderData()->m_probeRayTraceImageViewDescriptor; + desc.m_loadStoreAction.m_loadAction = AZ::RHI::AttachmentLoadAction::Load; + + frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); + } + + // probe classification image + { + RHI::ImageScopeAttachmentDescriptor desc; + desc.m_attachmentId = diffuseProbeGrid->GetClassificationImageAttachmentId(); + desc.m_imageViewDescriptor = diffuseProbeGrid->GetRenderData()->m_probeClassificationImageViewDescriptor; + desc.m_loadStoreAction.m_loadAction = AZ::RHI::AttachmentLoadAction::Load; + + frameGraph.UseShaderAttachment(desc, RHI::ScopeAttachmentAccess::ReadWrite); + } + } + } + + void DiffuseProbeGridClassificationPass::CompileResources([[maybe_unused]] const RHI::FrameGraphCompileContext& context) + { + RPI::Scene* scene = m_pipeline->GetScene(); + DiffuseProbeGridFeatureProcessor* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor(); + for (auto& diffuseProbeGrid : diffuseProbeGridFeatureProcessor->GetProbeGrids()) + { + // the diffuse probe grid Srg must be updated in the Compile phase in order to successfully bind the ReadWrite shader inputs + // (see ValidateSetImageView() in ShaderResourceGroupData.cpp) + diffuseProbeGrid->UpdateClassificationSrg(m_srgAsset); + diffuseProbeGrid->GetClassificationSrg()->Compile(); + } + } + + void DiffuseProbeGridClassificationPass::BuildCommandListInternal(const RHI::FrameGraphExecuteContext& context) + { + RHI::CommandList* commandList = context.GetCommandList(); + RPI::Scene* scene = m_pipeline->GetScene(); + DiffuseProbeGridFeatureProcessor* diffuseProbeGridFeatureProcessor = scene->GetFeatureProcessor(); + + // submit the DispatchItems for each DiffuseProbeGrid + for (auto& diffuseProbeGrid : diffuseProbeGridFeatureProcessor->GetProbeGrids()) + { + const RHI::ShaderResourceGroup* shaderResourceGroup = diffuseProbeGrid->GetClassificationSrg()->GetRHIShaderResourceGroup(); + commandList->SetShaderResourceGroupForDispatch(*shaderResourceGroup); + + uint32_t probeCountX; + uint32_t probeCountY; + diffuseProbeGrid->GetTexture2DProbeCount(probeCountX, probeCountY); + + RHI::DispatchItem dispatchItem; + dispatchItem.m_arguments = m_dispatchArgs; + dispatchItem.m_pipelineState = m_pipelineState; + dispatchItem.m_arguments.m_direct.m_totalNumberOfThreadsX = probeCountX; + dispatchItem.m_arguments.m_direct.m_totalNumberOfThreadsY = probeCountY; + dispatchItem.m_arguments.m_direct.m_totalNumberOfThreadsZ = 1; + + commandList->Submit(dispatchItem); + } + } + } // namespace Render +} // namespace AZ diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h new file mode 100644 index 0000000000..df0a237e1a --- /dev/null +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h @@ -0,0 +1,66 @@ +/* +* 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 + +namespace AZ +{ + namespace Render + { + //! Compute shader that classifies probes as active or inactive in the diffuse probe grid. + class DiffuseProbeGridClassificationPass final + : public RPI::RenderPass + { + public: + AZ_RPI_PASS(DiffuseProbeGridClassificationPass); + + AZ_RTTI(AZ::Render::DiffuseProbeGridClassificationPass, "{98A6477A-F31C-4390-9BEB-9DB8E30BB281}", RPI::RenderPass); + AZ_CLASS_ALLOCATOR(DiffuseProbeGridClassificationPass, SystemAllocator, 0); + virtual ~DiffuseProbeGridClassificationPass() = default; + + static RPI::Ptr Create(const RPI::PassDescriptor& descriptor); + + private: + DiffuseProbeGridClassificationPass(const RPI::PassDescriptor& descriptor); + + void LoadShader(); + + // Pass overrides + void FrameBeginInternal(FramePrepareParams params) override; + + void SetupFrameGraphDependencies(RHI::FrameGraphInterface frameGraph) override; + void CompileResources(const RHI::FrameGraphCompileContext& context) override; + void BuildCommandListInternal(const RHI::FrameGraphExecuteContext& context) override; + + // shader + Data::Instance m_shader; + const RHI::PipelineState* m_pipelineState = nullptr; + Data::Asset m_srgAsset; + RHI::DispatchDirect m_dispatchArgs; + + // revision number of the ray tracing data when the shader table was built + uint32_t m_rayTracingDataRevision = 0; + }; + } // namespace Render +} // namespace AZ From 593542627602015b897f4239c3e4a785bfa6c755 Mon Sep 17 00:00:00 2001 From: Chris Santora Date: Mon, 19 Apr 2021 09:33:49 -0700 Subject: [PATCH 07/59] Fixed whitespace. ATOM-14765 Add More Texture Preset Masks --- .../Config/IBLSkybox.preset | 6 +++--- .../Config/NormalsWithSmoothness.preset | 10 +++++----- .../ImageProcessingAtom/Config/Opacity.preset | 20 +++++++++---------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSkybox.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSkybox.preset index 867fc73959..fef756e354 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSkybox.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/IBLSkybox.preset @@ -27,7 +27,7 @@ }, "PlatformsPresets": { "es3": { - "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", + "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", "Name": "IBLSkybox", "FileMasks": [ "_iblskyboxcm" @@ -61,7 +61,7 @@ "MinTextureSize": 256, "IsPowerOf2": true, "CubemapSettings": { - "RequiresConvolve": false, + "RequiresConvolve": false, "GenerateIBLSpecular": true, "IBLSpecularPreset": "{908DA68C-97FB-4C4A-97BC-5A55F30F14FA}", "GenerateIBLDiffuse": true, @@ -69,7 +69,7 @@ } }, "osx_gl": { - "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", + "UUID": "{E6441EAC-9843-484B-8EFC-C03B2935B48D}", "Name": "IBLSkybox", "FileMasks": [ "_iblskyboxcm" diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset index fdb24ecd09..2c61d6f5a6 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/NormalsWithSmoothness.preset @@ -9,11 +9,11 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_ddna", - "_normala", - "_nrma", - "_nma", - "_na" + "_ddna", + "_normala", + "_nrma", + "_nma", + "_na" ], "PixelFormat": "BC5s", "PixelFormatAlpha": "BC4", diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset b/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset index 6d0d9009a5..79fb235508 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset +++ b/Gems/Atom/Asset/ImageProcessingAtom/Config/Opacity.preset @@ -9,16 +9,16 @@ "SourceColor": "Linear", "DestColor": "Linear", "FileMasks": [ - "_sss", - "_trans", - "_opac", - "_opacity", - "_o", - "_opac", - "_op", - "_mask", - "_msk", - "_blend" + "_sss", + "_trans", + "_opac", + "_opacity", + "_o", + "_opac", + "_op", + "_mask", + "_msk", + "_blend" ], "PixelFormat": "BC4", "IsPowerOf2": true, From 889158e3a993eb371ed358cb3ce3e92c98ae6c8d Mon Sep 17 00:00:00 2001 From: srikappa Date: Mon, 19 Apr 2021 09:53:45 -0700 Subject: [PATCH 08/59] A couple of minor fixes --- .../Prefab/Instance/Instance.cpp | 2 +- .../Prefab/PrefabSystemComponent.cpp | 18 ++++++------------ 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp index bd4c343a3c..0a5b43482e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp @@ -283,7 +283,7 @@ namespace AzToolsFramework { if (!m_instanceEntityMapper->RegisterEntityToInstance(entityId, *this)) { - AZ_Error("Prefab", false, + AZ_Assert(false, "Prefab - Failed to register entity with id %s with a Prefab Instance derived from source asset %s " "This entity is likely already registered. Check for a double add.", entityId.ToString().c_str(), diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp index 7a9ec0a62e..b777c2bdeb 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp @@ -119,10 +119,7 @@ namespace AzToolsFramework newInstance->AddInstance(AZStd::move(instance)); } - /* - AzToolsFramework::EditorEntityContextRequestBus::Broadcast( - &AzToolsFramework::EditorEntityContextRequests::HandleEntitiesAdded, EntityList{containerEntity->GetId()}); - */ + newInstance->SetTemplateSourcePath(filePath); TemplateId newTemplateId = CreateTemplateFromInstance(*newInstance); @@ -162,14 +159,14 @@ namespace AzToolsFramework void PrefabSystemComponent::UpdatePrefabTemplate(TemplateId templateId, const PrefabDom& updatedDom) { - auto templateRef = FindTemplate(templateId); - if (templateRef.has_value()) + auto templateToUpdate = FindTemplate(templateId); + if (templateToUpdate) { - PrefabDom& templateDomToUpdate = templateRef->get().GetPrefabDom(); + PrefabDom& templateDomToUpdate = templateToUpdate->get().GetPrefabDom(); if (AZ::JsonSerialization::Compare(templateDomToUpdate, updatedDom) != AZ::JsonSerializerCompareResult::Equal) { templateDomToUpdate.CopyFrom(updatedDom, templateDomToUpdate.GetAllocator()); - templateRef->get().MarkAsDirty(true); + templateToUpdate->get().MarkAsDirty(true); PropagateTemplateChanges(templateId); } } @@ -643,12 +640,9 @@ namespace AzToolsFramework newLink.GetLinkDom().AddMember(rapidjson::StringRef(PrefabDomUtils::SourceName), rapidjson::StringRef(sourceTemplate.GetFilePath().c_str()), newLink.GetLinkDom().GetAllocator()); - PrefabDom linkPatchCopy; - linkPatchCopy.CopyFrom(linkPatch->get(), newLink.GetLinkDom().GetAllocator()); - if (linkPatch && linkPatch->get().IsArray() && !(linkPatch->get().Empty())) { - m_instanceToTemplatePropagator.AddPatchesToLink(linkPatchCopy, newLink); + m_instanceToTemplatePropagator.AddPatchesToLink(linkPatch.value(), newLink); } //update the target template dom to have the proper values for the source template dom From f3ff5ec8869e2344e17b1510bf76a9ae6b2a9b2e Mon Sep 17 00:00:00 2001 From: srikappa Date: Mon, 19 Apr 2021 11:05:28 -0700 Subject: [PATCH 09/59] Add helper method for adding link in CreatePrefab --- .../Prefab/PrefabPublicHandler.cpp | 77 +++++++++---------- .../Prefab/PrefabPublicHandler.h | 4 + .../Prefab/PrefabSystemComponent.cpp | 2 +- .../AzToolsFramework/Prefab/PrefabUndo.cpp | 2 +- .../AzToolsFramework/Prefab/PrefabUndo.h | 2 +- .../Prefab/PrefabUndoHelpers.cpp | 10 +++ .../Prefab/PrefabUndoHelpers.h | 3 + 7 files changed, 57 insertions(+), 43 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 0ce929217d..2fb186bcf7 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -100,7 +100,6 @@ namespace AzToolsFramework AZStd::vector> instances; InstanceOptionalReference instance; - { // Initialize Undo Batch object ScopedUndoBatch undoBatch("Create Prefab"); @@ -151,47 +150,9 @@ namespace AzToolsFramework linkRemoveUndo->Redo(); - AZ::EntityId containerEntityId = instance->get().GetContainerEntityId(); - AZ::Entity* containerEntity = GetEntityById(containerEntityId); - // Apply Transform changes as overrides - { - Prefab::PrefabDom containerEntityDomBefore; - m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomBefore, *containerEntity); - - AZ::Vector3 containerEntityTranslation(AZ::Vector3::CreateZero()); - AZ::Quaternion containerEntityRotation(AZ::Quaternion::CreateZero()); - - // Set the transform (translation, rotation) of the container entity - GenerateContainerEntityTransform(topLevelEntities, containerEntityTranslation, containerEntityRotation); - - // Set container entity to be child of common root - AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetParent, commonRootEntityId); - - AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalTranslation, containerEntityTranslation); - AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalRotationQuaternion, containerEntityRotation); - - PrefabDom containerEntityDomAfter; - m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomAfter, *containerEntity); - - PrefabDom patch; - m_instanceToTemplateInterface->GeneratePatch(patch, containerEntityDomBefore, containerEntityDomAfter); - - m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(patch, containerEntityId); - - - auto linkAddUndo = aznew PrefabUndoInstanceLink("Undo Link Add Node"); - linkAddUndo->Capture( - commonRootEntityOwningInstance->get().GetTemplateId(), instance->get().GetTemplateId(), instance->get().GetInstanceAlias(), - patch, InvalidLinkId); - linkAddUndo->SetParent(undoBatch.GetUndoBatch()); - - linkAddUndo->Redo(); - - // Update the cache - this prevents these changes from being stored in the regular undo/redo nodes - m_prefabUndoCache.Store(containerEntityId, AZStd::move(containerEntityDomAfter)); - } + AddLink(topLevelEntities, instance->get(), commonRootEntityOwningInstance->get(), undoBatch.GetUndoBatch(), commonRootEntityId); // Change top level entities to be parented to the container entity // Mark them as dirty so this change is correctly applied to the template @@ -216,6 +177,42 @@ namespace AzToolsFramework return AZ::Success(); } + void PrefabPublicHandler::AddLink( + const EntityList& topLevelEntities, Instance& instanceToAdd, Instance& parentInstance, UndoSystem::URSequencePoint* undoBatch, + AZ::EntityId commonRootEntityId) + { + AZ::EntityId containerEntityId = instanceToAdd.GetContainerEntityId(); + AZ::Entity* containerEntity = GetEntityById(containerEntityId); + Prefab::PrefabDom containerEntityDomBefore; + m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomBefore, *containerEntity); + + AZ::Vector3 containerEntityTranslation(AZ::Vector3::CreateZero()); + AZ::Quaternion containerEntityRotation(AZ::Quaternion::CreateZero()); + + // Set the transform (translation, rotation) of the container entity + GenerateContainerEntityTransform(topLevelEntities, containerEntityTranslation, containerEntityRotation); + + // Set container entity to be child of common root + AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetParent, commonRootEntityId); + + AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalTranslation, containerEntityTranslation); + AZ::TransformBus::Event(containerEntityId, &AZ::TransformBus::Events::SetLocalRotationQuaternion, containerEntityRotation); + + PrefabDom containerEntityDomAfter; + m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomAfter, *containerEntity); + + PrefabDom patch; + m_instanceToTemplateInterface->GeneratePatch(patch, containerEntityDomBefore, containerEntityDomAfter); + m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(patch, containerEntityId); + + PrefabUndoHelpers::AddLink( + "Add Link", instanceToAdd.GetTemplateId(), parentInstance.GetTemplateId(), patch, instanceToAdd.GetInstanceAlias(), + undoBatch); + + // Update the cache - this prevents these changes from being stored in the regular undo/redo nodes + m_prefabUndoCache.Store(containerEntityId, AZStd::move(containerEntityDomAfter)); + } + PrefabOperationResult PrefabPublicHandler::InstantiatePrefab(AZStd::string_view /*filePath*/, AZ::EntityId /*parent*/, AZ::Vector3 /*position*/) { return AZ::Failure(AZStd::string("Prefab - InstantiatePrefab is yet to be implemented.")); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h index de892470ab..7f3d05e3d3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h @@ -69,6 +69,10 @@ namespace AzToolsFramework InstanceOptionalReference GetOwnerInstanceByEntityId(AZ::EntityId entityId) const; bool EntitiesBelongToSameInstance(const EntityIdList& entityIds) const; + void AddLink( + const EntityList& topLevelEntities, Instance& instanceToAdd, Instance& parentInstance, + UndoSystem::URSequencePoint* undoBatch, AZ::EntityId commonRootEntityId); + static Instance* GetParentInstance(Instance* instance); static Instance* GetAncestorOfInstanceThatIsChildOfRoot(const Instance* ancestor, Instance* descendant); static void GenerateContainerEntityTransform(const EntityList& topLevelEntities, AZ::Vector3& translation, AZ::Quaternion& rotation); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp index b777c2bdeb..9070630e56 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp @@ -120,7 +120,7 @@ namespace AzToolsFramework newInstance->AddInstance(AZStd::move(instance)); } - newInstance->SetTemplateSourcePath(filePath); + newInstance->SetTemplateSourcePath(relativeFilePath); TemplateId newTemplateId = CreateTemplateFromInstance(*newInstance); if (newTemplateId == InvalidTemplateId) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.cpp index 0d9f9f72a5..ea3fa5d84d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.cpp @@ -124,7 +124,7 @@ namespace AzToolsFramework const TemplateId& targetId, const TemplateId& sourceId, const InstanceAlias& instanceAlias, - const PrefabDomReference linkDom, + PrefabDomReference linkDom, const LinkId linkId) { m_targetId = targetId; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.h index 7a765c5db7..0d15d707d2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndo.h @@ -101,7 +101,7 @@ namespace AzToolsFramework const TemplateId& targetId, const TemplateId& sourceId, const InstanceAlias& instanceAlias, - const PrefabDomReference linkDom = PrefabDomReference(), + PrefabDomReference linkDom = PrefabDomReference(), const LinkId linkId = InvalidLinkId); void Undo() override; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp index da41635d03..1fa9169ae2 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp @@ -32,6 +32,16 @@ namespace AzToolsFramework state->SetParent(undoBatch); state->Redo(); } + + void AddLink( + AZStd::string_view undoMessage, TemplateId sourceTemplateId, TemplateId targetTemplateId, PrefabDomReference patch, + const InstanceAlias& instanceAlias, UndoSystem::URSequencePoint* undoBatch) + { + auto linkAddUndo = aznew PrefabUndoInstanceLink(undoMessage); + linkAddUndo->Capture(targetTemplateId, sourceTemplateId, instanceAlias, patch, InvalidLinkId); + linkAddUndo->SetParent(undoBatch); + linkAddUndo->Redo(); + } } } // namespace Prefab } // namespace AzToolsFramework diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h index 81d0048e9e..279deb953c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h @@ -21,6 +21,9 @@ namespace AzToolsFramework void UpdatePrefabInstance( const Instance& instance, AZStd::string_view undoMessage, const PrefabDom& instanceDomBeforeUpdate, UndoSystem::URSequencePoint* undoBatch); + void AddLink( + AZStd::string_view undoMessage, TemplateId sourceTemplateId, TemplateId targetTemplateId, PrefabDomReference patch, + const InstanceAlias& instanceAlias, UndoSystem::URSequencePoint* undoBatch); } } // namespace Prefab } // namespace AzToolsFramework From 65b2d9de1bcee2cc4466e25738c285bb2f233c7d Mon Sep 17 00:00:00 2001 From: srikappa Date: Mon, 19 Apr 2021 13:43:54 -0700 Subject: [PATCH 10/59] Added couple of helper functions --- .../Prefab/PrefabPublicHandler.cpp | 120 +++++++++--------- .../Prefab/PrefabPublicHandler.h | 6 +- .../Prefab/PrefabUndoHelpers.cpp | 18 ++- .../Prefab/PrefabUndoHelpers.h | 7 +- 4 files changed, 87 insertions(+), 64 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 2fb186bcf7..adadc9d0ac 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -63,53 +63,28 @@ namespace AzToolsFramework PrefabOperationResult PrefabPublicHandler::CreatePrefab(const AZStd::vector& entityIds, AZ::IO::PathView filePath) { - // Retrieve entityList from entityIds - EntityList inputEntityList; - EntityIdListToEntityList(entityIds, inputEntityList); - - // Find common root and top level entities - bool entitiesHaveCommonRoot = false; + EntityList inputEntityList, topLevelEntities; AZ::EntityId commonRootEntityId; - EntityList topLevelEntities; - - AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult( - entitiesHaveCommonRoot, &AzToolsFramework::ToolsApplicationRequests::FindCommonRootInactive, inputEntityList, - commonRootEntityId, &topLevelEntities); - - // Bail if entities don't share a common root - if (!entitiesHaveCommonRoot) + InstanceOptionalReference commonRootEntityOwningInstance; + PrefabOperationResult findCommonRootOutcome = FindCommonRootOwningInstance( + entityIds, inputEntityList, topLevelEntities, commonRootEntityId, commonRootEntityOwningInstance); + if (!findCommonRootOutcome.IsSuccess()) { - return AZ::Failure( - AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root.")); + return findCommonRootOutcome; } - AZ::Entity* commonRootEntity = nullptr; - if (commonRootEntityId.IsValid()) - { - commonRootEntity = GetEntityById(commonRootEntityId); - } - - // Retrieve the owning instance of the common root entity, which will be our new instance's parent instance. - InstanceOptionalReference commonRootEntityOwningInstance = GetOwnerInstanceByEntityId(commonRootEntityId); - AZ_Assert( - commonRootEntityOwningInstance.has_value(), - "Failed to create prefab : " - "Couldn't get a valid owning instance for the common root entity of the enities provided"); - - AZStd::vector entities; - AZStd::vector> instances; - - InstanceOptionalReference instance; + InstanceOptionalReference instanceToCreate; { // Initialize Undo Batch object ScopedUndoBatch undoBatch("Create Prefab"); - TemplateId commonRootOwningTemplateId = commonRootEntityOwningInstance->get().GetTemplateId(); - PrefabDom commonRootInstanceDomBeforeCreate; m_instanceToTemplateInterface->GenerateDomForInstance( commonRootInstanceDomBeforeCreate, commonRootEntityOwningInstance->get()); + AZStd::vector entities; + AZStd::vector> instances; + // Retrieve all entities affected and identify Instances if (!RetrieveAndSortPrefabEntitiesAndInstances(inputEntityList, commonRootEntityOwningInstance->get(), entities, instances)) { @@ -117,6 +92,14 @@ namespace AzToolsFramework AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root.")); } + // When you move instances from another template, you have to remove the links and propagate changes to target template. + for (auto& nestedInstance : instances) + { + PrefabUndoHelpers::RemoveLink( + nestedInstance->GetTemplateId(), commonRootEntityOwningInstance->get().GetTemplateId(), + nestedInstance->GetInstanceAlias(), nestedInstance->GetLinkId(), undoBatch.GetUndoBatch()); + } + auto prefabEditorEntityOwnershipInterface = AZ::Interface::Get(); if (!prefabEditorEntityOwnershipInterface) { @@ -124,35 +107,23 @@ namespace AzToolsFramework "(PrefabEditorEntityOwnershipInterface unavailable).")); } - // When you move instances from another template, you have to remove the links and propagate changes to target template. - auto linkRemoveUndo = aznew PrefabUndoInstanceLink("Undo Link Remove Node"); - for (auto& nestedInstance : instances) - { - PrefabDom emptyLinkDom; - linkRemoveUndo->Capture( - commonRootOwningTemplateId, nestedInstance->GetTemplateId(), nestedInstance->GetInstanceAlias(), emptyLinkDom, - nestedInstance->GetLinkId()); - linkRemoveUndo->SetParent(undoBatch.GetUndoBatch()); - } - // Create the Prefab - instance = prefabEditorEntityOwnershipInterface->CreatePrefab( + instanceToCreate = prefabEditorEntityOwnershipInterface->CreatePrefab( entities, AZStd::move(instances), filePath, commonRootEntityOwningInstance); - if (!instance) + if (!instanceToCreate) { return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error " "(A null instance is returned).")); } PrefabUndoHelpers::UpdatePrefabInstance( - commonRootEntityOwningInstance->get(), "Undo detaching entity", commonRootInstanceDomBeforeCreate, undoBatch.GetUndoBatch()); + commonRootEntityOwningInstance->get(), "Update prefab instance", commonRootInstanceDomBeforeCreate, undoBatch.GetUndoBatch()); - linkRemoveUndo->Redo(); - - AZ::EntityId containerEntityId = instance->get().GetContainerEntityId(); - - AddLink(topLevelEntities, instance->get(), commonRootEntityOwningInstance->get(), undoBatch.GetUndoBatch(), commonRootEntityId); + CreateLink( + topLevelEntities, instanceToCreate->get(), commonRootEntityOwningInstance->get(), undoBatch.GetUndoBatch(), + commonRootEntityId); + AZ::EntityId containerEntityId = instanceToCreate->get().GetContainerEntityId(); // Change top level entities to be parented to the container entity // Mark them as dirty so this change is correctly applied to the template @@ -172,12 +143,45 @@ namespace AzToolsFramework } // Save Template to file - m_prefabLoaderInterface->SaveTemplate(instance->get().GetTemplateId()); + m_prefabLoaderInterface->SaveTemplate(instanceToCreate->get().GetTemplateId()); return AZ::Success(); } - void PrefabPublicHandler::AddLink( + PrefabOperationResult PrefabPublicHandler::FindCommonRootOwningInstance( + const AZStd::vector& entityIds, EntityList& inputEntityList, EntityList& topLevelEntities, + AZ::EntityId& commonRootEntityId, InstanceOptionalReference& commonRootEntityOwningInstance) + { + // Retrieve entityList from entityIds + EntityIdListToEntityList(entityIds, inputEntityList); + + // Find common root and top level entities + bool entitiesHaveCommonRoot = false; + + AzToolsFramework::ToolsApplicationRequests::Bus::BroadcastResult( + entitiesHaveCommonRoot, &AzToolsFramework::ToolsApplicationRequests::FindCommonRootInactive, inputEntityList, + commonRootEntityId, &topLevelEntities); + + // Bail if entities don't share a common root + if (!entitiesHaveCommonRoot) + { + return AZ::Failure(AZStd::string("Failed to create a prefab: Provided entities do not share a common root.")); + } + + // Retrieve the owning instance of the common root entity, which will be our new instance's parent instance. + commonRootEntityOwningInstance = GetOwnerInstanceByEntityId(commonRootEntityId); + if (!commonRootEntityOwningInstance) + { + AZ_Assert( + false, + "Failed to create prefab : Couldn't get a valid owning instance for the common root entity of the enities provided"); + return AZ::Failure(AZStd::string( + "Failed to create prefab : Couldn't get a valid owning instance for the common root entity of the enities provided")); + } + return AZ::Success(); + } + + void PrefabPublicHandler::CreateLink( const EntityList& topLevelEntities, Instance& instanceToAdd, Instance& parentInstance, UndoSystem::URSequencePoint* undoBatch, AZ::EntityId commonRootEntityId) { @@ -205,8 +209,8 @@ namespace AzToolsFramework m_instanceToTemplateInterface->GeneratePatch(patch, containerEntityDomBefore, containerEntityDomAfter); m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(patch, containerEntityId); - PrefabUndoHelpers::AddLink( - "Add Link", instanceToAdd.GetTemplateId(), parentInstance.GetTemplateId(), patch, instanceToAdd.GetInstanceAlias(), + PrefabUndoHelpers::CreateLink( + instanceToAdd.GetTemplateId(), parentInstance.GetTemplateId(), patch, instanceToAdd.GetInstanceAlias(), undoBatch); // Update the cache - this prevents these changes from being stored in the regular undo/redo nodes diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h index 7f3d05e3d3..d05192a3b4 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h @@ -69,10 +69,14 @@ namespace AzToolsFramework InstanceOptionalReference GetOwnerInstanceByEntityId(AZ::EntityId entityId) const; bool EntitiesBelongToSameInstance(const EntityIdList& entityIds) const; - void AddLink( + void CreateLink( const EntityList& topLevelEntities, Instance& instanceToAdd, Instance& parentInstance, UndoSystem::URSequencePoint* undoBatch, AZ::EntityId commonRootEntityId); + PrefabOperationResult FindCommonRootOwningInstance( + const AZStd::vector& entityIds, EntityList& inputEntityList, EntityList& topLevelEntities, + AZ::EntityId& commonRootEntityId, InstanceOptionalReference& commonRootEntityOwningInstance); + static Instance* GetParentInstance(Instance* instance); static Instance* GetAncestorOfInstanceThatIsChildOfRoot(const Instance* ancestor, Instance* descendant); static void GenerateContainerEntityTransform(const EntityList& topLevelEntities, AZ::Vector3& translation, AZ::Quaternion& rotation); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp index 1fa9169ae2..c9b6c88a97 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.cpp @@ -33,15 +33,27 @@ namespace AzToolsFramework state->Redo(); } - void AddLink( - AZStd::string_view undoMessage, TemplateId sourceTemplateId, TemplateId targetTemplateId, PrefabDomReference patch, + void CreateLink( + TemplateId sourceTemplateId, TemplateId targetTemplateId, PrefabDomReference patch, const InstanceAlias& instanceAlias, UndoSystem::URSequencePoint* undoBatch) { - auto linkAddUndo = aznew PrefabUndoInstanceLink(undoMessage); + auto linkAddUndo = aznew PrefabUndoInstanceLink("Create Link"); linkAddUndo->Capture(targetTemplateId, sourceTemplateId, instanceAlias, patch, InvalidLinkId); linkAddUndo->SetParent(undoBatch); linkAddUndo->Redo(); } + + void RemoveLink( + TemplateId sourceTemplateId, TemplateId targetTemplateId, const InstanceAlias& instanceAlias, + LinkId linkId, UndoSystem::URSequencePoint* undoBatch) + { + auto linkRemoveUndo = aznew PrefabUndoInstanceLink("Remove Link"); + PrefabDom emptyLinkDom; + linkRemoveUndo->Capture( + targetTemplateId, sourceTemplateId, instanceAlias, emptyLinkDom, linkId); + linkRemoveUndo->SetParent(undoBatch); + linkRemoveUndo->Redo(); + } } } // namespace Prefab } // namespace AzToolsFramework diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h index 279deb953c..5f81ef14a8 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoHelpers.h @@ -21,9 +21,12 @@ namespace AzToolsFramework void UpdatePrefabInstance( const Instance& instance, AZStd::string_view undoMessage, const PrefabDom& instanceDomBeforeUpdate, UndoSystem::URSequencePoint* undoBatch); - void AddLink( - AZStd::string_view undoMessage, TemplateId sourceTemplateId, TemplateId targetTemplateId, PrefabDomReference patch, + void CreateLink( + TemplateId sourceTemplateId, TemplateId targetTemplateId, PrefabDomReference patch, const InstanceAlias& instanceAlias, UndoSystem::URSequencePoint* undoBatch); + void RemoveLink( + TemplateId sourceTemplateId, TemplateId targetTemplateId, const InstanceAlias& instanceAlias, + LinkId linkId, UndoSystem::URSequencePoint* undoBatch); } } // namespace Prefab } // namespace AzToolsFramework From a6cea546da84e079a77e1525c7960f55220ba74d Mon Sep 17 00:00:00 2001 From: shiranj Date: Mon, 19 Apr 2021 14:52:37 -0700 Subject: [PATCH 11/59] Add repository name to EBS volume tag --- scripts/build/Jenkins/Jenkinsfile | 15 ++++--- .../build/bootstrap/incremental_build_util.py | 44 ++++++++++--------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/scripts/build/Jenkins/Jenkinsfile b/scripts/build/Jenkins/Jenkinsfile index f77c139342..7f269c0012 100644 --- a/scripts/build/Jenkins/Jenkinsfile +++ b/scripts/build/Jenkins/Jenkinsfile @@ -265,7 +265,7 @@ def CheckoutRepo(boolean disableSubmodules = false) { palRm('commitid') } -def PreBuildCommonSteps(Map pipelineConfig, String projectName, String pipeline, String branchName, String platform, String buildType, String workspace, boolean mount = true, boolean disableSubmodules = false) { +def PreBuildCommonSteps(Map pipelineConfig, String repositoryName, String projectName, String pipeline, String branchName, String platform, String buildType, String workspace, boolean mount = true, boolean disableSubmodules = false) { echo 'Starting pre-build common steps...' if (mount) { @@ -276,10 +276,10 @@ def PreBuildCommonSteps(Map pipelineConfig, String projectName, String pipeline, else pythonCmd = 'python -u ' if(env.RECREATE_VOLUME?.toBoolean()) { - palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action delete --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Deleting volume') + palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action delete --repository_name ${repositoryName} --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Deleting volume') } timeout(5) { - palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action mount --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Mounting volume') + palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action mount --repository_name ${repositoryName} --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Mounting volume') } if(env.IS_UNIX) { @@ -383,10 +383,10 @@ def PostBuildCommonSteps(String workspace, boolean mount = true) { } } -def CreateSetupStage(Map pipelineConfig, String projectName, String pipelineName, String branchName, String platformName, String jobName, Map environmentVars) { +def CreateSetupStage(Map pipelineConfig, String repositoryName, String projectName, String pipelineName, String branchName, String platformName, String jobName, Map environmentVars) { return { stage("Setup") { - PreBuildCommonSteps(pipelineConfig, projectName, pipelineName, branchName, platformName, jobName, environmentVars['WORKSPACE'], environmentVars['MOUNT_VOLUME']) + PreBuildCommonSteps(pipelineConfig, repositoryName, projectName, pipelineName, branchName, platformName, jobName, environmentVars['WORKSPACE'], environmentVars['MOUNT_VOLUME']) } } } @@ -430,6 +430,9 @@ try { } withEnv(envVarList) { timestamps { + repositoryUrl = scm.getUserRemoteConfigs()[0].getUrl() + // repositoryName is the full repository name + repositoryName = (repositoryUrl =~ /https:\/\/github.com\/(.*)\.git/)[0][1] (projectName, pipelineName) = GetRunningPipelineName(env.JOB_NAME) // env.JOB_NAME is the name of the job given by Jenkins if(env.BRANCH_NAME) { @@ -493,7 +496,7 @@ try { try { def build_job_name = build_job.key - CreateSetupStage(pipelineConfig, projectName, pipelineName, branchName, platform.key, build_job.key, envVars).call() + CreateSetupStage(pipelineConfig, repositoryName, projectName, pipelineName, branchName, platform.key, build_job.key, envVars).call() if(build_job.value.steps) { //this is a pipe with many steps so create all the build stages build_job.value.steps.each { build_step -> diff --git a/scripts/build/bootstrap/incremental_build_util.py b/scripts/build/bootstrap/incremental_build_util.py index 40b4a5cb4f..fec48e2bee 100755 --- a/scripts/build/bootstrap/incremental_build_util.py +++ b/scripts/build/bootstrap/incremental_build_util.py @@ -94,6 +94,7 @@ def error(message): def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('-a', '--action', dest="action", help="Action (mount|unmount|delete)") + parser.add_argument('-proj', '--repository_name', dest="repository_name", help="Repository name") parser.add_argument('-proj', '--project', dest="project", help="Project") parser.add_argument('-pipe', '--pipeline', dest="pipeline", help="Pipeline") parser.add_argument('-b', '--branch', dest="branch", help="Branch") @@ -108,6 +109,8 @@ def parse_args(): error('No action specified') args.action = args.action.lower() if args.action != 'unmount': + if args.repository_name is None: + error('No repository specified') if args.project is None: error('No project specified') if args.pipeline is None: @@ -121,8 +124,8 @@ def parse_args(): return args -def get_mount_name(project, pipeline, branch, platform, build_type): - mount_name = "{}_{}_{}_{}_{}".format(project, pipeline, branch, platform, build_type) +def get_mount_name(repository_name, project, pipeline, branch, platform, build_type): + mount_name = "{}_{}_{}_{}_{}_{}".format(repository_name, project, pipeline, branch, platform, build_type) mount_name = mount_name.replace('/','_').replace('\\','_') return mount_name @@ -174,8 +177,8 @@ def delete_volume(ec2_client, volume_id): response = ec2_client.delete_volume(VolumeId=volume_id) print 'Volume {} deleted'.format(volume_id) -def find_snapshot_id(ec2_client, project, pipeline, platform, build_type, disk_size): - mount_name = get_mount_name(project, pipeline, 'main', platform, build_type) # we take snapshots out of main +def find_snapshot_id(ec2_client, repository_name, project, pipeline, platform, build_type, disk_size): + mount_name = get_mount_name(repository_name, project, pipeline, 'main', platform, build_type) # we take snapshots out of main response = ec2_client.describe_snapshots(Filters= [{ 'Name': 'tag:Name', 'Values': [mount_name] }]) @@ -191,9 +194,9 @@ def find_snapshot_id(ec2_client, project, pipeline, platform, build_type, disk_s snapshot_id = snapshot['SnapshotId'] return snapshot_id -def create_volume(ec2_client, availability_zone, project, pipeline, branch, platform, build_type, disk_size, disk_type): +def create_volume(ec2_client, availability_zone, repository_name, project, pipeline, branch, platform, build_type, disk_size, disk_type): # The actual EBS default calculation for IOps is a floating point number, the closest approxmiation is 4x of the disk size for simplicity - mount_name = get_mount_name(project, pipeline, branch, platform, build_type) + mount_name = get_mount_name(repository_name, project, pipeline, branch, platform, build_type) pipeline_and_branch = get_pipeline_and_branch(pipeline, branch) parameters = dict( AvailabilityZone = availability_zone, @@ -202,6 +205,7 @@ def create_volume(ec2_client, availability_zone, project, pipeline, branch, plat 'ResourceType': 'volume', 'Tags': [ { 'Key': 'Name', 'Value': mount_name }, + {'Key': 'RepositoryName', 'Value': repository_name}, { 'Key': 'Project', 'Value': project }, { 'Key': 'Pipeline', 'Value': pipeline }, { 'Key': 'BranchName', 'Value': branch }, @@ -214,7 +218,7 @@ def create_volume(ec2_client, availability_zone, project, pipeline, branch, plat if 'io1' in disk_type.lower(): parameters['Iops'] = (4 * disk_size) - snapshot_id = find_snapshot_id(ec2_client, project, pipeline, platform, build_type, disk_size) + snapshot_id = find_snapshot_id(ec2_client, repository_name, project, pipeline, platform, build_type, disk_size) if snapshot_id: parameters['SnapshotId'] = snapshot_id created = False @@ -234,8 +238,8 @@ def create_volume(ec2_client, availability_zone, project, pipeline, branch, plat time.sleep(1) response = ec2_client.describe_volumes(VolumeIds=[volume_id, ]) - print("Volume {} created\n\tSnapshot: {}\n\tProject {}\n\tPipeline {}\n\tBranch {}\n\tPlatform: {}\n\tBuild type: {}" - .format(volume_id, snapshot_id, project, pipeline, branch, platform, build_type)) + print("Volume {} created\n\tSnapshot: {}\n\tRepository {}\n\tProject {}\n\tPipeline {}\n\tBranch {}\n\tPlatform: {}\n\tBuild type: {}" + .format(volume_id, snapshot_id, repository_name, project, pipeline, branch, platform, build_type)) return volume_id, created @@ -359,7 +363,7 @@ def attach_ebs_and_create_partition_with_retry(volume, volume_id, ec2_instance_i mount_volume(created) attempt += 1 -def mount_ebs(project, pipeline, branch, platform, build_type, disk_size, disk_type): +def mount_ebs(repository_name, project, pipeline, branch, platform, build_type, disk_size, disk_type): session = boto3.session.Session() region = session.region_name if region is None: @@ -379,7 +383,7 @@ def mount_ebs(project, pipeline, branch, platform, build_type, disk_size, disk_t unmount_volume() detach_volume(volume, ec2_instance_id, False) # Force unmounts should not be used, as that will cause the EBS block device driver to fail the remount - mount_name = get_mount_name(project, pipeline, branch, platform, build_type) + mount_name = get_mount_name(repository_name, project, pipeline, branch, platform, build_type) response = ec2_client.describe_volumes(Filters=[{ 'Name': 'tag:Name', 'Values': [mount_name] }]) @@ -388,7 +392,7 @@ def mount_ebs(project, pipeline, branch, platform, build_type, disk_size, disk_t if 'Volumes' in response and not len(response['Volumes']): print 'Volume for {} doesn\'t exist creating it...'.format(mount_name) # volume doesn't exist, create it - volume_id, created = create_volume(ec2_client, ec2_availability_zone, project, pipeline, branch, platform, build_type, disk_size, disk_type) + volume_id, created = create_volume(ec2_client, ec2_availability_zone, repository_name, project, pipeline, branch, platform, build_type, disk_size, disk_type) else: volume = response['Volumes'][0] volume_id = volume['VolumeId'] @@ -396,7 +400,7 @@ def mount_ebs(project, pipeline, branch, platform, build_type, disk_size, disk_t if (volume['Size'] != disk_size or volume['VolumeType'] != disk_type): print 'Override disk attributes does not match the existing volume, deleting {} and replacing the volume'.format(volume_id) delete_volume(ec2_client, volume_id) - volume_id, created = create_volume(ec2_client, ec2_availability_zone, project, pipeline, branch, platform, build_type, disk_size, disk_type) + volume_id, created = create_volume(ec2_client, ec2_availability_zone, repository_name, project, pipeline, branch, platform, build_type, disk_size, disk_type) if len(volume['Attachments']): # this is bad we shouldn't be attached, we should have detached at the end of a build attachment = volume['Attachments'][0] @@ -426,7 +430,7 @@ def mount_ebs(project, pipeline, branch, platform, build_type, disk_size, disk_t print 'Error: EBS disk size reached to the allowed maximum disk size {}MB, please contact ly-infra@ and ly-build@ to investigate.'.format(MAX_EBS_DISK_SIZE) exit(1) print 'Recreating the EBS with disk size {}'.format(new_disk_size) - volume_id, created = create_volume(ec2_client, ec2_availability_zone, project, pipeline, branch, platform, build_type, new_disk_size, disk_type) + volume_id, created = create_volume(ec2_client, ec2_availability_zone, repository_name, project, pipeline, branch, platform, build_type, new_disk_size, disk_type) volume = ec2_resource.Volume(volume_id) attach_ebs_and_create_partition_with_retry(volume, volume_id, ec2_instance_id, created) @@ -458,7 +462,7 @@ def unmount_ebs(): unmount_volume() detach_volume(volume, ec2_instance_id, False) -def delete_ebs(project, pipeline, branch, platform, build_type): +def delete_ebs(repository_name, project, pipeline, branch, platform, build_type): unmount_ebs() session = boto3.session.Session() @@ -470,7 +474,7 @@ def delete_ebs(project, pipeline, branch, platform, build_type): ec2_resource = boto3.resource('ec2', region_name=region) ec2_instance = ec2_resource.Instance(ec2_instance_id) - mount_name = get_mount_name(project, pipeline, branch, platform, build_type) + mount_name = get_mount_name(repository_name, project, pipeline, branch, platform, build_type) response = ec2_client.describe_volumes(Filters=[ { 'Name': 'tag:Name', 'Values': [mount_name] } ]) @@ -481,15 +485,15 @@ def delete_ebs(project, pipeline, branch, platform, build_type): delete_volume(ec2_client, volume_id) -def main(action, project, pipeline, branch, platform, build_type, disk_size, disk_type): +def main(action, repository_name, project, pipeline, branch, platform, build_type, disk_size, disk_type): if action == 'mount': - mount_ebs(project, pipeline, branch, platform, build_type, disk_size, disk_type) + mount_ebs(repository_name, project, pipeline, branch, platform, build_type, disk_size, disk_type) elif action == 'unmount': unmount_ebs() elif action == 'delete': - delete_ebs(project, pipeline, branch, platform, build_type) + delete_ebs(repository_name, project, pipeline, branch, platform, build_type) if __name__ == "__main__": args = parse_args() - ret = main(args.action, args.project, args.pipeline, args.branch, args.platform, args.build_type, args.disk_size, args.disk_type) + ret = main(args.action, args.repository_name, args.project, args.pipeline, args.branch, args.platform, args.build_type, args.disk_size, args.disk_type) sys.exit(ret) \ No newline at end of file From f5b7200f328471cad30d6cff050b75588fecfeaa Mon Sep 17 00:00:00 2001 From: shiranj Date: Mon, 19 Apr 2021 14:59:43 -0700 Subject: [PATCH 12/59] Fix typo --- scripts/build/bootstrap/incremental_build_util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build/bootstrap/incremental_build_util.py b/scripts/build/bootstrap/incremental_build_util.py index fec48e2bee..0228f129d0 100755 --- a/scripts/build/bootstrap/incremental_build_util.py +++ b/scripts/build/bootstrap/incremental_build_util.py @@ -94,8 +94,8 @@ def error(message): def parse_args(): parser = argparse.ArgumentParser() parser.add_argument('-a', '--action', dest="action", help="Action (mount|unmount|delete)") - parser.add_argument('-proj', '--repository_name', dest="repository_name", help="Repository name") - parser.add_argument('-proj', '--project', dest="project", help="Project") + parser.add_argument('-repository_name', '--repository_name', dest="repository_name", help="Repository name") + parser.add_argument('-project', '--project', dest="project", help="Project") parser.add_argument('-pipe', '--pipeline', dest="pipeline", help="Pipeline") parser.add_argument('-b', '--branch', dest="branch", help="Branch") parser.add_argument('-plat', '--platform', dest="platform", help="Platform") From 707f7cb6cefe7b43c03495a9137d829c63722710 Mon Sep 17 00:00:00 2001 From: srikappa Date: Mon, 19 Apr 2021 15:06:41 -0700 Subject: [PATCH 13/59] Added some comments --- .../Instance/InstanceUpdateExecutor.cpp | 5 +++++ .../Prefab/PrefabPublicHandler.cpp | 10 ++++----- .../Prefab/PrefabPublicHandler.h | 21 ++++++++++++++++++- 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp index d84edd6212..b307d8290c 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp @@ -117,6 +117,7 @@ namespace AzToolsFramework "Could not find Template using Id '%llu'. Unable to update Instance.", currentTemplateId); + // Remove the instance from update queue if it's corresponding template couldn't be found isUpdateSuccessful = false; m_instancesUpdateQueue.pop(); continue; @@ -127,6 +128,8 @@ namespace AzToolsFramework if (findInstancesResult.find(instanceToUpdate) == findInstancesResult.end()) { + // Since nested instances get reconstructed during propgation, remove any nested instance that no longer + // maps to a template. isUpdateSuccessful = false; m_instancesUpdateQueue.pop(); continue; @@ -155,6 +158,8 @@ namespace AzToolsFramework for (auto entityIdIterator = selectedEntityIds.begin(); entityIdIterator != selectedEntityIds.end(); entityIdIterator++) { + // Since entities get recreated during propagation, we need to check whether the entities correspoding to the list + // of selected entity ids are present or not. AZ::Entity* entity = GetEntityById(*entityIdIterator); if (entity == nullptr) { diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index adadc9d0ac..6ba342bf9b 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -121,7 +121,7 @@ namespace AzToolsFramework commonRootEntityOwningInstance->get(), "Update prefab instance", commonRootInstanceDomBeforeCreate, undoBatch.GetUndoBatch()); CreateLink( - topLevelEntities, instanceToCreate->get(), commonRootEntityOwningInstance->get(), undoBatch.GetUndoBatch(), + topLevelEntities, instanceToCreate->get(), commonRootEntityOwningInstance->get().GetTemplateId(), undoBatch.GetUndoBatch(), commonRootEntityId); AZ::EntityId containerEntityId = instanceToCreate->get().GetContainerEntityId(); @@ -182,10 +182,10 @@ namespace AzToolsFramework } void PrefabPublicHandler::CreateLink( - const EntityList& topLevelEntities, Instance& instanceToAdd, Instance& parentInstance, UndoSystem::URSequencePoint* undoBatch, - AZ::EntityId commonRootEntityId) + const EntityList& topLevelEntities, Instance& sourceInstance, TemplateId targetTemplateId, + UndoSystem::URSequencePoint* undoBatch, AZ::EntityId commonRootEntityId) { - AZ::EntityId containerEntityId = instanceToAdd.GetContainerEntityId(); + AZ::EntityId containerEntityId = sourceInstance.GetContainerEntityId(); AZ::Entity* containerEntity = GetEntityById(containerEntityId); Prefab::PrefabDom containerEntityDomBefore; m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomBefore, *containerEntity); @@ -210,7 +210,7 @@ namespace AzToolsFramework m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(patch, containerEntityId); PrefabUndoHelpers::CreateLink( - instanceToAdd.GetTemplateId(), parentInstance.GetTemplateId(), patch, instanceToAdd.GetInstanceAlias(), + sourceInstance.GetTemplateId(), targetTemplateId, patch, sourceInstance.GetInstanceAlias(), undoBatch); // Update the cache - this prevents these changes from being stored in the regular undo/redo nodes diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h index d05192a3b4..f97fa46c3e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h @@ -69,10 +69,29 @@ namespace AzToolsFramework InstanceOptionalReference GetOwnerInstanceByEntityId(AZ::EntityId entityId) const; bool EntitiesBelongToSameInstance(const EntityIdList& entityIds) const; + /** + * Creates a link between the templates of an instance and its parent. + * + * \param topLevelEntities The list of entities that are immediate children of container entity of instance. + * \param sourceInstance The instance that corresponds to the source template of the link. + * \param targetInstance The id of the target template. + * \param undoBatch The undo batch to set as parent for this create link action. + * \param commonRootEntityId The id of the entity that the source instance should be parented under. + */ void CreateLink( - const EntityList& topLevelEntities, Instance& instanceToAdd, Instance& parentInstance, + const EntityList& topLevelEntities, Instance& sourceInstance, TemplateId targetTemplateId, UndoSystem::URSequencePoint* undoBatch, AZ::EntityId commonRootEntityId); + /** + * Given a list of entityIds, finds the prefab instance that owns the common root entity of the entityIds. + * + * \param entityIds The list of entity ids. + * \param inputEntityList The list of entities corresponding to the entity ids. + * \param topLevelEntities The list of entities that are immediate children of the common root entity. + * \param commonRootEntityId The entity id of the common root entity of all the entityIds. + * \param commonRootEntityOwningInstance The owning instance of the common root entity. + * \return PrefabOperationResult indicating whether the action was successful or not. + */ PrefabOperationResult FindCommonRootOwningInstance( const AZStd::vector& entityIds, EntityList& inputEntityList, EntityList& topLevelEntities, AZ::EntityId& commonRootEntityId, InstanceOptionalReference& commonRootEntityOwningInstance); From 8fc69113c9d91a7fd64948787488e8f742962b3a Mon Sep 17 00:00:00 2001 From: nvsickle Date: Mon, 19 Apr 2021 15:08:06 -0700 Subject: [PATCH 14/59] Get the default viewport context on demand in FFont, as it may change --- .../AtomLyIntegration/AtomFont/FFont.h | 31 ++--------------- .../AtomFont/Code/Source/FFont.cpp | 33 +++++++++++++------ 2 files changed, 26 insertions(+), 38 deletions(-) diff --git a/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h b/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h index 96f5e09fc3..a6066984c7 100644 --- a/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h +++ b/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h @@ -277,11 +277,11 @@ namespace AZ void ScaleCoord(const RHI::Viewport& viewport, float& x, float& y) const; - void InitDefaultWindowContext(); - void InitDefaultViewportContext(); - void OnBootstrapSceneReady(AZ::RPI::Scene* bootstrapScene) override; + RPI::WindowContextSharedPtr GetDefaultWindowContext() const; + RPI::ViewportContextPtr GetDefaultViewportContext() const; + private: static constexpr uint32_t NumBuffers = 2; static constexpr float WindowScaleWidth = 800.0f; @@ -294,9 +294,6 @@ namespace AZ size_t m_fontBufferSize = 0; unsigned char* m_fontBuffer = nullptr; - AZStd::shared_ptr m_defaultWindowContext; - AZStd::shared_ptr m_defaultViewportContext; - AZ::Data::Instance m_fontStreamingImage; AZ::RHI::Ptr m_fontImage; uint32_t m_fontImageVersion = 0; @@ -345,26 +342,4 @@ namespace AZ } } -inline void AZ::FFont::InitDefaultWindowContext() -{ - if (!m_defaultWindowContext) - { - // font is created before window & viewport in the editor so need to do late init - // TODO need to deal with multiple windows, such as the editor - AZ::Render::Bootstrap::DefaultWindowBus::BroadcastResult(m_defaultWindowContext, &AZ::Render::Bootstrap::DefaultWindowInterface::GetDefaultWindowContext); - AZ_Assert(m_defaultWindowContext, "Unable to get the main window context"); - } -} - -inline void AZ::FFont::InitDefaultViewportContext() -{ - if (!m_defaultViewportContext) - { - // font is created before window & viewport in the editor so need to do late init - auto viewContextManager = AZ::Interface::Get(); - m_defaultViewportContext = viewContextManager->GetViewportContextByName(viewContextManager->GetDefaultViewportContextName()); - AZ_Assert(m_defaultViewportContext, "Unable to get the viewport context"); - } -} - #endif diff --git a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp index d32302a07b..38024393fa 100644 --- a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp +++ b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp @@ -84,6 +84,20 @@ AZ::FFont::FFont(AtomFont* atomFont, const char* fontName) AZ::Render::Bootstrap::NotificationBus::Handler::BusConnect(); } +AZ::RPI::ViewportContextPtr AZ::FFont::GetDefaultViewportContext() const +{ + auto viewContextManager = AZ::Interface::Get(); + return viewContextManager->GetDefaultViewportContext(); +} + +AZ::RPI::WindowContextSharedPtr AZ::FFont::GetDefaultWindowContext() const +{ + if (auto defaultViewportContext = GetDefaultViewportContext()) + { + return defaultViewportContext->GetWindowContext(); + } + return {}; +} bool AZ::FFont::InitFont() { @@ -92,11 +106,8 @@ bool AZ::FFont::InitFont() return true; } - InitDefaultWindowContext(); - InitDefaultViewportContext(); - // Create and initialize DynamicDrawContext for font draw - AZ::RPI::Ptr dynamicDraw = m_atomFont->GetOrCreateDynamicDrawForScene(m_defaultViewportContext->GetRenderScene().get()); + AZ::RPI::Ptr dynamicDraw = m_atomFont->GetOrCreateDynamicDrawForScene(GetDefaultViewportContext()->GetRenderScene().get()); // Save draw srg input indices for later use Data::Instance drawSrg = dynamicDraw->NewDrawSrg(); @@ -259,7 +270,7 @@ void AZ::FFont::DrawString(float x, float y, const char* str, const bool asciiMu return; } - DrawStringUInternal(m_defaultWindowContext->GetViewport(), m_defaultViewportContext.get(), x, y, 1.0f, str, asciiMultiLine, ctx); + DrawStringUInternal(GetDefaultWindowContext()->GetViewport(), GetDefaultViewportContext().get(), x, y, 1.0f, str, asciiMultiLine, ctx); } void AZ::FFont::DrawString(float x, float y, float z, const char* str, const bool asciiMultiLine, const TextDrawContext& ctx) @@ -269,7 +280,7 @@ void AZ::FFont::DrawString(float x, float y, float z, const char* str, const boo return; } - DrawStringUInternal(m_defaultWindowContext->GetViewport(), m_defaultViewportContext.get(), x, y, z, str, asciiMultiLine, ctx); + DrawStringUInternal(GetDefaultWindowContext()->GetViewport(), GetDefaultViewportContext().get(), x, y, z, str, asciiMultiLine, ctx); } void AZ::FFont::DrawStringUInternal( @@ -282,6 +293,8 @@ void AZ::FFont::DrawStringUInternal( const bool asciiMultiLine, const TextDrawContext& ctx) { + InitFont(); + if (!str || !m_vertexBuffer // vertex buffer isn't created until BootstrapScene is ready, Editor tries to render text before that. || !m_fontTexture @@ -400,7 +413,7 @@ Vec2 AZ::FFont::GetTextSize(const char* str, const bool asciiMultiLine, const Te return Vec2(0.0f, 0.0f); } - return GetTextSizeUInternal(m_defaultWindowContext->GetViewport(), str, asciiMultiLine, ctx); + return GetTextSizeUInternal(GetDefaultWindowContext()->GetViewport(), str, asciiMultiLine, ctx); } Vec2 AZ::FFont::GetTextSizeUInternal( @@ -746,7 +759,7 @@ uint32_t AZ::FFont::WriteTextQuadsToBuffers(SVF_P2F_C4B_T2F_F4B* verts, uint16_t return true; }; - CreateQuadsForText(m_defaultWindowContext->GetViewport(), x, y, z, str, asciiMultiLine, ctx, AddQuad); + CreateQuadsForText(GetDefaultWindowContext()->GetViewport(), x, y, z, str, asciiMultiLine, ctx, AddQuad); return numQuadsWritten; } @@ -1438,7 +1451,7 @@ void AZ::FFont::AddCharsToFontTexture(const char* chars, int glyphSizeX, int gly Vec2 AZ::FFont::GetKerning(uint32_t leftGlyph, uint32_t rightGlyph, const TextDrawContext& ctx) const { - return GetKerningInternal(m_defaultWindowContext->GetViewport(), leftGlyph, rightGlyph, ctx); + return GetKerningInternal(GetDefaultWindowContext()->GetViewport(), leftGlyph, rightGlyph, ctx); } Vec2 AZ::FFont::GetKerningInternal(const RHI::Viewport& viewport, uint32_t leftGlyph, uint32_t rightGlyph, const TextDrawContext& ctx) const @@ -1454,7 +1467,7 @@ float AZ::FFont::GetAscender(const TextDrawContext& ctx) const float AZ::FFont::GetBaseline(const TextDrawContext& ctx) const { - return GetBaselineInternal(m_defaultWindowContext->GetViewport(), ctx); + return GetBaselineInternal(GetDefaultWindowContext()->GetViewport(), ctx); } float AZ::FFont::GetBaselineInternal(const RHI::Viewport& viewport, const TextDrawContext& ctx) const From c05d4b44e4789eafdad6168bba28e46870d257cd Mon Sep 17 00:00:00 2001 From: nvsickle Date: Mon, 19 Apr 2021 15:08:40 -0700 Subject: [PATCH 15/59] Move supplemental EditorViewportWidget rendering to OnBeginPrepareRender to avoid sync issues --- Code/Sandbox/Editor/EditorViewportWidget.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Code/Sandbox/Editor/EditorViewportWidget.cpp b/Code/Sandbox/Editor/EditorViewportWidget.cpp index 695a0fa5f1..897b3c569d 100644 --- a/Code/Sandbox/Editor/EditorViewportWidget.cpp +++ b/Code/Sandbox/Editor/EditorViewportWidget.cpp @@ -276,9 +276,6 @@ void EditorViewportWidget::paintEvent([[maybe_unused]] QPaintEvent* event) if ((ge && ge->IsLevelLoaded()) || (GetType() != ET_ViewportCamera)) { setRenderOverlayVisible(true); - m_isOnPaint = true; - Update(); - m_isOnPaint = false; } else { @@ -809,6 +806,10 @@ void EditorViewportWidget::OnBeginPrepareRender() return; } + m_isOnPaint = true; + Update(); + m_isOnPaint = false; + float fNearZ = GetIEditor()->GetConsoleVar("cl_DefaultNearPlane"); float fFarZ = m_Camera.GetFarPlane(); From 482e423ec9294a416697a37f0f08054814963b55 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Fri, 16 Apr 2021 12:00:13 -0700 Subject: [PATCH 16/59] Fix crash on default layout restore --- Code/Sandbox/Editor/LayoutWnd.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Code/Sandbox/Editor/LayoutWnd.cpp b/Code/Sandbox/Editor/LayoutWnd.cpp index 56c0bcb849..dc3ae14d90 100644 --- a/Code/Sandbox/Editor/LayoutWnd.cpp +++ b/Code/Sandbox/Editor/LayoutWnd.cpp @@ -418,8 +418,9 @@ void CLayoutWnd::CreateLayout(EViewLayout layout, bool bBindViewports, EViewport QRect rcView = rect(); rcView.setBottom(rcView.bottom() - m_infoBar->height()); + // Ensure we delete our old view immediately so it can relinquish its backing ViewportContext if (m_maximizedView) - m_maximizedView->deleteLater(); + delete m_maximizedView; m_maximizedView = new CLayoutViewPane(this); m_maximizedView->SetId(0); From d2fadcb0e37bc78b035e9b0cb3c37fa960a7b190 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Fri, 16 Apr 2021 12:02:55 -0700 Subject: [PATCH 17/59] Fix context menu handling in multi-viewport scenarios (the logic bugs here were many and nuanced, but we're narrowing in on something robust). Specifically this: -Ensures key/mouse up event propagation works across multiple viewports -Ensures that mouse up events for manipulators only get delivered if there's a corresponding mouse down event -Also tidies up the "are we done processing events this tick?" logic in ViewportManipulatorController --- .../Editor/ViewportManipulatorController.cpp | 26 +++++++++++++++---- .../Source/Viewport/RenderViewportWidget.cpp | 19 +++++++++++--- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/Code/Sandbox/Editor/ViewportManipulatorController.cpp b/Code/Sandbox/Editor/ViewportManipulatorController.cpp index 910d037670..8ce2ea1cd9 100644 --- a/Code/Sandbox/Editor/ViewportManipulatorController.cpp +++ b/Code/Sandbox/Editor/ViewportManipulatorController.cpp @@ -95,6 +95,11 @@ bool ViewportManipulatorControllerInstance::HandleInputChannelEvent(const AzFram AZStd::optional overrideButton; AZStd::optional eventType; + // Because we receive events multiple times at separate priorities for manipulator events and + // viewport interaction events, we want to avoid updating our "last tick state" until we're on our last event, + // which currently is the low priority Interaction processor. + const bool finishedProcessingEvents = event.m_priority == InteractionPriority; + if (IsMouseMove(event.m_inputChannel)) { // Cache the ray trace results when doing manipulator interaction checks, no need to recalculate after @@ -120,10 +125,11 @@ bool ViewportManipulatorControllerInstance::HandleInputChannelEvent(const AzFram } else if (auto mouseButton = GetMouseButton(event.m_inputChannel); mouseButton != MouseButton::None) { + const AZ::u32 mouseButtonValue = static_cast(mouseButton); overrideButton = mouseButton; if (event.m_inputChannel.GetState() == InputChannel::State::Began) { - m_state.m_mouseButtons.m_mouseButtons |= static_cast(mouseButton); + m_state.m_mouseButtons.m_mouseButtons |= mouseButtonValue; if (IsDoubleClick(mouseButton)) { // Only remove the double click flag once we're done processing both Manipulator and Interaction events @@ -135,8 +141,8 @@ bool ViewportManipulatorControllerInstance::HandleInputChannelEvent(const AzFram } else { - // Only insert the double click timing once we're done processing both Manipulator and Interaction events, to avoid a false IsDoubleClick positive - if (event.m_priority == InteractionPriority) + // Only insert the double click timing once we're done processing events, to avoid a false IsDoubleClick positive + if (finishedProcessingEvents) { m_pendingDoubleClicks[mouseButton] = m_curTime; } @@ -145,8 +151,18 @@ bool ViewportManipulatorControllerInstance::HandleInputChannelEvent(const AzFram } else if (event.m_inputChannel.GetState() == InputChannel::State::Ended) { - m_state.m_mouseButtons.m_mouseButtons &= ~static_cast(mouseButton); - eventType = MouseEvent::Up; + // If we've actually logged a mouse down event, forward a mouse up event. + // This prevents corner cases like the context menu thinking it should be opened even though no one clicked in this viewport, + // due to RenderViewportWidget ensuring all controllers get InputChannel::State::Ended events. + if (m_state.m_mouseButtons.m_mouseButtons & mouseButtonValue) + { + // Erase the button from our state if we're done processing events. + if (event.m_priority == InteractionPriority) + { + m_state.m_mouseButtons.m_mouseButtons &= ~mouseButtonValue; + } + eventType = MouseEvent::Up; + } } } else if (auto keyboardModifier = GetKeyboardModifier(event.m_inputChannel); keyboardModifier != KeyboardModifier::None) diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp index e08a5a045c..9ea2144289 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp @@ -164,6 +164,8 @@ namespace AtomToolsFramework bool RenderViewportWidget::OnInputChannelEventFiltered(const AzFramework::InputChannel& inputChannel) { + bool shouldConsumeEvent = true; + // Grab keyboard focus if we've been clicked on. // Qt normally handles this for us, but we're filtering native events before they get // synthesized into QMouseEvents. @@ -175,9 +177,18 @@ namespace AtomToolsFramework // Don't consume new input events if we don't currently have focus. // We do forward Ended events, as they may be relevant to our current state // (e.g. a key gets released after we lose focus, it shouldn't remain "stuck"). - if (!hasFocus() && inputChannel.GetState() != AzFramework::InputChannel::State::Ended) + if (!hasFocus()) { - return false; + if (inputChannel.GetState() == AzFramework::InputChannel::State::Ended) + { + // Forward the input ended event to our controllers, but don't prevent other viewports from receiving it. + shouldConsumeEvent = false; + } + else + { + // Not an event we should listen to, abort + return false; + } } // If we receive a mouse button event from outside of our viewport, ignore it even if we have focus. @@ -196,7 +207,9 @@ namespace AtomToolsFramework } AzFramework::NativeWindowHandle windowId = reinterpret_cast(winId()); - return m_controllerList->HandleInputChannelEvent({GetId(), windowId, inputChannel}); + const bool eventHandled = m_controllerList->HandleInputChannelEvent({GetId(), windowId, inputChannel}); + // If our controllers handled the event and it's one we can safely consume (i.e. it's not an Ended event that other viewports might need), consume it. + return eventHandled && shouldConsumeEvent; } void RenderViewportWidget::OnTick([[maybe_unused]]float deltaTime, AZ::ScriptTimePoint time) From dd7334471f9920b6312738c5abcf9d5fc37e0b1d Mon Sep 17 00:00:00 2001 From: nvsickle Date: Fri, 16 Apr 2021 12:17:35 -0700 Subject: [PATCH 18/59] Fix comment punctuation --- .../Code/Source/Viewport/RenderViewportWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp index 9ea2144289..bf46ece27b 100644 --- a/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp +++ b/Gems/Atom/Tools/AtomToolsFramework/Code/Source/Viewport/RenderViewportWidget.cpp @@ -186,7 +186,7 @@ namespace AtomToolsFramework } else { - // Not an event we should listen to, abort + // Not an event we should listen to, abort. return false; } } From ebf41d2bdf58dcc3f7899bf94cf84e380c0f8428 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Fri, 16 Apr 2021 14:26:58 -0700 Subject: [PATCH 19/59] Update code style --- Code/Sandbox/Editor/LayoutWnd.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Code/Sandbox/Editor/LayoutWnd.cpp b/Code/Sandbox/Editor/LayoutWnd.cpp index dc3ae14d90..34a96bca53 100644 --- a/Code/Sandbox/Editor/LayoutWnd.cpp +++ b/Code/Sandbox/Editor/LayoutWnd.cpp @@ -420,7 +420,9 @@ void CLayoutWnd::CreateLayout(EViewLayout layout, bool bBindViewports, EViewport // Ensure we delete our old view immediately so it can relinquish its backing ViewportContext if (m_maximizedView) + { delete m_maximizedView; + } m_maximizedView = new CLayoutViewPane(this); m_maximizedView->SetId(0); From 6abf17439a836ddbccd4258ebb97b1bc926cf1ea Mon Sep 17 00:00:00 2001 From: mnaumov Date: Mon, 19 Apr 2021 15:22:32 -0700 Subject: [PATCH 20/59] Adding "Create New Material" context menu option to folder in Material Editor Improving MaterialBrowser filter to show empty folders --- .../AssetBrowser/Search/SearchWidget.cpp | 9 +++++++++ .../AssetBrowser/Search/SearchWidget.h | 4 ++++ .../CreateMaterialDialog.cpp | 9 +++++++-- .../CreateMaterialDialog.h | 3 +++ .../Window/MaterialBrowserInteractions.cpp | 19 +++++++++++++++++++ .../Source/Window/MaterialBrowserWidget.cpp | 14 ++++++++++++-- 6 files changed, 54 insertions(+), 4 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.cpp index 7c2f26042f..d2edbcce32 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.cpp @@ -170,6 +170,15 @@ namespace AzToolsFramework return m_filter; } + QSharedPointer SearchWidget::GetStringFilter() const + { + return m_stringFilter; + } + + QSharedPointer SearchWidget::GetTypesFilter() const + { + return m_typesFilter; + } } // namespace AssetBrowser } // namespace AzToolsFramework diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.h b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.h index 0453333c94..be649bc81d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Search/SearchWidget.h @@ -39,6 +39,10 @@ namespace AzToolsFramework QSharedPointer GetFilter() const; + QSharedPointer GetStringFilter() const; + + QSharedPointer GetTypesFilter() const; + QString GetFilterString() const { return textFilter(); } void ClearStringFilter() { ClearTextFilter(); } diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.cpp index 76aee99e52..6c30540392 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.cpp @@ -26,8 +26,14 @@ namespace MaterialEditor { CreateMaterialDialog::CreateMaterialDialog(QWidget* parent) + : CreateMaterialDialog(QString(AZ::IO::FileIOBase::GetInstance()->GetAlias("@devassets@")) + AZ_CORRECT_FILESYSTEM_SEPARATOR + "Materials", parent) + { + } + + CreateMaterialDialog::CreateMaterialDialog(const QString& path, QWidget* parent) : QDialog(parent) , m_ui(new Ui::CreateMaterialDialog) + , m_path(path) { m_ui->setupUi(this); @@ -77,8 +83,7 @@ namespace MaterialEditor { //Select a default location and unique name for the new material m_materialFileInfo = AtomToolsFramework::GetUniqueFileInfo( - QString(AZ::IO::FileIOBase::GetInstance()->GetAlias("@devassets@")) + - AZ_CORRECT_FILESYSTEM_SEPARATOR + "Materials" + + m_path + AZ_CORRECT_FILESYSTEM_SEPARATOR + "untitled." + AZ::RPI::MaterialSourceData::Extension).absoluteFilePath(); diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.h b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.h index 54d7c2175d..63d166e95c 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.h +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/CreateMaterialDialog/CreateMaterialDialog.h @@ -27,6 +27,7 @@ namespace MaterialEditor Q_OBJECT public: CreateMaterialDialog(QWidget* parent = nullptr); + CreateMaterialDialog(const QString& path, QWidget* parent = nullptr); ~CreateMaterialDialog() = default; QFileInfo m_materialFileInfo; @@ -34,6 +35,8 @@ namespace MaterialEditor private: QScopedPointer m_ui; + QString m_path; + void InitMaterialTypeSelection(); void InitMaterialFileSelection(); void UpdateMaterialTypeSelection(); diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp index b0412c001c..167f7d38f5 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp @@ -29,6 +29,7 @@ #include #include +#include #include #include @@ -246,6 +247,24 @@ namespace MaterialEditor } } }); + + menu->addSeparator(); + + QAction* createMaterialAction = menu->addAction(QObject::tr("Create New Material")); + QObject::connect(createMaterialAction, &QAction::triggered, caller, [caller, entry]() + { + CreateMaterialDialog createDialog(entry->GetFullPath().c_str(), caller); + createDialog.adjustSize(); + + if (createDialog.exec() == QDialog::Accepted && + !createDialog.m_materialFileInfo.absoluteFilePath().isEmpty() && + !createDialog.m_materialTypeFileInfo.absoluteFilePath().isEmpty()) + { + MaterialDocumentSystemRequestBus::Broadcast(&MaterialDocumentSystemRequestBus::Events::CreateDocumentFromFile, + createDialog.m_materialTypeFileInfo.absoluteFilePath().toUtf8().constData(), + createDialog.m_materialFileInfo.absoluteFilePath().toUtf8().constData()); + } + }); } void MaterialBrowserInteractions::AddPerforceMenuActions([[maybe_unused]] QWidget* caller, QMenu* menu, const AzToolsFramework::AssetBrowser::AssetBrowserEntry* entry) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp index 6272312b90..1d579e5a10 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp @@ -115,19 +115,29 @@ namespace MaterialEditor { using namespace AzToolsFramework::AssetBrowser; + // Material Browser uses the following filters: + // 1. [All source files (no products) that contain products matching the assetType specified by searchWidget (default is materials and textures)] + // 2. [All folders (including empty folders)] + // 3. [All Sources and folders matching the search text typed in search widget] + // Final filter = ((1 OR 2) AND 3) + QSharedPointer sourceFilter(new EntryTypeFilter); sourceFilter->SetEntryType(AssetBrowserEntry::AssetEntryType::Source); + QSharedPointer assetTypeFilter(new CompositeFilter(CompositeFilter::LogicOperatorType::AND)); + assetTypeFilter->AddFilter(sourceFilter); + assetTypeFilter->AddFilter(m_ui->m_searchWidget->GetTypesFilter()); + QSharedPointer folderFilter(new EntryTypeFilter); folderFilter->SetEntryType(AssetBrowserEntry::AssetEntryType::Folder); QSharedPointer sourceOrFolderFilter(new CompositeFilter(CompositeFilter::LogicOperatorType::OR)); - sourceOrFolderFilter->AddFilter(sourceFilter); + sourceOrFolderFilter->AddFilter(assetTypeFilter); sourceOrFolderFilter->AddFilter(folderFilter); QSharedPointer finalFilter(new CompositeFilter(CompositeFilter::LogicOperatorType::AND)); finalFilter->AddFilter(sourceOrFolderFilter); - finalFilter->AddFilter(m_ui->m_searchWidget->GetFilter()); + finalFilter->AddFilter(m_ui->m_searchWidget->GetStringFilter()); return finalFilter; } From e2a76299938d5e7a2f942917e434f9f4f2f8cb3f Mon Sep 17 00:00:00 2001 From: nvsickle Date: Mon, 19 Apr 2021 15:24:08 -0700 Subject: [PATCH 21/59] Remove statistics rendering from EditorViewportWidget - it's wrong at the moment, and needs to be moved to a controller --- Code/Sandbox/Editor/EditorViewportWidget.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Code/Sandbox/Editor/EditorViewportWidget.cpp b/Code/Sandbox/Editor/EditorViewportWidget.cpp index 897b3c569d..3c714b1d4c 100644 --- a/Code/Sandbox/Editor/EditorViewportWidget.cpp +++ b/Code/Sandbox/Editor/EditorViewportWidget.cpp @@ -906,11 +906,6 @@ void EditorViewportWidget::OnBeginPrepareRender() m_debugDisplay->DepthTestOn(); PostWidgetRendering(); - - if (!m_renderer->IsStereoEnabled()) - { - GetIEditor()->GetSystem()->RenderStatistics(); - } } ////////////////////////////////////////////////////////////////////////// From 0472bc49aaf76351b6c7eedf3d873f61f9a9fe95 Mon Sep 17 00:00:00 2001 From: shiranj Date: Mon, 19 Apr 2021 15:25:51 -0700 Subject: [PATCH 22/59] Set winSlashReplacement to false when running incremental_build_util.py --- scripts/build/Jenkins/Jenkinsfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build/Jenkins/Jenkinsfile b/scripts/build/Jenkins/Jenkinsfile index 7f269c0012..9751d5f31b 100644 --- a/scripts/build/Jenkins/Jenkinsfile +++ b/scripts/build/Jenkins/Jenkinsfile @@ -276,10 +276,10 @@ def PreBuildCommonSteps(Map pipelineConfig, String repositoryName, String projec else pythonCmd = 'python -u ' if(env.RECREATE_VOLUME?.toBoolean()) { - palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action delete --repository_name ${repositoryName} --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Deleting volume') + palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action delete --repository_name ${repositoryName} --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Deleting volume', winSlashReplacement=false) } timeout(5) { - palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action mount --repository_name ${repositoryName} --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Mounting volume') + palSh("${pythonCmd} ${INCREMENTAL_BUILD_SCRIPT_PATH} --action mount --repository_name ${repositoryName} --project ${projectName} --pipeline ${pipeline} --branch ${branchName} --platform ${platform} --build_type ${buildType}", 'Mounting volume', winSlashReplacement=false) } if(env.IS_UNIX) { From 34be0cd4b5feeb370a14873a90a37898de440bf9 Mon Sep 17 00:00:00 2001 From: mnaumov Date: Mon, 19 Apr 2021 15:31:45 -0700 Subject: [PATCH 23/59] Fixing string search --- .../MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp index 1d579e5a10..406c585b73 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserWidget.cpp @@ -138,6 +138,7 @@ namespace MaterialEditor QSharedPointer finalFilter(new CompositeFilter(CompositeFilter::LogicOperatorType::AND)); finalFilter->AddFilter(sourceOrFolderFilter); finalFilter->AddFilter(m_ui->m_searchWidget->GetStringFilter()); + finalFilter->SetFilterPropagation(AssetBrowserEntryFilter::PropagateDirection::Down); return finalFilter; } From 6aabf2ee3db06bc56725b7cecea2e45f4d508621 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Mon, 19 Apr 2021 15:36:25 -0700 Subject: [PATCH 24/59] Don't attempt to render manipulators in game mode --- Code/Sandbox/Editor/EditorViewportWidget.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Code/Sandbox/Editor/EditorViewportWidget.cpp b/Code/Sandbox/Editor/EditorViewportWidget.cpp index 3c714b1d4c..91c70b720f 100644 --- a/Code/Sandbox/Editor/EditorViewportWidget.cpp +++ b/Code/Sandbox/Editor/EditorViewportWidget.cpp @@ -881,6 +881,11 @@ void EditorViewportWidget::OnBeginPrepareRender() GetIEditor()->GetSystem()->SetViewCamera(m_Camera); + if (GetIEditor()->IsInGameMode()) + { + return; + } + PreWidgetRendering(); RenderAll(); From 23b9b3e12b4a9c870f38e7bc1753cd00dfca99de Mon Sep 17 00:00:00 2001 From: shiranj Date: Mon, 19 Apr 2021 15:52:43 -0700 Subject: [PATCH 25/59] Fix indentation --- scripts/build/bootstrap/incremental_build_util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build/bootstrap/incremental_build_util.py b/scripts/build/bootstrap/incremental_build_util.py index 0228f129d0..28bb70955e 100755 --- a/scripts/build/bootstrap/incremental_build_util.py +++ b/scripts/build/bootstrap/incremental_build_util.py @@ -205,7 +205,7 @@ def create_volume(ec2_client, availability_zone, repository_name, project, pipel 'ResourceType': 'volume', 'Tags': [ { 'Key': 'Name', 'Value': mount_name }, - {'Key': 'RepositoryName', 'Value': repository_name}, + { 'Key': 'RepositoryName', 'Value': repository_name}, { 'Key': 'Project', 'Value': project }, { 'Key': 'Pipeline', 'Value': pipeline }, { 'Key': 'BranchName', 'Value': branch }, From d1ba2155c52c410e91452ed0b130e692500d30d4 Mon Sep 17 00:00:00 2001 From: mnaumov Date: Mon, 19 Apr 2021 15:55:58 -0700 Subject: [PATCH 26/59] PR feedback --- .../Code/Source/Window/MaterialBrowserInteractions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp index 167f7d38f5..39654af211 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Window/MaterialBrowserInteractions.cpp @@ -250,7 +250,7 @@ namespace MaterialEditor menu->addSeparator(); - QAction* createMaterialAction = menu->addAction(QObject::tr("Create New Material")); + QAction* createMaterialAction = menu->addAction(QObject::tr("Create Material...")); QObject::connect(createMaterialAction, &QAction::triggered, caller, [caller, entry]() { CreateMaterialDialog createDialog(entry->GetFullPath().c_str(), caller); From dee0f8470448c5ce4d60944f0db6df091e17c3f0 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Mon, 19 Apr 2021 17:00:36 -0700 Subject: [PATCH 27/59] Clarified lazy initialization and added some thread sanity logic after discussion with @rgba16f --- .../Include/AtomLyIntegration/AtomFont/FFont.h | 1 + .../AtomFont/Code/Source/FFont.cpp | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h b/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h index a6066984c7..91fc0834ec 100644 --- a/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h +++ b/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h @@ -302,6 +302,7 @@ namespace AZ bool m_fontTexDirty = false; bool m_fontInitialized = false; + AZStd::atomic_bool m_fontInitializing = false; FontEffects m_effects; diff --git a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp index 38024393fa..edbf148940 100644 --- a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp +++ b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp @@ -106,6 +106,14 @@ bool AZ::FFont::InitFont() return true; } + // If we're being initialized in another thread, abort. + if (m_fontInitializing) + { + return false; + } + + m_fontInitializing = true; + // Create and initialize DynamicDrawContext for font draw AZ::RPI::Ptr dynamicDraw = m_atomFont->GetOrCreateDynamicDrawForScene(GetDefaultViewportContext()->GetRenderScene().get()); @@ -129,6 +137,7 @@ bool AZ::FFont::InitFont() m_indexCount = 0; m_fontInitialized = true; + m_fontInitializing = false; return true; } @@ -293,7 +302,11 @@ void AZ::FFont::DrawStringUInternal( const bool asciiMultiLine, const TextDrawContext& ctx) { - InitFont(); + // Lazily ensure we're initialized before attempting to render. + if (!InitFont()) + { + return; + } if (!str || !m_vertexBuffer // vertex buffer isn't created until BootstrapScene is ready, Editor tries to render text before that. From 967d182ccc9f6deb7c2f95bd9c0cef3a5ff60fe8 Mon Sep 17 00:00:00 2001 From: srikappa Date: Mon, 19 Apr 2021 17:29:03 -0700 Subject: [PATCH 28/59] Fixed a couple of typos --- .../Prefab/Instance/InstanceUpdateExecutor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp index b307d8290c..71b1e04ec8 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/InstanceUpdateExecutor.cpp @@ -117,7 +117,7 @@ namespace AzToolsFramework "Could not find Template using Id '%llu'. Unable to update Instance.", currentTemplateId); - // Remove the instance from update queue if it's corresponding template couldn't be found + // Remove the instance from update queue if its corresponding template couldn't be found isUpdateSuccessful = false; m_instancesUpdateQueue.pop(); continue; @@ -128,7 +128,7 @@ namespace AzToolsFramework if (findInstancesResult.find(instanceToUpdate) == findInstancesResult.end()) { - // Since nested instances get reconstructed during propgation, remove any nested instance that no longer + // Since nested instances get reconstructed during propagation, remove any nested instance that no longer // maps to a template. isUpdateSuccessful = false; m_instancesUpdateQueue.pop(); From 7e48bee48fbef40e281ffb3f68aa82dcedf7e515 Mon Sep 17 00:00:00 2001 From: mnaumov Date: Mon, 19 Apr 2021 18:24:23 -0700 Subject: [PATCH 29/59] Fixing thumbnail pixelation --- .../AzToolsFramework/Thumbnails/ThumbnailWidget.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/ThumbnailWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/ThumbnailWidget.cpp index f2b81fdb98..1aefa6f189 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/ThumbnailWidget.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Thumbnails/ThumbnailWidget.cpp @@ -79,7 +79,9 @@ namespace AzToolsFramework int realHeight = qMin(aznumeric_cast(originalWidth /aspectRatio), originalHeight); int realWidth = aznumeric_cast(realHeight * aspectRatio); int x = (originalWidth - realWidth) / 2; - painter.drawPixmap(QRect(x, 0, realHeight, realWidth), pixmap); + // pixmap needs to be manually scaled to produce smoother result and avoid looking pixelated + // using painter.setRenderHint(QPainter::SmoothPixmapTransform); does not seem to work + painter.drawPixmap(QPoint(x, 0), pixmap.scaled(realWidth, realHeight, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); } QWidget::paintEvent(event); } From 9cc0d3fa2d14596efdbfccf5e4650b778c60a78f Mon Sep 17 00:00:00 2001 From: dmcdiar Date: Tue, 20 Apr 2021 01:01:27 -0700 Subject: [PATCH 30/59] Minor cleanup --- .../DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h index df0a237e1a..677e16ac42 100644 --- a/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h +++ b/Gems/Atom/Feature/Common/Code/Source/DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h @@ -58,9 +58,6 @@ namespace AZ const RHI::PipelineState* m_pipelineState = nullptr; Data::Asset m_srgAsset; RHI::DispatchDirect m_dispatchArgs; - - // revision number of the ray tracing data when the shader table was built - uint32_t m_rayTracingDataRevision = 0; }; } // namespace Render } // namespace AZ From 33e61ad35ba191fd8490e02fe151476256e0bb54 Mon Sep 17 00:00:00 2001 From: mbalfour Date: Wed, 14 Apr 2021 16:03:27 -0500 Subject: [PATCH 31/59] Added SetEntityName and exposed Get/SetEntityName to the behavior context for use from scripts. (cherry picked from commit 4f2e0b74727cfe99c74ed588769a540f24d7aa46) --- .../AzCore/Component/ComponentApplication.cpp | 24 +++++++++++++++++++ .../AzCore/Component/ComponentApplication.h | 1 + .../Component/ComponentApplicationBus.h | 8 ++++++- 3 files changed, 32 insertions(+), 1 deletion(-) diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp index a3af2648cf..a3986f72dd 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp @@ -341,6 +341,16 @@ namespace AZ ; } } + + if (auto behaviorContext = azrtti_cast(context)) + { + behaviorContext->EBus("ComponentApplicationBus") + ->Attribute(AZ::Script::Attributes::Scope, AZ::Script::Attributes::ScopeFlags::Common) + ->Attribute(AZ::Script::Attributes::Category, "Components") + + ->Event("GetEntityName", &ComponentApplicationBus::Events::GetEntityName) + ->Event("SetEntityName", &ComponentApplicationBus::Events::SetEntityName); + } } //========================================================================= @@ -1050,6 +1060,20 @@ namespace AZ return AZStd::string(); } + //========================================================================= + // SetEntityName + //========================================================================= + bool ComponentApplication::SetEntityName(const EntityId& id, const AZStd::string& name) + { + Entity* entity = FindEntity(id); + if (entity) + { + entity->SetName(name); + return true; + } + return false; + } + //========================================================================= // EnumerateEntities //========================================================================= diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h index ef5c813573..a66409eaf3 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h @@ -209,6 +209,7 @@ namespace AZ bool DeleteEntity(const EntityId& id) override; Entity* FindEntity(const EntityId& id) override; AZStd::string GetEntityName(const EntityId& id) override; + bool SetEntityName(const EntityId& id, const AZStd::string& name) override; void EnumerateEntities(const ComponentApplicationRequests::EntityCallback& callback) override; ComponentApplication* GetApplication() override { return this; } /// Returns the serialize context that has been registered with the app, if there is one. diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h b/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h index d0f161aa39..a3602c303e 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h @@ -130,7 +130,13 @@ namespace AZ //! @param entity A reference to the entity whose name you are seeking. //! @return The name of the entity with the specified entity ID. //! If no entity is found for the specified ID, it returns an empty string. - virtual AZStd::string GetEntityName(const EntityId& id) { (void)id; return AZStd::string(); }; + virtual AZStd::string GetEntityName(const EntityId& id) { (void)id; return AZStd::string(); } + + //! Sets the name of the entity that has the specified entity ID. + //! Entity names are not enforced to be unique. + //! @param entityId A reference to the entity whose name you want to change. + //! @return True if the name was changed successfully, false if it wasn't. + virtual bool SetEntityName([[maybe_unused]] const EntityId& id, [[maybe_unused]] const AZStd::string& name) { return false; } //! The type that AZ::ComponentApplicationRequests::EnumerateEntities uses to //! pass entity callbacks to the application for enumeration. From e8459898a7f887008fe2375673e3cddb39f1d40c Mon Sep 17 00:00:00 2001 From: mbalfour Date: Wed, 14 Apr 2021 16:04:44 -0500 Subject: [PATCH 32/59] Exposed Quaternion::CreateFromEulerAnglesDegrees and Transform::Transform(Vector3, Quaternion, Vector3) to the behavior context to improve usability of these classes from scripts. (cherry picked from commit 8156beb21181f9ff20972c8ea8be5e3dc61f1700) --- Code/Framework/AzCore/AzCore/Math/Quaternion.cpp | 3 ++- Code/Framework/AzCore/AzCore/Math/Transform.cpp | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Code/Framework/AzCore/AzCore/Math/Quaternion.cpp b/Code/Framework/AzCore/AzCore/Math/Quaternion.cpp index ca09f8b453..143fe59ca7 100644 --- a/Code/Framework/AzCore/AzCore/Math/Quaternion.cpp +++ b/Code/Framework/AzCore/AzCore/Math/Quaternion.cpp @@ -258,7 +258,8 @@ namespace AZ Method("CreateFromMatrix3x3", &Quaternion::CreateFromMatrix3x3)-> Method("CreateFromMatrix4x4", &Quaternion::CreateFromMatrix4x4)-> Method("CreateFromAxisAngle", &Quaternion::CreateFromAxisAngle)-> - Method("CreateShortestArc", &Quaternion::CreateShortestArc) + Method("CreateShortestArc", &Quaternion::CreateShortestArc)-> + Method("CreateFromEulerAnglesDegrees", &Quaternion::CreateFromEulerAnglesDegrees) ; } } diff --git a/Code/Framework/AzCore/AzCore/Math/Transform.cpp b/Code/Framework/AzCore/AzCore/Math/Transform.cpp index 77d8658d0f..bb3f764492 100644 --- a/Code/Framework/AzCore/AzCore/Math/Transform.cpp +++ b/Code/Framework/AzCore/AzCore/Math/Transform.cpp @@ -250,6 +250,7 @@ namespace AZ Attribute(Script::Attributes::ExcludeFrom, Script::Attributes::ExcludeFlags::All)-> Attribute(Script::Attributes::Storage, Script::Attributes::StorageType::Value)-> Attribute(Script::Attributes::GenericConstructorOverride, &Internal::TransformDefaultConstructor)-> + Constructor()-> Method("GetBasis", &Transform::GetBasis)-> Method("GetBasisX", &Transform::GetBasisX)-> Method("GetBasisY", &Transform::GetBasisY)-> From 5aa4642c12df54a6f7c53986bbe6dd5169f89d5f Mon Sep 17 00:00:00 2001 From: mbalfour Date: Wed, 14 Apr 2021 16:05:50 -0500 Subject: [PATCH 33/59] Added another implicit converter to MaterialPropertyValue so that generated images can be used with material properties more easily. (cherry picked from commit 66d7e9672ca0d6ced068dd95d8b52f88b5492c1f) --- .../Include/Atom/RPI.Reflect/Material/MaterialPropertyValue.h | 1 + 1 file changed, 1 insertion(+) diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialPropertyValue.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialPropertyValue.h index cafd31d8a5..758afb1c66 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialPropertyValue.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Material/MaterialPropertyValue.h @@ -65,6 +65,7 @@ namespace AZ MaterialPropertyValue(const Vector4& value) : m_value(value) {} MaterialPropertyValue(const Color& value) : m_value(value) {} MaterialPropertyValue(const Data::Asset& value) : m_value(value) {} + MaterialPropertyValue(const Data::Instance& value) : m_value(value) {} MaterialPropertyValue(const AZStd::string& value) : m_value(value) {} //! Copy constructor From 3e8625b78b83a56ae3f9557060f3e9bf4387517b Mon Sep 17 00:00:00 2001 From: mbalfour Date: Wed, 14 Apr 2021 16:09:02 -0500 Subject: [PATCH 34/59] Added "IsReadyToSpawn" to help detect when a spawner is ready to start spawning. Also added a small optimization to SetDynamicSliceByAssetId so that it doesn't do anything when setting it to the same value as before. (cherry picked from commit ff8a93e71f3017e8555012855f3e2155ec74a405) --- .../Source/Scripting/SpawnerComponent.cpp | 25 +++++++++++-------- .../Code/Source/Scripting/SpawnerComponent.h | 3 ++- .../Scripting/SpawnerComponentBus.h | 3 +++ 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.cpp index 2595fc09fd..7b76a1465c 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.cpp @@ -148,6 +148,7 @@ namespace LmbrCentral ->Event("GetCurrentEntitiesFromSpawnedSlice", &SpawnerComponentRequestBus::Events::GetCurrentEntitiesFromSpawnedSlice) ->Event("GetAllCurrentlySpawnedEntities", &SpawnerComponentRequestBus::Events::GetAllCurrentlySpawnedEntities) ->Event("SetDynamicSlice", &SpawnerComponentRequestBus::Events::SetDynamicSliceByAssetId) + ->Event("IsReadyToSpawn", &SpawnerComponentRequestBus::Events::IsReadyToSpawn) ; behaviorContext->EBus("SpawnerComponentNotificationBus") @@ -250,17 +251,15 @@ namespace LmbrCentral //========================================================================= void SpawnerComponent::SetDynamicSliceByAssetId(AZ::Data::AssetId& assetId) { - auto sliceAsset = AZ::Data::AssetManager::Instance().GetAsset(assetId, AZ::AzTypeInfo::Uuid(), m_sliceAsset.GetAutoLoadBehavior()); + if (m_sliceAsset.GetId() == assetId) + { + return; + } - if (sliceAsset.IsReady()) - { - m_sliceAsset = sliceAsset; - } - else - { - AZ::Data::AssetBus::Handler::BusDisconnect(); - AZ::Data::AssetBus::Handler::BusConnect(assetId); - } + m_sliceAsset = AZ::Data::AssetManager::Instance().GetAsset( + assetId, AZ::AzTypeInfo::Uuid(), m_sliceAsset.GetAutoLoadBehavior()); + AZ::Data::AssetBus::Handler::BusDisconnect(); + AZ::Data::AssetBus::Handler::BusConnect(assetId); } //========================================================================= @@ -444,6 +443,12 @@ namespace LmbrCentral return entities; } + //========================================================================= + bool SpawnerComponent::IsReadyToSpawn() + { + return m_sliceAsset.IsReady(); + } + //========================================================================= void SpawnerComponent::OnSlicePreInstantiate(const AZ::Data::AssetId& /*sliceAssetId*/, [[maybe_unused]] const AZ::SliceComponent::SliceInstanceAddress& sliceAddress) { diff --git a/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.h b/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.h index 3dee332df3..75f5db8df2 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.h +++ b/Gems/LmbrCentral/Code/Source/Scripting/SpawnerComponent.h @@ -70,7 +70,8 @@ namespace LmbrCentral AZStd::vector GetCurrentlySpawnedSlices() override; bool HasAnyCurrentlySpawnedSlices() override; AZStd::vector GetCurrentEntitiesFromSpawnedSlice(const AzFramework::SliceInstantiationTicket& ticket) override; - AZStd::vector GetAllCurrentlySpawnedEntities(); + AZStd::vector GetAllCurrentlySpawnedEntities() override; + bool IsReadyToSpawn() override; ////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////// diff --git a/Gems/LmbrCentral/Code/include/LmbrCentral/Scripting/SpawnerComponentBus.h b/Gems/LmbrCentral/Code/include/LmbrCentral/Scripting/SpawnerComponentBus.h index 6122a747f3..92ca003300 100644 --- a/Gems/LmbrCentral/Code/include/LmbrCentral/Scripting/SpawnerComponentBus.h +++ b/Gems/LmbrCentral/Code/include/LmbrCentral/Scripting/SpawnerComponentBus.h @@ -91,6 +91,9 @@ namespace LmbrCentral //! Note that spawning is not instant, if a slice hasn't finished spawning then none of its entities are returned. //! If an entity has been destroyed since it was spawned, its ID is not returned. virtual AZStd::vector GetAllCurrentlySpawnedEntities() = 0; + + //! Returns whether or not the spawner is in a state that's ready to spawn. + virtual bool IsReadyToSpawn() = 0; }; using SpawnerComponentRequestBus = AZ::EBus; From fd7d3a41ee89305e1f16e78981d15924fc49b24d Mon Sep 17 00:00:00 2001 From: spham Date: Tue, 20 Apr 2021 08:06:27 -0700 Subject: [PATCH 35/59] Removing 'periodic_test_profile' job from Android due to the fact that the Android Virtual Device is not supported on virtualized systems (Windows) --- .../build/Platform/Android/build_config.json | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/scripts/build/Platform/Android/build_config.json b/scripts/build/Platform/Android/build_config.json index e5b41973e0..0b71268a43 100644 --- a/scripts/build/Platform/Android/build_config.json +++ b/scripts/build/Platform/Android/build_config.json @@ -145,23 +145,5 @@ "GRADLE_BUILD_CMD": "build", "ADDITIONAL_GENERATE_ARGS": "" } - }, - "periodic_test_profile": { - "TAGS":[ - "nightly", - "weekly-build-metrics" - ], - "COMMAND":"build_and_run_unit_tests.cmd", - "PARAMETERS": { - "CONFIGURATION":"profile", - "OUTPUT_DIRECTORY":"build\\android_unittest", - "GAME_PROJECT": "AutomatedTesting", - "ANDROID_NDK_PLATFORM": "21", - "ANDROID_SDK_PLATFORM": "29", - "SIGN_APK": "true", - "GRADLE_BUILD_CMD": "assemble", - "ADDITIONAL_GENERATE_ARGS": "--unit-test" - } } - } From 37949abe2505033e6c23205bc9f3c0fdbef6ce2a Mon Sep 17 00:00:00 2001 From: spham Date: Tue, 20 Apr 2021 08:48:52 -0700 Subject: [PATCH 36/59] Restoring original periodic_test_profile block but with the TAGS removed --- scripts/build/Platform/Android/build_config.json | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/scripts/build/Platform/Android/build_config.json b/scripts/build/Platform/Android/build_config.json index 0b71268a43..0fa4d9ade3 100644 --- a/scripts/build/Platform/Android/build_config.json +++ b/scripts/build/Platform/Android/build_config.json @@ -145,5 +145,20 @@ "GRADLE_BUILD_CMD": "build", "ADDITIONAL_GENERATE_ARGS": "" } + }, + "periodic_test_profile": { + "TAGS":[ + ], + "COMMAND":"build_and_run_unit_tests.cmd", + "PARAMETERS": { + "CONFIGURATION":"profile", + "OUTPUT_DIRECTORY":"build\\android_unittest", + "GAME_PROJECT": "AutomatedTesting", + "ANDROID_NDK_PLATFORM": "21", + "ANDROID_SDK_PLATFORM": "29", + "SIGN_APK": "true", + "GRADLE_BUILD_CMD": "assemble", + "ADDITIONAL_GENERATE_ARGS": "--unit-test" + } } } From 1a359ac50d6463cfafed4801ed69c794b2245a8c Mon Sep 17 00:00:00 2001 From: garrieta Date: Tue, 20 Apr 2021 10:51:20 -0500 Subject: [PATCH 37/59] [ATOM-15285] ShaderVariantAssetBuilder code merge bug Fixing what appears to be a code merge/integration bug. Signed-off-by: garrieta --- .../Source/Editor/ShaderVariantAssetBuilder.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp index 1e3c7b6759..3572fb72ae 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder.cpp @@ -407,17 +407,20 @@ namespace AZ const auto& jobParameters = request.m_jobDescription.m_jobParameters; if (jobParameters.find(ShaderVariantLoadErrorParam) != jobParameters.end()) { - if (jobParameters.find(ShouldExitEarlyFromProcessJobParam) != jobParameters.end()) - { - AZ_TracePrintf(ShaderVariantAssetBuilderName, "Doing nothing on behalf of [%s] because it's been overriden by game project.", jobParameters.at(ShaderVariantLoadErrorParam).c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } AZ_Error(ShaderVariantAssetBuilderName, 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( + ShaderVariantAssetBuilderName, "Doing nothing on behalf of [%s] because it's been overriden by game project.", + jobParameters.at(ShaderVariantLoadErrorParam).c_str()); + response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; + return; + } + AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); if (jobCancelListener.IsCancelled()) { From fbc69e5fd7f692d5e93acf3e8ec0a62f4d5be971 Mon Sep 17 00:00:00 2001 From: Chris Galvan Date: Tue, 20 Apr 2021 11:08:51 -0500 Subject: [PATCH 38/59] [LYN-3079] Removed IPickObjectCallback and edit tools that used it. --- Code/Sandbox/Editor/AlignTool.cpp | 142 --------- Code/Sandbox/Editor/AlignTool.h | 40 --- .../Editor/Core/LevelEditorMenuHandler.cpp | 1 - Code/Sandbox/Editor/CryEdit.cpp | 67 ---- Code/Sandbox/Editor/CryEdit.h | 6 - Code/Sandbox/Editor/IEditor.h | 29 -- Code/Sandbox/Editor/IEditorImpl.cpp | 35 --- Code/Sandbox/Editor/IEditorImpl.h | 4 - Code/Sandbox/Editor/Lib/Tests/IEditorMock.h | 3 - Code/Sandbox/Editor/LinkTool.cpp | 286 ------------------ Code/Sandbox/Editor/LinkTool.h | 85 ------ Code/Sandbox/Editor/MainWindow.cpp | 18 -- Code/Sandbox/Editor/PickObjectTool.cpp | 173 ----------- Code/Sandbox/Editor/PickObjectTool.h | 76 ----- Code/Sandbox/Editor/Resource.h | 3 - Code/Sandbox/Editor/ToolbarManager.cpp | 8 - Code/Sandbox/Editor/editor_lib_files.cmake | 6 - 17 files changed, 982 deletions(-) delete mode 100644 Code/Sandbox/Editor/AlignTool.cpp delete mode 100644 Code/Sandbox/Editor/AlignTool.h delete mode 100644 Code/Sandbox/Editor/LinkTool.cpp delete mode 100644 Code/Sandbox/Editor/LinkTool.h delete mode 100644 Code/Sandbox/Editor/PickObjectTool.cpp delete mode 100644 Code/Sandbox/Editor/PickObjectTool.h diff --git a/Code/Sandbox/Editor/AlignTool.cpp b/Code/Sandbox/Editor/AlignTool.cpp deleted file mode 100644 index 4b3aedfbfa..0000000000 --- a/Code/Sandbox/Editor/AlignTool.cpp +++ /dev/null @@ -1,142 +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. -* -*/ -// Original file Copyright Crytek GMBH or its affiliates, used under license. - -#include "EditorDefs.h" - -#include "AlignTool.h" - -// Editor -#include "Objects/BaseObject.h" -#include "Objects/SelectionGroup.h" - -////////////////////////////////////////////////////////////////////////// -bool CAlignPickCallback::m_bActive = false; - -////////////////////////////////////////////////////////////////////////// -//! Called when object picked. -void CAlignPickCallback::OnPick(CBaseObject* picked) -{ - Matrix34 pickedTM(picked->GetWorldTM()); - - AABB pickedAABB; - picked->GetBoundBox(pickedAABB); - pickedAABB.Move(-pickedTM.GetTranslation()); - Vec3 pickedPivot = pickedAABB.GetCenter(); - - AABB pickedLocalAABB; - picked->GetLocalBounds(pickedLocalAABB); - - const Quat& pickedRot = picked->GetRotation(); - const Vec3& pickedScale = picked->GetScale(); - const Vec3& pickedPos = picked->GetPos(); - - bool bKeepScale = CheckVirtualKey(Qt::Key_Shift); - bool bKeepRotation = CheckVirtualKey(Qt::Key_Alt); - bool bAlignToBoundBox = CheckVirtualKey(Qt::Key_Control); - bool bApplyTransform = !bKeepScale && !bKeepRotation && !bAlignToBoundBox; - - { - bool bUndo = !CUndo::IsRecording(); - if (bUndo) - { - GetIEditor()->BeginUndo(); - } - - CSelectionGroup* selGroup = GetIEditor()->GetSelection(); - selGroup->FilterParents(); - - for (int i = 0; i < selGroup->GetFilteredCount(); i++) - { - CBaseObject* pMovedObj = selGroup->GetFilteredObject(i); - - if (bKeepScale || bKeepRotation || bApplyTransform) - { - if (bKeepScale && bKeepRotation) // Keep scale and rotation of a moved object - { - pMovedObj->SetWorldTM(Matrix34::Create(pMovedObj->GetScale(), pMovedObj->GetRotation(), pickedPos), eObjectUpdateFlags_UserInput); - } - else if (bKeepScale) // Keep only scale of a moved object - { - pMovedObj->SetWorldTM(Matrix34::Create(pMovedObj->GetScale(), pickedRot, pickedPos), eObjectUpdateFlags_UserInput); - } - else if (bKeepRotation) // Keep only rotation of a moved object - { - pMovedObj->SetWorldTM(Matrix34::Create(pickedScale, pMovedObj->GetRotation(), pickedPos), eObjectUpdateFlags_UserInput); - } - else // Scale, Rotation and Position of a picked object are applied to a moved object. - { - pMovedObj->SetWorldTM(pickedTM, eObjectUpdateFlags_UserInput); - } - } - else if (bAlignToBoundBox) // align to the bounding box. - { - if (pickedLocalAABB.GetVolume() == 0.0f) - { - continue; - } - - AABB movedLocalAABB; - pMovedObj->GetLocalBounds(movedLocalAABB); - if (fabs(movedLocalAABB.max.x - movedLocalAABB.min.x) < VEC_EPSILON && - fabs(movedLocalAABB.max.y - movedLocalAABB.min.y) < VEC_EPSILON && - fabs(movedLocalAABB.max.z - movedLocalAABB.min.z) < VEC_EPSILON) - { - continue; - } - - const Vec3& movedScale(pMovedObj->GetScale()); - Matrix34 movedScaleTM = Matrix34::CreateScale(movedScale); - AABB movedLocalScaledAABB; - movedLocalScaledAABB.min = movedScaleTM.TransformVector(movedLocalAABB.min); - movedLocalScaledAABB.max = movedScaleTM.TransformVector(movedLocalAABB.max); - - float fMovedWidth = movedLocalScaledAABB.max.x - movedLocalScaledAABB.min.x; - float fMovedHeight = movedLocalScaledAABB.max.z - movedLocalScaledAABB.min.z; - float fMovedLength = movedLocalScaledAABB.max.y - movedLocalScaledAABB.min.y; - - Matrix34 pickedScaleTM = Matrix34::CreateScale(picked->GetScale()); - AABB pickedLocalScaledAABB; - pickedLocalScaledAABB.min = pickedScaleTM.TransformVector(pickedLocalAABB.min); - pickedLocalScaledAABB.max = pickedScaleTM.TransformVector(pickedLocalAABB.max); - float fScaledPickedtWidth = pickedLocalScaledAABB.max.x - pickedLocalScaledAABB.min.x; - float fScaledPickedHeight = pickedLocalScaledAABB.max.z - pickedLocalScaledAABB.min.z; - float fScaledPickedLength = pickedLocalScaledAABB.max.y - pickedLocalScaledAABB.min.y; - - Vec3 scale((fScaledPickedtWidth / fMovedWidth) * movedScale.x, (fScaledPickedLength / fMovedLength) * movedScale.y, (fScaledPickedHeight / fMovedHeight) * movedScale.z); - Matrix34 scaleRotTM = Matrix34::Create(scale, pickedRot, Vec3(0, 0, 0)); - Vec3 movedPivot = scaleRotTM.TransformVector(movedLocalAABB.GetCenter()); - - pMovedObj->SetWorldTM(Matrix34::Create(scale, pickedRot, Vec3(pickedPos + (pickedPivot - movedPivot))), eObjectUpdateFlags_UserInput); - } - } - m_bActive = false; - if (bUndo) - { - GetIEditor()->AcceptUndo("Align To Object"); - } - } - delete this; -} - -//! Called when pick mode cancelled. -void CAlignPickCallback::OnCancelPick() -{ - m_bActive = false; - delete this; -} - -//! Return true if specified object is pickable. -bool CAlignPickCallback::OnPickFilter([[maybe_unused]] CBaseObject* filterObject) -{ - return true; -}; diff --git a/Code/Sandbox/Editor/AlignTool.h b/Code/Sandbox/Editor/AlignTool.h deleted file mode 100644 index 43cd01013d..0000000000 --- a/Code/Sandbox/Editor/AlignTool.h +++ /dev/null @@ -1,40 +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. -* -*/ -// Original file Copyright Crytek GMBH or its affiliates, used under license. - -#ifndef CRYINCLUDE_EDITOR_ALIGNTOOL_H -#define CRYINCLUDE_EDITOR_ALIGNTOOL_H - -#pragma once - -////////////////////////////////////////////////////////////////////////// -class CAlignPickCallback - : public IPickObjectCallback -{ -public: - CAlignPickCallback() { m_bActive = true; }; - //! Called when object picked. - virtual void OnPick(CBaseObject* picked); - //! Called when pick mode cancelled. - virtual void OnCancelPick(); - //! Return true if specified object is pickable. - virtual bool OnPickFilter(CBaseObject* filterObject); - - static bool IsActive() { return m_bActive; } - - virtual bool IsNeedSpecificBehaviorForSpaceAcce() { return true; } -private: - static bool m_bActive; -}; - - -#endif // CRYINCLUDE_EDITOR_ALIGNTOOL_H diff --git a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp index 1c9e7d90d2..f00085d5ad 100644 --- a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp +++ b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp @@ -580,7 +580,6 @@ void LevelEditorMenuHandler::PopulateEditMenu(ActionManager::MenuWrapper& editMe auto alignMenu = modifyMenu.AddMenu(tr("Align")); alignMenu.AddAction(ID_OBJECTMODIFY_ALIGNTOGRID); - alignMenu.AddAction(ID_OBJECTMODIFY_ALIGN); alignMenu.AddAction(ID_MODIFY_ALIGNOBJTOSURF); auto constrainMenu = modifyMenu.AddMenu(tr("Constrain")); diff --git a/Code/Sandbox/Editor/CryEdit.cpp b/Code/Sandbox/Editor/CryEdit.cpp index e4f06a1bc3..7aefcffb5a 100644 --- a/Code/Sandbox/Editor/CryEdit.cpp +++ b/Code/Sandbox/Editor/CryEdit.cpp @@ -95,8 +95,6 @@ AZ_POP_DISABLE_WARNING #include "Core/QtEditorApplication.h" #include "StringDlg.h" -#include "LinkTool.h" -#include "AlignTool.h" #include "VoxelAligningTool.h" #include "NewLevelDialog.h" #include "GridSettingsDialog.h" @@ -400,8 +398,6 @@ void CCryEditApp::RegisterActionHandlers() ON_COMMAND(ID_EDITMODE_MOVE, OnEditmodeMove) ON_COMMAND(ID_EDITMODE_ROTATE, OnEditmodeRotate) ON_COMMAND(ID_EDITMODE_SCALE, OnEditmodeScale) - ON_COMMAND(ID_EDITTOOL_LINK, OnEditToolLink) - ON_COMMAND(ID_EDITTOOL_UNLINK, OnEditToolUnlink) ON_COMMAND(ID_EDITMODE_SELECT, OnEditmodeSelect) ON_COMMAND(ID_EDIT_ESCAPE, OnEditEscape) ON_COMMAND(ID_OBJECTMODIFY_SETAREA, OnObjectSetArea) @@ -421,7 +417,6 @@ void CCryEditApp::RegisterActionHandlers() ON_COMMAND(ID_SELECTION_SAVE, OnSelectionSave) ON_COMMAND(ID_IMPORT_ASSET, OnOpenAssetImporter) ON_COMMAND(ID_SELECTION_LOAD, OnSelectionLoad) - ON_COMMAND(ID_OBJECTMODIFY_ALIGN, OnAlignObject) ON_COMMAND(ID_MODIFY_ALIGNOBJTOSURF, OnAlignToVoxel) ON_COMMAND(ID_OBJECTMODIFY_ALIGNTOGRID, OnAlignToGrid) ON_COMMAND(ID_LOCK_SELECTION, OnLockSelection) @@ -2896,51 +2891,6 @@ void CCryEditApp::OnEditmodeScale() } } -////////////////////////////////////////////////////////////////////////// -void CCryEditApp::OnEditToolLink() -{ - // TODO: Add your command handler code here - if (qobject_cast(GetIEditor()->GetEditTool())) - { - GetIEditor()->SetEditTool(0); - } - else - { - GetIEditor()->SetEditTool(new CLinkTool()); - } -} - -////////////////////////////////////////////////////////////////////////// -void CCryEditApp::OnUpdateEditToolLink(QAction* action) -{ - if (!GetIEditor()->GetDocument()) - { - action->setEnabled(false); - return; - } - action->setEnabled(GetIEditor()->GetDocument()->IsDocumentReady()); - CEditTool* pEditTool = GetIEditor()->GetEditTool(); - action->setChecked(qobject_cast(pEditTool) != nullptr); -} - -////////////////////////////////////////////////////////////////////////// -void CCryEditApp::OnEditToolUnlink() -{ - CUndo undo("Unlink Object(s)"); - CSelectionGroup* pSelection = GetIEditor()->GetObjectManager()->GetSelection(); - for (int i = 0; i < pSelection->GetCount(); i++) - { - CBaseObject* pBaseObj = pSelection->GetObject(i); - pBaseObj->DetachThis(); - } -} - -////////////////////////////////////////////////////////////////////////// -void CCryEditApp::OnUpdateEditToolUnlink(QAction* action) -{ - action->setEnabled(false); -} - ////////////////////////////////////////////////////////////////////////// void CCryEditApp::OnEditmodeSelect() { @@ -3510,14 +3460,6 @@ void CCryEditApp::OnUpdateSelected(QAction* action) action->setEnabled(!GetIEditor()->GetSelection()->IsEmpty()); } -////////////////////////////////////////////////////////////////////////// -void CCryEditApp::OnAlignObject() -{ - // Align pick callback will release itself. - CAlignPickCallback* alignCallback = new CAlignPickCallback; - GetIEditor()->PickObject(alignCallback, 0, "Align to Object"); -} - ////////////////////////////////////////////////////////////////////////// void CCryEditApp::OnAlignToGrid() { @@ -3538,15 +3480,6 @@ void CCryEditApp::OnAlignToGrid() } } -////////////////////////////////////////////////////////////////////////// -void CCryEditApp::OnUpdateAlignObject(QAction* action) -{ - Q_ASSERT(action->isCheckable()); - action->setChecked(CAlignPickCallback::IsActive()); - - action->setEnabled(!GetIEditor()->GetSelection()->IsEmpty()); -} - ////////////////////////////////////////////////////////////////////////// void CCryEditApp::OnAlignToVoxel() { diff --git a/Code/Sandbox/Editor/CryEdit.h b/Code/Sandbox/Editor/CryEdit.h index 6a17f9a8bf..94c39991e9 100644 --- a/Code/Sandbox/Editor/CryEdit.h +++ b/Code/Sandbox/Editor/CryEdit.h @@ -224,10 +224,6 @@ public: void OnEditmodeMove(); void OnEditmodeRotate(); void OnEditmodeScale(); - void OnEditToolLink(); - void OnUpdateEditToolLink(QAction* action); - void OnEditToolUnlink(); - void OnUpdateEditToolUnlink(QAction* action); void OnEditmodeSelect(); void OnEditEscape(); void OnObjectSetArea(); @@ -256,10 +252,8 @@ public: void OnOpenAssetImporter(); void OnSelectionLoad(); void OnUpdateSelected(QAction* action); - void OnAlignObject(); void OnAlignToVoxel(); void OnAlignToGrid(); - void OnUpdateAlignObject(QAction* action); void OnUpdateAlignToVoxel(QAction* action); void OnLockSelection(); void OnEditLevelData(); diff --git a/Code/Sandbox/Editor/IEditor.h b/Code/Sandbox/Editor/IEditor.h index 7715e64fe5..722f2a7c25 100644 --- a/Code/Sandbox/Editor/IEditor.h +++ b/Code/Sandbox/Editor/IEditor.h @@ -391,21 +391,6 @@ enum EModifiedModule eModifiedAll = -1 }; -//! Callback class passed to PickObject. -struct IPickObjectCallback -{ - virtual ~IPickObjectCallback() = default; - - //! Called when object picked. - virtual void OnPick(CBaseObject* picked) = 0; - //! Called when pick mode cancelled. - virtual void OnCancelPick() = 0; - //! Return true if specified object is pickable. - virtual bool OnPickFilter([[maybe_unused]] CBaseObject* filterObject) { return true; }; - //! If need a specific behavior when holding space, return true or if not, return false. - virtual bool IsNeedSpecificBehaviorForSpaceAcce() { return false; } -}; - //! Class provided by editor for various registration functions. struct CRegistrationContext { @@ -570,20 +555,6 @@ struct IEditor //! Get access to object manager. virtual struct IObjectManager* GetObjectManager() = 0; virtual CSettingsManager* GetSettingsManager() = 0; - //! Set pick object mode. - //! When object picked callback will be called, with OnPick - //! If pick operation is canceled Cancel will be called - //! @param targetClass specifies objects of which class are supposed to be picked - //! @param bMultipick if true pick tool will pick multiple object - virtual void PickObject( - IPickObjectCallback* callback, - const QMetaObject* targetClass = 0, - const char* statusText = 0, - bool bMultipick = false) = 0; - //! Cancel current pick operation - virtual void CancelPick() = 0; - //! Return true if editor now in object picking mode - virtual bool IsPicking() = 0; //! Get DB manager that own items of specified type. virtual IDataBaseManager* GetDBItemManager(EDataBaseItemType itemType) = 0; //! Get Manager of Materials. diff --git a/Code/Sandbox/Editor/IEditorImpl.cpp b/Code/Sandbox/Editor/IEditorImpl.cpp index 4a0a73c9ac..399ac45794 100644 --- a/Code/Sandbox/Editor/IEditorImpl.cpp +++ b/Code/Sandbox/Editor/IEditorImpl.cpp @@ -65,7 +65,6 @@ AZ_POP_DISABLE_WARNING #include "UIEnumsDatabase.h" #include "Util/Ruler.h" #include "RenderHelpers/AxisHelper.h" -#include "PickObjectTool.h" #include "Settings.h" #include "Include/IObjectManager.h" #include "Include/ISourceControl.h" @@ -170,7 +169,6 @@ CEditorImpl::CEditorImpl() , m_pShaderEnum(nullptr) , m_pIconManager(nullptr) , m_bSelectionLocked(true) - , m_pPickTool(nullptr) , m_pAxisGizmo(nullptr) , m_pGameEngine(nullptr) , m_pAnimationContext(nullptr) @@ -794,11 +792,6 @@ void CEditorImpl::SetEditTool(CEditTool* tool, bool bStopCurrentTool) m_pEditTool->BeginEditParams(this, 0); } - // Make sure pick is aborted. - if (tool != m_pPickTool) - { - m_pPickTool = nullptr; - } Notify(eNotify_OnEditToolChange); } @@ -1069,34 +1062,6 @@ bool CEditorImpl::IsSelectionLocked() return m_bSelectionLocked; } -void CEditorImpl::PickObject(IPickObjectCallback* callback, const QMetaObject* targetClass, const char* statusText, bool bMultipick) -{ - m_pPickTool = new CPickObjectTool(callback, targetClass); - - static_cast(m_pPickTool.get())->SetMultiplePicks(bMultipick); - if (statusText) - { - m_pPickTool.get()->SetStatusText(statusText); - } - - SetEditTool(m_pPickTool); -} - -void CEditorImpl::CancelPick() -{ - SetEditTool(0); - m_pPickTool = 0; -} - -bool CEditorImpl::IsPicking() -{ - if (GetEditTool() == m_pPickTool && m_pPickTool != 0) - { - return true; - } - return false; -} - CViewManager* CEditorImpl::GetViewManager() { return m_pViewManager; diff --git a/Code/Sandbox/Editor/IEditorImpl.h b/Code/Sandbox/Editor/IEditorImpl.h index 9e3b3abc66..4a8d5fa191 100644 --- a/Code/Sandbox/Editor/IEditorImpl.h +++ b/Code/Sandbox/Editor/IEditorImpl.h @@ -181,10 +181,7 @@ public: void SelectObject(CBaseObject* obj); void LockSelection(bool bLock); bool IsSelectionLocked(); - void PickObject(IPickObjectCallback* callback, const QMetaObject* targetClass = 0, const char* statusText = 0, bool bMultipick = false); - void CancelPick(); - bool IsPicking(); IDataBaseManager* GetDBItemManager(EDataBaseItemType itemType); CMaterialManager* GetMaterialManager() { return m_pMaterialManager; } CMusicManager* GetMusicManager() { return m_pMusicManager; }; @@ -409,7 +406,6 @@ protected: QString m_primaryCDFolder; QString m_userFolder; bool m_bSelectionLocked; - _smart_ptr m_pPickTool; class CAxisGizmo* m_pAxisGizmo; CGameEngine* m_pGameEngine; CAnimationContext* m_pAnimationContext; diff --git a/Code/Sandbox/Editor/Lib/Tests/IEditorMock.h b/Code/Sandbox/Editor/Lib/Tests/IEditorMock.h index a290ef5de5..e48fb5fec1 100644 --- a/Code/Sandbox/Editor/Lib/Tests/IEditorMock.h +++ b/Code/Sandbox/Editor/Lib/Tests/IEditorMock.h @@ -90,9 +90,6 @@ public: MOCK_METHOD0(IsSelectionLocked, bool()); MOCK_METHOD0(GetObjectManager, struct IObjectManager* ()); MOCK_METHOD0(GetSettingsManager, CSettingsManager* ()); - MOCK_METHOD4(PickObject, void(IPickObjectCallback*,const QMetaObject*,const char* ,bool bMultipick)); - MOCK_METHOD0(CancelPick, void()); - MOCK_METHOD0(IsPicking, bool()); MOCK_METHOD1(GetDBItemManager, IDataBaseManager* (EDataBaseItemType)); MOCK_METHOD0(GetMaterialManager, CMaterialManager* ()); MOCK_METHOD0(GetMaterialManagerLibrary, IBaseLibraryManager* ()); diff --git a/Code/Sandbox/Editor/LinkTool.cpp b/Code/Sandbox/Editor/LinkTool.cpp deleted file mode 100644 index 4602875b77..0000000000 --- a/Code/Sandbox/Editor/LinkTool.cpp +++ /dev/null @@ -1,286 +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. -* -*/ -// Original file Copyright Crytek GMBH or its affiliates, used under license. - -#include "EditorDefs.h" - -#include "LinkTool.h" - -// Editor -#include "Viewport.h" -#include "Objects/EntityObject.h" -#include "Objects/SelectionGroup.h" -#include - -// AzCore -#include - -#ifdef LoadCursor -#undef LoadCursor -#endif - -namespace -{ - const float kGeomCacheNodePivotSizeScale = 0.0025f; -} - -////////////////////////////////////////////////////////////////////////// -CLinkTool::CLinkTool() - : m_nodeName(nullptr) - , m_pGeomCacheRenderNode(nullptr) -{ - m_pChild = NULL; - SetStatusText("Click on object and drag a link to a new parent"); - - m_hLinkCursor = CMFCUtils::LoadCursor(IDC_POINTER_LINK); - m_hLinkNowCursor = CMFCUtils::LoadCursor(IDC_POINTER_LINKNOW); - m_hCurrCursor = &m_hLinkCursor; - AZ::EntitySystemBus::Handler::BusConnect(); -} - -////////////////////////////////////////////////////////////////////////// -CLinkTool::~CLinkTool() -{ - AZ::EntitySystemBus::Handler::BusDisconnect(); -} - -////////////////////////////////////////////////////////////////////////// -void CLinkTool::LinkObject(CBaseObject* pChild, CBaseObject* pParent) -{ - if (pChild == NULL) - { - return; - } - - if (ChildIsValid(pParent, pChild)) - { - CUndo undo("Link Object"); - - if (qobject_cast(pChild)) - { - static_cast(pChild)->SetAttachTarget(""); - static_cast(pChild)->SetAttachType(CEntityObject::eAT_Pivot); - } - - pParent->AttachChild(pChild, true); - - QString str; - str = tr("%1 attached to %2").arg(pChild->GetName(), pParent->GetName()); - SetStatusText(str); - } - else - { - SetStatusText("Error: Cyclic linking or already linked."); - } -} - -////////////////////////////////////////////////////////////////////////// -void CLinkTool::LinkSelectedToParent(CBaseObject* pParent) -{ - if (pParent) - { - if (IsRelevant(pParent)) - { - CSelectionGroup* pSel = GetIEditor()->GetSelection(); - if (!pSel->GetCount()) - { - return; - } - CUndo undo("Link Object(s)"); - for (int i = 0; i < pSel->GetCount(); i++) - { - CBaseObject* pChild = pSel->GetObject(i); - if (pChild == pParent) - { - continue; - } - LinkObject(pChild, pParent); - } - } - } -} - -////////////////////////////////////////////////////////////////////////// -bool CLinkTool::MouseCallback(CViewport* view, EMouseEvent event, QPoint& point, [[maybe_unused]] int flags) -{ - view->SetCursorString(""); - - m_hCurrCursor = &m_hLinkCursor; - if (event == eMouseLDown) - { - HitContext hitInfo; - view->HitTest(point, hitInfo); - CBaseObject* obj = hitInfo.object; - if (obj) - { - if (IsRelevant(obj)) - { - m_StartDrag = obj->GetWorldPos(); - m_pChild = obj; - } - } - } - else if (event == eMouseLUp) - { - HitContext hitInfo; - view->HitTest(point, hitInfo); - CBaseObject* obj = hitInfo.object; - if (obj) - { - if (IsRelevant(obj)) - { - CSelectionGroup* pSelectionGroup = GetIEditor()->GetSelection(); - int nGroupCount = pSelectionGroup->GetCount(); - if (pSelectionGroup && nGroupCount > 1) - { - LinkSelectedToParent(obj); - } - if (!pSelectionGroup || nGroupCount <= 1 || !pSelectionGroup->IsContainObject(m_pChild)) - { - LinkObject(m_pChild, obj); - } - } - } - m_pChild = NULL; - } - else if (event == eMouseMove) - { - m_EndDrag = view->ViewToWorld(point); - m_nodeName = nullptr; - m_pGeomCacheRenderNode = nullptr; - - HitContext hitInfo; - if (view->HitTest(point, hitInfo)) - { - m_EndDrag = hitInfo.raySrc + hitInfo.rayDir * hitInfo.dist; - } - - CBaseObject* obj = hitInfo.object; - if (obj) - { - if (IsRelevant(obj)) - { - QString name = obj->GetName(); - if (hitInfo.name) - { - name += QString("\n ") + hitInfo.name; - } - - // Set Cursors. - view->SetCursorString(name); - if (m_pChild) - { - if (ChildIsValid(obj, m_pChild)) - { - m_hCurrCursor = &m_hLinkNowCursor; - } - } - } - } - } - return true; -} - -////////////////////////////////////////////////////////////////////////// -bool CLinkTool::OnKeyDown([[maybe_unused]] CViewport* view, uint32 nChar, [[maybe_unused]] uint32 nRepCnt, [[maybe_unused]] uint32 nFlags) -{ - if (nChar == VK_ESCAPE) - { - // Cancel selection. - GetIEditor()->SetEditTool(nullptr); - } - return false; -} - -////////////////////////////////////////////////////////////////////////// -void CLinkTool::Display(DisplayContext& dc) -{ - if (m_pChild && m_EndDrag != Vec3(ZERO)) - { - ColorF lineColor = (m_hCurrCursor == &m_hLinkNowCursor) ? ColorF(0, 1, 0) : ColorF(1, 0, 0); - dc.DrawLine(m_StartDrag, m_EndDrag, lineColor, lineColor); - } -} - -////////////////////////////////////////////////////////////////////////// -void CLinkTool::OnEntityDestruction(const AZ::EntityId& entityId) -{ - if (m_pChild && (m_pChild->GetType() == OBJTYPE_AZENTITY)) - { - CComponentEntityObject* childComponentEntity = static_cast(m_pChild); - AZ::EntityId childEntityId = childComponentEntity->GetAssociatedEntityId(); - if(entityId == childEntityId) - { - GetIEditor()->SetEditTool(nullptr); - } - } -} - -////////////////////////////////////////////////////////////////////////// -bool CLinkTool::ChildIsValid(CBaseObject* pParent, CBaseObject* pChild, int nDir) -{ - if (!pParent) - { - return false; - } - if (!pChild) - { - return false; - } - if (pParent == pChild) - { - return false; - } - - // Legacy entities and AZ entities shouldn't be linked. - if ((pParent->GetType() == OBJTYPE_AZENTITY) != (pChild->GetType() == OBJTYPE_AZENTITY)) - { - return false; - } - - CBaseObject* pObj; - if (nDir & 1) - { - pObj = pChild->GetParent(); - if (pObj) - { - if (!ChildIsValid(pParent, pObj, 1)) - { - return false; - } - } - } - if (nDir & 2) - { - for (int i = 0; i < pChild->GetChildCount(); i++) - { - pObj = pChild->GetChild(i); - if (pObj) - { - if (!ChildIsValid(pParent, pObj, 2)) - { - return false; - } - } - } - } - return true; -} - -////////////////////////////////////////////////////////////////////////// -bool CLinkTool::OnSetCursor(CViewport* vp) -{ - vp->SetCursor(*m_hCurrCursor); - return true; -} - -#include diff --git a/Code/Sandbox/Editor/LinkTool.h b/Code/Sandbox/Editor/LinkTool.h deleted file mode 100644 index a24370f7fe..0000000000 --- a/Code/Sandbox/Editor/LinkTool.h +++ /dev/null @@ -1,85 +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. -* -*/ -// Original file Copyright Crytek GMBH or its affiliates, used under license. - -// Description : Definition of CLinkTool, tool used to link objects. - - -#ifndef CRYINCLUDE_EDITOR_LINKTOOL_H -#define CRYINCLUDE_EDITOR_LINKTOOL_H - -#pragma once - -#if !defined(Q_MOC_RUN) -#include -#include "EditTool.h" -#include "Include/IObjectManager.h" -#endif - -class CEntityObject; - -////////////////////////////////////////////////////////////////////////// -class CLinkTool - : public CEditTool - , public IObjectSelectCallback - , private AZ::EntitySystemBus::Handler -{ - Q_OBJECT -public: - Q_INVOKABLE CLinkTool(); // IPickObjectCallback *callback,CRuntimeClass *targetClass=NULL ); - - // Ovverides from CEditTool - bool MouseCallback(CViewport* view, EMouseEvent event, QPoint& point, int flags); - - virtual void BeginEditParams([[maybe_unused]] IEditor* ie, [[maybe_unused]] int flags) {}; - virtual void EndEditParams() {}; - - virtual void Display(DisplayContext& dc); - virtual bool OnKeyDown(CViewport* view, uint32 nChar, uint32 nRepCnt, uint32 nFlags); - virtual bool OnKeyUp([[maybe_unused]] CViewport* view, [[maybe_unused]] uint32 nChar, [[maybe_unused]] uint32 nRepCnt, [[maybe_unused]] uint32 nFlags) { return false; }; - - virtual bool OnSelectObject([[maybe_unused]] CBaseObject* obj) {return false; } - virtual bool CanSelectObject([[maybe_unused]] CBaseObject* obj) { return true; }; - - virtual bool OnSetCursor(CViewport* vp); - - void LinkSelectedToParent(CBaseObject* pParent); - -protected: - virtual ~CLinkTool(); - // Delete itself. - void DeleteThis() { delete this; }; - -private: - bool IsRelevant([[maybe_unused]] CBaseObject* obj) { return true; } - bool ChildIsValid(CBaseObject* pParent, CBaseObject* pChild, int nDir = 3); - void LinkObject(CBaseObject* pChild, CBaseObject* pParent); - void LinkToNode(CEntityObject* pChild, CEntityObject* pParent, const char* nodeName); - - // AZ::EntitySystemBus::Handler - void OnEntityDestruction(const AZ::EntityId& entityId) override; - - - CBaseObject* m_pChild; - Vec3 m_StartDrag; - Vec3 m_EndDrag; - - QCursor m_hLinkCursor; - QCursor m_hLinkNowCursor; - QCursor* m_hCurrCursor; - - const char* m_nodeName; - IGeomCacheRenderNode* m_pGeomCacheRenderNode; -}; - - -#endif // CRYINCLUDE_EDITOR_LINKTOOL_H diff --git a/Code/Sandbox/Editor/MainWindow.cpp b/Code/Sandbox/Editor/MainWindow.cpp index b926c00fc8..6acd8cfc20 100644 --- a/Code/Sandbox/Editor/MainWindow.cpp +++ b/Code/Sandbox/Editor/MainWindow.cpp @@ -1104,15 +1104,6 @@ void MainWindow::InitActions() .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateSelected) .SetIcon(Style::icon("Align_to_grid")) .SetApplyHoverEffect(); - am->AddAction(ID_OBJECTMODIFY_ALIGN, tr("Align to object")).SetCheckable(true) -#if AZ_TRAIT_OS_PLATFORM_APPLE - .SetStatusTip(tr(u8"\u2318: Align an object to a bounding box, \u2325 : Keep Rotation of the moved object, Shift : Keep Scale of the moved object")) -#else - .SetStatusTip(tr("Ctrl: Align an object to a bounding box, Alt : Keep Rotation of the moved object, Shift : Keep Scale of the moved object")) -#endif - .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateAlignObject) - .SetIcon(Style::icon("Align_to_Object")) - .SetApplyHoverEffect(); am->AddAction(ID_MODIFY_ALIGNOBJTOSURF, tr("Align object to surface (Hold CTRL)")).SetCheckable(true) .SetToolTip(tr("Align object to surface (Hold CTRL)")) .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateAlignToVoxel) @@ -1449,15 +1440,6 @@ void MainWindow::InitActions() .SetApplyHoverEffect(); // Edit Mode Toolbar Actions - am->AddAction(ID_EDITTOOL_LINK, tr("Link an object to parent")) - .SetIcon(Style::icon("add_link")) - .SetApplyHoverEffect() - .SetCheckable(true) - .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateEditToolLink); - am->AddAction(ID_EDITTOOL_UNLINK, tr("Unlink all selected objects")) - .SetIcon(Style::icon("remove_link")) - .SetApplyHoverEffect() - .RegisterUpdateCallback(cryEdit, &CCryEditApp::OnUpdateEditToolUnlink); am->AddAction(IDC_SELECTION_MASK, tr("Selected Object Types")); am->AddAction(ID_REF_COORDS_SYS, tr("Reference coordinate system")) .SetShortcut(tr("Ctrl+W")) diff --git a/Code/Sandbox/Editor/PickObjectTool.cpp b/Code/Sandbox/Editor/PickObjectTool.cpp deleted file mode 100644 index dc1fce110e..0000000000 --- a/Code/Sandbox/Editor/PickObjectTool.cpp +++ /dev/null @@ -1,173 +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. -* -*/ -// Original file Copyright Crytek GMBH or its affiliates, used under license. - -#include "EditorDefs.h" - -#include "PickObjectTool.h" - -// Editor -#include "Viewport.h" -#include "Include/HitContext.h" -#include "Objects/BaseObject.h" - - -////////////////////////////////////////////////////////////////////////// -CPickObjectTool::CPickObjectTool(IPickObjectCallback* callback, const QMetaObject* targetClass) -{ - assert(callback != 0); - m_callback = callback; - m_targetClass = targetClass; - m_bMultiPick = false; -} - -////////////////////////////////////////////////////////////////////////// -CPickObjectTool::~CPickObjectTool() -{ - GetIEditor()->GetObjectManager()->SetSelectCallback(0); - //m_prevSelectCallback = 0; - if (m_callback) - { - m_callback->OnCancelPick(); - } -} - -////////////////////////////////////////////////////////////////////////// -void CPickObjectTool::BeginEditParams([[maybe_unused]] IEditor* ie, [[maybe_unused]] int flags) -{ - QString str = "Pick object"; - if (m_targetClass) - { - str = tr("Pick %1 object").arg(m_targetClass->className()); - } - SetStatusText(str); - - //m_prevSelectCallback = - GetIEditor()->GetObjectManager()->SetSelectCallback(this); -} - -////////////////////////////////////////////////////////////////////////// -bool CPickObjectTool::MouseCallback(CViewport* view, EMouseEvent event, QPoint& point, [[maybe_unused]] int flags) -{ - if (event == eMouseLDown) - { - HitContext hitInfo; - view->HitTest(point, hitInfo); - CBaseObject* obj = hitInfo.object; - if (obj) - { - if (IsRelevant(obj)) - { - if (m_callback) - { - // Can pick this one. - m_callback->OnPick(obj); - } - if (!m_bMultiPick) - { - m_callback = 0; - GetIEditor()->SetEditTool(0); - } - } - } - } - else if (event == eMouseMove) - { - HitContext hitInfo; - view->HitTest(point, hitInfo); - CBaseObject* obj = hitInfo.object; - if (obj) - { - if (IsRelevant(obj)) - { - // Set Cursors. - view->SetCurrentCursor(STD_CURSOR_HIT, obj->GetName()); - } - } - } - return true; -} - -////////////////////////////////////////////////////////////////////////// -bool CPickObjectTool::OnSelectObject(CBaseObject* obj) -{ - if (IsRelevant(obj)) - { - // Can pick this one. - if (m_callback) - { - m_callback->OnPick(obj); - m_callback = 0; - } - if (!m_bMultiPick) - { - GetIEditor()->SetEditTool(0); - } - } - return false; -} - -////////////////////////////////////////////////////////////////////////// -bool CPickObjectTool::CanSelectObject(CBaseObject* obj) -{ - return IsRelevant(obj); -} - -////////////////////////////////////////////////////////////////////////// -bool CPickObjectTool::OnKeyDown([[maybe_unused]] CViewport* view, uint32 nChar, [[maybe_unused]] uint32 nRepCnt, [[maybe_unused]] uint32 nFlags) -{ - if (nChar == VK_ESCAPE) - { - // Cancel selection. - GetIEditor()->SetEditTool(0); - } - return false; -} - -////////////////////////////////////////////////////////////////////////// -bool CPickObjectTool::IsRelevant(CBaseObject* obj) -{ - assert(obj != 0); - if (obj == NULL) - { - return false; - } - if (!m_callback) - { - return false; - } - - if (!m_targetClass) - { - return m_callback->OnPickFilter(obj); - } - else - { - if (obj->metaObject() == m_targetClass || m_targetClass->cast(obj)) - { - return m_callback->OnPickFilter(obj); - } - } - return false; -} - -////////////////////////////////////////////////////////////////////////// -bool CPickObjectTool::IsNeedSpecificBehaviorForSpaceAcce() -{ - if (m_callback && m_callback->IsNeedSpecificBehaviorForSpaceAcce()) - { - return true; - } - return false; -} - -#include diff --git a/Code/Sandbox/Editor/PickObjectTool.h b/Code/Sandbox/Editor/PickObjectTool.h deleted file mode 100644 index 3b0241042a..0000000000 --- a/Code/Sandbox/Editor/PickObjectTool.h +++ /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. -* -*/ -// Original file Copyright Crytek GMBH or its affiliates, used under license. - -// Description : Definition of PickObjectTool, tool used to pick objects. - - -#ifndef CRYINCLUDE_EDITOR_PICKOBJECTTOOL_H -#define CRYINCLUDE_EDITOR_PICKOBJECTTOOL_H - -#if !defined(Q_MOC_RUN) -#include "EditTool.h" -#include "IObjectManager.h" -#endif - -#pragma once - -////////////////////////////////////////////////////////////////////////// -class CPickObjectTool - : public CEditTool - , public IObjectSelectCallback -{ - Q_OBJECT -public: - CPickObjectTool(IPickObjectCallback* callback, const QMetaObject* targetClass = NULL); - - //! If set to true, pick tool will not stop picking after first pick. - void SetMultiplePicks(bool bEnable) { m_bMultiPick = bEnable; }; - - // Ovverides from CEditTool - bool MouseCallback(CViewport* view, EMouseEvent event, QPoint& point, int flags); - - virtual void BeginEditParams(IEditor* ie, int flags); - virtual void EndEditParams() {}; - - virtual void Display([[maybe_unused]] DisplayContext& dc) {}; - virtual bool OnKeyDown(CViewport* view, uint32 nChar, uint32 nRepCnt, uint32 nFlags); - virtual bool OnKeyUp([[maybe_unused]] CViewport* view, [[maybe_unused]] uint32 nChar, [[maybe_unused]] uint32 nRepCnt, [[maybe_unused]] uint32 nFlags) { return false; }; - - ////////////////////////////////////////////////////////////////////////// - // IObjectSelectCallback - ////////////////////////////////////////////////////////////////////////// - virtual bool OnSelectObject(CBaseObject* obj); - virtual bool CanSelectObject(CBaseObject* obj); - ////////////////////////////////////////////////////////////////////////// - - virtual bool IsNeedSpecificBehaviorForSpaceAcce(); - -protected: - virtual ~CPickObjectTool(); - // Delete itself. - void DeleteThis() { delete this; }; - -private: - bool IsRelevant(CBaseObject* obj); - - //! Object that requested pick. - IPickObjectCallback* m_callback; - - //! If target class specified, will pick only objects that belongs to that runtime class. - const QMetaObject* m_targetClass; - - bool m_bMultiPick; -}; - - -#endif // CRYINCLUDE_EDITOR_PICKOBJECTTOOL_H diff --git a/Code/Sandbox/Editor/Resource.h b/Code/Sandbox/Editor/Resource.h index a4bd2c1143..afcd0c7a6f 100644 --- a/Code/Sandbox/Editor/Resource.h +++ b/Code/Sandbox/Editor/Resource.h @@ -181,8 +181,6 @@ #define ID_TV_STOP 33568 #define ID_TV_PAUSE 33569 #define ID_ADDNODE 33570 -#define ID_EDITTOOL_LINK 33571 -#define ID_EDITTOOL_UNLINK 33572 #define ID_ADDSCENETRACK 33573 #define ID_FIND 33574 #define ID_SNAP_TO_GRID 33575 @@ -214,7 +212,6 @@ #define ID_TV_JUMPSTART 33601 #define ID_TV_PREVKEY 33602 #define ID_TV_NEXTKEY 33603 -#define ID_OBJECTMODIFY_ALIGN 33604 #define ID_PLAY_LOOP 33607 #define ID_TERRAIN 33611 #define ID_OBJECTMODIFY_ALIGNTOGRID 33619 diff --git a/Code/Sandbox/Editor/ToolbarManager.cpp b/Code/Sandbox/Editor/ToolbarManager.cpp index 4679f9cb6a..d39dabf034 100644 --- a/Code/Sandbox/Editor/ToolbarManager.cpp +++ b/Code/Sandbox/Editor/ToolbarManager.cpp @@ -585,13 +585,6 @@ AmazonToolbar ToolbarManager::GetEditModeToolbar() const t.AddAction(ID_TOOLBAR_WIDGET_UNDO, ORIGINAL_TOOLBAR_VERSION); t.AddAction(ID_TOOLBAR_WIDGET_REDO, ORIGINAL_TOOLBAR_VERSION); - if (!GetIEditor()->IsNewViewportInteractionModelEnabled()) - { - t.AddAction(ID_TOOLBAR_SEPARATOR, ORIGINAL_TOOLBAR_VERSION); - t.AddAction(ID_EDITTOOL_LINK, ORIGINAL_TOOLBAR_VERSION); - t.AddAction(ID_EDITTOOL_UNLINK, ORIGINAL_TOOLBAR_VERSION); - } - t.AddAction(ID_TOOLBAR_SEPARATOR, ORIGINAL_TOOLBAR_VERSION); if (!GetIEditor()->IsNewViewportInteractionModelEnabled()) @@ -630,7 +623,6 @@ AmazonToolbar ToolbarManager::GetObjectToolbar() const AmazonToolbar t = AmazonToolbar("Object", QObject::tr("Object Toolbar")); t.SetMainToolbar(true); t.AddAction(ID_GOTO_SELECTED, ORIGINAL_TOOLBAR_VERSION); - t.AddAction(ID_OBJECTMODIFY_ALIGN, ORIGINAL_TOOLBAR_VERSION); t.AddAction(ID_OBJECTMODIFY_ALIGNTOGRID, ORIGINAL_TOOLBAR_VERSION); t.AddAction(ID_OBJECTMODIFY_SETHEIGHT, ORIGINAL_TOOLBAR_VERSION); t.AddAction(ID_MODIFY_ALIGNOBJTOSURF, ORIGINAL_TOOLBAR_VERSION); diff --git a/Code/Sandbox/Editor/editor_lib_files.cmake b/Code/Sandbox/Editor/editor_lib_files.cmake index c91d6ce428..5696931f26 100644 --- a/Code/Sandbox/Editor/editor_lib_files.cmake +++ b/Code/Sandbox/Editor/editor_lib_files.cmake @@ -533,8 +533,6 @@ set(FILES Dialogs/PythonScriptsDialog.ui Dialogs/Generic/UserOptions.cpp Dialogs/Generic/UserOptions.h - AlignTool.cpp - AlignTool.h ObjectCloneTool.cpp ObjectCloneTool.h EditMode/SubObjectSelectionReferenceFrameCalculator.cpp @@ -545,10 +543,6 @@ set(FILES RotateTool.h EditTool.cpp EditTool.h - LinkTool.cpp - LinkTool.h - PickObjectTool.cpp - PickObjectTool.h VoxelAligningTool.cpp VoxelAligningTool.h Export/ExportManager.cpp From 8804ab8f1f6990418df4afba0a5e9b889c8f0cbe Mon Sep 17 00:00:00 2001 From: Brian Herrera Date: Tue, 20 Apr 2021 09:56:46 -0700 Subject: [PATCH 39/59] Add script to sync repo with upstream --- scripts/build/tools/sync_repo.py | 153 +++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 scripts/build/tools/sync_repo.py diff --git a/scripts/build/tools/sync_repo.py b/scripts/build/tools/sync_repo.py new file mode 100644 index 0000000000..0275cc6661 --- /dev/null +++ b/scripts/build/tools/sync_repo.py @@ -0,0 +1,153 @@ +# +# 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 argparse +import boto3 +import logging +import os +import subprocess +import sys + +from botocore.exceptions import ClientError +from urllib.parse import urlparse, urlunparse + +log = logging.getLogger(__name__) +log.setLevel(logging.INFO) + +DEFAULT_BRANCH = "main" +DEFAULT_WORKSPACE_ROOT = "." + + +class MergeError(Exception): + pass + + +class SyncRepo: + """A git repo with configured remotes to sync with GitHub. + + Used by the sync pipeline to push branches to GitHub and pull down latest from main. Changes flow from + the upstream remote down to origin. Remotes can be swapped to pull changes in the other direction. + + Attributes: + origin: URL for the origin repo. This is the target for the sync. + upstream: URL for the upstream repo. This is the source with the latest changes. + workspace_root: Path to the parent directory for the local workspace. + parameter: Name of the parameter used to store GitHub credentials. + + """ + + def __init__(self, origin, upstream, workspace_root, region=None, parameter=None): + self.workspace_root = workspace_root + self.parameter = parameter + self.region = region + + if self.parameter and self.region: + log.info(f"Adding credentials from {self.parameter} in {self.region}") + self.origin = self._add_credentials(origin) + self.upstream = self._add_credentials(upstream) + else: + self.origin = origin + self.upstream = upstream + + self.origin_name = self.origin.split("/")[-1] + self.upstream_name = self.upstream.split("/")[-1] + self.workspace = os.path.join(workspace_root, self.origin_name) + + def _add_credentials(self, url): + """Add credentials to a github repo URL from parameter store.""" + parsed_url = urlparse(url) + if parsed_url.netloc == "github.com": + try: + ssm = boto3.client("ssm", self.region) + credentials = ssm.get_parameter( + Name=self.parameter, + WithDecryption=True + )["Parameter"]["Value"] + url = urlunparse(parsed_url._replace(netloc=f"{credentials}@github.com")) + except ClientError as e: + log.error(f"Error retrieving credentials from parameter store: {e}") + return url + + def clone(self): + """Clones repo to the instance workspace. Refreshes remote configs for existing repos.""" + if not os.path.exists(self.workspace): + os.mkdir(self.workspace) + + if subprocess.run(["git", "rev-parse", "--is-inside-work-tree"], cwd=self.workspace).returncode != 0: + log.info(f"Cloning repo {self.origin} to {self.workspace}.") + subprocess.run(["git", "clone", self.origin, self.origin_name], cwd=self.workspace_root, check=True) + subprocess.run(["git", "remote", "add", "upstream", self.upstream], cwd=self.workspace) + else: + log.info("Update remote config for existing repos.") + subprocess.run(["git", "remote", "set-url", "origin", self.origin], cwd=self.workspace) + subprocess.run(["git", "remote", "set-url", "upstream", self.upstream], cwd=self.workspace) + + def sync(self, branch): + """Fetches latest from upstream and syncs changes to origin. + + Syncs are one-way and conflicts are not expected. Fast-forward merges are performed if possible. If a + fast-forward merge is not possible, a merge will not be attempted and will raise an exception. + + The checkout command will create a new branch from upstream/ if it does not exist in origin. The + remote will be remapped to origin during the push. + + Args: + branch: Name of the upstream branch to sync with origin. + + Raises: + MergeError: An error occured when attempting to merge to the target branch. + + """ + subprocess.run(["git", "fetch", "origin"], cwd=self.workspace, check=True) + subprocess.run(["git", "fetch", "upstream"], cwd=self.workspace, check=True) + subprocess.run(["git", "checkout", branch], cwd=self.workspace, check=True) + + # If the branch exists in origin, merge from upstream. New branches do not require a merge. + if subprocess.run(["git", "ls-remote", "--exit-code", "-h", "origin", branch], cwd=self.workspace).returncode == 0: + subprocess.run(["git", "reset", "--hard", "HEAD"], cwd=self.workspace, check=True) + subprocess.run(["git", "pull"], cwd=self.workspace, check=True) + + if subprocess.run(["git", "merge", "--ff-only", f"upstream/{branch}"], cwd=self.workspace).returncode != 0: + raise MergeError(f"Unable to perform ff merge to target branch: {self.origin}/{branch} Intervention required.") + + subprocess.run(["git", "push", "-u", "origin", branch], cwd=self.workspace, check=True) + + +def process_args(): + """Process arguements. + + Example: + sync_repo.py [Options] + + """ + parser = argparse.ArgumentParser() + parser.add_argument("upstream") + parser.add_argument("origin") + parser.add_argument("-b", "--branch", default=DEFAULT_BRANCH) + parser.add_argument("-w", "--workspace-root", default=DEFAULT_WORKSPACE_ROOT) + parser.add_argument("-r", "--region", default=None) + parser.add_argument("-p", "--parameter", default=None) + return parser.parse_args() + + +def main(): + args = process_args() + + repo = SyncRepo(args.origin, args.upstream, args.workspace_root, args.region, args.parameter) + repo.clone() + try: + repo.sync(args.branch) + except MergeError as e: + log.error(e) + + +if __name__ == "__main__": + sys.exit(main()) From 83324762b58438c954a75851d3a277511e2c5628 Mon Sep 17 00:00:00 2001 From: luissemp Date: Tue, 20 Apr 2021 10:40:53 -0700 Subject: [PATCH 40/59] Brought over SC's command line fixes and add_node example script --- .../Code/Editor/View/Widgets/CommandLine.cpp | 215 ++++++++++++++---- .../Code/Editor/View/Widgets/CommandLine.h | 106 ++++++++- .../Code/Editor/View/Windows/MainWindow.cpp | 2 +- .../Code/Editor/View/Windows/mainwindow.ui | 2 +- .../AutoGen/ScriptCanvasGrammar_Header.jinja | 2 +- 5 files changed, 275 insertions(+), 52 deletions(-) diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.cpp b/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.cpp index 6fa930ba34..19390de956 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.cpp @@ -79,15 +79,19 @@ namespace // Create the nodes in a horizontal list at the top of the canvas. - AZ::Vector2 pos(20.0f, -100.0f); + AZ::Vector2 pos(20.0f, 20.0f); for (const auto& index : ui->commandList->selectionModel()->selectedIndexes()) { - if (index.column() != CommandListDataModel::ColumnIndex::Command) + if (index.column() != CommandListDataModel::ColumnIndex::CommandIndex) { continue; } AZ::Uuid type = dataModel->data(index, CommandListDataModel::CustomRole::Types).value(); + if (type.IsNull()) + { + continue; + } [[maybe_unused]] const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(type); AZ_Assert(classData, "Failed to find ClassData for ID: %s", type.ToString().data()); @@ -115,6 +119,8 @@ namespace ScriptCanvasEditor ///////////////////////////////////////////////////////////////////////////////////////////// CommandListDataModel::CommandListDataModel([[maybe_unused]] QWidget* parent /*= nullptr*/) { + ScriptCanvasCommandLineRequestBus::Handler::BusConnect(); + AZ::SerializeContext* serializeContext = nullptr; AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); @@ -138,12 +144,62 @@ namespace ScriptCanvasEditor if (add) { - m_nodeTypes.push_back(classData->m_typeId); + Entry entry; + entry.m_type = classData->m_typeId; + m_entries.emplace_back(entry); } } return true; } - ); + ); + + ScriptCanvasCommandLineRequestBus::Broadcast(&ScriptCanvasCommandLineRequests::AddCommand, "add_node", "Adds the specified node to the graph", + [serializeContext](const AZStd::vector& nodes) + { + AZ::Uuid nodeTypeToAdd = AZ::Uuid::CreateNull(); + if (nodes.size() > 0) + { + const AZStd::string& nodeName = *(nodes.begin()); + + serializeContext->EnumerateDerived( + [&nodeName, &nodeTypeToAdd](const AZ::SerializeContext::ClassData* classData, [[maybe_unused]] const AZ::Uuid& classUuid) -> bool + { + if (classData && classData->m_editData) + { + if (nodeName.compare(classData->m_name) == 0) + { + nodeTypeToAdd = classData->m_typeId; + } + } + return true; + } + ); + + if (!nodeTypeToAdd.IsNull()) + { + ScriptCanvas::ScriptCanvasId scriptCanvasId; + ScriptCanvasEditor::GeneralRequestBus::BroadcastResult(scriptCanvasId, &ScriptCanvasEditor::GeneralRequests::GetActiveScriptCanvasId); + + AZ::EntityId graphCanvasGraphId; + ScriptCanvasEditor::GeneralRequestBus::BroadcastResult(graphCanvasGraphId, &ScriptCanvasEditor::GeneralRequests::GetActiveGraphCanvasGraphId); + + if (scriptCanvasId.IsValid() && graphCanvasGraphId.IsValid()) + { + ScriptCanvasEditor::Nodes::StyleConfiguration styleConfiguration; + + AZ::Vector2 pos(100.0f, 20.0f); + NodeIdPair nodePair = ScriptCanvasEditor::Nodes::CreateNode(nodeTypeToAdd, scriptCanvasId, styleConfiguration); + GraphCanvas::SceneRequestBus::Event(graphCanvasGraphId, &GraphCanvas::SceneRequests::AddNode, nodePair.m_graphCanvasId, pos, false); + } + } + } + } + ); + } + + CommandListDataModel::~CommandListDataModel() + { + ScriptCanvasCommandLineRequestBus::Handler::BusDisconnect(); } QModelIndex CommandListDataModel::index(int row, int column, const QModelIndex& parent /*= QModelIndex()*/) const @@ -162,7 +218,7 @@ namespace ScriptCanvasEditor int CommandListDataModel::rowCount([[maybe_unused]] const QModelIndex& parent /*= QModelIndex()*/) const { - return static_cast(m_nodeTypes.size()); + return static_cast(m_entries.size()); } int CommandListDataModel::columnCount([[maybe_unused]] const QModelIndex& parent /*= QModelIndex()*/) const @@ -190,19 +246,40 @@ namespace ScriptCanvasEditor } } - AZ::Uuid nodeType = m_nodeTypes[index.row()]; - const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(nodeType); - if (index.column() == ColumnIndex::Command) + AZ::Uuid nodeType = m_entries[index.row()].m_type; + if (nodeType.IsNull()) { - return QVariant(QString(classData->m_name)); + if (index.column() == ColumnIndex::CommandIndex) + { + return QVariant(QString(m_entries[index.row()].m_command.c_str())); + } + if (index.column() == ColumnIndex::DescriptionIndex) + { + AZStd::string command = m_entries[index.row()].m_command; + const auto& entry = m_commands.find(command); + if (entry != m_commands.end()) + { + return QVariant(QString(entry->second->GetDescription().c_str())); + } + } } - if (index.column() == ColumnIndex::Description) + else { - return QVariant(QString(classData->m_editData ? classData->m_editData->m_description : tr("No description provided."))); - } - if (index.column() == ColumnIndex::Trail) - { - return QVariant(QString("")); + if (const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(nodeType)) + { + if (index.column() == ColumnIndex::CommandIndex) + { + return QVariant(QString(classData->m_name)); + } + if (index.column() == ColumnIndex::DescriptionIndex) + { + return QVariant(QString(classData->m_editData ? classData->m_editData->m_description : tr("No description provided."))); + } + if (index.column() == ColumnIndex::TrailIndex) + { + return QVariant(QString("")); + } + } } } @@ -210,25 +287,42 @@ namespace ScriptCanvasEditor { case CustomRole::Types: { - AZ::Uuid nodeType = m_nodeTypes[index.row()]; + AZ::Uuid nodeType = m_entries[index.row()].m_type; return QVariant::fromValue(nodeType); } break; case CustomRole::Node: { - AZ::Uuid nodeType = m_nodeTypes[index.row()]; - const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(nodeType); - if (index.column() == ColumnIndex::Command) + AZ::Uuid nodeType = m_entries[index.row()].m_type; + if (nodeType.IsNull()) { - return QVariant(QString(classData->m_name)); + return QVariant(QString(m_entries[index.row()].m_command.c_str())); } - if (index.column() == ColumnIndex::Description) + else { - return QVariant(QString(classData->m_editData ? classData->m_editData->m_description : tr("No description provided."))); + if (const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(nodeType)) + { + if (index.column() == ColumnIndex::CommandIndex) + { + return QVariant(QString(classData->m_name)); + } + if (index.column() == ColumnIndex::DescriptionIndex) + { + return QVariant(QString(classData->m_editData ? classData->m_editData->m_description : tr("No description provided."))); + } + if (index.column() == ColumnIndex::TrailIndex) + { + return QVariant(QString("")); + } + } } - if (index.column() == ColumnIndex::Trail) + } + break; + case CustomRole::Commands: + { + if (index.column() == ColumnIndex::CommandIndex) { - return QVariant(QString("")); + return QVariant(QString(m_entries[index.row()].m_command.c_str())); } } break; @@ -250,21 +344,31 @@ namespace ScriptCanvasEditor AZ::SerializeContext* serializeContext = nullptr; AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationRequests::GetSerializeContext); - for (const auto& entry : m_nodeTypes) + for (const auto& entry : m_entries) { - const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(entry); - if (classData) + if (!entry.m_type.IsNull()) { - QString name = QString(classData->m_name); - if (name.startsWith(input.c_str(), Qt::CaseSensitivity::CaseInsensitive)) + if (const AZ::SerializeContext::ClassData* classData = serializeContext->FindClassData(entry.m_type)) { - return true; + QString name = QString(classData->m_name); + if (name.startsWith(input.c_str(), Qt::CaseSensitivity::CaseInsensitive)) + { + return true; + } } } + else + { + QString commandName = entry.m_command.c_str(); + return (commandName.startsWith(input.c_str(), Qt::CaseSensitivity::CaseInsensitive)); + } } + return false; } + ScriptCanvasEditor::Widget::CommandRegistry CommandListDataModel::m_commands; + // CommandLineEdit ///////////////////////////////////////////////////////////////////////////////////////////// @@ -335,8 +439,25 @@ namespace ScriptCanvasEditor case Qt::Key_Return: { // Invoke the command - // TODO: trigger invoke - // CommandRequestBus::Broadcast(&CommandRequest::Invoke, text().toStdString().c_str()); + AZStd::string commandText = text().toStdString().c_str(); + AZStd::vector tokens; + AZ::StringFunc::Tokenize(commandText, tokens, " "); + if (tokens.size() == 1) + { + ScriptCanvasCommandLineRequestBus::Broadcast(&ScriptCanvasCommandLineRequests::Invoke, tokens.begin()->c_str()); + } + else if (tokens.size() > 1) + { + AZStd::string command = *(tokens.begin()); + AZStd::vector args; + for (auto it = tokens.begin() + 1; it != tokens.end(); ++it) + { + args.push_back(*it); + } + ScriptCanvasCommandLineRequestBus::Broadcast(&ScriptCanvasCommandLineRequests::InvokeWithArguments, command.c_str(), args); + } + + ResetState(); qobject_cast(parent())->hide(); } @@ -376,20 +497,29 @@ namespace ScriptCanvasEditor // CommandListDataProxyModel ///////////////////////////////////////////////////////////////////////////////////////////// - CommandListDataProxyModel::CommandListDataProxyModel(QObject* parent /*= nullptr*/) + CommandListDataProxyModel::CommandListDataProxyModel(CommandListDataModel* commandListData, QObject* parent /*= nullptr*/) : QSortFilterProxyModel(parent) { - QStringList commands; + setSourceModel(commandListData); + + QStringList commandList; - CommandListDataModel* commandListData = new CommandListDataModel(); for (int i = 0; i < commandListData->rowCount(); ++i) { - QModelIndex index = commandListData->index(i, CommandListDataModel::ColumnIndex::Command); + QModelIndex index = commandListData->index(i, CommandListDataModel::ColumnIndex::CommandIndex); QString command = commandListData->data(index, CommandListDataModel::CustomRole::Node).toString(); - commands.push_back(command); + commandList.push_back(command); } - m_completer = new QCompleter(commands); + ScriptCanvasCommandLineRequests::CommandNameList commands; + ScriptCanvasCommandLineRequestBus::BroadcastResult(commands, &ScriptCanvasCommandLineRequests::GetCommands); + for (auto& command : commands) + { + QString commandName = command.first.c_str(); + commandList.push_back(commandName); + } + + m_completer = new QCompleter(commandList); m_completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion); m_completer->setCaseSensitivity(Qt::CaseInsensitive); } @@ -421,7 +551,7 @@ namespace ScriptCanvasEditor } } - QModelIndex index = dataModel->index(sourceRow, CommandListDataModel::ColumnIndex::Command); + QModelIndex index = dataModel->index(sourceRow, CommandListDataModel::ColumnIndex::CommandIndex); QString sourceStr = dataModel->data(index).toString(); if (sourceRow > 0 && sourceStr.startsWith(m_input.c_str(), Qt::CaseSensitivity::CaseInsensitive)) @@ -450,8 +580,7 @@ namespace ScriptCanvasEditor ui->setupUi(this); CommandListDataModel* commandListDataModel = new CommandListDataModel(); - CommandListDataProxyModel* commandListDataProxyModel = new CommandListDataProxyModel(); - commandListDataProxyModel->setSourceModel(commandListDataModel); + CommandListDataProxyModel* commandListDataProxyModel = new CommandListDataProxyModel(commandListDataModel); ui->commandList->setModel(commandListDataProxyModel); @@ -460,8 +589,8 @@ namespace ScriptCanvasEditor connect(ui->commandText, &CommandLineEdit::onKeyReleased, this, &CommandLine::onEditKeyReleaseEvent); connect(ui->commandList, &CommandLineList::onKeyReleased, this, &CommandLine::onListKeyReleaseEvent); - ui->commandList->setColumnWidth(CommandListDataModel::ColumnIndex::Command, 250); - ui->commandList->setColumnWidth(CommandListDataModel::ColumnIndex::Description, 1000); + ui->commandList->setColumnWidth(CommandListDataModel::ColumnIndex::CommandIndex, 250); + ui->commandList->setColumnWidth(CommandListDataModel::ColumnIndex::DescriptionIndex, 1000); } void CommandLine::onTextChanged(const QString& text) diff --git a/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.h b/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.h index ab9b115bde..28e3ce4671 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.h +++ b/Gems/ScriptCanvas/Code/Editor/View/Widgets/CommandLine.h @@ -25,6 +25,7 @@ #include #include #include +#include #endif namespace Ui @@ -36,10 +37,49 @@ namespace ScriptCanvasEditor { namespace Widget { + class Command + { + public: + using Functor = AZStd::function)>; + + Command(const AZStd::string& name, const AZStd::string& description, Functor functor) + : m_name(name) + , m_description(description) + , m_functor(functor) + {} + + void operator()(const AZStd::vector& args) + { + m_functor(args); + } + + const AZStd::string& GetName() const { return m_name; } + const AZStd::string& GetDescription() const { return m_description; } + + private: + AZStd::string m_name; + AZStd::string m_description; + Functor m_functor; + }; + + using CommandRegistry = AZStd::unordered_map>; + + struct ScriptCanvasCommandLineRequests : public AZ::EBusTraits + { + virtual void AddCommand(const AZStd::string commandName, const AZStd::string description, Command::Functor) = 0; + virtual void Invoke(const char* commandName) = 0; + virtual void InvokeWithArguments(const char* commandName, const AZStd::vector&) = 0; + + using CommandNameList = AZStd::list>; + virtual CommandNameList GetCommands() = 0; + }; + using ScriptCanvasCommandLineRequestBus = AZ::EBus; + // TODO #lsempe: this deserves its own file // CommandListDataModel ///////////////////////////////////////////////////////////////////////////////////////////// class CommandListDataModel : public QAbstractTableModel + , ScriptCanvasCommandLineRequestBus::Handler { Q_OBJECT @@ -49,9 +89,9 @@ namespace ScriptCanvasEditor enum ColumnIndex { - Command, - Description, - Trail, + CommandIndex, + DescriptionIndex, + TrailIndex, Count }; @@ -65,6 +105,8 @@ namespace ScriptCanvasEditor }; CommandListDataModel(QWidget* parent = nullptr); + ~CommandListDataModel() override; + QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; QModelIndex parent(const QModelIndex &child) const override; int rowCount(const QModelIndex &parent = QModelIndex()) const override; @@ -75,10 +117,62 @@ namespace ScriptCanvasEditor bool HasMatches(const AZStd::string& input); + struct Entry + { + AZ::Uuid m_type; + AZStd::string m_command; + + Entry() + { + m_type = AZ::Uuid::CreateNull(); + } + }; + protected: - AZStd::vector m_nodeTypes; + AZStd::vector m_entries; + static CommandRegistry m_commands; + + void AddCommand(const AZStd::string commandName, const AZStd::string description, Command::Functor f) override + { + if (m_commands.find(commandName) == m_commands.end()) + { + m_commands[commandName] = AZStd::make_unique(commandName, description, f); + Entry entry; + entry.m_command = commandName; + entry.m_type = AZ::Uuid::CreateNull(); + m_entries.emplace_back(entry); + } + } + + void Invoke(const char* commandName) override + { + auto command = m_commands.find(commandName); + if (command != m_commands.end()) + { + command->second->operator()({}); + } + } + + void InvokeWithArguments(const char* commandName, const AZStd::vector& args) override + { + auto command = m_commands.find(commandName); + if (command != m_commands.end()) + { + command->second->operator()(args); + } + } + + ScriptCanvasCommandLineRequests::CommandNameList GetCommands() override + { + ScriptCanvasCommandLineRequests::CommandNameList commands; + for (auto& command : m_commands) + { + commands.push_back(AZStd::make_pair(command.second->GetName(), command.second->GetDescription())); + } + return commands; + } }; class CommandListDataProxyModel : public QSortFilterProxyModel @@ -88,7 +182,7 @@ namespace ScriptCanvasEditor public: AZ_CLASS_ALLOCATOR(CommandListDataProxyModel, AZ::SystemAllocator, 0); - CommandListDataProxyModel(QObject* parent = nullptr); + CommandListDataProxyModel(CommandListDataModel* commandListData, QObject* parent = nullptr); bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; @@ -168,4 +262,4 @@ namespace ScriptCanvasEditor AZStd::unique_ptr ui; }; } -} \ No newline at end of file +} diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp index 3f226e62e0..85abf68332 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp @@ -595,7 +595,7 @@ namespace ScriptCanvasEditor m_commandLine = new Widget::CommandLine(this); m_commandLine->setBaseSize(QSize(size().width(), m_commandLine->size().height())); m_commandLine->setObjectName("CommandLine"); - m_commandLine->hide(); +// m_commandLine->hide(); m_layout->addWidget(m_commandLine); m_layout->addWidget(m_emptyCanvas); diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/mainwindow.ui b/Gems/ScriptCanvas/Code/Editor/View/Windows/mainwindow.ui index 40ba00bb31..3b3043a4a0 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/mainwindow.ui +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/mainwindow.ui @@ -244,7 +244,7 @@ false - false + true diff --git a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja index b7394ef212..185cf82c86 100644 --- a/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja +++ b/Gems/ScriptCanvas/Code/Include/ScriptCanvas/AutoGen/ScriptCanvasGrammar_Header.jinja @@ -66,7 +66,7 @@ namespace {{attribute_Namespace}} {% set deprecationUuid = Class.attrib['DeprecationUUID'] %} -// The following will be injected directly into the source header file for which AzCodeGenerator is being run. +// The following will be injected directly into the source header file for which AZ AutoGen is being run. // You must #include the generated header into the source header #define SCRIPTCANVAS_NODE_{{ className }} \ public: \ From dc5b4ee1dd665c08a47e36cc622678bd9529fd90 Mon Sep 17 00:00:00 2001 From: shiranj Date: Tue, 20 Apr 2021 10:50:41 -0700 Subject: [PATCH 41/59] Add Android package in packaging pipeline --- .../build/Platform/Android/build_config.json | 10 ++++++++ .../package/Platform/Android/package_env.json | 25 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 scripts/build/package/Platform/Android/package_env.json diff --git a/scripts/build/Platform/Android/build_config.json b/scripts/build/Platform/Android/build_config.json index 0fa4d9ade3..097ff59e4e 100644 --- a/scripts/build/Platform/Android/build_config.json +++ b/scripts/build/Platform/Android/build_config.json @@ -40,6 +40,16 @@ "CMAKE_BUILD_ARGS":"-j!NUMBER_OF_PROCESSORS!" } }, + "android_packaging_all": { + "TAGS": [ + "packaging" + ], + "COMMAND": "python_windows.cmd", + "PARAMETERS": { + "SCRIPT_PATH": "scripts/build/package/package.py", + "SCRIPT_PARAMETERS": "--platform Android --type all" + } + }, "profile": { "TAGS":[ "weekly-build-metrics", diff --git a/scripts/build/package/Platform/Android/package_env.json b/scripts/build/package/Platform/Android/package_env.json new file mode 100644 index 0000000000..017937413a --- /dev/null +++ b/scripts/build/package/Platform/Android/package_env.json @@ -0,0 +1,25 @@ +{ + "local_env": { + "S3_PREFIX": "${BRANCH_NAME}/Android" + }, + "types":{ + "all":{ + "PACKAGE_TARGETS":[ + { + "FILE_LIST": "all.json", + "FILE_LIST_TYPE": "All", + "PACKAGE_NAME": "${PACKAGE_NAME_PATTERN}-android-all-${BUILD_NUMBER}.zip" + } + ], + "BOOTSTRAP_CFG_GAME_FOLDER":"AutomatedTesting", + "SKIP_BUILD": 0, + "BUILD_TARGETS":[ + { + "BUILD_CONFIG_FILENAME": "build_config.json", + "PLATFORM": "Android", + "TYPE": "profile" + } + ] + } + } +} From 841d16055adb3ce2bf4081f0799c4020d0671340 Mon Sep 17 00:00:00 2001 From: shiranj Date: Tue, 20 Apr 2021 11:30:26 -0700 Subject: [PATCH 42/59] Add lambda function to delete branch ebs volumes on github branch deletion event --- ...uto_delete_ebs.py => delete_branch_ebs.py} | 27 ++++-- .../build/lambda/delete_github_branch_ebs.py | 89 +++++++++++++++++++ 2 files changed, 110 insertions(+), 6 deletions(-) rename scripts/build/lambda/{auto_delete_ebs.py => delete_branch_ebs.py} (77%) mode change 100755 => 100644 create mode 100644 scripts/build/lambda/delete_github_branch_ebs.py diff --git a/scripts/build/lambda/auto_delete_ebs.py b/scripts/build/lambda/delete_branch_ebs.py old mode 100755 new mode 100644 similarity index 77% rename from scripts/build/lambda/auto_delete_ebs.py rename to scripts/build/lambda/delete_branch_ebs.py index a004c2a575..b9d52b0c61 --- a/scripts/build/lambda/auto_delete_ebs.py +++ b/scripts/build/lambda/delete_branch_ebs.py @@ -14,20 +14,25 @@ import time import logging TIMEOUT = 300 +log = logging.getLogger(__name__) +log.setLevel(logging.INFO) -def lambda_handler(event, context): - log = logging.getLogger(__name__) - log.setLevel(logging.INFO) - branch_name = event['detail']['referenceName'] +def delete_ebs_volumes(repository_name, branch_name): + success = 0 + failure = 0 ec2_client = boto3.resource('ec2') response = ec2_client.volumes.filter(Filters=[ + { + 'Name': 'tag:RepositoryName', + 'Values': [repository_name] + }, { 'Name': 'tag:BranchName', 'Values': [branch_name] } ]) - log.info(f'Deleting EBS volumes for remote-branch {branch_name}.') + log.info(f'Deleting EBS volumes for remote-branch {branch_name} in repository {repository_name}.') for volume in response: if volume.attachments: ec2_instance_id = volume.attachments[0]['InstanceId'] @@ -49,9 +54,19 @@ def lambda_handler(event, context): try: log.info(f'Deleting volume {volume.volume_id}') volume.delete() + success += 1 except Exception as e: log.error(f'Failed to delete volume {volume.volume_id}.') log.error(e) + failure += 1 + return success, failure -lambda_handler(event, context) \ No newline at end of file +def lambda_handler(event, context): + repository_name = event['repository_name'] + branch_name = event['branch_name'] + (success, failure) = delete_ebs_volumes(repository_name, branch_name) + return { + 'success': success, + 'failure': failure + } diff --git a/scripts/build/lambda/delete_github_branch_ebs.py b/scripts/build/lambda/delete_github_branch_ebs.py new file mode 100644 index 0000000000..0797c55366 --- /dev/null +++ b/scripts/build/lambda/delete_github_branch_ebs.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. +# + +import os +import boto3 +import time +import logging +import json +import hmac +import hashlib + +TIMEOUT = 300 +log = logging.getLogger(__name__) +log.setLevel(logging.INFO) + + +def delete_volumes(repository_name, branch_name): + client = boto3.client('lambda') + payload = { + 'repository_name': repository_name, + 'branch_name': branch_name + } + response = client.invoke( + FunctionName='delete_branch_ebs', + Payload=json.dumps(payload), + ) + status = response['Payload'].read() + response_json = json.loads(status.decode()) + return response_json['success'], response_json['failure'] + + +def verify_signature(headers, payload): + # GITHUB_WEBHOOK_SECRET is encrypted with AWS KMS key + secret = os.environ.get('GITHUB_WEBHOOK_SECRET', '') + # Using X-Hub-Signature-256 is recommended by https://docs.github.com/en/developers/webhooks-and-events/securing-your-webhooks + signature = headers.get('X-Hub-Signature-256', '') + computed_hash = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest() + computed_signature = f'sha256={computed_hash}' + return computed_signature, hmac.compare_digest(computed_signature.encode(), signature.encode()) + + +def create_response(status, success=0, failure=0, repository_name=None, branch_name=None): + response = { + 'success': { + 'statusCode': 200, + 'body': f'[SUCCESS] All {success + failure} EBS volumes are deleted for branch {branch_name} in repository {repository_name}', + 'isBase64Encoded': 'false' + }, + 'failure': { + 'statusCode': 500, + 'body': f'[FAILURE] Failed to delete {failure}/{success + failure} EBS volumes for branch {branch_name} in repository {repository_name}', + 'isBase64Encoded': 'false' + }, + 'unauthorized': { + 'statusCode': 401, + 'body': 'Unauthorized', + 'isBase64Encoded': 'false' + } + } + return response[status] + + +def lambda_handler(event, context): + # This function is triggered by AWS API Gateway, + if event.get('resource', '') == '/delete-github-branch-ebs': + headers = event['headers'] + payload = event['body'] + if headers['X-GitHub-Event'] == 'delete': + # Validate github webhook request here since request body cannot be passed to API Gateway lambda authorizer. + if verify_signature(headers, payload): + # Convert payload from string type to json to get repository name and branch name + payload = json.loads(payload) + repository_name = payload['repository']['full_name'] + branch_name = payload['ref'] + (success, failure) = delete_volumes(repository_name, branch_name) + if not failure: + return create_response('success', success, failure, repository_name, branch_name) + else: + return create_response('failure', success, failure, repository_name, branch_name) + else: + return create_response('unauthorized') From d9fe89ba56a1c7d344538951909f086386ba5947 Mon Sep 17 00:00:00 2001 From: mbalfour Date: Tue, 20 Apr 2021 13:37:10 -0500 Subject: [PATCH 43/59] Addressed feedback - made string& into a string_view. --- Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp | 2 +- Code/Framework/AzCore/AzCore/Component/ComponentApplication.h | 2 +- .../Framework/AzCore/AzCore/Component/ComponentApplicationBus.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp index a3986f72dd..c55f565615 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.cpp @@ -1063,7 +1063,7 @@ namespace AZ //========================================================================= // SetEntityName //========================================================================= - bool ComponentApplication::SetEntityName(const EntityId& id, const AZStd::string& name) + bool ComponentApplication::SetEntityName(const EntityId& id, const AZStd::string_view name) { Entity* entity = FindEntity(id); if (entity) diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h index a66409eaf3..3ebcf39d95 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplication.h @@ -209,7 +209,7 @@ namespace AZ bool DeleteEntity(const EntityId& id) override; Entity* FindEntity(const EntityId& id) override; AZStd::string GetEntityName(const EntityId& id) override; - bool SetEntityName(const EntityId& id, const AZStd::string& name) override; + bool SetEntityName(const EntityId& id, const AZStd::string_view name) override; void EnumerateEntities(const ComponentApplicationRequests::EntityCallback& callback) override; ComponentApplication* GetApplication() override { return this; } /// Returns the serialize context that has been registered with the app, if there is one. diff --git a/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h b/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h index a3602c303e..3582e6ebb8 100644 --- a/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h +++ b/Code/Framework/AzCore/AzCore/Component/ComponentApplicationBus.h @@ -136,7 +136,7 @@ namespace AZ //! Entity names are not enforced to be unique. //! @param entityId A reference to the entity whose name you want to change. //! @return True if the name was changed successfully, false if it wasn't. - virtual bool SetEntityName([[maybe_unused]] const EntityId& id, [[maybe_unused]] const AZStd::string& name) { return false; } + virtual bool SetEntityName([[maybe_unused]] const EntityId& id, [[maybe_unused]] const AZStd::string_view name) { return false; } //! The type that AZ::ComponentApplicationRequests::EnumerateEntities uses to //! pass entity callbacks to the application for enumeration. From 33b485767f584bef006049ed3beb792325190830 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Tue, 20 Apr 2021 11:49:59 -0700 Subject: [PATCH 44/59] Address reviewer feedback, make FFont initialization state an atomic state machine --- .../AtomLyIntegration/AtomFont/FFont.h | 9 +++++-- .../AtomFont/Code/Source/FFont.cpp | 24 ++++++++----------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h b/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h index 91fc0834ec..8e60cc2055 100644 --- a/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h +++ b/Gems/AtomLyIntegration/AtomFont/Code/Include/AtomLyIntegration/AtomFont/FFont.h @@ -301,8 +301,13 @@ namespace AZ AtomFont* m_atomFont = nullptr; bool m_fontTexDirty = false; - bool m_fontInitialized = false; - AZStd::atomic_bool m_fontInitializing = false; + enum class InitializationState : AZ::u8 + { + Uninitialized, + Initializing, + Initialized + }; + AZStd::atomic m_fontInitializationState = InitializationState::Uninitialized; FontEffects m_effects; diff --git a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp index edbf148940..20879876e7 100644 --- a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp +++ b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp @@ -101,19 +101,16 @@ AZ::RPI::WindowContextSharedPtr AZ::FFont::GetDefaultWindowContext() const bool AZ::FFont::InitFont() { - if (m_fontInitialized) + auto initializationState = InitializationState::Uninitialized; + // Do an atomic transition to Initializing if we're in the Uninitialized state. + // Otherwise, check the current state. + // If we're Initialized, there's no more work to be done, return true to indicate we're good to go. + // If we're Initializing (on another thread), return false to let the consumer know it's not safe for us to be used yet. + if (!m_fontInitializationState.compare_exchange_strong(initializationState, InitializationState::Initializing)) { - return true; + return initializationState == InitializationState::Initialized; } - // If we're being initialized in another thread, abort. - if (m_fontInitializing) - { - return false; - } - - m_fontInitializing = true; - // Create and initialize DynamicDrawContext for font draw AZ::RPI::Ptr dynamicDraw = m_atomFont->GetOrCreateDynamicDrawForScene(GetDefaultViewportContext()->GetRenderScene().get()); @@ -136,8 +133,7 @@ bool AZ::FFont::InitFont() m_vertexCount = 0; m_indexCount = 0; - m_fontInitialized = true; - m_fontInitializing = false; + m_fontInitializationState = InitializationState::Initialized; return true; } @@ -1522,7 +1518,7 @@ bool AZ::FFont::UpdateTexture() { using namespace AZ; - if (!m_fontInitialized || !m_fontImage) + if (m_fontInitializationState != InitializationState::Initialized || !m_fontImage) { return false; } @@ -1590,7 +1586,7 @@ void AZ::FFont::Prepare(const char* str, bool updateTexture, const AtomFont::Gly const bool rerenderGlyphs = m_sizeBehavior == SizeBehavior::Rerender; const AtomFont::GlyphSize usedGlyphSize = rerenderGlyphs ? glyphSize : AtomFont::defaultGlyphSize; bool texUpdateNeeded = m_fontTexture->PreCacheString(str, nullptr, m_sizeRatio, usedGlyphSize, m_fontHintParams) == 1 || m_fontTexDirty; - if (m_fontInitialized && updateTexture && texUpdateNeeded && m_fontImage) + if (m_fontInitializationState == InitializationState::Initialized && updateTexture && texUpdateNeeded && m_fontImage) { UpdateTexture(); m_fontTexDirty = false; From f53c1e808411085f37ed373a674d98984fb87e68 Mon Sep 17 00:00:00 2001 From: amzn-sj Date: Tue, 20 Apr 2021 12:16:40 -0700 Subject: [PATCH 45/59] 3rd Party static libraries need to be public dependencies to work from installed engine. --- Code/Framework/AzCore/CMakeLists.txt | 7 +++---- Code/Framework/AzFramework/CMakeLists.txt | 4 ++-- Code/Framework/GridMate/CMakeLists.txt | 3 ++- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Code/Framework/AzCore/CMakeLists.txt b/Code/Framework/AzCore/CMakeLists.txt index c77205a760..db2c79f0c9 100644 --- a/Code/Framework/AzCore/CMakeLists.txt +++ b/Code/Framework/AzCore/CMakeLists.txt @@ -40,14 +40,13 @@ ly_add_target( ${common_dir} ${AZ_CORE_RADTELEMETRY_INCLUDE_DIRECTORIES} BUILD_DEPENDENCIES - PRIVATE - 3rdParty::zlib - 3rdParty::zstd - 3rdParty::cityhash PUBLIC 3rdParty::Lua 3rdParty::RapidJSON 3rdParty::RapidXML + 3rdParty::zlib + 3rdParty::zstd + 3rdParty::cityhash ${AZ_CORE_RADTELEMETRY_BUILD_DEPENDENCIES} ) ly_add_source_properties( diff --git a/Code/Framework/AzFramework/CMakeLists.txt b/Code/Framework/AzFramework/CMakeLists.txt index f62f205efd..50e1fcb5a4 100644 --- a/Code/Framework/AzFramework/CMakeLists.txt +++ b/Code/Framework/AzFramework/CMakeLists.txt @@ -33,12 +33,12 @@ ly_add_target( BUILD_DEPENDENCIES PRIVATE AZ::AzCore + PUBLIC + AZ::GridMate 3rdParty::md5 3rdParty::zlib 3rdParty::zstd 3rdParty::lz4 - PUBLIC - AZ::GridMate ) if(LY_ENABLE_STATISTICAL_PROFILING) diff --git a/Code/Framework/GridMate/CMakeLists.txt b/Code/Framework/GridMate/CMakeLists.txt index f326bda179..20ce582307 100644 --- a/Code/Framework/GridMate/CMakeLists.txt +++ b/Code/Framework/GridMate/CMakeLists.txt @@ -28,8 +28,9 @@ ly_add_target( ${pal_dir} BUILD_DEPENDENCIES PRIVATE - 3rdParty::OpenSSL AZ::AzCore + PUBLIC + 3rdParty::OpenSSL ) ly_add_source_properties( From 990a40199b5567429f1d88d62edf2c6b34876987 Mon Sep 17 00:00:00 2001 From: Terry Michaels <81711813+tjmichaels@users.noreply.github.com> Date: Tue, 20 Apr 2021 15:05:45 -0500 Subject: [PATCH 46/59] Removed the last remaining connections to the Clang 3rd Party (#159) --- .../3rdParty/Platform/Linux/Clang_linux.cmake | 43 ---------------- .../Platform/Linux/cmake_linux_files.cmake | 1 - cmake/3rdParty/Platform/Mac/Clang_mac.cmake | 49 ------------------- .../Platform/Mac/cmake_mac_files.cmake | 1 - .../Platform/Windows/Clang_windows.cmake | 44 ----------------- .../Windows/cmake_windows_files.cmake | 1 - 6 files changed, 139 deletions(-) delete mode 100644 cmake/3rdParty/Platform/Linux/Clang_linux.cmake delete mode 100644 cmake/3rdParty/Platform/Mac/Clang_mac.cmake delete mode 100644 cmake/3rdParty/Platform/Windows/Clang_windows.cmake diff --git a/cmake/3rdParty/Platform/Linux/Clang_linux.cmake b/cmake/3rdParty/Platform/Linux/Clang_linux.cmake deleted file mode 100644 index 1cf269d1a2..0000000000 --- a/cmake/3rdParty/Platform/Linux/Clang_linux.cmake +++ /dev/null @@ -1,43 +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(CLANG_PLATFORM_LIB_PATH ${BASE_PATH}/linux_x64/release/lib) - -set(CLANG_INCLUDE_DIRECTORIES - llvm/include - linux_x64/release/include -) - -set(CLANG_LIBS - ${CLANG_PLATFORM_LIB_PATH}/libclangFrontend.a - ${CLANG_PLATFORM_LIB_PATH}/libclangSerialization.a - ${CLANG_PLATFORM_LIB_PATH}/libclangDriver.a - ${CLANG_PLATFORM_LIB_PATH}/libclangTooling.a - ${CLANG_PLATFORM_LIB_PATH}/libclangParse.a - ${CLANG_PLATFORM_LIB_PATH}/libclangSema.a - ${CLANG_PLATFORM_LIB_PATH}/libclangAnalysis.a - ${CLANG_PLATFORM_LIB_PATH}/libclangRewriteFrontend.a - ${CLANG_PLATFORM_LIB_PATH}/libclangRewrite.a - ${CLANG_PLATFORM_LIB_PATH}/libclangEdit.a - ${CLANG_PLATFORM_LIB_PATH}/libclangAST.a - ${CLANG_PLATFORM_LIB_PATH}/libclangLex.a - ${CLANG_PLATFORM_LIB_PATH}/libclangBasic.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMCore.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMBinaryFormat.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMDebugInfoDWARF.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMMC.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMOption.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMBitReader.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMMCParser.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMProfileData.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMTarget.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMSupport.a -) diff --git a/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake b/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake index 2b1ba4d0e5..83d862ee78 100644 --- a/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake +++ b/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake @@ -13,7 +13,6 @@ set(FILES AWSGameLiftServerSDK_linux.cmake BuiltInPackages_linux.cmake civetweb_linux.cmake - Clang_linux.cmake dyad_linux.cmake FbxSdk_linux.cmake OpenSSL_linux.cmake diff --git a/cmake/3rdParty/Platform/Mac/Clang_mac.cmake b/cmake/3rdParty/Platform/Mac/Clang_mac.cmake deleted file mode 100644 index 3d7fc64465..0000000000 --- a/cmake/3rdParty/Platform/Mac/Clang_mac.cmake +++ /dev/null @@ -1,49 +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(CLANG_PLATFORM_LIB_PATH ${BASE_PATH}/xcode/$,debug,release>/lib) - -set(CLANG_INCLUDE_DIRECTORIES - llvm/include - xcode/$,debug,release>/include -) - -set(CLANG_LIBS - ${CLANG_PLATFORM_LIB_PATH}/libclangFrontend.a - ${CLANG_PLATFORM_LIB_PATH}/libclangSerialization.a - ${CLANG_PLATFORM_LIB_PATH}/libclangDriver.a - ${CLANG_PLATFORM_LIB_PATH}/libclangTooling.a - ${CLANG_PLATFORM_LIB_PATH}/libclangParse.a - ${CLANG_PLATFORM_LIB_PATH}/libclangSema.a - ${CLANG_PLATFORM_LIB_PATH}/libclangAnalysis.a - ${CLANG_PLATFORM_LIB_PATH}/libclangRewriteFrontend.a - ${CLANG_PLATFORM_LIB_PATH}/libclangRewrite.a - ${CLANG_PLATFORM_LIB_PATH}/libclangEdit.a - ${CLANG_PLATFORM_LIB_PATH}/libclangAST.a - ${CLANG_PLATFORM_LIB_PATH}/libclangASTMatchers.a - ${CLANG_PLATFORM_LIB_PATH}/libclangLex.a - ${CLANG_PLATFORM_LIB_PATH}/libclangBasic.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMCore.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMBinaryFormat.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMDebugInfoDWARF.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMMC.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMOption.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMBitReader.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMMCParser.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMProfileData.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMTarget.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMSupport.a - - ${CLANG_PLATFORM_LIB_PATH}/libLLVMDemangle.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMSupport.a - ${CLANG_PLATFORM_LIB_PATH}/libLLVMCore.a - -) diff --git a/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake b/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake index 0e3cc53262..9d0166913a 100644 --- a/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake +++ b/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake @@ -12,7 +12,6 @@ set(FILES BuiltInPackages_mac.cmake civetweb_mac.cmake - Clang_mac.cmake DirectXShaderCompiler_mac.cmake FbxSdk_mac.cmake OpenGLInterface_mac.cmake diff --git a/cmake/3rdParty/Platform/Windows/Clang_windows.cmake b/cmake/3rdParty/Platform/Windows/Clang_windows.cmake deleted file mode 100644 index 69a6b77119..0000000000 --- a/cmake/3rdParty/Platform/Windows/Clang_windows.cmake +++ /dev/null @@ -1,44 +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(CLANG_PLATFORM_LIB_PATH ${BASE_PATH}/vs2015/$,debug,release>/lib) - -set(CLANG_INCLUDE_DIRECTORIES - llvm/include - vs2015/$,debug,release>/include -) - -set(CLANG_LIBS - ${CLANG_PLATFORM_LIB_PATH}/clangFrontend.lib - ${CLANG_PLATFORM_LIB_PATH}/clangSerialization.lib - ${CLANG_PLATFORM_LIB_PATH}/clangDriver.lib - ${CLANG_PLATFORM_LIB_PATH}/clangTooling.lib - ${CLANG_PLATFORM_LIB_PATH}/clangParse.lib - ${CLANG_PLATFORM_LIB_PATH}/clangSema.lib - ${CLANG_PLATFORM_LIB_PATH}/clangAnalysis.lib - ${CLANG_PLATFORM_LIB_PATH}/clangRewriteFrontend.lib - ${CLANG_PLATFORM_LIB_PATH}/clangRewrite.lib - ${CLANG_PLATFORM_LIB_PATH}/clangEdit.lib - ${CLANG_PLATFORM_LIB_PATH}/clangAST.lib - ${CLANG_PLATFORM_LIB_PATH}/clangLex.lib - ${CLANG_PLATFORM_LIB_PATH}/clangBasic.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMBinaryFormat.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMDebugInfoDWARF.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMMC.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMOption.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMBitReader.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMMCParser.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMProfileData.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMTarget.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMCore.lib - ${CLANG_PLATFORM_LIB_PATH}/LLVMSupport.lib - Version.lib -) diff --git a/cmake/3rdParty/Platform/Windows/cmake_windows_files.cmake b/cmake/3rdParty/Platform/Windows/cmake_windows_files.cmake index 2c7890fcc4..fe4aa6bc82 100644 --- a/cmake/3rdParty/Platform/Windows/cmake_windows_files.cmake +++ b/cmake/3rdParty/Platform/Windows/cmake_windows_files.cmake @@ -12,7 +12,6 @@ set(FILES AWSGameLiftServerSDK_windows.cmake BuiltInPackages_windows.cmake - Clang_windows.cmake Crashpad_windows.cmake DirectXShaderCompiler_windows.cmake dyad_windows.cmake From 2f9102f10a678bf6fa798b79a869610fd94f5b12 Mon Sep 17 00:00:00 2001 From: sharmajs-amzn <82233357+sharmajs-amzn@users.noreply.github.com> Date: Tue, 20 Apr 2021 13:10:25 -0700 Subject: [PATCH 47/59] AssImp asserts on Linux processing (#118) (#138) LYN-2645} Helios - AssImp asserts on Linux processing * Linux builds have asserts off, to match Windows and Mac. * Secondary UV channels support names are available now Jira: https://jira.agscollab.com/browse/LYN-2645 --- cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake | 2 +- cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake | 2 +- cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake index 9057b5ba1b..e42e8e40ea 100644 --- a/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake +++ b/cmake/3rdParty/Platform/Linux/BuiltInPackages_linux.cmake @@ -15,7 +15,7 @@ ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev3-multiplatform TARG ly_associate_package(PACKAGE_NAME ilmbase-2.3.0-rev4-multiplatform TARGETS ilmbase PACKAGE_HASH 97547fdf1fbc4d81b8ccf382261f8c25514ed3b3c4f8fd493f0a4fa873bba348) ly_associate_package(PACKAGE_NAME hdf5-1.0.11-rev2-multiplatform TARGETS hdf5 PACKAGE_HASH 11d5e04df8a93f8c52a5684a4cacbf0d9003056360983ce34f8d7b601082c6bd) ly_associate_package(PACKAGE_NAME alembic-1.7.11-rev3-multiplatform TARGETS alembic PACKAGE_HASH ba7a7d4943dd752f5a662374f6c48b93493df1d8e2c5f6a8d101f3b50700dd25) -ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev6-multiplatform TARGETS assimplib PACKAGE_HASH 47f1a6d05d101def036c030484c4a6e19d745aacd57037174715c7afe2b19b4c) +ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev7-multiplatform TARGETS assimplib PACKAGE_HASH def855c89d8210db3040f1cb6ec837141ab9b8e74c158eae7c03d50160fcf30b) ly_associate_package(PACKAGE_NAME squish-ccr-20150601-rev3-multiplatform TARGETS squish-ccr PACKAGE_HASH c878c6c0c705e78403c397d03f5aa7bc87e5978298710e14d09c9daf951a83b3) ly_associate_package(PACKAGE_NAME ASTCEncoder-2017_11_14-rev2-multiplatform TARGETS ASTCEncoder PACKAGE_HASH c240ffc12083ee39a5ce9dc241de44d116e513e1e3e4cc1d05305e7aa3bdc326) ly_associate_package(PACKAGE_NAME md5-2.0-multiplatform TARGETS md5 PACKAGE_HASH 29e52ad22c78051551f78a40c2709594f0378762ae03b417adca3f4b700affdf) diff --git a/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake b/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake index ef66259e22..d6d017d1d1 100644 --- a/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake +++ b/cmake/3rdParty/Platform/Mac/BuiltInPackages_mac.cmake @@ -15,7 +15,7 @@ ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev3-multiplatform ly_associate_package(PACKAGE_NAME ilmbase-2.3.0-rev4-multiplatform TARGETS ilmbase PACKAGE_HASH 97547fdf1fbc4d81b8ccf382261f8c25514ed3b3c4f8fd493f0a4fa873bba348) ly_associate_package(PACKAGE_NAME hdf5-1.0.11-rev2-multiplatform TARGETS hdf5 PACKAGE_HASH 11d5e04df8a93f8c52a5684a4cacbf0d9003056360983ce34f8d7b601082c6bd) ly_associate_package(PACKAGE_NAME alembic-1.7.11-rev3-multiplatform TARGETS alembic PACKAGE_HASH ba7a7d4943dd752f5a662374f6c48b93493df1d8e2c5f6a8d101f3b50700dd25) -ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev6-multiplatform TARGETS assimplib PACKAGE_HASH 47f1a6d05d101def036c030484c4a6e19d745aacd57037174715c7afe2b19b4c) +ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev7-multiplatform TARGETS assimplib PACKAGE_HASH def855c89d8210db3040f1cb6ec837141ab9b8e74c158eae7c03d50160fcf30b) ly_associate_package(PACKAGE_NAME squish-ccr-20150601-rev3-multiplatform TARGETS squish-ccr PACKAGE_HASH c878c6c0c705e78403c397d03f5aa7bc87e5978298710e14d09c9daf951a83b3) ly_associate_package(PACKAGE_NAME ASTCEncoder-2017_11_14-rev2-multiplatform TARGETS ASTCEncoder PACKAGE_HASH c240ffc12083ee39a5ce9dc241de44d116e513e1e3e4cc1d05305e7aa3bdc326) ly_associate_package(PACKAGE_NAME md5-2.0-multiplatform TARGETS md5 PACKAGE_HASH 29e52ad22c78051551f78a40c2709594f0378762ae03b417adca3f4b700affdf) diff --git a/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake b/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake index 58050652c0..09dd543e5c 100644 --- a/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake +++ b/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake @@ -15,7 +15,7 @@ ly_associate_package(PACKAGE_NAME Lua-5.3.5-rev3-multiplatform ly_associate_package(PACKAGE_NAME ilmbase-2.3.0-rev4-multiplatform TARGETS ilmbase PACKAGE_HASH 97547fdf1fbc4d81b8ccf382261f8c25514ed3b3c4f8fd493f0a4fa873bba348) ly_associate_package(PACKAGE_NAME hdf5-1.0.11-rev2-multiplatform TARGETS hdf5 PACKAGE_HASH 11d5e04df8a93f8c52a5684a4cacbf0d9003056360983ce34f8d7b601082c6bd) ly_associate_package(PACKAGE_NAME alembic-1.7.11-rev3-multiplatform TARGETS alembic PACKAGE_HASH ba7a7d4943dd752f5a662374f6c48b93493df1d8e2c5f6a8d101f3b50700dd25) -ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev6-multiplatform TARGETS assimplib PACKAGE_HASH 47f1a6d05d101def036c030484c4a6e19d745aacd57037174715c7afe2b19b4c) +ly_associate_package(PACKAGE_NAME assimp-5.0.1-rev7-multiplatform TARGETS assimplib PACKAGE_HASH def855c89d8210db3040f1cb6ec837141ab9b8e74c158eae7c03d50160fcf30b) ly_associate_package(PACKAGE_NAME squish-ccr-20150601-rev3-multiplatform TARGETS squish-ccr PACKAGE_HASH c878c6c0c705e78403c397d03f5aa7bc87e5978298710e14d09c9daf951a83b3) ly_associate_package(PACKAGE_NAME ASTCEncoder-2017_11_14-rev2-multiplatform TARGETS ASTCEncoder PACKAGE_HASH c240ffc12083ee39a5ce9dc241de44d116e513e1e3e4cc1d05305e7aa3bdc326) ly_associate_package(PACKAGE_NAME md5-2.0-multiplatform TARGETS md5 PACKAGE_HASH 29e52ad22c78051551f78a40c2709594f0378762ae03b417adca3f4b700affdf) From 78892c8d7eb566b43c7a4364b01163e45eb304e6 Mon Sep 17 00:00:00 2001 From: srikappa Date: Tue, 20 Apr 2021 14:30:56 -0700 Subject: [PATCH 48/59] Improved a couple of comments --- .../AzToolsFramework/Prefab/PrefabPublicHandler.cpp | 3 ++- .../AzToolsFramework/Prefab/PrefabPublicHandler.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 69ccf707d7..46bd924f30 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -92,7 +92,8 @@ namespace AzToolsFramework AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root.")); } - // When you move instances from another template, you have to remove the links and propagate changes to target template. + // When we create a prefab with other prefab instances, we have to remove the existing links between the source and + // target templates of the other instances. for (auto& nestedInstance : instances) { PrefabUndoHelpers::RemoveLink( diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h index d92f33b634..19985bbf51 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.h @@ -72,7 +72,7 @@ namespace AzToolsFramework /** * Creates a link between the templates of an instance and its parent. * - * \param topLevelEntities The list of entities that are immediate children of container entity of instance. + * \param topLevelEntities The list of entities that are immediate children to the container entity of the instance. * \param sourceInstance The instance that corresponds to the source template of the link. * \param targetInstance The id of the target template. * \param undoBatch The undo batch to set as parent for this create link action. From 1865ae71ca6a6a4854639a376137de285210c31f Mon Sep 17 00:00:00 2001 From: shiranj Date: Tue, 20 Apr 2021 14:31:43 -0700 Subject: [PATCH 49/59] Retrieve Github secret from AWS Secret Manager --- scripts/build/lambda/delete_branch_ebs.py | 6 ++++ .../build/lambda/delete_github_branch_ebs.py | 35 ++++++++++++++----- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/scripts/build/lambda/delete_branch_ebs.py b/scripts/build/lambda/delete_branch_ebs.py index b9d52b0c61..8b8100f04e 100644 --- a/scripts/build/lambda/delete_branch_ebs.py +++ b/scripts/build/lambda/delete_branch_ebs.py @@ -19,6 +19,12 @@ log.setLevel(logging.INFO) def delete_ebs_volumes(repository_name, branch_name): + """ + Delete all EBS volumes that are tagged with repository_name and branch_name + :param repository_name: Full repository name. + :param branch_name: Branch name that is deleted. + :return: Number of EBS volumes that are deleted successfully, number of EBS volumes that are not deleted. + """ success = 0 failure = 0 ec2_client = boto3.resource('ec2') diff --git a/scripts/build/lambda/delete_github_branch_ebs.py b/scripts/build/lambda/delete_github_branch_ebs.py index 0797c55366..8163cee762 100644 --- a/scripts/build/lambda/delete_github_branch_ebs.py +++ b/scripts/build/lambda/delete_github_branch_ebs.py @@ -11,18 +11,18 @@ import os import boto3 -import time -import logging import json import hmac import hashlib -TIMEOUT = 300 -log = logging.getLogger(__name__) -log.setLevel(logging.INFO) - def delete_volumes(repository_name, branch_name): + """ + Trigger lambda function that deletes EBS volumes. + :param repository_name: Full repository name. + :param branch_name: Branch name that is deleted. + :return: Number of EBS volumes that are deleted successfully, number of EBS volumes that are not deleted. + """ client = boto3.client('lambda') payload = { 'repository_name': repository_name, @@ -38,16 +38,33 @@ def delete_volumes(repository_name, branch_name): def verify_signature(headers, payload): - # GITHUB_WEBHOOK_SECRET is encrypted with AWS KMS key - secret = os.environ.get('GITHUB_WEBHOOK_SECRET', '') + """ + Validate POST request headers and payload to only receive the expected GitHub webhook requests. + :param headers: Headers from POST request. + :param payload: Payload from POST request. + :return: True if request is verified, otherwise, return False. + """ + # secret is stored in AWS Secret Manager + secret_name = os.environ.get('GITHUB_WEBHOOK_SECRET_NAME', '') + client = boto3.client(service_name='secretsmanager') + response = client.get_secret_value(SecretId=secret_name) + secret = response['SecretString'] # Using X-Hub-Signature-256 is recommended by https://docs.github.com/en/developers/webhooks-and-events/securing-your-webhooks signature = headers.get('X-Hub-Signature-256', '') computed_hash = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest() computed_signature = f'sha256={computed_hash}' - return computed_signature, hmac.compare_digest(computed_signature.encode(), signature.encode()) + return hmac.compare_digest(computed_signature.encode(), signature.encode()) def create_response(status, success=0, failure=0, repository_name=None, branch_name=None): + """ + :param status: Status of EBS deletion request. + :param success: Number of EBS volumes that are deleted successfully. + :param failure: Number of EBS volumes that are not deleted. + :param repository_name: Full repository name. + :param branch_name: Branch name that is deleted. + :return: JSON response. + """ response = { 'success': { 'statusCode': 200, From 65a1840e1dc9ff283da27d2ed08e3411b3e20d89 Mon Sep 17 00:00:00 2001 From: luissemp Date: Tue, 20 Apr 2021 14:38:03 -0700 Subject: [PATCH 50/59] Removed commented out line --- Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp index 85abf68332..ee4d6d9371 100644 --- a/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp +++ b/Gems/ScriptCanvas/Code/Editor/View/Windows/MainWindow.cpp @@ -595,7 +595,6 @@ namespace ScriptCanvasEditor m_commandLine = new Widget::CommandLine(this); m_commandLine->setBaseSize(QSize(size().width(), m_commandLine->size().height())); m_commandLine->setObjectName("CommandLine"); -// m_commandLine->hide(); m_layout->addWidget(m_commandLine); m_layout->addWidget(m_emptyCanvas); From 3c5c540f09596d7ab51bd8fa31abfe78c11c827c Mon Sep 17 00:00:00 2001 From: shiranj Date: Tue, 20 Apr 2021 14:54:39 -0700 Subject: [PATCH 51/59] Fix python path for Android packaging job --- scripts/build/Platform/Android/build_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/build/Platform/Android/build_config.json b/scripts/build/Platform/Android/build_config.json index 097ff59e4e..07dc363296 100644 --- a/scripts/build/Platform/Android/build_config.json +++ b/scripts/build/Platform/Android/build_config.json @@ -44,7 +44,7 @@ "TAGS": [ "packaging" ], - "COMMAND": "python_windows.cmd", + "COMMAND": "../Windows/python_windows.cmd", "PARAMETERS": { "SCRIPT_PATH": "scripts/build/package/package.py", "SCRIPT_PARAMETERS": "--platform Android --type all" From 7e2cbda2d390c758d402cd1bf68451f48275cfa8 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Tue, 20 Apr 2021 12:05:52 -0700 Subject: [PATCH 52/59] Fix viewport display on new level creation --- Code/Sandbox/Editor/EditorViewportWidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Code/Sandbox/Editor/EditorViewportWidget.cpp b/Code/Sandbox/Editor/EditorViewportWidget.cpp index 91c70b720f..5998d0349b 100644 --- a/Code/Sandbox/Editor/EditorViewportWidget.cpp +++ b/Code/Sandbox/Editor/EditorViewportWidget.cpp @@ -727,6 +727,8 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event) // meters above the terrain (default terrain height is 32) viewTM.SetTranslation(Vec3(sx * 0.5f, sy * 0.5f, 34.0f)); SetViewTM(viewTM); + + UpdateScene(); } break; From 5ea22407872f291d5de262b2ee32818eef1260c6 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Tue, 20 Apr 2021 12:31:10 -0700 Subject: [PATCH 53/59] Fix editor controls working in game mode -Implements ResetInputChannels for ViewportController API and SetEnabled for ViewportControllerList -Disables all viewport controllers while in game mode --- .../Viewport/MultiViewportController.h | 2 + .../Viewport/MultiViewportController.inl | 9 ++++ .../Viewport/ViewportControllerList.cpp | 53 +++++++++++++++++++ .../Viewport/ViewportControllerList.h | 10 ++++ Code/Sandbox/Editor/EditorViewportWidget.cpp | 10 ++++ .../Editor/LegacyViewportCameraController.cpp | 15 +++++- .../Editor/LegacyViewportCameraController.h | 2 + .../Editor/ViewportManipulatorController.cpp | 6 +++ .../Editor/ViewportManipulatorController.h | 1 + 9 files changed, 107 insertions(+), 1 deletion(-) diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.h b/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.h index 54aa4394cc..2649655f50 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.h +++ b/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.h @@ -37,6 +37,7 @@ namespace AzFramework // ViewportControllerInterface ... bool HandleInputChannelEvent(const ViewportControllerInputEvent& event) override; + void ResetInputChannels() override; void UpdateViewport(const ViewportControllerUpdateEvent& event) override; void RegisterViewportContext(ViewportId viewport) override; void UnregisterViewportContext(ViewportId viewport) override; @@ -58,6 +59,7 @@ namespace AzFramework ViewportId GetViewportId() const { return m_viewportId; } virtual bool HandleInputChannelEvent([[maybe_unused]]const ViewportControllerInputEvent& event) { return false; } + virtual void ResetInputChannels() {} virtual void UpdateViewport([[maybe_unused]]const ViewportControllerUpdateEvent& event) {} private: diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.inl b/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.inl index 011c30b520..cc59418dac 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.inl +++ b/Code/Framework/AzFramework/AzFramework/Viewport/MultiViewportController.inl @@ -30,6 +30,15 @@ namespace AzFramework return instanceIt->second->HandleInputChannelEvent(event); } + template + void MultiViewportController::ResetInputChannels() + { + for (auto instanceIt = m_instances.begin(); instanceIt != m_instances.end(); ++instanceIt) + { + instanceIt->second->ResetInputChannels(); + } + } + template void MultiViewportController::UpdateViewport(const ViewportControllerUpdateEvent& event) { diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp index 39cdb1440e..7f2059c1c4 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp @@ -49,6 +49,11 @@ namespace AzFramework bool ViewportControllerList::HandleInputChannelEvent(const AzFramework::ViewportControllerInputEvent& event) { + if (!IsEnabled()) + { + return false; + } + // If our event priority is "custom", we should dispatch at all priority levels in order using AzFramework::ViewportControllerPriority; if (event.m_priority == AzFramework::ViewportControllerPriority::DispatchToAllPriorities) @@ -76,6 +81,31 @@ namespace AzFramework } } + void ViewportControllerList::ResetInputChannels() + { + // We don't need to send this while we're disabled, we're guaranteed to call ResetInputChannels after being re-enabled. + if (!IsEnabled()) + { + return; + } + + for (const auto priority : { + ViewportControllerPriority::Highest, + ViewportControllerPriority::High, + ViewportControllerPriority::Normal, + ViewportControllerPriority::Low, + ViewportControllerPriority::Lowest }) + { + if (auto priorityListIt = m_controllers.find(priority); priorityListIt != m_controllers.end()) + { + for (const auto& controller : priorityListIt->second) + { + controller->ResetInputChannels(); + } + } + } + } + bool ViewportControllerList::DispatchInputChannelEvent(const AzFramework::ViewportControllerInputEvent& event) { if (auto priorityListIt = m_controllers.find(event.m_priority); priorityListIt != m_controllers.end()) @@ -106,6 +136,11 @@ namespace AzFramework void ViewportControllerList::UpdateViewport(const AzFramework::ViewportControllerUpdateEvent& event) { + if (!IsEnabled()) + { + return; + } + // If our event priority is "custom", we should dispatch at all priority levels in reverse order // Reverse order lets high priority controllers get the last say in viewport update operations using AzFramework::ViewportControllerPriority; @@ -174,4 +209,22 @@ namespace AzFramework } } } + + bool ViewportControllerList::IsEnabled() const + { + return m_enabled; + } + + void ViewportControllerList::SetEnabled(bool enabled) + { + if (m_enabled != enabled) + { + m_enabled = enabled; + // If we've been re-enabled, reset our input channels as they may have missed state changes. + if (m_enabled) + { + ResetInputChannels(); + } + } + } } //namespace AzFramework diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h index 294a784dff..2d071498df 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h @@ -37,6 +37,9 @@ namespace AzFramework //! either a controller returns true to consume the event in OnInputChannelEvent or the controller list is exhausted. //! InputChannelEvents are sent to controllers in priority order (from the lowest priority value to the highest). bool HandleInputChannelEvent(const AzFramework::ViewportControllerInputEvent& event) override; + //! Dispatches a ResetInputChannels call to all controllers registered to this list. + //! Calls to controllers are made in priority order (from the lowest priority value to the highest). + void ResetInputChannels() override; //! Dispatches an update tick to all controllers registered to this list. //! This occurs in *reverse* priority order (i.e. from the highest priority value to the lowest) so that //! controllers with the highest registration priority may override the transforms of the controllers with the @@ -50,6 +53,12 @@ namespace AzFramework //! All ViewportControllerLists have a priority of Custom to ensure //! that they receive events at all priorities from any parent controllers. AzFramework::ViewportControllerPriority GetPriority() const { return ViewportControllerPriority::DispatchToAllPriorities; } + //! Returns true if this controller list is enabled, i.e. + //! it is accepting and forwarding input and update events to its children. + bool IsEnabled() const; + //! Set this controller list's enabled state. + //! If a controller list is disabled, it will ignore all input and update events rather than dispatching them to its children. + void SetEnabled(bool enabled); private: void SortControllers(); @@ -58,5 +67,6 @@ namespace AzFramework AZStd::unordered_map> m_controllers; AZStd::unordered_set m_viewports; + bool m_enabled = true; }; } //namespace AzFramework diff --git a/Code/Sandbox/Editor/EditorViewportWidget.cpp b/Code/Sandbox/Editor/EditorViewportWidget.cpp index 5998d0349b..977850bc58 100644 --- a/Code/Sandbox/Editor/EditorViewportWidget.cpp +++ b/Code/Sandbox/Editor/EditorViewportWidget.cpp @@ -679,6 +679,11 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event) } SetCurrentCursor(STD_CURSOR_GAME); } + + if (m_renderViewport) + { + m_renderViewport->GetControllerList()->SetEnabled(false); + } } break; @@ -697,6 +702,11 @@ void EditorViewportWidget::OnEditorNotifyEvent(EEditorNotifyEvent event) RestoreViewportAfterGameMode(); } + + if (m_renderViewport) + { + m_renderViewport->GetControllerList()->SetEnabled(true); + } break; case eNotify_OnCloseScene: diff --git a/Code/Sandbox/Editor/LegacyViewportCameraController.cpp b/Code/Sandbox/Editor/LegacyViewportCameraController.cpp index 7a33dff377..518b17f898 100644 --- a/Code/Sandbox/Editor/LegacyViewportCameraController.cpp +++ b/Code/Sandbox/Editor/LegacyViewportCameraController.cpp @@ -408,6 +408,13 @@ bool LegacyViewportCameraControllerInstance::HandleInputChannelEvent(const AzFra } } + UpdateCursorCapture(shouldCaptureCursor); + + return shouldConsumeEvent; +} + +void LegacyViewportCameraControllerInstance::UpdateCursorCapture(bool shouldCaptureCursor) +{ if (m_capturingCursor != shouldCaptureCursor) { if (shouldCaptureCursor) @@ -427,8 +434,14 @@ bool LegacyViewportCameraControllerInstance::HandleInputChannelEvent(const AzFra m_capturingCursor = shouldCaptureCursor; } +} - return shouldConsumeEvent; +void LegacyViewportCameraControllerInstance::ResetInputChannels() +{ + m_modifiers = 0; + m_pressedKeys.clear(); + UpdateCursorCapture(false); + m_inRotateMode = m_inMoveMode = m_inOrbitMode = m_inZoomMode = false; } void LegacyViewportCameraControllerInstance::UpdateViewport(const AzFramework::ViewportControllerUpdateEvent& event) diff --git a/Code/Sandbox/Editor/LegacyViewportCameraController.h b/Code/Sandbox/Editor/LegacyViewportCameraController.h index b4a36f44a5..129a2409da 100644 --- a/Code/Sandbox/Editor/LegacyViewportCameraController.h +++ b/Code/Sandbox/Editor/LegacyViewportCameraController.h @@ -35,6 +35,7 @@ namespace SandboxEditor explicit LegacyViewportCameraControllerInstance(AzFramework::ViewportId viewport); bool HandleInputChannelEvent(const AzFramework::ViewportControllerInputEvent& event) override; + void ResetInputChannels() override; void UpdateViewport(const AzFramework::ViewportControllerUpdateEvent& event) override; private: @@ -53,6 +54,7 @@ namespace SandboxEditor bool HandleMouseMove(const AzFramework::ScreenPoint& currentMousePos, const AzFramework::ScreenPoint& previousMousePos); bool HandleMouseWheel(float zDelta); bool IsKeyDown(Qt::Key key) const; + void UpdateCursorCapture(bool shouldCaptureCursor); bool m_inRotateMode = false; bool m_inMoveMode = false; diff --git a/Code/Sandbox/Editor/ViewportManipulatorController.cpp b/Code/Sandbox/Editor/ViewportManipulatorController.cpp index 8ce2ea1cd9..fc376b27d0 100644 --- a/Code/Sandbox/Editor/ViewportManipulatorController.cpp +++ b/Code/Sandbox/Editor/ViewportManipulatorController.cpp @@ -202,6 +202,12 @@ bool ViewportManipulatorControllerInstance::HandleInputChannelEvent(const AzFram return interactionHandled; } +void ViewportManipulatorControllerInstance::ResetInputChannels() +{ + m_pendingDoubleClicks.clear(); + m_state = AzToolsFramework::ViewportInteraction::MouseInteraction(); +} + void ViewportManipulatorControllerInstance::UpdateViewport(const AzFramework::ViewportControllerUpdateEvent& event) { m_curTime = event.m_time; diff --git a/Code/Sandbox/Editor/ViewportManipulatorController.h b/Code/Sandbox/Editor/ViewportManipulatorController.h index a4f373c48f..03a823fa64 100644 --- a/Code/Sandbox/Editor/ViewportManipulatorController.h +++ b/Code/Sandbox/Editor/ViewportManipulatorController.h @@ -26,6 +26,7 @@ namespace SandboxEditor explicit ViewportManipulatorControllerInstance(AzFramework::ViewportId viewport); bool HandleInputChannelEvent(const AzFramework::ViewportControllerInputEvent& event) override; + void ResetInputChannels() override; void UpdateViewport(const AzFramework::ViewportControllerUpdateEvent& event) override; private: From ba5e0170a2eea3fea6a1f89ce9c3c67f9d3b0d2b Mon Sep 17 00:00:00 2001 From: nvsickle Date: Tue, 20 Apr 2021 14:36:11 -0700 Subject: [PATCH 54/59] Fix ImGui rendering in-Editor -Ensure ViewportContext rendertick notifications always fire -Use viewport size to determine ImGui resolution, ensure OnViewportSizeChanged is always up-to-date for the default viewport context --- .../Include/Atom/RPI.Public/ViewportContext.h | 2 ++ .../Code/Source/RPI.Public/ViewportContext.cpp | 8 ++++++-- .../Source/RPI.Public/ViewportContextManager.cpp | 11 +++++++++-- .../Code/Source/ImguiAtomSystemComponent.cpp | 16 ++++++++++++++++ .../Code/Source/ImguiAtomSystemComponent.h | 1 + 5 files changed, 34 insertions(+), 4 deletions(-) diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContext.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContext.h index 24922fbe98..d3d3155715 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContext.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/ViewportContext.h @@ -77,6 +77,8 @@ namespace AZ void OnRenderPipelineAdded(RenderPipelinePtr pipeline) override; //! Ensures our default view remains set when our scene's render pipelines are modified. void OnRenderPipelineRemoved(RenderPipeline* pipeline) override; + //! OnBeginPrepareRender is forwarded to our RenderTick notification to allow subscribers to do rendering. + void OnBeginPrepareRender() override; //WindowNotificationBus interface //! Used to fire a notification when our window resizes diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContext.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContext.cpp index b67ead9896..c9386b1fc0 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContext.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContext.cpp @@ -104,12 +104,16 @@ namespace AZ // add the current pipeline to next render tick if it's not already added. if (m_currentPipeline && m_currentPipeline->GetRenderMode() != RenderPipeline::RenderMode::RenderOnce) { - ViewportContextNotificationBus::Event(GetName(), &ViewportContextNotificationBus::Events::OnRenderTick); - ViewportContextIdNotificationBus::Event(GetId(), &ViewportContextIdNotificationBus::Events::OnRenderTick); m_currentPipeline->AddToRenderTickOnce(); } } + void ViewportContext::OnBeginPrepareRender() + { + ViewportContextNotificationBus::Event(GetName(), &ViewportContextNotificationBus::Events::OnRenderTick); + ViewportContextIdNotificationBus::Event(GetId(), &ViewportContextIdNotificationBus::Events::OnRenderTick); + } + AZ::Name ViewportContext::GetName() const { return m_name; diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp index 8d578352d8..2b525df4d4 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/ViewportContextManager.cpp @@ -57,9 +57,14 @@ namespace AZ return; } viewportData.context = viewportContext; - auto onSizeChanged = [contextName, viewportId](AzFramework::WindowSize size) + auto onSizeChanged = [this, viewportId](AzFramework::WindowSize size) { - ViewportContextNotificationBus::Event(contextName, &ViewportContextNotificationBus::Events::OnViewportSizeChanged, size); + // Ensure we emit OnViewportSizeChanged with the correct name. + auto viewportContext = this->GetViewportContextById(viewportId); + if (viewportContext) + { + ViewportContextNotificationBus::Event(viewportContext->GetName(), &ViewportContextNotificationBus::Events::OnViewportSizeChanged, size); + } ViewportContextIdNotificationBus::Event(viewportId, &ViewportContextIdNotificationBus::Events::OnViewportSizeChanged, size); }; viewportContext->m_name = contextName; @@ -174,6 +179,8 @@ namespace AZ GetOrCreateViewStackForContext(newContextName); viewportContext->m_name = newContextName; UpdateViewForContext(newContextName); + // Ensure anyone listening on per-name viewport size updates gets notified. + ViewportContextNotificationBus::Event(newContextName, &ViewportContextNotificationBus::Events::OnViewportSizeChanged, viewportContext->GetViewportSize()); } void ViewportContextManager::EnumerateViewportContexts(AZStd::function visitorFunction) diff --git a/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.cpp b/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.cpp index 3f25228406..2ae62023c7 100644 --- a/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.cpp +++ b/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.cpp @@ -58,6 +58,15 @@ namespace AZ auto atomViewportRequests = AZ::Interface::Get(); const AZ::Name contextName = atomViewportRequests->GetDefaultViewportContextName(); AZ::RPI::ViewportContextNotificationBus::Handler::BusConnect(contextName); + +#if defined(IMGUI_ENABLED) + ImGui::ImGuiManagerListenerBus::Broadcast(&ImGui::IImGuiManagerListener::SetResolutionMode, ImGui::ImGuiResolutionMode::LockToResolution); + auto defaultViewportContext = atomViewportRequests->GetDefaultViewportContext(); + if (defaultViewportContext) + { + OnViewportSizeChanged(defaultViewportContext->GetViewportSize()); + } +#endif } void ImguiAtomSystemComponent::Deactivate() @@ -75,6 +84,13 @@ namespace AZ { #if defined(IMGUI_ENABLED) ImGui::ImGuiManagerListenerBus::Broadcast(&ImGui::IImGuiManagerListener::Render); +#endif + } + + void ImguiAtomSystemComponent::OnViewportSizeChanged(AzFramework::WindowSize size) + { +#if defined(IMGUI_ENABLED) + ImGui::ImGuiManagerListenerBus::Broadcast(&ImGui::IImGuiManagerListener::SetImGuiRenderResolution, ImVec2{aznumeric_cast(size.m_width), aznumeric_cast(size.m_height)}); #endif } } diff --git a/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.h b/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.h index a554ab0339..d3bdb7c4fc 100644 --- a/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.h +++ b/Gems/AtomLyIntegration/ImguiAtom/Code/Source/ImguiAtomSystemComponent.h @@ -54,6 +54,7 @@ namespace AZ // ViewportContextNotificationBus overrides... void OnRenderTick() override; + void OnViewportSizeChanged(AzFramework::WindowSize size) override; DebugConsole m_debugConsole; }; From 4f9d7e37822849d916d9df57dff4eaee2887ef37 Mon Sep 17 00:00:00 2001 From: nvsickle Date: Tue, 20 Apr 2021 15:12:39 -0700 Subject: [PATCH 55/59] Simplify ResetInputChannels --- .../Viewport/ViewportControllerList.cpp | 14 +++----------- .../AzFramework/Viewport/ViewportControllerList.h | 2 +- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp index 7f2059c1c4..1dd608319a 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.cpp @@ -89,19 +89,11 @@ namespace AzFramework return; } - for (const auto priority : { - ViewportControllerPriority::Highest, - ViewportControllerPriority::High, - ViewportControllerPriority::Normal, - ViewportControllerPriority::Low, - ViewportControllerPriority::Lowest }) + for (const auto& controllerList : m_controllers) { - if (auto priorityListIt = m_controllers.find(priority); priorityListIt != m_controllers.end()) + for (const auto& controller : controllerList.second) { - for (const auto& controller : priorityListIt->second) - { - controller->ResetInputChannels(); - } + controller->ResetInputChannels(); } } } diff --git a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h index 2d071498df..9da1d65dff 100644 --- a/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h +++ b/Code/Framework/AzFramework/AzFramework/Viewport/ViewportControllerList.h @@ -38,7 +38,7 @@ namespace AzFramework //! InputChannelEvents are sent to controllers in priority order (from the lowest priority value to the highest). bool HandleInputChannelEvent(const AzFramework::ViewportControllerInputEvent& event) override; //! Dispatches a ResetInputChannels call to all controllers registered to this list. - //! Calls to controllers are made in priority order (from the lowest priority value to the highest). + //! Calls to controllers are made in an undefined order. void ResetInputChannels() override; //! Dispatches an update tick to all controllers registered to this list. //! This occurs in *reverse* priority order (i.e. from the highest priority value to the lowest) so that From 62bc7a66bb82dfdc390dec81cdfaf2e3d72711cf Mon Sep 17 00:00:00 2001 From: AMZN-daimini <82231674+AMZN-daimini@users.noreply.github.com> Date: Tue, 20 Apr 2021 16:22:34 -0700 Subject: [PATCH 56/59] Remove the Level Inspector from Prefab mode and move behavior to Entity Inspector. (#149) * Remove Level Inspector from Prefab mode, and integrate the same behavior in the Entity Inspector * Show prefab name in level entity row of the Outliner. Allow Ui Handlers to prevent renaming. * Separate setting the prefab's template path and the container entity name. * Disable reparenting to root level * Disable the ability to rename the level entity. * Fixes as per Ram's review --- .../PrefabEditorEntityOwnershipService.cpp | 2 + .../Prefab/Instance/Instance.cpp | 8 ++- .../Prefab/Instance/Instance.h | 1 + .../Prefab/PrefabPublicHandler.cpp | 4 +- .../Prefab/PrefabSystemComponent.cpp | 1 + .../EditorEntityUiHandlerBase.cpp | 5 ++ .../EditorEntityUiHandlerBase.h | 2 + .../UI/Outliner/EntityOutlinerListModel.cpp | 44 +++++++------- .../UI/Outliner/EntityOutlinerWidget.cpp | 29 ++++++++-- .../UI/Outliner/EntityOutlinerWidget.hxx | 3 + .../UI/Prefab/LevelRootUiHandler.cpp | 20 +++++++ .../UI/Prefab/LevelRootUiHandler.h | 2 + .../PropertyEditor/EntityPropertyEditor.cpp | 57 +++++++++++++++---- .../PropertyEditor/EntityPropertyEditor.hxx | 9 +++ Code/Sandbox/Editor/QtViewPaneManager.cpp | 20 ++++++- .../ComponentEntityEditorPlugin.cpp | 17 +++--- 16 files changed, 171 insertions(+), 53 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp index 2424658ecf..cb16e0c099 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Entity/PrefabEditorEntityOwnershipService.cpp @@ -94,6 +94,7 @@ namespace AzToolsFramework m_prefabSystemComponent->RemoveTemplate(templateId); } m_rootInstance->Reset(); + m_rootInstance->SetContainerEntityName("Level"); AzFramework::EntityOwnershipServiceNotificationBus::Event( m_entityContextId, &AzFramework::EntityOwnershipServiceNotificationBus::Events::OnEntityOwnershipServiceReset); @@ -198,6 +199,7 @@ namespace AzToolsFramework m_rootInstance->SetTemplateId(templateId); m_rootInstance->SetTemplateSourcePath(m_loaderInterface->GetRelativePathToProject(filename)); + m_rootInstance->SetContainerEntityName("Level"); m_prefabSystemComponent->PropagateTemplateChanges(templateId); return true; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp index 0a5b43482e..c1eee62dbc 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.cpp @@ -123,7 +123,11 @@ namespace AzToolsFramework void Instance::SetTemplateSourcePath(AZ::IO::PathView sourcePath) { m_templateSourcePath = sourcePath; - m_containerEntity->SetName(sourcePath.Filename().Native()); + } + + void Instance::SetContainerEntityName(AZStd::string_view containerName) + { + m_containerEntity->SetName(containerName); } bool Instance::AddEntity(AZ::Entity& entity) @@ -563,7 +567,7 @@ namespace AzToolsFramework AZ::EntityId Instance::GetContainerEntityId() const { - return m_containerEntity->GetId(); + return m_containerEntity ? m_containerEntity->GetId() : AZ::EntityId(); } bool Instance::HasContainerEntity() const diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h index d1c7a4d853..186dce0f50 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/Instance/Instance.h @@ -80,6 +80,7 @@ namespace AzToolsFramework const AZ::IO::Path& GetTemplateSourcePath() const; void SetTemplateSourcePath(AZ::IO::PathView sourcePath); + void SetContainerEntityName(AZStd::string_view containerName); bool AddEntity(AZ::Entity& entity); bool AddEntity(AZ::Entity& entity, EntityAlias entityAlias); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp index 46bd924f30..772e0ae52e 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabPublicHandler.cpp @@ -721,7 +721,7 @@ namespace AzToolsFramework InstanceOptionalReference owningInstance = m_instanceEntityMapperInterface->FindOwningInstance(entity->GetId()); AZ_Assert( owningInstance.has_value(), - "An error occored while retrieving entities and prefab instances : " + "An error occurred while retrieving entities and prefab instances : " "Owning instance of entity with id '%llu' couldn't be found", entity->GetId()); @@ -805,7 +805,7 @@ namespace AzToolsFramework { AZ_Assert( false, - "An error occored in function EntitiesBelongToSameInstance: " + "An error occurred in function EntitiesBelongToSameInstance: " "Owning instance of entity with id '%llu' couldn't be found", entityId); return false; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp index 9070630e56..54e99c9416 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp @@ -121,6 +121,7 @@ namespace AzToolsFramework } newInstance->SetTemplateSourcePath(relativeFilePath); + newInstance->SetContainerEntityName(relativeFilePath.Stem().Native()); TemplateId newTemplateId = CreateTemplateFromInstance(*newInstance); if (newTemplateId == InvalidTemplateId) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.cpp index 98edd26f88..84266d3707 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.cpp @@ -61,6 +61,11 @@ namespace AzToolsFramework return true; } + bool EditorEntityUiHandlerBase::CanRename(AZ::EntityId /*entityId*/) const + { + return true; + } + void EditorEntityUiHandlerBase::PaintItemBackground(QPainter* /*painter*/, const QStyleOptionViewItem& /*option*/, const QModelIndex& /*index*/) const { } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.h index 7360e7ff0b..1aa5e5720f 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.h @@ -47,6 +47,8 @@ namespace AzToolsFramework virtual QPixmap GenerateItemIcon(AZ::EntityId entityId) const; //! Returns whether the element's lock and visibility state should be accessible in the Outliner virtual bool CanToggleLockVisibility(AZ::EntityId entityId) const; + //! Returns whether the element's name should be editable + virtual bool CanRename(AZ::EntityId entityId) const; //! Paints the background of the item in the Outliner. virtual void PaintItemBackground(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerListModel.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerListModel.cpp index de10ae18b4..5b44594398 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerListModel.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerListModel.cpp @@ -945,6 +945,12 @@ namespace AzToolsFramework return false; } + // Disable reparenting to the root level + if (!newParentId.IsValid()) + { + return false; + } + // Ignore entities not owned by the editor context. It is assumed that all entities belong // to the same context since multiple selection doesn't span across views. for (const AZ::EntityId& entityId : selectedEntityIds) @@ -974,39 +980,33 @@ namespace AzToolsFramework } } - if (newParentId.IsValid()) + bool isLayerEntity = false; + Layers::EditorLayerComponentRequestBus::EventResult( + isLayerEntity, + entityId, + &Layers::EditorLayerComponentRequestBus::Events::HasLayer); + // Layers can only have other layers as parents, or have no parent. + if (isLayerEntity) { - bool isLayerEntity = false; + bool newParentIsLayer = false; Layers::EditorLayerComponentRequestBus::EventResult( - isLayerEntity, - entityId, + newParentIsLayer, + newParentId, &Layers::EditorLayerComponentRequestBus::Events::HasLayer); - // Layers can only have other layers as parents, or have no parent. - if (isLayerEntity) + if (!newParentIsLayer) { - bool newParentIsLayer = false; - Layers::EditorLayerComponentRequestBus::EventResult( - newParentIsLayer, - newParentId, - &Layers::EditorLayerComponentRequestBus::Events::HasLayer); - if (!newParentIsLayer) - { - return false; - } + return false; } } } //Only check the entity pointer if the entity id is valid because //we want to allow dragging items to unoccupied parts of the tree to un-parent them - if (newParentId.IsValid()) + AZ::Entity* newParentEntity = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(newParentEntity, &AZ::ComponentApplicationRequests::FindEntity, newParentId); + if (!newParentEntity) { - AZ::Entity* newParentEntity = nullptr; - AZ::ComponentApplicationBus::BroadcastResult(newParentEntity, &AZ::ComponentApplicationRequests::FindEntity, newParentId); - if (!newParentEntity) - { - return false; - } + return false; } //reject dragging on to yourself or your children diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp index 08fc764507..3ee8a14285 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -271,6 +272,12 @@ namespace AzToolsFramework m_listModel->Initialize(); + m_editorEntityUiInterface = AZ::Interface::Get(); + + AZ_Assert( + m_editorEntityUiInterface != nullptr, + "EntityOutlinerWidget requires a EditorEntityUiInterface instance on Initialize."); + EditorPickModeNotificationBus::Handler::BusConnect(GetEntityContextId()); EntityHighlightMessages::Bus::Handler::BusConnect(); EntityOutlinerModelNotificationBus::Handler::BusConnect(); @@ -562,7 +569,13 @@ namespace AzToolsFramework if (m_selectedEntityIds.size() == 1) { - contextMenu->addAction(m_actionToRenameSelection); + auto entityId = m_selectedEntityIds.front(); + auto entityUiHandler = m_editorEntityUiInterface->GetHandler(entityId); + + if (!entityUiHandler || entityUiHandler->CanRename(entityId)) + { + contextMenu->addAction(m_actionToRenameSelection); + } } if (m_selectedEntityIds.size() == 1) @@ -688,11 +701,17 @@ namespace AzToolsFramework if (m_selectedEntityIds.size() == 1) { - const QModelIndex proxyIndex = GetIndexFromEntityId(m_selectedEntityIds.front()); - if (proxyIndex.isValid()) + auto entityId = m_selectedEntityIds.front(); + auto entityUiHandler = m_editorEntityUiInterface->GetHandler(entityId); + + if (!entityUiHandler || entityUiHandler->CanRename(entityId)) { - m_gui->m_objectTree->setCurrentIndex(proxyIndex); - m_gui->m_objectTree->QTreeView::edit(proxyIndex); + const QModelIndex proxyIndex = GetIndexFromEntityId(entityId); + if (proxyIndex.isValid()) + { + m_gui->m_objectTree->setCurrentIndex(proxyIndex); + m_gui->m_objectTree->QTreeView::edit(proxyIndex); + } } } } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.hxx index cf8c55abd1..f225bb49b8 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Outliner/EntityOutlinerWidget.hxx @@ -42,6 +42,7 @@ namespace Ui namespace AzToolsFramework { + class EditorEntityUiInterface; class EntityOutlinerListModel; class EntityOutlinerSortFilterProxyModel; @@ -193,6 +194,8 @@ namespace AzToolsFramework EntityIdSet m_entitiesToSort; EntityOutliner::DisplaySortMode m_sortMode; bool m_sortContentQueued; + + EditorEntityUiInterface* m_editorEntityUiInterface = nullptr; }; } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp index 828a49ef94..7915403c0a 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.cpp @@ -50,11 +50,31 @@ namespace AzToolsFramework return QPixmap(m_levelRootIconPath); } + QString LevelRootUiHandler::GenerateItemInfoString(AZ::EntityId entityId) const + { + QString infoString; + + AZ::IO::Path path = m_prefabPublicInterface->GetOwningInstancePrefabPath(entityId); + + if (!path.empty()) + { + infoString = + QObject::tr("(%1)").arg(path.Filename().Native().data()); + } + + return infoString; + } + bool LevelRootUiHandler::CanToggleLockVisibility(AZ::EntityId /*entityId*/) const { return false; } + bool LevelRootUiHandler::CanRename(AZ::EntityId /*entityId*/) const + { + return false; + } + void LevelRootUiHandler::PaintItemBackground(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& /*index*/) const { if (!painter) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.h b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.h index a8b2e4a4f8..19c1244040 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.h +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/Prefab/LevelRootUiHandler.h @@ -34,7 +34,9 @@ namespace AzToolsFramework // EditorEntityUiHandler... QPixmap GenerateItemIcon(AZ::EntityId entityId) const override; + QString GenerateItemInfoString(AZ::EntityId entityId) const override; bool CanToggleLockVisibility(AZ::EntityId entityId) const override; + bool CanRename(AZ::EntityId entityId) const override; void PaintItemBackground(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override; private: diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp index 55c7fb3f65..181f5b9a9d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.cpp @@ -310,6 +310,9 @@ namespace AzToolsFramework { initEntityPropertyEditorResources(); + m_prefabPublicInterface = AZ::Interface::Get(); + AZ_Assert(m_prefabPublicInterface != nullptr, "EntityPropertyEditor requires a PrefabPublicInterface instance on Initialize."); + setObjectName("EntityPropertyEditor"); setAcceptDrops(true); @@ -405,8 +408,6 @@ namespace AzToolsFramework CreateActions(); UpdateContents(); - m_prefabPublicInterface = AZ::Interface::Get(); - EditorEntityContextNotificationBus::Handler::BusConnect(); //forced to register global event filter with application for selection @@ -693,11 +694,38 @@ namespace AzToolsFramework m_gui->m_entityIcon->repaint(); } + EntityPropertyEditor::InspectorLayout EntityPropertyEditor::GetCurrentInspectorLayout() const + { + if (!m_prefabsAreEnabled) + { + return m_isLevelEntityEditor ? InspectorLayout::LEVEL : InspectorLayout::ENTITY; + } + + AZ::EntityId levelContainerEntityId = m_prefabPublicInterface->GetLevelInstanceContainerEntityId(); + if (AZStd::find(m_selectedEntityIds.begin(), m_selectedEntityIds.end(), levelContainerEntityId) != m_selectedEntityIds.end()) + { + if (m_selectedEntityIds.size() > 1) + { + return InspectorLayout::INVALID; + } + else + { + return InspectorLayout::LEVEL; + } + } + else + { + return InspectorLayout::ENTITY; + } + } + void EntityPropertyEditor::UpdateEntityDisplay() { UpdateStatusComboBox(); - if (m_isLevelEntityEditor) + InspectorLayout layout = GetCurrentInspectorLayout(); + + if (layout == InspectorLayout::LEVEL) { AZStd::string levelName; AzToolsFramework::EditorRequestBus::BroadcastResult(levelName, &AzToolsFramework::EditorRequests::GetLevelName); @@ -737,13 +765,20 @@ namespace AzToolsFramework AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzToolsFramework); SelectionEntityTypeInfo result = SelectionEntityTypeInfo::None; - if (m_isLevelEntityEditor) + InspectorLayout layout = GetCurrentInspectorLayout(); + + if (layout == InspectorLayout::LEVEL) { // The Level Inspector should only have a list of selectable components after the // level entity itself is valid (i.e. "selected"). return selection.empty() ? SelectionEntityTypeInfo::None : SelectionEntityTypeInfo::LevelEntity; } + if (layout == InspectorLayout::INVALID) + { + return SelectionEntityTypeInfo::Mixed; + } + for (AZ::EntityId selectedEntityId : selection) { bool isLayerEntity = false; @@ -909,16 +944,18 @@ namespace AzToolsFramework } } + bool isLevelLayout = GetCurrentInspectorLayout() == InspectorLayout::LEVEL; + m_gui->m_entityDetailsLabel->setText(entityDetailsLabelText); m_gui->m_entityDetailsLabel->setVisible(entityDetailsVisible); m_gui->m_entityNameEditor->setVisible(hasEntitiesDisplayed); m_gui->m_entityNameLabel->setVisible(hasEntitiesDisplayed); m_gui->m_entityIcon->setVisible(hasEntitiesDisplayed); - m_gui->m_pinButton->setVisible(m_overrideSelectedEntityIds.empty() && hasEntitiesDisplayed && !m_isSystemEntityEditor && !m_isLevelEntityEditor); - m_gui->m_statusLabel->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !m_isLevelEntityEditor); - m_gui->m_statusComboBox->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !m_isLevelEntityEditor); - m_gui->m_entityIdLabel->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !m_isLevelEntityEditor); - m_gui->m_entityIdText->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !m_isLevelEntityEditor); + m_gui->m_pinButton->setVisible(m_overrideSelectedEntityIds.empty() && hasEntitiesDisplayed && !m_isSystemEntityEditor); + m_gui->m_statusLabel->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_statusComboBox->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_entityIdLabel->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); + m_gui->m_entityIdText->setVisible(hasEntitiesDisplayed && !m_isSystemEntityEditor && !isLevelLayout); bool displayComponentSearchBox = hasEntitiesDisplayed; if (hasEntitiesDisplayed) @@ -941,7 +978,7 @@ namespace AzToolsFramework UpdateEntityDisplay(); } - m_gui->m_darkBox->setVisible(displayComponentSearchBox && !m_isSystemEntityEditor && !m_isLevelEntityEditor); + m_gui->m_darkBox->setVisible(displayComponentSearchBox && !m_isSystemEntityEditor && !isLevelLayout); m_gui->m_entitySearchBox->setVisible(displayComponentSearchBox); bool displayAddComponentMenu = CanAddComponentsToSelection(selectionEntityTypeInfo); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx index fed9c55f15..677dc98277 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/UI/PropertyEditor/EntityPropertyEditor.hxx @@ -521,6 +521,15 @@ namespace AzToolsFramework bool m_isSystemEntityEditor; bool m_isLevelEntityEditor = false; + enum class InspectorLayout + { + ENTITY = 0, // All selected entities are regular entities + LEVEL, // The selected entity is the level prefab container entity + INVALID // Other entities are selected alongside the level prefab container entity + }; + + InspectorLayout GetCurrentInspectorLayout() const; + // the spacer's job is to make sure that its always at the end of the list of components. QSpacerItem* m_spacer; bool m_isAlreadyQueuedRefresh; diff --git a/Code/Sandbox/Editor/QtViewPaneManager.cpp b/Code/Sandbox/Editor/QtViewPaneManager.cpp index ad33eecfee..b242f3d914 100644 --- a/Code/Sandbox/Editor/QtViewPaneManager.cpp +++ b/Code/Sandbox/Editor/QtViewPaneManager.cpp @@ -36,6 +36,8 @@ #include #include +#include + #include #include #include @@ -983,6 +985,11 @@ bool QtViewPaneManager::ClosePanesWithRollback(const QVector& panesToKe */ void QtViewPaneManager::RestoreDefaultLayout(bool resetSettings) { + // Get whether the prefab system is enabled + bool isPrefabSystemEnabled = false; + AzFramework::ApplicationRequests::Bus::BroadcastResult( + isPrefabSystemEnabled, &AzFramework::ApplicationRequests::IsPrefabSystemEnabled); + if (resetSettings) { // We're going to do something destructive (removing all of the viewpane settings). Better confirm with the user @@ -1022,7 +1029,11 @@ void QtViewPaneManager::RestoreDefaultLayout(bool resetSettings) state.viewPanes.push_back(LyViewPane::EntityInspector); state.viewPanes.push_back(LyViewPane::AssetBrowser); state.viewPanes.push_back(LyViewPane::Console); - state.viewPanes.push_back(LyViewPane::LevelInspector); + + if (!isPrefabSystemEnabled) + { + state.viewPanes.push_back(LyViewPane::LevelInspector); + } state.mainWindowState = m_defaultMainWindowState; @@ -1047,7 +1058,12 @@ void QtViewPaneManager::RestoreDefaultLayout(bool resetSettings) const QtViewPane* assetBrowserViewPane = OpenPane(LyViewPane::AssetBrowser, QtViewPane::OpenMode::UseDefaultState); const QtViewPane* entityInspectorViewPane = OpenPane(LyViewPane::EntityInspector, QtViewPane::OpenMode::UseDefaultState); const QtViewPane* consoleViewPane = OpenPane(LyViewPane::Console, QtViewPane::OpenMode::UseDefaultState); - const QtViewPane* levelInspectorPane = OpenPane(LyViewPane::LevelInspector, QtViewPane::OpenMode::UseDefaultState); + + const QtViewPane* levelInspectorPane = nullptr; + if (!isPrefabSystemEnabled) + { + levelInspectorPane = OpenPane(LyViewPane::LevelInspector, QtViewPane::OpenMode::UseDefaultState); + } // This class does all kinds of behind the scenes magic to make docking / restore work, especially with groups // so instead of doing our special default layout attach / docking right now, we want to make it happen diff --git a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/ComponentEntityEditorPlugin.cpp b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/ComponentEntityEditorPlugin.cpp index 17face523b..e5ad2a2872 100644 --- a/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/ComponentEntityEditorPlugin.cpp +++ b/Code/Sandbox/Plugins/ComponentEntityEditorPlugin/ComponentEntityEditorPlugin.cpp @@ -143,15 +143,6 @@ ComponentEntityEditorPlugin::ComponentEntityEditorPlugin([[maybe_unused]] IEdito LyViewPane::CategoryTools, pinnedInspectorOptions); - ViewPaneOptions levelInspectorOptions; - levelInspectorOptions.canHaveMultipleInstances = false; - levelInspectorOptions.preferedDockingArea = Qt::RightDockWidgetArea; - levelInspectorOptions.paneRect = QRect(50, 50, 400, 700); - RegisterViewPane( - LyViewPane::LevelInspector, - LyViewPane::CategoryTools, - levelInspectorOptions); - bool prefabSystemEnabled = false; AzFramework::ApplicationRequests::Bus::BroadcastResult(prefabSystemEnabled, &AzFramework::ApplicationRequests::IsPrefabSystemEnabled); @@ -170,8 +161,14 @@ ComponentEntityEditorPlugin::ComponentEntityEditorPlugin([[maybe_unused]] IEdito } else { - // Add the Legacy Outliner to the Tools Menu + ViewPaneOptions levelInspectorOptions; + levelInspectorOptions.canHaveMultipleInstances = false; + levelInspectorOptions.preferedDockingArea = Qt::RightDockWidgetArea; + levelInspectorOptions.paneRect = QRect(50, 50, 400, 700); + RegisterViewPane( + LyViewPane::LevelInspector, LyViewPane::CategoryTools, levelInspectorOptions); + // Add the Legacy Outliner to the Tools Menu ViewPaneOptions outlinerOptions; outlinerOptions.canHaveMultipleInstances = true; outlinerOptions.preferedDockingArea = Qt::LeftDockWidgetArea; From 707f5a07b2da251933b19b451b8e5f6e06783291 Mon Sep 17 00:00:00 2001 From: Alex Peterson <26804013+AMZN-alexpete@users.noreply.github.com> Date: Tue, 20 Apr 2021 17:25:31 -0700 Subject: [PATCH 57/59] Converted Civetweb to 3p package --- Gems/Metastream/Code/CMakeLists.txt | 2 -- .../Platform/Common/MSVC/metastream_msvc.cmake | 4 ++++ cmake/3rdParty/Findcivetweb.cmake | 16 ---------------- .../Platform/Android/civetweb_android.cmake | 10 ---------- .../Platform/Android/cmake_android_files.cmake | 1 - .../3rdParty/Platform/Linux/civetweb_linux.cmake | 10 ---------- .../Platform/Linux/cmake_linux_files.cmake | 1 - cmake/3rdParty/Platform/Mac/civetweb_mac.cmake | 10 ---------- .../3rdParty/Platform/Mac/cmake_mac_files.cmake | 1 - .../Windows/BuiltInPackages_windows.cmake | 3 ++- .../Platform/Windows/civetweb_windows.cmake | 13 ------------- cmake/3rdParty/cmake_files.cmake | 1 - .../3rdParty/package_filelists/3rdParty.json | 1 - .../Windows/package_filelists/3rdParty.json | 6 ------ 14 files changed, 6 insertions(+), 73 deletions(-) delete mode 100644 cmake/3rdParty/Findcivetweb.cmake delete mode 100644 cmake/3rdParty/Platform/Android/civetweb_android.cmake delete mode 100644 cmake/3rdParty/Platform/Linux/civetweb_linux.cmake delete mode 100644 cmake/3rdParty/Platform/Mac/civetweb_mac.cmake delete mode 100644 cmake/3rdParty/Platform/Windows/civetweb_windows.cmake diff --git a/Gems/Metastream/Code/CMakeLists.txt b/Gems/Metastream/Code/CMakeLists.txt index 6d2983c91d..47b6f6f9c5 100644 --- a/Gems/Metastream/Code/CMakeLists.txt +++ b/Gems/Metastream/Code/CMakeLists.txt @@ -47,7 +47,6 @@ ly_add_target( PRIVATE Gem::Metastream.Static Legacy::CryCommon - 3rdParty::civetweb ) @@ -74,7 +73,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED) AZ::AzTest Gem::Metastream.Static Legacy::CryCommon - 3rdParty::civetweb ) ly_add_googletest( NAME Gem::Metastream.Tests diff --git a/Gems/Metastream/Code/Source/Platform/Common/MSVC/metastream_msvc.cmake b/Gems/Metastream/Code/Source/Platform/Common/MSVC/metastream_msvc.cmake index 5cebdbd198..2a42a01b08 100644 --- a/Gems/Metastream/Code/Source/Platform/Common/MSVC/metastream_msvc.cmake +++ b/Gems/Metastream/Code/Source/Platform/Common/MSVC/metastream_msvc.cmake @@ -11,3 +11,7 @@ # CivetHttpServer.cpp uses a try catch block set(LY_COMPILE_OPTIONS PRIVATE /EHsc) +set(LY_BUILD_DEPENDENCIES + PRIVATE + 3rdParty::civetweb +) \ No newline at end of file diff --git a/cmake/3rdParty/Findcivetweb.cmake b/cmake/3rdParty/Findcivetweb.cmake deleted file mode 100644 index b882957b84..0000000000 --- a/cmake/3rdParty/Findcivetweb.cmake +++ /dev/null @@ -1,16 +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. -# - -ly_add_external_target( - NAME civetweb - VERSION civetweb-20160922-az.2 - INCLUDE_DIRECTORIES include -) diff --git a/cmake/3rdParty/Platform/Android/civetweb_android.cmake b/cmake/3rdParty/Platform/Android/civetweb_android.cmake deleted file mode 100644 index 4d5680a30d..0000000000 --- a/cmake/3rdParty/Platform/Android/civetweb_android.cmake +++ /dev/null @@ -1,10 +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. -# diff --git a/cmake/3rdParty/Platform/Android/cmake_android_files.cmake b/cmake/3rdParty/Platform/Android/cmake_android_files.cmake index 07e453f862..59015d8704 100644 --- a/cmake/3rdParty/Platform/Android/cmake_android_files.cmake +++ b/cmake/3rdParty/Platform/Android/cmake_android_files.cmake @@ -11,7 +11,6 @@ set(FILES BuiltInPackages_android.cmake - civetweb_android.cmake VkValidation_android.cmake Wwise_android.cmake ) diff --git a/cmake/3rdParty/Platform/Linux/civetweb_linux.cmake b/cmake/3rdParty/Platform/Linux/civetweb_linux.cmake deleted file mode 100644 index 4d5680a30d..0000000000 --- a/cmake/3rdParty/Platform/Linux/civetweb_linux.cmake +++ /dev/null @@ -1,10 +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. -# diff --git a/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake b/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake index 83d862ee78..809e8b7198 100644 --- a/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake +++ b/cmake/3rdParty/Platform/Linux/cmake_linux_files.cmake @@ -12,7 +12,6 @@ set(FILES AWSGameLiftServerSDK_linux.cmake BuiltInPackages_linux.cmake - civetweb_linux.cmake dyad_linux.cmake FbxSdk_linux.cmake OpenSSL_linux.cmake diff --git a/cmake/3rdParty/Platform/Mac/civetweb_mac.cmake b/cmake/3rdParty/Platform/Mac/civetweb_mac.cmake deleted file mode 100644 index 4d5680a30d..0000000000 --- a/cmake/3rdParty/Platform/Mac/civetweb_mac.cmake +++ /dev/null @@ -1,10 +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. -# diff --git a/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake b/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake index 9d0166913a..8cab9da1ba 100644 --- a/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake +++ b/cmake/3rdParty/Platform/Mac/cmake_mac_files.cmake @@ -11,7 +11,6 @@ set(FILES BuiltInPackages_mac.cmake - civetweb_mac.cmake DirectXShaderCompiler_mac.cmake FbxSdk_mac.cmake OpenGLInterface_mac.cmake diff --git a/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake b/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake index 09dd543e5c..a2b03c1a68 100644 --- a/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake +++ b/cmake/3rdParty/Platform/Windows/BuiltInPackages_windows.cmake @@ -55,4 +55,5 @@ ly_associate_package(PACKAGE_NAME pyside2-qt-5.15.1-rev2-windows TARGETS pys ly_associate_package(PACKAGE_NAME openimageio-2.1.16.0-rev1-windows TARGETS OpenImageIO PACKAGE_HASH b9f6d6df180ad240b9f17a68c1862c7d8f38234de0e692e83116254b0ee467e5) ly_associate_package(PACKAGE_NAME qt-5.15.2-windows TARGETS Qt PACKAGE_HASH edaf954c647c99727bfd313dab2959803d2df0873914bb96368c3d8286eed6d9) ly_associate_package(PACKAGE_NAME libsamplerate-0.2.1-rev2-windows TARGETS libsamplerate PACKAGE_HASH dcf3c11a96f212a52e2c9241abde5c364ee90b0f32fe6eeb6dcdca01d491829f) -ly_associate_package(PACKAGE_NAME OpenMesh-8.1-rev1-windows TARGETS OpenMesh PACKAGE_HASH 1c1df639358526c368e790dfce40c45cbdfcfb1c9a041b9d7054a8949d88ee77) \ No newline at end of file +ly_associate_package(PACKAGE_NAME OpenMesh-8.1-rev1-windows TARGETS OpenMesh PACKAGE_HASH 1c1df639358526c368e790dfce40c45cbdfcfb1c9a041b9d7054a8949d88ee77) +ly_associate_package(PACKAGE_NAME civetweb-1.8-rev1-windows TARGETS civetweb PACKAGE_HASH 36d0e58a59bcdb4dd70493fb1b177aa0354c945b06c30416348fd326cf323dd4) \ No newline at end of file diff --git a/cmake/3rdParty/Platform/Windows/civetweb_windows.cmake b/cmake/3rdParty/Platform/Windows/civetweb_windows.cmake deleted file mode 100644 index f987f76135..0000000000 --- a/cmake/3rdParty/Platform/Windows/civetweb_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(CIVETWEB_LIBS ${BASE_PATH}/lib/Windows/$,debug,release>/civetweb.lib) - diff --git a/cmake/3rdParty/cmake_files.cmake b/cmake/3rdParty/cmake_files.cmake index 46b612df42..0d8e6d4bb1 100644 --- a/cmake/3rdParty/cmake_files.cmake +++ b/cmake/3rdParty/cmake_files.cmake @@ -12,7 +12,6 @@ set(FILES BuiltInPackages.cmake FindAWSGameLiftServerSDK.cmake - Findcivetweb.cmake FindClang.cmake FindDirectXShaderCompiler.cmake Finddyad.cmake diff --git a/scripts/build/package/Platform/3rdParty/package_filelists/3rdParty.json b/scripts/build/package/Platform/3rdParty/package_filelists/3rdParty.json index 26733303a6..cb974afd7e 100644 --- a/scripts/build/package/Platform/3rdParty/package_filelists/3rdParty.json +++ b/scripts/build/package/Platform/3rdParty/package_filelists/3rdParty.json @@ -3,7 +3,6 @@ "3rdParty.txt": "#include", "AWS/AWSNativeSDK/1.7.167-az.2/**": "#include", "AWS/GameLift/3.4.0/**": "#include", - "civetweb/civetweb-20160922-az.2/**": "#include", "CMake/3.19.1/**": "#include", "DirectXShaderCompiler/1.0.1-az.1/**": "#include", "DirectXShaderCompiler/2020.08.07/**": "#include", diff --git a/scripts/build/package/Platform/Windows/package_filelists/3rdParty.json b/scripts/build/package/Platform/Windows/package_filelists/3rdParty.json index c43e11cdf1..75add157b4 100644 --- a/scripts/build/package/Platform/Windows/package_filelists/3rdParty.json +++ b/scripts/build/package/Platform/Windows/package_filelists/3rdParty.json @@ -23,12 +23,6 @@ "bin/windows/**":"#include", "lib/linux/libstdcxx/**":"#include" }, - "civetweb/civetweb-20160922-az.2":{ - "src/**":"#include", - "include/**":"#include", - "lib/Windows/**":"#include", - "*":"#include" - }, "DirectXShaderCompiler/1.0.1-az.1":{ "*":"#include", "src/**":"#include", From 041f68c238ae74552f36095fb33e7db6f68b6e3e Mon Sep 17 00:00:00 2001 From: Benjamin Jillich <43751992+amzn-jillich@users.noreply.github.com> Date: Wed, 21 Apr 2021 07:54:37 +0200 Subject: [PATCH 58/59] [LYN-2859] EMotionFX: Getting active states from anim graph via script crashes the editor (#150) --- .../Components/AnimGraphComponent.cpp | 30 +++++++-- .../Components/AnimGraphComponent.h | 2 + .../Tests/AnimGraphNetworkingBusTests.cpp | 65 +++++++++++++++++++ .../Code/emotionfx_tests_files.cmake | 1 + 4 files changed, 92 insertions(+), 6 deletions(-) create mode 100644 Gems/EMotionFX/Code/Tests/AnimGraphNetworkingBusTests.cpp diff --git a/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp index 9dabade61f..7b444d3970 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.cpp @@ -378,18 +378,36 @@ namespace EMotionFX } } + NodeIndexContainer AnimGraphComponent::s_emptyNodeIndexContainer = {}; const NodeIndexContainer& AnimGraphComponent::GetActiveStates() const { - const AZStd::shared_ptr snapshot = m_animGraphInstance->GetSnapshot(); - AZ_Error("EMotionFX", snapshot, "Call GetActiveStates function but no snapshot is created for this instance."); - return snapshot->GetActiveNodes(); + if (m_animGraphInstance) + { + const AZStd::shared_ptr snapshot = m_animGraphInstance->GetSnapshot(); + if (snapshot) + { + AZ_Warning("EMotionFX", false, "Call GetActiveStates function but no snapshot is created for this instance."); + return snapshot->GetActiveNodes(); + } + } + + return s_emptyNodeIndexContainer; } + MotionNodePlaytimeContainer AnimGraphComponent::s_emptyMotionNodePlaytimeContainer = {}; const MotionNodePlaytimeContainer& AnimGraphComponent::GetMotionPlaytimes() const { - const AZStd::shared_ptr snapshot = m_animGraphInstance->GetSnapshot(); - AZ_Error("EMotionFX", snapshot, "Call GetActiveStates function but no snapshot is created for this instance."); - return snapshot->GetMotionNodePlaytimes(); + if (m_animGraphInstance) + { + const AZStd::shared_ptr snapshot = m_animGraphInstance->GetSnapshot(); + if (snapshot) + { + AZ_Warning("EMotionFX", false, "Call GetActiveStates function but no snapshot is created for this instance."); + return snapshot->GetMotionNodePlaytimes(); + } + } + + return s_emptyMotionNodePlaytimeContainer; } void AnimGraphComponent::UpdateActorExternal(float deltatime) diff --git a/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h b/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h index 37e6a57199..db4a2c62b9 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h +++ b/Gems/EMotionFX/Code/Source/Integration/Components/AnimGraphComponent.h @@ -155,7 +155,9 @@ namespace EMotionFX bool HasSnapshot() const override; void CreateSnapshot(bool isAuthoritative) override; void SetActiveStates(const NodeIndexContainer& activeStates) override; + static NodeIndexContainer s_emptyNodeIndexContainer; const NodeIndexContainer& GetActiveStates() const override; + static MotionNodePlaytimeContainer s_emptyMotionNodePlaytimeContainer; void SetMotionPlaytimes(const MotionNodePlaytimeContainer& motionNodePlaytimes) override; const MotionNodePlaytimeContainer& GetMotionPlaytimes() const override; void UpdateActorExternal(float deltatime) override; diff --git a/Gems/EMotionFX/Code/Tests/AnimGraphNetworkingBusTests.cpp b/Gems/EMotionFX/Code/Tests/AnimGraphNetworkingBusTests.cpp new file mode 100644 index 0000000000..2c94a9689e --- /dev/null +++ b/Gems/EMotionFX/Code/Tests/AnimGraphNetworkingBusTests.cpp @@ -0,0 +1,65 @@ +/* +* 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 EMotionFX +{ + class AnimGraphNetworkingBusTests + : public EntityComponentFixture + { + public: + void SetUp() override + { + EntityComponentFixture::SetUp(); + + m_entity = AZStd::make_unique(); + m_entityId = AZ::EntityId(740216387); + m_entity->SetId(m_entityId); + + m_entity->CreateComponent(); + m_entity->CreateComponent(); + auto animGraphComponent = m_entity->CreateComponent(); + + m_entity->Init(); + + m_entity->Activate(); + AnimGraphInstance* animGraphInstance = animGraphComponent->GetAnimGraphInstance(); + EXPECT_EQ(animGraphInstance, nullptr) << "Expecting an invalid anim graph instance as no asset has been set."; + } + + void TearDown() override + { + m_entity->Deactivate(); + EntityComponentFixture::TearDown(); + } + + AZ::EntityId m_entityId; + AZStd::unique_ptr m_entity; + }; + + TEST_F(AnimGraphNetworkingBusTests, AnimGraphNetworkingBus_GetActiveStates_Test) + { + NodeIndexContainer result; + EMotionFX::AnimGraphComponentNetworkRequestBus::EventResult(result, m_entityId, &EMotionFX::AnimGraphComponentNetworkRequestBus::Events::GetActiveStates); + } + + TEST_F(AnimGraphNetworkingBusTests, AnimGraphNetworkingBus_GetMotionPlaytimes_Test) + { + MotionNodePlaytimeContainer result; + EMotionFX::AnimGraphComponentNetworkRequestBus::EventResult(result, m_entityId, &EMotionFX::AnimGraphComponentNetworkRequestBus::Events::GetMotionPlaytimes); + } +} // end namespace EMotionFX diff --git a/Gems/EMotionFX/Code/emotionfx_tests_files.cmake b/Gems/EMotionFX/Code/emotionfx_tests_files.cmake index fff931d98d..7017975a98 100644 --- a/Gems/EMotionFX/Code/emotionfx_tests_files.cmake +++ b/Gems/EMotionFX/Code/emotionfx_tests_files.cmake @@ -22,6 +22,7 @@ set(FILES Tests/AnimGraphActionCommandTests.cpp Tests/AnimGraphActionTests.cpp Tests/AnimGraphComponentBusTests.cpp + Tests/AnimGraphNetworkingBusTests.cpp Tests/AnimGraphCopyPasteTests.cpp Tests/AnimGraphDeferredInitTests.cpp Tests/AnimGraphEventHandlerCounter.h From b95865b2d856f55f741eab9e8d310b7992e0e002 Mon Sep 17 00:00:00 2001 From: Tommy Walton <82672795+amzn-tommy@users.noreply.github.com> Date: Wed, 21 Apr 2021 00:37:51 -0700 Subject: [PATCH 59/59] Simple Motion component doesn't animate actors (#179) Buffers that have InputAssembly bind flags but also have ShaderRead flags should create buffer views --- Gems/Atom/RPI/Code/Source/RPI.Public/Buffer/Buffer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Buffer/Buffer.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Buffer/Buffer.cpp index afcf4670f3..470b66c28e 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Buffer/Buffer.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Buffer/Buffer.cpp @@ -205,7 +205,8 @@ namespace AZ void Buffer::InitBufferView() { // Skip buffer view creation for input assembly buffers - if(RHI::CheckBitsAny(m_rhiBuffer->GetDescriptor().m_bindFlags, RHI::BufferBindFlags::InputAssembly | RHI::BufferBindFlags::DynamicInputAssembly)) + if (m_rhiBuffer->GetDescriptor().m_bindFlags == RHI::BufferBindFlags::InputAssembly || + m_rhiBuffer->GetDescriptor().m_bindFlags == RHI::BufferBindFlags::DynamicInputAssembly) { return; }