Merge branch 'main' into cpack_installer

This commit is contained in:
scottr
2021-04-21 09:05:04 -07:00
186 changed files with 12331 additions and 602 deletions
@@ -157,7 +157,7 @@ endif()
if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS)
ly_add_pytest(
NAME AutomatedTesting::BlastTests
TEST_SUITE sandbox
TEST_SUITE periodic
TEST_SERIAL TRUE
PATH ${CMAKE_CURRENT_LIST_DIR}/Blast/TestSuite_Active.py
TIMEOUT 3600
@@ -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:
@@ -30,6 +30,15 @@ namespace AzFramework
return instanceIt->second->HandleInputChannelEvent(event);
}
template <class TViewportControllerInstance, ViewportControllerPriority Priority>
void MultiViewportController<TViewportControllerInstance, Priority>::ResetInputChannels()
{
for (auto instanceIt = m_instances.begin(); instanceIt != m_instances.end(); ++instanceIt)
{
instanceIt->second->ResetInputChannels();
}
}
template <class TViewportControllerInstance, ViewportControllerPriority Priority>
void MultiViewportController<TViewportControllerInstance, Priority>::UpdateViewport(const ViewportControllerUpdateEvent& event)
{
@@ -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,23 @@ 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& controllerList : m_controllers)
{
for (const auto& controller : controllerList.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 +128,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 +201,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
@@ -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 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
//! 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<AzFramework::ViewportControllerPriority, AZStd::vector<ViewportControllerPtr>> m_controllers;
AZStd::unordered_set<ViewportId> m_viewports;
bool m_enabled = true;
};
} //namespace AzFramework
@@ -18,6 +18,8 @@
#include <AzCore/std/typetraits/is_enum.h>
#include <AzCore/RTTI/TypeInfo.h>
#include <AzCore/RTTI/TypeSafeIntegral.h>
#include <AzCore/Name/Name.h>
#include <AzCore/Name/NameDictionary.h>
namespace AzNetworking
{
@@ -173,6 +175,22 @@ namespace AzNetworking
return true;
}
};
template<>
struct SerializeObjectHelper<AZ::Name>
{
static bool SerializeObject(ISerializer& serializer, AZ::Name& value)
{
AZ::Name::Hash nameHash = value.GetHash();
bool result = serializer.Serialize(nameHash, "NameHash");
if (result && serializer.GetSerializerMode() == SerializerMode::WriteToObject)
{
value = AZ::NameDictionary::Instance().FindName(nameHash);
}
return result;
}
};
}
#include <AzNetworking/Serialization/AzContainerSerializers.h>
@@ -491,6 +491,14 @@ namespace AzToolsFramework
EditorEntityContextNotificationBus::Broadcast(&EditorEntityContextNotification::OnStartPlayInEditorBegin);
//cache the current selected entities.
ToolsApplicationRequests::Bus::BroadcastResult(m_selectedBeforeStartingGame, &ToolsApplicationRequests::GetSelectedEntities);
//deselect entities if selected when entering game mode before deactivating the entities in StartPlayInEditor(...)
if (!m_selectedBeforeStartingGame.empty())
{
ToolsApplicationRequests::Bus::Broadcast(&ToolsApplicationRequests::MarkEntitiesDeselected, m_selectedBeforeStartingGame);
}
if (m_isLegacySliceService)
{
SliceEditorEntityOwnershipService* editorEntityOwnershipService =
@@ -507,8 +515,6 @@ namespace AzToolsFramework
m_isRunningGame = true;
ToolsApplicationRequests::Bus::BroadcastResult(m_selectedBeforeStartingGame, &ToolsApplicationRequests::GetSelectedEntities);
EditorEntityContextNotificationBus::Broadcast(&EditorEntityContextNotification::OnStartPlayInEditor);
}
@@ -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;
@@ -279,18 +281,29 @@ namespace AzToolsFramework
AZStd::unique_ptr<Prefab::Instance> 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;
}
@@ -186,7 +186,7 @@ namespace AzToolsFramework
PlayInEditorData m_playInEditorData;
//////////////////////////////////////////////////////////////////////////
// PrefabSystemComponentInterface interface implementation
// PrefabEditorEntityOwnershipInterface implementation
Prefab::InstanceOptionalReference CreatePrefab(
const AZStd::vector<AZ::Entity*>& entities, AZStd::vector<AZStd::unique_ptr<Prefab::Instance>>&& nestedPrefabInstances,
AZ::IO::PathView filePath, Prefab::InstanceOptionalReference instanceToParentUnder) override;
@@ -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
@@ -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);
@@ -15,6 +15,7 @@
#include <AzCore/Component/TickBus.h>
#include <AzCore/Interface/Interface.h>
#include <AzToolsFramework/Entity/EditorEntityContextBus.h>
#include <AzToolsFramework/Entity/EditorEntityHelpers.h>
#include <AzToolsFramework/API/ToolsApplicationAPI.h>
#include <AzToolsFramework/Prefab/Instance/Instance.h>
#include <AzToolsFramework/Prefab/Instance/TemplateInstanceMapperInterface.h>
@@ -116,10 +117,24 @@ namespace AzToolsFramework
"Could not find Template using Id '%llu'. Unable to update Instance.",
currentTemplateId);
// Remove the instance from update queue if its corresponding template couldn't be found
isUpdateSuccessful = false;
m_instancesUpdateQueue.pop();
continue;
}
}
auto findInstancesResult = m_templateInstanceMapperInterface->FindInstancesOwnedByTemplate(instanceTemplateId)->get();
if (findInstancesResult.find(instanceToUpdate) == findInstancesResult.end())
{
// Since nested instances get reconstructed during propagation, remove any nested instance that no longer
// maps to a template.
isUpdateSuccessful = false;
m_instancesUpdateQueue.pop();
continue;
}
Template& currentTemplate = currentTemplateReference->get();
Instance::EntityList newEntities;
if (PrefabDomUtils::LoadInstanceFromPrefabDom(*instanceToUpdate, newEntities, currentTemplate.GetPrefabDom()))
@@ -139,9 +154,18 @@ namespace AzToolsFramework
}
m_instancesUpdateQueue.pop();
}
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)
{
selectedEntityIds.erase(entityIdIterator--);
}
}
ToolsApplicationRequestBus::Broadcast(&ToolsApplicationRequests::SetSelectedEntities, selectedEntityIds);
// Enable the Outliner
@@ -15,15 +15,16 @@
#include <AzCore/Component/TransformBus.h>
#include <AzCore/Utils/TypeHash.h>
#include <AzToolsFramework/API/ToolsApplicationAPI.h>
#include <AzToolsFramework/Entity/EditorEntityContextBus.h>
#include <AzToolsFramework/Entity/EditorEntityHelpers.h>
#include <AzToolsFramework/Entity/EditorEntityInfoBus.h>
#include <AzToolsFramework/Entity/PrefabEditorEntityOwnershipInterface.h>
#include <AzToolsFramework/Prefab/EditorPrefabComponent.h>
#include <AzToolsFramework/Prefab/Instance/Instance.h>
#include <AzToolsFramework/Prefab/Instance/InstanceEntityIdMapper.h>
#include <AzToolsFramework/Prefab/Instance/InstanceEntityMapperInterface.h>
#include <AzToolsFramework/Prefab/Instance/InstanceToTemplateInterface.h>
#include <AzToolsFramework/Prefab/PrefabDomUtils.h>
#include <AzToolsFramework/Prefab/PrefabLoaderInterface.h>
#include <AzToolsFramework/Prefab/PrefabSystemComponentInterface.h>
#include <AzToolsFramework/Prefab/PrefabUndo.h>
@@ -37,12 +38,14 @@ namespace AzToolsFramework
void PrefabPublicHandler::RegisterPrefabPublicHandlerInterface()
{
m_instanceEntityMapperInterface = AZ::Interface<InstanceEntityMapperInterface>::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<InstanceToTemplateInterface>::Get();
AZ_Assert(m_instanceToTemplateInterface, "PrefabPublicHandler - Could not retrieve instance of InstanceToTemplateInterface");
m_prefabLoaderInterface = AZ::Interface<PrefabLoaderInterface>::Get();
AZ_Assert(m_prefabLoaderInterface, "Could not get PrefabLoaderInterface on PrefabPublicHandler construction.");
m_prefabSystemComponentInterface = AZ::Interface<PrefabSystemComponentInterface>::Get();
AZ_Assert(m_prefabSystemComponentInterface, "Could not get PrefabSystemComponentInterface on PrefabPublicHandler construction.");
@@ -59,91 +62,160 @@ namespace AzToolsFramework
}
PrefabOperationResult PrefabPublicHandler::CreatePrefab(const AZStd::vector<AZ::EntityId>& entityIds, AZ::IO::PathView filePath)
{
EntityList inputEntityList, topLevelEntities;
AZ::EntityId commonRootEntityId;
InstanceOptionalReference commonRootEntityOwningInstance;
PrefabOperationResult findCommonRootOutcome = FindCommonRootOwningInstance(
entityIds, inputEntityList, topLevelEntities, commonRootEntityId, commonRootEntityOwningInstance);
if (!findCommonRootOutcome.IsSuccess())
{
return findCommonRootOutcome;
}
InstanceOptionalReference instanceToCreate;
{
// Initialize Undo Batch object
ScopedUndoBatch undoBatch("Create Prefab");
PrefabDom commonRootInstanceDomBeforeCreate;
m_instanceToTemplateInterface->GenerateDomForInstance(
commonRootInstanceDomBeforeCreate, commonRootEntityOwningInstance->get());
AZStd::vector<AZ::Entity*> entities;
AZStd::vector<AZStd::unique_ptr<Instance>> instances;
// 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."));
}
// 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(
nestedInstance->GetTemplateId(), commonRootEntityOwningInstance->get().GetTemplateId(),
nestedInstance->GetInstanceAlias(), nestedInstance->GetLinkId(), undoBatch.GetUndoBatch());
}
auto prefabEditorEntityOwnershipInterface = AZ::Interface<PrefabEditorEntityOwnershipInterface>::Get();
if (!prefabEditorEntityOwnershipInterface)
{
return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error "
"(PrefabEditorEntityOwnershipInterface unavailable)."));
}
// Create the Prefab
instanceToCreate = prefabEditorEntityOwnershipInterface->CreatePrefab(
entities, AZStd::move(instances), filePath, commonRootEntityOwningInstance);
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(), "Update prefab instance", commonRootInstanceDomBeforeCreate, undoBatch.GetUndoBatch());
CreateLink(
topLevelEntities, instanceToCreate->get(), commonRootEntityOwningInstance->get().GetTemplateId(), 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
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);
}
}
// Save Template to file
m_prefabLoaderInterface->SaveTemplate(instanceToCreate->get().GetTemplateId());
return AZ::Success();
}
PrefabOperationResult PrefabPublicHandler::FindCommonRootOwningInstance(
const AZStd::vector<AZ::EntityId>& entityIds, EntityList& inputEntityList, EntityList& topLevelEntities,
AZ::EntityId& commonRootEntityId, InstanceOptionalReference& commonRootEntityOwningInstance)
{
// Retrieve entityList from entityIds
EntityList inputEntityList = EntityIdListToEntityList(entityIds);
inputEntityList = EntityIdListToEntityList(entityIds);
// Find common root and top level entities
bool entitiesHaveCommonRoot = false;
AZ::EntityId commonRootEntityId;
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."));
}
AZ::Entity* commonRootEntity = nullptr;
if (commonRootEntityId.IsValid())
{
commonRootEntity = GetEntityById(commonRootEntityId);
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.
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<AZ::Entity*> entities;
AZStd::vector<AZStd::unique_ptr<Instance>> instances;
// Retrieve all entities affected and identify Instances
if (!RetrieveAndSortPrefabEntitiesAndInstances(inputEntityList, commonRootEntityOwningInstance->get(), entities, instances))
commonRootEntityOwningInstance = GetOwnerInstanceByEntityId(commonRootEntityId);
if (!commonRootEntityOwningInstance)
{
return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - entities do not share a common root."));
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();
}
auto prefabEditorEntityOwnershipInterface = AZ::Interface<PrefabEditorEntityOwnershipInterface>::Get();
if (!prefabEditorEntityOwnershipInterface)
{
return AZ::Failure(AZStd::string("Could not create a new prefab out of the entities provided - internal error "
"(PrefabEditorEntityOwnershipInterface unavailable)."));
}
void PrefabPublicHandler::CreateLink(
const EntityList& topLevelEntities, Instance& sourceInstance, TemplateId targetTemplateId,
UndoSystem::URSequencePoint* undoBatch, AZ::EntityId commonRootEntityId)
{
AZ::EntityId containerEntityId = sourceInstance.GetContainerEntityId();
AZ::Entity* containerEntity = GetEntityById(containerEntityId);
Prefab::PrefabDom containerEntityDomBefore;
m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomBefore, *containerEntity);
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);
// 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);
// 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<AzToolsFramework::Prefab::EditorPrefabComponent>()});
// 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);
}
return AZ::Success();
PrefabDom containerEntityDomAfter;
m_instanceToTemplateInterface->GenerateDomForEntity(containerEntityDomAfter, *containerEntity);
PrefabDom patch;
m_instanceToTemplateInterface->GeneratePatch(patch, containerEntityDomBefore, containerEntityDomAfter);
m_instanceToTemplateInterface->AppendEntityAliasToPatchPaths(patch, containerEntityId);
PrefabUndoHelpers::CreateLink(
sourceInstance.GetTemplateId(), targetTemplateId, patch, sourceInstance.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*/)
@@ -173,14 +245,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<PrefabLoaderInterface>::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)."));
}
@@ -261,13 +326,13 @@ namespace AzToolsFramework
if (instanceOptionalReference.has_value())
{
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;
@@ -286,7 +351,10 @@ namespace AzToolsFramework
// Update the cache
m_prefabUndoCache.Store(entityId, AZStd::move(afterState));
}
else
{
m_prefabUndoCache.PurgeCache(entityId);
}
}
}
@@ -653,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());
@@ -737,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;
@@ -27,8 +27,10 @@ namespace AzToolsFramework
namespace Prefab
{
class Instance;
class InstanceEntityMapperInterface;
class InstanceToTemplateInterface;
class PrefabLoaderInterface;
class PrefabSystemComponentInterface;
class PrefabPublicHandler final
@@ -67,12 +69,40 @@ 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 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.
* \param commonRootEntityId The id of the entity that the source instance should be parented under.
*/
void CreateLink(
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<AZ::EntityId>& 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);
InstanceEntityMapperInterface* m_instanceEntityMapperInterface = nullptr;
InstanceToTemplateInterface* m_instanceToTemplateInterface = nullptr;
PrefabLoaderInterface* m_prefabLoaderInterface = nullptr;
PrefabSystemComponentInterface* m_prefabSystemComponentInterface = nullptr;
// Caches entity states for undo/redo purposes
@@ -104,7 +104,6 @@ namespace AzToolsFramework
return nullptr;
}
AZStd::unique_ptr<Instance> newInstance = AZStd::make_unique<Instance>(AZStd::move(containerEntity));
for (AZ::Entity* entity : entities)
@@ -122,6 +121,7 @@ namespace AzToolsFramework
}
newInstance->SetTemplateSourcePath(relativeFilePath);
newInstance->SetContainerEntityName(relativeFilePath.Stem().Native());
TemplateId newTemplateId = CreateTemplateFromInstance(*newInstance);
if (newTemplateId == InvalidTemplateId)
@@ -142,7 +142,6 @@ namespace AzToolsFramework
void PrefabSystemComponent::PropagateTemplateChanges(TemplateId templateId)
{
UpdatePrefabInstances(templateId);
auto templateIdToLinkIdsIterator = m_templateToLinkIdsMap.find(templateId);
if (templateIdToLinkIdsIterator != m_templateToLinkIdsMap.end())
{
@@ -153,15 +152,24 @@ namespace AzToolsFramework
templateIdToLinkIdsIterator->second.end()));
UpdateLinkedInstances(linkIdsToUpdateQueue);
}
else
{
UpdatePrefabInstances(templateId);
}
}
void PrefabSystemComponent::UpdatePrefabTemplate(TemplateId templateId, const PrefabDom& updatedDom)
{
PrefabDom& templateDomToUpdate = FindTemplateDom(templateId);
if (AZ::JsonSerialization::Compare(templateDomToUpdate, updatedDom) != AZ::JsonSerializerCompareResult::Equal)
auto templateToUpdate = FindTemplate(templateId);
if (templateToUpdate)
{
templateDomToUpdate.CopyFrom(updatedDom, templateDomToUpdate.GetAllocator());
PropagateTemplateChanges(templateId);
PrefabDom& templateDomToUpdate = templateToUpdate->get().GetPrefabDom();
if (AZ::JsonSerialization::Compare(templateDomToUpdate, updatedDom) != AZ::JsonSerializerCompareResult::Equal)
{
templateDomToUpdate.CopyFrom(updatedDom, templateDomToUpdate.GetAllocator());
templateToUpdate->get().MarkAsDirty(true);
PropagateTemplateChanges(templateId);
}
}
}
@@ -615,7 +623,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();
@@ -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;
@@ -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;
@@ -32,6 +32,28 @@ namespace AzToolsFramework
state->SetParent(undoBatch);
state->Redo();
}
void CreateLink(
TemplateId sourceTemplateId, TemplateId targetTemplateId, PrefabDomReference patch,
const InstanceAlias& instanceAlias, UndoSystem::URSequencePoint* undoBatch)
{
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
@@ -21,6 +21,12 @@ namespace AzToolsFramework
void UpdatePrefabInstance(
const Instance& instance, AZStd::string_view undoMessage, const PrefabDom& instanceDomBeforeUpdate,
UndoSystem::URSequencePoint* undoBatch);
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
@@ -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
{
}
@@ -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;
@@ -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
@@ -30,6 +30,7 @@
#include <AzToolsFramework/Entity/EditorEntityHelpers.h>
#include <AzToolsFramework/Entity/EditorEntityInfoBus.h>
#include <AzToolsFramework/UI/ComponentPalette/ComponentPaletteUtil.hxx>
#include <AzToolsFramework/UI/EditorEntityUi/EditorEntityUiHandlerBase.h>
#include <AzToolsFramework/UI/Outliner/EntityOutlinerDisplayOptionsMenu.h>
#include <AzToolsFramework/UI/Outliner/EntityOutlinerListModel.hxx>
#include <AzToolsFramework/UI/Outliner/EntityOutlinerSortFilterProxyModel.hxx>
@@ -271,6 +272,12 @@ namespace AzToolsFramework
m_listModel->Initialize();
m_editorEntityUiInterface = AZ::Interface<AzToolsFramework::EditorEntityUiInterface>::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);
}
}
}
}
@@ -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;
};
}
@@ -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("<span style=\"font-style: italic; font-weight: 400;\">(%1)</span>").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)
@@ -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:
@@ -310,6 +310,9 @@ namespace AzToolsFramework
{
initEntityPropertyEditorResources();
m_prefabPublicInterface = AZ::Interface<Prefab::PrefabPublicInterface>::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<Prefab::PrefabPublicInterface>::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);
@@ -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;
@@ -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:
@@ -727,6 +737,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;
@@ -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)
@@ -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;
+18 -2
View File
@@ -36,6 +36,8 @@
#include <algorithm>
#include <QScopedValueRollback>
#include <AzFramework/API/ApplicationAPI.h>
#include <AzAssetBrowser/AzAssetBrowserWindow.h>
#include <AzToolsFramework/UI/UICore/WidgetHelpers.h>
#include <AzQtComponents/Utilities/AutoSettingsGroup.h>
@@ -983,6 +985,11 @@ bool QtViewPaneManager::ClosePanesWithRollback(const QVector<QString>& 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
@@ -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;
@@ -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:
@@ -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<QComponentLevelEntityEditorInspectorWindow>(
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<QComponentLevelEntityEditorInspectorWindow>(
LyViewPane::LevelInspector, LyViewPane::CategoryTools, levelInspectorOptions);
// Add the Legacy Outliner to the Tools Menu
ViewPaneOptions outlinerOptions;
outlinerOptions.canHaveMultipleInstances = true;
outlinerOptions.preferedDockingArea = Qt::LeftDockWidgetArea;
@@ -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
@@ -79,7 +79,7 @@ namespace ImageProcessingAtom
builderDescriptor.m_busId = azrtti_typeid<ImageBuilderWorker>();
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);
@@ -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",
@@ -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"
}
@@ -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"
}
@@ -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
@@ -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"
@@ -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"
}
@@ -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",
@@ -11,7 +11,14 @@
"FileMasks": [
"_sss",
"_trans",
"_opac"
"_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,
@@ -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,
@@ -0,0 +1,11 @@
{
"Type": "JsonSerialization",
"Version": 1,
"ClassName": "PassAsset",
"ClassData": {
"PassTemplate": {
"Name": "DiffuseProbeGridClassificationPassTemplate",
"PassClass": "DiffuseProbeGridClassificationPass"
}
}
}
@@ -26,6 +26,10 @@
{
"Name": "DiffuseProbeGridRelocationPass",
"TemplateName": "DiffuseProbeGridRelocationPassTemplate"
},
{
"Name": "DiffuseProbeGridClassificationPass",
"TemplateName": "DiffuseProbeGridClassificationPassTemplate"
}
]
}
@@ -416,6 +416,10 @@
"Name": "DiffuseProbeGridRelocationPassTemplate",
"Path": "Passes/DiffuseProbeGridRelocation.pass"
},
{
"Name": "DiffuseProbeGridClassificationPassTemplate",
"Path": "Passes/DiffuseProbeGridClassification.pass"
},
{
"Name": "DiffuseGlobalIlluminationPassTemplate",
"Path": "Passes/DiffuseGlobalIllumination.pass"
@@ -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<DirectionalLight> 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<SimplePointLight> 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<SimpleSpotLight> m_simpleSpotLights;
uint m_simpleSpotLightCount;
// point lights (sphere)
struct PointLight
{
float3 m_position;
@@ -42,7 +68,7 @@ partial ShaderResourceGroup RayTracingSceneSrg
StructuredBuffer<PointLight> m_pointLights;
uint m_pointLightCount;
// disk Lights
// disk lights
struct DiskLight
{
float3 m_position;
@@ -60,7 +86,7 @@ partial ShaderResourceGroup RayTracingSceneSrg
StructuredBuffer<DiskLight> 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<CapsuleLight> m_capsuleLights;
uint m_capsuleLightCount;
// quad Lights
// quad lights
struct QuadLight
{
float3 m_position;
@@ -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"
}
]
}
}
@@ -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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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"
}
]
}
@@ -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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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"
}
]
}
@@ -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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "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"
}
]
}
@@ -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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
}
]
}
@@ -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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
}
]
}
@@ -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<AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>>",
"typeId": "{DB3620EE-8854-52A8-B421-BFA17E6A687D}",
"version": 2,
"Objects": [
{
"field": "Name",
"typeName": "Name",
"typeId": "{3D2B920C-9EFD-40D5-AAE0-DF131C3D4931}",
"value": "m_probeStates"
},
{
"field": "Index",
"typeName": "AZ::RHI::Handle<unsigned int, ShaderInputImageDescriptor>",
"typeId": "{5C8C0729-5D41-5299-80F1-395F79B02D70}",
"version": 1,
"Objects": [
{
"field": "m_index",
"typeName": "unsigned int",
"typeId": "{43DA906B-7DEF-4CA8-9790-854106D3F983}",
"value": "1"
}
]
}
@@ -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"
}
]
}
@@ -96,6 +96,7 @@
#include <DiffuseProbeGrid/DiffuseProbeGridBlendDistancePass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridBorderUpdatePass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridRelocationPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridClassificationPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridRenderPass.h>
#include <DiffuseProbeGrid/DiffuseProbeGridFeatureProcessor.h>
#include <ReflectionScreenSpace/ReflectionScreenSpaceBlurPass.h>
@@ -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);
@@ -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<RPI::ShaderResourceGroupAsset>& 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;
@@ -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<RHI::ImagePool> 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<RPI::PipelineStateForDraw> m_pipelineState;
@@ -118,6 +120,7 @@ namespace AZ
const Data::Instance<RPI::ShaderResourceGroup>& GetBorderUpdateRowDistanceSrg() const { return m_borderUpdateRowDistanceSrg; }
const Data::Instance<RPI::ShaderResourceGroup>& GetBorderUpdateColumnDistanceSrg() const { return m_borderUpdateColumnDistanceSrg; }
const Data::Instance<RPI::ShaderResourceGroup>& GetRelocationSrg() const { return m_relocationSrg; }
const Data::Instance<RPI::ShaderResourceGroup>& GetClassificationSrg() const { return m_classificationSrg; }
const Data::Instance<RPI::ShaderResourceGroup>& GetRenderObjectSrg() const { return m_renderObjectSrg; }
// Srg updates
@@ -126,6 +129,7 @@ namespace AZ
void UpdateBlendDistanceSrg(const Data::Asset<RPI::ShaderResourceGroupAsset>& srgAsset);
void UpdateBorderUpdateSrgs(const Data::Asset<RPI::ShaderResourceGroupAsset>& rowSrgAsset, const Data::Asset<RPI::ShaderResourceGroupAsset>& columnSrgAsset);
void UpdateRelocationSrg(const Data::Asset<RPI::ShaderResourceGroupAsset>& srgAsset);
void UpdateClassificationSrg(const Data::Asset<RPI::ShaderResourceGroupAsset>& srgAsset);
void UpdateRenderObjectSrg();
// textures
@@ -133,12 +137,14 @@ namespace AZ
const RHI::Ptr<RHI::Image>& GetIrradianceImage() { return m_irradianceImage[m_currentImageIndex]; }
const RHI::Ptr<RHI::Image>& GetDistanceImage() { return m_distanceImage[m_currentImageIndex]; }
const RHI::Ptr<RHI::Image>& GetRelocationImage() { return m_relocationImage[m_currentImageIndex]; }
const RHI::Ptr<RHI::Image>& 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<RHI::Image> m_irradianceImage[ImageFrameCount];
RHI::Ptr<RHI::Image> m_distanceImage[ImageFrameCount];
RHI::Ptr<RHI::Image> m_relocationImage[ImageFrameCount];
RHI::Ptr<RHI::Image> m_classificationImage[ImageFrameCount];
uint32_t m_currentImageIndex = 0;
bool m_updateTextures = false;
bool m_irradianceClearRequired = true;
@@ -235,6 +242,7 @@ namespace AZ
Data::Instance<RPI::ShaderResourceGroup> m_borderUpdateRowDistanceSrg;
Data::Instance<RPI::ShaderResourceGroup> m_borderUpdateColumnDistanceSrg;
Data::Instance<RPI::ShaderResourceGroup> m_relocationSrg;
Data::Instance<RPI::ShaderResourceGroup> m_classificationSrg;
Data::Instance<RPI::ShaderResourceGroup> 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
@@ -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);
}
}
}

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