From f1d2d380fa7e73024f12d48f2ac4e5d8323018db Mon Sep 17 00:00:00 2001 From: Yuriy Toporovskyy Date: Mon, 21 Jun 2021 18:00:38 -0400 Subject: [PATCH 01/56] Bug fix for inability to change actor transform properties. Actor motion extraction applies at all times, sending transform change events to the Qt widget and overwriting any editing the user is doing. If the user is in the middle of editing, do not overwrite the current spinbox value. --- .../Components/Widgets/VectorInput.cpp | 37 ++++++++++++++++++- .../Components/Widgets/VectorInput.h | 19 ++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp index 7552fb0b50..d7e6cb85cd 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp @@ -43,7 +43,7 @@ VectorElement::VectorElement(QWidget* parent) VectorElement::layout(this, m_spinBox, m_label, false); connect(m_spinBox, QOverload::of(&AzQtComponents::DoubleSpinBox::valueChanged), this, &VectorElement::onValueChanged); - connect(m_spinBox, &AzQtComponents::DoubleSpinBox::editingFinished, this, &VectorElement::editingFinished); + connect(m_spinBox, &AzQtComponents::DoubleSpinBox::editingFinished, this, &VectorElement::onSpinBoxEditingFinished); } void VectorElement::SetLabel(const char* label) @@ -65,6 +65,22 @@ const QString& VectorElement::label() const void VectorElement::setValue(double newValue) { + // Nothing to do if the value is not actually changed + if (AZ::IsClose(m_value, newValue, std::numeric_limits::epsilon())) + { + return; + } + + // If the spin box currently has focus, the user is editing it, so we should not + // change the value from non-user input while they're in the middle of editing + if (m_spinBox->hasFocus()) + { + auto& deferredValue = m_deferredExternalValue.emplace(); + deferredValue.value = newValue; + deferredValue.prevValue = m_value; + return; + } + m_value = newValue; const QSignalBlocker blocker(m_spinBox); m_spinBox->setValue(newValue); @@ -72,6 +88,23 @@ void VectorElement::setValue(double newValue) emit valueChanged(newValue); } +void VectorElement::onSpinBoxEditingFinished() +{ + if (m_deferredExternalValue) + { + DeferredSetValue deferredValue = *m_deferredExternalValue; + m_deferredExternalValue.reset(); + + if (m_value == deferredValue.prevValue) + { + AZ_Warning("VectorElement", !m_spinBox->hasFocus(), "Editing finished but the spinbox still has focus"); + setValue(deferredValue.value); + } + } + + emit editingFinished(); +} + void VectorElement::setCoordinate(VectorElement::Coordinate coordinate) { setProperty(g_CoordinatePropertyName, QVariant::fromValue(coordinate)); @@ -254,7 +287,7 @@ VectorInput::VectorInput(QWidget* parent, int elementCount, int elementsPerRow, { OnValueChangedInElement(value, elementIndex); }); - connect(m_elements[elementIndex]->GetSpinBox(), &AzQtComponents::DoubleSpinBox::editingFinished, this, &VectorInput::editingFinished); + connect(m_elements[elementIndex], &VectorElement::editingFinished, this, &VectorInput::editingFinished); numberOfElementsRemaining--; } diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h index 8fb906a5cf..a9cd743830 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h +++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h @@ -14,6 +14,7 @@ #if !defined(Q_MOC_RUN) #include #include +#include #endif class QLabel; @@ -23,6 +24,12 @@ namespace AzQtComponents class Style; + #pragma warning(push) + + // 'AzQtComponents::VectorElement::m_deferredExternalValue': class 'AZStd::optional' needs to + // have dll-interface to be used by clients of class 'AzQtComponents::VectorElement' + #pragma warning(disable:4251) + /*! * \class VectorElement * \brief All flexible vector GUI's are constructed using a number vector elements. Each Vector @@ -103,7 +110,14 @@ namespace AzQtComponents void resizeLabel(); + void onSpinBoxEditingFinished(); + private: + struct DeferredSetValue + { + double prevValue, value; + }; + // m_labelText must be initialised before m_spinBox. It is used by editFieldRect, which gets // called by the spin box constructor. QString m_labelText = {}; @@ -113,8 +127,13 @@ namespace AzQtComponents double m_value = 0.0; //! Indicates whether the value in the spin box has been edited by the user or not bool m_wasValueEditedByUser = false; + //! If a value is editing, but not by the user, and the user is currently editing the value, + //! avoid overwriting their work, until they finish editing + AZStd::optional m_deferredExternalValue; }; + #pragma warning(pop) + ////////////////////////////////////////////////////////////////////////// /*! From fcbec8c202f52aabd329dca74270d3bae58e4ec8 Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Mon, 21 Jun 2021 15:53:33 -0400 Subject: [PATCH 02/56] Fixed removal of player's prefab on disconnect --- .../Source/Components/NetBindComponent.cpp | 6 +++++ .../ServerToClientConnectionData.cpp | 3 +++ .../EntityReplicationManager.h | 4 +++- .../NetworkEntity/NetworkEntityManager.cpp | 22 +++++-------------- 4 files changed, 18 insertions(+), 17 deletions(-) diff --git a/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp b/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp index 352bc92d1c..b81af9232e 100644 --- a/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp +++ b/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp @@ -623,6 +623,12 @@ namespace Multiplayer void NetBindComponent::HandleMarkedDirty() { + if (m_needsToBeStopped) + { + // Entity is about to deleted, it's not safe to proceed + return; + } + m_dirtiedEvent.Signal(); if (NetworkRoleHasController(GetNetEntityRole())) { diff --git a/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp b/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp index d2440d28f4..45ac9cd850 100644 --- a/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp +++ b/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp @@ -11,6 +11,7 @@ */ #include +#include namespace Multiplayer { @@ -44,6 +45,8 @@ namespace Multiplayer ServerToClientConnectionData::~ServerToClientConnectionData() { + AZ::Interface::Get()->GetNetworkEntityManager()->MarkForRemoval(m_controlledEntity); + m_entityReplicationManager.Clear(false); m_controlledEntityRemovedHandler.Disconnect(); } diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.h b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.h index 6172f30e8a..0db027d5f9 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.h +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/EntityReplication/EntityReplicationManager.h @@ -39,7 +39,9 @@ namespace Multiplayer { class IEntityDomain; class EntityReplicator; - + + //! @class EntityReplicationManager + //! @brief Handles replication of relevant entities for one connection. class EntityReplicationManager final { public: diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp b/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp index 3405abdc57..190dc20db1 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityManager.cpp @@ -282,15 +282,6 @@ namespace Multiplayer { //RewindableObjectState::ClearRewoundEntities(); - // Keystone has refactored these API's, rewrite required - //AZ::SliceComponent* rootSlice = nullptr; - //{ - // AzFramework::EntityContextId gameContextId = AzFramework::EntityContextId::CreateNull(); - // AzFramework::GameEntityContextRequestBus::BroadcastResult(gameContextId, &AzFramework::GameEntityContextRequests::GetGameEntityContextId); - // AzFramework::EntityContextRequestBus::BroadcastResult(rootSlice, &AzFramework::EntityContextRequests::GetRootSlice); - // AZ_Assert(rootSlice != nullptr, "Root slice returned was NULL"); - //} - AZStd::vector removeList; removeList.swap(m_removeList); for (NetEntityId entityId : removeList) @@ -304,13 +295,12 @@ namespace Multiplayer AZ_Assert(netBindComponent != nullptr, "NetBindComponent not found on networked entity"); netBindComponent->StopEntity(); - // Delete Entity, method depends on how it was loaded - // Try slice removal first, then force delete - //AZ::Entity* rawEntity = removeEntity.GetEntity(); - //if (!rootSlice->RemoveEntity(rawEntity)) - //{ - // delete rawEntity; - //} + // At the moment, we spawn one entity at a time and avoid Prefab API calls and never get a spawn ticket, + // so this is the right way for now. Once we support prefabs we can use AzFramework::SpawnableEntitiesContainer + // Additionally, prefabs spawning is async! Whereas we currently create entities immediately, see: + // @NetworkEntityManager::CreateEntitiesImmediate + AzFramework::GameEntityContextRequestBus::Broadcast( + &AzFramework::GameEntityContextRequestBus::Events::DestroyGameEntity, netBindComponent->GetEntityId()); } m_networkEntityTracker.erase(entityId); From fd021f065a4f160ad022b2fb6d88b4c977fd8b7b Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Tue, 22 Jun 2021 10:17:28 -0400 Subject: [PATCH 03/56] Fixes to codegen to avoid nullptr access during disconnects --- .../Code/Source/AutoGen/AutoComponent_Source.jinja | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja b/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja index 92ad524711..56fa769517 100644 --- a/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja +++ b/Gems/Multiplayer/Code/Source/AutoGen/AutoComponent_Source.jinja @@ -1673,12 +1673,18 @@ namespace {{ Component.attrib['Namespace'] }} void {{ ComponentBaseName }}::ActivateController(Multiplayer::EntityIsMigrating entityIsMigrating) { - m_controller.get()->Activate(entityIsMigrating); + if (m_controller) + { + m_controller->Activate(entityIsMigrating); + } } void {{ ComponentBaseName }}::DeactivateController(Multiplayer::EntityIsMigrating entityIsMigrating) { - m_controller.get()->Deactivate(entityIsMigrating); + if (m_controller) + { + m_controller->Deactivate(entityIsMigrating); + } } void {{ ComponentBaseName }}::NetworkAttach(Multiplayer::NetBindComponent* netBindComponent, Multiplayer::ReplicationRecord& currentEntityRecord, Multiplayer::ReplicationRecord& predictableEntityRecord) From 0f05791bd8228eaca24dfb10edfbd05a165bbaa1 Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Mon, 21 Jun 2021 20:28:43 -0400 Subject: [PATCH 04/56] Corrects ReplicationSet to be ordered so that logic in EntityReplicationManager::UpdateWindow is correct --- .../Multiplayer/ReplicationWindows/IReplicationWindow.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gems/Multiplayer/Code/Include/Multiplayer/ReplicationWindows/IReplicationWindow.h b/Gems/Multiplayer/Code/Include/Multiplayer/ReplicationWindows/IReplicationWindow.h index 5d90fc286b..8e51c30b2c 100644 --- a/Gems/Multiplayer/Code/Include/Multiplayer/ReplicationWindows/IReplicationWindow.h +++ b/Gems/Multiplayer/Code/Include/Multiplayer/ReplicationWindows/IReplicationWindow.h @@ -14,7 +14,7 @@ #include #include -#include +#include namespace Multiplayer { @@ -24,7 +24,7 @@ namespace Multiplayer NetEntityRole m_netEntityRole = NetEntityRole::InvalidRole; float m_priority = 0.0f; }; - using ReplicationSet = AZStd::unordered_map; + using ReplicationSet = AZStd::map; class IReplicationWindow { From 35364c94038cdbfec2de5a02bc04c77bfb415c4b Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Tue, 22 Jun 2021 23:13:23 -0400 Subject: [PATCH 05/56] Fixing a nullptr crash in NetworkTime --- Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp b/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp index f94a8c59d0..9a8a2c1bc1 100644 --- a/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp @@ -128,9 +128,11 @@ namespace Multiplayer for (NetworkEntityHandle entityHandle : m_rewoundEntities) { - NetBindComponent* netBindComponent = entityHandle.GetNetBindComponent(); + if (NetBindComponent* netBindComponent = entityHandle.GetNetBindComponent()) + { netBindComponent->NotifySyncRewindState(); } + } m_rewoundEntities.clear(); } } From e5aa56d565d19210ec40d183b965011c5fcdf65e Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Wed, 23 Jun 2021 09:38:43 -0400 Subject: [PATCH 06/56] Added a runtime switch to turn on/off removal of player spawnable on disconnect --- .../Source/ConnectionData/ServerToClientConnectionData.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp b/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp index 45ac9cd850..ca6de98911 100644 --- a/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp +++ b/Gems/Multiplayer/Code/Source/ConnectionData/ServerToClientConnectionData.cpp @@ -19,6 +19,7 @@ namespace Multiplayer AZ_CVAR(uint32_t, sv_ClientMaxRemoteEntitiesPendingCreationCount, AZStd::numeric_limits::max(), nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Maximum number of entities that we have sent to the client, but have not had a confirmation back from the client"); AZ_CVAR(uint32_t, sv_ClientMaxRemoteEntitiesPendingCreationCountPostInit, AZStd::numeric_limits::max(), nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Maximum number of entities that we will send to clients after gameplay has begun"); AZ_CVAR(AZ::TimeMs, sv_ClientEntityReplicatorPendingRemovalTimeMs, AZ::TimeMs{ 10000 }, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "How long should wait prior to removing an entity for the client through a change in the replication window, entity deletes are still immediate"); + AZ_CVAR(bool, sv_removeDefaultPlayerSpawnableOnDisconnect, true, nullptr, AZ::ConsoleFunctorFlags::DontReplicate, "Whether to remove player's default spawnable when a player disconnects"); ServerToClientConnectionData::ServerToClientConnectionData ( @@ -45,7 +46,10 @@ namespace Multiplayer ServerToClientConnectionData::~ServerToClientConnectionData() { - AZ::Interface::Get()->GetNetworkEntityManager()->MarkForRemoval(m_controlledEntity); + if (sv_removeDefaultPlayerSpawnableOnDisconnect) + { + AZ::Interface::Get()->GetNetworkEntityManager()->MarkForRemoval(m_controlledEntity); + } m_entityReplicationManager.Clear(false); m_controlledEntityRemovedHandler.Disconnect(); From b9dec79743c0076ece27998c1330aa63c53751c4 Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Wed, 23 Jun 2021 11:04:25 -0400 Subject: [PATCH 07/56] Clean up --- .../Multiplayer/Code/Source/Components/NetBindComponent.cpp | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp b/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp index b81af9232e..352bc92d1c 100644 --- a/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp +++ b/Gems/Multiplayer/Code/Source/Components/NetBindComponent.cpp @@ -623,12 +623,6 @@ namespace Multiplayer void NetBindComponent::HandleMarkedDirty() { - if (m_needsToBeStopped) - { - // Entity is about to deleted, it's not safe to proceed - return; - } - m_dirtiedEvent.Signal(); if (NetworkRoleHasController(GetNetEntityRole())) { From 93a34033a98f957805d7220c6f9c294695cc6f94 Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Wed, 23 Jun 2021 13:21:54 -0400 Subject: [PATCH 08/56] Correcting tabs --- Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp b/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp index 9a8a2c1bc1..5189ad9544 100644 --- a/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkTime/NetworkTime.cpp @@ -130,8 +130,8 @@ namespace Multiplayer { if (NetBindComponent* netBindComponent = entityHandle.GetNetBindComponent()) { - netBindComponent->NotifySyncRewindState(); - } + netBindComponent->NotifySyncRewindState(); + } } m_rewoundEntities.clear(); } From 5a061e409d799e96118f8d19fac047531254d645 Mon Sep 17 00:00:00 2001 From: AMZN-Olex <5432499+AMZN-Olex@users.noreply.github.com> Date: Wed, 23 Jun 2021 18:00:13 -0400 Subject: [PATCH 09/56] Fixed EntityDelete messages --- .../Code/Source/NetworkEntity/NetworkEntityUpdateMessage.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityUpdateMessage.cpp b/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityUpdateMessage.cpp index 3fe5a497cb..a9db87ec2c 100644 --- a/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityUpdateMessage.cpp +++ b/Gems/Multiplayer/Code/Source/NetworkEntity/NetworkEntityUpdateMessage.cpp @@ -64,10 +64,11 @@ namespace Multiplayer NetworkEntityUpdateMessage::NetworkEntityUpdateMessage(NetEntityId entityId, bool wasMigrated, bool takeOwnership) : m_entityId(entityId) + , m_isDelete(true) , m_wasMigrated(wasMigrated) , m_takeOwnership(takeOwnership) { - ; + // this is a delete entity message c-tor } NetworkEntityUpdateMessage& NetworkEntityUpdateMessage::operator =(NetworkEntityUpdateMessage&& rhs) From fb3940fa31000b5790eaee0a3bb9baca9ea0d1c1 Mon Sep 17 00:00:00 2001 From: mgwynn Date: Wed, 23 Jun 2021 21:05:17 -0400 Subject: [PATCH 10/56] More specific component error messaging and modes for native UI to prevent blocking dialog in some applications --- .../AzCore/AzCore/Component/Entity.cpp | 33 ++++++++++- .../AzCore/AzCore/Component/Entity.h | 2 +- .../AzCore/AzCore/Module/ModuleManager.cpp | 38 ++++++++++-- .../AzCore/AzCore/Module/ModuleManager.h | 8 ++- .../AzCore/AzCore/NativeUI/NativeUIRequests.h | 59 +++++++++++++++---- .../NativeUI/NativeUISystemComponent.cpp | 26 +++++--- .../NativeUISystemComponent_Android.cpp | 5 ++ .../NativeUI/NativeUISystemComponent_Mac.mm | 5 ++ .../NativeUISystemComponent_Windows.cpp | 5 ++ .../NativeUI/NativeUISystemComponent_iOS.mm | 5 ++ Code/Framework/AzCore/Tests/Components.cpp | 4 +- .../AzFramework/Application/Application.cpp | 2 +- Code/Sandbox/Editor/CryEdit.cpp | 15 ++++- .../Sandbox/Editor/EditorToolsApplication.cpp | 5 +- Gems/GraphCanvas/Code/Source/GraphCanvas.cpp | 3 +- .../Source/Translation/TranslationBuilder.cpp | 8 +++ 16 files changed, 186 insertions(+), 37 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/Component/Entity.cpp b/Code/Framework/AzCore/AzCore/Component/Entity.cpp index b7c161b53c..2d635b24b7 100644 --- a/Code/Framework/AzCore/AzCore/Component/Entity.cpp +++ b/Code/Framework/AzCore/AzCore/Component/Entity.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -932,13 +933,39 @@ namespace AZ return candidateInfo; } + static constexpr AZStd::string_view GetExtendedDependencySortFailureMessage(const Entity::DependencySortResult code) + { + switch (code) + { + case Entity::DependencySortResult::MissingRequiredService: + return { + "One or more components that provide required services are not in the list of components to activate.\n" + "This can often happen when an AZ::Module containing the required service wasn't loaded, check the log for details.\n" + "\n" + "This can also be caused by misconfigured services on the component or related components.\n" + "Check that the ccomponent's service functions ('GetProvidedServices', 'GetIncompatibleServices' etc) are accurate.\n"}; + case Entity::DependencySortResult::HasIncompatibleServices: + return { + "A component is incompatible with a service provided by another component.\n" + "Check that the component's service functions ('GetProvidedServices', 'GetIncompatibleServices' etc) are accurate.\n"}; + case Entity::DependencySortResult::DescriptorNotRegistered: + return { "A component descriptor was not registered with the ComponentApplication.\n" + "Make sure the component's descriptor is registered by adding it to the appropriate\n" + "AZ::Module's m_descriptors list." }; + default: + return {}; + } + } + // Shortcut for returning a FailedSortDetails as an AZ::Failure. static FailureValue FailureCode(Entity::DependencySortResult code, const char* formatMessage, ...) { va_list args; va_start(args, formatMessage); - - return Failure(Entity::FailedSortDetails{ code, AZStd::string::format_arg(formatMessage, args) }); + auto failure = Failure(Entity::FailedSortDetails{ code, AZStd::string::format_arg(formatMessage, args), + GetExtendedDependencySortFailureMessage(code) }); + va_end(args); + return failure; } // Function that creates a nice error message when incompatible components are found. @@ -1071,7 +1098,7 @@ namespace AZ ComponentDescriptorBus::EventResult(componentDescriptor, azrtti_typeid(component), &ComponentDescriptorBus::Events::GetDescriptor); if (!componentDescriptor) { - return FailureCode(DependencySortResult::MissingDescriptor, "No descriptor found for Component class '%s'.", component->RTTI_GetTypeName()); + return FailureCode(DependencySortResult::DescriptorNotRegistered, "No descriptor registered for Component class '%s'.", component->RTTI_GetTypeName()); } componentInfos.push_back(); diff --git a/Code/Framework/AzCore/AzCore/Component/Entity.h b/Code/Framework/AzCore/AzCore/Component/Entity.h index b7dcb70b9c..a4f6cdd217 100644 --- a/Code/Framework/AzCore/AzCore/Component/Entity.h +++ b/Code/Framework/AzCore/AzCore/Component/Entity.h @@ -78,7 +78,6 @@ namespace AZ HasCyclicDependency, ///< A cycle in component service dependencies was detected. HasIncompatibleServices, ///< A component is incompatible with a service provided by another component. DescriptorNotRegistered, ///< A component descriptor was not registered with the AZ::ComponentApplication. - MissingDescriptor, ///< Cannot find a component's ComponentDescriptor // Deprecated values DSR_OK = Success, @@ -320,6 +319,7 @@ namespace AZ { DependencySortResult m_code; AZStd::string m_message; + AZStd::string m_extendedMessage; }; using DependencySortOutcome = AZ::Outcome; diff --git a/Code/Framework/AzCore/AzCore/Module/ModuleManager.cpp b/Code/Framework/AzCore/AzCore/Module/ModuleManager.cpp index 0ce3ee5d8d..98fb9ceefc 100644 --- a/Code/Framework/AzCore/AzCore/Module/ModuleManager.cpp +++ b/Code/Framework/AzCore/AzCore/Module/ModuleManager.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -29,7 +30,7 @@ namespace { - static const char* s_moduleLoggingScope = "Module"; + static const char* s_moduleLoggingScope = "Module Manager"; } namespace AZ @@ -601,6 +602,25 @@ namespace AZ return {}; } + //========================================================================= + // HandleDependencySortError + //========================================================================= + void ModuleManager::HandleDependencySortError(const Entity::DependencySortOutcome& outcome) + { + // Print a short message to the log, and an extended message to the nativeUI (if available) + auto errorMessage = AZStd::string::format("Modules Entities cannot be activated.\n\n%s", outcome.GetError().m_message.c_str()); + AZ_Error(s_moduleLoggingScope, false, errorMessage.c_str()); + + auto nativeUI = AZ::Interface::Get(); + if (nativeUI) + { + errorMessage.append("\n\n"); + errorMessage.append(outcome.GetError().m_extendedMessage); + auto choice = nativeUI->DisplayBlockingDialog(s_moduleLoggingScope, errorMessage, { "Quit", "Ignore" }); + m_quitRequested = (choice == "Quit"); + } + } + //========================================================================= // OnEntityActivated //========================================================================= @@ -687,15 +707,24 @@ namespace AZ const Entity::ComponentArrayType& systemEntityComponents = systemEntity->GetComponents(); componentsToActivate.insert(componentsToActivate.begin(), systemEntityComponents.begin(), systemEntityComponents.end()); } - + // Topo sort components, activate them Entity::DependencySortOutcome outcome = ModuleEntity::DependencySort(componentsToActivate); if (!outcome.IsSuccess()) { - AZ_Error(s_moduleLoggingScope, false, "Modules Entities cannot be activated. %s", outcome.GetError().m_message.c_str()); + HandleDependencySortError(outcome); + if (m_quitRequested) + { + // Before letting the application quit, all the module entities should be restored back to init state + // because they never fully exited the activating state. + for (auto& moduleData : modulesToInit) + { + moduleData->m_moduleEntity->SetState(Entity::State::Init); + } + } return; } - + for (auto componentIt = componentsToActivate.begin(); componentIt != componentsToActivate.end(); ) { Component* component = *componentIt; @@ -711,7 +740,6 @@ namespace AZ ++componentIt; } } - // Activate the entities in the appropriate order for (Component* component : componentsToActivate) diff --git a/Code/Framework/AzCore/AzCore/Module/ModuleManager.h b/Code/Framework/AzCore/AzCore/Module/ModuleManager.h index 1cf6307b9c..0319766d2e 100644 --- a/Code/Framework/AzCore/AzCore/Module/ModuleManager.h +++ b/Code/Framework/AzCore/AzCore/Module/ModuleManager.h @@ -133,6 +133,9 @@ namespace AZ // Get the split list of system component tags specified at startup const AZStd::vector& GetSystemComponentTags() { return m_systemComponentTags; } + // Whether the user wants to quit the Application on errors rather than proceeding in a likely bad state + bool m_quitRequested = false; + protected: //////////////////////////////////////////////////////////////////////// // ModuleManagerRequestBus @@ -148,7 +151,10 @@ namespace AZ //! @return shared ptr to an ModuleData structure if the module is loaded and managed by the ModuleManager AZStd::shared_ptr GetLoadedModule(AZStd::string_view modulePath); - //////////////////////////////////////////////////////////////////////// + + //! On dependency sort errors, display error message with details. + //! Additionally send the message to NativeUI (if available) and ask user what to do, + void HandleDependencySortError(const Entity::DependencySortOutcome& outcome); //////////////////////////////////////////////////////////////////////// // EntityBus diff --git a/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h b/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h index f45295d221..c94ff0456c 100644 --- a/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h +++ b/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h @@ -17,7 +17,7 @@ namespace AZ::NativeUI { - enum AssertAction + enum class AssertAction { IGNORE_ASSERT = 0, IGNORE_ALL_ASSERTS, @@ -25,27 +25,60 @@ namespace AZ::NativeUI NONE, }; + enum class Mode + { + CONSOLE = 0, + UI, + }; + class NativeUIRequests { public: AZ_RTTI(NativeUIRequests, "{48361EE6-C1E7-4965-A13A-7425B2691817}"); virtual ~NativeUIRequests() = default; - // Waits for user to select an option before execution continues - // Returns the option string selected by the user - virtual AZStd::string DisplayBlockingDialog(const AZStd::string& /*title*/, const AZStd::string& /*message*/, const AZStd::vector& /*options*/) const { return ""; }; + //! Waits for user to select an option before execution continues + //! Returns the option string selected by the user + virtual AZStd::string DisplayBlockingDialog( + [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] const AZStd::vector&) const + { + return {}; + } - // Waits for user to select an option ('Ok' or optionally 'Cancel') before execution continues - // Returns the option string selected by the user - virtual AZStd::string DisplayOkDialog(const AZStd::string& /*title*/, const AZStd::string& /*message*/, bool /*showCancel*/) const { return ""; }; + //! Waits for user to select an option ('Ok' or optionally 'Cancel') before execution continues + //! Returns the option string selected by the user + virtual AZStd::string DisplayOkDialog( + [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] bool showCancel) const + { + return {}; + } - // Waits for user to select an option ('Yes', 'No' or optionally 'Cancel') before execution continues - // Returns the option string selected by the user - virtual AZStd::string DisplayYesNoDialog(const AZStd::string& /*title*/, const AZStd::string& /*message*/, bool /*showCancel*/) const { return ""; }; + //! Waits for user to select an option ('Yes', 'No' or optionally 'Cancel') before execution continues + //! Returns the option string selected by the user + virtual AZStd::string DisplayYesNoDialog( + [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] bool showCancel) const + { + return {}; + } - // Displays an assert dialog box - // Returns the action selected by the user - virtual AssertAction DisplayAssertDialog(const AZStd::string& /*message*/) const { return AssertAction::NONE; }; + //! Displays an assert dialog box + //! Returns the action selected by the user + virtual AssertAction DisplayAssertDialog([[maybe_unused]] const AZStd::string&) const { return AssertAction::NONE; } + + //! Set the operation mode of the native UI systen + void SetMode(NativeUI::Mode mode) + { + m_mode = mode; + } + + protected: + NativeUI::Mode m_mode = NativeUI::Mode::CONSOLE; }; class NativeUIEBusTraits diff --git a/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp b/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp index bed066018a..86808cc32a 100644 --- a/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp @@ -29,6 +29,11 @@ namespace AZ::NativeUI AssertAction NativeUISystem::DisplayAssertDialog(const AZStd::string& message) const { + if (m_mode == NativeUI::Mode::CONSOLE) + { + return AssertAction::NONE; + } + static const char* buttonNames[3] = { "Ignore", "Ignore All", "Break" }; AZStd::vector options; options.push_back(buttonNames[0]); @@ -36,8 +41,8 @@ namespace AZ::NativeUI options.push_back(buttonNames[1]); #endif options.push_back(buttonNames[2]); - AZStd::string result; - result = DisplayBlockingDialog("Assert Failed!", message, options); + + AZStd::string result = DisplayBlockingDialog("Assert Failed!", message, options); if (result.compare(buttonNames[0]) == 0) return AssertAction::IGNORE_ASSERT; @@ -51,9 +56,13 @@ namespace AZ::NativeUI AZStd::string NativeUISystem::DisplayOkDialog(const AZStd::string& title, const AZStd::string& message, bool showCancel) const { - AZStd::vector options; + if (m_mode == NativeUI::Mode::CONSOLE) + { + return {}; + } + + AZStd::vector options{ "OK" }; - options.push_back("OK"); if (showCancel) { options.push_back("Cancel"); @@ -64,10 +73,13 @@ namespace AZ::NativeUI AZStd::string NativeUISystem::DisplayYesNoDialog(const AZStd::string& title, const AZStd::string& message, bool showCancel) const { - AZStd::vector options; + if (m_mode == NativeUI::Mode::CONSOLE) + { + return {}; + } + + AZStd::vector options{ "Yes", "No" }; - options.push_back("Yes"); - options.push_back("No"); if (showCancel) { options.push_back("Cancel"); diff --git a/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp b/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp index b43044f0b3..abdb7c279c 100644 --- a/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp +++ b/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp @@ -24,6 +24,11 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { + if (m_mode == NativeUI::Mode::CONSOLE) + { + return {}; + } + AZ::Android::JNI::Object object("com/amazon/lumberyard/NativeUI/LumberyardNativeUI"); object.RegisterStaticMethod("DisplayDialog", "(Landroid/app/Activity;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V"); object.RegisterStaticMethod("GetUserSelection", "()Ljava/lang/String;"); diff --git a/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm b/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm index 801adaf4ea..09d5ce1e67 100644 --- a/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm +++ b/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm @@ -28,6 +28,11 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { + if (m_mode == NativeUI::Mode::CONSOLE) + { + return {}; + } + __block NSModalResponse response = -1; auto showDialog = ^() diff --git a/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp b/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp index f88cea5313..eaf651d2dd 100644 --- a/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp +++ b/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp @@ -247,6 +247,11 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { + if (m_mode == NativeUI::Mode::CONSOLE) + { + return {}; + } + if (options.size() >= MAX_ITEMS) { AZ_Assert(false, "Cannot create dialog box with more than %d buttons", (MAX_ITEMS - 1)); diff --git a/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm b/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm index 62f07f7483..ce5a9ae918 100644 --- a/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm +++ b/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm @@ -20,6 +20,11 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { + if (m_mode == NativeUI::Mode::CONSOLE) + { + return {}; + } + __block AZStd::string userSelection = ""; NSString* nsTitle = [NSString stringWithUTF8String:title.c_str()]; diff --git a/Code/Framework/AzCore/Tests/Components.cpp b/Code/Framework/AzCore/Tests/Components.cpp index 7801f69375..b8336072d3 100644 --- a/Code/Framework/AzCore/Tests/Components.cpp +++ b/Code/Framework/AzCore/Tests/Components.cpp @@ -909,14 +909,14 @@ namespace UnitTest EXPECT_EQ(2, m_entity->GetComponents().size()); } - TEST_F(ComponentDependency, ComponentWithoutDescriptor_FailsDueToMissingDescriptor) + TEST_F(ComponentDependency, ComponentWithoutDescriptor_FailsDueToUnregisteredDescriptor) { CreateComponents_ABCDE(); // delete ComponentB's descriptor ComponentDescriptorBus::Event(azrtti_typeid(), &ComponentDescriptorBus::Events::ReleaseDescriptor); - EXPECT_EQ(Entity::DependencySortResult::MissingDescriptor, m_entity->EvaluateDependencies()); + EXPECT_EQ(Entity::DependencySortResult::DescriptorNotRegistered, m_entity->EvaluateDependencies()); } TEST_F(ComponentDependency, StableSort_GetsSameResultsEveryTime) diff --git a/Code/Framework/AzFramework/AzFramework/Application/Application.cpp b/Code/Framework/AzFramework/AzFramework/Application/Application.cpp index bc0c9e537a..d83d402ab3 100644 --- a/Code/Framework/AzFramework/AzFramework/Application/Application.cpp +++ b/Code/Framework/AzFramework/AzFramework/Application/Application.cpp @@ -260,7 +260,7 @@ namespace AzFramework systemEntity->Activate(); AZ_Assert(systemEntity->GetState() == AZ::Entity::State::Active, "System Entity failed to activate."); - m_isStarted = true; + m_isStarted = (systemEntity->GetState() == AZ::Entity::State::Active); } void Application::PreModuleLoad() diff --git a/Code/Sandbox/Editor/CryEdit.cpp b/Code/Sandbox/Editor/CryEdit.cpp index fdeb8ce28e..dfccd87ff4 100644 --- a/Code/Sandbox/Editor/CryEdit.cpp +++ b/Code/Sandbox/Editor/CryEdit.cpp @@ -557,7 +557,6 @@ public: { bool dummy; QCommandLineParser parser; - QString appRootOverride; parser.addHelpOption(); parser.setSingleDashWordOptionMode(QCommandLineParser::ParseAsLongOptions); parser.setApplicationDescription(QObject::tr("Open 3D Engine")); @@ -643,7 +642,7 @@ public: option.second = parser.value(option.first.valueName); } - m_bExport = m_bExport | m_bExportTexture; + m_bExport = m_bExport || m_bExportTexture; const QStringList positionalArgs = parser.positionalArguments(); @@ -4362,6 +4361,18 @@ extern "C" int AZ_DLL_EXPORT CryEditMain(int argc, char* argv[]) { EditorInternal::EditorToolsApplication AZToolsApp(&argc, &argv); + { + CEditCommandLineInfo cmdInfo; + if (!cmdInfo.m_bAutotestMode && !cmdInfo.m_bConsoleMode && !cmdInfo.m_bExport && !cmdInfo.m_bExportTexture && + !cmdInfo.m_bNullRenderer && !cmdInfo.m_bMatEditMode && !cmdInfo.m_bTest) + { + if (auto nativeUI = AZ::Interface::Get(); nativeUI != nullptr) + { + nativeUI->SetMode(AZ::NativeUI::Mode::UI); + } + } + } + // The settings registry has been created by the AZ::ComponentApplication constructor at this point AZ::SettingsRegistryInterface& registry = *AZ::SettingsRegistry::Get(); AZ::SettingsRegistryMergeUtils::MergeSettingsToRegistry_AddBuildSystemTargetSpecialization( diff --git a/Code/Sandbox/Editor/EditorToolsApplication.cpp b/Code/Sandbox/Editor/EditorToolsApplication.cpp index 2e3d70795a..6a56a5c040 100644 --- a/Code/Sandbox/Editor/EditorToolsApplication.cpp +++ b/Code/Sandbox/Editor/EditorToolsApplication.cpp @@ -91,10 +91,12 @@ namespace EditorInternal void EditorToolsApplication::StartCommon(AZ::Entity* systemEntity) { AzToolsFramework::ToolsApplication::StartCommon(systemEntity); + + m_StartupAborted = m_moduleManager->m_quitRequested; + if (systemEntity->GetState() != AZ::Entity::State::Active) { m_StartupAborted = true; - return; } } @@ -106,6 +108,7 @@ namespace EditorInternal AzToolsFramework::ToolsApplication::Start({}, params); if (IsStartupAborted() || !m_systemEntity) { + AzToolsFramework::ToolsApplication::Stop(); return false; } return true; diff --git a/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp b/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp index cc9309d71f..64972929bd 100644 --- a/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp +++ b/Gems/GraphCanvas/Code/Source/GraphCanvas.cpp @@ -190,12 +190,12 @@ namespace GraphCanvas void GraphCanvasSystemComponent::Init() { - RegisterAssetHandler(); m_translationDatabase.Init(); } void GraphCanvasSystemComponent::Activate() { + RegisterAssetHandler(); RegisterTranslationBuilder(); AzFramework::AssetCatalogEventBus::Handler::BusConnect(); @@ -233,6 +233,7 @@ namespace GraphCanvas GraphCanvasRequestBus::Handler::BusDisconnect(); AZ::Data::AssetBus::MultiHandler::BusDisconnect(); + m_translationAssetWorker.Deactivate(); UnregisterAssetHandler(); } diff --git a/Gems/GraphCanvas/Code/Source/Translation/TranslationBuilder.cpp b/Gems/GraphCanvas/Code/Source/Translation/TranslationBuilder.cpp index f1fdeab62a..cbec7acabf 100644 --- a/Gems/GraphCanvas/Code/Source/Translation/TranslationBuilder.cpp +++ b/Gems/GraphCanvas/Code/Source/Translation/TranslationBuilder.cpp @@ -48,6 +48,14 @@ namespace GraphCanvas } } + void TranslationAssetWorker::Deactivate() + { + if (AZ::Data::AssetManager::Instance().GetHandler(AZ::Data::AssetType{ azrtti_typeid() })) + { + AZ::Data::AssetManager::Instance().UnregisterHandler(m_assetHandler.get()); + } + } + void TranslationAssetWorker::ShutDown() { m_isShuttingDown = true; From b9b55c3eed5e98a4d6c0e9cef2ab3ae455da95f2 Mon Sep 17 00:00:00 2001 From: pconroy Date: Wed, 23 Jun 2021 20:33:43 -0700 Subject: [PATCH 11/56] Show mouse cursor as busy when deleting project --- Code/Tools/ProjectManager/Source/ProjectsScreen.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp index 38d3d3b751..e079d97a8b 100644 --- a/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectsScreen.cpp @@ -41,6 +41,7 @@ #include #include #include +#include //#define DISPLAY_PROJECT_DEV_DATA true @@ -403,9 +404,11 @@ namespace O3DE::ProjectManager if (warningResult == QMessageBox::Yes) { + QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); // Remove project from O3DE and delete from disk HandleRemoveProject(projectPath); ProjectUtils::DeleteProjectFiles(projectPath); + QGuiApplication::restoreOverrideCursor(); } } } From 5b277cc06189485dfc833e52e610088d1f04dc95 Mon Sep 17 00:00:00 2001 From: pconroy Date: Wed, 23 Jun 2021 20:51:55 -0700 Subject: [PATCH 12/56] Show mouse cursor as busy when copying project --- Code/Tools/ProjectManager/Source/ProjectUtils.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Code/Tools/ProjectManager/Source/ProjectUtils.cpp b/Code/Tools/ProjectManager/Source/ProjectUtils.cpp index d2da1ef437..5b93e4faca 100644 --- a/Code/Tools/ProjectManager/Source/ProjectUtils.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectUtils.cpp @@ -14,6 +14,7 @@ #include #include #include +#include namespace O3DE::ProjectManager { @@ -118,9 +119,10 @@ namespace O3DE::ProjectManager return false; } - // TODO: Block UX and Notify User they need to wait - + QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); copyResult = CopyProject(origPath, newPath); + QGuiApplication::restoreOverrideCursor(); + } return copyResult; From c27b41776136b7d0ddd225041d3c49cfaf03bff7 Mon Sep 17 00:00:00 2001 From: Yuriy Toporovskyy Date: Thu, 24 Jun 2021 10:15:06 -0400 Subject: [PATCH 13/56] Address pr feedback - Use AZ warning macros instead of #pragma warning - std::numeric_limits->AZStd::numeric_limits - IsClose->IsCloseMag - AZ_Warning->AZ_Assert --- .../AzQtComponents/Components/Widgets/VectorInput.cpp | 5 +++-- .../AzQtComponents/Components/Widgets/VectorInput.h | 9 ++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp index d7e6cb85cd..84ec0a2d33 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include @@ -66,7 +67,7 @@ const QString& VectorElement::label() const void VectorElement::setValue(double newValue) { // Nothing to do if the value is not actually changed - if (AZ::IsClose(m_value, newValue, std::numeric_limits::epsilon())) + if (AZ::IsCloseMag(m_value, newValue, AZStd::numeric_limits::epsilon())) { return; } @@ -97,7 +98,7 @@ void VectorElement::onSpinBoxEditingFinished() if (m_value == deferredValue.prevValue) { - AZ_Warning("VectorElement", !m_spinBox->hasFocus(), "Editing finished but the spinbox still has focus"); + AZ_Assert(!m_spinBox->hasFocus(), "Editing finished but the spinbox still has focus"); setValue(deferredValue.value); } } diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h index a9cd743830..1c015eb584 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h +++ b/Code/Framework/AzQtComponents/AzQtComponents/Components/Widgets/VectorInput.h @@ -24,11 +24,9 @@ namespace AzQtComponents class Style; - #pragma warning(push) - // 'AzQtComponents::VectorElement::m_deferredExternalValue': class 'AZStd::optional' needs to // have dll-interface to be used by clients of class 'AzQtComponents::VectorElement' - #pragma warning(disable:4251) + AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING /*! * \class VectorElement @@ -115,7 +113,8 @@ namespace AzQtComponents private: struct DeferredSetValue { - double prevValue, value; + double prevValue; + double value; }; // m_labelText must be initialised before m_spinBox. It is used by editFieldRect, which gets @@ -132,7 +131,7 @@ namespace AzQtComponents AZStd::optional m_deferredExternalValue; }; - #pragma warning(pop) + AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING ////////////////////////////////////////////////////////////////////////// From 703d4f5c50f09deb7a12e579a0b01ff27cdc2d5c Mon Sep 17 00:00:00 2001 From: rppotter Date: Thu, 24 Jun 2021 08:19:32 -0700 Subject: [PATCH 14/56] Rework AWSCore Menu. Fix links etc. --- .../Editor/Constants/AWSCoreEditorMenuLinks.h | 33 +++++++++-------- .../Editor/Constants/AWSCoreEditorMenuNames.h | 35 ++++++++++--------- .../Source/Editor/UI/AWSCoreEditorMenu.cpp | 15 +++++--- 3 files changed, 47 insertions(+), 36 deletions(-) diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h index e84900e138..bcc4c711c8 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h @@ -11,38 +11,43 @@ namespace AWSCore { static constexpr const char NewToAWSUrl[] = "https://docs.o3de.org/docs/user-guide/gems/reference/aws/"; - static constexpr const char AWSAndScriptCanvasUrl[] = "https://docs.o3de.org/docs/user-guide/components/reference/aws/"; - static constexpr const char AWSAndComponentsUrl[] = "https://docs.o3de.org/docs/user-guide/components/reference/aws/"; - static constexpr const char CallAWSResourcesUrl[] = "https://docs.o3de.org/docs/user-guide/components/reference/aws/"; + static constexpr const char AWSAndGettingStartedUrl[] = + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/getting-started/"; + static constexpr const char AWSAndResourceMappingsUrl[] = + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/resource-mapping-files/"; + static constexpr const char AWSAndResourceMappingToolUrl[] = + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/resource-mapping-tool/"; + static constexpr const char AWSAndScriptingUrl[] = + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/scripting/"; static constexpr const char AWSCredentialConfigurationUrl[] = "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/configuring-credentials/"; static constexpr const char AWSClientAuthGemOverviewUrl[] = "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; + static constexpr const char AWSClientAuthGemSetupUrl[] = + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/setup/"; static constexpr const char AWSClientAuthCDKAndResourcesUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/setup/#3-deploy-the-cdk-application"; static constexpr const char AWSClientAuthScriptCanvasAndLuaUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/scripting/"; static constexpr const char AWSClientAuth3rdPartyAuthProviderUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/authentication-providers/"; static constexpr const char AWSClientAuthCustomAuthProviderUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; - static constexpr const char AWSClientAuthPlatformSpecificUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/authentication-providers/#using-a-custom-provider"; static constexpr const char AWSClientAuthAPIReferenceUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/cpp-api/"; static constexpr const char AWSMetricsGemOverviewUrl[] = "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; static constexpr const char AWSMetricsSetupGemUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/setup/"; static constexpr const char AWSMetricsScriptingUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/scripting/"; static constexpr const char AWSMetricsAPIReferenceUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/cpp-api/"; static constexpr const char AWSMetricsAdvancedTopicsUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; + "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/advanced-topics/"; static constexpr const char AWSMetricsSettingsUrl[] = "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; } // namespace AWSCore diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h index 5bc47964f4..3cb45ad521 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h @@ -11,29 +11,30 @@ namespace AWSCore { static constexpr const char NewToAWSActionText[] = "Getting started with AWS?"; - static constexpr const char AWSAndO3DEGlobalDocsText[] = "AWS & O3DE global docs"; - static constexpr const char AWSAndScriptCanvasActionText[] = "AWS && ScriptCanvas"; - static constexpr const char AWSAndComponentsActionText[] = "AWS & Components"; - static constexpr const char CallAWSResourcesActionText[] = "Call AWS resources"; + static constexpr const char AWSAndO3DEGlobalDocsText[] = "AWS && O3DE"; + static constexpr const char AWSAndO3DEGettingStartedActionText[] = "Getting started"; + static constexpr const char AWSAndO3DEMappingsFileActionText[] = "Use AWS resources in O3DE"; + static constexpr const char AWSAndO3DEResourceToolActionText[] = "Building a resource mappings file"; + static constexpr const char AWSAndO3DEScriptingActionText[] = "Scripting reference"; static constexpr const char AWSCredentialConfigurationActionText[] = "AWS credential configuration"; static constexpr const char AWSResourceMappingToolActionText[] = "AWS Resource Mapping Tool..."; - static constexpr const char AWSClientAuthActionText[] = "Client Auth"; - static constexpr const char AWSClientAuthGemOverviewActionText[] = "Gem Overview"; - static constexpr const char AWSClientAuthCDKAndResourcesActionText[] = "CDK Application and Resource Mappings"; - static constexpr const char AWSClientAuthScriptCanvasAndLuaActionText[] = "Script Canvas and Lua"; - static constexpr const char AWSClientAuth3rdPartyAuthProviderActionText[] = "3rd Party developer Authentication Provider support"; - static constexpr const char AWSClientAuthCustomAuthProviderActionText[] = "Custom developer Authentication Provider support"; - static constexpr const char AWSClientAuthPlatformSpecificActionText[] = "Platform specific Callouts"; - static constexpr const char AWSClientAuthAPIReferenceActionText[] = "API Reference"; + static constexpr const char AWSClientAuthActionText[] = "Client Auth Gem"; + static constexpr const char AWSClientAuthGemOverviewActionText[] = "Client Auth Gem overview"; + static constexpr const char AWSClientAuthGemSetupActionText[] = "Setup Client Auth Gem"; + static constexpr const char AWSClientAuthCDKAndResourcesActionText[] = "CDK application and resource mappings"; + static constexpr const char AWSClientAuthScriptCanvasAndLuaActionText[] = "Scripting reference"; + static constexpr const char AWSClientAuth3rdPartyAuthProviderActionText[] = "3rd Party developer authentication provider support"; + static constexpr const char AWSClientAuthCustomAuthProviderActionText[] = "Custom developer authentication provider support"; + static constexpr const char AWSClientAuthAPIReferenceActionText[] = "API reference"; - static constexpr const char AWSMetricsActionText[] = "Metrics"; - static constexpr const char AWSMetricsGemOverviewActionText[] = "Metrics Overview"; + static constexpr const char AWSMetricsActionText[] = "Metrics Gem"; + static constexpr const char AWSMetricsGemOverviewActionText[] = "Metrics Gem overview"; static constexpr const char AWSMetricsSetupGemActionText[] = "Setup Metrics Gem"; - static constexpr const char AWSMetricsScriptingActionText[] = "Scripting with AWS Metrics"; - static constexpr const char AWSMetricsAPIReferenceActionText[] = "C++ API with AWS Metrics Gem"; + static constexpr const char AWSMetricsScriptingActionText[] = "Scripting reference"; + static constexpr const char AWSMetricsAPIReferenceActionText[] = "API reference"; static constexpr const char AWSMetricsAdvancedTopicsActionText[] = "Advanced topics"; - static constexpr const char AWSMetricsSettingsActionText[] = "Metrics Settings"; + static constexpr const char AWSMetricsSettingsActionText[] = "Metrics settings"; } // namespace AWSCore diff --git a/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp b/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp index 52a4ce2f16..8c61fa722d 100644 --- a/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp +++ b/Gems/AWSCore/Code/Source/Editor/UI/AWSCoreEditorMenu.cpp @@ -131,9 +131,14 @@ namespace AWSCore { QMenu* globalDocsMenu = this->addMenu(QObject::tr(AWSAndO3DEGlobalDocsText)); - globalDocsMenu->addAction(AddExternalLinkAction(AWSAndScriptCanvasActionText, AWSAndScriptCanvasUrl, ":/Notifications/link.svg")); - globalDocsMenu->addAction(AddExternalLinkAction(AWSAndComponentsActionText, AWSAndComponentsUrl, ":/Notifications/link.svg")); - globalDocsMenu->addAction(AddExternalLinkAction(CallAWSResourcesActionText, CallAWSResourcesUrl, ":/Notifications/link.svg")); + globalDocsMenu->addAction( + AddExternalLinkAction(AWSAndO3DEGettingStartedActionText, AWSAndGettingStartedUrl, ":/Notifications/link.svg")); + globalDocsMenu->addAction( + AddExternalLinkAction(AWSAndO3DEMappingsFileActionText, AWSAndResourceMappingsUrl, ":/Notifications/link.svg")); + globalDocsMenu->addAction( + AddExternalLinkAction(AWSAndO3DEResourceToolActionText, AWSAndResourceMappingToolUrl, ":/Notifications/link.svg")); + globalDocsMenu->addAction( + AddExternalLinkAction(AWSAndO3DEScriptingActionText, AWSAndScriptingUrl, ":/Notifications/link.svg")); AddSpaceForIcon(globalDocsMenu); } @@ -158,6 +163,8 @@ namespace AWSCore subMenu->addAction(AddExternalLinkAction( AWSClientAuthGemOverviewActionText, AWSClientAuthGemOverviewUrl, ":/Notifications/link.svg")); + subMenu->addAction(AddExternalLinkAction( + AWSClientAuthGemSetupActionText, AWSClientAuthGemSetupUrl, ":/Notifications/link.svg")); subMenu->addAction(AddExternalLinkAction( AWSClientAuthCDKAndResourcesActionText, AWSClientAuthCDKAndResourcesUrl, ":/Notifications/link.svg")); subMenu->addAction(AddExternalLinkAction( @@ -166,8 +173,6 @@ namespace AWSCore AWSClientAuth3rdPartyAuthProviderActionText, AWSClientAuth3rdPartyAuthProviderUrl, ":/Notifications/link.svg")); subMenu->addAction(AddExternalLinkAction( AWSClientAuthCustomAuthProviderActionText, AWSClientAuthCustomAuthProviderUrl, ":/Notifications/link.svg")); - subMenu->addAction(AddExternalLinkAction( - AWSClientAuthPlatformSpecificActionText, AWSClientAuthPlatformSpecificUrl, ":/Notifications/link.svg")); subMenu->addAction(AddExternalLinkAction( AWSClientAuthAPIReferenceActionText, AWSClientAuthAPIReferenceUrl, ":/Notifications/link.svg")); From 648a7d85cc34fa88ebe8a9b7ce9d24353ee3f416 Mon Sep 17 00:00:00 2001 From: mriegger Date: Thu, 24 Jun 2021 10:26:45 -0700 Subject: [PATCH 15/56] Adjust Pdo shadow map bias --- .../Materials/Types/EnhancedPBR_Shadowmap_WithPS.azsl | 5 ++--- .../Assets/Materials/Types/StandardPBR_ForwardPass.azsl | 2 +- .../Materials/Types/StandardPBR_Shadowmap_WithPS.azsl | 7 +++---- .../Assets/ShaderLib/Atom/Features/Shadow/Shadow.azsli | 5 +++++ 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Shadowmap_WithPS.azsl b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Shadowmap_WithPS.azsl index 6d3d4f2ea5..bea87ba336 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Shadowmap_WithPS.azsl +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Shadowmap_WithPS.azsl @@ -15,6 +15,7 @@ #include #include #include +#include #include "MaterialInputs/AlphaInput.azsli" #include "MaterialInputs/ParallaxInput.azsli" @@ -78,8 +79,6 @@ PSDepthOutput MainPS(VertexOutput IN, bool isFrontFace : SV_IsFrontFace) if(ShouldHandleParallaxInDepthShaders()) { - static const float ShadowMapDepthBias = 0.000001; - float3 tangents[UvSetCount] = { IN.m_tangent.xyz, IN.m_tangent.xyz }; float3 bitangents[UvSetCount] = { IN.m_bitangent.xyz, IN.m_bitangent.xyz }; @@ -92,7 +91,7 @@ PSDepthOutput MainPS(VertexOutput IN, bool isFrontFace : SV_IsFrontFace) ObjectSrg::GetWorldMatrix(), uvMatrix, uvMatrixInverse, IN.m_uv[MaterialSrg::m_parallaxUvIndex], IN.m_worldPosition, OUT.m_depth); - OUT.m_depth += ShadowMapDepthBias; + OUT.m_depth += PdoShadowMapBias; } // Clip Alpha diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl index 23e4ef0c10..e370396b56 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl @@ -126,7 +126,7 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float ObjectSrg::GetWorldMatrix(), uvMatrix, uvMatrixInverse, IN.m_uv[MaterialSrg::m_parallaxUvIndex], IN.m_worldPosition, depthNDC, IN.m_position.w, displacementIsClipped); - // Adjust directional light shadow coorinates for parallax correction + // Adjust directional light shadow coordinates for parallax correction if(o_parallax_enablePixelDepthOffset) { const uint shadowIndex = ViewSrg::m_shadowIndexDirectionalLight; diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Shadowmap_WithPS.azsl b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Shadowmap_WithPS.azsl index 8b6fee849e..8203c21243 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Shadowmap_WithPS.azsl +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Shadowmap_WithPS.azsl @@ -15,6 +15,7 @@ #include #include #include +#include #include "MaterialInputs/AlphaInput.azsli" #include "MaterialInputs/ParallaxInput.azsli" @@ -78,9 +79,7 @@ PSDepthOutput MainPS(VertexOutput IN, bool isFrontFace : SV_IsFrontFace) OUT.m_depth = IN.m_position.z; if(ShouldHandleParallaxInDepthShaders()) - { - static const float ShadowMapDepthBias = 0.000001; - + { float3 tangents[UvSetCount] = { IN.m_tangent.xyz, IN.m_tangent.xyz }; float3 bitangents[UvSetCount] = { IN.m_bitangent.xyz, IN.m_bitangent.xyz }; PrepareGeneratedTangent(IN.m_normal, IN.m_worldPosition, isFrontFace, IN.m_uv, UvSetCount, tangents, bitangents); @@ -92,7 +91,7 @@ PSDepthOutput MainPS(VertexOutput IN, bool isFrontFace : SV_IsFrontFace) ObjectSrg::GetWorldMatrix(), uvMatrix, uvMatrixInverse, IN.m_uv[MaterialSrg::m_parallaxUvIndex], IN.m_worldPosition, OUT.m_depth); - OUT.m_depth += ShadowMapDepthBias; + OUT.m_depth += PdoShadowMapBias; } // Alpha diff --git a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/Shadow.azsli b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/Shadow.azsli index 138ea38562..091d886102 100644 --- a/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/Shadow.azsli +++ b/Gems/Atom/Feature/Common/Assets/ShaderLib/Atom/Features/Shadow/Shadow.azsli @@ -14,6 +14,11 @@ static const float EsmExponentialShift = 87.; // slightly smaller value of log(FLT_MAX) +// Slope-scale depth bias doesn't work with depth writes. Apply a small bias with this value so that bicubic filtering +// won't have shadow acne +// Longer-term, we should probably try and implement Normal Offset biasing [GFX TODO][ATOM-15846] +static const float PdoShadowMapBias = 0.001; + // Must match the equivalent enumeration in ShadowConstants.h enum PcfFilterMethod { PcfFilterMethod_BoundarySearch = 0, PcfFilterMethod_Bicubic = 1 }; From 612d2b9872fa20762d1b70a6137654f2c01de65a Mon Sep 17 00:00:00 2001 From: Chris Galvan Date: Thu, 24 Jun 2021 15:14:20 -0500 Subject: [PATCH 16/56] [LYN-4782] Make sure Entity notifications are being listened to if a level was already opened before Landscape Canvas was launched. --- Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp b/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp index 24dfcf4ff6..f97d4e913e 100644 --- a/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp +++ b/Gems/LandscapeCanvas/Code/Source/Editor/MainWindow.cpp @@ -462,6 +462,13 @@ namespace LandscapeCanvasEditor CrySystemEventBus::Handler::BusConnect(); AZ::EntitySystemBus::Handler::BusConnect(); + // Listen for Entity notifications if a level is already loaded + // Otherwise, we will connect/disconnect from this bus when levels are loaded/closed + if (GetLegacyEditor()->IsLevelLoaded()) + { + AzToolsFramework::EditorEntityContextNotificationBus::Handler::BusConnect(); + } + // Create our temporary Node Inspector using a Pinned Inspector m_customNodeInspector = aznew CustomNodeInspectorDockWidget(this); From 273b2c30b79440fbab2a19b73d47003a5483e8ee Mon Sep 17 00:00:00 2001 From: Terry Michaels Date: Thu, 24 Jun 2021 15:16:17 -0500 Subject: [PATCH 17/56] Updated About dialog to point to the correct EULA page and updated text --- Code/Sandbox/Editor/AboutDialog.cpp | 9 +-------- Code/Sandbox/Editor/AboutDialog.h | 1 - Code/Sandbox/Editor/AboutDialog.ui | 17 ++--------------- Code/Sandbox/Editor/CryEdit.cpp | 4 ++-- 4 files changed, 5 insertions(+), 26 deletions(-) diff --git a/Code/Sandbox/Editor/AboutDialog.cpp b/Code/Sandbox/Editor/AboutDialog.cpp index 5e2b5c2aa8..e1ec7756c8 100644 --- a/Code/Sandbox/Editor/AboutDialog.cpp +++ b/Code/Sandbox/Editor/AboutDialog.cpp @@ -32,7 +32,6 @@ CAboutDialog::CAboutDialog(QString versionText, QString richTextCopyrightNotice, setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); connect(m_ui->m_transparentAgreement, &QLabel::linkActivated, this, &CAboutDialog::OnCustomerAgreement); - connect(m_ui->m_transparentNotice, &QLabel::linkActivated, this, &CAboutDialog::OnPrivacyNotice); m_ui->m_transparentTrademarks->setText(versionText); @@ -41,7 +40,6 @@ CAboutDialog::CAboutDialog(QString versionText, QString richTextCopyrightNotice, m_ui->m_transparentAllRightReserved->setText(richTextCopyrightNotice); m_ui->m_transparentAgreement->setObjectName("link"); - m_ui->m_transparentNotice->setObjectName("link"); setStyleSheet( "CAboutDialog > QLabel#copyrightNotice { color: #AAAAAA; font-size: 9px; }\ CAboutDialog > QLabel#link { text-decoration: underline; color: #00A1C9; }"); @@ -81,12 +79,7 @@ void CAboutDialog::mouseReleaseEvent(QMouseEvent* event) void CAboutDialog::OnCustomerAgreement() { - QDesktopServices::openUrl(QUrl(QStringLiteral("https://lfprojects.org/policies/terms-of-use/"))); -} - -void CAboutDialog::OnPrivacyNotice() -{ - QDesktopServices::openUrl(QUrl(QStringLiteral("https://lfprojects.org/policies/privacy-policy/"))); + QDesktopServices::openUrl(QUrl(QStringLiteral("https://www.o3debinaries.org/license"))); } #include diff --git a/Code/Sandbox/Editor/AboutDialog.h b/Code/Sandbox/Editor/AboutDialog.h index fe07f12416..ee31020240 100644 --- a/Code/Sandbox/Editor/AboutDialog.h +++ b/Code/Sandbox/Editor/AboutDialog.h @@ -30,7 +30,6 @@ public: private: void OnCustomerAgreement(); - void OnPrivacyNotice(); void mouseReleaseEvent(QMouseEvent* event) override; void paintEvent(QPaintEvent* event) override; diff --git a/Code/Sandbox/Editor/AboutDialog.ui b/Code/Sandbox/Editor/AboutDialog.ui index a6f44eea9d..48ec82da5c 100644 --- a/Code/Sandbox/Editor/AboutDialog.ui +++ b/Code/Sandbox/Editor/AboutDialog.ui @@ -92,7 +92,7 @@ - Open 3D Engine Editor + O3DE Editor Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -102,7 +102,7 @@ - Development version + Developer Preview Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop @@ -164,19 +164,6 @@ - - - - Privacy Notice - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - diff --git a/Code/Sandbox/Editor/CryEdit.cpp b/Code/Sandbox/Editor/CryEdit.cpp index 2002e741a5..de8adb7d1a 100644 --- a/Code/Sandbox/Editor/CryEdit.cpp +++ b/Code/Sandbox/Editor/CryEdit.cpp @@ -923,9 +923,9 @@ QString FormatRichTextCopyrightNotice() { // copyright symbol is HTML Entity = © QString copyrightHtmlSymbol = "©"; - QString copyrightString = QObject::tr("Open 3D Engine and related materials Copyright %1 %2 Amazon Web Services, Inc., its affiliates or licensors.
By accessing or using these materials, you agree to the terms of the AWS Customer Agreement."); + QString copyrightString = QObject::tr("Copyright %1 Contributors to the Open 3D Engine Project"); - return copyrightString.arg(copyrightHtmlSymbol).arg(O3DE_COPYRIGHT_YEAR); + return copyrightString.arg(copyrightHtmlSymbol); } ///////////////////////////////////////////////////////////////////////////// From 5d79ee593dfdfa085d4d8cad6d1ebc0eec5b9734 Mon Sep 17 00:00:00 2001 From: Eric Phister <52085794+amzn-phist@users.noreply.github.com> Date: Thu, 24 Jun 2021 15:53:56 -0500 Subject: [PATCH 18/56] Fixes a crash with UI interaction (#1567) When Wwise Gem is not enabled, this will fix a nullptr deref crash when interacting with Audio Controls Editor. Also fixes another issue in the same function where getting the current level name was garbage because a temporary QString was created and immediately destructed. --- .../Source/Editor/AudioControlsEditorWindow.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp b/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp index 7625f44a66..abe5a8a58e 100644 --- a/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp +++ b/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp @@ -290,6 +290,12 @@ namespace AudioControls //-------------------------------------------------------------------------------------------// void CAudioControlsEditorWindow::UpdateAudioSystemData() { + IAudioSystemEditor* audioSystemImpl = CAudioControlsEditorPlugin::GetAudioSystemEditorImpl(); + if (!audioSystemImpl) + { + return; + } + Audio::SAudioRequest oConfigDataRequest; oConfigDataRequest.nFlags = Audio::eARF_PRIORITY_HIGH; @@ -310,17 +316,17 @@ namespace AudioControls oConfigDataRequest.pData = &oParseGlobalRequestData; Audio::AudioSystemRequestBus::Broadcast(&Audio::AudioSystemRequestBus::Events::PushRequest, oConfigDataRequest); - //parse the AudioSystem level-specific config data - const char* levelName = GetIEditor()->GetLevelName().toUtf8().data(); + // parse the AudioSystem level-specific config data + AZStd::string levelName{ GetIEditor()->GetLevelName().toUtf8().data() }; AZ::StringFunc::Path::Join(sControlsPath.c_str(), "levels", sControlsPath); - AZ::StringFunc::Path::Join(sControlsPath.c_str(), levelName, sControlsPath); + AZ::StringFunc::Path::Join(sControlsPath.c_str(), levelName.c_str(), sControlsPath); Audio::SAudioManagerRequestData oParseLevelRequestData(sControlsPath.c_str(), Audio::eADS_LEVEL_SPECIFIC); oConfigDataRequest.pData = &oParseLevelRequestData; Audio::AudioSystemRequestBus::Broadcast(&Audio::AudioSystemRequestBus::Events::PushRequest, oConfigDataRequest); // inform the middleware specific plugin that the data has been saved // to disk (in case it needs to update something) - CAudioControlsEditorPlugin::GetAudioSystemEditorImpl()->DataSaved(); + audioSystemImpl->DataSaved(); } //-------------------------------------------------------------------------------------------// From 65f8182520d11f414590c5d2d6b7e75cabe38961 Mon Sep 17 00:00:00 2001 From: moudgils <47460854+moudgils@users.noreply.github.com> Date: Thu, 24 Jun 2021 14:26:11 -0700 Subject: [PATCH 19/56] Fix mac image preview pass. ImagePreviewPass correctly uses the swapchain texture to render into. (#1566) * Fix ImagePreviewPass on Mac + minor cleanup --- Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.cpp | 13 ++-- Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.h | 4 +- .../RHI/Metal/Code/Source/RHI/SwapChain.cpp | 62 +++++++++++-------- .../Code/Source/RPI.Public/Model/ModelLod.cpp | 5 +- 4 files changed, 46 insertions(+), 38 deletions(-) diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.cpp index ccae1fef23..00e5ed979b 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.cpp @@ -101,11 +101,11 @@ namespace AZ for (const RHI::ImageScopeAttachment* scopeAttachment : GetImageAttachments()) { - m_isSwapChainScope = scopeAttachment->IsSwapChainAttachment() && scopeAttachment->HasUsage(RHI::ScopeAttachmentUsage::RenderTarget); - if(m_isSwapChainScope) + m_isWritingToSwapChainScope = scopeAttachment->IsSwapChainAttachment() && scopeAttachment->HasUsage(RHI::ScopeAttachmentUsage::RenderTarget); + if(m_isWritingToSwapChainScope) { - //Check if the scope attachment for the next scope if to capture a frame. - //We can use this information during the call to nextdrawable. + //Check if the scope attachment for the next scope is going to capture the frame. + //We can use this information to cache the swapchain texture for reading purposes. const RHI::ScopeAttachment* frameCaptureScopeAttachment = scopeAttachment->GetNext(); if(frameCaptureScopeAttachment) { @@ -178,7 +178,7 @@ namespace AZ id renderTargetTexture = imageViewMtlTexture; m_renderPassDescriptor.colorAttachments[colorAttachmentIndex].texture = renderTargetTexture; - if(!m_isSwapChainScope) + if(!m_isWritingToSwapChainScope) { if(renderTargetTexture.textureType == MTLTextureType3D) { @@ -280,7 +280,7 @@ namespace AZ { AZ_TRACE_METHOD(); - if(m_isSwapChainScope) + if(m_isWritingToSwapChainScope) { //Metal requires you to request for swapchain drawable as late as possible in the frame. Hence we call for the drawable //here and attach it directly to the colorAttachment. The assumption here is that this scope should be the @@ -294,7 +294,6 @@ namespace AZ const bool isPrologue = commandListIndex == 0; commandList.SetName(GetId()); commandList.SetRenderPassInfo(m_renderPassDescriptor, m_scopeMultisampleState, m_residentHeaps); - if (isPrologue) { diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.h b/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.h index df34b3a191..792fdee201 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.h +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/Scope.h @@ -119,8 +119,8 @@ namespace AZ AZStd::vector m_queryPoolAttachments; - /// Used to check if the current scope is a swapchain scope - bool m_isSwapChainScope = false; + /// Used to check if the current scope is writing to a swapchain texture + bool m_isWritingToSwapChainScope = false; /// Used to check if the current scope is a swapchain scope and the next scope will be used to capture the current frame bool m_isSwapChainAndFrameCaptureEnabled = false; diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp index b924c87dca..f8adc55125 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/SwapChain.cpp @@ -190,35 +190,43 @@ namespace AZ AZ_ATOM_PROFILE_FUNCTION("RHI", "SwapChain::RequestDrawable"); m_metalView.metalLayer.framebufferOnly = !isFrameCaptureEnabled; const uint32_t currentImageIndex = GetCurrentImageIndex(); - m_drawables[currentImageIndex] = [m_metalView.metalLayer nextDrawable]; - AZ_Assert(m_drawables[currentImageIndex], "Drawable can not be null"); - - //Need this to make sure the drawable is alive for Present call - [m_drawables[currentImageIndex] retain]; - - id mtlDrawableTexture = m_drawables[currentImageIndex].texture; - - if(isFrameCaptureEnabled) + if(m_drawables[currentImageIndex]) { - //If the swapchainimage's m_memoryView does not exist create one and if it already exists override the - //native texture pointer with the one received from the driver (i.e nextDrawable call). - Image* swapChainImage = static_cast(GetCurrentImage()); - if( swapChainImage->GetMemoryView().GetMemory()) - { - swapChainImage->GetMemoryView().GetMemory()->OverrideResource(mtlDrawableTexture); - } - else - { - RHI::ImageDescriptor imgDescriptor = swapChainImage->GetDescriptor(); - imgDescriptor.m_size.m_width = mtlDrawableTexture.width; - imgDescriptor.m_size.m_height = mtlDrawableTexture.height; - swapChainImage->SetDescriptor(imgDescriptor); - - RHI::Ptr resc = MetalResource::Create(MetalResourceDescriptor{mtlDrawableTexture, ResourceType::MtlTextureType, swapChainImage->m_isSwapChainImage}); - swapChainImage->m_memoryView = MemoryView(resc, 0, mtlDrawableTexture.allocatedSize, 0); - } + //We already have a drawable for this frame. Lets return that + //This can happen if a pass comes after Swapchain and wants to write to the swapchain texture + return m_drawables[currentImageIndex].texture; + } + else + { + m_drawables[currentImageIndex] = [m_metalView.metalLayer nextDrawable]; + AZ_Assert(m_drawables[currentImageIndex], "Drawable can not be null"); + + //Need this to make sure the drawable is alive for Present call + [m_drawables[currentImageIndex] retain]; + + id mtlDrawableTexture = m_drawables[currentImageIndex].texture; + if(isFrameCaptureEnabled) + { + //If the swapchainimage's m_memoryView does not exist create one and if it already exists override the + //native texture pointer with the one received from the driver (i.e nextDrawable call). + Image* swapChainImage = static_cast(GetCurrentImage()); + if( swapChainImage->GetMemoryView().GetMemory()) + { + swapChainImage->GetMemoryView().GetMemory()->OverrideResource(mtlDrawableTexture); + } + else + { + RHI::ImageDescriptor imgDescriptor = swapChainImage->GetDescriptor(); + imgDescriptor.m_size.m_width = mtlDrawableTexture.width; + imgDescriptor.m_size.m_height = mtlDrawableTexture.height; + swapChainImage->SetDescriptor(imgDescriptor); + + RHI::Ptr resc = MetalResource::Create(MetalResourceDescriptor{mtlDrawableTexture, ResourceType::MtlTextureType, swapChainImage->m_isSwapChainImage}); + swapChainImage->m_memoryView = MemoryView(resc, 0, mtlDrawableTexture.allocatedSize, 0); + } + } + return mtlDrawableTexture; } - return mtlDrawableTexture; } } } diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp index b24745ebe6..c0b522c419 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Model/ModelLod.cpp @@ -280,8 +280,9 @@ namespace AZ { if (contractStreamChannel.m_isOptional) { - RHI::Format formatDoesntReallyMatter = RHI::Format::R8G8B8A8_UINT; - layoutBuilder.AddBuffer()->Channel(contractStreamChannel.m_semantic, formatDoesntReallyMatter); + //We are using R8G8B8A8_UINT as on Metal mesh stream formats need to be atleast 4 byte aligned. + RHI::Format dummyStreamFormat = RHI::Format::R8G8B8A8_UINT; + layoutBuilder.AddBuffer()->Channel(contractStreamChannel.m_semantic, dummyStreamFormat); // We can't just use a null buffer pointer here because vulkan will occasionally crash. So we bind some valid non-null buffer and view it with length 0. RHI::StreamBufferView dummyBuffer{*mesh.m_indexBufferView.GetBuffer(), 0, 0, 4}; streamBufferViewsOut.push_back(dummyBuffer); From 75dc5be7241b56712b1b5d382798d294b68173b0 Mon Sep 17 00:00:00 2001 From: scottr Date: Thu, 24 Jun 2021 14:59:21 -0700 Subject: [PATCH 20/56] [cpack/2106-compression] enable higher compression of installer artifacts --- cmake/Platform/Windows/Packaging/Template.wxs.in | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/cmake/Platform/Windows/Packaging/Template.wxs.in b/cmake/Platform/Windows/Packaging/Template.wxs.in index e14e064fbc..6d4dd54f75 100644 --- a/cmake/Platform/Windows/Packaging/Template.wxs.in +++ b/cmake/Platform/Windows/Packaging/Template.wxs.in @@ -14,8 +14,10 @@ - - + + Date: Thu, 24 Jun 2021 15:01:02 -0700 Subject: [PATCH 21/56] LYN-4657 OSX: Building AutomatedTesting project fails --- .../Tests/Serialization/Json/JsonSerializerConformityTests.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Code/Framework/AzCore/Tests/Serialization/Json/JsonSerializerConformityTests.h b/Code/Framework/AzCore/Tests/Serialization/Json/JsonSerializerConformityTests.h index b2d90964b6..b2ab3df6b2 100644 --- a/Code/Framework/AzCore/Tests/Serialization/Json/JsonSerializerConformityTests.h +++ b/Code/Framework/AzCore/Tests/Serialization/Json/JsonSerializerConformityTests.h @@ -1201,8 +1201,10 @@ namespace JsonSerializationTests if (this->m_features.m_enableInitializationTest) { auto instance = this->m_description.CreateDefaultInstance(); - AZStd::remove_cvref_t compare; + AZ_PUSH_DISABLE_WARNING(4701, "-Wuninitialized-const-reference") + typename TypeParam::Type compare; if (!this->m_description.AreEqual(*instance, compare)) + AZ_POP_DISABLE_WARNING { auto serializer = this->m_description.CreateSerializer(); BaseJsonSerializer::OperationFlags flags = serializer->GetOperationsFlags(); From 43b43c3a05f960a722b1cb6aab277101bd08dc2a Mon Sep 17 00:00:00 2001 From: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> Date: Thu, 24 Jun 2021 15:03:02 -0700 Subject: [PATCH 22/56] Add Project name to Editor Window title (#1565) --- Code/Sandbox/Editor/CryEdit.cpp | 7 +++---- Code/Sandbox/Editor/MainWindow.cpp | 5 +++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Code/Sandbox/Editor/CryEdit.cpp b/Code/Sandbox/Editor/CryEdit.cpp index de8adb7d1a..3b246a68b2 100644 --- a/Code/Sandbox/Editor/CryEdit.cpp +++ b/Code/Sandbox/Editor/CryEdit.cpp @@ -1717,7 +1717,7 @@ BOOL CCryEditApp::InitInstance() } } - SetEditorWindowTitle(); + SetEditorWindowTitle(0, AZ::Utils::GetProjectName().c_str(), 0); if (!GetIEditor()->IsInMatEditMode()) { m_pEditor->InitFinished(); @@ -1839,7 +1839,7 @@ void CCryEditApp::LoadFile(QString fileName) if (MainWindow::instance() || m_pConsoleDialog) { - SetEditorWindowTitle(0, 0, GetIEditor()->GetGameEngine()->GetLevelName()); + SetEditorWindowTitle(0, AZ::Utils::GetProjectName().c_str(), GetIEditor()->GetGameEngine()->GetLevelName()); } GetIEditor()->SetModifiedFlag(false); @@ -4029,7 +4029,6 @@ void CCryEditApp::SetEditorWindowTitle(QString sTitleStr, QString sPreTitleStr, { if (MainWindow::instance() || m_pConsoleDialog) { - if (sTitleStr.isEmpty()) { sTitleStr = QObject::tr("O3DE Editor [Developer Preview]"); @@ -4037,7 +4036,7 @@ void CCryEditApp::SetEditorWindowTitle(QString sTitleStr, QString sPreTitleStr, if (!sPreTitleStr.isEmpty()) { - sTitleStr.insert(0, sPreTitleStr); + sTitleStr.insert(sTitleStr.length(), QStringLiteral(" - %1").arg(sPreTitleStr)); } if (!sPostTitleStr.isEmpty()) diff --git a/Code/Sandbox/Editor/MainWindow.cpp b/Code/Sandbox/Editor/MainWindow.cpp index 98ade01322..156fe37e67 100644 --- a/Code/Sandbox/Editor/MainWindow.cpp +++ b/Code/Sandbox/Editor/MainWindow.cpp @@ -30,6 +30,7 @@ AZ_POP_DISABLE_WARNING #include #include #include +#include // AzFramework #include @@ -1275,7 +1276,7 @@ void MainWindow::OnEditorNotifyEvent(EEditorNotifyEvent ev) auto cryEdit = CCryEditApp::instance(); if (cryEdit) { - cryEdit->SetEditorWindowTitle(0, 0, GetIEditor()->GetGameEngine()->GetLevelName()); + cryEdit->SetEditorWindowTitle(0, AZ::Utils::GetProjectName().c_str(), GetIEditor()->GetGameEngine()->GetLevelName()); } } break; @@ -1284,7 +1285,7 @@ void MainWindow::OnEditorNotifyEvent(EEditorNotifyEvent ev) auto cryEdit = CCryEditApp::instance(); if (cryEdit) { - cryEdit->SetEditorWindowTitle(); + cryEdit->SetEditorWindowTitle(0, AZ::Utils::GetProjectName().c_str(), 0); } } break; From 1c5a4a3230d12aa64a440dd658a4c418a1f01ed1 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Thu, 24 Jun 2021 15:23:45 -0700 Subject: [PATCH 23/56] LYN-4759 Check test timeout max on smoke and main suites only (#1501) --- AutomatedTesting/Gem/PythonTests/AWS/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/AutomatedTesting/Gem/PythonTests/AWS/CMakeLists.txt b/AutomatedTesting/Gem/PythonTests/AWS/CMakeLists.txt index 8f228c34fc..8ba799d638 100644 --- a/AutomatedTesting/Gem/PythonTests/AWS/CMakeLists.txt +++ b/AutomatedTesting/Gem/PythonTests/AWS/CMakeLists.txt @@ -17,7 +17,6 @@ if(PAL_TRAIT_BUILD_TESTS_SUPPORTED AND PAL_TRAIT_BUILD_HOST_TOOLS) TEST_SUITE periodic TEST_SERIAL PATH ${CMAKE_CURRENT_LIST_DIR}/${PAL_PLATFORM_NAME}/ - TIMEOUT 3000 RUNTIME_DEPENDENCIES Legacy::Editor AZ::AssetProcessor From 875cd0c858930b37078f848ffc3de9955350ca10 Mon Sep 17 00:00:00 2001 From: pconroy Date: Thu, 24 Jun 2021 15:28:09 -0700 Subject: [PATCH 24/56] Hide cart popup when going back to previous page --- .../Source/GemCatalog/GemCatalogHeaderWidget.cpp | 8 ++++++++ .../Source/GemCatalog/GemCatalogHeaderWidget.h | 2 ++ 2 files changed, 10 insertions(+) diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp index 883ae79043..8fb35b906c 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.cpp @@ -175,6 +175,14 @@ namespace O3DE::ProjectManager ShowOverlay(); } + void CartButton::hideEvent(QHideEvent*) + { + if (m_cartOverlay) + { + m_cartOverlay->hide(); + } + } + void CartButton::ShowOverlay() { const QVector toBeAdded = m_gemModel->GatherGemsToBeAdded(); diff --git a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h index 8d6606e63d..dc8f687b31 100644 --- a/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h +++ b/Code/Tools/ProjectManager/Source/GemCatalog/GemCatalogHeaderWidget.h @@ -16,6 +16,7 @@ #include #include #include +#include #include #endif @@ -59,6 +60,7 @@ namespace O3DE::ProjectManager private: void mousePressEvent(QMouseEvent* event) override; + void hideEvent(QHideEvent*) override; GemModel* m_gemModel = nullptr; QHBoxLayout* m_layout = nullptr; From 567156b85a15c30f0721e66fd8b9bb9a8abdb639 Mon Sep 17 00:00:00 2001 From: Mike Balfour <82224783+mbalfour-amzn@users.noreply.github.com> Date: Thu, 24 Jun 2021 17:30:24 -0500 Subject: [PATCH 25/56] [ATOM-4343] Temporary fix for vegetation raycasts until full solution is implemented. (#1572) Currently, the first time a raycast is attempted for a model, the raycast will fail and the model's kdtree will asynchronously get built. This breaks the vegetation system, which expects the queries to always work. This adds in a brute-force fallback for use while the kdtree is building. However, other use cases like the Editor mouse cursor selection raycast still should get the current "silent failure" behavior, because otherwise the Editor will lock up for several seconds the first time the mouse moves over an extremely complex model. --- .../RPI/Code/Include/Atom/RPI.Reflect/Model/ModelAsset.h | 4 +++- Gems/Atom/RPI/Code/Source/RPI.Public/Model/Model.cpp | 4 +++- .../RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp | 5 +++-- Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp | 9 ++++++--- Gems/SurfaceData/Code/Source/SurfaceDataUtility.cpp | 3 ++- Gems/Vegetation/Code/Tests/VegetationMocks.h | 3 ++- 6 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Model/ModelAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Model/ModelAsset.h index 465dae960d..c30116eea0 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Model/ModelAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Model/ModelAsset.h @@ -60,12 +60,14 @@ namespace AZ //! //! @param rayStart The starting point of the ray. //! @param rayDir The direction and length of the ray (magnitude is encoded in the direction). + //! @param allowBruteForce Allow for brute force queries while the mesh is baking (remove when ATOM-4343 is complete) //! @param[out] distanceNormalized If an intersection is found, will be set to the normalized distance of the intersection //! (in the range 0.0-1.0) - to calculate the actual distance, multiply distanceNormalized by the magnitude of rayDir. //! @param[out] normal If an intersection is found, will be set to the normal at the point of collision. //! @return True if the ray intersects the mesh. virtual bool LocalRayIntersectionAgainstModel( - const AZ::Vector3& rayStart, const AZ::Vector3& rayDir, float& distanceNormalized, AZ::Vector3& normal) const; + const AZ::Vector3& rayStart, const AZ::Vector3& rayDir, bool allowBruteForce, + float& distanceNormalized, AZ::Vector3& normal) const; private: void SetReady(); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Model/Model.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Model/Model.cpp index a0743f97d3..7c869c7910 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Model/Model.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Model/Model.cpp @@ -146,7 +146,9 @@ namespace AZ AZ::Debug::Timer timer; timer.Stamp(); #endif - const bool hit = modelAssetPtr->LocalRayIntersectionAgainstModel(rayStart, rayDir, distanceNormalized, normal); + constexpr bool AllowBruteForce = false; + const bool hit = modelAssetPtr->LocalRayIntersectionAgainstModel( + rayStart, rayDir, AllowBruteForce, distanceNormalized, normal); #if defined(AZ_RPI_PROFILE_RAYCASTING_AGAINST_MODELS) if (hit) { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp index 99e97b0300..bf0e4eb584 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Model/ModelAsset.cpp @@ -72,7 +72,8 @@ namespace AZ } bool ModelAsset::LocalRayIntersectionAgainstModel( - const AZ::Vector3& rayStart, const AZ::Vector3& rayDir, float& distanceNormalized, AZ::Vector3& normal) const + const AZ::Vector3& rayStart, const AZ::Vector3& rayDir, bool allowBruteForce, + float& distanceNormalized, AZ::Vector3& normal) const { AZ_PROFILE_FUNCTION(AZ::Debug::ProfileCategory::AzRender); @@ -90,7 +91,7 @@ namespace AZ BuildKdTree(); AZ_WarningOnce("Model", false, "ray intersection against a model that is still creating spatial information"); - return false; + return allowBruteForce ? BruteForceRayIntersect(rayStart, rayDir, distanceNormalized, normal) : false; } else { diff --git a/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp b/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp index 6329d11a55..7bc9ed5d11 100644 --- a/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp +++ b/Gems/Atom/RPI/Code/Tests/Model/ModelTests.cpp @@ -1214,11 +1214,12 @@ namespace UnitTest float distance = AZStd::numeric_limits::max(); AZ::Vector3 normal; + constexpr bool AllowBruteForce = false; EXPECT_THAT( mesh.GetModel()->LocalRayIntersectionAgainstModel( AZ::Vector3(GetParam().xpos, GetParam().ypos, GetParam().zpos), - AZ::Vector3(GetParam().xdir, GetParam().ydir, GetParam().zdir), distance, normal), + AZ::Vector3(GetParam().xdir, GetParam().ydir, GetParam().zdir), AllowBruteForce, distance, normal), testing::Eq(GetParam().expectedShouldIntersect)); EXPECT_THAT(distance, testing::FloatEq(GetParam().expectedDistance)); } @@ -1262,9 +1263,10 @@ namespace UnitTest // firing down the negative z axis, positioned 5 units from cube (cube is 2x2x2 so intersection // happens at 1 in z) + constexpr bool AllowBruteForce = false; EXPECT_THAT( m_mesh->GetModel()->LocalRayIntersectionAgainstModel( - AZ::Vector3::CreateAxisZ(5.0f), -AZ::Vector3::CreateAxisZ(10.0f), t, normal), + AZ::Vector3::CreateAxisZ(5.0f), -AZ::Vector3::CreateAxisZ(10.0f), AllowBruteForce, t, normal), testing::Eq(true)); EXPECT_THAT(t, testing::FloatEq(0.4f)); } @@ -1275,9 +1277,10 @@ namespace UnitTest AZ::Vector3 normal = AZ::Vector3::CreateOne(); // invalid starting normal // ensure the intersection happens right at the end of the ray + constexpr bool AllowBruteForce = false; EXPECT_THAT( m_mesh->GetModel()->LocalRayIntersectionAgainstModel( - AZ::Vector3::CreateAxisY(10.0f), -AZ::Vector3::CreateAxisY(9.0f), t, normal), + AZ::Vector3::CreateAxisY(10.0f), -AZ::Vector3::CreateAxisY(9.0f), AllowBruteForce, t, normal), testing::Eq(true)); EXPECT_THAT(t, testing::FloatEq(1.0f)); EXPECT_THAT(normal, IsClose(AZ::Vector3::CreateAxisY())); diff --git a/Gems/SurfaceData/Code/Source/SurfaceDataUtility.cpp b/Gems/SurfaceData/Code/Source/SurfaceDataUtility.cpp index 72dee012c2..439bc35071 100644 --- a/Gems/SurfaceData/Code/Source/SurfaceDataUtility.cpp +++ b/Gems/SurfaceData/Code/Source/SurfaceDataUtility.cpp @@ -28,7 +28,8 @@ namespace SurfaceData AZ::Vector3 normalLocal; - if (meshAsset.LocalRayIntersectionAgainstModel(rayStartLocal, rayDirectionLocal, distance, normalLocal)) + constexpr bool AllowBruteForce = true; + if (meshAsset.LocalRayIntersectionAgainstModel(rayStartLocal, rayDirectionLocal, AllowBruteForce, distance, normalLocal)) { // Transform everything back to world space outPosition = meshTransform.TransformPoint((rayStartLocal + (rayDirectionLocal * distance)) * clampedScale); diff --git a/Gems/Vegetation/Code/Tests/VegetationMocks.h b/Gems/Vegetation/Code/Tests/VegetationMocks.h index 1b95975e67..e2e135a3f3 100644 --- a/Gems/Vegetation/Code/Tests/VegetationMocks.h +++ b/Gems/Vegetation/Code/Tests/VegetationMocks.h @@ -475,7 +475,8 @@ namespace UnitTest ~MockMeshAsset() override = default; bool LocalRayIntersectionAgainstModel( - [[maybe_unused]] const AZ::Vector3& rayStart, [[maybe_unused]] const AZ::Vector3& dir, [[maybe_unused]] float& distance, [[maybe_unused]] AZ::Vector3& normal) const override + [[maybe_unused]] const AZ::Vector3& rayStart, [[maybe_unused]] const AZ::Vector3& dir, [[maybe_unused]] bool allowBruteForce, + [[maybe_unused]] float& distance, [[maybe_unused]] AZ::Vector3& normal) const override { distance = 0.1f; return true; From 7105fb1f5da5fc7e83e07d181371ba7a2d308ee1 Mon Sep 17 00:00:00 2001 From: Terry Michaels Date: Thu, 24 Jun 2021 17:41:09 -0500 Subject: [PATCH 26/56] Removed Thumbnail Demo define and related logic (#1573) --- Code/Sandbox/Editor/MainWindow.cpp | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Code/Sandbox/Editor/MainWindow.cpp b/Code/Sandbox/Editor/MainWindow.cpp index 156fe37e67..71b31102fd 100644 --- a/Code/Sandbox/Editor/MainWindow.cpp +++ b/Code/Sandbox/Editor/MainWindow.cpp @@ -93,14 +93,6 @@ AZ_POP_DISABLE_WARNING #include "AssetEditor/AssetEditorWindow.h" #include "ActionManager.h" -// uncomment this to show thumbnail demo widget -// #define ThumbnailDemo - -#ifdef ThumbnailDemo -#include "Editor/Thumbnails/Example/ThumbnailsSampleWidget.h" -#endif - - using namespace AZ; using namespace AzQtComponents; using namespace AzToolsFramework; @@ -1358,10 +1350,6 @@ void MainWindow::RegisterStdViewClasses() AzAssetBrowserWindow::RegisterViewClass(); AssetEditorWindow::RegisterViewClass(); -#ifdef ThumbnailDemo - ThumbnailsSampleWidget::RegisterViewClass(); -#endif - //These view dialogs aren't used anymore so they became disabled. //CLightmapCompilerDialog::RegisterViewClass(); //CLightmapCompilerDialog::RegisterViewClass(); From 1db5dc34359d1d26ad9982a84580044c7d22b67a Mon Sep 17 00:00:00 2001 From: mnaumov Date: Thu, 17 Jun 2021 17:21:04 -0700 Subject: [PATCH 27/56] Improving Editor performance while thumbnails are rendering --- .../Code/Source/Thumbnail/ImageThumbnail.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnail.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnail.cpp index 235bb66864..0a2a837539 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnail.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnail.cpp @@ -58,7 +58,7 @@ namespace ImageProcessingAtom void ImageThumbnail::LoadThread() { - AzToolsFramework::Thumbnailer::ThumbnailerRendererRequestBus::QueueEvent( + AzToolsFramework::Thumbnailer::ThumbnailerRendererRequestBus::Event( AZ::RPI::StreamingImageAsset::RTTI_Type(), &AzToolsFramework::Thumbnailer::ThumbnailerRendererRequests::RenderThumbnail, m_key, ImageThumbnailSize); From ac13551dc032a57e726b19cfd28de19f8a4dfea4 Mon Sep 17 00:00:00 2001 From: Ken Pruiksma Date: Thu, 24 Jun 2021 20:14:28 -0500 Subject: [PATCH 28/56] Cherry picking a034500a10a1e0704efe6cb831d02a028cfc28d1 [a034500] (#1580) Adding a factor for alpha affecting specular in the standard and enhanced pbr materials (#1474) * Adding a factor for how much alpha should affect specular to standard and enhanced pbr. Currently blended and tinted transparency always assume that the geometry represents the surface, and the surface may just be transparent like glass. In this model, specular is unnaffected by alpha - perfectly clear glass still reflects light and obeys the Fresnel factor. However alpha may also represent the absence of a surface entirely for mateirals where cut-out alpha is a bad fit because of subpixel detail, like hair or cob webs. This change addresses that by allowing the alpha to also affect specular reflection if desired. * Adding material for ASV test. --- .../Materials/Types/EnhancedPBR.materialtype | 13 ++++++++++ .../Materials/Types/EnhancedPBR_Common.azsli | 1 + .../Types/EnhancedPBR_ForwardPass.azsl | 18 ++++++++++---- .../Materials/Types/StandardPBR.materialtype | 13 ++++++++++ .../Materials/Types/StandardPBR_Common.azsli | 1 + .../Types/StandardPBR_ForwardPass.azsl | 17 ++++++++++--- ...ty_Blended_Alpha_Affects_Specular.material | 24 +++++++++++++++++++ 7 files changed, 80 insertions(+), 7 deletions(-) create mode 100644 Gems/Atom/TestData/TestData/Materials/StandardPbrTestCases/009_Opacity_Blended_Alpha_Affects_Specular.material diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR.materialtype b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR.materialtype index a71fc65e2a..9b2c465352 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR.materialtype +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR.materialtype @@ -714,6 +714,19 @@ "displayName": "Double-sided", "description": "Whether to render back-faces or just front-faces.", "type": "Bool" + }, + { + "id": "alphaAffectsSpecular", + "displayName": "Alpha affects specular", + "description": "How much the alpha value should also affect specular reflection. This should be 0.0 for materials where light can transmit through their physical surface (like glass), but 1.0 when alpha determines the very presence of a surface (like hair or grass)", + "type": "float", + "min": 0.0, + "max": 1.0, + "defaultValue": 0.0, + "connection": { + "type": "ShaderInput", + "id": "m_opacityAffectsSpecularFactor" + } } ], "uv": [ diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Common.azsli b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Common.azsli index dbd36735b8..cf699228c2 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Common.azsli +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_Common.azsli @@ -50,6 +50,7 @@ ShaderResourceGroup MaterialSrg : SRG_PerMaterial float m_anisotropicFactor; // Base layer anisotropic strength of deviation: negative = Bi-Normal direction, positive = Tangent direction float m_opacityFactor; + float m_opacityAffectsSpecularFactor; Texture2D m_opacityMap; uint m_opacityMapUvIndex; diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_ForwardPass.azsl b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_ForwardPass.azsl index f4269d9320..8e9b75e2ad 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_ForwardPass.azsl +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/EnhancedPBR_ForwardPass.azsl @@ -326,7 +326,8 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float if (o_opacity_mode == OpacityMode::Blended || o_opacity_mode == OpacityMode::TintedTransparent) { - alpha = FresnelSchlickWithRoughness(lightingData.NdotV, alpha, surface.roughnessLinear).x; // Increase opacity at grazing angles. + float fresnelAlpha = FresnelSchlickWithRoughness(lightingData.NdotV, alpha, surface.roughnessLinear).x; // Increase opacity at grazing angles. + alpha = lerp(fresnelAlpha, alpha, MaterialSrg::m_opacityAffectsSpecularFactor); } PbrLightingOutput lightingOutput = GetPbrLightingOutput(surface, lightingData, alpha); @@ -344,8 +345,13 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float // For blended mode, we do (dest * alpha) + (source * 1.0). This allows the specular // to be added on top of the diffuse, but then the diffuse must be pre-multiplied. // It's done this way because surface transparency doesn't really change specular response (eg, glass). + lightingOutput.m_diffuseColor.rgb *= lightingOutput.m_diffuseColor.w; // pre-multiply diffuse - lightingOutput.m_diffuseColor.rgb += lightingOutput.m_specularColor.rgb; // add specular + + // Add specular. m_opacityAffectsSpecularFactor controls how much the alpha masks out specular contribution. + float3 specular = lightingOutput.m_specularColor.rgb; + specular = lerp(specular, specular * lightingOutput.m_diffuseColor.w, MaterialSrg::m_opacityAffectsSpecularFactor); + lightingOutput.m_diffuseColor.rgb += specular; } else if (o_opacity_mode == OpacityMode::TintedTransparent) { @@ -362,7 +368,12 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float // m_diffuseColor.rgb (source) is added to that, and the final result is stored in render target 0. lightingOutput.m_diffuseColor.rgb *= lightingOutput.m_diffuseColor.w; // pre-multiply diffuse - lightingOutput.m_diffuseColor.rgb += lightingOutput.m_specularColor.rgb; // add specular + + // Add specular. m_opacityAffectsSpecularFactor controls how much the alpha masks out specular contribution. + float3 specular = lightingOutput.m_specularColor.rgb; + specular = lerp(specular, specular * lightingOutput.m_diffuseColor.w, MaterialSrg::m_opacityAffectsSpecularFactor); + lightingOutput.m_diffuseColor.rgb += specular; + lightingOutput.m_specularColor.rgb = baseColor * (1.0 - lightingOutput.m_diffuseColor.w); } else @@ -410,4 +421,3 @@ ForwardPassOutput EnhancedPbr_ForwardPassPS_EDS(VSOutput IN, bool isFrontFace : return OUT; } - diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR.materialtype b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR.materialtype index 93220973df..8b7e4b1c7e 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR.materialtype +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR.materialtype @@ -655,6 +655,19 @@ "displayName": "Double-sided", "description": "Whether to render back-faces or just front-faces.", "type": "Bool" + }, + { + "id": "alphaAffectsSpecular", + "displayName": "Alpha affects specular", + "description": "How much the alpha value should also affect specular reflection. This should be 0.0 for materials where light can transmit through their physical surface (like glass), but 1.0 when alpha determines the very presence of a surface (like hair or grass)", + "type": "float", + "min": 0.0, + "max": 1.0, + "defaultValue": 0.0, + "connection": { + "type": "ShaderInput", + "id": "m_opacityAffectsSpecularFactor" + } } ], "uv": [ diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Common.azsli b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Common.azsli index d4f4e905b1..f0637c6675 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Common.azsli +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_Common.azsli @@ -45,6 +45,7 @@ ShaderResourceGroup MaterialSrg : SRG_PerMaterial float4 m_pad2; // [GFX TODO][ATOM-14595] This is a workaround for a data stomping bug. Remove once it's fixed. float m_opacityFactor; + float m_opacityAffectsSpecularFactor; Texture2D m_opacityMap; uint m_opacityMapUvIndex; diff --git a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl index b2262a65de..2dfdd3681f 100644 --- a/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl +++ b/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.azsl @@ -254,7 +254,8 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float if (o_opacity_mode == OpacityMode::Blended || o_opacity_mode == OpacityMode::TintedTransparent) { - alpha = FresnelSchlickWithRoughness(lightingData.NdotV, alpha, surface.roughnessLinear).x; // Increase opacity at grazing angles. + float fresnelAlpha = FresnelSchlickWithRoughness(lightingData.NdotV, alpha, surface.roughnessLinear).x; // Increase opacity at grazing angles. + alpha = lerp(fresnelAlpha, alpha, MaterialSrg::m_opacityAffectsSpecularFactor); } PbrLightingOutput lightingOutput = GetPbrLightingOutput(surface, lightingData, alpha); @@ -269,8 +270,13 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float // For blended mode, we do (dest * alpha) + (source * 1.0). This allows the specular // to be added on top of the diffuse, but then the diffuse must be pre-multiplied. // It's done this way because surface transparency doesn't really change specular response (eg, glass). + lightingOutput.m_diffuseColor.rgb *= lightingOutput.m_diffuseColor.w; // pre-multiply diffuse - lightingOutput.m_diffuseColor.rgb += lightingOutput.m_specularColor.rgb; // add specular + + // Add specular. m_opacityAffectsSpecularFactor controls how much the alpha masks out specular contribution. + float3 specular = lightingOutput.m_specularColor.rgb; + specular = lerp(specular, specular * lightingOutput.m_diffuseColor.w, MaterialSrg::m_opacityAffectsSpecularFactor); + lightingOutput.m_diffuseColor.rgb += specular; } else if (o_opacity_mode == OpacityMode::TintedTransparent) { @@ -287,7 +293,12 @@ PbrLightingOutput ForwardPassPS_Common(VSOutput IN, bool isFrontFace, out float // m_diffuseColor.rgb (source) is added to that, and the final result is stored in render target 0. lightingOutput.m_diffuseColor.rgb *= lightingOutput.m_diffuseColor.w; // pre-multiply diffuse - lightingOutput.m_diffuseColor.rgb += lightingOutput.m_specularColor.rgb; // add specular + + // Add specular. m_opacityAffectsSpecularFactor controls how much the alpha masks out specular contribution. + float3 specular = lightingOutput.m_specularColor.rgb; + specular = lerp(specular, specular * lightingOutput.m_diffuseColor.w, MaterialSrg::m_opacityAffectsSpecularFactor); + lightingOutput.m_diffuseColor.rgb += specular; + lightingOutput.m_specularColor.rgb = baseColor * (1.0 - lightingOutput.m_diffuseColor.w); } else diff --git a/Gems/Atom/TestData/TestData/Materials/StandardPbrTestCases/009_Opacity_Blended_Alpha_Affects_Specular.material b/Gems/Atom/TestData/TestData/Materials/StandardPbrTestCases/009_Opacity_Blended_Alpha_Affects_Specular.material new file mode 100644 index 0000000000..dbaec36136 --- /dev/null +++ b/Gems/Atom/TestData/TestData/Materials/StandardPbrTestCases/009_Opacity_Blended_Alpha_Affects_Specular.material @@ -0,0 +1,24 @@ +{ + "description": "", + "materialType": "Materials/Types/StandardPBR.materialtype", + "parentMaterial": "", + "propertyLayoutVersion": 3, + "properties": { + "baseColor": { + "color": [ + 0.5906767249107361, + 1.0, + 0.11703670024871826, + 1.0 + ], + "textureMap": "Textures/Default/default_basecolor.tif" + }, + "opacity": { + "alphaSource": "Split", + "factor": 0.75, + "mode": "Blended", + "textureMap": "TestData/Textures/checker8x8_gray_512.png", + "alphaAffectsSpecular": 1.0 + } + } +} From 8530e783cab7d461a900c1362e04bc3e99c3ec40 Mon Sep 17 00:00:00 2001 From: lumberyard-employee-dm <56135373+lumberyard-employee-dm@users.noreply.github.com> Date: Thu, 24 Jun 2021 22:23:51 -0500 Subject: [PATCH 29/56] Setting the build timeout for the ProjectBuilder CMake commands to -1 (#1583) This prevents Project build step from timing out Moving the project build directory to be under the /build/ folder to prevent two issues 1. The AssetProcessor from scanning that folder for assets. [Bb]uild is part of the excluded folders 2. To prevent git from seeing modified files in the build directory as the default .gitignore file ignores [Bb]uild --- Code/Tools/ProjectManager/Source/ProjectBuilder.cpp | 4 ++-- Code/Tools/ProjectManager/Source/ProjectManagerDefs.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Code/Tools/ProjectManager/Source/ProjectBuilder.cpp b/Code/Tools/ProjectManager/Source/ProjectBuilder.cpp index a97499ab44..4dfe46b3bf 100644 --- a/Code/Tools/ProjectManager/Source/ProjectBuilder.cpp +++ b/Code/Tools/ProjectManager/Source/ProjectBuilder.cpp @@ -24,8 +24,8 @@ namespace O3DE::ProjectManager { - // 10 Minutes - constexpr int MaxBuildTimeMSecs = 600000; + // QProcess::waitForFinished uses -1 to indicate that the process should not timeout + constexpr int MaxBuildTimeMSecs = -1; ProjectBuilderWorker::ProjectBuilderWorker(const ProjectInfo& projectInfo) : QObject() diff --git a/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h b/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h index 1295e84281..1058dae68a 100644 --- a/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h +++ b/Code/Tools/ProjectManager/Source/ProjectManagerDefs.h @@ -13,7 +13,7 @@ namespace O3DE::ProjectManager inline constexpr static int ProjectPreviewImageWidth = 210; inline constexpr static int ProjectPreviewImageHeight = 280; - static const QString ProjectBuildPathPostfix = "Windows_VS2019"; + static const QString ProjectBuildPathPostfix = "build/windows_vs2019"; static const QString ProjectBuildErrorLogPathPostfix = "CMakeFiles/CMakeProjectBuildError.log"; static const QString ProjectPreviewImagePath = "preview.png"; } // namespace O3DE::ProjectManager From 03138f49361f2f895e65d33bfff5e287adbc6037 Mon Sep 17 00:00:00 2001 From: michabr <82236305+michabr@users.noreply.github.com> Date: Thu, 24 Jun 2021 22:19:52 -0700 Subject: [PATCH 30/56] Fix for cursor not being displayed when asked to display (#1574) --- .../CryCommon/LyShine/Bus/UiSystemBus.h | 5 ---- Code/CryEngine/CrySystem/System.h | 1 - Code/CryEngine/CrySystem/SystemInit.cpp | 24 ------------------- .../Code/Source/LyShineSystemComponent.cpp | 8 ++----- .../Code/Source/LyShineSystemComponent.h | 1 - 5 files changed, 2 insertions(+), 37 deletions(-) diff --git a/Code/CryEngine/CryCommon/LyShine/Bus/UiSystemBus.h b/Code/CryEngine/CryCommon/LyShine/Bus/UiSystemBus.h index 682bfe753e..8b17ca591c 100644 --- a/Code/CryEngine/CryCommon/LyShine/Bus/UiSystemBus.h +++ b/Code/CryEngine/CryCommon/LyShine/Bus/UiSystemBus.h @@ -18,11 +18,6 @@ public: // Public functions - //! Initialize the UI system. This should be called when all other systems that the UI - //! system depends upon are initialized. Once the engine is fully modularized this - //! function will be unnecessary. - virtual void InitializeSystem() {} - //! Register a component type with the UI system. //! The order in which component types are registered is the order that they show up in //! the add component and in the properties pane. diff --git a/Code/CryEngine/CrySystem/System.h b/Code/CryEngine/CrySystem/System.h index 2ecc8ebeb2..8c122d0df2 100644 --- a/Code/CryEngine/CrySystem/System.h +++ b/Code/CryEngine/CrySystem/System.h @@ -431,7 +431,6 @@ private: bool InitFileSystem(); bool InitFileSystem_LoadEngineFolders(const SSystemInitParams& initParams); bool InitAudioSystem(const SSystemInitParams& initParams); - bool InitShine(const SSystemInitParams& initParams); //@} diff --git a/Code/CryEngine/CrySystem/SystemInit.cpp b/Code/CryEngine/CrySystem/SystemInit.cpp index 7464df8ec2..4b07de6933 100644 --- a/Code/CryEngine/CrySystem/SystemInit.cpp +++ b/Code/CryEngine/CrySystem/SystemInit.cpp @@ -852,16 +852,6 @@ bool CSystem::InitVTuneProfiler() return true; } -///////////////////////////////////////////////////////////////////////////////// -bool CSystem::InitShine([[maybe_unused]] const SSystemInitParams& initParams) -{ - LOADING_TIME_PROFILE_SECTION(GetISystem()); - - EBUS_EVENT(UiSystemBus, InitializeSystem); - - return true; -} - ////////////////////////////////////////////////////////////////////////// void CSystem::InitLocalization() { @@ -1550,20 +1540,6 @@ AZ_POP_DISABLE_WARNING } m_Time.ResetTimer(); - ////////////////////////////////////////////////////////////////////////// - // UI. Should be after input and hardware mouse - ////////////////////////////////////////////////////////////////////////// - if (!m_bDedicatedServer) - { - AZ_Printf(AZ_TRACE_SYSTEM_WINDOW, "UI system initialization"); - INDENT_LOG_DURING_SCOPE(); - if (!InitShine(startupParams)) - { - return false; - } - } - - InlineInitializationProcessing("CSystem::Init InitShine"); // CONSOLE ////////////////////////////////////////////////////////////////////////// if (!InitConsole()) diff --git a/Gems/LyShine/Code/Source/LyShineSystemComponent.cpp b/Gems/LyShine/Code/Source/LyShineSystemComponent.cpp index 7a57f3aeb4..ff23f21945 100644 --- a/Gems/LyShine/Code/Source/LyShineSystemComponent.cpp +++ b/Gems/LyShine/Code/Source/LyShineSystemComponent.cpp @@ -202,12 +202,6 @@ namespace LyShine LyShineAllocatorScope::DeactivateAllocators(); } - //////////////////////////////////////////////////////////////////////////////////////////////////// - void LyShineSystemComponent::InitializeSystem() - { - BroadcastCursorImagePathname(); - } - //////////////////////////////////////////////////////////////////////////////////////////////////// void LyShineSystemComponent::RegisterComponentTypeForMenuOrdering(const AZ::Uuid& typeUuid) { @@ -379,6 +373,8 @@ namespace LyShine #endif m_pLyShine = new CLyShine(gEnv->pSystem); gEnv->pLyShine = m_pLyShine; + + BroadcastCursorImagePathname(); } void LyShineSystemComponent::OnCrySystemShutdown([[maybe_unused]] ISystem& system) diff --git a/Gems/LyShine/Code/Source/LyShineSystemComponent.h b/Gems/LyShine/Code/Source/LyShineSystemComponent.h index f4bd478067..50a8ee5aba 100644 --- a/Gems/LyShine/Code/Source/LyShineSystemComponent.h +++ b/Gems/LyShine/Code/Source/LyShineSystemComponent.h @@ -60,7 +60,6 @@ namespace LyShine //////////////////////////////////////////////////////////////////////// // UiSystemBus interface implementation - void InitializeSystem() override; void RegisterComponentTypeForMenuOrdering(const AZ::Uuid& typeUuid) override; const AZStd::vector* GetComponentTypesForMenuOrdering() override; const AZStd::list* GetLyShineComponentDescriptors(); From 81247aa0e83473674d51fdf72bbe6729d3b4f6a5 Mon Sep 17 00:00:00 2001 From: Chris Santora Date: Thu, 24 Jun 2021 22:42:45 -0700 Subject: [PATCH 31/56] Removed unused shader "2" files that were part of a redesign effort, which is now complete on the development branch. These files are not needed for the upcoming release and could cause confusion for other developers. ATOM-15837 Remove Unused Shader System Related *2 Classes From Stabilization Branch. Testing: ASV full test suite on dx12 and vulkan. Only saw known issues. --- .../AzslShaderBuilderSystemComponent.cpp | 49 +- .../Editor/AzslShaderBuilderSystemComponent.h | 4 - .../Source/Editor/ShaderAssetBuilder2.cpp | 679 ------------ .../Code/Source/Editor/ShaderAssetBuilder2.h | 55 - .../Source/Editor/ShaderBuilderUtility.cpp | 55 +- .../Code/Source/Editor/ShaderBuilderUtility.h | 7 +- .../Editor/ShaderVariantAssetBuilder2.cpp | 974 ------------------ .../Editor/ShaderVariantAssetBuilder2.h | 102 -- .../Code/Source/Editor/SrgLayoutUtility.h | 2 +- .../atom_asset_shader_builders_files.cmake | 4 - .../Atom/RPI.Edit/Shader/ShaderSourceData.h | 1 - .../Shader/ShaderVariantAssetCreator2.h | 49 - .../Include/Atom/RPI.Public/Shader/Shader2.h | 189 ---- .../Shader/ShaderReloadNotificationBus2.h | 53 - .../RPI.Public/Shader/ShaderResourceGroup.h | 8 - .../Atom/RPI.Public/Shader/ShaderVariant2.h | 66 -- .../Shader/IShaderVariantFinder2.h | 108 -- .../Atom/RPI.Reflect/Shader/ShaderAsset.h | 2 + .../Atom/RPI.Reflect/Shader/ShaderAsset2.h | 334 ------ .../RPI.Reflect/Shader/ShaderAssetCreator2.h | 92 -- .../RPI.Reflect/Shader/ShaderCommonTypes.h | 6 +- .../RPI.Reflect/Shader/ShaderVariantAsset2.h | 99 -- .../Source/RPI.Builders/BuilderComponent.cpp | 4 - .../Shader/ShaderVariantAssetCreator2.cpp | 107 -- .../Code/Source/RPI.Public/Shader/Shader2.cpp | 408 -------- .../RPI.Public/Shader/ShaderResourceGroup.cpp | 35 - .../Source/RPI.Public/Shader/ShaderSystem.cpp | 16 - .../RPI.Public/Shader/ShaderVariant2.cpp | 71 -- .../RPI.Reflect/Shader/ShaderAsset2.cpp | 584 ----------- .../Shader/ShaderAssetCreator2.cpp | 399 ------- .../Shader/ShaderVariantAsset2.cpp | 109 -- Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake | 2 - .../Atom/RPI/Code/atom_rpi_public_files.cmake | 5 - .../RPI/Code/atom_rpi_reflect_files.cmake | 7 - 34 files changed, 13 insertions(+), 4672 deletions(-) delete mode 100644 Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.cpp delete mode 100644 Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.h delete mode 100644 Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.cpp delete mode 100644 Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h delete mode 100644 Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h delete mode 100644 Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp delete mode 100644 Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader2.cpp delete mode 100644 Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant2.cpp delete mode 100644 Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset2.cpp delete mode 100644 Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp delete mode 100644 Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp index 97d21ae4ea..5e51fd681d 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.cpp @@ -81,7 +81,7 @@ namespace AZ // Register AZSL's compilation products Builder AssetBuilderSDK::AssetBuilderDesc azslBuilderDescriptor; azslBuilderDescriptor.m_name = "AZSL Builder"; - azslBuilderDescriptor.m_version = 8; // ATOM-15276 + azslBuilderDescriptor.m_version = 9; // ATOM-15837 // register all extensions thay may carry azsl code. header. main shader. or SRG azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); azslBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsl", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); @@ -97,7 +97,7 @@ namespace AZ // Register Shader Resource Group Layout Builder AssetBuilderSDK::AssetBuilderDesc srgLayoutBuilderDescriptor; srgLayoutBuilderDescriptor.m_name = "Shader Resource Group Layout Builder"; - srgLayoutBuilderDescriptor.m_version = 55; // ATOM-15276 + srgLayoutBuilderDescriptor.m_version = 56; // ATOM-15837 srgLayoutBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsl", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); srgLayoutBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern("*.azsli", AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); @@ -113,7 +113,7 @@ namespace AZ // Register Shader Asset Builder AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilderDescriptor; shaderAssetBuilderDescriptor.m_name = "Shader Asset Builder"; - shaderAssetBuilderDescriptor.m_version = 100; // ATOM-14298 + shaderAssetBuilderDescriptor.m_version = 101; // ATOM-15837 // .shader file changes trigger rebuilds shaderAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderAssetBuilderDescriptor.m_busId = azrtti_typeid(); @@ -128,7 +128,7 @@ namespace AZ shaderVariantAssetBuilderDescriptor.m_name = "Shader Variant Asset Builder"; // Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update // ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder". - shaderVariantAssetBuilderDescriptor.m_version = 21; // ATOM-14298 + shaderVariantAssetBuilderDescriptor.m_version = 22; // ATOM-15837 shaderVariantAssetBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); shaderVariantAssetBuilderDescriptor.m_busId = azrtti_typeid(); shaderVariantAssetBuilderDescriptor.m_createJobFunction = AZStd::bind(&ShaderVariantAssetBuilder::CreateJobs, &m_shaderVariantAssetBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); @@ -140,7 +140,7 @@ namespace AZ // Register Precompiled Shader Builder AssetBuilderSDK::AssetBuilderDesc precompiledShaderBuilderDescriptor; precompiledShaderBuilderDescriptor.m_name = "Precompiled Shader Builder"; - precompiledShaderBuilderDescriptor.m_version = 8; // ATOM-15276 + precompiledShaderBuilderDescriptor.m_version = 9; // ATOM-15837 precompiledShaderBuilderDescriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern(AZStd::string::format("*.%s", AZ::PrecompiledShaderBuilder::Extension), AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); precompiledShaderBuilderDescriptor.m_busId = azrtti_typeid(); precompiledShaderBuilderDescriptor.m_createJobFunction = AZStd::bind(&PrecompiledShaderBuilder::CreateJobs, &m_precompiledShaderBuilder, AZStd::placeholders::_1, AZStd::placeholders::_2); @@ -148,43 +148,6 @@ namespace AZ m_precompiledShaderBuilder.BusConnect(precompiledShaderBuilderDescriptor.m_busId); AssetBuilderSDK::AssetBuilderBus::Broadcast(&AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, precompiledShaderBuilderDescriptor); - - // Register Shader Asset Builder 2 - AssetBuilderSDK::AssetBuilderDesc shaderAssetBuilder2Descriptor; - shaderAssetBuilder2Descriptor.m_name = "Shader Asset Builder 2"; - shaderAssetBuilder2Descriptor.m_version = 1; // ATOM-15276 - // .shader2 file changes trigger rebuilds - shaderAssetBuilder2Descriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( - AZStd::string::format("*.%s", RPI::ShaderSourceData::Extension2), - AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - shaderAssetBuilder2Descriptor.m_busId = azrtti_typeid(); - shaderAssetBuilder2Descriptor.m_createJobFunction = - AZStd::bind(&ShaderAssetBuilder2::CreateJobs, &m_shaderAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - shaderAssetBuilder2Descriptor.m_processJobFunction = - AZStd::bind(&ShaderAssetBuilder2::ProcessJob, &m_shaderAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - - m_shaderAssetBuilder2.BusConnect(shaderAssetBuilder2Descriptor.m_busId); - AssetBuilderSDK::AssetBuilderBus::Broadcast( - &AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderAssetBuilder2Descriptor); - - // Register Shader Variant Asset Builder 2 - AssetBuilderSDK::AssetBuilderDesc shaderVariantAssetBuilder2Descriptor; - shaderVariantAssetBuilder2Descriptor.m_name = "Shader Variant Asset Builder 2"; - // Both "Shader Variant Asset Builder" and "Shader Asset Builder" produce ShaderVariantAsset products. If you update - // ShaderVariantAsset you will need to update BOTH version numbers, not just "Shader Variant Asset Builder". - shaderVariantAssetBuilder2Descriptor.m_version = 1; // ATOM-15276 - shaderVariantAssetBuilder2Descriptor.m_patterns.push_back(AssetBuilderSDK::AssetBuilderPattern( - AZStd::string::format("*.%s", RPI::ShaderVariantListSourceData::Extension2), - AssetBuilderSDK::AssetBuilderPattern::PatternType::Wildcard)); - shaderVariantAssetBuilder2Descriptor.m_busId = azrtti_typeid(); - shaderVariantAssetBuilder2Descriptor.m_createJobFunction = AZStd::bind( - &ShaderVariantAssetBuilder2::CreateJobs, &m_shaderVariantAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - shaderVariantAssetBuilder2Descriptor.m_processJobFunction = AZStd::bind( - &ShaderVariantAssetBuilder2::ProcessJob, &m_shaderVariantAssetBuilder2, AZStd::placeholders::_1, AZStd::placeholders::_2); - - m_shaderVariantAssetBuilder2.BusConnect(shaderVariantAssetBuilder2Descriptor.m_busId); - AssetBuilderSDK::AssetBuilderBus::Broadcast( - &AssetBuilderSDK::AssetBuilderBus::Handler::RegisterBuilderInformation, shaderVariantAssetBuilder2Descriptor); } void AzslShaderBuilderSystemComponent::Deactivate() @@ -193,8 +156,6 @@ namespace AZ m_srgLayoutBuilder.BusDisconnect(); m_shaderVariantAssetBuilder.BusDisconnect(); m_precompiledShaderBuilder.BusDisconnect(); - m_shaderAssetBuilder2.BusDisconnect(); - m_shaderVariantAssetBuilder2.BusDisconnect(); RHI::ShaderPlatformInterfaceRegisterBus::Handler::BusDisconnect(); ShaderPlatformInterfaceRequestBus::Handler::BusDisconnect(); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h index c1ebac0424..9112e9089a 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/AzslShaderBuilderSystemComponent.h @@ -19,8 +19,6 @@ #include "ShaderVariantAssetBuilder.h" #include "PrecompiledShaderBuilder.h" #include "ShaderPlatformInterfaceRequest.h" -#include "ShaderAssetBuilder2.h" -#include "ShaderVariantAssetBuilder2.h" namespace AZ { @@ -68,8 +66,6 @@ namespace AZ ShaderAssetBuilder m_shaderAssetBuilder; ShaderVariantAssetBuilder m_shaderVariantAssetBuilder; PrecompiledShaderBuilder m_precompiledShaderBuilder; - ShaderAssetBuilder2 m_shaderAssetBuilder2; - ShaderVariantAssetBuilder2 m_shaderVariantAssetBuilder2; /// Contains the ShaderPlatformInterface for all registered RHIs AZStd::unordered_map m_shaderPlatformInterfaces; diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.cpp deleted file mode 100644 index 88ae3d5d74..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.cpp +++ /dev/null @@ -1,679 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include "ShaderAssetBuilder2.h" - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AzslBuilder.h" -#include "ShaderVariantAssetBuilder2.h" -#include "ShaderBuilderUtility.h" -#include "ShaderPlatformInterfaceRequest.h" -#include "AtomShaderConfig.h" - -#include -#include -namespace AZ -{ - namespace ShaderBuilder - { - static constexpr char ShaderAssetBuilder2Name[] = "ShaderAssetBuilder2"; - static constexpr uint32_t ShaderAssetBuildTimestampParam = 0; - - void ShaderAssetBuilder2::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const - { - AZStd::string fullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, true); - - AZ_TracePrintf(ShaderAssetBuilder2Name, "CreateJobs for Shader \"%s\"\n", fullPath.data()); - - // Used to synchronize versions of the ShaderAsset and ShaderVariantTreeAsset, especially during hot-reload. - // Note it's probably important for this to be set once outside the platform loop so every platform's ShaderAsset - // has the same value, because later the ShaderVariantTreeAsset job will fetch this value from the local ShaderAsset - // which could cross platforms (i.e. building an android ShaderVariantTreeAsset on PC would fetch the tiemstamp from - // the PC's ShaderAsset). - AZStd::sys_time_t shaderAssetBuildTimestamp = AZStd::GetTimeNowMicroSecond(); - - // Need to get the name of the azsl file from the .shader source asset, to be able to declare a dependency to SRG Layout Job. - // and the macro options to preprocess. - auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(fullPath); - if (!descriptorParseOutcome.IsSuccess()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to parse Shader Descriptor JSON: %s", - descriptorParseOutcome.GetError().c_str()); - return; - } - - RPI::ShaderSourceData shaderSourceData = descriptorParseOutcome.TakeValue(); - - AZStd::string azslFullPath; - ShaderBuilderUtility::GetAbsolutePathToAzslFile(fullPath, shaderSourceData.m_source, azslFullPath); - if (!IO::FileIOBase::GetInstance()->Exists(azslFullPath.c_str())) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Shader program listed as the source entry does not exist: %s.", azslFullPath.c_str()); - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed; - return; - } - - - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilder2Name); - - // [GFX TODO] [ATOM-14966] In principle, based on macro definitions, included files can change per supervariant. - // So, the list of source asset dependencies must be collected by running MCPP on each supervariant. - // For now, we will run MCPP only once because CreateJobs() should be as light as possible. - // - // Regardless of the PlatformInfo and enabled ShaderPlatformInterfaces, the azsl file will be preprocessed - // with the sole purpose of extracting all included files. For each included file a SourceDependency will be declared. - PreprocessorData output; - buildOptions.m_compilerArguments.Merge(shaderSourceData.m_compiler); - PreprocessFile(azslFullPath, output, buildOptions.m_preprocessorSettings, true, true); - for (auto includePath : output.includedPaths) - { - // m_sourceFileDependencyList does not support paths with "." or ".." for relative lookup, but the preprocessor - // may produce path strings like "C:/a/b/c/../../d/file.azsli" so we have to normalize - AzFramework::StringFunc::Path::Normalize(includePath); - - AssetBuilderSDK::SourceFileDependency includeFileDependency; - includeFileDependency.m_sourceFileDependencyPath = includePath; - response.m_sourceFileDependencyList.emplace_back(includeFileDependency); - } - - { - // Add the AZSL as source dependency - AssetBuilderSDK::SourceFileDependency azslFileDependency; - azslFileDependency.m_sourceFileDependencyPath = azslFullPath; - response.m_sourceFileDependencyList.emplace_back(azslFileDependency); - } - - for (const AssetBuilderSDK::PlatformInfo& platformInfo : request.m_enabledPlatforms) - { - AZ_TraceContext("For platform", platformInfo.m_identifier.data()); - - // Get the platform interfaces to be able to access the prepend file - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverValidShaderPlatformInterfaces(platformInfo); - if (platformInterfaces.empty()) - { - continue; - } - - AssetBuilderSDK::JobDescriptor jobDescriptor; - jobDescriptor.m_priority = 2; - // [GFX TODO][ATOM-2830] Set 'm_critical' back to 'false' once proper fix for Atom startup issues are in - jobDescriptor.m_critical = true; - jobDescriptor.m_jobKey = ShaderAssetBuilder2JobKey; - jobDescriptor.SetPlatformIdentifier(platformInfo.m_identifier.c_str()); - jobDescriptor.m_jobParameters.emplace(ShaderAssetBuildTimestampParam, AZStd::to_string(shaderAssetBuildTimestamp)); - - response.m_createJobOutputs.push_back(jobDescriptor); - } // for all request.m_enabledPlatforms - - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - } - - static bool SerializeOutShaderAsset(Data::Asset shaderAsset, - const AZStd::string& tempDirPath, - AssetBuilderSDK::ProcessJobResponse& response) - { - AZStd::string shaderAssetFileName = AZStd::string::format("%s.%s", shaderAsset->GetName().GetCStr(), RPI::ShaderAsset2::Extension); - AZStd::string shaderAssetOutputPath; - AzFramework::StringFunc::Path::ConstructFull(tempDirPath.data(), shaderAssetFileName.data(), shaderAssetOutputPath, true); - - if (!Utils::SaveObjectToFile(shaderAssetOutputPath, DataStream::ST_BINARY, shaderAsset.Get())) - { - AZ_Error(ShaderAssetBuilder2Name, false, "Failed to output Shader Descriptor"); - return false; - } - - AssetBuilderSDK::JobProduct shaderJobProduct; - if (!AssetBuilderSDK::OutputObject(shaderAsset.Get(), shaderAssetOutputPath, azrtti_typeid(), - aznumeric_cast(RPI::ShaderAsset2ProductSubId::ShaderAsset2), shaderJobProduct)) - { - AZ_Error(ShaderAssetBuilder2Name, false, "Failed to output product dependencies."); - return false; - } - response.m_outputProducts.push_back(AZStd::move(shaderJobProduct)); - - return true; - } - - static AZ::Outcome BuildAttributesMap( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, - const AzslData& azslData, - const MapOfStringToStageType& shaderEntryPoints, - bool& hasRasterProgram) - { - hasRasterProgram = false; - bool hasComputeProgram = false; - bool hasRayTracingProgram = false; - RHI::ShaderStageAttributeMapList attributeMaps; - attributeMaps.resize(RHI::ShaderStageCount); - for (const auto& shaderEntryPoint : shaderEntryPoints) - { - auto shaderEntryName = shaderEntryPoint.first; - auto shaderStageType = shaderEntryPoint.second; - auto assetBuilderShaderType = ShaderBuilderUtility::ToAssetBuilderShaderType(shaderStageType); - hasRasterProgram |= shaderPlatformInterface->IsShaderStageForRaster(assetBuilderShaderType); - hasComputeProgram |= shaderPlatformInterface->IsShaderStageForCompute(assetBuilderShaderType); - hasRayTracingProgram |= shaderPlatformInterface->IsShaderStageForRayTracing(assetBuilderShaderType); - - auto findId = AZStd::find_if(AZ_BEGIN_END(azslData.m_functions), [&shaderEntryPoint](const auto& func) { - return func.m_name == shaderEntryPoint.first; - }); - - if (findId == azslData.m_functions.end()) - { - // shaderData.m_functions only contains Vertex, Fragment and Compute entries for now - // Tessellation shaders will need to be handled too - continue; - } - - const auto shaderStage = ToRHIShaderStage(assetBuilderShaderType); - for (const auto& attr : findId->attributesList) - { - // Some stages like RHI::ShaderStage::Tessellation are compound and consist of two or more shader entries - const Name& attributeName = attr.first; - const RHI::ShaderStageAttributeArguments& args = attr.second; - const auto stageIndex = static_cast(shaderStage); - AZ_Assert(stageIndex < RHI::ShaderStageCount, "Invalid shader stage specified!"); - attributeMaps[stageIndex][attributeName] = args; - } - } - - if (hasRasterProgram && hasComputeProgram) - { - return AZ::Failure(AZStd::string(" Shader asset descriptor defines both a raster entry point and a compute entry point.")); - } - - if (!hasRasterProgram && !hasComputeProgram && !hasRayTracingProgram) - { - AZStd::string entryPointNames = ShaderBuilderUtility::GetAcceptableDefaultEntryPointNames(azslData); - return AZ::Failure( - AZStd::string::format( "Shader asset descriptor has a program variant that does not define any entry points. Either declare entry " - "points in the .shader file, or use one of the available default names (not case-sensitive): [%s]", - entryPointNames.c_str())); - } - - return AZ::Success(attributeMaps); - } - - void ShaderAssetBuilder2::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks(); - AZStd::string shaderFullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.c_str(), request.m_sourceFile.c_str(), shaderFullPath, true); - // Save .shader file name (no extension and no parent directory path) - AZStd::string shaderFileName; - AzFramework::StringFunc::Path::GetFileName(request.m_sourceFile.c_str(), shaderFileName); - - // No error checking because the same calls were already executed during CreateJobs() - auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(shaderFullPath); - RPI::ShaderSourceData shaderSourceData = descriptorParseOutcome.TakeValue(); - AZStd::string azslFullPath; - ShaderBuilderUtility::GetAbsolutePathToAzslFile(shaderFullPath, shaderSourceData.m_source, azslFullPath); - AZ_TracePrintf(ShaderAssetBuilder2Name, "Original AZSL File: %s \n", azslFullPath.c_str()); - - // The directory where the Azsl file was found must be added to the list of include paths - AZStd::string azslFolderPath; - AzFramework::StringFunc::Path::GetFolderPath(azslFullPath.c_str(), azslFolderPath); - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderAssetBuilder2Name, azslFolderPath.c_str()); - - // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces = ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces( - request.m_platformInfo, shaderSourceData); - if (platformInterfaces.empty()) - { - //No work to do. Exit gracefully. - AZ_TracePrintf(ShaderAssetBuilder2Name, - "No azshader is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", - shaderFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - // Get the time stamp string as sys_time_t, and also convert back to string to make sure it was converted correctly. - AZStd::sys_time_t shaderAssetBuildTimestamp = 0; - auto shaderAssetBuildTimestampIterator = request.m_jobDescription.m_jobParameters.find(ShaderAssetBuildTimestampParam); - if (shaderAssetBuildTimestampIterator != request.m_jobDescription.m_jobParameters.end()) - { - shaderAssetBuildTimestamp = AZStd::stoull(shaderAssetBuildTimestampIterator->second); - - if (AZStd::to_string(shaderAssetBuildTimestamp) != shaderAssetBuildTimestampIterator->second) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - AZ_Assert(false, "Incorrect conversion of ShaderAssetBuildTimestampParam"); - return; - } - } - - auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceData); - - RPI::ShaderAssetCreator2 shaderAssetCreator; - shaderAssetCreator.Begin(Uuid::CreateRandom()); - - shaderAssetCreator.SetName(AZ::Name{shaderFileName.c_str()}); - shaderAssetCreator.SetDrawListName(Name(shaderSourceData.m_drawListName)); - shaderAssetCreator.SetShaderAssetBuildTimestamp(shaderAssetBuildTimestamp); - - // The ShaderOptionGroupLayout must be the same across all supervariants because - // there can be only a single ShaderVariantTreeAsset per ShaderAsset. - // We will store here the one that results when the *.azslin file is - // compiled for the default, nameless, supervariant. - // For all other supervariants we just make sure the hashes are the same - // as this one. - RPI::Ptr finalShaderOptionGroupLayout = nullptr; - - - // Time to describe the big picture. - // 1- Preprocess an AZSL file with MCPP (a C-Preprocessor), and generate a flat AZSL file without #include lines and any macros in it. - // Let's call it the Flat-AZSL file. There are two levels of macro definition that need to be merged before we can invoke MCPP: - // 1.1- From /Config/shader_global_build_options.json, which we have stored in the local variable @buildOptions. - // 1.2- From the "Supervariant" definition key, which can be different for each supervariant. - // 2- There will be one Flat-AZSL per supervariant. Each Flat-AZSL will be transpiled to HLSL with AZSLc. This means there will be one HLSL file - // per supervariant. - // 3- The generated HLSL (one HLSL per supervariant) file may contain C-Preprocessor Macros inserted by AZSLc. And that file will be given to DXC. - // DXC has a preprocessor embedded in it. DXC will be executed once for each entry function listed in the .shader file. - // There will be one DXIL compiled binary for each entry function. All the DXIL compiled binaries for each supervariant will be combined - // in the ROOT ShaderVariantAsset. - - // Remark: In general, the work done by the ShaderVariantAssetBuilder is similar, but it will start from the HLSL file created; in step 2, mentioned above; by this builder, - // for each supervariant. - - // At this moment We have global build options that should be merged with the build options that are common - // to all the supervariants of this shader. - buildOptions.m_compilerArguments.Merge(shaderSourceData.m_compiler); - - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - AZStd::string apiName(shaderPlatformInterface->GetAPIName().GetCStr()); - AZ_TraceContext("Platform API", apiName); - // Signal the begin of shader data for an RHI API. - shaderAssetCreator.BeginAPI(shaderPlatformInterface->GetAPIType()); - - // Each shaderPlatformInterface has its own azsli header that needs to be prepended to the AZSL file before - // preprocessing. We will create a new temporary file that contains the combined data. - RHI::PrependArguments args; - args.m_sourceFile = azslFullPath.c_str(); - args.m_prependFile = shaderPlatformInterface->GetAzslHeader(request.m_platformInfo); - args.m_addSuffixToFileName = apiName.c_str(); - args.m_destinationFolder = request.m_tempDirPath.c_str(); - - AZStd::string prependedAzslFilePath = RHI::PrependFile(args); - if (prependedAzslFilePath == azslFullPath) - { - // The specific error is already reported by RHI::PrependFile(). - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - // Cache common AZSLC invokation arguments related with the current RHI Backend. - // Each supervariant can, optionally, remove or add more arguments for AZSLc. - AZStd::string commonAzslcCompilerParameters = - shaderPlatformInterface->GetAzslCompilerParameters(buildOptions.m_compilerArguments); - commonAzslcCompilerParameters += " "; - commonAzslcCompilerParameters += - shaderPlatformInterface->GetAzslCompilerWarningParameters(buildOptions.m_compilerArguments); - AtomShaderConfig::AddParametersFromConfigFile(commonAzslcCompilerParameters, request.m_platformInfo); - - // The register number only makes sense if the platform uses "spaces", - // since the register Id of the resource will not change even if the pipeline layout changes. - // We can pass in a default ShaderCompilerArguments because all we care about is whether the shaderPlatformInterface - // appends the "--use-spaces" flag. - const bool platformUsesRegisterSpaces = - (AzFramework::StringFunc::Find(commonAzslcCompilerParameters, "--use-spaces") != AZStd::string::npos); - - uint32_t supervariantIndex = 0; - for (const auto& supervariantInfo : supervariantList) - { - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - shaderAssetCreator.BeginSupervariant(supervariantInfo.m_name); - - // Let's combine the global macro definitions, with the macro definitions particular to this - // supervariant. Two steps: - // 1- Supervariants can specify which macros to remove from the global definitions. - AZStd::vector macroDefinitionNamesToRemove = supervariantInfo.GetCombinedListOfMacroDefinitionNamesToRemove(); - PreprocessorOptions preprocessorOptions = buildOptions.m_preprocessorSettings; - preprocessorOptions.RemovePredefinedMacros(macroDefinitionNamesToRemove); - // 2- Supervariants can specify which macros to add. - AZStd::vector macroDefinitionsToAdd = supervariantInfo.GetMacroDefinitionsToAdd(); - preprocessorOptions.m_predefinedMacros.insert( - preprocessorOptions.m_predefinedMacros.end(), macroDefinitionsToAdd.begin(), macroDefinitionsToAdd.end()); - // Run the preprocessor. - PreprocessorData output; - PreprocessFile(prependedAzslFilePath, output, preprocessorOptions, true, true); - RHI::ReportErrorMessages(ShaderAssetBuilder2Name, output.diagnostics); - // Dump the preprocessed string as a flat AZSL file with extension .azslin, which will be given to AZSLc to generate the HLSL file. - AZStd::string superVariantAzslinStemName = shaderFileName; - if (!supervariantInfo.m_name.IsEmpty()) - { - superVariantAzslinStemName += AZStd::string::format("-%s", supervariantInfo.m_name.GetCStr()); - } - AZStd::string azslinFullPath = ShaderBuilderUtility::DumpPreprocessedCode( - ShaderAssetBuilder2Name, output.code, request.m_tempDirPath, superVariantAzslinStemName, - apiName, true /*add2*/); - if (azslinFullPath.empty()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - AZ_TracePrintf(ShaderAssetBuilder2Name, "Preprocessed AZSL File: %s \n", prependedAzslFilePath.c_str()); - - // Before transpiling the flat-AZSL(.azslin) file into HLSL it is necessary - // to setup the AZSLc arguments as required by the current supervariant. - AZStd::string azslcCompilerParameters = supervariantInfo.GetCustomizedArgumentsForAzslc(commonAzslcCompilerParameters); - - // Ready to transpile the azslin file into HLSL. - ShaderBuilder::AzslCompiler azslc(azslinFullPath); - AZStd::string hlslFullPath = AZStd::string::format("%s_%s.hlsl2", superVariantAzslinStemName.c_str(), apiName.c_str()); - AzFramework::StringFunc::Path::Join(request.m_tempDirPath.c_str(), hlslFullPath.c_str(), hlslFullPath, true); - auto emitFullOutcome = azslc.EmitFullData(azslcCompilerParameters, hlslFullPath, "2"); - if (!emitFullOutcome.IsSuccess()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - ShaderBuilderUtility::AzslSubProducts::Paths subProductsPaths = emitFullOutcome.TakeValue(); - - // In addition to the hlsl file, there are other json files that were generated. - // Each output file will become a product. - for (int i = 0; i < subProductsPaths.size(); ++i) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = subProductsPaths[i]; - static const AZ::Uuid AzslOutcomeType = "{6977AEB1-17AD-4992-957B-23BB2E85B18B}"; - jobProduct.m_productAssetType = AzslOutcomeType; - // uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType - jobProduct.m_productSubID = RPI::ShaderAsset2::MakeProductAssetSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, - aznumeric_cast(ShaderBuilderUtility::AzslSubProducts::SubList[i])); - jobProduct.m_dependenciesHandled = true; - // Note that the output products are not traditional product assets that will be used by the game project. - // They are artifacts that are produced once, cached, and used later by other AssetBuilders as a way to centralize - // build organization. - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - - AZStd::shared_ptr files(new ShaderFiles); - AzslData azslData(files); - azslData.m_preprocessedFullPath = azslinFullPath; - RPI::ShaderResourceGroupLayoutList srgLayoutList; - RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); - BindingDependencies bindingDependencies; - RootConstantData rootConstantData; - AssetBuilderSDK::ProcessJobResultCode azslJsonReadResult = ShaderBuilderUtility::PopulateAzslDataFromJsonFiles( - ShaderAssetBuilder2Name, subProductsPaths, platformUsesRegisterSpaces, azslData, srgLayoutList, shaderOptionGroupLayout, - bindingDependencies, rootConstantData); - if (azslJsonReadResult != AssetBuilderSDK::ProcessJobResult_Success) - - { - response.m_resultCode = azslJsonReadResult; - return; - } - - shaderAssetCreator.SetSrgLayoutList(srgLayoutList); - - if (!finalShaderOptionGroupLayout) - { - finalShaderOptionGroupLayout = shaderOptionGroupLayout; - shaderAssetCreator.SetShaderOptionGroupLayout(finalShaderOptionGroupLayout); - const uint32_t usedShaderOptionBits = shaderOptionGroupLayout->GetBitSize(); - AZ_TracePrintf( - ShaderAssetBuilder2Name, "Note: This shader uses %u of %u available shader variant key bits. \n", - usedShaderOptionBits, RPI::ShaderVariantKeyBitCount); - } - else - { - if (finalShaderOptionGroupLayout->GetHash() != shaderOptionGroupLayout->GetHash()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Supervariant %s has a different ShaderOptionGroupLayout", - supervariantInfo.m_name.GetCStr()) - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - } - - // Discover entry points & type of programs. - MapOfStringToStageType shaderEntryPoints; - if (shaderSourceData.m_programSettings.m_entryPoints.empty()) - { - AZ_TracePrintf( - ShaderAssetBuilder2Name, - "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); - ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslData.m_functions, shaderEntryPoints); - } - else - { - for (const auto& entryPoint : shaderSourceData.m_programSettings.m_entryPoints) - { - shaderEntryPoints[entryPoint.m_name] = entryPoint.m_type; - } - } - - bool hasRasterProgram = false; - auto attributeMapsOutcome = BuildAttributesMap(shaderPlatformInterface, azslData, shaderEntryPoints, hasRasterProgram); - if (!attributeMapsOutcome.IsSuccess()) - { - AZ_Error(ShaderAssetBuilder2Name, false, "%s\n", attributeMapsOutcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - shaderAssetCreator.SetShaderStageAttributeMapList(attributeMapsOutcome.TakeValue()); - - // Check if we were canceled before we do any heavy processing of - // the shader data (compiling the shader kernels, processing SRG - // and pipeline layout data, etc.). - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - RHI::Ptr pipelineLayoutDescriptor = - ShaderBuilderUtility::BuildPipelineLayoutDescriptorForApi( - ShaderAssetBuilder2Name, srgLayoutList, shaderEntryPoints, buildOptions.m_compilerArguments, rootConstantData, - shaderPlatformInterface, bindingDependencies); - if (!pipelineLayoutDescriptor) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to build pipeline layout descriptor for api=[%s]", - shaderPlatformInterface->GetAPIName().GetCStr()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - shaderAssetCreator.SetPipelineLayout(pipelineLayoutDescriptor); - - - RPI::ShaderInputContract shaderInputContract; - RPI::ShaderOutputContract shaderOutputContract; - size_t colorAttachmentCount = 0; - ShaderBuilderUtility::CreateShaderInputAndOutputContracts( - azslData, shaderEntryPoints, *shaderOptionGroupLayout.get(), - subProductsPaths[ShaderBuilderUtility::AzslSubProducts::om], - subProductsPaths[ShaderBuilderUtility::AzslSubProducts::ia], - shaderInputContract, shaderOutputContract, colorAttachmentCount); - shaderAssetCreator.SetInputContract(shaderInputContract); - shaderAssetCreator.SetOutputContract(shaderOutputContract); - - if (hasRasterProgram) - { - // Set the various states to what is in the descriptor. - const RHI::TargetBlendState& targetBlendState = shaderSourceData.m_blendState; - RHI::RenderStates renderStates; - renderStates.m_rasterState = shaderSourceData.m_rasterState; - renderStates.m_depthStencilState = shaderSourceData.m_depthStencilState; - // [GFX TODO][ATOM-930] We should support unique blend states per RT - for (size_t i = 0; i < colorAttachmentCount; ++i) - { - renderStates.m_blendState.m_targets[i] = targetBlendState; - } - - shaderAssetCreator.SetRenderStates(renderStates); - } - - Outcome hlslSourceCodeOutcome = Utils::ReadFile(hlslFullPath); - if (!hlslSourceCodeOutcome.IsSuccess()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to obtain shader source from %s. [%s]", hlslFullPath.c_str(), - hlslSourceCodeOutcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - AZStd::string hlslSourceCode = hlslSourceCodeOutcome.TakeValue(); - - // The root ShaderVariantAsset needs to be created with the known uuid of the source .shader asset because - // the ShaderAsset owns a Data::Asset<> reference that gets serialized. It must have the correct uuid - // so the root ShaderVariantAsset is found when the ShaderAsset is deserialized. - uint32_t rootVariantProductSubId = RPI::ShaderAsset2::MakeProductAssetSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, - aznumeric_cast(RPI::ShaderAsset2ProductSubId::RootShaderVariantAsset)); - auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(shaderFullPath, rootVariantProductSubId); - AZ_Assert(assetIdOutcome.IsSuccess(), "Failed to get AssetId from shader %s", shaderFullPath.c_str()); - const Data::AssetId variantAssetId = assetIdOutcome.TakeValue(); - - RPI::ShaderVariantListSourceData::VariantInfo rootVariantInfo; - ShaderVariantCreationContext2 shaderVariantCreationContext = { - *shaderPlatformInterface, - request.m_platformInfo, - buildOptions.m_compilerArguments, - request.m_tempDirPath, - startTime, - shaderSourceData, - *shaderOptionGroupLayout.get(), - shaderEntryPoints, - variantAssetId, - superVariantAzslinStemName, - hlslFullPath, - hlslSourceCode}; - - - AZStd::optional outputByproducts; - auto rootShaderVariantAssetOutcome = ShaderVariantAssetBuilder2::CreateShaderVariantAsset(rootVariantInfo, shaderVariantCreationContext, outputByproducts); - if (!rootShaderVariantAssetOutcome.IsSuccess()) - { - AZ_Error(ShaderAssetBuilder2Name, false, "%s\n", rootShaderVariantAssetOutcome.GetError().c_str()) - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - Data::Asset rootShaderVariantAsset = rootShaderVariantAssetOutcome.TakeValue(); - - shaderAssetCreator.SetRootShaderVariantAsset(rootShaderVariantAsset); - - if (!shaderAssetCreator.EndSupervariant()) - { - AZ_Error( - ShaderAssetBuilder2Name, false, "Failed to create shader asset for supervariant [%s]", supervariantInfo.m_name.GetCStr()) - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - // Time to save the root variant related assets in the cache. - AssetBuilderSDK::JobProduct assetProduct; - if (!ShaderVariantAssetBuilder2::SerializeOutShaderVariantAsset( - rootShaderVariantAsset, superVariantAzslinStemName, request.m_tempDirPath, *shaderPlatformInterface, - rootVariantProductSubId, - assetProduct)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - response.m_outputProducts.push_back(assetProduct); - - if (outputByproducts) - { - // add byproducts as job output products: - uint32_t subProductType = aznumeric_cast(RPI::ShaderAsset2ProductSubId::FirstByProduct); - for (const AZStd::string& byproduct : outputByproducts.value().m_intermediatePaths) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = byproduct; - jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); - jobProduct.m_productSubID = RPI::ShaderAsset2::MakeProductAssetSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex, - subProductType++); - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - } - - - supervariantIndex++; - - } // end for the supervariant - - shaderAssetCreator.EndAPI(); - - } // end for all ShaderPlatformInterfaces - - Data::Asset shaderAsset; - if (!shaderAssetCreator.End(shaderAsset)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (!SerializeOutShaderAsset(shaderAsset, request.m_tempDirPath, response)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - - const AZStd::sys_time_t endTime = AZStd::GetTimeNowTicks(); - const AZStd::sys_time_t deltaTime = endTime - startTime; - const float elapsedTimeSeconds = (float)(deltaTime) / (float)AZStd::GetTimeTicksPerSecond(); - - AZ_TracePrintf(ShaderAssetBuilder2Name, "Finished processing %s in %.2f seconds\n", request.m_sourceFile.c_str(), elapsedTimeSeconds); - - ShaderBuilderUtility::LogProfilingData(ShaderAssetBuilder2Name, shaderFileName); - } - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.h deleted file mode 100644 index 7da4d2707d..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderAssetBuilder2.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include -#include - -#include - -namespace AZ -{ - namespace Data - { - class AssetHandler; - } - - namespace RHI - { - class ShaderPlatformInterface; - } - - namespace ShaderBuilder - { - struct AzslData; - - class ShaderAssetBuilder2 - : public AssetBuilderSDK::AssetBuilderCommandBus::Handler - { - public: - AZ_TYPE_INFO(ShaderAssetBuilder2, "{C94DA151-82BC-4475-86FA-E6C92A0BD6F8}"); - - static constexpr const char* ShaderAssetBuilder2JobKey = "Shader Asset 2"; - - ShaderAssetBuilder2() = default; - ~ShaderAssetBuilder2() = default; - - // Asset Builder Callback Functions ... - void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const; - void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - // AssetBuilderSDK::AssetBuilderCommandBus interface overrides ... - void ShutDown() override { }; - - private: - AZ_DISABLE_COPY_MOVE(ShaderAssetBuilder2); - }; - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp index a783849921..721a4c8b4e 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.cpp @@ -24,8 +24,7 @@ #include #include -#include // DEPRECATED - [ATOM-15472] -#include +#include #include #include @@ -721,58 +720,6 @@ namespace AZ return static_cast(subId) + (apiType << shiftLeft); } - Outcome ObtainBuildArtifactPathFromShaderAssetBuilder2( - const uint32_t rhiUniqueIndex, const AZStd::string& platformIdentifier, const AZStd::string& shaderJsonPath, - const uint32_t supervariantIndex, RPI::ShaderAssetSubId shaderAssetSubId) - { - // platform id from identifier - AzFramework::PlatformId platformId = AzFramework::PlatformId::PC; - if (platformIdentifier == "pc") - { - platformId = AzFramework::PlatformId::PC; - } - else if (platformIdentifier == "mac") - { - platformId = AzFramework::PlatformId::MAC_ID; - } - else if (platformIdentifier == "android") - { - platformId = AzFramework::PlatformId::ANDROID_ID; - } - else if (platformIdentifier == "ios") - { - platformId = AzFramework::PlatformId::IOS; - } - - uint32_t assetSubId = RPI::ShaderAsset2::MakeProductAssetSubId(rhiUniqueIndex, supervariantIndex, aznumeric_cast(shaderAssetSubId)); - auto assetIdOutcome = RPI::AssetUtils::MakeAssetId(shaderJsonPath, assetSubId); - if (!assetIdOutcome.IsSuccess()) - { - return Failure(AZStd::string::format( - "Missing ShaderAssetBuilder2 product %s, for sub %d", shaderJsonPath.c_str(), (uint32_t)shaderAssetSubId)); - } - - Data::AssetId assetId = assetIdOutcome.TakeValue(); - // get the relative path: - AZStd::string assetPath; - Data::AssetCatalogRequestBus::BroadcastResult(assetPath, &Data::AssetCatalogRequests::GetAssetPathById, assetId); - - // get the root: - AZStd::string assetRoot = AzToolsFramework::PlatformAddressedAssetCatalog::GetAssetRootForPlatform(platformId); - // join - AZStd::string assetFullPath; - AzFramework::StringFunc::Path::Join(assetRoot.c_str(), assetPath.c_str(), assetFullPath); - bool fileExists = IO::FileIOBase::GetInstance()->Exists(assetFullPath.c_str()) && - !IO::FileIOBase::GetInstance()->IsDirectory(assetFullPath.c_str()); - if (!fileExists) - { - return Failure(AZStd::string::format( - "asset [%s] from shader source %s and subId %d doesn't exist", assetFullPath.c_str(), shaderJsonPath.c_str(), - (uint32_t)shaderAssetSubId)); - } - return AZ::Success(assetFullPath); - } - Outcome ObtainBuildArtifactsFromAzslBuilder([[maybe_unused]] const char* builderName, const AZStd::string& sourceFullPath, RHI::APIType apiType, const AZStd::string& platform) { AzslSubProducts::Paths products; diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h index d5bcfc17a3..918ccbfe8e 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderBuilderUtility.h @@ -13,7 +13,7 @@ #include #include -#include +#include #include #include "AzslData.h" @@ -179,11 +179,6 @@ namespace AZ //! Job products sub id generation helper for AzslBuilder uint32_t MakeAzslBuildProductSubId(RPI::ShaderAssetSubId subId, RHI::APIType apiType); - //! Returns the asset path of a product artifact produced by ShaderAssetBuilder2. - Outcome ObtainBuildArtifactPathFromShaderAssetBuilder2( - const uint32_t rhiUniqueIndex, const AZStd::string& platformIdentifier, const AZStd::string& shaderJsonPath, - const uint32_t supervariantIndex, RPI::ShaderAssetSubId shaderAssetSubId); - //! Reconstructs the expected output product paths of the AzslBuilder (from the 2 arguments @azslSourceFullPath and @apiType) Outcome ObtainBuildArtifactsFromAzslBuilder(const char* builderName, const AZStd::string& azslSourceFullPath, RHI::APIType apiType, const AZStd::string& platform); diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.cpp b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.cpp deleted file mode 100644 index 437c1bc165..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.cpp +++ /dev/null @@ -1,974 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "ShaderAssetBuilder2.h" -#include "ShaderBuilderUtility.h" -#include "AzslData.h" -#include "AzslCompiler.h" -#include "AzslBuilder.h" -#include -#include -#include -#include "AtomShaderConfig.h" - -namespace AZ -{ - namespace ShaderBuilder - { - static constexpr char ShaderVariantAssetBuilder2Name[] = "ShaderVariantAssetBuilder2"; - - static void AddShaderAssetJobDependency2( - AssetBuilderSDK::JobDescriptor& jobDescriptor, const AssetBuilderSDK::PlatformInfo& platformInfo, - const AZStd::string& shaderVariantListFilePath, const AZStd::string& shaderFilePath) - { - AZStd::vector possibleDependencies = - AZ::RPI::AssetUtils::GetPossibleDepenencyPaths(shaderVariantListFilePath, shaderFilePath); - for (auto& file : possibleDependencies) - { - AssetBuilderSDK::JobDependency jobDependency; - jobDependency.m_jobKey = ShaderAssetBuilder2::ShaderAssetBuilder2JobKey; - jobDependency.m_platformIdentifier = platformInfo.m_identifier; - jobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order; - jobDependency.m_sourceFile.m_sourceFileDependencyPath = file; - jobDescriptor.m_jobDependencyList.push_back(jobDependency); - } - } - - //! Returns true if @sourceFileFullPath starts with a valid asset processor scan folder, false otherwise. - //! In case of true, it splits @sourceFileFullPath into @scanFolderFullPath and @filePathFromScanFolder. - //! @sourceFileFullPath The full path to a source asset file. - //! @scanFolderFullPath [out] Gets the full path of the scan folder where the source file is located. - //! @filePathFromScanFolder [out] Get the file path relative to @scanFolderFullPath. - static bool SplitSourceAssetPathIntoScanFolderFullPathAndRelativeFilePath2(const AZStd::string& sourceFileFullPath, AZStd::string& scanFolderFullPath, AZStd::string& filePathFromScanFolder) - { - AZStd::vector scanFolders; - bool success = false; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult(success, &AzToolsFramework::AssetSystem::AssetSystemRequest::GetAssetSafeFolders, scanFolders); - if (!success) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Couldn't get the scan folders"); - return false; - } - - for (AZStd::string scanFolder : scanFolders) - { - AzFramework::StringFunc::Path::Normalize(scanFolder); - if (!AZ::StringFunc::StartsWith(sourceFileFullPath, scanFolder)) - { - continue; - } - const size_t scanFolderSize = scanFolder.size(); - const size_t sourcePathSize = sourceFileFullPath.size(); - scanFolderFullPath = scanFolder; - filePathFromScanFolder = sourceFileFullPath.substr(scanFolderSize + 1, sourcePathSize - scanFolderSize - 1); - return true; - } - - return false; - } - - //! Validates if a given .shadervariantlist file is located at the correct path for a given .shader full path. - //! There are two valid paths: - //! 1- Lower Precedence: The same folder where the .shader file is located. - //! 2- Higher Precedence: //ShaderVariants/. - //! The "Higher Precedence" path gives the option to game projects to override what variants to generate. If this - //! file exists then the "Lower Precedence" path is disregarded. - //! A .shader full path is located under an AP scan folder. - //! Example: "/Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.shader" - //! - In this example the Scan Folder is "/Gems/Atom/Feature/Common/Assets", while the subfolder is "Materials/Types". - //! The "Higher Precedence" expected valid location for the .shadervariantlist would be: - //! - //ShaderVariants/Materials/Types/StandardPBR_ForwardPass.shadervariantlist. - //! The "Lower Precedence" valid location would be: - //! - /Gems/Atom/Feature/Common/Assets/Materials/Types/StandardPBR_ForwardPass.shadervariantlist. - //! @shouldExitEarlyFromProcessJob [out] Set to true if ProcessJob should do no work but return successfully. - //! Set to false if ProcessJob should do work and create assets. - //! When @shaderVariantListFileFullPath is provided by a Gem/Feature instead of the Game Project - //! We check if the game project already defined the shader variant list, and if it did it means - //! ProcessJob should do no work, but return successfully nonetheless. - static bool ValidateShaderVariantListLocation2(const AZStd::string& shaderVariantListFileFullPath, - const AZStd::string& shaderFileFullPath, bool& shouldExitEarlyFromProcessJob) - { - AZStd::string scanFolderFullPath; - AZStd::string shaderProductFileRelativePath; - if (!SplitSourceAssetPathIntoScanFolderFullPathAndRelativeFilePath2(shaderFileFullPath, scanFolderFullPath, shaderProductFileRelativePath)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Couldn't get the scan folder for shader [%s]", shaderFileFullPath.c_str()); - return false; - } - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "For shader [%s], Scan folder full path [%s], relative file path [%s]", shaderFileFullPath.c_str(), scanFolderFullPath.c_str(), shaderProductFileRelativePath.c_str()); - - AZStd::string shaderVariantListFileRelativePath = shaderProductFileRelativePath; - AzFramework::StringFunc::Path::ReplaceExtension(shaderVariantListFileRelativePath, RPI::ShaderVariantListSourceData::Extension); - - const char * gameProjectPath = nullptr; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult(gameProjectPath, &AzToolsFramework::AssetSystem::AssetSystemRequest::GetAbsoluteDevGameFolderPath); - - AZStd::string expectedHigherPrecedenceFileFullPath; - AzFramework::StringFunc::Path::Join(gameProjectPath, RPI::ShaderVariantTreeAsset::CommonSubFolder, expectedHigherPrecedenceFileFullPath, false /* handle directory overlap? */, false /* be case insensitive? */); - AzFramework::StringFunc::Path::Join(expectedHigherPrecedenceFileFullPath.c_str(), shaderProductFileRelativePath.c_str(), expectedHigherPrecedenceFileFullPath, false /* handle directory overlap? */, false /* be case insensitive? */); - AzFramework::StringFunc::Path::ReplaceExtension(expectedHigherPrecedenceFileFullPath, AZ::RPI::ShaderVariantListSourceData::Extension); - AzFramework::StringFunc::Path::Normalize(expectedHigherPrecedenceFileFullPath); - - AZStd::string normalizedShaderVariantListFileFullPath = shaderVariantListFileFullPath; - AzFramework::StringFunc::Path::Normalize(normalizedShaderVariantListFileFullPath); - - if (expectedHigherPrecedenceFileFullPath == normalizedShaderVariantListFileFullPath) - { - // Whenever the Game Project declares a *.shadervariantlist file we always do work. - shouldExitEarlyFromProcessJob = false; - return true; - } - - AZ::Data::AssetInfo assetInfo; - AZStd::string watchFolder; - bool foundHigherPrecedenceAsset = false; - AzToolsFramework::AssetSystemRequestBus::BroadcastResult(foundHigherPrecedenceAsset - , &AzToolsFramework::AssetSystem::AssetSystemRequest::GetSourceInfoBySourcePath - , expectedHigherPrecedenceFileFullPath.c_str(), assetInfo, watchFolder); - if (foundHigherPrecedenceAsset) - { - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "The shadervariantlist [%s] has been overriden by the game project with [%s]", - normalizedShaderVariantListFileFullPath.c_str(), expectedHigherPrecedenceFileFullPath.c_str()); - shouldExitEarlyFromProcessJob = true; - return true; - } - - // Check the "Lower Precedence" case, .shader path == .shadervariantlist path. - AZStd::string normalizedShaderFileFullPath = shaderFileFullPath; - AzFramework::StringFunc::Path::Normalize(normalizedShaderFileFullPath); - - AZStd::string normalizedShaderFileFullPathWithoutExtension = normalizedShaderFileFullPath; - AzFramework::StringFunc::Path::StripExtension(normalizedShaderFileFullPathWithoutExtension); - - AZStd::string normalizedShaderVariantListFileFullPathWithoutExtension = normalizedShaderVariantListFileFullPath; - AzFramework::StringFunc::Path::StripExtension(normalizedShaderVariantListFileFullPathWithoutExtension); - -#if AZ_TRAIT_OS_USE_WINDOWS_FILE_PATHS - //In certain circumstances, the capitalization of the drive letter may not match - const bool caseSensitive = false; -#else - //On the other platforms there's no drive letter, so it should be a non-issue. - const bool caseSensitive = true; -#endif - if (!StringFunc::Equal(normalizedShaderFileFullPathWithoutExtension.c_str(), normalizedShaderVariantListFileFullPathWithoutExtension.c_str(), caseSensitive)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "For shader file at path [%s], the shader variant list [%s] is expected to be located at [%s.%s] or [%s]" - , normalizedShaderFileFullPath.c_str(), normalizedShaderVariantListFileFullPath.c_str(), - normalizedShaderFileFullPathWithoutExtension.c_str(), RPI::ShaderVariantListSourceData::Extension, - expectedHigherPrecedenceFileFullPath.c_str()); - return false; - } - - shouldExitEarlyFromProcessJob = false; - return true; - } - - // We treat some issues as warnings and return "Success" from CreateJobs allows us to report the dependency. - // If/when a valid dependency file appears, that will trigger the ShaderVariantAssetBuilder2 to run again. - // Since CreateJobs will pass, we forward this message to ProcessJob which will report it as an error. - struct LoadResult2 - { - enum class Code - { - Error, - DeferredError, - Success - }; - - Code m_code; - AZStd::string m_deferredMessage; // Only used when m_code == DeferredError - }; - - static LoadResult2 LoadShaderVariantList2(const AZStd::string& variantListFullPath, RPI::ShaderVariantListSourceData& shaderVariantList, AZStd::string& shaderSourceFileFullPath, - bool& shouldExitEarlyFromProcessJob) - { - // Need to get the name of the shader file from the template so that we can preprocess the shader data and setup - // source file dependencies. - if (!RPI::JsonUtils::LoadObjectFromFile(variantListFullPath, shaderVariantList)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to parse Shader Variant List Descriptor JSON from [%s]", variantListFullPath.c_str()); - return LoadResult2{LoadResult2::Code::Error}; - } - - const AZStd::string resolvedShaderPath = AZ::RPI::AssetUtils::ResolvePathReference(variantListFullPath, shaderVariantList.m_shaderFilePath); - if (!AZ::IO::LocalFileIO::GetInstance()->Exists(resolvedShaderPath.c_str())) - { - return LoadResult2{LoadResult2::Code::DeferredError, AZStd::string::format("The shader path [%s] was not found.", resolvedShaderPath.c_str())}; - } - - shaderSourceFileFullPath = resolvedShaderPath; - - if (!ValidateShaderVariantListLocation2(variantListFullPath, shaderSourceFileFullPath, shouldExitEarlyFromProcessJob)) - { - return LoadResult2{LoadResult2::Code::Error}; - } - - if (shouldExitEarlyFromProcessJob) - { - return LoadResult2{LoadResult2::Code::Success}; - } - - auto resultOutcome = RPI::ShaderVariantTreeAssetCreator::ValidateStableIdsAreUnique(shaderVariantList.m_shaderVariants); - if (!resultOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Variant info validation error: %s", resultOutcome.GetError().c_str()); - return LoadResult2{LoadResult2::Code::Error}; - } - - if (!IO::FileIOBase::GetInstance()->Exists(shaderSourceFileFullPath.c_str())) - { - return LoadResult2{LoadResult2::Code::DeferredError, AZStd::string::format("ShaderSourceData file does not exist: %s.", shaderSourceFileFullPath.c_str())}; - } - - return LoadResult2{LoadResult2::Code::Success}; - } // LoadShaderVariantListAndAzslSource - - void ShaderVariantAssetBuilder2::CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const - { - AZStd::string variantListFullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), variantListFullPath, true); - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "CreateJobs for Shader Variant List \"%s\"\n", variantListFullPath.data()); - - RPI::ShaderVariantListSourceData shaderVariantList; - AZStd::string shaderSourceFileFullPath; - bool shouldExitEarlyFromProcessJob = false; - const LoadResult2 loadResult = LoadShaderVariantList2(variantListFullPath, shaderVariantList, shaderSourceFileFullPath, shouldExitEarlyFromProcessJob); - - if (loadResult.m_code == LoadResult2::Code::Error) - { - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Failed; - return; - } - - if (loadResult.m_code == LoadResult2::Code::DeferredError || shouldExitEarlyFromProcessJob) - { - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - // Let's create fake jobs that will fail ProcessJob, but are useful to establish dependency on the shader file. - AssetBuilderSDK::JobDescriptor jobDescriptor; - - jobDescriptor.m_priority = -5000; - jobDescriptor.m_critical = false; - jobDescriptor.m_jobKey = ShaderVariantAssetBuilder2JobKey; - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - - AddShaderAssetJobDependency2(jobDescriptor, info, variantListFullPath, shaderVariantList.m_shaderFilePath); - - if (loadResult.m_code == LoadResult2::Code::DeferredError) - { - jobDescriptor.m_jobParameters.emplace(ShaderVariantLoadErrorParam, loadResult.m_deferredMessage); - } - - if (shouldExitEarlyFromProcessJob) - { - // The value doesn't matter, what matters is the presence of the key which will - // signal that no assets should be produced on behalf of this shadervariantlist because - // the game project overrode it. - jobDescriptor.m_jobParameters.emplace(ShouldExitEarlyFromProcessJobParam, variantListFullPath); - } - - response.m_createJobOutputs.push_back(jobDescriptor); - } - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - return; - } - - for (const AssetBuilderSDK::PlatformInfo& info : request.m_enabledPlatforms) - { - AZ_TraceContext("For platform", info.m_identifier.data()); - - // First job is for the ShaderVariantTreeAsset. - { - AssetBuilderSDK::JobDescriptor jobDescriptor; - - // The ShaderVariantTreeAsset is high priority, but must be generated after the ShaderAsset - jobDescriptor.m_priority = 1; - jobDescriptor.m_critical = false; - - jobDescriptor.m_jobKey = GetShaderVariantTreeAssetJobKey(); - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - - AddShaderAssetJobDependency2(jobDescriptor, info, variantListFullPath, shaderVariantList.m_shaderFilePath); - - jobDescriptor.m_jobParameters.emplace(ShaderSourceFilePathJobParam, shaderSourceFileFullPath); - - response.m_createJobOutputs.push_back(jobDescriptor); - } - - // One job for each variant. Each job will produce one ".azshadervariant" per RHI per supervariant. - for (const AZ::RPI::ShaderVariantListSourceData::VariantInfo& variantInfo : shaderVariantList.m_shaderVariants) - { - AZStd::string variantInfoAsJsonString; - const bool convertSuccess = AZ::RPI::JsonUtils::SaveObjectToJsonString(variantInfo, variantInfoAsJsonString); - AZ_Assert(convertSuccess, "Failed to convert VariantInfo to json string"); - - AssetBuilderSDK::JobDescriptor jobDescriptor; - - // There can be tens/hundreds of thousands of shader variants. By default each shader will get - // a root variant that can be used at runtime. In order to prevent the AssetProcessor from - // being overtaken by shader variant compilation We mark all non-root shader variant generation - // as non critical and very low priority. - jobDescriptor.m_priority = -5000; - jobDescriptor.m_critical = false; - - jobDescriptor.m_jobKey = GetShaderVariantAssetJobKey(RPI::ShaderVariantStableId{variantInfo.m_stableId}); - jobDescriptor.SetPlatformIdentifier(info.m_identifier.data()); - - // The ShaderVariantAssets are job dependent on the ShaderVariantTreeAsset. - AssetBuilderSDK::SourceFileDependency fileDependency; - fileDependency.m_sourceFileDependencyPath = variantListFullPath; - AssetBuilderSDK::JobDependency variantTreeJobDependency; - variantTreeJobDependency.m_jobKey = GetShaderVariantTreeAssetJobKey(); - variantTreeJobDependency.m_platformIdentifier = info.m_identifier; - variantTreeJobDependency.m_sourceFile = fileDependency; - variantTreeJobDependency.m_type = AssetBuilderSDK::JobDependencyType::Order; - jobDescriptor.m_jobDependencyList.emplace_back(variantTreeJobDependency); - - jobDescriptor.m_jobParameters.emplace(ShaderVariantJobVariantParam, variantInfoAsJsonString); - jobDescriptor.m_jobParameters.emplace(ShaderSourceFilePathJobParam, shaderSourceFileFullPath); - - response.m_createJobOutputs.push_back(jobDescriptor); - } - - } - response.m_result = AssetBuilderSDK::CreateJobsResultCode::Success; - } // CreateJobs - - void ShaderVariantAssetBuilder2::ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - const auto& jobParameters = request.m_jobDescription.m_jobParameters; - - if (jobParameters.find(ShaderVariantLoadErrorParam) != jobParameters.end()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Error during CreateJobs: %s", jobParameters.at(ShaderVariantLoadErrorParam).c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - if (jobParameters.find(ShouldExitEarlyFromProcessJobParam) != jobParameters.end()) - { - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Doing nothing on behalf of [%s] because it's been overridden by game project.", jobParameters.at(ShaderVariantLoadErrorParam).c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - if (request.m_jobDescription.m_jobKey == GetShaderVariantTreeAssetJobKey()) - { - ProcessShaderVariantTreeJob(request, response); - } - else - { - ProcessShaderVariantJob(request, response); - } - } - - - static RPI::Ptr LoadShaderOptionsGroupLayoutFromShaderAssetBuilder2( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, - const AssetBuilderSDK::PlatformInfo& platformInfo, - const AzslCompiler& azslCompiler, - const AZStd::string& shaderSourceFileFullPath, - const RPI::SupervariantIndex supervariantIndex) - { - auto optionsGroupPathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder2( - shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), - AZ::RPI::ShaderAssetSubId::OptionsJson); - if (!optionsGroupPathOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", optionsGroupPathOutcome.GetError().c_str()); - return nullptr; - } - auto optionsGroupJsonPath = optionsGroupPathOutcome.TakeValue(); - RPI::Ptr shaderOptionGroupLayout = RPI::ShaderOptionGroupLayout::Create(); - // The shader options define what options are available, what are the allowed values/range - // for each option and what is its default value. - auto jsonOutcome = JsonSerializationUtils::ReadJsonFile(optionsGroupJsonPath); - if (!jsonOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", jsonOutcome.GetError().c_str()); - return nullptr; - } - if (!azslCompiler.ParseOptionsPopulateOptionGroupLayout(jsonOutcome.GetValue(), shaderOptionGroupLayout)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to find a valid list of shader options!"); - return nullptr; - } - - return shaderOptionGroupLayout; - } - - static void LoadShaderFunctionsFromShaderAssetBuilder2( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, const AssetBuilderSDK::PlatformInfo& platformInfo, - const AzslCompiler& azslCompiler, const AZStd::string& shaderSourceFileFullPath, - const RPI::SupervariantIndex supervariantIndex, - AzslFunctions& functions) - { - auto functionsJsonPathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder2( - shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), - AZ::RPI::ShaderAssetSubId::IaJson); - if (!functionsJsonPathOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", functionsJsonPathOutcome.GetError().c_str()); - return; - } - - auto functionsJsonPath = functionsJsonPathOutcome.TakeValue(); - auto jsonOutcome = JsonSerializationUtils::ReadJsonFile(functionsJsonPath); - if (!jsonOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", jsonOutcome.GetError().c_str()); - return; - } - if (!azslCompiler.ParseIaPopulateFunctionData(jsonOutcome.GetValue(), functions)) - { - functions.clear(); - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to find shader functions."); - return; - } - } - - - // Returns the content of the hlsl file for the given supervariant as produced by ShaderAsssetBuilder2. - // In addition to the content it also returns the full path of the hlsl file in @hlslSourcePath. - static AZStd::string LoadHlslFileFromShaderAssetBuilder2( - const RHI::ShaderPlatformInterface* shaderPlatformInterface, const AssetBuilderSDK::PlatformInfo& platformInfo, - const AZStd::string& shaderSourceFileFullPath, const RPI::SupervariantIndex supervariantIndex, AZStd::string& hlslSourcePath) - { - auto hlslSourcePathOutcome = ShaderBuilderUtility::ObtainBuildArtifactPathFromShaderAssetBuilder2( - shaderPlatformInterface->GetAPIUniqueIndex(), platformInfo.m_identifier, shaderSourceFileFullPath, supervariantIndex.GetIndex(), - AZ::RPI::ShaderAssetSubId::GeneratedHlslSource); - if (!hlslSourcePathOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s", hlslSourcePathOutcome.GetError().c_str()); - return ""; - } - - hlslSourcePath = hlslSourcePathOutcome.TakeValue(); - Outcome hlslSourceOutcome = Utils::ReadFile(hlslSourcePath); - if (!hlslSourceOutcome.IsSuccess()) - { - AZ_Error( - ShaderVariantAssetBuilder2Name, false, "Failed to obtain shader source from %s. [%s]", hlslSourcePath.c_str(), - hlslSourceOutcome.TakeError().c_str()); - return ""; - } - return hlslSourceOutcome.TakeValue(); - } - - void ShaderVariantAssetBuilder2::ProcessShaderVariantTreeJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - AZStd::string variantListFullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), variantListFullPath, true); - - RPI::ShaderVariantListSourceData shaderVariantListDescriptor; - if (!RPI::JsonUtils::LoadObjectFromFile(variantListFullPath, shaderVariantListDescriptor)) - { - AZ_Assert(false, "Failed to parse Shader Variant List Descriptor JSON [%s]", variantListFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - const AZStd::string& shaderSourceFileFullPath = request.m_jobDescription.m_jobParameters.at(ShaderSourceFilePathJobParam); - - //For debugging purposes will create a dummy azshadervarianttree file. - AZStd::string shaderName; - AzFramework::StringFunc::Path::GetFileName(shaderSourceFileFullPath.c_str(), shaderName); - - // No error checking because the same calls were already executed during CreateJobs() - auto descriptorParseOutcome = ShaderBuilderUtility::LoadShaderDataJson(shaderSourceFileFullPath); - RPI::ShaderSourceData shaderSourceDescriptor = descriptorParseOutcome.TakeValue(); - RPI::Ptr shaderOptionGroupLayout; - - // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces = - ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces(request.m_platformInfo, shaderSourceDescriptor); - if (platformInterfaces.empty()) - { - // No work to do. Exit gracefully. - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, - "No azshadervarianttree is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", - shaderSourceFileFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - - // set the input file for eventual error messages, but the compiler won't be called on it. - AZStd::string azslFullPath; - ShaderBuilderUtility::GetAbsolutePathToAzslFile(shaderSourceFileFullPath, shaderSourceDescriptor.m_source, azslFullPath); - AzslCompiler azslc(azslFullPath); - - AZStd::string previousLoopApiName; - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - auto thisLoopApiName = shaderPlatformInterface->GetAPIName().GetStringView(); - RPI::Ptr loopLocal_ShaderOptionGroupLayout = - LoadShaderOptionsGroupLayoutFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, RPI::DefaultSupervariantIndex); - if (!loopLocal_ShaderOptionGroupLayout) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - if (shaderOptionGroupLayout && shaderOptionGroupLayout->GetHash() != loopLocal_ShaderOptionGroupLayout->GetHash()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "There was a discrepancy in shader options between %s and %s", previousLoopApiName.c_str(), thisLoopApiName.data()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - shaderOptionGroupLayout = loopLocal_ShaderOptionGroupLayout; - previousLoopApiName = thisLoopApiName; - } - - RPI::ShaderVariantTreeAssetCreator shaderVariantTreeAssetCreator; - shaderVariantTreeAssetCreator.Begin(Uuid::CreateRandom()); - shaderVariantTreeAssetCreator.SetShaderOptionGroupLayout(*shaderOptionGroupLayout); - shaderVariantTreeAssetCreator.SetVariantInfos(shaderVariantListDescriptor.m_shaderVariants); - Data::Asset shaderVariantTreeAsset; - if (!shaderVariantTreeAssetCreator.End(shaderVariantTreeAsset)) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to build Shader Variant Tree Asset"); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - AZStd::string filename = AZStd::string::format("%s.%s", shaderName.c_str(), RPI::ShaderVariantTreeAsset::Extension); - AZStd::string assetPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_tempDirPath.c_str(), filename.c_str(), assetPath, true); - if (!AZ::Utils::SaveObjectToFile(assetPath, AZ::DataStream::ST_BINARY, shaderVariantTreeAsset.Get())) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to save Shader Variant Tree Asset to \"%s\"", assetPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - AssetBuilderSDK::JobProduct assetProduct; - assetProduct.m_productSubID = RPI::ShaderVariantTreeAsset::ProductSubID; - assetProduct.m_productFileName = assetPath; - assetProduct.m_productAssetType = azrtti_typeid(); - assetProduct.m_dependenciesHandled = true; // This builder has no dependencies to output - response.m_outputProducts.push_back(assetProduct); - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Shader Variant Tree Asset [%s] compiled successfully.\n", assetPath.c_str()); - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - - void ShaderVariantAssetBuilder2::ProcessShaderVariantJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const - { - const AZStd::sys_time_t startTime = AZStd::GetTimeNowTicks(); - AssetBuilderSDK::JobCancelListener jobCancelListener(request.m_jobId); - - AZStd::string fullPath; - AzFramework::StringFunc::Path::ConstructFull(request.m_watchFolder.data(), request.m_sourceFile.data(), fullPath, true); - - const auto& jobParameters = request.m_jobDescription.m_jobParameters; - const AZStd::string& shaderSourceFileFullPath = jobParameters.at(ShaderSourceFilePathJobParam); - AZStd::string shaderFileName; - AzFramework::StringFunc::Path::GetFileName(shaderSourceFileFullPath.c_str(), shaderFileName); - - const AZStd::string& variantJsonString = jobParameters.at(ShaderVariantJobVariantParam); - RPI::ShaderVariantListSourceData::VariantInfo variantInfo; - const bool fromJsonStringSuccess = AZ::RPI::JsonUtils::LoadObjectFromJsonString(variantJsonString, variantInfo); - AZ_Assert(fromJsonStringSuccess, "Failed to convert json string to VariantInfo"); - - RPI::ShaderSourceData shaderSourceDescriptor; - AZStd::shared_ptr sources = ShaderBuilderUtility::PrepareSourceInput(ShaderVariantAssetBuilder2Name, shaderSourceFileFullPath, shaderSourceDescriptor); - - // set the input file for eventual error messages, but the compiler won't be called on it. - AzslCompiler azslc(sources->m_azslSourceFullPath); - - // Request the list of valid shader platform interfaces for the target platform. - AZStd::vector platformInterfaces = - ShaderBuilderUtility::DiscoverEnabledShaderPlatformInterfaces(request.m_platformInfo, shaderSourceDescriptor); - if (platformInterfaces.empty()) - { - // No work to do. Exit gracefully. - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, - "No azshader is produced on behalf of %s because all valid RHI backends were disabled for this shader.\n", - shaderSourceFileFullPath.c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - return; - } - - auto supervariantList = ShaderBuilderUtility::GetSupervariantListFromShaderSourceData(shaderSourceDescriptor); - - GlobalBuildOptions buildOptions = ReadBuildOptions(ShaderVariantAssetBuilder2Name); - // At this moment We have global build options that should be merged with the build options that are common - // to all the supervariants of this shader. - buildOptions.m_compilerArguments.Merge(shaderSourceDescriptor.m_compiler); - - //! The ShaderOptionGroupLayout is common across all RHIs & Supervariants - RPI::Ptr shaderOptionGroupLayout = nullptr; - - // Generate shaders for each of those ShaderPlatformInterfaces. - for (RHI::ShaderPlatformInterface* shaderPlatformInterface : platformInterfaces) - { - AZ_TraceContext("ShaderPlatformInterface", shaderPlatformInterface->GetAPIName().GetCStr()); - - // Loop through all the Supervariants. - uint32_t supervariantIndexCounter = 0; - for (const auto& supervariantInfo : supervariantList) - { - RPI::SupervariantIndex supervariantIndex(supervariantIndexCounter); - - // Check if we were canceled before we do any heavy processing of - // the shader variant data. - if (jobCancelListener.IsCancelled()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Cancelled; - return; - } - - AZStd::string shaderStemNamePrefix = shaderFileName; - if (supervariantIndex.GetIndex() > 0) - { - shaderStemNamePrefix += supervariantInfo.m_name.GetStringView(); - } - - // We need these additional pieces of information To build a shader variant asset: - // 1- ShaderOptionsGroupLayout (Need to load it once, because it's the same acrosss all supervariants + RHIs) - // 2- entryFunctions - // 3- hlsl code. - - // 1- ShaderOptionsGroupLayout - if (!shaderOptionGroupLayout) - { - shaderOptionGroupLayout = - LoadShaderOptionsGroupLayoutFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, supervariantIndex); - if (!shaderOptionGroupLayout) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - } - - // 2- entryFunctions. - AzslFunctions azslFunctions; - LoadShaderFunctionsFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, azslc, shaderSourceFileFullPath, supervariantIndex, azslFunctions); - if (azslFunctions.empty()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - MapOfStringToStageType shaderEntryPoints; - if (shaderSourceDescriptor.m_programSettings.m_entryPoints.empty()) - { - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, - "ProgramSettings do not specify entry points, will use GetDefaultEntryPointsFromShader()\n"); - ShaderBuilderUtility::GetDefaultEntryPointsFromFunctionDataList(azslFunctions, shaderEntryPoints); - } - else - { - for (const auto& entryPoint : shaderSourceDescriptor.m_programSettings.m_entryPoints) - { - shaderEntryPoints[entryPoint.m_name] = entryPoint.m_type; - } - } - - // 3- hlslCode - AZStd::string hlslSourcePath; - AZStd::string hlslCode = LoadHlslFileFromShaderAssetBuilder2( - shaderPlatformInterface, request.m_platformInfo, shaderSourceFileFullPath, supervariantIndex, hlslSourcePath); - if (hlslCode.empty() || hlslSourcePath.empty()) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - - // Setup the shader variant creation context: - ShaderVariantCreationContext2 shaderVariantCreationContext = - { - *shaderPlatformInterface, request.m_platformInfo, buildOptions.m_compilerArguments, request.m_tempDirPath, - startTime, - shaderSourceDescriptor, - *shaderOptionGroupLayout.get(), - shaderEntryPoints, - Uuid::CreateRandom(), - shaderStemNamePrefix, - hlslSourcePath, hlslCode - }; - - AZStd::optional outputByproducts; - auto shaderVariantAssetOutcome = CreateShaderVariantAsset(variantInfo, shaderVariantCreationContext, outputByproducts); - if (!shaderVariantAssetOutcome.IsSuccess()) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "%s\n", shaderVariantAssetOutcome.GetError().c_str()); - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - Data::Asset shaderVariantAsset = shaderVariantAssetOutcome.TakeValue(); - - - // Time to save the asset in the tmp folder so it ends up in the Cache folder. - const uint32_t productSubID = RPI::ShaderVariantAsset2::MakeAssetProductSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex.GetIndex(), - shaderVariantAsset->GetStableId()); - AssetBuilderSDK::JobProduct assetProduct; - if (!SerializeOutShaderVariantAsset(shaderVariantAsset, shaderStemNamePrefix, - request.m_tempDirPath, *shaderPlatformInterface, productSubID, - assetProduct)) - { - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Failed; - return; - } - response.m_outputProducts.push_back(assetProduct); - - if (outputByproducts) - { - // add byproducts as job output products: - uint32_t subProductType = RPI::ShaderVariantAsset2::ShaderVariantAsset2SubProductType; - for (const AZStd::string& byproduct : outputByproducts.value().m_intermediatePaths) - { - AssetBuilderSDK::JobProduct jobProduct; - jobProduct.m_productFileName = byproduct; - jobProduct.m_productAssetType = Uuid::CreateName("DebugInfoByProduct-PdbOrDxilTxt"); - jobProduct.m_productSubID = RPI::ShaderVariantAsset2::MakeAssetProductSubId( - shaderPlatformInterface->GetAPIUniqueIndex(), supervariantIndex.GetIndex(), shaderVariantAsset->GetStableId(), - subProductType++); - response.m_outputProducts.push_back(AZStd::move(jobProduct)); - } - } - supervariantIndexCounter++; - } // End of supervariant for block - - } - - response.m_resultCode = AssetBuilderSDK::ProcessJobResult_Success; - } - - bool ShaderVariantAssetBuilder2::SerializeOutShaderVariantAsset( - const Data::Asset shaderVariantAsset, const AZStd::string& shaderStemNamePrefix, - const AZStd::string& tempDirPath, - const RHI::ShaderPlatformInterface& shaderPlatformInterface, const uint32_t productSubID, AssetBuilderSDK::JobProduct& assetProduct) - { - AZStd::string filename = AZStd::string::format( - "%s_%s_%u.%s", shaderStemNamePrefix.c_str(), shaderPlatformInterface.GetAPIName().GetCStr(), - shaderVariantAsset->GetStableId().GetIndex(), RPI::ShaderVariantAsset2::Extension); - - AZStd::string assetPath; - AzFramework::StringFunc::Path::ConstructFull(tempDirPath.c_str(), filename.c_str(), assetPath, true); - - if (!AZ::Utils::SaveObjectToFile(assetPath, AZ::DataStream::ST_BINARY, shaderVariantAsset.Get())) - { - AZ_Error(ShaderVariantAssetBuilder2Name, false, "Failed to save Shader Variant Asset to \"%s\"", assetPath.c_str()); - return false; - } - - assetProduct.m_productSubID = productSubID; - assetProduct.m_productFileName = assetPath; - assetProduct.m_productAssetType = azrtti_typeid(); - assetProduct.m_dependenciesHandled = true; // This builder has no dependencies to output - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Shader Variant Asset [%s] compiled successfully.\n", assetPath.c_str()); - return true; - } - - - AZ::Outcome, AZStd::string> ShaderVariantAssetBuilder2::CreateShaderVariantAsset( - const RPI::ShaderVariantListSourceData::VariantInfo& shaderVariantInfo, - ShaderVariantCreationContext2& creationContext, - AZStd::optional& outputByproducts) - { - // Temporary structure used for sorting and caching intermediate results - struct OptionCache - { - AZ::Name m_optionName; - AZ::Name m_valueName; - RPI::ShaderOptionIndex m_optionIndex; // Cached m_optionName - RPI::ShaderOptionValue m_value; // Cached m_valueName - }; - AZStd::vector optionList; - // We can not have more options than the number of options in the layout: - optionList.reserve(creationContext.m_shaderOptionGroupLayout.GetShaderOptionCount()); - - // This loop will validate and cache the indices for each option value: - for (const auto& shaderOption : shaderVariantInfo.m_options) - { - Name optionName{shaderOption.first}; - Name optionValue{shaderOption.second}; - - RPI::ShaderOptionIndex optionIndex = creationContext.m_shaderOptionGroupLayout.FindShaderOptionIndex(optionName); - if (optionIndex.IsNull()) - { - return AZ::Failure(AZStd::string::format("Invalid shader option: %s", optionName.GetCStr())); - } - - const RPI::ShaderOptionDescriptor& option = creationContext.m_shaderOptionGroupLayout.GetShaderOption(optionIndex); - RPI::ShaderOptionValue value = option.FindValue(optionValue); - if (value.IsNull()) - { - return AZ::Failure( - AZStd::string::format("Invalid value (%s) for shader option: %s", optionValue.GetCStr(), optionName.GetCStr())); - } - - optionList.push_back(OptionCache{optionName, optionValue, optionIndex, value}); - } - - // Create one instance of the shader variant - RPI::ShaderOptionGroup optionGroup(&creationContext.m_shaderOptionGroupLayout); - - //! Contains the series of #define macro values that define a variant. Can be empty (root variant). - //! If this string is NOT empty, a new temporary hlsl file will be created that will be the combination - //! of this string + @m_hlslSourceContent. - AZStd::string hlslCodeToPrependForVariant; - - // We want to go over all options listed in the variant and set their respective values - // This loop will populate the optionGroup and m_shaderCodePrefix in order of the option priority - for (const auto& optionCache : optionList) - { - const RPI::ShaderOptionDescriptor& option = creationContext.m_shaderOptionGroupLayout.GetShaderOption(optionCache.m_optionIndex); - - // Assign the option value specified in the variant: - option.Set(optionGroup, optionCache.m_value); - - // Populate all shader option defines. We have already confirmed they're valid. - hlslCodeToPrependForVariant += AZStd::string::format( - "#define %s_OPTION_DEF %s\n", optionCache.m_optionName.GetCStr(), optionCache.m_valueName.GetCStr()); - } - - AZStd::string variantShaderSourcePath; - // Check if we need to prepend any code prefix - if (!hlslCodeToPrependForVariant.empty()) - { - // Prepend any shader code prefix that we should apply to this variant - // and save it back to a file. - AZStd::string variantShaderSourceString(hlslCodeToPrependForVariant); - variantShaderSourceString += creationContext.m_hlslSourceContent; - - AZStd::string shaderAssetName = AZStd::string::format( - "%s_%s_%u.hlsl", creationContext.m_shaderStemNamePrefix.c_str(), - creationContext.m_shaderPlatformInterface.GetAPIName().GetCStr(), shaderVariantInfo.m_stableId); - AzFramework::StringFunc::Path::Join( - creationContext.m_tempDirPath.c_str(), shaderAssetName.c_str(), variantShaderSourcePath, true, true); - - auto outcome = Utils::WriteFile(variantShaderSourceString, variantShaderSourcePath); - if (!outcome.IsSuccess()) - { - return AZ::Failure(AZStd::string::format("Failed to create file %s", variantShaderSourcePath.c_str())); - } - } - else - { - variantShaderSourcePath = creationContext.m_hlslSourcePath; - } - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Variant StableId: %u", shaderVariantInfo.m_stableId); - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Variant Shader Options: %s", optionGroup.ToString().c_str()); - - const RPI::ShaderVariantStableId shaderVariantStableId{shaderVariantInfo.m_stableId}; - - // By this time the optionGroup was populated with all option values for the variant and - // the m_shaderCodePrefix contains all option related preprocessing macros - // Let's add the requested variant: - RPI::ShaderVariantAssetCreator2 variantCreator; - RPI::ShaderOptionGroup shaderOptions{&creationContext.m_shaderOptionGroupLayout, optionGroup.GetShaderVariantId()}; - variantCreator.Begin( - creationContext.m_shaderVariantAssetId, optionGroup.GetShaderVariantId(), shaderVariantStableId, - shaderOptions.IsFullySpecified()); - - const AZStd::unordered_map& shaderEntryPoints = creationContext.m_shaderEntryPoints; - for (const auto& shaderEntryPoint : shaderEntryPoints) - { - auto shaderEntryName = shaderEntryPoint.first; - auto shaderStageType = shaderEntryPoint.second; - - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Entry Point: %s", shaderEntryName.c_str()); - AZ_TracePrintf(ShaderVariantAssetBuilder2Name, "Begin compiling shader function \"%s\"", shaderEntryName.c_str()); - - auto assetBuilderShaderType = ShaderBuilderUtility::ToAssetBuilderShaderType(shaderStageType); - - // Compile HLSL to the platform specific shader. - RHI::ShaderPlatformInterface::StageDescriptor descriptor; - bool shaderWasCompiled = creationContext.m_shaderPlatformInterface.CompilePlatformInternal( - creationContext.m_platformInfo, variantShaderSourcePath, shaderEntryName, assetBuilderShaderType, - creationContext.m_tempDirPath, descriptor, creationContext.m_shaderCompilerArguments); - - if (!shaderWasCompiled) - { - return AZ::Failure(AZStd::string::format("Could not compile the shader function %s", shaderEntryName.c_str())); - } - // bubble up the byproducts to the caller by moving them to the context. - outputByproducts.emplace(AZStd::move(descriptor.m_byProducts)); - - RHI::Ptr shaderStageFunction = creationContext.m_shaderPlatformInterface.CreateShaderStageFunction(descriptor); - variantCreator.SetShaderFunction(ToRHIShaderStage(assetBuilderShaderType), shaderStageFunction); - - if (descriptor.m_byProducts.m_dynamicBranchCount != AZ::RHI::ShaderPlatformInterface::ByProducts::UnknownDynamicBranchCount) - { - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, "Finished compiling shader function. Number of dynamic branches: %u", - descriptor.m_byProducts.m_dynamicBranchCount); - } - else - { - AZ_TracePrintf( - ShaderVariantAssetBuilder2Name, "Finished compiling shader function. Number of dynamic branches: unknown"); - } - } - - Data::Asset shaderVariantAsset; - variantCreator.End(shaderVariantAsset); - return AZ::Success(AZStd::move(shaderVariantAsset)); - } - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.h deleted file mode 100644 index f5b05190cd..0000000000 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/ShaderVariantAssetBuilder2.h +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#pragma once - -#include -#include -#include - -#include -#include -#include -#include - -#include "ShaderBuilderUtility.h" - -namespace AZ -{ - namespace ShaderBuilder - { - struct AzslData; - - //! This is nothing more than a class to help consolidate all - //! the data needed to generate a shader variant and prevent - //! all the functions involved in the process to have too many - //! arguments. - struct ShaderVariantCreationContext2 - { - RHI::ShaderPlatformInterface& m_shaderPlatformInterface; - const AssetBuilderSDK::PlatformInfo& m_platformInfo; - const RHI::ShaderCompilerArguments& m_shaderCompilerArguments; - //! Used to write temporary files during shader compilation, like *.hlsl, or *.air, or *.metallib, etc. - const AZStd::string& m_tempDirPath; - //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset, - //! especially during hot-reload. A (ShaderVariantAsset.timestamp) >= (ShaderAsset.timestamp). - const AZStd::sys_time_t m_assetBuildTimestamp; - const RPI::ShaderSourceData& m_shaderSourceDataDescriptor; - const RPI::ShaderOptionGroupLayout& m_shaderOptionGroupLayout; - const MapOfStringToStageType& m_shaderEntryPoints; - const Data::AssetId m_shaderVariantAssetId; - const AZStd::string& m_shaderStemNamePrefix; //- - const AZStd::string& m_hlslSourcePath; - const AZStd::string& m_hlslSourceContent; - }; - - class ShaderVariantAssetBuilder2 - : public AssetBuilderSDK::AssetBuilderCommandBus::Handler - { - public: - AZ_TYPE_INFO(ShaderVariantAssetBuilder2, "{C959AEC2-2083-4488-AD88-F61B1144535B}"); - - static constexpr char ShaderVariantAssetBuilder2JobKey[] = "Shader Variant Asset 2"; - - ShaderVariantAssetBuilder2() = default; - ~ShaderVariantAssetBuilder2() = default; - - // Asset Builder Callback Functions ... - void CreateJobs(const AssetBuilderSDK::CreateJobsRequest& request, AssetBuilderSDK::CreateJobsResponse& response) const; - void ProcessJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - //! The ShaderVariantAsset returned by this function won't be written to the filesystem. - //! You should call SerializeOutShaderVariantAsset to write it to the temp folder assigned - //! by the asset processor. - static AZ::Outcome, AZStd::string> CreateShaderVariantAsset( - const RPI::ShaderVariantListSourceData::VariantInfo& shaderVariantInfo, - ShaderVariantCreationContext2& creationContext, - AZStd::optional& outputByproducts); - - static bool SerializeOutShaderVariantAsset( - const Data::Asset shaderVariantAsset, - const AZStd::string& shaderStemNamePrefix, const AZStd::string& tempDirPath, - const RHI::ShaderPlatformInterface& shaderPlatformInterface, const uint32_t productSubID, AssetBuilderSDK::JobProduct& assetProduct); - - // AssetBuilderSDK::AssetBuilderCommandBus interface overrides ... - void ShutDown() override { }; - - private: - AZ_DISABLE_COPY_MOVE(ShaderVariantAssetBuilder2); - - static constexpr uint32_t ShaderVariantLoadErrorParam = 0; - static constexpr uint32_t ShaderSourceFilePathJobParam = 2; - static constexpr uint32_t ShaderVariantJobVariantParam = 3; - static constexpr uint32_t ShouldExitEarlyFromProcessJobParam = 4; - - //! Called from ProcessJob when the job is supposed to create a ShaderVariantTreeAsset. - void ProcessShaderVariantTreeJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - //! Called from ProcessJob when the job is supposed to create ShaderVariantAssets. One ShaderVariantAsset will be produced per RHI::APIType - //! supported by the platform. - void ProcessShaderVariantJob(const AssetBuilderSDK::ProcessJobRequest& request, AssetBuilderSDK::ProcessJobResponse& response) const; - - static AZStd::string GetShaderVariantTreeAssetJobKey() { return AZStd::string::format("%s_varianttree", ShaderVariantAssetBuilder2JobKey); } - static AZStd::string GetShaderVariantAssetJobKey(RPI::ShaderVariantStableId variantStableId) { return AZStd::string::format("%s_variant_%u", ShaderVariantAssetBuilder2JobKey, variantStableId.GetIndex()); } - - }; - - } // ShaderBuilder -} // AZ diff --git a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h index 0b3c68bc5a..c779a55fc2 100644 --- a/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h +++ b/Gems/Atom/Asset/Shader/Code/Source/Editor/SrgLayoutUtility.h @@ -10,7 +10,7 @@ #include #include "CommonFiles/CommonTypes.h" -#include +#include #include "ShaderBuilderUtility.h" namespace AZ diff --git a/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake b/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake index fd5ce4275a..cd3a918f8c 100644 --- a/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake +++ b/Gems/Atom/Asset/Shader/Code/atom_asset_shader_builders_files.cmake @@ -30,14 +30,10 @@ set(FILES Source/Editor/AzslCompiler.h Source/Editor/ShaderVariantAssetBuilder.cpp Source/Editor/ShaderVariantAssetBuilder.h - Source/Editor/ShaderVariantAssetBuilder2.cpp - Source/Editor/ShaderVariantAssetBuilder2.h Source/Editor/AtomShaderConfig.cpp Source/Editor/AtomShaderConfig.h Source/Editor/PrecompiledShaderBuilder.cpp Source/Editor/PrecompiledShaderBuilder.h - Source/Editor/ShaderAssetBuilder2.cpp - Source/Editor/ShaderAssetBuilder2.h Source/Editor/SrgLayoutUtility.cpp Source/Editor/SrgLayoutUtility.h ) diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h index a150842522..ffdf1a8c7b 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderSourceData.h @@ -34,7 +34,6 @@ namespace AZ AZ_CLASS_ALLOCATOR(ShaderSourceData, AZ::SystemAllocator, 0); static constexpr char Extension[] = "shader"; - static constexpr char Extension2[] = "shader2"; static void Reflect(ReflectContext* context); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h deleted file mode 100644 index 837bb66465..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - //! The "builder" pattern class that creates a ShaderVariantAsset2. - class ShaderVariantAssetCreator2 final - : public AssetCreator - { - public: - //! Begins construction of the shader variant asset. - //! @param assetId The "initial" assetId that the resulting ShaderVariantAsset will get. - //! "initial" was quoted because in the end the asset processor will assign another assetId - //! because on the UUID of the source asset (a *.shadervariantlist file) and the product subid - //! that gets assign when returning the Job Response. - //! It is still useful, because when creating the Root Variant for the ShaderAsset this assetId should - //! match the value that will be assigned by the asset processor because the Root Variant is serialized - //! as a Data::Asset inside the ShaderAsset. - void Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, bool isFullyBaked); - - //! Finalizes and assigns ownership of the asset to result, if successful. - //! Otherwise false is returned and result is left untouched. - bool End(Data::Asset& result); - - ///////////////////////////////////////////////////////////////////// - // Methods for all shader variant types - - //! Set the timestamp value when the ProcessJob() started. - //! This is needed to synchronize between the ShaderAsset and ShaderVariantAsset when hot-reloading shaders. - //! The idea is that this timestamp must be greater or equal than the ShaderAsset. - void SetBuildTimestamp(AZStd::sys_time_t buildTimestamp); - - //! Assigns a shaderStageFunction, which contains the byte code, to the slot dictated by the shader stage. - void SetShaderFunction(RHI::ShaderStage shaderStage, RHI::Ptr shaderStageFunction); - - }; - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader2.h deleted file mode 100644 index f62af0c125..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/Shader2.h +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include - -#include -#include -#include - -#include -#include - -#include - -#include - -namespace AZ -{ - namespace RHI - { - class PipelineStateCache; - } - - namespace RPI - { - /** - * Shader2 is effectively an 'uber-shader' containing a collection of 'variants'. Variants are - * designed to be 'variations' on the same core shader technique. To enforce this, every variant - * in the shader shares the same pipeline layout (i.e. set of shader resource groups). - * - * A shader owns a library of pipeline states. When a variant is resolved to a pipeline state, its - * lifetime is determined by the lifetime of the Shader2 (unless an explicit reference is taken). If - * an asset reload event occurs, the pipeline state cache is reset. - * - * To use Shader2: - * 1) Construct a ShaderOptionGroup instance using CreateShaderOptionGroup. - * 2) Configure the group by setting values on shader options. - * 3) Find the ShaderVariantStableId using the ShaderVariantId generated from the configured ShaderOptionGroup. - * 4) Acquire the ShaderVariant2 instance using the ShaderVariantStableId. - * 5) Configure a pipeline state descriptor on the variant; make local overrides as necessary (e.g. to configure runtime render state). - * 6) Acquire a RHI::PipelineState instance from the shader using the configured pipeline state descriptor. - * - * Remember that the returned RHI::PipelineState instance lifetime is tied to the Shader2 lifetime. - * If you need guarantee lifetime, it is safe to take a reference on the returned pipeline state. - */ - class Shader2 final - : public Data::InstanceData - , public Data::AssetBus::Handler - , public ShaderVariantFinderNotificationBus2::Handler - { - friend class ShaderSystem; - public: - AZ_INSTANCE_DATA(Shader2, "{232D8BD6-3BD4-4842-ABD2-F380BD5B0863}"); - AZ_CLASS_ALLOCATOR(Shader2, SystemAllocator, 0); - - /// Returns the shader instance associated with the provided asset. - static Data::Instance FindOrCreate(const Data::Asset& shaderAsset, const Name& supervariantName); - - ~Shader2(); - AZ_DISABLE_COPY_MOVE(Shader2); - - /// Constructs a shader option group suitable to generate a shader variant key for this shader. - ShaderOptionGroup CreateShaderOptionGroup() const; - - /// Finds the best matching ShaderVariant2 for the given shaderVariantId, - /// If the variant is loaded and ready it will return the corresponding ShaderVariant2. - /// If the variant is not yet available it will return the root ShaderVariant2. - /// Callers should listen to ShaderReloadNotificationBus to get notified whenever the exact - /// variant is loaded and available or if a variant changes, etc. - /// This function should be your one stop shop to get a ShaderVariant2 from a ShaderVariantId. - /// Alternatively: You can call FindVariantStableId() followed by GetVariant(shaderVariantStableId). - const ShaderVariant2& GetVariant(const ShaderVariantId& shaderVariantId); - - /// Finds the best matching shader variant asset and returns its StableId. - /// In cases where you can't cache the ShaderVariant2, and recurrently you may need - /// the same ShaderVariant2 at different times, then it can be convenient (and more performant) to call - /// this method to cache the ShaderVariantStableId and call GetVariant(ShaderVariantStableId) - /// when needed. - /// If the asset is not immediately found in the file system, it will return the StableId - /// of the root variant. - /// Callers should listen to ShaderReloadNotificationBus to get notified whenever the exact - /// variant is loaded and available or if a variant changes, etc. - ShaderVariantSearchResult FindVariantStableId(const ShaderVariantId& shaderVariantId) const; - - /// Returns the variant associated with the provided StableId. - /// You should call FindVariantStableId() which caches the variant, later - /// when this function is called the variant is fetched from a local map. - /// If the variant is not found, the root variant is returned. - /// "Alternatively: a more convenient approach is to call GetVariant(ShaderVariantId) which does both, the find and the get." - const ShaderVariant2& GetVariant(ShaderVariantStableId shaderVariantStableId); - - /// Convenient function that returns the root variant. - const ShaderVariant2& GetRootVariant(); - - /// Returns the pipeline state type generated by variants of this shader. - RHI::PipelineStateType GetPipelineStateType() const; - - //! Returns the ShaderInputContract which describes which inputs the shader requires - const ShaderInputContract& GetInputContract() const; - - //! Returns the ShaderOutputContract which describes which outputs the shader requires - const ShaderOutputContract& GetOutputContract() const; - - /// Acquires a pipeline state directly from a descriptor. - const RHI::PipelineState* AcquirePipelineState(const RHI::PipelineStateDescriptor& descriptor) const; - - /// Finds and returns the shader resource group asset with the requested name. Returns an empty handle if no matching group was found. - const RHI::Ptr FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const; - - /// Finds and returns the shader resource group asset associated with the requested binding slot. Returns an empty handle if no matching group was found. - const RHI::Ptr FindShaderResourceGroupLayout(uint32_t bindingSlot) const; - - /// Finds and returns the shader resource group asset designated as a ShaderVariantKey fallback. - const RHI::Ptr FindFallbackShaderResourceGroupLayout() const; - - /// Returns the set of shader resource groups referenced by all variants in the shader asset. - AZStd::array_view> GetShaderResourceGroupLayouts() const; - - /// Returns a reference to the asset used to initialize this shader. - const Data::Asset& GetAsset() const; - - //! Returns the DrawListTag that identifies which Pass and View objects will process this shader. - //! This tag corresponds to the ShaderAsset2 object's DrawListName. - RHI::DrawListTag GetDrawListTag() const; - - private: - Shader2() = default; - - static Data::Instance CreateInternal(ShaderAsset2& shaderAsset); - - bool SelectSupervariant(const Name& supervariantName); - - RHI::ResultCode Init(ShaderAsset2& shaderAsset); - - void Shutdown(); - - ConstPtr LoadPipelineLibrary() const; - void SavePipelineLibrary() const; - - /////////////////////////////////////////////////////////////////// - /// AssetBus overrides - void OnAssetReloaded(Data::Asset asset) override; - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus overrides - void OnShaderVariantTreeAssetReady(Data::Asset /*shaderVariantTreeAsset*/, bool /*isError*/) override {}; - void OnShaderVariantAssetReady(Data::Asset shaderVariantAsset, bool IsError) override; - /////////////////////////////////////////////////////////////////// - - //! Returns the path to the pipeline library cache file. - AZStd::string GetPipelineLibraryPath() const; - - //! A strong reference to the shader asset. - Data::Asset m_asset; - - //! Selects current supervariant to be used. - //! This value is defined at instantiation. - SupervariantIndex m_supervariantIndex; - - //! The pipeline state type required by this shader. - RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Draw; - - //! A cached pointer to the pipeline state cache owned by RHISystem. - RHI::PipelineStateCache* m_pipelineStateCache = nullptr; - - //! A handle to the pipeline library in the pipeline state cache. - RHI::PipelineLibraryHandle m_pipelineLibraryHandle; - - //! Used for thread safety for FindVariantStableId() and GetVariant(). - AZStd::shared_mutex m_variantCacheMutex; - - //! The root variant always exist. - ShaderVariant2 m_rootVariant; - - //! Local cache of ShaderVariants (except for the root variant), searchable by StableId. - //! Gets populated when GetVariant() is called. - AZStd::unordered_map m_shaderVariants; - - //! DrawListTag associated with this shader. - RHI::DrawListTag m_drawListTag; - }; - } -} diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h deleted file mode 100644 index c6197f48a3..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include -#include - -//#include -#include - -namespace AZ -{ - namespace RPI - { - class Shader2; - class ShaderAsset2; - - /** - * Connect to this EBus to get notifications whenever a Data::Instance reloads its ShaderAsset. - * The bus address is the AssetId of the ShaderAsset. - */ - class ShaderReloadNotifications2 - : public EBusTraits - { - - public: - ////////////////////////////////////////////////////////////////////////// - // EBusTraits overrides - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; - typedef Data::AssetId BusIdType; - ////////////////////////////////////////////////////////////////////////// - - virtual ~ShaderReloadNotifications2() {} - - //! Called when the ShaderAsset reinitializes itself in response to another asset being reloaded. - virtual void OnShaderAssetReinitialized(const Data::Asset& shaderAsset) { AZ_UNUSED(shaderAsset); } - - //! Called when the Shader instance reinitializes itself in response to the ShaderAsset being reloaded. - virtual void OnShaderReinitialized(const Shader2& shader) { AZ_UNUSED(shader); } - - //! Called when a particular shader variant is reinitialized. - virtual void OnShaderVariantReinitialized(const Shader2& shader, const ShaderVariantId& shaderVariantId, ShaderVariantStableId shaderVariantStableId) - { AZ_UNUSED(shader); AZ_UNUSED(shaderVariantId); AZ_UNUSED(shaderVariantStableId) } - }; - - typedef EBus ShaderReloadNotificationBus2; - - } // namespace RPI -} //namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h index db56217361..74a53bda0e 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h @@ -9,7 +9,6 @@ #include #include #include -#include #include #include @@ -60,10 +59,6 @@ namespace AZ /// Instantiates a unique shader resource group instance using its paired asset. static Data::Instance Create(const Data::Asset& srgAsset); - /// [GFX TODO] [ATOM-15472] Shader Build Pipeline: Remove Deprecated Files And Functions That Predate The Shader Supervariants - /// This is a temporary hack to enable integration of the new supervariant system. - bool ReplaceSrgLayoutUsingShaderAsset(Data::Asset shaderAsset, const Name& supervariantName, const Name& srgName); - /// Queues a request that the underlying hardware shader resource group be compiled. void Compile(); @@ -303,9 +298,6 @@ namespace AZ /// A reference to the SRG asset used to initialize and manipulate this group. AZ::Data::Asset m_asset; - /// A reference to the shader asset used to initialize and manipulate this group. - AZ::Data::Asset m_shaderAsset; - /// A pointer to the layout inside of m_srgAsset const RHI::ShaderResourceGroupLayout* m_layout = nullptr; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant2.h deleted file mode 100644 index b466ae728a..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/Shader/ShaderVariant2.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include - -#include - -namespace AZ -{ - namespace RPI - { - //! Represents the concrete state to configure a PipelineStateDescriptor. ShaderVariant2's match - //! the RHI::PipelineStateType of the parent Shader instance. For shaders on the raster - //! pipeline, the RHI::DrawFilterTag is also provided. - class ShaderVariant2 final - { - friend class Shader2; - public: - ShaderVariant2() = default; - AZ_DEFAULT_COPY_MOVE(ShaderVariant2); - - //! Fills a pipeline state descriptor with settings provided by the ShaderVariant2. (Note that - //! this does not fill the InputStreamLayout or OutputAttachmentLayout as that also requires - //! information from the mesh data and pass system and must be done as a separate step). - void ConfigurePipelineState(RHI::PipelineStateDescriptor& descriptor) const; - - const ShaderVariantId& GetShaderVariantId() const { return m_shaderVariantAsset->GetShaderVariantId(); } - - //! Returns whether the variant is fully baked variant (all options are static branches), or false if the - //! variant uses dynamic branches for some shader options. - //! If the shader variant is not fully baked, the ShaderVariantKeyFallbackValue must be correctly set when drawing. - bool IsFullyBaked() const { return m_shaderVariantAsset->IsFullyBaked(); } - - //! Return the timestamp when this asset was built. - //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset, especially during hot-reload. - //! This timestamp must be >= than the ShaderAsset timestamp. - AZStd::sys_time_t GetBuildTimestamp() const { return m_shaderVariantAsset->GetBuildTimestamp(); } - - bool IsRootVariant() const { return m_shaderVariantAsset->IsRootVariant(); } - - ShaderVariantStableId GetStableId() const { return m_shaderVariantAsset->GetStableId(); } - - private: - // Called by Shader. Initializes runtime data from asset data. Returns whether the call succeeded. - bool Init( - const ShaderAsset2& shaderAsset, - Data::Asset shaderVariantAsset, - SupervariantIndex supervariantIndex); - - // Cached state from the asset to avoid an indirection. - RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Count; - - // State assigned to the pipeline state descriptor. - RHI::ConstPtr m_pipelineLayoutDescriptor; - - Data::Asset m_shaderVariantAsset; - - const RHI::RenderStates* m_renderStates = nullptr; // Cached from ShaderAsset2. - }; - } -} diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h deleted file mode 100644 index d2dc44c6cd..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include - -#include -#include - -namespace AZ -{ - namespace RPI - { - class ShaderAsset2; - class ShaderVariantTreeAsset; - class ShaderVariantAsset2; - - //! This is the AZ::Interface<> declaration for the singleton responsible - //! for finding the best ShaderVariantAsset a shader can use. - //! This interface is public only to the ShaderAsset class. - //! The expectation is that when in need of shader variants the developer - //! should use AZ::RPI::Shader::GetVariant(). - class IShaderVariantFinder2 - { - public: - AZ_TYPE_INFO(IShaderVariantFinder2, "{4E041C2C-F158-412E-8961-76987EC75692}"); - - static constexpr const char* LogName = "IShaderVariantFinder2"; - - virtual ~IShaderVariantFinder2() = default; - - //! This function should be your one stop shop. - //! It simply queues the request to load a shader variant asset. - //! This function will automatically queue the ShaderVariantTreeAsset for loading if not available. - //! Afther the ShaderVariantTreeAsset is loaded and ready, it is used to find the best matching ShaderVariantStableId - //! from the given ShaderVariantId. If a valid ShaderVariantStableId is found, it will be queued for loading. - //! Eventually the caller will be notified via ShaderVariantFinderNotificationBus::OnShaderVariantAssetReady() - //! The notification will occur on the Main Thread. - virtual bool QueueLoadShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) = 0; - - //! This function does the first half of the work. It simply queues the loading of the ShaderVariantTreeAsset. - //! Given the AssetId of a ShaderAsset it will try to find and load its corresponding ShaderVariantTreeAsset from - //! the asset cache. If found, the asset will be loaded asynchronously and the caller will be notified via - //! ShaderVariantFinderNotificationBus on main thread when the ShaderVariantTreeAsset is fully loaded. - //! It is possible the requested ShaderVariantTreeAsset will never come into existence and in such - //! case the caller will NEVER be notified. - //! Returns true if the request was queued successfully. - virtual bool QueueLoadShaderVariantTreeAsset(const Data::AssetId& shaderAssetId) = 0; - - //! This function does the second half of the work. - //! Given the AssetId of a ShaderVariantTreeAsset and the stable id of a ShaderVariantAsset it will try to - //! find its corresponding ShaderVariantAsset from the asset cache. If found, the asset will be loaded - //! asynchronously and the caller will be notified via ShaderVariantFinderNotificationBus on main thread when the - //! ShaderVariantAsset is fully loaded. - //! Returns true if the request was queued successfully. - virtual bool QueueLoadShaderVariantAsset( - const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, - SupervariantIndex supervariantIndex) = 0; - - //! This is a quick blocking call that will return a valid asset only if it's been fully loaded already, - //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantAssetByVariantId(). - virtual Data::Asset GetShaderVariantAssetByVariantId( - Data::Asset shaderAsset, const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) = 0; - - virtual Data::Asset GetShaderVariantAssetByStableId( - Data::Asset shaderAsset, ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) = 0; - - //! This is a quick blocking call that will return a valid asset only if it's been fully loaded already, - //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantTreeAsset(). - virtual Data::Asset GetShaderVariantTreeAsset(const Data::AssetId& shaderAssetId) = 0; - - //! This is a quick blocking call that will return a valid asset only if i's been fully loaded already, - //! Otherwise it returns an invalid asset and the caller is supposed to call QueueLoadShaderVariantAsset(). - virtual Data::Asset GetShaderVariantAsset( - const Data::AssetId& shaderVariantTreeAssetId, ShaderVariantStableId variantStableId, - SupervariantIndex supervariantIndex) = 0; - - //! Clears the cache of loaded ShaderVariantTreeAsset and ShaderVariantAsset objects. - //! This is intended for testing. - virtual void Reset() = 0; - }; - - //! IShaderVariantFinder2 will call on this notification bus on the main thread. - //! Only the following classes are supposed to register to this notification bus: - //! AZ::RPI::ShaderAsset & AZ::RPI::Shader - class ShaderVariantFinderNotification2 - : public EBusTraits - { - public: - ////////////////////////////////////////////////////////////////////////// - // EBusTraits overrides - static const AZ::EBusAddressPolicy AddressPolicy = AZ::EBusAddressPolicy::ById; - using MutexType = AZStd::recursive_mutex; - typedef Data::AssetId BusIdType; // The AssetId of the shader asset. - ////////////////////////////////////////////////////////////////////////// - - virtual void OnShaderVariantTreeAssetReady(Data::Asset shaderVariantTreeAsset, bool isError) = 0; - virtual void OnShaderVariantAssetReady(Data::Asset shaderVariantAsset, bool isError) = 0; - }; - using ShaderVariantFinderNotificationBus2 = AZ::EBus; - - } // namespace RPI -}// namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h index 5be86c4e37..d8e2808762 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset.h @@ -32,6 +32,8 @@ namespace AZ { namespace RPI { + using ShaderResourceGroupLayoutList = AZStd::fixed_vector, RHI::Limits::Pipeline::ShaderResourceGroupCountMax>; + class ShaderAsset final : public Data::AssetData , public ShaderVariantFinderNotificationBus::Handler diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h deleted file mode 100644 index 0a1a2deced..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h +++ /dev/null @@ -1,334 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include - -namespace AZ -{ - namespace RPI - { - using ShaderResourceGroupLayoutList = AZStd::fixed_vector, RHI::Limits::Pipeline::ShaderResourceGroupCountMax>; - - enum class ShaderAsset2ProductSubId : uint32_t - { - ShaderAsset2 = 0, //!< for .azshader file, One per .shader. - RootShaderVariantAsset, //!< for .azshadervariant, one per supervariant and referenced inside the .azshader. - AzslFlat, //!< .azslin, this file contains the result of preprocessing an azsl file with MCPP, along with prepending the per-RHI azsli header. - IaJson, //!< .ia.json, Input Assembly reflection data. - OmJson, //!< .om.json, Output Merger reflection data. - SrgJson, //!< .srg.json, Shader Resource Group reflection data. - OptionsJson, //!< .options.json, Shader Options reflection data. - BindingdepJson, //!<.bindingdep.json, Binding dependencies. - GeneratedHlslSource, //!<.hlsl code generated with AZSLc. - FirstByProduct, //!< This must be last because we use this as a base for adding all the debug byProducts generated - //!< with dxc, or spirv-cross, etc. - }; - - class ShaderAsset2 final - : public Data::AssetData - , public ShaderVariantFinderNotificationBus2::Handler - , public Data::AssetBus::Handler - { - friend class ShaderAssetCreator2; - friend class ShaderAssetHandler2; - friend class ShaderAssetTester2; - public: - AZ_RTTI(ShaderAsset2, "{823395A3-D570-49F4-99A9-D820CD1DEF98}", Data::AssetData); - static void Reflect(ReflectContext* context); - - static constexpr char DisplayName[] = "Shader"; - static constexpr char Extension[] = "azshader2"; - static constexpr char Group[] = "Shader"; - - //! The default shader variant (i.e. the one without any options set). - static const ShaderVariantStableId RootShaderVariantStableId; - - // @subProductType is one of ShaderAsset2ProductSubId, or ShaderAsset2ProductSubId::FirstByProduct+ - static uint32_t MakeProductAssetSubId(uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType); - static SupervariantIndex GetSupervariantIndexFromProductAssetSubId(uint32_t assetProducSubId); - static SupervariantIndex GetSupervariantIndexFromAssetId(const Data::AssetId& assetId); - - - ShaderAsset2() = default; - ~ShaderAsset2(); - - AZ_DISABLE_COPY_MOVE(ShaderAsset2); - - - //! Returns the name of the shader. - const Name& GetName() const; - - //! Returns the pipeline state type generated by variants of this shader. - RHI::PipelineStateType GetPipelineStateType() const; - - //! Returns the draw list tag name. - //! To get the corresponding DrawListTag use DrawListTagRegistry's FindTag() or AcquireTag() (see - //! RHISystemInterface::GetDrawListTagRegistry()). The DrawListTag is also available in the Shader that corresponds to this - //! ShaderAsset2. - const Name& GetDrawListName() const; - - //! Return the timestamp when the shader asset was built. - //! This is used to synchronize versions of the ShaderAsset2 and ShaderVariantTreeAsset, especially during hot-reload. - AZStd::sys_time_t GetShaderAssetBuildTimestamp() const; - - //! Returns the shader option group layout. - const ShaderOptionGroupLayout* GetShaderOptionGroupLayout() const; - - SupervariantIndex GetSupervariantIndex(const AZ::Name& supervariantName) const; - - //! This function should be your one stop shop to get a ShaderVariantAsset. - //! Finds and returns the best matching ShaderVariantAsset given a ShaderVariantId. - //! If the ShaderVariantAsset is not fully loaded and ready at the moment, this function - //! will QueueLoad the ShaderVariantTreeAsset and subsequently will QueueLoad the ShaderVariantAsset. - //! The called will be notified via the ShaderVariantFinderNotificationBus when the - //! ShaderVariantAsset is loaded and ready. - //! In the mean time, if the required variant is not available this function - //! returns the Root Variant. - Data::Asset GetVariant( - const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex); - Data::Asset GetVariant(const ShaderVariantId& shaderVariantId) { return GetVariant(shaderVariantId, DefaultSupervariantIndex); } - - //! Finds the best matching shader variant and returns its StableId. - //! This function first loads and caches the ShaderVariantTreeAsset (if not done before). - //! If the ShaderVariantTreeAsset is not found (either the AssetProcessor has not generated it yet, or it simply doesn't exist), then - //! it returns a search result that identifies the root variant. - //! This function is thread safe. - ShaderVariantSearchResult FindVariantStableId(const ShaderVariantId& shaderVariantId); - - //! Returns the variant asset associated with the provided StableId. - //! The user should call FindVariantStableId() first to get a ShaderVariantStableId from a ShaderVariantId, - //! Or better yet, call GetVariant(ShaderVariantId) for maximum convenience. - //! If the requested variant is not found, the root variant will be returned AND the requested variant will be queued for loading. - //! Next time around if the variant has been loaded this function will return it. Alternatively - //! the caller can register with the ShaderVariantFinderNotificationBus to get the asset as soon as is available. - //! This function is thread safe. - Data::Asset GetVariant( - ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) const; - Data::Asset GetVariant(ShaderVariantStableId shaderVariantStableId) const { return GetVariant(shaderVariantStableId, DefaultSupervariantIndex); } - - Data::Asset GetRootVariant(SupervariantIndex supervariantIndex) const; - Data::Asset GetRootVariant() const { return GetRootVariant(DefaultSupervariantIndex); } - - - //! Finds and returns the shader resource group asset with the requested name. Returns an empty handle if no matching group was - //! found. - const RHI::Ptr FindShaderResourceGroupLayout( - const Name& shaderResourceGroupName, SupervariantIndex supervariantIndex) const; - const RHI::Ptr FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const - { - return FindShaderResourceGroupLayout(shaderResourceGroupName, DefaultSupervariantIndex); - } - - //! Finds and returns the shader resource group layout associated with the requested binding slot. Returns an empty handle if no matching srg was found. - const RHI::Ptr FindShaderResourceGroupLayout( - uint32_t bindingSlot, SupervariantIndex supervariantIndex) const; - const RHI::Ptr FindShaderResourceGroupLayout(uint32_t bindingSlot) const - { - return FindShaderResourceGroupLayout(bindingSlot, DefaultSupervariantIndex); - } - - //! Finds and returns the shader resource group layout designated as a ShaderVariantKey fallback. - const RHI::Ptr FindFallbackShaderResourceGroupLayout( SupervariantIndex supervariantIndex) const; - const RHI::Ptr FindFallbackShaderResourceGroupLayout() const - { - return FindFallbackShaderResourceGroupLayout(DefaultSupervariantIndex); - } - - - //! Returns the set of shader resource group layouts owned by a given supervariant. - AZStd::array_view> GetShaderResourceGroupLayouts( SupervariantIndex supervariantIndex) const; - AZStd::array_view> GetShaderResourceGroupLayouts() const - { - return GetShaderResourceGroupLayouts(DefaultSupervariantIndex); - } - - //! Returns the pipeline layout descriptor shared by all variants in the asset. - const RHI::PipelineLayoutDescriptor* GetPipelineLayoutDescriptor(SupervariantIndex supervariantIndex) const; - const RHI::PipelineLayoutDescriptor* GetPipelineLayoutDescriptor() const - { - return GetPipelineLayoutDescriptor(DefaultSupervariantIndex); - } - - //! Returns the shader resource group asset that has per-draw frequency, which is added to every draw packet. - const RHI::Ptr GetDrawSrgLayout(SupervariantIndex supervariantIndex) const; - const RHI::Ptr GetDrawSrgLayout() const - { - return GetDrawSrgLayout(DefaultSupervariantIndex); - } - - - //! Returns the ShaderInputContract which describes which inputs the shader requires - const ShaderInputContract& GetInputContract(SupervariantIndex supervariantIndex) const; - const ShaderInputContract& GetInputContract() const - { - return GetInputContract(DefaultSupervariantIndex); - } - - - //! Returns the ShaderOuputContract which describes which outputs the shader requires - const ShaderOutputContract& GetOutputContract(SupervariantIndex supervariantIndex) const; - const ShaderOutputContract& GetOutputContract() const - { - return GetOutputContract(DefaultSupervariantIndex); - } - - - //! Returns the render states for the draw pipeline. Only used for draw pipelines. - const RHI::RenderStates& GetRenderStates(SupervariantIndex supervariantIndex) const; - const RHI::RenderStates& GetRenderStates() const - { - return GetRenderStates(DefaultSupervariantIndex); - } - - - //! Returns a list of arguments for the specified attribute, or nullopt_t if the attribute is not found. The list can be empty which is still valid. - AZStd::optional GetAttribute( - const RHI::ShaderStage& shaderStage, const Name& attributeName, SupervariantIndex supervariantIndex) const; - AZStd::optional GetAttribute( - const RHI::ShaderStage& shaderStage, const Name& attributeName) const - { - return GetAttribute(shaderStage, attributeName, DefaultSupervariantIndex); - } - - - private: - /////////////////////////////////////////////////////////////////// - /// AssetBus overrides - void OnAssetReloaded(Data::Asset asset) override; - /////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus2 overrides - void OnShaderVariantTreeAssetReady(Data::Asset shaderVariantTreeAsset, bool isError) override; - void OnShaderVariantAssetReady(Data::Asset /*shaderVariantAsset*/, bool /*isError*/) override {}; - /////////////////////////////////////////////////////////////////// - - //! A Supervariant represents a set of static shader compilation parameters. - //! Those parameters can be predefined c-preprocessor macros or specific arguments - //! for AZSLc. - //! For each Supervariant there's a unique Root ShaderVariantAsset, and possibly an N amount - //! of ShaderVariantAssets. The 'N' amount is the same across all Supervariants because all Supervariants - //! share the same ShaderVariantTreeAsset. - struct Supervariant - { - AZ_TYPE_INFO(Supervariant, "{850826EF-B267-4752-92F6-A85E4175CAB8}"); - static void Reflect(AZ::ReflectContext* context); - - AZ::Name m_name; - ShaderResourceGroupLayoutList m_srgLayoutList; - RHI::Ptr m_pipelineLayoutDescriptor; - ShaderInputContract m_inputContract; - ShaderOutputContract m_outputContract; - RHI::RenderStates m_renderStates; - RHI::ShaderStageAttributeMapList m_attributeMaps; - Data::Asset m_rootShaderVariantAsset; - }; - - //! Container of shader data that is specific to an RHI API. - //! A ShaderAsset2 can contain shader data for multiple RHI APIs if - //! the platform support multiple RHIs. - struct ShaderApiDataContainer - { - AZ_TYPE_INFO(ShaderApiDataContainer, "{C636722C-60B9-421C-ACAD-9750BF634A27}"); - static void Reflect(AZ::ReflectContext* context); - - //! RHI API Type for this shader data. - RHI::APIType m_APIType; - // Index 0, will always be the default Supervariant. (see DefaultSupervariantIndex) - AZStd::vector m_supervariants; - }; - - bool FinalizeAfterLoad(); - void SetReady(); - ShaderApiDataContainer& GetCurrentShaderApiData(); - const ShaderApiDataContainer& GetCurrentShaderApiData() const; - - //! Returning pointers instead of references to allow for error checking - //! and not having to assert. - Supervariant* GetSupervariant(SupervariantIndex supervariantIndex); - const Supervariant* GetSupervariant(SupervariantIndex supervariantIndex) const; - - - //! The name is the stem of the source .shader file. - Name m_name; - - //! Dictates the type of pipeline state generated by this asset (Draw / Dispatch / etc.). - //! All shader variants, across all supervariants, in the asset adhere to this type. - RHI::PipelineStateType m_pipelineStateType = RHI::PipelineStateType::Count; - - //! Defines the layout of the shader options in the asset. - Ptr m_shaderOptionGroupLayout; - - //! List with shader data per RHI backend. - AZStd::vector m_perAPIShaderData; - - Name m_drawListName; - - //! Use to synchronize versions of the ShaderAsset2 and ShaderVariantTreeAsset, especially during hot-reload. - AZStd::sys_time_t m_shaderAssetBuildTimestamp = 0; - - - /////////////////////////////////////////////////////////////////// - //! Do Not Serialize! - - static constexpr size_t InvalidAPITypeIndex = std::numeric_limits::max(); - - //! Index that indicates which ShaderDataContainer to use. - //! At runtime, the asset checks the current active RHI Backend - //! and based on the results this variable gets set on asset load. - //! The vector @m_perAPIShaderData will be indexed with this variable. - size_t m_currentAPITypeIndex = InvalidAPITypeIndex; - - //! We can not know the ShaderVariantTreeAsset by the time this asset is being created. - //! This is a value that is discovered at run time. It becomes valid when FindVariantStableId is called at least once. - Data::Asset m_shaderVariantTree; - - //! Used for thread safety for FindVariantStableId(). - mutable AZStd::shared_mutex m_variantTreeMutex; - - bool m_shaderVariantTreeLoadWasRequested = false; - }; - - class ShaderAssetHandler2 final - : public AssetHandler - { - using Base = AssetHandler; - public: - ShaderAssetHandler2() = default; - - private: - Data::AssetHandler::LoadResult LoadAssetData( - const Data::Asset& asset, - AZStd::shared_ptr stream, - const Data::AssetFilterCB& assetLoadFilterCB) override; - Data::AssetHandler::LoadResult PostLoadInit(const Data::Asset& asset); - }; - - ////////////////////////////////////////////////////////////////////////// - } // namespace RPI - -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h deleted file mode 100644 index f998666983..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include -#include - -#include - -namespace AZ -{ - namespace RPI - { - class ShaderAssetCreator2 - : public AssetCreator - { - public: - //! Begins creation of a shader asset. - void Begin(const Data::AssetId& assetId); - - //! [Optional] Set the timestamp for when the ShaderAsset build process began. - //! This is needed to synchronize between the ShaderAsset and ShaderVariantTreeAsset when hot-reloading shaders. - void SetShaderAssetBuildTimestamp(AZStd::sys_time_t shaderAssetBuildTimestamp); - - //! [Optional] Sets the name of the shader asset from content. - void SetName(const Name& name); - - //! [Optional] Sets the DrawListTag name associated with this shader. - void SetDrawListName(const Name& name); - - //! [Required] Assigns the layout used to construct and parse shader options packed into shader variant keys. - //! Requires that the keys assigned to shader variants were constructed using the same layout. - void SetShaderOptionGroupLayout(const Ptr& shaderOptionGroupLayout); - - //! Begins the shader creation for a specific RHI API. - //! Begin must be called before the BeginAPI function is called. - //! @param type The target RHI API type. - void BeginAPI(RHI::APIType type); - - //! Begins the creation of a Supervariant for the current RHI::APIType. - //! If this is the first supervariant its name must be empty. The first - //! supervariant is always the default, nameless, supervariant. - void BeginSupervariant(const Name& name); - - void SetSrgLayoutList(const ShaderResourceGroupLayoutList& srgLayoutList); - - //! [Required] Assigns the pipeline layout descriptor shared by all variants in the shader. Shader variants - //! embedded in a single shader asset are required to use the same pipeline layout. It is not necessary to call - //! Finalize() on the pipeline layout prior to assignment, but still permitted. - void SetPipelineLayout(RHI::Ptr m_pipelineLayoutDescriptor); - - //! Assigns the contract for inputs required by the shader. - void SetInputContract(const ShaderInputContract& contract); - - //! Assigns the contract for outputs required by the shader. - void SetOutputContract(const ShaderOutputContract& contract); - - //! Assigns the render states for the draw pipeline. Ignored for non-draw pipelines. - void SetRenderStates(const RHI::RenderStates& renderStates); - - //! [Optional] Not all shaders have attributes before functions. Some attributes do not exist for all RHI::APIType either. - void SetShaderStageAttributeMapList(const RHI::ShaderStageAttributeMapList& shaderStageAttributeMapList); - - //! [Required] There's always a root variant for each supervariant. - void SetRootShaderVariantAsset(Data::Asset shaderVariantAsset); - - bool EndSupervariant(); - - bool EndAPI(); - - bool End(Data::Asset& shaderAsset); - - //! Clones an existing ShaderAsset. - void Clone(const Data::AssetId& assetId, - const ShaderAsset2& sourceShaderAsset); - - private: - - // Shader variants will use this draw list when they don't specify one. - Name m_defaultDrawList; - - // The current supervariant is cached here to facilitate asset - // construction. Additionally, prevents BeginSupervariant to be called more than once before calling EndSupervariant. - ShaderAsset2::Supervariant* m_currentSupervariant = nullptr; - - }; - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h index 620b363326..b505107378 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h @@ -13,7 +13,7 @@ namespace AZ { namespace RPI { - // Common bit positions for ShaderAsset2 and ShaderVariantAsset2 product SubIds. + // Common bit positions for ShaderAsset and ShaderVariantAsset product SubIds. static constexpr uint32_t RhiIndexBitPosition = 30; static constexpr uint32_t RhiIndexNumBits = 32 - RhiIndexBitPosition; static constexpr uint32_t RhiIndexMaxValue = (1 << RhiIndexNumBits) - 1; @@ -24,8 +24,8 @@ namespace AZ //! A wrapper around a supervariant index for type conformity. //! A supervariant index is required to find shader data from - //! Shader2 and ShaderAsset2 related APIs. - using SupervariantIndex = RHI::Handle; + //! Shader and ShaderAsset related APIs. + using SupervariantIndex = RHI::Handle; static const SupervariantIndex DefaultSupervariantIndex(0); static const SupervariantIndex InvalidSupervariantIndex; diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h deleted file mode 100644 index c24413a799..0000000000 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#pragma once - -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - //! A ShaderVariantAsset2 contains the shader byte code for each shader stage (Vertex, Fragment, Tessellation, etc) for a given RHI::APIType (dx12, vulkan, metal, etc). - //! One independent file per RHI::APIType. - class ShaderVariantAsset2 final - : public Data::AssetData - { - friend class ShaderVariantAssetHandler2; - friend class ShaderVariantAssetCreator2; - - public: - AZ_RTTI(ShaderVariantAsset2, "{51BED815-36D8-410E-90F0-1FA9FF765FBA}", Data::AssetData); - - static void Reflect(ReflectContext* context); - - static constexpr const char* Extension = "azshadervariant2"; - static constexpr const char* DisplayName = "ShaderVariant"; - static constexpr const char* Group = "Shader"; - - static constexpr uint32_t ShaderVariantAsset2SubProductType = 1; - //! @rhiApiUniqueIndex comes from RHI::Factory::GetAPIUniqueIndex() - //! @subProductType is always 0 for a regular ShaderVariantAsset2, for all other debug subProducts created - //! by ShaderVariantAssetBuilder2 this is 1+. - static uint32_t MakeAssetProductSubId( - uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, ShaderVariantStableId variantStableId, - uint32_t subProductType = ShaderVariantAsset2SubProductType); - - ShaderVariantAsset2() = default; - ~ShaderVariantAsset2() = default; - - AZ_DISABLE_COPY_MOVE(ShaderVariantAsset2); - - RPI::ShaderVariantStableId GetStableId() const { return m_stableId; } - - const ShaderVariantId& GetShaderVariantId() const { return m_shaderVariantId; } - - //! Returns the shader stage function associated with the provided stage enum value. - const RHI::ShaderStageFunction* GetShaderStageFunction(RHI::ShaderStage shaderStage) const; - - //! Returns whether the variant is fully baked variant (all options are static branches), or false if the - //! variant uses dynamic branches for some shader options. - //! If the shader variant is not fully baked, the ShaderVariantKeyFallbackValue must be correctly set when drawing. - bool IsFullyBaked() const; - - //! Return the timestamp when this asset was built, and it must be >= than the timestamp of the main ShaderAsset. - //! This is used to synchronize versions of the ShaderAsset and ShaderVariantAsset2, especially during hot-reload. - AZStd::sys_time_t GetBuildTimestamp() const; - - bool IsRootVariant() const { return m_stableId == RPI::RootShaderVariantStableId; } - - private: - //! Called by asset creators to assign the asset to a ready state. - void SetReady(); - bool FinalizeAfterLoad(); - - //! See AZ::RPI::ShaderVariantListSourceData::VariantInfo::m_stableId for details. - RPI::ShaderVariantStableId m_stableId; - - ShaderVariantId m_shaderVariantId; - - bool m_isFullyBaked = false; - - AZStd::array, RHI::ShaderStageCount> m_functionsByStage; - - //! Used to synchronize versions of the ShaderAsset and ShaderVariantAsset2, especially during hot-reload. - AZStd::sys_time_t m_buildTimestamp = 0; - }; - - class ShaderVariantAssetHandler2 final - : public AssetHandler - { - using Base = AssetHandler; - public: - ShaderVariantAssetHandler2() = default; - - private: - LoadResult LoadAssetData(const Data::Asset& asset, AZStd::shared_ptr stream, const AZ::Data::AssetFilterCB& assetLoadFilterCB) override; - bool PostLoadInit(const Data::Asset& asset); - }; - - } // namespace RPI - -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp b/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp index cbcaf856f9..86691e5983 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Builders/BuilderComponent.cpp @@ -21,7 +21,6 @@ #include #include #include -#include #include #include #include @@ -31,7 +30,6 @@ #include #include #include -#include #include #include @@ -85,7 +83,6 @@ namespace AZ m_assetWorkers.emplace_back(MakeAssetBuilder()); m_assetHandlers.emplace_back(MakeAssetHandler()); - m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); @@ -96,7 +93,6 @@ namespace AZ m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); - m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); m_assetHandlers.emplace_back(MakeAssetHandler()); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp deleted file mode 100644 index c46da9c868..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include - -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - void ShaderVariantAssetCreator2::Begin(const AZ::Data::AssetId& assetId, const ShaderVariantId& shaderVariantId, RPI::ShaderVariantStableId stableId, bool isFullyBaked) - { - BeginCommon(assetId); - - if (ValidateIsReady()) - { - m_asset->m_stableId = stableId; - m_asset->m_shaderVariantId = shaderVariantId; - m_asset->m_isFullyBaked = isFullyBaked; - } - } - - bool ShaderVariantAssetCreator2::End(Data::Asset& result) - { - if (!ValidateIsReady()) - { - return false; - } - - if (!m_asset->FinalizeAfterLoad()) - { - ReportError("Failed to finalize the ShaderResourceGroupAsset."); - return false; - } - - bool foundDrawFunctions = false; - bool foundDispatchFunctions = false; - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Vertex) || - m_asset->GetShaderStageFunction(RHI::ShaderStage::Tessellation) || - m_asset->GetShaderStageFunction(RHI::ShaderStage::Fragment)) - { - foundDrawFunctions = true; - } - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Compute)) - { - foundDispatchFunctions = true; - } - - - if (foundDrawFunctions && foundDispatchFunctions) - { - ReportError("ShaderVariant contains both Draw functions and Dispatch functions."); - return false; - } - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Fragment) && - !m_asset->GetShaderStageFunction(RHI::ShaderStage::Vertex)) - { - ReportError("Shader Variant with StableId '%u' has a fragment function but no vertex function.", m_asset->m_stableId); - return false; - } - - if (m_asset->GetShaderStageFunction(RHI::ShaderStage::Tessellation) && - !m_asset->GetShaderStageFunction(RHI::ShaderStage::Vertex)) - { - ReportError("Shader Variant with StableId '%u' has a tessellation function but no vertex function.", m_asset->m_stableId); - return false; - } - - - - m_asset->SetReady(); - return EndCommon(result); - } - - - ///////////////////////////////////////////////////////////////////// - // Methods for all shader variant types - - void ShaderVariantAssetCreator2::SetBuildTimestamp(AZStd::sys_time_t buildTimestamp) - { - if (ValidateIsReady()) - { - m_asset->m_buildTimestamp = buildTimestamp; - } - } - - void ShaderVariantAssetCreator2::SetShaderFunction(RHI::ShaderStage shaderStage, RHI::Ptr shaderStageFunction) - { - if (ValidateIsReady()) - { - m_asset->m_functionsByStage[static_cast(shaderStage)] = shaderStageFunction; - } - } - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader2.cpp deleted file mode 100644 index 53c5e65601..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/Shader2.cpp +++ /dev/null @@ -1,408 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include - -#include - -#include - -#include -#include - -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - Data::Instance Shader2::FindOrCreate(const Data::Asset& shaderAsset, const Name& supervariantName) - { - Data::Instance shaderInstance = Data::InstanceDatabase::Instance().FindOrCreate( - Data::InstanceId::CreateFromAssetId(shaderAsset.GetId()), - shaderAsset); - if (!shaderInstance) - { - return nullptr; - } - - if (!shaderInstance->SelectSupervariant(supervariantName)) - { - return nullptr; - } - - const RHI::ResultCode resultCode = shaderInstance->Init(*shaderAsset.Get()); - if (resultCode != RHI::ResultCode::Success) - { - return nullptr; - } - return shaderInstance; - } - - Data::Instance Shader2::CreateInternal([[maybe_unused]] ShaderAsset2& shaderAsset) - { - Data::Instance shader = aznew Shader2(); - return shader; - } - - Shader2::~Shader2() - { - Shutdown(); - } - - bool Shader2::SelectSupervariant(const Name& supervariantName) - { - if (supervariantName.IsEmpty()) - { - m_supervariantIndex = DefaultSupervariantIndex; - return true; - } - - auto supervariantIndex = m_asset->GetSupervariantIndex(supervariantName); - if (supervariantIndex == InvalidSupervariantIndex) - { - return false; - } - - m_supervariantIndex = supervariantIndex; - return true; - } - - RHI::ResultCode Shader2::Init(ShaderAsset2& shaderAsset) - { - AZ_Assert(m_supervariantIndex != InvalidSupervariantIndex, "Invalid supervariant index"); - - ShaderVariantFinderNotificationBus2::Handler::BusDisconnect(); - ShaderVariantFinderNotificationBus2::Handler::BusConnect(shaderAsset.GetId()); - - RHI::RHISystemInterface* rhiSystem = RHI::RHISystemInterface::Get(); - RHI::DrawListTagRegistry* drawListTagRegistry = rhiSystem->GetDrawListTagRegistry(); - - m_asset = { &shaderAsset, AZ::Data::AssetLoadBehavior::PreLoad }; - m_pipelineStateType = shaderAsset.GetPipelineStateType(); - - { - AZStd::unique_lock lock(m_variantCacheMutex); - m_shaderVariants.clear(); - } - m_rootVariant.Init(shaderAsset, shaderAsset.GetRootVariant(m_supervariantIndex), m_supervariantIndex); - - if (m_pipelineLibraryHandle.IsNull()) - { - // We set up a pipeline library only once for the lifetime of the Shader2 instance. - // This should allow the Shader2 to be reloaded at runtime many times, and cache and reuse PipelineState objects rather than rebuild them. - // It also fixes a particular TDR crash that occurred on some hardware when hot-reloading shaders and building pipeline states - // in a new pipeline library every time. - - RHI::PipelineStateCache* pipelineStateCache = rhiSystem->GetPipelineStateCache(); - ConstPtr serializedData = LoadPipelineLibrary(); - RHI::PipelineLibraryHandle pipelineLibraryHandle = pipelineStateCache->CreateLibrary(serializedData.get()); - - if (pipelineLibraryHandle.IsNull()) - { - AZ_Error("Shader2", false, "Failed to create pipeline library from pipeline state cache."); - return RHI::ResultCode::Fail; - } - - m_pipelineLibraryHandle = pipelineLibraryHandle; - m_pipelineStateCache = pipelineStateCache; - } - - const Name& drawListName = shaderAsset.GetDrawListName(); - if (!drawListName.IsEmpty()) - { - m_drawListTag = drawListTagRegistry->AcquireTag(drawListName); - if (!m_drawListTag.IsValid()) - { - AZ_Error("Shader2", false, "Failed to acquire a DrawListTag. Entries are full."); - } - } - - Data::AssetBus::Handler::BusConnect(m_asset.GetId()); - - return RHI::ResultCode::Success; - } - - void Shader2::Shutdown() - { - ShaderVariantFinderNotificationBus2::Handler::BusDisconnect(); - Data::AssetBus::Handler::BusDisconnect(); - - if (m_pipelineLibraryHandle.IsValid()) - { - SavePipelineLibrary(); - - m_pipelineStateCache->ReleaseLibrary(m_pipelineLibraryHandle); - m_pipelineStateCache = nullptr; - m_pipelineLibraryHandle = {}; - } - - if (m_drawListTag.IsValid()) - { - RHI::DrawListTagRegistry* drawListTagRegistry = RHI::RHISystemInterface::Get()->GetDrawListTagRegistry(); - drawListTagRegistry->ReleaseTag(m_drawListTag); - m_drawListTag.Reset(); - } - } - - /////////////////////////////////////////////////////////////////////// - // AssetBus overrides - void Shader2::OnAssetReloaded(Data::Asset asset) - { - ShaderReloadDebugTracker::ScopedSection reloadSection("Shader2::OnAssetReloaded %s", asset.GetHint().c_str()); - - if (asset->GetId() == m_asset->GetId()) - { - Data::Asset newAsset = { asset.GetAs(), AZ::Data::AssetLoadBehavior::PreLoad }; - AZ_Assert(newAsset, "Reloaded ShaderAsset2 is null"); - - Data::AssetBus::Handler::BusDisconnect(); - Init(*newAsset.Get()); - ShaderReloadNotificationBus2::Event(asset.GetId(), &ShaderReloadNotificationBus2::Events::OnShaderReinitialized, *this); - } - } - /////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus2 overrides - void Shader2::OnShaderVariantAssetReady(Data::Asset shaderVariantAsset, bool isError) - { - AZ_Assert(shaderVariantAsset, "Reloaded ShaderVariantAsset is null"); - const ShaderVariantStableId stableId = shaderVariantAsset->GetStableId(); - const ShaderVariantId& shaderVariantId = shaderVariantAsset->GetShaderVariantId(); - - if (isError) - { - //Remark: We do not assert if the stableId == RootShaderVariantStableId, because we can not trust in the asset data - //on error. so it is possible that on error the stbleId == RootShaderVariantStableId; - if (stableId == RootShaderVariantStableId) - { - return; - } - AZStd::unique_lock lock(m_variantCacheMutex); - m_shaderVariants.erase(stableId); - } - else - { - AZ_Assert(stableId != RootShaderVariantStableId, - "The root variant is expected to be updated by the ShaderAsset2."); - AZStd::unique_lock lock(m_variantCacheMutex); - - auto iter = m_shaderVariants.find(stableId); - if (iter != m_shaderVariants.end()) - { - ShaderVariant2& shaderVariant = iter->second; - - if (!shaderVariant.Init(*m_asset.Get(), shaderVariantAsset, m_supervariantIndex)) - { - AZ_Error("Shader2", false, "Failed to init shaderVariant with StableId=%u", shaderVariantAsset->GetStableId()); - m_shaderVariants.erase(stableId); - } - } - else - { - //This is the first time the shader variant asset comes to life. - ShaderVariant2 newVariant; - newVariant.Init(*m_asset, shaderVariantAsset, m_supervariantIndex); - m_shaderVariants.emplace(stableId, newVariant); - } - } - - //Even if there was an error, the interested parties should be notified. - ShaderReloadNotificationBus2::Event(m_asset.GetId(), &ShaderReloadNotificationBus2::Events::OnShaderVariantReinitialized, *this, shaderVariantId, stableId); - } - /////////////////////////////////////////////////////////////////// - - ConstPtr Shader2::LoadPipelineLibrary() const - { - if (IO::FileIOBase::GetInstance()) - { - return Utils::LoadObjectFromFile(GetPipelineLibraryPath()); - } - return nullptr; - } - - void Shader2::SavePipelineLibrary() const - { - if (auto* fileIOBase = IO::FileIOBase::GetInstance()) - { - RHI::ConstPtr serializedData = m_pipelineStateCache->GetLibrarySerializedData(m_pipelineLibraryHandle); - if (serializedData) - { - const AZStd::string pipelineLibraryPath = GetPipelineLibraryPath(); - - char pipelineLibraryPathResolved[AZ_MAX_PATH_LEN] = { 0 }; - fileIOBase->ResolvePath(pipelineLibraryPath.c_str(), pipelineLibraryPathResolved, AZ_MAX_PATH_LEN); - Utils::SaveObjectToFile(pipelineLibraryPathResolved, DataStream::ST_BINARY, serializedData.get()); - } - } - else - { - AZ_Error("Shader2", false, "FileIOBase is not initialized"); - } - } - - AZStd::string Shader2::GetPipelineLibraryPath() const - { - const Data::InstanceId& instanceId = GetId(); - Name platformName = RHI::Factory::Get().GetName(); - Name shaderName = m_asset->GetName(); - - AZStd::string uuidString; - instanceId.m_guid.ToString(uuidString, false, false); - - return AZStd::string::format("@user@/Atom/PipelineStateCache/%s/%s_%s_%d.bin", platformName.GetCStr(), shaderName.GetCStr(), uuidString.data(), instanceId.m_subId); - } - - ShaderOptionGroup Shader2::CreateShaderOptionGroup() const - { - return ShaderOptionGroup(m_asset->GetShaderOptionGroupLayout()); - } - - const ShaderVariant2& Shader2::GetVariant(const ShaderVariantId& shaderVariantId) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantId, m_supervariantIndex); - if (!shaderVariantAsset || shaderVariantAsset->IsRootVariant()) - { - return m_rootVariant; - } - - return GetVariant(shaderVariantAsset->GetStableId()); - } - - const ShaderVariant2& Shader2::GetRootVariant() - { - return m_rootVariant; - } - - ShaderVariantSearchResult Shader2::FindVariantStableId(const ShaderVariantId& shaderVariantId) const - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - ShaderVariantSearchResult variantSearchResult = m_asset->FindVariantStableId(shaderVariantId); - return variantSearchResult; - } - - const ShaderVariant2& Shader2::GetVariant(ShaderVariantStableId shaderVariantStableId) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - - if (!shaderVariantStableId.IsValid() || shaderVariantStableId == ShaderAsset2::RootShaderVariantStableId) - { - return m_rootVariant; - } - - { - AZStd::shared_lock lock(m_variantCacheMutex); - - auto findIt = m_shaderVariants.find(shaderVariantStableId); - if (findIt != m_shaderVariants.end()) - { - // When rebuilding shaders we may be in a state where the ShaderAsset2 and root ShaderVariantAsset have been rebuilt and - // reloaded, but some (or all) shader variants haven't been built yet. Since we want to use the latest version of the - // shader code, ignore the old variants and fall back to the newer root variant instead. There's no need to report a - // warning here because m_asset->GetVariant below will report one. - if (findIt->second.GetBuildTimestamp() >= m_asset->GetShaderAssetBuildTimestamp()) - { - return findIt->second; - } - } - } - - // By calling GetVariant, an asynchronous asset load request is enqueued if the variant - // is not fully ready. - Data::Asset shaderVariantAsset = m_asset->GetVariant(shaderVariantStableId, m_supervariantIndex); - if (!shaderVariantAsset || shaderVariantAsset == m_asset->GetRootVariant()) - { - // Return the root variant when the requested variant is not ready. - return m_rootVariant; - } - - AZStd::unique_lock lock(m_variantCacheMutex); - - // For performance reasons We are breaking this function into two locking steps. - // which means We must check again if the variant is already in the cache. - auto findIt = m_shaderVariants.find(shaderVariantStableId); - if (findIt != m_shaderVariants.end()) - { - if (findIt->second.GetBuildTimestamp() >= m_asset->GetShaderAssetBuildTimestamp()) - { - return findIt->second; - } - else - { - // This is probably very rare, but if the variant was loaded on another thread and it's out of date - // we just return the root variant. Otherwise we could end up replacing the variant in the map below while - // it's being used for rendering. - AZ_Warning( - "Shader2", false, - "Detected an uncommon state during shader reload. Returning the root variant instead of replacing the old one."); - return m_rootVariant; - } - } - - ShaderVariant2 newVariant; - newVariant.Init(*m_asset, shaderVariantAsset, m_supervariantIndex); - m_shaderVariants.emplace(shaderVariantStableId, newVariant); - - return m_shaderVariants.at(shaderVariantStableId); - } - - RHI::PipelineStateType Shader2::GetPipelineStateType() const - { - return m_pipelineStateType; - } - - const ShaderInputContract& Shader2::GetInputContract() const - { - return m_asset->GetInputContract(m_supervariantIndex); - } - - const ShaderOutputContract& Shader2::GetOutputContract() const - { - return m_asset->GetOutputContract(m_supervariantIndex); - } - - const RHI::PipelineState* Shader2::AcquirePipelineState(const RHI::PipelineStateDescriptor& descriptor) const - { - return m_pipelineStateCache->AcquirePipelineState(m_pipelineLibraryHandle, descriptor); - } - - const RHI::Ptr Shader2::FindShaderResourceGroupLayout(const Name& shaderResourceGroupName) const - { - return m_asset->FindShaderResourceGroupLayout(shaderResourceGroupName, m_supervariantIndex); - } - - const RHI::Ptr Shader2::FindShaderResourceGroupLayout(uint32_t bindingSlot) const - { - return m_asset->FindShaderResourceGroupLayout(bindingSlot, m_supervariantIndex); - } - - const RHI::Ptr Shader2::FindFallbackShaderResourceGroupLayout() const - { - return m_asset->FindFallbackShaderResourceGroupLayout(m_supervariantIndex); - } - - AZStd::array_view> Shader2::GetShaderResourceGroupLayouts() const - { - return m_asset->GetShaderResourceGroupLayouts(m_supervariantIndex); - } - - const Data::Asset& Shader2::GetAsset() const - { - return m_asset; - } - - RHI::DrawListTag Shader2::GetDrawListTag() const - { - return m_drawListTag; - } - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp index a5ef625f88..0bf07360ea 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderResourceGroup.cpp @@ -83,41 +83,6 @@ namespace AZ return RHI::ResultCode::Success; } - bool ShaderResourceGroup::ReplaceSrgLayoutUsingShaderAsset( - Data::Asset shaderAsset, const Name& supervariantName, const Name& srgName) - { - AZ_TRACE_METHOD(); - - SupervariantIndex supervariantIndex = shaderAsset->GetSupervariantIndex(supervariantName); - if (supervariantIndex == InvalidSupervariantIndex) - { - AZ_Assert( - false, "Supervariant with name [%s] not found in shader asset [%s]", supervariantName.GetCStr(), - shaderAsset->GetName().GetCStr()); - return false; - } - - m_layout = shaderAsset->FindShaderResourceGroupLayout(srgName, supervariantIndex).get(); - - if (!m_layout) - { - AZ_Assert(false, "ShaderResourceGroup cannot be initialized due to invalid ShaderResourceGroupLayout"); - return false; - } - - m_shaderResourceGroup->SetName(m_layout->GetName()); - m_data = RHI::ShaderResourceGroupData(m_layout); - m_shaderAsset = shaderAsset; - - // The RPI groups match the same dimensions as the RHI group. - m_imageGroup.clear(); - m_imageGroup.resize(m_layout->GetGroupSizeForImages()); - m_bufferGroup.clear(); - m_bufferGroup.resize(m_layout->GetGroupSizeForBuffers()); - - return true; - } - void ShaderResourceGroup::Compile() { m_shaderResourceGroup->Compile(m_data); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp index 371c79676a..1c5b37566c 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderSystem.cpp @@ -7,18 +7,15 @@ #include #include -#include #include #include #include #include #include -#include #include #include #include -#include #include #include @@ -40,11 +37,9 @@ namespace AZ ShaderVariantId::Reflect(context); ShaderVariantStableId::Reflect(context); ShaderAsset::Reflect(context); - ShaderAsset2::Reflect(context); ShaderInputContract::Reflect(context); ShaderOutputContract::Reflect(context); ShaderVariantAsset::Reflect(context); - ShaderVariantAsset2::Reflect(context); ShaderVariantTreeAsset::Reflect(context); ReflectShaderStageType(context); PrecompiledShaderAssetSourceData::Reflect(context); @@ -58,10 +53,8 @@ namespace AZ void ShaderSystem::GetAssetHandlers(AssetHandlerPtrList& assetHandlers) { assetHandlers.emplace_back(MakeAssetHandler()); - assetHandlers.emplace_back(MakeAssetHandler()); assetHandlers.emplace_back(MakeAssetHandler()); assetHandlers.emplace_back(MakeAssetHandler()); - assetHandlers.emplace_back(MakeAssetHandler()); assetHandlers.emplace_back(MakeAssetHandler()); } @@ -80,14 +73,6 @@ namespace AZ Data::InstanceDatabase::Create(azrtti_typeid(), handler); } - { - Data::InstanceHandler handler; - handler.m_createFunction = [](Data::AssetData* shaderAsset) { - return Shader2::CreateInternal(*(azrtti_cast(shaderAsset))); - }; - Data::InstanceDatabase::Create(azrtti_typeid(), handler); - } - { Data::InstanceHandler handler; handler.m_createFunction = [](Data::AssetData* srgAsset) @@ -110,7 +95,6 @@ namespace AZ void ShaderSystem::Shutdown() { Data::InstanceDatabase::Destroy(); - Data::InstanceDatabase::Destroy(); Data::InstanceDatabase::Destroy(); Data::InstanceDatabase::Destroy(); Interface::Unregister(this); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant2.cpp deleted file mode 100644 index 0a52451f31..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/Shader/ShaderVariant2.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include - -#include -#include - -#include - -namespace AZ -{ - namespace RPI - { - bool ShaderVariant2::Init( - const ShaderAsset2& shaderAsset, - Data::Asset shaderVariantAsset, - SupervariantIndex supervariantIndex) - { - m_pipelineStateType = shaderAsset.GetPipelineStateType(); - m_pipelineLayoutDescriptor = shaderAsset.GetPipelineLayoutDescriptor(supervariantIndex); - m_shaderVariantAsset = shaderVariantAsset; - m_renderStates = &shaderAsset.GetRenderStates(supervariantIndex); - return true; - } - - void ShaderVariant2::ConfigurePipelineState(RHI::PipelineStateDescriptor& descriptor) const - { - descriptor.m_pipelineLayoutDescriptor = m_pipelineLayoutDescriptor; - - switch (descriptor.GetType()) - { - case RHI::PipelineStateType::Draw: - { - AZ_Assert(m_pipelineStateType == RHI::PipelineStateType::Draw, "ShaderVariant2 is not intended for the raster pipeline."); - AZ_Assert(m_renderStates, "Invalid RenderStates"); - RHI::PipelineStateDescriptorForDraw& descriptorForDraw = static_cast(descriptor); - descriptorForDraw.m_vertexFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Vertex); - descriptorForDraw.m_tessellationFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Tessellation); - descriptorForDraw.m_fragmentFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Fragment); - descriptorForDraw.m_renderStates = *m_renderStates; - break; - } - - case RHI::PipelineStateType::Dispatch: - { - AZ_Assert(m_pipelineStateType == RHI::PipelineStateType::Dispatch, "ShaderVariant2 is not intended for the compute pipeline."); - RHI::PipelineStateDescriptorForDispatch& descriptorForDispatch = static_cast(descriptor); - descriptorForDispatch.m_computeFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Compute); - break; - } - - case RHI::PipelineStateType::RayTracing: - { - AZ_Assert(m_pipelineStateType == RHI::PipelineStateType::RayTracing, "ShaderVariant2 is not intended for the ray tracing pipeline."); - RHI::PipelineStateDescriptorForRayTracing& descriptorForRayTracing = static_cast(descriptor); - descriptorForRayTracing.m_rayTracingFunction = m_shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::RayTracing); - break; - } - - default: - AZ_Assert(false, "Unexpected PipelineStateType"); - break; - } - } - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset2.cpp deleted file mode 100644 index b7ffffd40f..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAsset2.cpp +++ /dev/null @@ -1,584 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - const ShaderVariantStableId ShaderAsset2::RootShaderVariantStableId{0}; - - static constexpr uint32_t SubProductTypeBitPosition = 0; - static constexpr uint32_t SubProductTypeNumBits = SupervariantIndexBitPosition - SubProductTypeBitPosition; - static constexpr uint32_t SubProductTypeMaxValue = (1 << SubProductTypeNumBits) - 1; - - static_assert(RhiIndexMaxValue == RHI::Limits::APIType::PerPlatformApiUniqueIndexMax); - - uint32_t ShaderAsset2::MakeProductAssetSubId( - uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, uint32_t subProductType) - { - AZ_Assert(rhiApiUniqueIndex <= RhiIndexMaxValue, "Invalid rhiApiUniqueIndex [%u]", rhiApiUniqueIndex); - AZ_Assert(supervariantIndex <= SupervariantIndexMaxValue, "Invalid supervariantIndex [%u]", supervariantIndex); - AZ_Assert(subProductType <= SubProductTypeMaxValue, "Invalid subProductType [%u]", subProductType); - - const uint32_t assetProductSubId = (rhiApiUniqueIndex << RhiIndexBitPosition) | - (supervariantIndex << SupervariantIndexBitPosition) | (subProductType << SubProductTypeBitPosition); - return assetProductSubId; - } - - SupervariantIndex ShaderAsset2::GetSupervariantIndexFromProductAssetSubId(uint32_t assetProducSubId) - { - const uint32_t supervariantIndex = assetProducSubId >> SupervariantIndexBitPosition; - return SupervariantIndex{supervariantIndex & SupervariantIndexMaxValue}; - } - - SupervariantIndex ShaderAsset2::GetSupervariantIndexFromAssetId(const Data::AssetId& assetId) - { - return GetSupervariantIndexFromProductAssetSubId(assetId.m_subId); - } - - void ShaderAsset2::Supervariant::Reflect(AZ::ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("Name", &Supervariant::m_name) - ->Field("SrgLayoutList", &Supervariant::m_srgLayoutList) - ->Field("PipelineLayout", &Supervariant::m_pipelineLayoutDescriptor) - ->Field("InputContract", &Supervariant::m_inputContract) - ->Field("OutputContract", &Supervariant::m_outputContract) - ->Field("RenderStates", &Supervariant::m_renderStates) - ->Field("AttributeMapList", &Supervariant::m_attributeMaps) - ->Field("RootVariantAsset", &Supervariant::m_rootShaderVariantAsset) - ; - } - } - - void ShaderAsset2::ShaderApiDataContainer::Reflect(AZ::ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("APIType", &ShaderApiDataContainer::m_APIType) - ->Field("Supervariants", &ShaderApiDataContainer::m_supervariants) - ; - } - } - - void ShaderAsset2::Reflect(ReflectContext* context) - { - Supervariant::Reflect(context); - - ShaderApiDataContainer::Reflect(context); - - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("name", &ShaderAsset2::m_name) - ->Field("pipelineStateType", &ShaderAsset2::m_pipelineStateType) - ->Field("shaderOptionGroupLayout", &ShaderAsset2::m_shaderOptionGroupLayout) - ->Field("drawListName", &ShaderAsset2::m_drawListName) - ->Field("shaderAssetBuildTimestamp", &ShaderAsset2::m_shaderAssetBuildTimestamp) - ->Field("perAPIShaderData", &ShaderAsset2::m_perAPIShaderData) - ; - } - } - - ShaderAsset2::~ShaderAsset2() - { - Data::AssetBus::Handler::BusDisconnect(); - ShaderVariantFinderNotificationBus2::Handler::BusDisconnect(); - } - - const Name& ShaderAsset2::GetName() const - { - return m_name; - } - - RHI::PipelineStateType ShaderAsset2::GetPipelineStateType() const - { - return m_pipelineStateType; - } - - const ShaderOptionGroupLayout* ShaderAsset2::GetShaderOptionGroupLayout() const - { - AZ_Assert(m_shaderOptionGroupLayout, "m_shaderOptionGroupLayout is null"); - return m_shaderOptionGroupLayout.get(); - } - - const Name& ShaderAsset2::GetDrawListName() const - { - return m_drawListName; - } - - AZStd::sys_time_t ShaderAsset2::GetShaderAssetBuildTimestamp() const - { - return m_shaderAssetBuildTimestamp; - } - - void ShaderAsset2::SetReady() - { - m_status = AssetStatus::Ready; - } - - - SupervariantIndex ShaderAsset2::GetSupervariantIndex(const AZ::Name& supervariantName) const - { - const auto& supervariants = GetCurrentShaderApiData().m_supervariants; - const uint32_t supervariantCount = supervariants.size(); - for (uint32_t index = 0; index < supervariantCount; ++index) - { - if (supervariants[index].m_name == supervariantName) - { - return SupervariantIndex{index}; - } - } - return InvalidSupervariantIndex; - } - - - Data::Asset ShaderAsset2::GetVariant( - const ShaderVariantId& shaderVariantId, SupervariantIndex supervariantIndex) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - - auto variantFinder = AZ::Interface::Get(); - AZ_Assert(variantFinder, "The IShaderVariantFinder doesn't exist"); - - Data::Asset thisAsset(this, Data::AssetLoadBehavior::Default); - Data::Asset shaderVariantAsset = - variantFinder->GetShaderVariantAssetByVariantId(thisAsset, shaderVariantId, supervariantIndex); - if (!shaderVariantAsset) - { - variantFinder->QueueLoadShaderVariantAssetByVariantId(thisAsset, shaderVariantId, supervariantIndex); - } - return shaderVariantAsset; - } - - ShaderVariantSearchResult ShaderAsset2::FindVariantStableId(const ShaderVariantId& shaderVariantId) - { - AZ_PROFILE_FUNCTION(Debug::ProfileCategory::AzRender); - - uint32_t dynamicOptionCount = aznumeric_cast(GetShaderOptionGroupLayout()->GetShaderOptions().size()); - ShaderVariantSearchResult variantSearchResult{RootShaderVariantStableId, dynamicOptionCount }; - - if (!dynamicOptionCount) - { - // The shader has no options at all. There's nothing to search. - return variantSearchResult; - } - - auto variantFinder = AZ::Interface::Get(); - AZ_Assert(variantFinder, "The IShaderVariantFinder doesn't exist"); - - { - AZStd::shared_lock lock(m_variantTreeMutex); - if (m_shaderVariantTree) - { - return m_shaderVariantTree->FindVariantStableId(GetShaderOptionGroupLayout(), shaderVariantId); - } - } - - AZStd::unique_lock lock(m_variantTreeMutex); - if (!m_shaderVariantTree) - { - m_shaderVariantTree = variantFinder->GetShaderVariantTreeAsset(GetId()); - if (!m_shaderVariantTree) - { - if (!m_shaderVariantTreeLoadWasRequested) - { - variantFinder->QueueLoadShaderVariantTreeAsset(GetId()); - m_shaderVariantTreeLoadWasRequested = true; - } - - // The variant tree could be under construction or simply doesn't exist at all. - return variantSearchResult; - } - } - return m_shaderVariantTree->FindVariantStableId(GetShaderOptionGroupLayout(), shaderVariantId); - } - - Data::Asset ShaderAsset2::GetVariant( - ShaderVariantStableId shaderVariantStableId, SupervariantIndex supervariantIndex) const - { - if (!shaderVariantStableId.IsValid() || shaderVariantStableId == RootShaderVariantStableId) - { - return GetRootVariant(supervariantIndex); - } - - auto variantFinder = AZ::Interface::Get(); - AZ_Assert(variantFinder, "No Variant Finder For shaderAsset with name [%s] and stableId [%u]", GetName().GetCStr(), shaderVariantStableId.GetIndex()); - Data::Asset variant = - variantFinder->GetShaderVariantAsset(m_shaderVariantTree.GetId(), shaderVariantStableId, supervariantIndex); - if (!variant.IsReady()) - { - // Enqueue a request to load the variant, next time around the caller will get the asset. - Data::AssetId variantTreeAssetId; - { - AZStd::shared_lock lock(m_variantTreeMutex); - if (m_shaderVariantTree) - { - variantTreeAssetId = m_shaderVariantTree.GetId(); - } - } - if (variantTreeAssetId.IsValid()) - { - variantFinder->QueueLoadShaderVariantAsset(variantTreeAssetId, shaderVariantStableId, supervariantIndex); - } - return GetRootVariant(supervariantIndex); - } - else if (variant->GetBuildTimestamp() >= m_shaderAssetBuildTimestamp) - { - return variant; - } - else - { - // When rebuilding shaders we may be in a state where the ShaderAsset2 and root ShaderVariantAsset have been rebuilt and reloaded, but some (or all) - // shader variants haven't been built yet. Since we want to use the latest version of the shader code, ignore the old variants and fall back to the newer root variant instead. - AZ_Warning("ShaderAsset2", false, "ShaderAsset2 and ShaderVariantAsset are out of sync; defaulting to root shader variant. (This is common while reloading shaders)."); - return GetRootVariant(supervariantIndex); - } - } - - Data::Asset ShaderAsset2::GetRootVariant(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return Data::Asset(); - } - return supervariant->m_rootShaderVariantAsset; - } - - const RHI::Ptr ShaderAsset2::FindShaderResourceGroupLayout( - const Name& shaderResourceGroupName, SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - const auto& srgLayoutList = supervariant->m_srgLayoutList; - const auto findIt = AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) - { - return layout->GetName() == shaderResourceGroupName; - }); - - if (findIt != srgLayoutList.end()) - { - return *findIt; - } - - return nullptr; - } - - const RHI::Ptr ShaderAsset2::FindShaderResourceGroupLayout( - uint32_t bindingSlot, SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - const auto& srgLayoutList = supervariant->m_srgLayoutList; - const auto findIt = - AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) - { - return layout && layout->GetBindingSlot() == bindingSlot; - }); - - if (findIt != srgLayoutList.end()) - { - return *findIt; - } - - return nullptr; - } - - const RHI::Ptr ShaderAsset2::FindFallbackShaderResourceGroupLayout( - SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - const auto& srgLayoutList = supervariant->m_srgLayoutList; - const auto findIt = - AZStd::find_if(srgLayoutList.begin(), srgLayoutList.end(), [&](const RHI::Ptr& layout) - { - return layout && layout->HasShaderVariantKeyFallbackEntry(); - }); - - if (findIt != srgLayoutList.end()) - { - return *findIt; - } - - return nullptr; - } - - AZStd::array_view> ShaderAsset2::GetShaderResourceGroupLayouts( - SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return {}; - } - return supervariant->m_srgLayoutList; - } - - - const RHI::Ptr ShaderAsset2::GetDrawSrgLayout(SupervariantIndex supervariantIndex) const - { - return FindShaderResourceGroupLayout(SrgBindingSlot::Draw, supervariantIndex); - } - - const ShaderInputContract& ShaderAsset2::GetInputContract(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - return supervariant->m_inputContract; - } - - const ShaderOutputContract& ShaderAsset2::GetOutputContract(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - return supervariant->m_outputContract; - } - - const RHI::RenderStates& ShaderAsset2::GetRenderStates(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - return supervariant->m_renderStates; - } - - const RHI::PipelineLayoutDescriptor* ShaderAsset2::GetPipelineLayoutDescriptor(SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return nullptr; - } - AZ_Assert(supervariant->m_pipelineLayoutDescriptor, "m_pipelineLayoutDescriptor is null"); - return supervariant->m_pipelineLayoutDescriptor.get(); - } - - AZStd::optional ShaderAsset2::GetAttribute(const RHI::ShaderStage& shaderStage, const Name& attributeName, - SupervariantIndex supervariantIndex) const - { - auto supervariant = GetSupervariant(supervariantIndex); - if (!supervariant) - { - return AZStd::nullopt; - } - const auto stageIndex = static_cast(shaderStage); - AZ_Assert(stageIndex < RHI::ShaderStageCount, "Invalid shader stage specified!"); - - const auto& attributeMaps = supervariant->m_attributeMaps; - const auto& attrPair = attributeMaps[stageIndex].find(attributeName); - if (attrPair == attributeMaps[stageIndex].end()) - { - return AZStd::nullopt; - } - - return attrPair->second; - } - - ShaderAsset2::ShaderApiDataContainer& ShaderAsset2::GetCurrentShaderApiData() - { - const size_t perApiShaderDataCount = m_perAPIShaderData.size(); - AZ_Assert(perApiShaderDataCount > 0, "Invalid m_perAPIShaderData"); - - if (m_currentAPITypeIndex < perApiShaderDataCount) - { - return m_perAPIShaderData[m_currentAPITypeIndex]; - } - - // We may only endup here when running in a Builder context. - return m_perAPIShaderData[0]; - } - - const ShaderAsset2::ShaderApiDataContainer& ShaderAsset2::GetCurrentShaderApiData() const - { - const size_t perApiShaderDataCount = m_perAPIShaderData.size(); - AZ_Assert(perApiShaderDataCount > 0, "Invalid m_perAPIShaderData"); - - if (m_currentAPITypeIndex < perApiShaderDataCount) - { - return m_perAPIShaderData[m_currentAPITypeIndex]; - } - - // We may only endup here when running in a Builder context. - return m_perAPIShaderData[0]; - } - - ShaderAsset2::Supervariant* ShaderAsset2::GetSupervariant(SupervariantIndex supervariantIndex) - { - auto& supervariants = GetCurrentShaderApiData().m_supervariants; - auto index = supervariantIndex.GetIndex(); - if (index >= supervariants.size()) - { - AZ_Error( - "ShaderAsset2", false, "Supervariant index = %u is invalid because there are only %zu supervariants", index, - supervariants.size()); - return nullptr; - } - - return &supervariants[index]; - } - - const ShaderAsset2::Supervariant* ShaderAsset2::GetSupervariant(SupervariantIndex supervariantIndex) const - { - const auto& supervariants = GetCurrentShaderApiData().m_supervariants; - auto index = supervariantIndex.GetIndex(); - if (index >= supervariants.size()) - { - AZ_Error( - "ShaderAsset2", false, "Supervariant index = %u is invalid because there are only %zu supervariants", index, - supervariants.size()); - return nullptr; - } - - return &supervariants[index]; - } - - bool ShaderAsset2::FinalizeAfterLoad() - { - // Use the current RHI that is active to select which shader data to use. - // We don't assert if the Factory is not available because this method could be called during build time, - // when no Factory is available. Some assets (like the material asset) need to load the ShaderAsset2 - // in order to get some non API specific data (like a ShaderResourceGroup) during their build - // process. If they try to access any RHI API specific data, an assert will be trigger because the - // correct API index will not set. - if (RHI::Factory::IsReady()) - { - auto rhiType = RHI::Factory::Get().GetType(); - auto findIt = AZStd::find_if(m_perAPIShaderData.begin(), m_perAPIShaderData.end(), [&rhiType](const auto& shaderData) - { - return shaderData.m_APIType == rhiType; - }); - - if (findIt != m_perAPIShaderData.end()) - { - m_currentAPITypeIndex = AZStd::distance(m_perAPIShaderData.begin(), findIt); - } - else - { - AZ_Error("ShaderAsset2", false, "Could not find shader for API %s in shader %s", RHI::Factory::Get().GetName().GetCStr(), GetName().GetCStr()); - return false; - } - } - - // Common finalize check - for (const auto& shaderApiData : m_perAPIShaderData) - { - const auto& supervariants = shaderApiData.m_supervariants; - for (const auto& supervariant : supervariants) - { - bool beTrue = supervariant.m_attributeMaps.size() == RHI::ShaderStageCount; - if (!beTrue) - { - AZ_Error("ShaderAsset2", false, "Unexpected number of shader stages at supervariant with name [%s]!", supervariant.m_name.GetCStr()); - return false; - } - } - } - - // Once the ShaderAsset2 is loaded, it is necessary to listen for changes in the Root Variant Asset. - Data::AssetBus::Handler::BusConnect(GetRootVariant().GetId()); - ShaderVariantFinderNotificationBus2::Handler::BusConnect(GetId()); - - return true; - } - - /////////////////////////////////////////////////////////////////////// - // AssetBus overrides... - void ShaderAsset2::OnAssetReloaded(Data::Asset asset) - { - ShaderReloadDebugTracker::ScopedSection reloadSection("ShaderAsset2::OnAssetReloaded %s", asset.GetHint().c_str()); - - Data::Asset shaderVariantAsset = { asset.GetAs(), AZ::Data::AssetLoadBehavior::PreLoad }; - AZ_Assert(shaderVariantAsset->GetStableId() == RootShaderVariantStableId, - "Was expecting to update the root variant"); - SupervariantIndex supervariantIndex = GetSupervariantIndexFromAssetId(asset.GetId()); - GetCurrentShaderApiData().m_supervariants[supervariantIndex.GetIndex()].m_rootShaderVariantAsset = asset; - - ShaderReloadNotificationBus2::Event(GetId(), &ShaderReloadNotificationBus2::Events::OnShaderAssetReinitialized, Data::Asset{ this, AZ::Data::AssetLoadBehavior::PreLoad } ); - } - /////////////////////////////////////////////////////////////////////// - - /////////////////////////////////////////////////////////////////// - /// ShaderVariantFinderNotificationBus2 overrides - void ShaderAsset2::OnShaderVariantTreeAssetReady(Data::Asset shaderVariantTreeAsset, bool isError) - { - ShaderReloadDebugTracker::ScopedSection reloadSection("ShaderAsset2::OnShaderVariantTreeAssetReady %s", shaderVariantTreeAsset.GetHint().c_str()); - - AZStd::unique_lock lock(m_variantTreeMutex); - if (isError) - { - m_shaderVariantTree = {}; //This will force to attempt to reload later. - m_shaderVariantTreeLoadWasRequested = false; - } - else - { - m_shaderVariantTree = shaderVariantTreeAsset; - } - lock.unlock(); - ShaderReloadNotificationBus2::Event(GetId(), &ShaderReloadNotificationBus2::Events::OnShaderAssetReinitialized, Data::Asset{ this, AZ::Data::AssetLoadBehavior::PreLoad }); - } - - /////////////////////////////////////////////////////////////////// - - - /////////////////////////////////////////////////////////////////////// - // ShaderAssetHandler - - Data::AssetHandler::LoadResult ShaderAssetHandler2::LoadAssetData( - const Data::Asset& asset, - AZStd::shared_ptr stream, - const Data::AssetFilterCB& assetLoadFilterCB) - { - if (Base::LoadAssetData(asset, stream, assetLoadFilterCB) == Data::AssetHandler::LoadResult::LoadComplete) - { - return PostLoadInit(asset); - } - return Data::AssetHandler::LoadResult::Error; - } - - Data::AssetHandler::LoadResult ShaderAssetHandler2::PostLoadInit(const Data::Asset& asset) - { - if (ShaderAsset2* shaderAsset = asset.GetAs()) - { - if (!shaderAsset->FinalizeAfterLoad()) - { - AZ_Error("ShaderAssetHandler", false, "Shader asset failed to finalize."); - return Data::AssetHandler::LoadResult::Error; - } - return Data::AssetHandler::LoadResult::LoadComplete; - } - return Data::AssetHandler::LoadResult::Error; - } - - /////////////////////////////////////////////////////////////////////// - - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp deleted file mode 100644 index 7d49384e57..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp +++ /dev/null @@ -1,399 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ - -#include - -namespace AZ -{ - namespace RPI - { - void ShaderAssetCreator2::Begin(const Data::AssetId& assetId) - { - BeginCommon(assetId); - } - - void ShaderAssetCreator2::SetShaderAssetBuildTimestamp(AZStd::sys_time_t shaderAssetBuildTimestamp) - { - if (ValidateIsReady()) - { - m_asset->m_shaderAssetBuildTimestamp = shaderAssetBuildTimestamp; - } - } - - void ShaderAssetCreator2::SetName(const Name& name) - { - if (ValidateIsReady()) - { - m_asset->m_name = name; - } - } - - void ShaderAssetCreator2::SetDrawListName(const Name& name) - { - if (ValidateIsReady()) - { - m_asset->m_drawListName = name; - } - } - - void ShaderAssetCreator2::SetShaderOptionGroupLayout(const Ptr& shaderOptionGroupLayout) - { - if (ValidateIsReady()) - { - m_asset->m_shaderOptionGroupLayout = shaderOptionGroupLayout; - } - } - - void ShaderAssetCreator2::BeginAPI(RHI::APIType type) - { - if (ValidateIsReady()) - { - ShaderAsset2::ShaderApiDataContainer shaderData; - shaderData.m_APIType = type; - m_asset->m_currentAPITypeIndex = m_asset->m_perAPIShaderData.size(); - m_asset->m_perAPIShaderData.push_back(shaderData); - } - } - - void ShaderAssetCreator2::BeginSupervariant(const Name& name) - { - if (!ValidateIsReady()) - { - return; - } - - if (m_currentSupervariant) - { - ReportError("Call EndSupervariant() before calling BeginSupervariant again."); - return; - } - - if (m_asset->m_currentAPITypeIndex == ShaderAsset2::InvalidAPITypeIndex) - { - ReportError("Can not begin supervariant with name [%s] because this function must be called between BeginAPI()/EndAPI()", name.GetCStr()); - return; - } - - if (m_asset->m_perAPIShaderData.empty()) - { - ReportError("Can not add supervariant with name [%s] because there's no per API shader data", name.GetCStr()); - return; - } - - ShaderAsset2::ShaderApiDataContainer& perAPIShaderData = m_asset->m_perAPIShaderData[m_asset->m_perAPIShaderData.size() - 1]; - if (perAPIShaderData.m_supervariants.empty()) - { - if (!name.IsEmpty()) - { - ReportError("The first supervariant must be nameless. Name [%s] is invalid", name.GetCStr()); - return; - } - } - else - { - if (name.IsEmpty()) - { - ReportError( - "Only the first supervariant can be nameless. So far there are %zu supervariants", - perAPIShaderData.m_supervariants.size()); - return; - } - } - - perAPIShaderData.m_supervariants.push_back({}); - m_currentSupervariant = &perAPIShaderData.m_supervariants[perAPIShaderData.m_supervariants.size() - 1]; - m_currentSupervariant->m_name = name; - } - - void ShaderAssetCreator2::SetSrgLayoutList(const ShaderResourceGroupLayoutList& srgLayoutList) - { - if (!ValidateIsReady()) - { - return; - } - - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - - m_currentSupervariant->m_srgLayoutList = srgLayoutList; - for (auto srgLayout : m_currentSupervariant->m_srgLayoutList) - { - if (!srgLayout->Finalize()) - { - ReportError( - "The current supervariant [%s], failed to finalize SRG Layout [%s]", m_currentSupervariant->m_name.GetCStr(), - srgLayout->GetName().GetCStr()); - return; - } - } - } - - //! [Required] Assigns the pipeline layout descriptor shared by all variants in the shader. Shader variants - //! embedded in a single shader asset are required to use the same pipeline layout. It is not necessary to call - //! Finalize() on the pipeline layout prior to assignment, but still permitted. - void ShaderAssetCreator2::SetPipelineLayout(RHI::Ptr pipelineLayoutDescriptor) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - if (m_currentSupervariant->m_srgLayoutList.empty()) - { - ReportError( - "Before setting the pipeline layout, the supervariant [%s] needs the SRG layouts", - m_currentSupervariant->m_name.GetCStr()); - return; - } - m_currentSupervariant->m_pipelineLayoutDescriptor = pipelineLayoutDescriptor; - } - - //! Assigns the contract for inputs required by the shader. - void ShaderAssetCreator2::SetInputContract(const ShaderInputContract& contract) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_inputContract = contract; - } - - //! Assigns the contract for outputs required by the shader. - void ShaderAssetCreator2::SetOutputContract(const ShaderOutputContract& contract) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_outputContract = contract; - } - - //! Assigns the render states for the draw pipeline. Ignored for non-draw pipelines. - void ShaderAssetCreator2::SetRenderStates(const RHI::RenderStates& renderStates) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_renderStates = renderStates; - } - - //! [Optional] Not all shaders have attributes before functions. Some attributes do not exist for all RHI::APIType either. - void ShaderAssetCreator2::SetShaderStageAttributeMapList(const RHI::ShaderStageAttributeMapList& shaderStageAttributeMapList) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_attributeMaps = shaderStageAttributeMapList; - } - - //! [Required] There's always a root variant for each supervariant. - void ShaderAssetCreator2::SetRootShaderVariantAsset(Data::Asset shaderVariantAsset) - { - if (!ValidateIsReady()) - { - return; - } - if (!m_currentSupervariant) - { - ReportError("BeginSupervariant() should be called first before calling %s", __FUNCTION__); - return; - } - m_currentSupervariant->m_rootShaderVariantAsset = shaderVariantAsset; - } - - static RHI::PipelineStateType GetPipelineStateType(const Data::Asset& shaderVariantAsset) - { - if (shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Vertex) || - shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Tessellation) || - shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Fragment)) - { - return RHI::PipelineStateType::Draw; - } - - if (shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::Compute)) - { - return RHI::PipelineStateType::Dispatch; - } - - if (shaderVariantAsset->GetShaderStageFunction(RHI::ShaderStage::RayTracing)) - { - return RHI::PipelineStateType::RayTracing; - } - - return RHI::PipelineStateType::Count; - } - - bool ShaderAssetCreator2::EndSupervariant() - { - if (!ValidateIsReady()) - { - return false; - } - - if (!m_currentSupervariant) - { - ReportError("Can not end a supervariant that has not started"); - return false; - } - - if (!m_currentSupervariant->m_rootShaderVariantAsset.IsReady()) - { - ReportError( - "The current supervariant [%s], is missing the root ShaderVariantAsset", m_currentSupervariant->m_name.GetCStr()); - return false; - } - - // Supervariant specific resources - if (m_currentSupervariant->m_pipelineLayoutDescriptor) - { - if (!m_currentSupervariant->m_pipelineLayoutDescriptor->IsFinalized()) - { - if (m_currentSupervariant->m_pipelineLayoutDescriptor->Finalize() != RHI::ResultCode::Success) - { - ReportError("Failed to finalize pipeline layout descriptor."); - return false; - } - } - } - else - { - ReportError("PipelineLayoutDescriptor not specified."); - return false; - } - - const ShaderInputContract& shaderInputContract = m_currentSupervariant->m_inputContract; - // Validate that each stream ID appears only once. - for (const auto& channel : shaderInputContract.m_streamChannels) - { - int count = 0; - - for (const auto& searchChannel : shaderInputContract.m_streamChannels) - { - if (channel.m_semantic == searchChannel.m_semantic) - { - ++count; - } - } - - if (count > 1) - { - ReportError( - "Input stream channel [%s] appears multiple times. For supervariant with name [%s]", - channel.m_semantic.ToString().c_str(), m_currentSupervariant->m_name.GetCStr()); - return false; - } - } - - auto pipelineStateType = GetPipelineStateType(m_currentSupervariant->m_rootShaderVariantAsset); - if (pipelineStateType == RHI::PipelineStateType::Count) - { - ReportError("Invalid pipelineStateType for supervariant [%s]", m_currentSupervariant->m_name.GetCStr()); - return false; - } - - - if (m_currentSupervariant->m_name.IsEmpty()) - { - m_asset->m_pipelineStateType = pipelineStateType; - } - else - { - if (m_asset->m_pipelineStateType != pipelineStateType) - { - ReportError("All supervariants must be of the same pipelineStateType. Current pipelineStateType is [%d], but for supervariant [%s] the pipelineStateType is [%d]", - m_asset->m_pipelineStateType, m_currentSupervariant->m_name.GetCStr(), pipelineStateType); - return false; - } - } - - m_currentSupervariant = nullptr; - return true; - } - - bool ShaderAssetCreator2::EndAPI() - { - if (!ValidateIsReady()) - { - return false; - } - if (m_currentSupervariant) - { - ReportError("EndSupervariant() must be called before calling EndAPI()"); - return false; - } - - m_asset->m_currentAPITypeIndex = ShaderAsset2::InvalidAPITypeIndex; - return true; - } - - bool ShaderAssetCreator2::End(Data::Asset& shaderAsset) - { - if (!ValidateIsReady()) - { - return false; - } - - if (m_asset->m_perAPIShaderData.empty()) - { - ReportError("Empty shader data. Check that a valid RHI is enabled for this platform."); - return false; - } - - if (!m_asset->FinalizeAfterLoad()) - { - ReportError("Failed to finalize the ShaderAsset2."); - return false; - } - - m_asset->SetReady(); - - return EndCommon(shaderAsset); - } - - void ShaderAssetCreator2::Clone(const Data::AssetId& assetId, const ShaderAsset2& sourceShaderAsset) - { - BeginCommon(assetId); - - m_asset->m_name = sourceShaderAsset.m_name; - m_asset->m_pipelineStateType = sourceShaderAsset.m_pipelineStateType; - m_asset->m_drawListName = sourceShaderAsset.m_drawListName; - m_asset->m_shaderOptionGroupLayout = sourceShaderAsset.m_shaderOptionGroupLayout; - m_asset->m_shaderAssetBuildTimestamp = sourceShaderAsset.m_shaderAssetBuildTimestamp; - m_asset->m_perAPIShaderData = sourceShaderAsset.m_perAPIShaderData; - - } - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp b/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp deleted file mode 100644 index 28fb1fd9e7..0000000000 --- a/Gems/Atom/RPI/Code/Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (c) Contributors to the Open 3D Engine Project - * - * SPDX-License-Identifier: Apache-2.0 OR MIT - * - */ -#include - -#include -#include -#include - -#include -#include -#include - -namespace AZ -{ - namespace RPI - { - uint32_t ShaderVariantAsset2::MakeAssetProductSubId( - uint32_t rhiApiUniqueIndex, uint32_t supervariantIndex, ShaderVariantStableId variantStableId, uint32_t subProductType) - { - static constexpr uint32_t SubProductTypeBitPosition = 17; - static constexpr uint32_t SubProductTypeNumBits = SupervariantIndexBitPosition - SubProductTypeBitPosition; - static constexpr uint32_t SubProductTypeMaxValue = (1 << SubProductTypeNumBits) - 1; - - static constexpr uint32_t StableIdBitPosition = 0; - static constexpr uint32_t StableIdNumBits = SubProductTypeBitPosition - StableIdBitPosition; - static constexpr uint32_t StableIdMaxValue = (1 << StableIdNumBits) - 1; - - static_assert(RhiIndexMaxValue == RHI::Limits::APIType::PerPlatformApiUniqueIndexMax); - - // The 2 Most significant bits encode the the RHI::API unique index. - AZ_Assert(rhiApiUniqueIndex <= RhiIndexMaxValue, "Invalid rhiApiUniqueIndex [%u]", rhiApiUniqueIndex); - AZ_Assert(supervariantIndex <= SupervariantIndexMaxValue, "Invalid supervariantIndex [%u]", supervariantIndex); - AZ_Assert(subProductType <= SubProductTypeMaxValue, "Invalid subProductType [%u]", subProductType); - AZ_Assert(variantStableId.GetIndex() <= StableIdMaxValue, "Invalid variantStableId [%u]", variantStableId.GetIndex()); - - const uint32_t assetProductSubId = (rhiApiUniqueIndex << RhiIndexBitPosition) | - (supervariantIndex << SupervariantIndexBitPosition) | (subProductType << SubProductTypeBitPosition) | - (variantStableId.GetIndex() << StableIdBitPosition); - return assetProductSubId; - } - - void ShaderVariantAsset2::Reflect(ReflectContext* context) - { - if (auto* serializeContext = azrtti_cast(context)) - { - serializeContext->Class() - ->Version(1) - ->Field("StableId", &ShaderVariantAsset2::m_stableId) - ->Field("ShaderVariantId", &ShaderVariantAsset2::m_shaderVariantId) - ->Field("IsFullyBaked", &ShaderVariantAsset2::m_isFullyBaked) - ->Field("FunctionsByStage", &ShaderVariantAsset2::m_functionsByStage) - ->Field("BuildTimestamp", &ShaderVariantAsset2::m_buildTimestamp) - ; - } - } - - AZStd::sys_time_t ShaderVariantAsset2::GetBuildTimestamp() const - { - return m_buildTimestamp; - } - - const RHI::ShaderStageFunction* ShaderVariantAsset2::GetShaderStageFunction(RHI::ShaderStage shaderStage) const - { - return m_functionsByStage[static_cast(shaderStage)].get(); - } - - bool ShaderVariantAsset2::IsFullyBaked() const - { - return m_isFullyBaked; - } - - void ShaderVariantAsset2::SetReady() - { - m_status = AssetStatus::Ready; - } - - bool ShaderVariantAsset2::FinalizeAfterLoad() - { - return true; - } - - ShaderVariantAssetHandler2::LoadResult ShaderVariantAssetHandler2::LoadAssetData(const Data::Asset& asset, AZStd::shared_ptr stream, const AZ::Data::AssetFilterCB& assetLoadFilterCB) - { - if (Base::LoadAssetData(asset, stream, assetLoadFilterCB) == LoadResult::LoadComplete) - { - return PostLoadInit(asset) ? LoadResult::LoadComplete : LoadResult::Error; - } - return LoadResult::Error; - } - - bool ShaderVariantAssetHandler2::PostLoadInit(const Data::Asset& asset) - { - if (ShaderVariantAsset2* shaderVariantAsset = asset.GetAs()) - { - if (!shaderVariantAsset->FinalizeAfterLoad()) - { - AZ_Error("ShaderVariantAssetHandler", false, "Shader asset failed to finalize."); - return false; - } - return true; - } - return false; - } - } // namespace RPI -} // namespace AZ diff --git a/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake b/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake index 9e81a710b2..bd63ef8a13 100644 --- a/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake +++ b/Gems/Atom/RPI/Code/atom_rpi_edit_files.cmake @@ -31,7 +31,6 @@ set(FILES Include/Atom/RPI.Edit/Shader/ShaderSourceData.h Include/Atom/RPI.Edit/Shader/ShaderVariantListSourceData.h Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator.h - Include/Atom/RPI.Edit/Shader/ShaderVariantAssetCreator2.h Include/Atom/RPI.Edit/Shader/ShaderVariantTreeAssetCreator.h Source/RPI.Edit/Material/LuaMaterialFunctorSourceData.cpp Source/RPI.Edit/Material/MaterialTypeSourceData.cpp @@ -49,7 +48,6 @@ set(FILES Source/RPI.Edit/Shader/ShaderSourceData.cpp Source/RPI.Edit/Shader/ShaderVariantListSourceData.cpp Source/RPI.Edit/Shader/ShaderVariantAssetCreator.cpp - Source/RPI.Edit/Shader/ShaderVariantAssetCreator2.cpp Source/RPI.Edit/Shader/ShaderVariantTreeAssetCreator.cpp Source/RPI.Edit/Common/AssetUtils.cpp Source/RPI.Edit/Common/AssetAliasesSourceData.cpp diff --git a/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake b/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake index f17fe6f572..26c096532c 100644 --- a/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake +++ b/Gems/Atom/RPI/Code/atom_rpi_public_files.cmake @@ -79,11 +79,8 @@ set(FILES Include/Atom/RPI.Public/Pass/Specific/SelectorPass.h Include/Atom/RPI.Public/Pass/Specific/SwapChainPass.h Include/Atom/RPI.Public/Shader/Shader.h - Include/Atom/RPI.Public/Shader/Shader2.h Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus.h - Include/Atom/RPI.Public/Shader/ShaderReloadNotificationBus2.h Include/Atom/RPI.Public/Shader/ShaderVariant.h - Include/Atom/RPI.Public/Shader/ShaderVariant2.h Include/Atom/RPI.Public/Shader/ShaderReloadDebugTracker.h Include/Atom/RPI.Public/Shader/ShaderResourceGroup.h Include/Atom/RPI.Public/Shader/ShaderResourceGroupPool.h @@ -157,9 +154,7 @@ set(FILES Source/RPI.Public/Pass/Specific/SelectorPass.cpp Source/RPI.Public/Pass/Specific/SwapChainPass.cpp Source/RPI.Public/Shader/Shader.cpp - Source/RPI.Public/Shader/Shader2.cpp Source/RPI.Public/Shader/ShaderVariant.cpp - Source/RPI.Public/Shader/ShaderVariant2.cpp Source/RPI.Public/Shader/ShaderReloadDebugTracker.cpp Source/RPI.Public/Shader/ShaderResourceGroup.cpp Source/RPI.Public/Shader/ShaderResourceGroupPool.cpp diff --git a/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake b/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake index bd23c308fe..6740055fae 100644 --- a/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake +++ b/Gems/Atom/RPI/Code/atom_rpi_reflect_files.cmake @@ -75,8 +75,6 @@ set(FILES Include/Atom/RPI.Reflect/Shader/ShaderCommonTypes.h Include/Atom/RPI.Reflect/Shader/ShaderAsset.h Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator.h - Include/Atom/RPI.Reflect/Shader/ShaderAsset2.h - Include/Atom/RPI.Reflect/Shader/ShaderAssetCreator2.h Include/Atom/RPI.Reflect/Shader/ShaderInputContract.h Include/Atom/RPI.Reflect/Shader/ShaderOptionGroup.h Include/Atom/RPI.Reflect/Shader/ShaderOptionGroupLayout.h @@ -87,9 +85,7 @@ set(FILES Include/Atom/RPI.Reflect/Shader/ShaderVariantKey.h Include/Atom/RPI.Reflect/Shader/ShaderVariantTreeAsset.h Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset.h - Include/Atom/RPI.Reflect/Shader/ShaderVariantAsset2.h Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder.h - Include/Atom/RPI.Reflect/Shader/IShaderVariantFinder2.h Include/Atom/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.h Include/Atom/RPI.Reflect/System/AnyAsset.h Include/Atom/RPI.Reflect/System/AssetAliases.h @@ -151,8 +147,6 @@ set(FILES Source/RPI.Reflect/Shader/ShaderStageType.cpp Source/RPI.Reflect/Shader/ShaderAsset.cpp Source/RPI.Reflect/Shader/ShaderAssetCreator.cpp - Source/RPI.Reflect/Shader/ShaderAsset2.cpp - Source/RPI.Reflect/Shader/ShaderAssetCreator2.cpp Source/RPI.Reflect/Shader/ShaderInputContract.cpp Source/RPI.Reflect/Shader/ShaderOptionGroup.cpp Source/RPI.Reflect/Shader/ShaderOptionGroupLayout.cpp @@ -162,7 +156,6 @@ set(FILES Source/RPI.Reflect/Shader/ShaderVariantKey.cpp Source/RPI.Reflect/Shader/ShaderVariantTreeAsset.cpp Source/RPI.Reflect/Shader/ShaderVariantAsset.cpp - Source/RPI.Reflect/Shader/ShaderVariantAsset2.cpp Source/RPI.Reflect/Shader/PrecompiledShaderAssetSourceData.cpp Source/RPI.Reflect/System/AnyAsset.cpp Source/RPI.Reflect/System/AssetAliases.cpp From 0ad6346e8b7c564a9dfe605c0f06143c6534f2ee Mon Sep 17 00:00:00 2001 From: Benjamin Jillich <43751992+amzn-jillich@users.noreply.github.com> Date: Fri, 25 Jun 2021 02:41:52 -0700 Subject: [PATCH 32/56] [LYN-4718] [Forums]: [Bug] Editor crashes consistently when EmotionFX is open and Play Game is used (#1552) --- Gems/EMotionFX/Code/Source/Integration/Assets/ActorAsset.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gems/EMotionFX/Code/Source/Integration/Assets/ActorAsset.cpp b/Gems/EMotionFX/Code/Source/Integration/Assets/ActorAsset.cpp index 0a1137d7d9..69cccace81 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Assets/ActorAsset.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/Assets/ActorAsset.cpp @@ -63,6 +63,8 @@ namespace EMotionFX &actorSettings, ""); + // Set the is owned by runtime flag before finalizing the actor, as that uses the flag already. + assetData->m_emfxActor->SetIsOwnedByRuntime(true); assetData->m_emfxActor->Finalize(); // Clear out the EMFX raw asset data. @@ -74,8 +76,6 @@ namespace EMotionFX return false; } - assetData->m_emfxActor->SetIsOwnedByRuntime(true); - // Note: Render actor depends on the mesh asset, so we need to manually create it after mesh asset has been loaded. return static_cast(assetData->m_emfxActor); } From bf0816fb69098ca49da97572d8407b49400b85bf Mon Sep 17 00:00:00 2001 From: Benjamin Jillich <43751992+amzn-jillich@users.noreply.github.com> Date: Fri, 25 Jun 2021 02:47:09 -0700 Subject: [PATCH 33/56] [LYN-4574] [LYN-4603] [LYN-4669] Saving motions and actors to json-based .assetinfo files in the Animation Editor fails (#1509) * Fixes saving motions from within the Animation Editor * Fixes saving actors from within the Animation Editor * The motion event chunk of the .motion file format now also stores the event data as json (rather than XML) reducing motion file sizes (Example: 60KB motion went down to 49KB, containing only 4 motion events from 2 tracks). * Fully backward compatible * New motion meta data rule stores the event data directly rather than command strings or objects. This is the way that aligns with the Json paradigm and as side-effect bypasses the optionals that we use for the commands which fixes the issue. * [LYN-4574] Adding new motion event meta data rule that stores the event data directly rather than via commands to align with the Json paradigm * [LYN-4574] Preparing motion, event table and event track for Json serialization * [LYN-4574] New chunk to store motion event data in Json format (fully backward compatible to XML) * [LYN-4669] Json: Empty AZStd::vector> serializes into 1x element with nullptr as data * [LYN-4603] EMotion FX: Cannot save actors with physics or simulated object setup in Json format --- .../Serialization/Json/JsonSerializer.cpp | 3 + .../CommandSystem/Source/MetaData.cpp | 42 --------- .../EMotionFX/CommandSystem/Source/MetaData.h | 7 -- .../Exporter/MotionEventExport.cpp | 38 ++++++-- .../RCExt/Motion/MotionGroupExporter.cpp | 12 ++- .../Behaviors/MotionGroupBehavior.cpp | 15 ++-- .../Pipeline/SceneAPIExt/Rules/MetaDataRule.h | 2 +- .../SceneAPIExt/Rules/MotionMetaDataRule.cpp | 53 ++++++++++++ .../SceneAPIExt/Rules/MotionMetaDataRule.h | 51 +++++++++++ .../SceneAPIExt/sceneapi_ext_files.cmake | 2 + .../EMotionFX/Code/EMotionFX/Source/Event.cpp | 10 +++ Gems/EMotionFX/Code/EMotionFX/Source/Event.h | 13 +-- .../Source/Importer/ChunkProcessors.cpp | 63 +++++++++++++- .../Source/Importer/ChunkProcessors.h | 1 + .../EMotionFX/Source/Importer/Importer.cpp | 1 + .../Code/EMotionFX/Source/Motion.cpp | 37 ++------ Gems/EMotionFX/Code/EMotionFX/Source/Motion.h | 20 ++--- .../EMotionFX/Source/MotionEventTable.cpp | 20 +---- .../Code/EMotionFX/Source/MotionEventTable.h | 13 +-- .../EMotionFX/Source/MotionEventTrack.cpp | 86 ++++++++----------- .../Code/EMotionFX/Source/MotionEventTrack.h | 24 ++---- .../Code/EMotionFX/Source/PhysicsSetup.cpp | 10 ++- .../EMStudioSDK/Source/Commands.cpp | 58 ++++++++++++- .../Code/Tests/EventManagerTests.cpp | 4 +- 24 files changed, 372 insertions(+), 213 deletions(-) create mode 100644 Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp create mode 100644 Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h diff --git a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializer.cpp b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializer.cpp index 51943536e8..057c0591b0 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializer.cpp +++ b/Code/Framework/AzCore/AzCore/Serialization/Json/JsonSerializer.cpp @@ -483,6 +483,9 @@ namespace AZ // tell the caller of this function to write the type id and provide a default object, if requested, for // the specific polymorphic instance the pointer is pointing to. const AZ::Uuid& actualClassId = rtti.GetActualUuid(object); + + // Note: If it is crashing here, it might be that you're serializing a pointer and forgot to initialize it with nullptr. + // Check the elementClassData to identify the causing element. const AZ::Uuid& actualDefaultClassId = rtti.GetActualUuid(defaultObject); if (actualClassId != rtti.GetTypeId()) diff --git a/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.cpp b/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.cpp index 9409f1468d..0cc96d8a2e 100644 --- a/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.cpp @@ -24,48 +24,6 @@ namespace CommandSystem { - - AZStd::vector MetaData::GenerateMotionMetaData(EMotionFX::Motion* motion) - { - AZStd::vector commands; - - if (!motion) - { - AZ_Error("EMotionFX", false, "Cannot generate meta data for motion. Motion invalid."); - return commands; - } - - // Save event tracks including motion events. - CommandAdjustMotion* adjustMotionCommand = aznew CommandAdjustMotion(); - adjustMotionCommand->SetMotionExtractionFlags(motion->GetMotionExtractionFlags()); - commands.emplace_back(adjustMotionCommand); - - const size_t eventTrackCount = motion->GetEventTable()->GetNumTracks(); - for (size_t trackIndex = 0; trackIndex < eventTrackCount; ++trackIndex) - { - const EMotionFX::MotionEventTrack* track = motion->GetEventTable()->GetTrack(trackIndex); - - CommandCreateMotionEventTrack* createMotionEventTrackCommand = aznew CommandCreateMotionEventTrack(); - createMotionEventTrackCommand->SetEventTrackName(track->GetName()); - commands.emplace_back(createMotionEventTrackCommand); - - const size_t eventCount = track->GetNumEvents(); - for (size_t eventIndex = 0; eventIndex < eventCount; ++eventIndex) - { - const EMotionFX::MotionEvent& event = track->GetEvent(eventIndex); - CommandCreateMotionEvent* createMotionEventCommand = aznew CommandCreateMotionEvent(); - commands.emplace_back(createMotionEventCommand); - createMotionEventCommand->SetEventTrackName(track->GetName()); - createMotionEventCommand->SetStartTime(event.GetStartTime()); - createMotionEventCommand->SetEndTime(event.GetEndTime()); - createMotionEventCommand->SetEventDatas(event.GetEventDatas()); - } - } - - return commands; - } - - bool MetaData::ApplyMetaDataOnMotion(EMotionFX::Motion* motion, const AZStd::vector& metaDataCommands) { for (MCore::Command* command : metaDataCommands) diff --git a/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.h b/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.h index c309bf04be..7fba241110 100644 --- a/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.h +++ b/Gems/EMotionFX/Code/EMotionFX/CommandSystem/Source/MetaData.h @@ -30,13 +30,6 @@ namespace CommandSystem class COMMANDSYSTEM_API MetaData { public: - /** - * Constructs a list of commands representing the changes the user did on the source asset and returns it as a string. - * @param motion The motion to read the changes from. - * @result A string containing a list of commands. - */ - static AZStd::vector GenerateMotionMetaData(EMotionFX::Motion* motion); - /** * Use the given list , prepare it for the given motion and apply the meta data. * @param motion The motion to apply the meta data on. diff --git a/Gems/EMotionFX/Code/EMotionFX/Exporters/ExporterLib/Exporter/MotionEventExport.cpp b/Gems/EMotionFX/Code/EMotionFX/Exporters/ExporterLib/Exporter/MotionEventExport.cpp index db2dcafbdc..78daf024f5 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Exporters/ExporterLib/Exporter/MotionEventExport.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Exporters/ExporterLib/Exporter/MotionEventExport.cpp @@ -5,6 +5,13 @@ * */ +#include +#include +#include +#include +#include +#include +#include #include "Exporter.h" #include #include @@ -28,17 +35,38 @@ namespace ExporterLib return; } - AZ::Outcome serializedMotionEventTable = MCore::ReflectionSerializer::Serialize(motionEventTable); - if (!serializedMotionEventTable.IsSuccess()) + AZ::SerializeContext* context = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(context, &AZ::ComponentApplicationBus::Events::GetSerializeContext); + if (!context) { + AZ_Error("EMotionFX", false, "Can't save motion events. Can't get serialize context from component application."); return; } - const size_t serializedTableSizeInBytes = serializedMotionEventTable.GetValue().size(); + + AZ::JsonSerializerSettings settings; + settings.m_serializeContext = context; + rapidjson::Document jsonDocument; + auto jsonResult = AZ::JsonSerialization::Store(jsonDocument, jsonDocument.GetAllocator(), *motionEventTable, settings); + if (jsonResult.GetProcessing() == AZ::JsonSerializationResult::Processing::Halted) + { + AZ_Error("EMotionFX", false, "JSON serialization failed: %s", jsonResult.ToString("").c_str()); + return; + } + + AZStd::string serializedMotionEventTable; + auto writeToStringOutcome = AzFramework::FileFunc::WriteJsonToString(jsonDocument, serializedMotionEventTable); + if (!writeToStringOutcome.IsSuccess()) + { + AZ_Error("EMotionFX", false, "WriteJsonToString failed: %s", writeToStringOutcome.GetError().c_str()); + return; + } + + const size_t serializedTableSizeInBytes = serializedMotionEventTable.size(); // the motion event table chunk header EMotionFX::FileFormat::FileChunk chunkHeader; chunkHeader.mChunkID = EMotionFX::FileFormat::SHARED_CHUNK_MOTIONEVENTTABLE; - chunkHeader.mVersion = 2; + chunkHeader.mVersion = 3; chunkHeader.mSizeInBytes = static_cast(serializedTableSizeInBytes + sizeof(EMotionFX::FileFormat::FileMotionEventTableSerialized)); @@ -51,6 +79,6 @@ namespace ExporterLib // save the chunk header and the chunk file->Write(&chunkHeader, sizeof(EMotionFX::FileFormat::FileChunk)); file->Write(&tableHeader, sizeof(EMotionFX::FileFormat::FileMotionEventTableSerialized)); - file->Write(serializedMotionEventTable.GetValue().c_str(), serializedTableSizeInBytes); + file->Write(serializedMotionEventTable.c_str(), serializedTableSizeInBytes); } } // namespace ExporterLib diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp index c077324ef1..b44f2c36b3 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp @@ -10,6 +10,7 @@ #include #include +#include #include #include #include @@ -72,7 +73,7 @@ namespace EMotionFX result += SceneEvents::Process(dataBuilderContext, AZ::RC::Phase::Filling); result += SceneEvents::Process(dataBuilderContext, AZ::RC::Phase::Finalizing); - // Check if there is meta data and apply it to the motion. + // Legacy meta data: Check if there is legacy (XML) event data rule and apply it. AZStd::vector metaDataCommands; if (Rule::MetaDataRule::LoadMetaData(motionGroup, metaDataCommands)) { @@ -82,6 +83,15 @@ namespace EMotionFX } } + // Apply motion meta data. + EMotionFX::Pipeline::Rule::MotionMetaData motionMetaData; + if (EMotionFX::Pipeline::Rule::LoadFromGroup(motionGroup, motionMetaData)) + { + motion->SetEventTable(AZStd::unique_ptr(motionMetaData.m_motionEventTable)); + motion->GetEventTable()->InitAfterLoading(motion); + motion->SetMotionExtractionFlags(motionMetaData.m_motionExtractionFlags); + } + ExporterLib::SaveMotion(filename, motion, MCore::Endian::ENDIAN_LITTLE); static AZ::Data::AssetType emotionFXMotionAssetType("{00494B8E-7578-4BA2-8B28-272E90680787}"); // from MotionAsset.h in EMotionFX Gem context.m_products.AddProduct(AZStd::move(filename), context.m_group.GetId(), emotionFXMotionAssetType, diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/MotionGroupBehavior.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/MotionGroupBehavior.cpp index ceffaf29ea..42f369d992 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/MotionGroupBehavior.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Behaviors/MotionGroupBehavior.cpp @@ -17,12 +17,13 @@ #include #include -#include +#include #include +#include +#include +#include #include #include -#include -#include namespace EMotionFX { @@ -35,11 +36,13 @@ namespace EMotionFX void MotionGroupBehavior::Reflect(AZ::ReflectContext* context) { Group::MotionGroup::Reflect(context); - Rule::MotionScaleRule::Reflect(context); - Rule::MotionCompressionSettingsRule::Reflect(context); - Rule::MorphTargetRuleReadOnly::Reflect(context); Rule::MotionAdditiveRule::Reflect(context); + Rule::MotionCompressionSettingsRule::Reflect(context); + Rule::MotionMetaData::Reflect(context); + Rule::MotionMetaDataRule::Reflect(context); Rule::MotionSamplingRule::Reflect(context); + Rule::MotionScaleRule::Reflect(context); + Rule::MorphTargetRuleReadOnly::Reflect(context); AZ::SerializeContext* serializeContext = azrtti_cast(context); if (serializeContext) diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MetaDataRule.h b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MetaDataRule.h index bc9a440cc2..58250174da 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MetaDataRule.h +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MetaDataRule.h @@ -57,7 +57,7 @@ namespace EMotionFX /** * Set the meta data string which contains a list of commands representing the changes the user did on the source asset. - * This string can be constructed using CommandSystem::GenerateMotionMetaData() and CommandSystem::GenerateActorMetaData(). + * This string can be constructed using CommandSystem::GenerateActorMetaData(). * @param metaData The meta data string containing a list of commands to be applied on the source asset. */ void SetMetaData(const AZStd::string& metaData); diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp new file mode 100644 index 0000000000..f57e4ec268 --- /dev/null +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp @@ -0,0 +1,53 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include +#include +#include +#include +#include + +namespace EMotionFX::Pipeline::Rule +{ + void MotionMetaData::Reflect(AZ::ReflectContext* context) + { + AZ::SerializeContext* serializeContext = azrtti_cast(context); + if (!serializeContext) + { + return; + } + + serializeContext->Class() + ->Version(1) + ->Field("motionEventTable", &MotionMetaData::m_motionEventTable) + ->Field("motionExtractionFlags", &MotionMetaData::m_motionExtractionFlags) + ; + } + + MotionMetaDataRule::MotionMetaDataRule() + : ExternalToolRule() + { + } + + MotionMetaDataRule::MotionMetaDataRule(const MotionMetaData& data) + : MotionMetaDataRule() + { + m_data = data; + } + + void MotionMetaDataRule::Reflect(AZ::ReflectContext* context) + { + AZ::SerializeContext* serializeContext = azrtti_cast(context); + if (serializeContext) + { + serializeContext->Class() + ->Version(1) + ->Field("data", &MotionMetaDataRule::m_data) + ; + } + } +} // EMotionFX::Pipeline::Rule diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h new file mode 100644 index 0000000000..099451ff7e --- /dev/null +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include +#include +#include +#include +#include + +namespace EMotionFX::Pipeline::Rule +{ + struct MotionMetaData + { + AZ_RTTI(EMotionFX::Pipeline::Rule::MotionMetaData, "{A381A915-3CB3-4F60-82B3-70865CFA1F4F}"); + AZ_CLASS_ALLOCATOR(MotionMetaData, AZ::SystemAllocator, 0) + + MotionMetaData() = default; + virtual ~MotionMetaData() = default; + + static void Reflect(AZ::ReflectContext* context); + + EMotionFX::MotionEventTable* m_motionEventTable = nullptr; + EMotionFX::EMotionExtractionFlags m_motionExtractionFlags; + }; + + class MotionMetaDataRule + : public ExternalToolRule + { + public: + AZ_RTTI(EMotionFX::Pipeline::Rule::MotionMetaDataRule, "{E68D0C3D-CBFF-4536-95C1-676474B351A5}", AZ::SceneAPI::DataTypes::IRule); + AZ_CLASS_ALLOCATOR(MotionMetaDataRule, AZ::SystemAllocator, 0) + + MotionMetaDataRule(); + MotionMetaDataRule(const MotionMetaData& data); + ~MotionMetaDataRule() final = default; + + const MotionMetaData& GetData() const override { return m_data; } + void SetData(const MotionMetaData& data) override { m_data = data; } + + static void Reflect(AZ::ReflectContext* context); + + private: + MotionMetaData m_data; + }; +} // EMotionFX::Pipeline::Rule diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/sceneapi_ext_files.cmake b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/sceneapi_ext_files.cmake index bf8977b317..211f85cb1c 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/sceneapi_ext_files.cmake +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/sceneapi_ext_files.cmake @@ -37,6 +37,8 @@ set(FILES Rules/IMotionCompressionSettingsRule.h Rules/MotionCompressionSettingsRule.h Rules/MotionCompressionSettingsRule.cpp + Rules/MotionMetaDataRule.h + Rules/MotionMetaDataRule.cpp Rules/IMotionScaleRule.h Rules/MotionScaleRule.h Rules/MotionScaleRule.cpp diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/Event.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/Event.cpp index 62c3924d78..e69ef9f20e 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/Event.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/Event.cpp @@ -15,6 +15,16 @@ namespace EMotionFX { AZ_CLASS_ALLOCATOR_IMPL(Event, MotionEventAllocator, 0) + Event::Event(EventDataPtr&& data) + : m_eventDatas{ AZStd::move(data) } + { + } + + Event::Event(EventDataSet&& datas) + : m_eventDatas(AZStd::move(datas)) + { + } + void Event::Reflect(AZ::ReflectContext* context) { AZ::SerializeContext* serializeContext = azrtti_cast(context); diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/Event.h b/Gems/EMotionFX/Code/EMotionFX/Source/Event.h index 8ac3e48a8c..6665ef1ae3 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/Event.h +++ b/Gems/EMotionFX/Code/EMotionFX/Source/Event.h @@ -27,16 +27,9 @@ namespace EMotionFX AZ_RTTI(Event, "{67549E9F-8E3F-4336-BDB8-716AFCBD4985}"); AZ_CLASS_ALLOCATOR_DECL - Event(EventDataPtr&& data = nullptr) - : m_eventDatas{AZStd::move(data)} - { - } - - Event(EventDataSet&& datas) - : m_eventDatas(AZStd::move(datas)) - { - } - + Event() = default; + explicit Event(EventDataPtr&& data); + explicit Event(EventDataSet&& datas); virtual ~Event() = default; static void Reflect(AZ::ReflectContext* context); diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.cpp index 1ca657af5f..ac4a44b8c0 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.cpp @@ -6,10 +6,17 @@ */ #include +#include +#include #include #include #include #include +#include +#include +#include +#include + #include #include #include @@ -1161,10 +1168,11 @@ namespace EMotionFX AZStd::vector buffer(fileEventTable.m_size); file->Read(&buffer[0], fileEventTable.m_size); - MotionEventTable* motionEventTable = AZ::Utils::LoadObjectFromBuffer(&buffer[0], buffer.size(), context); + auto motionEventTable = AZStd::unique_ptr(AZ::Utils::LoadObjectFromBuffer(&buffer[0], buffer.size(), context)); if (motionEventTable) { - motionEventTable->InitAfterLoading(motion); + motion->SetEventTable(AZStd::move(motionEventTable)); + motion->GetEventTable()->InitAfterLoading(motion); return true; } @@ -1173,6 +1181,57 @@ namespace EMotionFX //================================================================================================= + bool ChunkProcessorMotionEventTrackTable3::Process(MCore::File* file, Importer::ImportParameters& importParams) + { + Motion* motion = importParams.mMotion; + MCORE_ASSERT(motion); + + FileFormat::FileMotionEventTableSerialized fileEventTable; + file->Read(&fileEventTable, sizeof(FileFormat::FileMotionEventTableSerialized)); + + if (GetLogging()) + { + MCore::LogDetailedInfo("- Motion Event Table:"); + MCore::LogDetailedInfo(" + size = %d", fileEventTable.m_size); + } + + AZStd::vector buffer(fileEventTable.m_size); + file->Read(&buffer[0], fileEventTable.m_size); + AZStd::string_view bufferStringView(&buffer[0], buffer.size()); + + auto readJsonOutcome = AzFramework::FileFunc::ReadJsonFromString(bufferStringView); + AZStd::string errorMsg; + if (!readJsonOutcome.IsSuccess()) + { + AZ_Error("EMotionFX", false, "Loading motion event table failed due to ReadJsonFromString. %s", readJsonOutcome.TakeError().c_str()); + return false; + } + rapidjson::Document document = readJsonOutcome.TakeValue(); + + AZ::SerializeContext* context = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(context, &AZ::ComponentApplicationBus::Events::GetSerializeContext); + if (!context) + { + return false; + } + + AZ::JsonDeserializerSettings settings; + settings.m_serializeContext = context; + + MotionEventTable* motionEventTable = motion->GetEventTable(); + AZ::JsonSerializationResult::ResultCode jsonResult = AZ::JsonSerialization::Load(*motionEventTable, document, settings); + if (jsonResult.GetProcessing() == AZ::JsonSerializationResult::Processing::Halted) + { + AZ_Error("EMotionFX", false, "Loading motion event table failed due to AZ::JsonSerialization::Load."); + return false; + } + + motionEventTable->InitAfterLoading(motion); + return true; + } + + //================================================================================================= + bool ChunkProcessorActorInfo::Process(MCore::File* file, Importer::ImportParameters& importParams) { const MCore::Endian::EEndianType endianType = importParams.mEndianType; diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.h b/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.h index a319af42c8..057ebea83f 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.h +++ b/Gems/EMotionFX/Code/EMotionFX/Source/Importer/ChunkProcessors.h @@ -312,6 +312,7 @@ namespace EMotionFX // shared file format chunk processors EMFX_CHUNKPROCESSOR(ChunkProcessorMotionEventTrackTable, FileFormat::SHARED_CHUNK_MOTIONEVENTTABLE, 1) EMFX_CHUNKPROCESSOR(ChunkProcessorMotionEventTrackTable2, FileFormat::SHARED_CHUNK_MOTIONEVENTTABLE, 2) + EMFX_CHUNKPROCESSOR(ChunkProcessorMotionEventTrackTable3, FileFormat::SHARED_CHUNK_MOTIONEVENTTABLE, 3) // Actor file format chunk processors EMFX_CHUNKPROCESSOR(ChunkProcessorActorInfo, FileFormat::ACTOR_CHUNK_INFO, 1) diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/Importer/Importer.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/Importer/Importer.cpp index 2e568d2539..2c74c5f4e9 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/Importer/Importer.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/Importer/Importer.cpp @@ -1061,6 +1061,7 @@ namespace EMotionFX // shared processors RegisterChunkProcessor(aznew ChunkProcessorMotionEventTrackTable()); RegisterChunkProcessor(aznew ChunkProcessorMotionEventTrackTable2()); + RegisterChunkProcessor(aznew ChunkProcessorMotionEventTrackTable3()); // Actor file format RegisterChunkProcessor(aznew ChunkProcessorActorInfo()); diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/Motion.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/Motion.cpp index 3c34fb83f0..bff1f855d6 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/Motion.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/Motion.cpp @@ -26,29 +26,20 @@ namespace EMotionFX { AZ_CLASS_ALLOCATOR_IMPL(Motion, MotionAllocator, 0) - - // constructor Motion::Motion(const char* name) : BaseObject() { - mCustomData = nullptr; - mNameID = MCORE_INVALIDINDEX32; - mID = MCore::GetIDGenerator().GenerateID(); - mEventTable = aznew MotionEventTable(); - mUnitType = GetEMotionFX().GetUnitType(); - mFileUnitType = mUnitType; - mExtractionFlags = static_cast(0); - m_motionData = nullptr; + mID = MCore::GetIDGenerator().GenerateID(); + m_eventTable = AZStd::make_unique(); + mUnitType = GetEMotionFX().GetUnitType(); + mFileUnitType = mUnitType; + mExtractionFlags = static_cast(0); if (name) { SetName(name); } - mMotionFPS = 30.0f; - mDirtyFlag = false; - mAutoUnregister = true; - #if defined(EMFX_DEVELOPMENT_BUILD) mIsOwnedByRuntime = false; #endif // EMFX_DEVELOPMENT_BUILD @@ -57,8 +48,6 @@ namespace EMotionFX GetMotionManager().AddMotion(this); } - - // destructor Motion::~Motion() { // trigger the OnDeleteMotion event @@ -70,11 +59,6 @@ namespace EMotionFX GetMotionManager().RemoveMotion(this, false); } - if (mEventTable) - { - mEventTable->Destroy(); - } - delete m_motionData; } @@ -208,19 +192,14 @@ namespace EMotionFX MotionEventTable* Motion::GetEventTable() const { - return mEventTable; + return m_eventTable.get(); } - void Motion::SetEventTable(MotionEventTable* newTable) + void Motion::SetEventTable(AZStd::unique_ptr eventTable) { - if (mEventTable && mEventTable != newTable) - { - mEventTable->Destroy(); - } - mEventTable = newTable; + m_eventTable = AZStd::move(eventTable); } - void Motion::SetID(uint32 id) { mID = id; diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/Motion.h b/Gems/EMotionFX/Code/EMotionFX/Source/Motion.h index 7e66350cdc..e34e2ef7ab 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/Motion.h +++ b/Gems/EMotionFX/Code/EMotionFX/Source/Motion.h @@ -7,7 +7,7 @@ #pragma once -// include the required headers +#include #include "EMotionFXConfig.h" #include "EMotionFXManager.h" #include "PlayBackInfo.h" @@ -115,7 +115,7 @@ namespace EMotionFX * Set the event table. * @param newTable The new motion event table for the Motion to use. */ - void SetEventTable(MotionEventTable* newTable); + void SetEventTable(AZStd::unique_ptr eventTable); /** * Set the motion framerate. @@ -249,19 +249,19 @@ namespace EMotionFX void SetMotionData(MotionData* motionData, bool delOldFromMem=true); protected: - MotionData* m_motionData; /**< The motion data, which can in theory be any data representation/compression. */ + MotionData* m_motionData = nullptr; /**< The motion data, which can in theory be any data representation/compression. */ AZStd::string mFileName; /**< The filename of the motion. */ PlayBackInfo m_defaultPlayBackInfo; /**< The default/fallback motion playback info which will be used when no playback info is passed to the Play() function. */ - MotionEventTable* mEventTable; /**< The event table, which contains all events, and will make sure events get executed. */ + AZStd::unique_ptr m_eventTable; /**< The event table, which contains all events, and will make sure events get executed. */ MCore::Distance::EUnitType mUnitType; /**< The type of units used. */ MCore::Distance::EUnitType mFileUnitType; /**< The type of units used, inside the file that got loaded. */ - void* mCustomData; /**< A pointer to custom user data that is linked with this motion object. */ - float mMotionFPS; /**< The number of keyframes per second. */ - uint32 mNameID; /**< The ID represention the name or description of this motion. */ - uint32 mID; /**< The unique identification number for the motion. */ + void* mCustomData = nullptr; /**< A pointer to custom user data that is linked with this motion object. */ + float mMotionFPS = 30.0f; /**< The number of keyframes per second. */ + uint32 mNameID = MCORE_INVALIDINDEX32; /**< The ID represention the name or description of this motion. */ + uint32 mID = MCORE_INVALIDINDEX32; /**< The unique identification number for the motion. */ EMotionExtractionFlags mExtractionFlags; /**< The motion extraction flags, which define behavior of the motion extraction system when applied to this motion. */ - bool mDirtyFlag; /**< The dirty flag which indicates whether the user has made changes to the motion since the last file save operation. */ - bool mAutoUnregister; /**< Automatically unregister the motion from the motion manager when this motion gets deleted? Default is true. */ + bool mDirtyFlag = false; /**< The dirty flag which indicates whether the user has made changes to the motion since the last file save operation. */ + bool mAutoUnregister = true; /**< Automatically unregister the motion from the motion manager when this motion gets deleted? Default is true. */ #if defined(EMFX_DEVELOPMENT_BUILD) bool mIsOwnedByRuntime; diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.cpp index 2060203166..751f7e551a 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.cpp @@ -5,7 +5,6 @@ * */ -// include the required headers #include "MotionEventTable.h" #include "MotionEvent.h" #include "MotionEventTrack.h" @@ -19,22 +18,11 @@ namespace EMotionFX { AZ_CLASS_ALLOCATOR_IMPL(MotionEventTable, MotionEventAllocator, 0) - - // constructor - MotionEventTable::MotionEventTable() - : BaseObject() - , m_syncTrack(nullptr) - { - } - - - // destructor MotionEventTable::~MotionEventTable() { RemoveAllTracks(); } - void MotionEventTable::Reflect(AZ::ReflectContext* context) { AZ::SerializeContext* serializeContext = azrtti_cast(context); @@ -56,7 +44,6 @@ namespace EMotionFX track->SetMotion(motion); } - motion->SetEventTable(this); AutoCreateSyncTrack(motion); } @@ -96,7 +83,7 @@ namespace EMotionFX { for (MotionEventTrack* track : m_tracks) { - track->Destroy(); + delete track; } } @@ -109,7 +96,7 @@ namespace EMotionFX { if (delFromMem) { - m_tracks[index]->Destroy(); + delete m_tracks[index]; } m_tracks.erase(AZStd::next(m_tracks.begin(), index)); @@ -196,9 +183,8 @@ namespace EMotionFX AnimGraphSyncTrack* syncTrack; if (!track) { - // create and add the sync track syncTrack = aznew AnimGraphSyncTrack("Sync", motion); - AddTrack(syncTrack); + InsertTrack(0, syncTrack); } else { diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.h b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.h index 25726134ae..2101843a52 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.h +++ b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTable.h @@ -7,9 +7,7 @@ #pragma once -// include the required headers #include "EMotionFXConfig.h" -#include "BaseObject.h" #include "AnimGraphSyncTrack.h" #include @@ -40,17 +38,15 @@ namespace EMotionFX * The handling of those events is done by the MotionEventHandler class that you specify to the MotionEventManager singleton. */ class EMFX_API MotionEventTable - : public BaseObject { friend class MotionEvent; public: AZ_CLASS_ALLOCATOR_DECL - AZ_RTTI(MotionEventTable, "{DB5BF142-99BE-4026-8D3E-3E5B30C14714}", BaseObject) + AZ_RTTI(MotionEventTable, "{DB5BF142-99BE-4026-8D3E-3E5B30C14714}") - MotionEventTable(); - - ~MotionEventTable(); + MotionEventTable() = default; + virtual ~MotionEventTable(); static void Reflect(AZ::ReflectContext* context); @@ -100,7 +96,6 @@ namespace EMotionFX AZStd::vector m_tracks; /// A shortcut to the track containing sync events. - AnimGraphSyncTrack* m_syncTrack; - + AnimGraphSyncTrack* m_syncTrack = nullptr; }; } // namespace EMotionFX diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.cpp index ea984b82be..f1ec5950fb 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.cpp @@ -5,7 +5,6 @@ * */ -// include the required headers #include "MotionEventTrack.h" #include "MotionEvent.h" #include "EventManager.h" @@ -20,30 +19,19 @@ #include #include - namespace EMotionFX { AZ_CLASS_ALLOCATOR_IMPL(MotionEventTrack, MotionEventAllocator, 0) - // constructor MotionEventTrack::MotionEventTrack(Motion* motion) - : BaseObject() - , mMotion(motion) - , mNameID(MCORE_INVALIDINDEX32) - , mEnabled(true) - , mDeletable(true) + : mMotion(motion) { } - - // extended constructor MotionEventTrack::MotionEventTrack(const char* name, Motion* motion) - : BaseObject() - , mMotion(motion) - , mEnabled(true) - , mDeletable(true) + : mMotion(motion) + , m_name(name) { - SetName(name); } MotionEventTrack::MotionEventTrack(const MotionEventTrack& other) @@ -59,7 +47,7 @@ namespace EMotionFX } m_events = other.m_events; mMotion = other.mMotion; - mNameID = other.mNameID; + m_name = other.m_name; return *this; } @@ -72,8 +60,8 @@ namespace EMotionFX } serializeContext->Class() - ->Version(1) - ->Field("name", &MotionEventTrack::mNameID) + ->Version(2, VersionConverter) + ->Field("name", &MotionEventTrack::m_name) ->Field("enabled", &MotionEventTrack::mEnabled) ->Field("deletable", &MotionEventTrack::mDeletable) ->Field("events", &MotionEventTrack::m_events) @@ -94,6 +82,31 @@ namespace EMotionFX ; } + bool MotionEventTrack::VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement) + { + const unsigned int version = classElement.GetVersion(); + if (version < 2) + { + int nameElementIndex = classElement.FindElement(AZ_CRC_CE("name")); + if (nameElementIndex < 0) + { + return false; + } + AZ::SerializeContext::DataElementNode& nameElement = classElement.GetSubElement(nameElementIndex); + + MCore::StringIdPoolIndex oldName; + const bool result = nameElement.GetData(oldName); + + classElement.RemoveElement(nameElementIndex); + if (result) + { + AZStd::string newName = MCore::GetStringIdPool().GetName(oldName.m_index); + classElement.AddElementWithData(context, "name", newName); + } + } + return true; + } + // creation MotionEventTrack* MotionEventTrack::Create(Motion* motion) @@ -112,7 +125,7 @@ namespace EMotionFX // set the name of the motion event track void MotionEventTrack::SetName(const char* name) { - mNameID = MCore::GetStringIdPool().GenerateIdForString(name); + m_name = name; } @@ -362,60 +375,31 @@ namespace EMotionFX RemoveAllEvents(); } - - // get the name const char* MotionEventTrack::GetName() const { - if (mNameID == MCORE_INVALIDINDEX32) - { - return ""; - } - - return MCore::GetStringIdPool().GetName(mNameID).c_str(); + return m_name.c_str(); } - - // get the name as string object const AZStd::string& MotionEventTrack::GetNameString() const { - if (mNameID == MCORE_INVALIDINDEX32) - { - return MCore::GetStringIdPool().GetName(0); - } - - return MCore::GetStringIdPool().GetName(mNameID); + return m_name; } - // copy the track contents to a target track // this overwrites all existing contents of the target track void MotionEventTrack::CopyTo(MotionEventTrack* targetTrack) const { - targetTrack->mNameID = mNameID; + targetTrack->m_name = m_name; targetTrack->m_events = m_events; targetTrack->mEnabled = mEnabled; } - // reserve memory for a given amount of events void MotionEventTrack::ReserveNumEvents(size_t numEvents) { m_events.reserve(numEvents); } - - uint32 MotionEventTrack::GetNameID() const - { - return mNameID; - } - - - void MotionEventTrack::SetNameID(uint32 id) - { - mNameID = id; - } - - void MotionEventTrack::SetIsEnabled(bool enabled) { mEnabled = enabled; diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.h b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.h index 40e8f24405..b7cfc526cc 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.h +++ b/Gems/EMotionFX/Code/EMotionFX/Source/MotionEventTrack.h @@ -7,13 +7,10 @@ #pragma once -// include the required headers +#include #include "EMotionFXConfig.h" #include "BaseObject.h" #include "MotionEvent.h" -#include - -#include namespace AZ { @@ -38,15 +35,15 @@ namespace EMotionFX * The handling of those events is done by the MotionEventHandler class that you specify to the MotionEventManager singleton. */ class EMFX_API MotionEventTrack - : public BaseObject { friend class MotionEvent; public: - AZ_RTTI(MotionEventTrack, "{D142399D-C7DF-4E4A-A099-7E4E662F1E81}", BaseObject) + AZ_RTTI(MotionEventTrack, "{D142399D-C7DF-4E4A-A099-7E4E662F1E81}") AZ_CLASS_ALLOCATOR_DECL - MotionEventTrack() {} + MotionEventTrack() = default; + virtual ~MotionEventTrack() = default; /** * The constructor. @@ -167,8 +164,6 @@ namespace EMotionFX const char* GetName() const; const AZStd::string& GetNameString() const; - uint32 GetNameID() const; - void SetNameID(uint32 id); void SetIsEnabled(bool enabled); bool GetIsEnabled() const; @@ -182,23 +177,22 @@ namespace EMotionFX void ReserveNumEvents(size_t numEvents); protected: - /// The collection of motion events. AZStd::vector m_events; + AZStd::string m_name; /// The motion where this track belongs to. Motion* mMotion; - /// The name ID. - MCore::StringIdPoolIndex mNameID; - /// Is this track enabled? - bool mEnabled; - bool mDeletable; + bool mEnabled = true; + bool mDeletable = true; private: void ProcessEventsImpl(float startTime, float endTime, ActorInstance* actorInstance, const MotionInstance* motionInstance, const AZStd::function& processFunc); template void ExtractEvents(float startTime, float endTime, const MotionInstance* motionInstance, const Functor& processFunc, bool handleLoops = true) const; + + static bool VersionConverter(AZ::SerializeContext& context, AZ::SerializeContext::DataElementNode& classElement); }; } // namespace EMotionFX diff --git a/Gems/EMotionFX/Code/EMotionFX/Source/PhysicsSetup.cpp b/Gems/EMotionFX/Code/EMotionFX/Source/PhysicsSetup.cpp index 9fab1b18c3..33e5e3dbc8 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Source/PhysicsSetup.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Source/PhysicsSetup.cpp @@ -298,14 +298,20 @@ namespace EMotionFX { Physics::CapsuleShapeConfiguration* capsule = static_cast(collider.second.get()); capsule->m_height = boneDirection.GetLength(); - collider.first->m_rotation = AZ::Quaternion::CreateShortestArc(AZ::Vector3::CreateAxisZ(), localBoneDirection.GetNormalized()); + if (AZ::IsClose(localBoneDirection.GetLength(), 1.0f)) + { + collider.first->m_rotation = AZ::Quaternion::CreateShortestArc(AZ::Vector3::CreateAxisZ(), localBoneDirection.GetNormalized()); + } capsule->m_height = boneLength; const float radius = AZ::GetMin(rootMeanSquareDistanceFromBone, minRadiusRatio * boneLength); capsule->m_radius = radius; } else if (colliderType == azrtti_typeid()) { - collider.first->m_rotation = AZ::Quaternion::CreateShortestArc(AZ::Vector3::CreateAxisZ(), localBoneDirection.GetNormalized()); + if (AZ::IsClose(localBoneDirection.GetLength(), 1.0f)) + { + collider.first->m_rotation = AZ::Quaternion::CreateShortestArc(AZ::Vector3::CreateAxisZ(), localBoneDirection.GetNormalized()); + } Physics::BoxShapeConfiguration* box = static_cast(collider.second.get()); box->m_dimensions = AZ::Vector3(2.0f * rootMeanSquareDistanceFromBone, 2.0f * rootMeanSquareDistanceFromBone, boneLength); } diff --git a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp index c2b9babf70..920006b1d4 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -293,16 +294,65 @@ namespace EMStudio AZStd::string sourceAssetFilename; EBUS_EVENT_RESULT(fullPathFound, AzToolsFramework::AssetSystemRequestBus, GetFullSourcePathFromRelativeProductPath, productFilename, sourceAssetFilename); - // Generate meta data command for all changes being made to the motion. - const AZStd::vector metaData = CommandSystem::MetaData::GenerateMotionMetaData(motion); + // Load the manifest from disk. + AZStd::shared_ptr scene; + AZ::SceneAPI::Events::SceneSerializationBus::BroadcastResult(scene, &AZ::SceneAPI::Events::SceneSerializationBus::Events::LoadScene, sourceAssetFilename, AZ::Uuid::CreateNull()); + if (!scene) + { + AZ_Error("EMotionFX", false, "Unable to save meta data to manifest due to failed scene loading."); + return false; + } - // Save meta data commands to the manifest. - const bool saveResult = EMotionFX::Pipeline::Rule::MetaDataRule::SaveMetaDataToFile(sourceAssetFilename, groupName, metaData, outResult); + AZ::SceneAPI::Containers::SceneManifest& manifest = scene->GetManifest(); + auto values = manifest.GetValueStorage(); + auto groupView = AZ::SceneAPI::Containers::MakeDerivedFilterView(values); + for (EMotionFX::Pipeline::Group::MotionGroup& group : groupView) + { + // Non-case sensitive group name comparison. Product filenames are lower case only and might mismatch casing of the entered group name. + if (AzFramework::StringFunc::Equal(group.GetName().c_str(), groupName.c_str())) + { + // Remove legacy meta data rule. + EMotionFX::Pipeline::Rule::RemoveRuleFromGroup>(*scene, group); + + // Add motion meta data. + EMotionFX::Pipeline::Rule::MotionMetaData motionMetaData; + motionMetaData.m_motionEventTable = motion->GetEventTable(); + motionMetaData.m_motionExtractionFlags = motion->GetMotionExtractionFlags(); + EMotionFX::Pipeline::Rule::SaveToGroup(*scene, group, motionMetaData); + } + } + + const AZStd::string& manifestFilename = scene->GetManifestFilename(); + const bool fileExisted = AZ::IO::FileIOBase::GetInstance()->Exists(manifestFilename.c_str()); + + // Source Control: Checkout file. + if (fileExisted) + { + using ApplicationBus = AzToolsFramework::ToolsApplicationRequestBus; + bool checkoutResult = false; + ApplicationBus::BroadcastResult(checkoutResult, &ApplicationBus::Events::RequestEditForFileBlocking, manifestFilename.c_str(), "Checking out manifest from source control.", []([[maybe_unused]] int& current, [[maybe_unused]] int& max) {}); + if (!checkoutResult) + { + AZ_Error("EMotionFX", false, "Cannot checkout file '%s' from source control.", manifestFilename.c_str()); + return false; + } + } + + const bool saveResult = manifest.SaveToFile(manifestFilename.c_str()); if (saveResult) { motion->SetDirtyFlag(false); } + // Source Control: Add file in case it did not exist before (when saving it the first time). + if (saveResult && !fileExisted) + { + using ApplicationBus = AzToolsFramework::ToolsApplicationRequestBus; + bool checkoutResult = false; + ApplicationBus::BroadcastResult(checkoutResult, &ApplicationBus::Events::RequestEditForFileBlocking, manifestFilename.c_str(), "Adding manifest to source control.", []([[maybe_unused]] int& current, [[maybe_unused]] int& max) {}); + AZ_Error("EMotionFX", checkoutResult, "Cannot add file '%s' to source control.", manifestFilename.c_str()); + } + return saveResult; } diff --git a/Gems/EMotionFX/Code/Tests/EventManagerTests.cpp b/Gems/EMotionFX/Code/Tests/EventManagerTests.cpp index 6ab796691c..c717a1b27e 100644 --- a/Gems/EMotionFX/Code/Tests/EventManagerTests.cpp +++ b/Gems/EMotionFX/Code/Tests/EventManagerTests.cpp @@ -31,8 +31,8 @@ TEST_F(SystemComponentFixture, DISABLED_EventDataFactoryMakesUniqueData) EXPECT_EQ(loadedTrack->GetEvent(0).GetEventDatas()[0], track->GetEvent(0).GetEventDatas()[0]); EXPECT_EQ(loadedTrack->GetEvent(0).GetEventDatas()[0].use_count(), 2); - track->Destroy(); - loadedTrack->Destroy(); + delete track; + delete loadedTrack; } } // end namespace EMotionFX From a462df2991e4e5e76117c49148d76e4a4c7dbe03 Mon Sep 17 00:00:00 2001 From: Benjamin Jillich Date: Fri, 25 Jun 2021 16:17:17 +0200 Subject: [PATCH 34/56] [LYN-4727] Version converter for motion group that ports XML serialized object-based commands to Json event data --- .../SceneAPIExt/Groups/MotionGroup.cpp | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Groups/MotionGroup.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Groups/MotionGroup.cpp index d3b74dd72f..c699e12a0c 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Groups/MotionGroup.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Groups/MotionGroup.cpp @@ -16,9 +16,11 @@ #include #include #include +#include #include #include +#include #include namespace EMotionFX @@ -89,7 +91,7 @@ namespace EMotionFX serializeContext->Class()->Version(1); - serializeContext->Class()->Version(5, VersionConverter) + serializeContext->Class()->Version(6, VersionConverter) ->Field("name", &MotionGroup::m_name) ->Field("selectedRootBone", &MotionGroup::m_selectedRootBone) ->Field("id", &MotionGroup::m_id) @@ -225,6 +227,60 @@ namespace EMotionFX } } + // Motion meta data introduced (no more string- or object-based commands stored in the former meta data rule) + if (version < 6) + { + AZ::SerializeContext::DataElementNode* ruleContainerNode = classElement.FindSubElement(AZ_CRC("rules", 0x899a993c)); + if (!ruleContainerNode) + { + AZ_TracePrintf(AZ::SceneAPI::Utilities::ErrorWindow, "Can't find rule container.\n"); + return false; + } + + AZ::SerializeContext::DataElementNode* rulesNode = ruleContainerNode->FindSubElement(AZ_CRC("rules", 0x899a993c)); + if (!rulesNode) + { + AZ_TracePrintf(AZ::SceneAPI::Utilities::ErrorWindow, "Can't find rules within rule container.\n"); + return false; + } + + const int numRules = rulesNode->GetNumSubElements(); + for (int i = 0; i < numRules; ++i) + { + AZ::SerializeContext::DataElementNode& sharedPointerNode = rulesNode->GetSubElement(i); + if (sharedPointerNode.GetNumSubElements() == 1) + { + AZ::SerializeContext::DataElementNode& currentRuleNode = sharedPointerNode.GetSubElement(0); + if (currentRuleNode.GetId() == azrtti_typeid()) + { + // Read the old, command-based meta data rule and retrieve the command objects. + Rule::MetaDataRule oldMetaDataRule; + currentRuleNode.GetData(oldMetaDataRule); + const AZStd::vector& commands = oldMetaDataRule.GetMetaData&>(); + + // Apply the commands onto a temporary motion. + auto motion = new EMotionFX::Motion(""); + motion->SetMotionData(aznew EMotionFX::NonUniformMotionData()); + CommandSystem::MetaData::ApplyMetaDataOnMotion(motion, commands); + + // Construct the new motion meta data rule. + auto metaData = AZStd::make_shared(motion->GetMotionExtractionFlags(), motion->GetEventTable()); + auto metaDataRule = AZStd::make_shared(metaData); + + // Add the new motion meta data rule. + AZ::SceneAPI::Containers::RuleContainer ruleContainer; + ruleContainerNode->GetDataHierarchy(context, ruleContainer); + ruleContainer.RemoveRule(i); + ruleContainer.AddRule(metaDataRule); + ruleContainerNode->SetData(context, ruleContainer); + + motion->Destroy(); + break; + } + } + } + } + return result; } } From 44c813824e0f08a74988d1e27d763cc692be8090 Mon Sep 17 00:00:00 2001 From: Benjamin Jillich Date: Fri, 25 Jun 2021 16:18:12 +0200 Subject: [PATCH 35/56] [LYN-4727] Memory management improvements and clear ownership for motion meta data --- .../SceneAPIExt/Rules/MotionMetaDataRule.cpp | 38 +++++++++++++++++-- .../SceneAPIExt/Rules/MotionMetaDataRule.h | 22 +++++++---- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp index f57e4ec268..2bd7e2a57e 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp @@ -28,12 +28,44 @@ namespace EMotionFX::Pipeline::Rule ; } - MotionMetaDataRule::MotionMetaDataRule() - : ExternalToolRule() + MotionMetaData::MotionMetaData(EMotionFX::EMotionExtractionFlags extractionFlags, EMotionFX::MotionEventTable* eventTable) + : m_motionExtractionFlags(extractionFlags) + { + m_motionEventTable = CloneMotionEventTable(eventTable); + } + + MotionMetaData::MotionMetaData() + : m_motionExtractionFlags(static_cast(0)) { } - MotionMetaDataRule::MotionMetaDataRule(const MotionMetaData& data) + AZStd::unique_ptr MotionMetaData::GetClonedEventTable(EMotionFX::Motion* targetMotion) const + { + AZStd::unique_ptr clonedEventTable = AZStd::move(CloneMotionEventTable(m_motionEventTable.get())); + clonedEventTable->InitAfterLoading(targetMotion); + return AZStd::move(clonedEventTable); + } + + AZStd::unique_ptr MotionMetaData::CloneMotionEventTable(EMotionFX::MotionEventTable* sourceEventTable) + { + AZ::SerializeContext* serializeContext = nullptr; + AZ::ComponentApplicationBus::BroadcastResult(serializeContext, &AZ::ComponentApplicationBus::Events::GetSerializeContext); + if (!serializeContext) + { + AZ_Error("EMotionFX", false, "Cannot clone motion event table for motion meta data. Can't get serialize context from component application."); + return {}; + } + + AZStd::unique_ptr clonedEventTable(serializeContext->CloneObject(sourceEventTable)); + return AZStd::move(clonedEventTable); + } + + MotionMetaDataRule::MotionMetaDataRule() + : ExternalToolRule>() + { + } + + MotionMetaDataRule::MotionMetaDataRule(const AZStd::shared_ptr& data) : MotionMetaDataRule() { m_data = data; diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h index 099451ff7e..8ede0e130f 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.h @@ -8,6 +8,7 @@ #pragma once #include +#include #include #include #include @@ -20,32 +21,39 @@ namespace EMotionFX::Pipeline::Rule AZ_RTTI(EMotionFX::Pipeline::Rule::MotionMetaData, "{A381A915-3CB3-4F60-82B3-70865CFA1F4F}"); AZ_CLASS_ALLOCATOR(MotionMetaData, AZ::SystemAllocator, 0) - MotionMetaData() = default; + MotionMetaData(); + MotionMetaData(EMotionFX::EMotionExtractionFlags extractionFlags, EMotionFX::MotionEventTable* eventTable); virtual ~MotionMetaData() = default; + EMotionFX::EMotionExtractionFlags GetMotionExtractionFlags() const { return m_motionExtractionFlags; } + AZStd::unique_ptr GetClonedEventTable(EMotionFX::Motion* targetMotion) const; + static void Reflect(AZ::ReflectContext* context); - EMotionFX::MotionEventTable* m_motionEventTable = nullptr; + private: + static AZStd::unique_ptr CloneMotionEventTable(EMotionFX::MotionEventTable* sourceEventTable); + EMotionFX::EMotionExtractionFlags m_motionExtractionFlags; + AZStd::unique_ptr m_motionEventTable; }; class MotionMetaDataRule - : public ExternalToolRule + : public ExternalToolRule> { public: AZ_RTTI(EMotionFX::Pipeline::Rule::MotionMetaDataRule, "{E68D0C3D-CBFF-4536-95C1-676474B351A5}", AZ::SceneAPI::DataTypes::IRule); AZ_CLASS_ALLOCATOR(MotionMetaDataRule, AZ::SystemAllocator, 0) MotionMetaDataRule(); - MotionMetaDataRule(const MotionMetaData& data); + MotionMetaDataRule(const AZStd::shared_ptr& data); ~MotionMetaDataRule() final = default; - const MotionMetaData& GetData() const override { return m_data; } - void SetData(const MotionMetaData& data) override { m_data = data; } + const AZStd::shared_ptr& GetData() const override { return m_data; } + void SetData(const AZStd::shared_ptr& data) override { m_data = data; } static void Reflect(AZ::ReflectContext* context); private: - MotionMetaData m_data; + AZStd::shared_ptr m_data; }; } // EMotionFX::Pipeline::Rule From b80f0782ef673598d57159d44cc308fa21e3f9d4 Mon Sep 17 00:00:00 2001 From: Terry Michaels Date: Fri, 25 Jun 2021 10:04:08 -0500 Subject: [PATCH 36/56] Removed old code referencing removed classes (#1587) --- Code/Sandbox/Editor/MainWindow.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Code/Sandbox/Editor/MainWindow.cpp b/Code/Sandbox/Editor/MainWindow.cpp index 71b31102fd..b4cf317c26 100644 --- a/Code/Sandbox/Editor/MainWindow.cpp +++ b/Code/Sandbox/Editor/MainWindow.cpp @@ -1350,10 +1350,6 @@ void MainWindow::RegisterStdViewClasses() AzAssetBrowserWindow::RegisterViewClass(); AssetEditorWindow::RegisterViewClass(); - //These view dialogs aren't used anymore so they became disabled. - //CLightmapCompilerDialog::RegisterViewClass(); - //CLightmapCompilerDialog::RegisterViewClass(); - // Notify that views can now be registered AzToolsFramework::EditorEvents::Bus::Broadcast( &AzToolsFramework::EditorEvents::Bus::Events::NotifyRegisterViews); From 9b6ef150ff17cdf4a253e838b0b59093fdf3f71c Mon Sep 17 00:00:00 2001 From: Danilo Aimini <82231674+AMZN-daimini@users.noreply.github.com> Date: Fri, 25 Jun 2021 08:53:25 -0700 Subject: [PATCH 37/56] LYN-2480 | Minor fixes to the Prefab system (#1581) Remove warning when entities that aren't registered to instances get passed to the Prefab Undo Cache (just ignore them to avoid noise in the console). Also avoid marking templates dirty when they are added. --- .../AzToolsFramework/Prefab/PrefabSystemComponent.cpp | 1 - .../AzToolsFramework/Prefab/PrefabUndoCache.cpp | 5 +---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp index c58379ea3e..9d1e95657d 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabSystemComponent.cpp @@ -414,7 +414,6 @@ namespace AzToolsFramework } m_templateFilePathToIdMap.emplace(AZStd::make_pair(filePath, newTemplateId)); - newTemplate.MarkAsDirty(true); return newTemplateId; } diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoCache.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoCache.cpp index bc48846585..dcf2a57c64 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoCache.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/Prefab/PrefabUndoCache.cpp @@ -130,10 +130,7 @@ namespace AzToolsFramework if (!instanceOptionalReference.has_value()) { - AZ_Warning( - "Undo", false, - "PrefabUndoCache was told to update the cache for entity of id %p (%s), but that entity does not have an owning instance.", - entityId, entity->GetName().c_str()); + // This is not an error, we just don't handle this entity. return; } From acce801b41fd593285da90f3221eaa6006c2aea4 Mon Sep 17 00:00:00 2001 From: Esteban Papp <81431996+amznestebanpapp@users.noreply.github.com> Date: Fri, 25 Jun 2021 09:23:27 -0700 Subject: [PATCH 38/56] SPEC-7435 Vegetation Tests Reference Missing File: Mocks/MockSpawnableEntitiesInterface.h --- scripts/build/Platform/Mac/build_mac.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scripts/build/Platform/Mac/build_mac.sh b/scripts/build/Platform/Mac/build_mac.sh index f8ed570ed3..00254a2974 100755 --- a/scripts/build/Platform/Mac/build_mac.sh +++ b/scripts/build/Platform/Mac/build_mac.sh @@ -31,6 +31,11 @@ else RUN_CONFIGURE=1 fi fi + +# temporarily enabling cmake regeneration for this platform +# We have observed cases where continous integration has not regenerated but a regeneration was required, leaving the build in a bad state +RUN_CONFIGURE=1 + if [[ ! -z "$RUN_CONFIGURE" ]]; then # have to use eval since $CMAKE_OPTIONS (${EXTRA_CMAKE_OPTIONS}) contains quotes that need to be processed echo [ci_build] ${CONFIGURE_CMD} From a3d314d0593eb8d80126bfa8e79a8e5d8ed5092b Mon Sep 17 00:00:00 2001 From: Benjamin Jillich Date: Fri, 25 Jun 2021 16:18:54 +0200 Subject: [PATCH 39/56] [LYN-4727] Adapting the motion group exporter and the save commands to the motion meta data changes --- .../Pipeline/RCExt/Motion/MotionGroupExporter.cpp | 9 ++++----- .../Pipeline/SceneAPIExt/Rules/ExternalToolRule.inl | 2 +- .../Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp | 9 ++++----- .../Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp | 6 ++---- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp index b44f2c36b3..c4ed3307ae 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/RCExt/Motion/MotionGroupExporter.cpp @@ -84,12 +84,11 @@ namespace EMotionFX } // Apply motion meta data. - EMotionFX::Pipeline::Rule::MotionMetaData motionMetaData; - if (EMotionFX::Pipeline::Rule::LoadFromGroup(motionGroup, motionMetaData)) + AZStd::shared_ptr motionMetaData; + if (EMotionFX::Pipeline::Rule::LoadFromGroup(motionGroup, motionMetaData)) { - motion->SetEventTable(AZStd::unique_ptr(motionMetaData.m_motionEventTable)); - motion->GetEventTable()->InitAfterLoading(motion); - motion->SetMotionExtractionFlags(motionMetaData.m_motionExtractionFlags); + motion->SetEventTable(motionMetaData->GetClonedEventTable(motion)); + motion->SetMotionExtractionFlags(motionMetaData->GetMotionExtractionFlags()); } ExporterLib::SaveMotion(filename, motion, MCore::Endian::ENDIAN_LITTLE); diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/ExternalToolRule.inl b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/ExternalToolRule.inl index e98e2e7187..da97743229 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/ExternalToolRule.inl +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/ExternalToolRule.inl @@ -35,7 +35,7 @@ namespace EMotionFX return false; } - outData = rule->GetData(); + outData = AZStd::move(rule->GetData()); return true; } diff --git a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp index 2bd7e2a57e..40648a7f8f 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Pipeline/SceneAPIExt/Rules/MotionMetaDataRule.cpp @@ -41,9 +41,9 @@ namespace EMotionFX::Pipeline::Rule AZStd::unique_ptr MotionMetaData::GetClonedEventTable(EMotionFX::Motion* targetMotion) const { - AZStd::unique_ptr clonedEventTable = AZStd::move(CloneMotionEventTable(m_motionEventTable.get())); + AZStd::unique_ptr clonedEventTable = CloneMotionEventTable(m_motionEventTable.get()); clonedEventTable->InitAfterLoading(targetMotion); - return AZStd::move(clonedEventTable); + return clonedEventTable; } AZStd::unique_ptr MotionMetaData::CloneMotionEventTable(EMotionFX::MotionEventTable* sourceEventTable) @@ -57,7 +57,7 @@ namespace EMotionFX::Pipeline::Rule } AZStd::unique_ptr clonedEventTable(serializeContext->CloneObject(sourceEventTable)); - return AZStd::move(clonedEventTable); + return clonedEventTable; } MotionMetaDataRule::MotionMetaDataRule() @@ -66,9 +66,8 @@ namespace EMotionFX::Pipeline::Rule } MotionMetaDataRule::MotionMetaDataRule(const AZStd::shared_ptr& data) - : MotionMetaDataRule() + : m_data(data) { - m_data = data; } void MotionMetaDataRule::Reflect(AZ::ReflectContext* context) diff --git a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp index 920006b1d4..8c22d657c3 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/Commands.cpp @@ -315,10 +315,8 @@ namespace EMStudio EMotionFX::Pipeline::Rule::RemoveRuleFromGroup>(*scene, group); // Add motion meta data. - EMotionFX::Pipeline::Rule::MotionMetaData motionMetaData; - motionMetaData.m_motionEventTable = motion->GetEventTable(); - motionMetaData.m_motionExtractionFlags = motion->GetMotionExtractionFlags(); - EMotionFX::Pipeline::Rule::SaveToGroup(*scene, group, motionMetaData); + auto motionMetaData = AZStd::make_shared(motion->GetMotionExtractionFlags(), motion->GetEventTable()); + EMotionFX::Pipeline::Rule::SaveToGroup>(*scene, group, motionMetaData); } } From 104e24519c62b8cd8b681d6514bd67c5a2a53bea Mon Sep 17 00:00:00 2001 From: guthadam Date: Fri, 25 Jun 2021 11:57:29 -0500 Subject: [PATCH 40/56] ATOM-15861 fixed material editor screen capture and test scripts --- .../Code/Source/Viewport/MaterialViewportWidget.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportWidget.cpp b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportWidget.cpp index c3a9b5f030..8d9816d350 100644 --- a/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportWidget.cpp +++ b/Gems/Atom/Tools/MaterialEditor/Code/Source/Viewport/MaterialViewportWidget.cpp @@ -6,13 +6,14 @@ */ #include -#include #include +#include #include +#include #include -#include #include +#include AZ_PUSH_DISABLE_WARNING(4251 4800, "-Wunknown-warning-option") // disable warnings spawned by QT #include @@ -43,6 +44,12 @@ namespace MaterialEditor dispatcher->installNativeEventFilter(this); } + // The viewport context created by AtomToolsFramework::RenderViewportWidget has no name. + // Systems like frame capturing and post FX expect there to be a context with DefaultViewportContextName + auto viewportContextManager = AZ::Interface::Get(); + const AZ::Name defaultContextName = viewportContextManager->GetDefaultViewportContextName(); + viewportContextManager->RenameViewportContext(GetViewportContext(), defaultContextName); + m_renderer = AZStd::make_unique(GetViewportContext()->GetWindowContext()); GetControllerList()->Add(m_renderer->GetController()); } From 9ccb65aac43ee3fe2ea9144558fb9dc8015af40c Mon Sep 17 00:00:00 2001 From: Qing Tao <55564570+VickyAtAZ@users.noreply.github.com> Date: Fri, 25 Jun 2021 11:45:07 -0700 Subject: [PATCH 41/56] ATOM-15859 AuxGeom rendering in editor is too expensive (#1582) * ATOM-15859 AuxGeom rendering in editor is too expensive - The OrphanBuffer calls is the main reason that AuxGeom FP render is slow. - Switched to use DynamicBuffer for buffers used in DynamicPrimitiveProcessor - Added some profiling marks. - Removed DynamicPrimitiveProcessor per view which was added because of OrphanBuffer can only be called once per frame. --- .../Feature/AuxGeom/AuxGeomFeatureProcessor.h | 12 +- .../Code/Source/AuxGeom/AuxGeomDrawQueue.cpp | 2 + .../AuxGeom/AuxGeomFeatureProcessor.cpp | 41 +---- .../AuxGeom/DynamicPrimitiveProcessor.cpp | 163 ++++-------------- .../AuxGeom/DynamicPrimitiveProcessor.h | 30 +--- .../Source/AuxGeom/FixedShapeProcessor.cpp | 3 +- Gems/Atom/RHI/Code/Source/RHI/BufferPool.cpp | 4 +- .../RPI.Public/DynamicDraw/DynamicBuffer.h | 2 +- .../DynamicDraw/DynamicDrawContext.h | 4 +- .../RPI.Public/DynamicDraw/DynamicBuffer.cpp | 2 +- .../DynamicDraw/DynamicDrawContext.cpp | 4 +- 11 files changed, 63 insertions(+), 204 deletions(-) diff --git a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/AuxGeom/AuxGeomFeatureProcessor.h b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/AuxGeom/AuxGeomFeatureProcessor.h index 30452451a4..afb6772d1f 100644 --- a/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/AuxGeom/AuxGeomFeatureProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Include/Atom/Feature/AuxGeom/AuxGeomFeatureProcessor.h @@ -61,16 +61,8 @@ namespace AZ //! Cache a pointer to the AuxGeom draw queue for our scene RPI::AuxGeomDrawPtr m_sceneDrawQueue = nullptr; - //! Map used to store the AuxGeomDrawQueue & DynamicPrimitiveProcessor for each view - // [GFX TODO][ATOM-4435] remove DynamicPrimitiveProcessor per view if we can get orphan buffers to support multiple - // orphanings per frame. - // Only the DPP suffers from the issue so no need for a per view FixedShapeProcessor. - struct ViewDrawData - { - RPI::AuxGeomDrawPtr m_drawQueue; - AZStd::unique_ptr m_dynPrimProc; - }; - AZStd::map m_viewDrawDataMap; // using View* as key to not hold a reference to the view + //! Map used to store the AuxGeomDrawQueue for each view + AZStd::map m_viewDrawDataMap; // using View* as key to not hold a reference to the view //! The object that handles the dynamic primitive geometry data AZStd::unique_ptr m_dynamicPrimitiveProcessor; diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp index 53480869d6..2be6b562fc 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomDrawQueue.cpp @@ -564,6 +564,7 @@ namespace AZ AuxGeomBufferData* AuxGeomDrawQueue::Commit() { + AZ_ATOM_PROFILE_FUNCTION("AuxGeom", "AuxGeomDrawQueue: Commit"); // get a mutually exclusive lock and then switch to the next buffer, returning a pointer to the current buffer (before the switch) // grab the lock @@ -583,6 +584,7 @@ namespace AZ void AuxGeomDrawQueue::ClearCurrentBufferData() { + AZ_ATOM_PROFILE_FUNCTION("AuxGeom", "AuxGeomDrawQueue: ClearCurrentBufferData"); // no need for mutex here, this function is only called from a function holding a lock AuxGeomBufferData& data = m_buffers[m_currentBufferIndex]; diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomFeatureProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomFeatureProcessor.cpp index 567e489d09..a417f13c21 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomFeatureProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/AuxGeomFeatureProcessor.cpp @@ -44,7 +44,7 @@ namespace AZ // initialize the dynamic primitive processor m_dynamicPrimitiveProcessor = AZStd::make_unique(); - if (!m_dynamicPrimitiveProcessor->Initialize(*rhiSystem->GetDevice(), scene)) + if (!m_dynamicPrimitiveProcessor->Initialize(scene)) { AZ_Error(s_featureProcessorName, false, "Failed to init AuxGeom DynamicPrimitiveProcessor"); return; @@ -65,11 +65,6 @@ namespace AZ { DisableSceneNotification(); - // release the per view data - for (auto& viewDD: m_viewDrawDataMap) - { - viewDD.second.m_dynPrimProc->Release(); - } m_viewDrawDataMap.clear(); m_dynamicPrimitiveProcessor->Release(); @@ -84,7 +79,7 @@ namespace AZ void AuxGeomFeatureProcessor::Render(const FeatureProcessor::RenderPacket& fpPacket) { - AZ_ATOM_PROFILE_FUNCTION("RPI", "AuxGeomFeatureProcessor: Render"); + AZ_ATOM_PROFILE_FUNCTION("AuxGeom", "AuxGeomFeatureProcessor: Render"); // Get the scene data and switch buffers so that other threads can continue to queue requests AuxGeomBufferData* bufferData = static_cast(m_sceneDrawQueue.get())->Commit(); @@ -106,12 +101,11 @@ namespace AZ auto it = m_viewDrawDataMap.find(view.get()); if (it != m_viewDrawDataMap.end()) { - bufferData = static_cast(it->second.m_drawQueue.get())->Commit(); + bufferData = static_cast(it->second.get())->Commit(); perViewRP.m_views.push_back(view); // Process the dynamic primitives - it->second.m_dynPrimProc->PrepareFrame(); - it->second.m_dynPrimProc->ProcessDynamicPrimitives(bufferData, perViewRP); + m_dynamicPrimitiveProcessor->ProcessDynamicPrimitives(bufferData, perViewRP); // Process the objects (draw requests using fixed shape buffers) m_fixedShapeProcessor->ProcessObjects(bufferData, perViewRP); @@ -129,7 +123,7 @@ namespace AZ auto drawDataIterator = m_viewDrawDataMap.find(view); if (drawDataIterator != m_viewDrawDataMap.end()) { - return drawDataIterator->second.m_drawQueue; + return drawDataIterator->second; } } AZ_Warning("AuxGeomFeatureProcessor", false, "Draw Queue requested for unknown view"); @@ -146,23 +140,12 @@ namespace AZ if (drawQueueIterator == m_viewDrawDataMap.end()) { - AZ::RPI::Scene* scene = GetParentScene(); - RHI::RHISystemInterface* rhiSystem = RHI::RHISystemInterface::Get(); - - // initialize the dynamic primitive processor - ViewDrawData viewDD; - viewDD.m_dynPrimProc = AZStd::make_unique(); - if (!viewDD.m_dynPrimProc->Initialize(*rhiSystem->GetDevice(), scene)) - { - AZ_Error(s_featureProcessorName, false, "Failed to init AuxGeom DynamicPrimitiveProcessor for view (%s)", view->GetName().GetCStr()); - return RPI::AuxGeomDrawPtr(); - } - viewDD.m_drawQueue = RPI::AuxGeomDrawPtr(aznew AuxGeomDrawQueue()); - m_viewDrawDataMap.emplace(view, AZStd::move(viewDD)); - return m_viewDrawDataMap[view].m_drawQueue; + RPI::AuxGeomDrawPtr drawQueue = RPI::AuxGeomDrawPtr(aznew AuxGeomDrawQueue()); + m_viewDrawDataMap.emplace(view, AZStd::move(drawQueue)); + return m_viewDrawDataMap[view]; } - return drawQueueIterator->second.m_drawQueue; + return drawQueueIterator->second; } void AuxGeomFeatureProcessor::ReleaseDrawQueueForView(const RPI::View* view) @@ -173,12 +156,6 @@ namespace AZ void AuxGeomFeatureProcessor::OnSceneRenderPipelinesChanged() { m_dynamicPrimitiveProcessor->SetUpdatePipelineStates(); - - for (auto& viewDrawData : m_viewDrawDataMap) - { - viewDrawData.second.m_dynPrimProc->SetUpdatePipelineStates(); - } - m_fixedShapeProcessor->SetUpdatePipelineStates(); } diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp index eef9d1d580..2646c7e52c 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.cpp @@ -8,11 +8,13 @@ #include "DynamicPrimitiveProcessor.h" #include "AuxGeomDrawProcessorShared.h" -#include +#include #include +#include #include #include +#include #include #include #include @@ -35,35 +37,16 @@ namespace AZ }; } - bool DynamicPrimitiveProcessor::Initialize(AZ::RHI::Device& rhiDevice, const AZ::RPI::Scene* scene) + bool DynamicPrimitiveProcessor::Initialize(const AZ::RPI::Scene* scene) { - // Note: We use HeapMemoryLevel::Host here so that we can use OrphanBuffer in the update - RHI::BufferPoolDescriptor dynamicPoolDescriptor; - dynamicPoolDescriptor.m_heapMemoryLevel = RHI::HeapMemoryLevel::Host; - dynamicPoolDescriptor.m_bindFlags = RHI::BufferBindFlags::InputAssembly; - dynamicPoolDescriptor.m_largestPooledAllocationSizeInBytes = MaxUploadBufferSize; - - m_hostPool = RHI::Factory::Get().CreateBufferPool(); - m_hostPool->SetName(Name("AuxGeomDynamicPrimitiveBufferPool")); - RHI::ResultCode resultCode = m_hostPool->Init(rhiDevice, dynamicPoolDescriptor); - - if (resultCode != RHI::ResultCode::Success) - { - AZ_Error("DynamicPrimitiveProcessor", false, "Failed to initialize AuxGeom dynamic primitive buffer pool"); - return false; - } - for (int primitiveType = 0; primitiveType < PrimitiveType_Count; ++primitiveType) { SetupInputStreamLayout(m_inputStreamLayout[primitiveType], PrimitiveTypeToTopology[primitiveType]); - m_streamBufferViewsValidatedForLayout[primitiveType] = false; } - if (!CreateBuffers()) - { - return false; - } + // We have a single stream (position and color are interleaved in the vertex buffer) + m_primitiveBuffers.m_streamBufferViews.resize(1); m_scene = scene; InitShader(); @@ -73,13 +56,6 @@ namespace AZ void DynamicPrimitiveProcessor::Release() { - DestroyBuffers(); - - if (m_hostPool) - { - m_hostPool.reset(); - } - m_drawPackets.clear(); m_processSrgs.clear(); m_shaderData.m_defaultSRG = nullptr; @@ -96,6 +72,7 @@ namespace AZ void DynamicPrimitiveProcessor::PrepareFrame() { + AZ_ATOM_PROFILE_FUNCTION("AuxGeom", "DynamicPrimitiveProcessor: PrepareFrame"); m_drawPackets.clear(); m_processSrgs.clear(); @@ -113,6 +90,7 @@ namespace AZ void DynamicPrimitiveProcessor::ProcessDynamicPrimitives(const AuxGeomBufferData* bufferData, const RPI::FeatureProcessor::RenderPacket& fpPacket) { + AZ_ATOM_PROFILE_FUNCTION("AuxGeom", "DynamicPrimitiveProcessor: ProcessDynamicPrimitives"); RHI::DrawPacketBuilder drawPacketBuilder; const DynamicPrimitiveData& srcPrimitives = bufferData->m_primitiveData; @@ -121,8 +99,13 @@ namespace AZ { // Update the buffers for all dynamic primitives in this frame's data // There is just one index buffer and one vertex buffer for all dynamic primitives - UpdateIndexBuffer(srcPrimitives.m_indexBuffer, m_primitiveBuffers); - UpdateVertexBuffer(srcPrimitives.m_vertexBuffer, m_primitiveBuffers); + if (!UpdateIndexBuffer(srcPrimitives.m_indexBuffer, m_primitiveBuffers) + || !UpdateVertexBuffer(srcPrimitives.m_vertexBuffer, m_primitiveBuffers)) + { + // Skip adding render data if failed to update buffers + // Note, the error would be already reported inside the Update* functions + return; + } // Validate the stream buffer views for all stream layout's if necessary for (int primitiveType = 0; primitiveType < PrimitiveType_Count; ++primitiveType) @@ -208,108 +191,34 @@ namespace AZ } } - bool DynamicPrimitiveProcessor::CreateBuffers() - { - if (!CreateBufferGroup(m_primitiveBuffers)) - { - return false; - } - return true; - } - - void DynamicPrimitiveProcessor::DestroyBuffers() - { - DestroyBufferGroup(m_primitiveBuffers); - } - - bool DynamicPrimitiveProcessor::CreateBufferGroup(DynamicBufferGroup& group) - { - RHI::ResultCode result = RHI::ResultCode::Fail; - - group.m_indexBuffer = RHI::Factory::Get().CreateBuffer(); - group.m_vertexBuffer = RHI::Factory::Get().CreateBuffer(); - - group.m_indexBuffer->SetName(AZ::Name("AuxGeomIndexBuffer")); - group.m_vertexBuffer->SetName(AZ::Name("AuxGeomVertexBuffer")); - - AZStd::vector> buffers = { group.m_indexBuffer , group.m_vertexBuffer }; - - RHI::BufferInitRequest bufferRequest; - bufferRequest.m_descriptor = RHI::BufferDescriptor{ RHI::BufferBindFlags::InputAssembly, MaxUploadBufferSize }; - - for (const RHI::Ptr& buffer : buffers) - { - bufferRequest.m_buffer = buffer.get(); - - result = m_hostPool->InitBuffer(bufferRequest); - - if (result != RHI::ResultCode::Success) - { - AZ_Error("DynamicPrimitiveProcessor", false, "Failed to create GPU buffers for AuxGeom"); - return false; - } - } - - // We have a single stream (position and color are interleaved in the vertex buffer) - group.m_streamBufferViews.resize(1); - - return true; - } - - void DynamicPrimitiveProcessor::DestroyBufferGroup(DynamicBufferGroup& group) - { - group.m_indexBuffer.reset(); - group.m_vertexBuffer.reset(); - - group.m_streamBufferViews.clear(); - } - - void DynamicPrimitiveProcessor::UpdateBuffer(const uint8_t* source, size_t sourceSize, RHI::Ptr buffer) - { - // This should never happen because of tests in AuxGeomDrawQueue in the functions that increase the source size. - AZ_Assert(sourceSize <= MaxUploadBufferSize, "Max upload buffer size exceeded"); - - // We use OrphanBuffer currently. If we have issues we may need to add fences or use FrameCountMax buffers - // in a round-robin system. - RHI::ResultCode orphanResult = m_hostPool->OrphanBuffer(*buffer); - AZ_Assert(orphanResult == RHI::ResultCode::Success, "OrphanBuffer failed"); - - if (orphanResult == RHI::ResultCode::Success) - { - RHI::BufferMapResponse mapResponse; - m_hostPool->MapBuffer(RHI::BufferMapRequest(*buffer, 0, sourceSize), mapResponse); - - auto* mappedData = reinterpret_cast(mapResponse.m_data); - - if (mappedData) - { - memcpy(mappedData, source, sourceSize); - - m_hostPool->UnmapBuffer(*buffer); - } - } - } - - void DynamicPrimitiveProcessor::UpdateIndexBuffer(const IndexBuffer& source, DynamicBufferGroup& group) + bool DynamicPrimitiveProcessor::UpdateIndexBuffer(const IndexBuffer& source, DynamicBufferGroup& group) { const size_t sourceByteSize = source.size() * sizeof(AuxGeomIndex); - auto* sourceBytes = reinterpret_cast(source.data()); - - UpdateBuffer(sourceBytes, sourceByteSize, group.m_indexBuffer); - - group.m_indexBufferView = RHI::IndexBufferView( - *group.m_indexBuffer, 0, static_cast(sourceByteSize), RHI::IndexFormat::Uint32); + + RHI::Ptr dynamicBuffer = RPI::DynamicDrawInterface::Get()->GetDynamicBuffer(sourceByteSize); + if (!dynamicBuffer) + { + AZ_WarningOnce("AuxGeom", false, "Failed to allocate dynamic buffer of size %d.", sourceByteSize); + return false; + } + dynamicBuffer->Write(source.data(), sourceByteSize); + group.m_indexBufferView = dynamicBuffer->GetIndexBufferView(RHI::IndexFormat::Uint32); + return true; } - void DynamicPrimitiveProcessor::UpdateVertexBuffer(const VertexBuffer& source, DynamicBufferGroup& group) + bool DynamicPrimitiveProcessor::UpdateVertexBuffer(const VertexBuffer& source, DynamicBufferGroup& group) { const size_t sourceByteSize = source.size() * sizeof(AuxGeomDynamicVertex); - auto* sourceBytes = reinterpret_cast(source.data()); - UpdateBuffer(sourceBytes, sourceByteSize, group.m_vertexBuffer); - - group.m_streamBufferViews[0] = RHI::StreamBufferView( - *group.m_vertexBuffer, 0, static_cast(sourceByteSize), static_cast(sizeof(AuxGeomDynamicVertex))); + RHI::Ptr dynamicBuffer = RPI::DynamicDrawInterface::Get()->GetDynamicBuffer(sourceByteSize); + if (!dynamicBuffer) + { + AZ_WarningOnce("AuxGeom", false, "Failed to allocate dynamic buffer of size %d.", sourceByteSize); + return false; + } + dynamicBuffer->Write(source.data(), sourceByteSize); + group.m_streamBufferViews[0] = dynamicBuffer->GetStreamBufferView(sizeof(AuxGeomDynamicVertex)); + return true; } void DynamicPrimitiveProcessor::ValidateStreamBufferViews(StreamBufferViewsForAllStreams& streamBufferViews, bool* isValidated, int primitiveType) diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h index f8b723c5e1..091d8df053 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/DynamicPrimitiveProcessor.h @@ -58,7 +58,7 @@ namespace AZ ~DynamicPrimitiveProcessor() = default; //! Initialize the DynamicPrimitiveProcessor and all its buffers, shaders, stream layouts etc - bool Initialize(AZ::RHI::Device& rhiDevice, const AZ::RPI::Scene* scene); + bool Initialize(const AZ::RPI::Scene* scene); //! Releases the DynamicPrimitiveProcessor and all primitive geometry buffers void Release(); @@ -78,12 +78,6 @@ namespace AZ struct DynamicBufferGroup { - //! The index buffer for this set of primitives - AZ::RHI::Ptr m_indexBuffer; - - //! The vertices for this set of primitives - AZ::RHI::Ptr m_vertexBuffer; - //! The view into the index buffer AZ::RHI::IndexBufferView m_indexBufferView; @@ -125,26 +119,11 @@ namespace AZ RHI::DrawPacketBuilder& drawPacketBuilder, RHI::DrawItemSortKey sortKey = 0); - // Creates the dynamic buffers - bool CreateBuffers(); - - // Destroy all the buffers - void DestroyBuffers(); - - // Creates the dynamic buffers in a group - bool CreateBufferGroup(DynamicBufferGroup& group); - - // Destroy all the buffers in a group - void DestroyBufferGroup(DynamicBufferGroup& group); - - // Helper function to update a buffer - void UpdateBuffer(const uint8_t* source, size_t sourceSize, RHI::Ptr buffer); - // Update a dynamic index buffer, given the data from draw requests - void UpdateIndexBuffer(const IndexBuffer& indexSource, DynamicBufferGroup& group); + bool UpdateIndexBuffer(const IndexBuffer& indexSource, DynamicBufferGroup& group); // Update a dynamic vertex buffer, given the data from draw requests - void UpdateVertexBuffer(const VertexBuffer& source, DynamicBufferGroup& group); + bool UpdateVertexBuffer(const VertexBuffer& source, DynamicBufferGroup& group); // Validate the given stream buffer views for the layout used for the given prim type (uses isValidated flags to see if necessary) void ValidateStreamBufferViews(StreamBufferViewsForAllStreams& streamBufferViews, bool* isValidated, int primitiveType); @@ -170,9 +149,6 @@ namespace AZ ShaderData m_shaderData; - // The buffer pool that manages all our dynamic index and vertex buffers - RHI::Ptr m_hostPool; - // Buffers for all primitives DynamicBufferGroup m_primitiveBuffers; diff --git a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp index e8b329ce21..cbc4e15b82 100644 --- a/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp +++ b/Gems/Atom/Feature/Common/Code/Source/AuxGeom/FixedShapeProcessor.cpp @@ -107,7 +107,8 @@ namespace AZ } void FixedShapeProcessor::PrepareFrame() - { + { + AZ_ATOM_PROFILE_FUNCTION("AuxGeom", "FixedShapeProcessor: PrepareFrame"); m_processSrgs.clear(); m_drawPackets.clear(); diff --git a/Gems/Atom/RHI/Code/Source/RHI/BufferPool.cpp b/Gems/Atom/RHI/Code/Source/RHI/BufferPool.cpp index ff5ff7fb19..e47ec9c1d5 100644 --- a/Gems/Atom/RHI/Code/Source/RHI/BufferPool.cpp +++ b/Gems/Atom/RHI/Code/Source/RHI/BufferPool.cpp @@ -6,6 +6,7 @@ */ #include +#include #include #include @@ -160,7 +161,8 @@ namespace AZ { return ResultCode::InvalidArgument; } - + + AZ_ATOM_PROFILE_FUNCTION("RHI", "BufferPool::OrphanBuffer"); return OrphanBufferInternal(buffer); } diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicBuffer.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicBuffer.h index 9b4d4e3fe7..8ad4762ac2 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicBuffer.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicBuffer.h @@ -41,7 +41,7 @@ namespace AZ public: //! Write data to the DyanmicBuffer. The write size can't be larger than this buffer's size - bool Write(void* data, uint32_t size); + bool Write(const void* data, uint32_t size); //! Get the buffer's size uint32_t GetSize(); diff --git a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h index 451ad580f0..bff3a245c8 100644 --- a/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h +++ b/Gems/Atom/RPI/Code/Include/Atom/RPI.Public/DynamicDraw/DynamicDrawContext.h @@ -141,11 +141,11 @@ namespace AZ //! Draw Indexed primitives with vertex and index data and per draw srg //! The per draw srg need to be provided if it's required by shader. - void DrawIndexed(void* vertexData, uint32_t vertexCount, void* indexData, uint32_t indexCount, RHI::IndexFormat indexFormat, Data::Instance < ShaderResourceGroup> drawSrg = nullptr); + void DrawIndexed(const void* vertexData, uint32_t vertexCount, const void* indexData, uint32_t indexCount, RHI::IndexFormat indexFormat, Data::Instance < ShaderResourceGroup> drawSrg = nullptr); //! Draw linear indexed primitives with vertex data and per draw srg //! The per draw srg need to be provided if it's required by shader. - void DrawLinear(void* vertexData, uint32_t vertexCount, Data::Instance drawSrg); + void DrawLinear(const void* vertexData, uint32_t vertexCount, Data::Instance drawSrg); //! Get per vertex size. The size was evaluated when vertex format was set uint32_t GetPerVertexDataSize(); diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicBuffer.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicBuffer.cpp index 6494007212..3e4c77c7f9 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicBuffer.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicBuffer.cpp @@ -12,7 +12,7 @@ namespace AZ { namespace RPI { - bool DynamicBuffer::Write(void* data, uint32_t size) + bool DynamicBuffer::Write(const void* data, uint32_t size) { if (m_size >= size) { diff --git a/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp b/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp index a7a263aedf..df22fa13c7 100644 --- a/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp +++ b/Gems/Atom/RPI/Code/Source/RPI.Public/DynamicDraw/DynamicDrawContext.cpp @@ -394,7 +394,7 @@ namespace AZ m_currentShaderVariantId = shaderVariantId; } - void DynamicDrawContext::DrawIndexed(void* vertexData, uint32_t vertexCount, void* indexData, uint32_t indexCount, RHI::IndexFormat indexFormat, Data::Instance < ShaderResourceGroup> drawSrg) + void DynamicDrawContext::DrawIndexed(const void* vertexData, uint32_t vertexCount, const void* indexData, uint32_t indexCount, RHI::IndexFormat indexFormat, Data::Instance < ShaderResourceGroup> drawSrg) { if (!m_initialized) { @@ -487,7 +487,7 @@ namespace AZ m_cachedDrawItems.emplace_back(drawItemInfo); } - void DynamicDrawContext::DrawLinear(void* vertexData, uint32_t vertexCount, Data::Instance drawSrg) + void DynamicDrawContext::DrawLinear(const void* vertexData, uint32_t vertexCount, Data::Instance drawSrg) { if (!m_initialized) { From dbb9dad6b9b46a65f9159234b4fc078a76100f7d Mon Sep 17 00:00:00 2001 From: Terry Michaels Date: Fri, 25 Jun 2021 14:15:01 -0500 Subject: [PATCH 42/56] Removed old engine assets no longer used (#1589) --- .../EngineAssets/Animated/WaterVolume.dds | 3 - .../Engine/EngineAssets/CodeCoverage/hit.tif | 3 - .../CodeCoverage/hit.tif.exportsettings | 1 - .../Engine/EngineAssets/CodeCoverage/pbar.tif | 3 - .../CodeCoverage/pbar.tif.exportsettings | 1 - .../EngineAssets/CodeCoverage/unexpected.tif | 3 - .../unexpected.tif.exportsettings | 1 - .../LevelForSliceEditing.ly | 3 - .../LevelForSliceEditing/filelist.xml | 6 - .../LevelForSliceEditing/level.pak | 3 - .../leveldata/environment.xml | 14 - .../leveldata/heightmap.dat | 3 - .../leveldata/terraintexture.xml | 10 - .../leveldata/timeofday.xml | 356 ------------------ .../leveldata/vegetationmap.dat | 3 - .../LevelForSliceEditing/tags.txt | 12 - .../Materials/Fog/FogVolumeBox.mtl | 3 - .../Materials/Fog/FogVolumeEllipsoid.mtl | 3 - .../EngineAssets/Materials/Fog/OceanInto.mtl | 3 - .../Materials/Fog/OceanIntoLowSpec.mtl | 3 - .../EngineAssets/Materials/Fog/OceanOutof.mtl | 3 - .../Materials/Fog/OceanOutofLowSpec.mtl | 3 - .../Materials/Fog/WaterFogVolumeInto.mtl | 3 - .../Materials/Fog/WaterFogVolumeOutof.mtl | 3 - .../Materials/PhysProxyTooBig.mtl | 6 - .../Materials/Water/WaterOceanBottom.mtl | 3 - .../Materials/Water/ocean_default.mtl | 4 - .../collision_proxy_entitiesonly.mtl | 6 - .../EngineAssets/Materials/decals/default.mtl | 6 - .../EngineAssets/Materials/lens_optics.mtl | 5 - .../Engine/EngineAssets/Materials/sky/sky.mtl | 5 - .../Materials/test/Holotest/hologram.mtl | 27 -- .../Materials/test/Holotest/test2.tif | 3 - .../test/Holotest/test2.tif.exportsettings | 1 - .../Materials/test/Holotest/tews1.tif | 3 - .../test/Holotest/tews1.tif.exportsettings | 1 - .../Materials/test/Holotest/tile1.cgf | 3 - .../Materials/test/Holotest/tile1.max | 3 - .../EngineAssets/Materials/test/chromium.mtl | 4 - .../EngineAssets/Materials/test/glass2.mtl | 7 - .../EngineAssets/Materials/test/hologram.mtl | 6 - .../EngineAssets/Materials/test/lightbeam.mtl | 4 - .../Materials/test/lightbeam_floodlight.mtl | 4 - .../Materials/test/lighthouseBeam.mtl | 6 - .../Materials/test/lighthousetemplebeam.mtl | 6 - .../EngineAssets/Materials/test/nodraw.mtl | 3 - .../EngineAssets/Materials/test/sky.mtl | 5 - .../EngineAssets/Materials/test/skyHDR.mtl | 5 - .../test/textures/glass_wall_ddn.tif | 3 - .../Materials/test/textures/templeBeam.tif | 3 - .../textures/templeBeam.tif.exportsettings | 1 - .../Materials/test/volumeObject.mtl | 4 - .../Materials/test/volumeObject2.mtl | 4 - .../Engine/EngineAssets/Objects/Default.cgf | 3 - Assets/Engine/EngineAssets/Objects/helper.mtl | 5 - .../EngineAssets/Production/MidGray.tif | 3 - .../Production/MidGray.tif.exportsettings | 1 - .../Production/TangentReference_ddn.tif | 3 - .../TangentReference_ddn.tif.exportsettings | 1 - Assets/Engine/EngineAssets/Production/UV.tif | 3 - .../Production/UV.tif.exportsettings | 1 - .../EngineAssets/ScreenSpace/AreaTex.dds | 3 - .../ScreenSpace/NormalsFitting.dds | 3 - .../ScreenSpace/PointsOnSphere4x4.tif | 3 - .../PointsOnSphere4x4.tif.exportsettings | 1 - .../ScreenSpace/PointsOnSphereVO4x4.tif | 3 - .../PointsOnSphereVO4x4.tif.exportsettings | 1 - .../EngineAssets/ScreenSpace/SearchTex.dds | 3 - .../EngineAssets/ScreenSpace/bokeh_love.TIF | 3 - .../ScreenSpace/bokeh_love.TIF.exportsettings | 1 - .../EngineAssets/ScreenSpace/bokeh_music.TIF | 3 - .../bokeh_music.TIF.exportsettings | 1 - .../ScreenSpace/bokeh_pentagon.TIF | 3 - .../bokeh_pentagon.TIF.exportsettings | 1 - .../ScreenSpace/bokeh_spherical.TIF | 3 - .../bokeh_spherical.TIF.exportsettings | 1 - .../EngineAssets/ScreenSpace/bokeh_square.TIF | 3 - .../bokeh_square.TIF.exportsettings | 1 - .../EngineAssets/ScreenSpace/bokeh_star.TIF | 3 - .../ScreenSpace/bokeh_star.TIF.exportsettings | 1 - .../EngineAssets/ScreenSpace/film_grain.dds | 3 - .../ScreenSpace/grain_bayer_mul.tif | 3 - .../grain_bayer_mul.tif.exportsettings | 1 - .../Shading/SonarVisionGradient.TIF | 3 - .../SonarVisionGradient.TIF.exportsettings | 1 - .../Shading/ThermalVisionGradient.tif | 3 - .../ThermalVisionGradient.tif.exportsettings | 1 - .../Shading/ThermalVisionGradient02.TIF | 3 - ...ThermalVisionGradient02.TIF.exportsettings | 1 - .../Engine/EngineAssets/Shading/WaterFoam.TIF | 3 - .../Shading/WaterFoam.TIF.exportsettings | 1 - .../Shading/cook_d_sampler_G16R16F.dds | 3 - .../EngineAssets/Shading/defaultProbe_cm.tif | 3 - .../EngineAssets/Shading/environmentBRDF.tif | 3 - .../Shading/generic_reflections.tif | 3 - .../generic_reflections.tif.exportsettings | 1 - .../Shading/layer_effect_anim_function.tif | 3 - ...er_effect_anim_function.tif.exportsettings | 1 - .../EngineAssets/Shading/nanosuit_mask.TIF | 3 - .../Shading/nanosuit_mask.TIF.exportsettings | 1 - .../Shading/nanosuit_modes_grads.TIF | 3 - .../nanosuit_modes_grads.TIF.exportsettings | 1 - .../EngineAssets/Shading/vignetting.TIF | 3 - .../Shading/vignetting.TIF.exportsettings | 1 - Assets/Engine/EngineAssets/Sky/optical.lut | 3 - Assets/Engine/EngineAssets/Sky/stars.dat | 3 - .../EngineAssets/TextureMsg/DefaultNoUVs.tif | 3 - .../DefaultNoUVs.tif.exportsettings | 1 - .../TextureMsg/DefaultNoUVs_ddn.tif | 3 - .../TextureMsg/DefaultNoUVs_spec.tif | 3 - .../EngineAssets/TextureMsg/DefaultSolids.mtl | 8 - .../TextureMsg/DefaultSolids_ddn.tif | 3 - .../TextureMsg/DefaultSolids_diff.tif | 3 - .../DefaultSolids_diff.tif.exportsettings | 1 - .../TextureMsg/DefaultSolids_spec.tif | 3 - .../EngineAssets/TextureMsg/NotFound.psd | 3 - .../EngineAssets/TextureMsg/NotFound.tif | 3 - .../EngineAssets/TextureMsg/NotFound_a.tif | 3 - .../EngineAssets/TextureMsg/NotFound_cm.tif | 3 - .../EngineAssets/TextureMsg/NotFound_ddn.tif | 3 - .../EngineAssets/TextureMsg/NotFound_ddna.tif | 3 - .../TextureMsg/PhysProxyTooBig.tif | 3 - .../PhysProxyTooBig.tif.exportsettings | 1 - .../EngineAssets/TextureMsg/RCError.psd | 3 - .../EngineAssets/TextureMsg/RCError.tif | 3 - .../EngineAssets/TextureMsg/RCError_a.tif | 3 - .../TextureMsg/RCError_a.tif.exportsettings | 1 - .../EngineAssets/TextureMsg/RCError_cm.tif | 3 - .../EngineAssets/TextureMsg/RCError_ddn.tif | 3 - .../TextureMsg/RCError_ddn.tif.exportsettings | 1 - .../EngineAssets/TextureMsg/RCError_ddna.tif | 3 - .../RCError_ddna.tif.exportsettings | 1 - .../EngineAssets/TextureMsg/ReplaceMe.tif | 3 - .../TextureMsg/ReplaceMe.tif.exportsettings | 1 - .../EngineAssets/TextureMsg/ReplaceMeCm.tif | 3 - .../TextureMsg/ReplaceMeCm.tif.exportsettings | 1 - .../TextureMsg/ReplaceMeRelease.tif | 3 - .../ReplaceMeRelease.tif.exportsettings | 1 - .../TextureMsg/ShaderCompiling.tif | 3 - .../ShaderCompiling.tif.exportsettings | 1 - .../EngineAssets/TextureMsg/ShaderError.tif | 3 - .../TextureMsg/ShaderError.tif.exportsettings | 1 - .../TextureMsg/TextureCompiling.tif | 3 - .../TextureMsg/TextureCompiling_a.tif | 3 - .../TextureCompiling_a.tif.exportsettings | 1 - .../TextureMsg/TextureCompiling_cm.tif | 3 - .../TextureMsg/TextureCompiling_ddn.tif | 3 - .../TextureCompiling_ddn.tif.exportsettings | 1 - .../TextureMsg/TextureCompiling_ddna.tif | 3 - .../TextureCompiling_ddna.tif.exportsettings | 1 - .../EngineAssets/TextureMsg/color_Black.tif | 3 - .../EngineAssets/TextureMsg/color_Blue.tif | 3 - .../EngineAssets/TextureMsg/color_Cyan.tif | 3 - .../EngineAssets/TextureMsg/color_Green.tif | 3 - .../EngineAssets/TextureMsg/color_Magenta.tif | 3 - .../EngineAssets/TextureMsg/color_Orange.tif | 3 - .../EngineAssets/TextureMsg/color_Purple.tif | 3 - .../EngineAssets/TextureMsg/color_Red.tif | 3 - .../EngineAssets/TextureMsg/color_White.tif | 3 - .../EngineAssets/TextureMsg/color_Yellow.tif | 3 - .../EngineAssets/TextureMsg/mipmapdebug.tif | 3 - .../TextureMsg/orange_for_designer.tif | 3 - .../EngineAssets/Textures/BlackAlpha.tif | 3 - .../Engine/EngineAssets/Textures/BlackCM.tif | 3 - .../Textures/BlackCM.tif.exportsettings | 1 - .../EngineAssets/Textures/Cursor_Green.tif | 3 - .../Textures/Cursor_Green.tif.exportsettings | 1 - .../Textures/FogVolShadowJitter.tif | 3 - .../FogVolShadowJitter.tif.exportsettings | 1 - .../Textures/Frozen/frost_noise3.dds | 3 - .../Textures/Frozen/frost_noise4.tif | 3 - .../Textures/Frozen/snow_spatter.tif | 3 - .../EngineAssets/Textures/GreyAlpha.tif | 3 - .../Textures/GreyAlpha.tif.exportsettings | 1 - .../Textures/Palette/cloak_interlation.dds | 3 - .../Textures/Palette/cloak_palette.tif | 3 - .../Palette/cloak_palette.tif.exportsettings | 1 - .../Textures/Palette/cloak_sparks.dds | 3 - .../Textures/Palette/cloak_transition.dds | 3 - .../Textures/TexelsPerMeterGrad.tif | 3 - .../TexelsPerMeterGrad.tif.exportsettings | 1 - .../EngineAssets/Textures/VolumeRaster.tif | 3 - .../Textures/VolumeRaster.tif.exportsettings | 1 - .../Textures/alienhud_distortionimage.tif | 3 - ...lienhud_distortionimage.tif.exportsettings | 1 - .../EngineAssets/Textures/alienhud_noise1.tif | 3 - .../alienhud_noise1.tif.exportsettings | 1 - Assets/Engine/EngineAssets/Textures/black.tif | 3 - .../Textures/black.tif.exportsettings | 1 - .../Textures/caustics_sampler.dds | 3 - Assets/Engine/EngineAssets/Textures/color.tif | 3 - .../EngineAssets/Textures/default_cch.tif | 3 - .../Textures/default_cch.tif.exportsettings | 1 - .../EngineAssets/Textures/defaults/16_12.tif | 3 - .../EngineAssets/Textures/defaults/16_34.tif | 3 - .../EngineAssets/Textures/defaults/16_5.tif | 3 - .../Textures/defaults/16_grey.tif | 3 - .../Textures/defaults/spot_default.tif | 3 - .../Textures/detailDecalVariation.tif | 3 - .../Engine/EngineAssets/Textures/dither_2.dds | 3 - .../Textures/dither_pattern_2d.dds | 3 - .../Textures/flares/Flare_Glow001.tif | 3 - .../Textures/flares/Flare_Glow002.tif | 3 - .../Textures/flares/Flare_Orbs001.tif | 3 - .../Textures/flares/Flare_SoftSpot001.tif | 3 - .../Textures/flares/Flare_SoftSpot002.tif | 3 - .../Textures/flares/Flare_Sun001.tif | 3 - .../EngineAssets/Textures/flares/flare01.tif | 3 - .../EngineAssets/Textures/flares/flare02.tif | 3 - .../Textures/flares/ghost_grey.tif | 3 - .../Textures/flares/ghost_multicolor.tif | 3 - .../Textures/flares/icons/ghost.tif | 3 - .../flares/icons/ghost.tif.exportsettings | 1 - .../Textures/flares/icons/glow.tif | 3 - .../flares/icons/glow.tif.exportsettings | 1 - .../Textures/flares/icons/iris_shafts.tif | 3 - .../icons/iris_shafts.tif.exportsettings | 1 - .../Textures/flares/icons/multi_ghost.tif | 3 - .../icons/multi_ghost.tif.exportsettings | 1 - .../Textures/flares/icons/orbs.tif | 3 - .../flares/icons/orbs.tif.exportsettings | 1 - .../Textures/flares/icons/ring.tif | 3 - .../flares/icons/ring.tif.exportsettings | 1 - .../Textures/flares/icons/test_demo.tif | 3 - .../flares/icons/test_demo.tif.exportsettings | 1 - .../Textures/flares/icons/vol_shafts.tif | 3 - .../icons/vol_shafts.tif.exportsettings | 1 - .../Textures/flares/iris_shaft.tif | 3 - .../Textures/flares/lens_blurshape.tif | 3 - .../Textures/flares/lens_dirtyglass.tif | 3 - .../Textures/flares/lens_noise01.tif | 3 - .../Textures/flares/lens_raindrops.tif | 3 - .../Textures/flares/lens_raindrops02.tif | 3 - .../EngineAssets/Textures/flares/orb_01.tif | 3 - .../Textures/flares/orb_cell01.tif | 3 - .../Textures/flares/orb_cell02.tif | 3 - .../Textures/flares/orb_cell03.tif | 3 - .../Textures/flares/orb_cell04.tif | 3 - .../Textures/flares/spectrum_full.tif | 3 - .../Textures/flares/spectrum_half.tif | 3 - .../Textures/flares/spectrum_quater.tif | 3 - .../Textures/flares/spectrum_specs.tif | 3 - .../EngineAssets/Textures/flares/streak01.tif | 3 - .../Textures/flares/visor_scratch.tif | 3 - .../EngineAssets/Textures/fresnel_sampler.dds | 3 - .../EngineAssets/Textures/fringe_map.dds | 3 - .../EngineAssets/Textures/frost_refl2.tif | 3 - .../Textures/frost_refl2.tif.exportsettings | 1 - .../Textures/fuzzy_pow_sampler_merged.dds | 3 - .../Textures/glass_decalatlas_ddn.tif | 3 - .../glass_decalatlas_ddn.tif.exportsettings | 1 - .../Textures/glass_decalatlas_diff.tif | 3 - .../glass_decalatlas_diff.tif.exportsettings | 1 - Assets/Engine/EngineAssets/Textures/grey.dds | 3 - Assets/Engine/EngineAssets/Textures/hex.tif | 3 - .../Textures/hex.tif.exportsettings | 1 - .../Engine/EngineAssets/Textures/hex_ddn.tif | 3 - .../Textures/hex_ddn.tif.exportsettings | 1 - .../Engine/EngineAssets/Textures/hex_grad.tif | 3 - .../Textures/hex_grad.tif.exportsettings | 1 - .../Engine/EngineAssets/Textures/hex_line.tif | 3 - .../Textures/hex_line.tif.exportsettings | 1 - .../Engine/EngineAssets/Textures/hex_rand.tif | 3 - .../Textures/hex_rand.tif.exportsettings | 1 - .../EngineAssets/Textures/hiteffect_areas.tif | 3 - .../hiteffect_areas.tif.exportsettings | 1 - .../Textures/hiteffect_blurmask_ddn.tif | 3 - .../hiteffect_blurmask_ddn.tif.exportsettings | 1 - .../Textures/hiteffect_healthgradient.tif | 3 - ...iteffect_healthgradient.tif.exportsettings | 1 - .../Textures/hiteffect_lvlgradient.tif | 3 - .../hiteffect_lvlgradient.tif.exportsettings | 1 - .../EngineAssets/Textures/hiteffect_round.tif | 3 - .../hiteffect_round.tif.exportsettings | 1 - .../Textures/hiteffect_veinsblood.tif | 3 - .../hiteffect_veinsblood.tif.exportsettings | 1 - .../EngineAssets/Textures/interference.dds | 3 - .../jumpnoisehighfrequency_x27y19.dds | 3 - .../Textures/moisturedroplets.tif | 3 - .../moisturedroplets.tif.exportsettings | 1 - .../EngineAssets/Textures/nightvis_grad.tif | 3 - .../Textures/nightvis_grad.tif.exportsettings | 1 - Assets/Engine/EngineAssets/Textures/noise.tif | 3 - .../Engine/EngineAssets/Textures/noise3d.dds | 3 - .../EngineAssets/Textures/oceanwaves_ddn.tif | 3 - .../oceanwaves_ddn.tif.exportsettings | 1 - .../EngineAssets/Textures/palletteInst.dds | 3 - .../EngineAssets/Textures/perlinNoise2d.tif | 3 - .../Textures/perlinNoise2d.tif.exportsettings | 1 - .../Textures/perlinNoiseDerivatives.tif | 3 - .../perlinNoiseDerivatives.tif.exportsettings | 1 - .../Textures/perlinNoiseNormal_ddn.tif | 3 - .../perlinNoiseNormal_ddn.tif.exportsettings | 1 - .../EngineAssets/Textures/perlinNoise_sum.tif | 3 - .../perlinNoise_sum.tif.exportsettings | 1 - .../Textures/perlinNoise_sum_small.tif | 3 - .../perlinNoise_sum_small.tif.exportsettings | 1 - .../Engine/EngineAssets/Textures/pixeltex.dds | 3 - .../EngineAssets/Textures/rotrandomcm.dds | 3 - .../Engine/EngineAssets/Textures/scratch.tif | 3 - .../Textures/scratch.tif.exportsettings | 1 - .../EngineAssets/Textures/scratch_ddn.tif | 3 - .../Textures/scratch_ddn.tif.exportsettings | 1 - .../Textures/screen_noisy_bump.dds | 3 - .../Textures/screenfrost_alpha.TIF | 3 - .../screenfrost_alpha.TIF.exportsettings | 1 - .../EngineAssets/Textures/screenfrost_ddn.TIF | 3 - .../screenfrost_ddn.TIF.exportsettings | 1 - .../EngineAssets/Textures/snowflakes.tif | 3 - .../Textures/snowflakes.tif.exportsettings | 1 - .../EngineAssets/Textures/startscreen.tif | 3 - .../Textures/startscreen.tif.exportsettings | 1 - .../EngineAssets/Textures/user_tex1.tif | 3 - .../EngineAssets/Textures/user_tex2.tif | 3 - .../EngineAssets/Textures/vector_noise.dds | 3 - .../EngineAssets/Textures/water_droplets.dds | 3 - .../EngineAssets/Textures/water_gloss.tif | 3 - .../Textures/water_gloss.tif.exportsettings | 1 - Assets/Engine/EngineAssets/Textures/white.tif | 3 - .../Textures/white.tif.exportsettings | 1 - .../Engine/EngineAssets/Textures/white_cm.tif | 3 - .../Textures/white_cm.tif.exportsettings | 1 - .../EngineAssets/Textures/white_ddn.tif | 3 - .../Engine/EngineAssets/defaulttextures.xml | 79 ---- 324 files changed, 1316 deletions(-) delete mode 100644 Assets/Engine/EngineAssets/Animated/WaterVolume.dds delete mode 100644 Assets/Engine/EngineAssets/CodeCoverage/hit.tif delete mode 100644 Assets/Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/CodeCoverage/pbar.tif delete mode 100644 Assets/Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif delete mode 100644 Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/filelist.xml delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/level.pak delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat delete mode 100644 Assets/Engine/EngineAssets/LevelForSliceEditing/tags.txt delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/OceanInto.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/OceanOutof.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/PhysProxyTooBig.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/Water/ocean_default.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/decals/default.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/lens_optics.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/sky/sky.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/Holotest/hologram.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif delete mode 100644 Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif delete mode 100644 Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.cgf delete mode 100644 Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.max delete mode 100644 Assets/Engine/EngineAssets/Materials/test/chromium.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/glass2.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/hologram.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/lightbeam.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/lighthouseBeam.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/nodraw.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/sky.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/skyHDR.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif delete mode 100644 Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Materials/test/volumeObject.mtl delete mode 100644 Assets/Engine/EngineAssets/Materials/test/volumeObject2.mtl delete mode 100644 Assets/Engine/EngineAssets/Objects/Default.cgf delete mode 100644 Assets/Engine/EngineAssets/Objects/helper.mtl delete mode 100644 Assets/Engine/EngineAssets/Production/MidGray.tif delete mode 100644 Assets/Engine/EngineAssets/Production/MidGray.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Production/UV.tif delete mode 100644 Assets/Engine/EngineAssets/Production/UV.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/AreaTex.dds delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/NormalsFitting.dds delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/SearchTex.dds delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/film_grain.dds delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif delete mode 100644 Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF delete mode 100644 Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif delete mode 100644 Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF delete mode 100644 Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/WaterFoam.TIF delete mode 100644 Assets/Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds delete mode 100644 Assets/Engine/EngineAssets/Shading/defaultProbe_cm.tif delete mode 100644 Assets/Engine/EngineAssets/Shading/environmentBRDF.tif delete mode 100644 Assets/Engine/EngineAssets/Shading/generic_reflections.tif delete mode 100644 Assets/Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif delete mode 100644 Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF delete mode 100644 Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF delete mode 100644 Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Shading/vignetting.TIF delete mode 100644 Assets/Engine/EngineAssets/Shading/vignetting.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Sky/optical.lut delete mode 100644 Assets/Engine/EngineAssets/Sky/stars.dat delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultSolids.mtl delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/NotFound.psd delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/NotFound.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/NotFound_a.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/NotFound_cm.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/NotFound_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/NotFound_ddna.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError.psd delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError_cm.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Black.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Blue.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Cyan.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Green.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Magenta.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Orange.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Purple.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Red.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_White.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/color_Yellow.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/mipmapdebug.tif delete mode 100644 Assets/Engine/EngineAssets/TextureMsg/orange_for_designer.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/BlackAlpha.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/BlackCM.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/BlackCM.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/Cursor_Green.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/Frozen/frost_noise3.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/Frozen/frost_noise4.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/Frozen/snow_spatter.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/GreyAlpha.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/Palette/cloak_interlation.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/Palette/cloak_sparks.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/Palette/cloak_transition.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/VolumeRaster.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/black.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/black.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/caustics_sampler.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/color.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/default_cch.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/default_cch.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/defaults/16_12.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/defaults/16_34.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/defaults/16_5.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/defaults/16_grey.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/defaults/spot_default.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/detailDecalVariation.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/dither_2.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/dither_pattern_2d.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/Flare_Glow001.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/Flare_Glow002.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/Flare_Sun001.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/flare01.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/flare02.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/ghost_grey.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/ghost_multicolor.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/iris_shaft.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/lens_blurshape.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/lens_noise01.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/lens_raindrops.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/lens_raindrops02.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/orb_01.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/orb_cell01.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/orb_cell02.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/orb_cell03.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/orb_cell04.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/spectrum_full.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/spectrum_half.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/spectrum_quater.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/spectrum_specs.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/streak01.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/flares/visor_scratch.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/fresnel_sampler.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/fringe_map.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/frost_refl2.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/grey.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/hex.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hex.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_grad.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_grad.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_line.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_line.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_rand.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hex_rand.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_round.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/interference.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/moisturedroplets.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/nightvis_grad.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/noise.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/noise3d.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/palletteInst.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/pixeltex.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/rotrandomcm.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/scratch.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/scratch.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/scratch_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/screen_noisy_bump.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF delete mode 100644 Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF delete mode 100644 Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/snowflakes.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/snowflakes.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/startscreen.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/startscreen.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/user_tex1.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/user_tex2.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/vector_noise.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/water_droplets.dds delete mode 100644 Assets/Engine/EngineAssets/Textures/water_gloss.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/water_gloss.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/white.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/white.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/white_cm.tif delete mode 100644 Assets/Engine/EngineAssets/Textures/white_cm.tif.exportsettings delete mode 100644 Assets/Engine/EngineAssets/Textures/white_ddn.tif delete mode 100644 Assets/Engine/EngineAssets/defaulttextures.xml diff --git a/Assets/Engine/EngineAssets/Animated/WaterVolume.dds b/Assets/Engine/EngineAssets/Animated/WaterVolume.dds deleted file mode 100644 index f23d914406..0000000000 --- a/Assets/Engine/EngineAssets/Animated/WaterVolume.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d5f8b854766f42212d788a884d2b5fd02b477a54baa6bbc931a0d7f4c9919eb2 -size 524416 diff --git a/Assets/Engine/EngineAssets/CodeCoverage/hit.tif b/Assets/Engine/EngineAssets/CodeCoverage/hit.tif deleted file mode 100644 index 818db97d5d..0000000000 --- a/Assets/Engine/EngineAssets/CodeCoverage/hit.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a962f76c3c0046af0d07a39fb62ecffff907885beefd36560d89e23e208ade7d -size 2784 diff --git a/Assets/Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings b/Assets/Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/CodeCoverage/hit.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif b/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif deleted file mode 100644 index 8db59eb7ed..0000000000 --- a/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e4f3852eb90c52351cb01260ece27a3d8809721c60c4f3d8c74e65ab1de4036 -size 999 diff --git a/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings b/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/CodeCoverage/pbar.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif b/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif deleted file mode 100644 index 008849b209..0000000000 --- a/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:df170ec3d1e1fc52c7c79f062d3454baa7e081883efd4210f0a4eee0f2ac232b -size 98686 diff --git a/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings b/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings deleted file mode 100644 index 80afdedb73..0000000000 --- a/Assets/Engine/EngineAssets/CodeCoverage/unexpected.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ /reduce=1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly b/Assets/Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly deleted file mode 100644 index d7cb0f4527..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/LevelForSliceEditing.ly +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:555c550540579ff4cc5bece0802b7e7f3a73ea0eddff1175ce4be57dd73d1630 -size 2120 diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/filelist.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/filelist.xml deleted file mode 100644 index e98d23124e..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/filelist.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/level.pak b/Assets/Engine/EngineAssets/LevelForSliceEditing/level.pak deleted file mode 100644 index feb989265e..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/level.pak +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dae9ecea1e60a2f58da6a6d8b126cd342e56769df25efa25685be7b01e6a370b -size 8319 diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml deleted file mode 100644 index a5a665026b..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/environment.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - - - - - diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat deleted file mode 100644 index 539b82d3de..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/heightmap.dat +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f3a0a971e6cc457a5478b4ab8346f861f44c217a858345cab456f9d2f91ff449 -size 17407568 diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml deleted file mode 100644 index 0fa8b16c50..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/terraintexture.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml deleted file mode 100644 index e183b92e70..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/timeofday.xml +++ /dev/null @@ -1,356 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat b/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat deleted file mode 100644 index dce5631cd0..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/leveldata/vegetationmap.dat +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e6a5435c928079b27796f6b202bbc2623e7e454244ddc099a3cadf33b7cb9e9 -size 63 diff --git a/Assets/Engine/EngineAssets/LevelForSliceEditing/tags.txt b/Assets/Engine/EngineAssets/LevelForSliceEditing/tags.txt deleted file mode 100644 index 0d6c1880e7..0000000000 --- a/Assets/Engine/EngineAssets/LevelForSliceEditing/tags.txt +++ /dev/null @@ -1,12 +0,0 @@ -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 -0,0,0,0,0,0 diff --git a/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl b/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl deleted file mode 100644 index cc8f18fbdb..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeBox.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl b/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl deleted file mode 100644 index ae5c93c332..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/FogVolumeEllipsoid.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/Fog/OceanInto.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanInto.mtl deleted file mode 100644 index b8f2cd4e9b..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/OceanInto.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl deleted file mode 100644 index 2d8a816eca..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/OceanIntoLowSpec.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/Fog/OceanOutof.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanOutof.mtl deleted file mode 100644 index a3eb530e3f..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/OceanOutof.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl b/Assets/Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl deleted file mode 100644 index b5c6eeadd3..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/OceanOutofLowSpec.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl b/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl deleted file mode 100644 index c73833ad5a..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeInto.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl b/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl deleted file mode 100644 index ad306fadba..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Fog/WaterFogVolumeOutof.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/PhysProxyTooBig.mtl b/Assets/Engine/EngineAssets/Materials/PhysProxyTooBig.mtl deleted file mode 100644 index 0e04aef821..0000000000 --- a/Assets/Engine/EngineAssets/Materials/PhysProxyTooBig.mtl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl b/Assets/Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl deleted file mode 100644 index cb2c8e03fd..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Water/WaterOceanBottom.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Materials/Water/ocean_default.mtl b/Assets/Engine/EngineAssets/Materials/Water/ocean_default.mtl deleted file mode 100644 index acc003ab41..0000000000 --- a/Assets/Engine/EngineAssets/Materials/Water/ocean_default.mtl +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Assets/Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl b/Assets/Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl deleted file mode 100644 index ea40194f1e..0000000000 --- a/Assets/Engine/EngineAssets/Materials/collision_proxy_entitiesonly.mtl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/decals/default.mtl b/Assets/Engine/EngineAssets/Materials/decals/default.mtl deleted file mode 100644 index 1a712ec0e1..0000000000 --- a/Assets/Engine/EngineAssets/Materials/decals/default.mtl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/lens_optics.mtl b/Assets/Engine/EngineAssets/Materials/lens_optics.mtl deleted file mode 100644 index d417b01762..0000000000 --- a/Assets/Engine/EngineAssets/Materials/lens_optics.mtl +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/sky/sky.mtl b/Assets/Engine/EngineAssets/Materials/sky/sky.mtl deleted file mode 100644 index 16d9981c7a..0000000000 --- a/Assets/Engine/EngineAssets/Materials/sky/sky.mtl +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/Holotest/hologram.mtl b/Assets/Engine/EngineAssets/Materials/test/Holotest/hologram.mtl deleted file mode 100644 index ed5010322b..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/Holotest/hologram.mtl +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif b/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif deleted file mode 100644 index 18eaa06989..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab2f93721ecf889c7804d6b4316772897f74d1422eb5fccba78f2de9f817c049 -size 4202922 diff --git a/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings b/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings deleted file mode 100644 index d21922d983..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/Holotest/test2.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=DiffuseWithAlpha_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif b/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif deleted file mode 100644 index 4f52e4653b..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c2ec3755b3ec347c7e526a2b2d9b1a39e79a5f0946d9dfac830773f4e05bc35b -size 264618 diff --git a/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings b/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings deleted file mode 100644 index d21922d983..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/Holotest/tews1.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=DiffuseWithAlpha_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.cgf b/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.cgf deleted file mode 100644 index eac42b2731..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.cgf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f61fb9fe99952f2f155fbe5400ae731b3ec5910a47b2f517e78749dcb91085ec -size 26588 diff --git a/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.max b/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.max deleted file mode 100644 index c4fb039398..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/Holotest/tile1.max +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:31cfc06eba59c01370d6e648d634e2b7ea56ee01374b91e0733a31ead26a890e -size 204800 diff --git a/Assets/Engine/EngineAssets/Materials/test/chromium.mtl b/Assets/Engine/EngineAssets/Materials/test/chromium.mtl deleted file mode 100644 index dddf8bd768..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/chromium.mtl +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/glass2.mtl b/Assets/Engine/EngineAssets/Materials/test/glass2.mtl deleted file mode 100644 index 12c357e1af..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/glass2.mtl +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/hologram.mtl b/Assets/Engine/EngineAssets/Materials/test/hologram.mtl deleted file mode 100644 index 21066b8071..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/hologram.mtl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/lightbeam.mtl b/Assets/Engine/EngineAssets/Materials/test/lightbeam.mtl deleted file mode 100644 index bb7558d001..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/lightbeam.mtl +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl b/Assets/Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl deleted file mode 100644 index 2d325a14d1..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/lightbeam_floodlight.mtl +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/lighthouseBeam.mtl b/Assets/Engine/EngineAssets/Materials/test/lighthouseBeam.mtl deleted file mode 100644 index c0ff0ecd88..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/lighthouseBeam.mtl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl b/Assets/Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl deleted file mode 100644 index 0fd4cc5c5e..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/lighthousetemplebeam.mtl +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/nodraw.mtl b/Assets/Engine/EngineAssets/Materials/test/nodraw.mtl deleted file mode 100644 index 4638d7f47f..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/nodraw.mtl +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/sky.mtl b/Assets/Engine/EngineAssets/Materials/test/sky.mtl deleted file mode 100644 index 43ce732f83..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/sky.mtl +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/skyHDR.mtl b/Assets/Engine/EngineAssets/Materials/test/skyHDR.mtl deleted file mode 100644 index 16d9981c7a..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/skyHDR.mtl +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif b/Assets/Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif deleted file mode 100644 index db7e3a970e..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/textures/glass_wall_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3223666df872514edf7e611e96dac4f526c580f2b16252f9f9ba887a56f5e5dc -size 12599662 diff --git a/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif b/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif deleted file mode 100644 index c6bbcf0543..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:371383e51b72e357e4e330a2acb79009443bb6e9ba34cddd49d1de626f262f19 -size 196920 diff --git a/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings b/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings deleted file mode 100644 index 2d1dccbf99..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/textures/templeBeam.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Albedo /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Materials/test/volumeObject.mtl b/Assets/Engine/EngineAssets/Materials/test/volumeObject.mtl deleted file mode 100644 index 1e6803e465..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/volumeObject.mtl +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Assets/Engine/EngineAssets/Materials/test/volumeObject2.mtl b/Assets/Engine/EngineAssets/Materials/test/volumeObject2.mtl deleted file mode 100644 index 9210077d15..0000000000 --- a/Assets/Engine/EngineAssets/Materials/test/volumeObject2.mtl +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/Assets/Engine/EngineAssets/Objects/Default.cgf b/Assets/Engine/EngineAssets/Objects/Default.cgf deleted file mode 100644 index ff686e19eb..0000000000 --- a/Assets/Engine/EngineAssets/Objects/Default.cgf +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:453caf22089182ad725c3cbb3580e48fee25ece5b1f09fa4ead4a6ae1efb6265 -size 6832 diff --git a/Assets/Engine/EngineAssets/Objects/helper.mtl b/Assets/Engine/EngineAssets/Objects/helper.mtl deleted file mode 100644 index c01d1de65b..0000000000 --- a/Assets/Engine/EngineAssets/Objects/helper.mtl +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Assets/Engine/EngineAssets/Production/MidGray.tif b/Assets/Engine/EngineAssets/Production/MidGray.tif deleted file mode 100644 index fd963f0d50..0000000000 --- a/Assets/Engine/EngineAssets/Production/MidGray.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:928c40a3973d1834036a0d3068da9500397aed38a8e91129b86fd33f61888482 -size 12535 diff --git a/Assets/Engine/EngineAssets/Production/MidGray.tif.exportsettings b/Assets/Engine/EngineAssets/Production/MidGray.tif.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/Production/MidGray.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif b/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif deleted file mode 100644 index 16ed1f3d51..0000000000 --- a/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:52d078ae101308e1d04f7d7bc95ba24cc1781acd60567f344f96488f87976879 -size 197104 diff --git a/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings deleted file mode 100644 index 98fc101e5c..0000000000 --- a/Assets/Engine/EngineAssets/Production/TangentReference_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=Normalmap_highQ /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Production/UV.tif b/Assets/Engine/EngineAssets/Production/UV.tif deleted file mode 100644 index 2a30ad939a..0000000000 --- a/Assets/Engine/EngineAssets/Production/UV.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e7e7637ab823391dae9fae61c2ed62648ef1a551e2562e78fab9e83768d0e326 -size 198934 diff --git a/Assets/Engine/EngineAssets/Production/UV.tif.exportsettings b/Assets/Engine/EngineAssets/Production/UV.tif.exportsettings deleted file mode 100644 index 712c89ba18..0000000000 --- a/Assets/Engine/EngineAssets/Production/UV.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/AreaTex.dds b/Assets/Engine/EngineAssets/ScreenSpace/AreaTex.dds deleted file mode 100644 index db3a44f87d..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/AreaTex.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5018e1ce235e6f681eb1b19208783fe22989760f9c9ee467f477b41f901300cc -size 358528 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/NormalsFitting.dds b/Assets/Engine/EngineAssets/ScreenSpace/NormalsFitting.dds deleted file mode 100644 index 9db18be8bc..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/NormalsFitting.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:578fcd6565cb1b6ee80ee108f3d0bb3319f9512a165e86a71066dbca8a62a903 -size 349653 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif deleted file mode 100644 index 590180d850..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d57eb3a77e28f92f7b7984c32fb5241a8de9d13e31de7f3805ce772f4692e15 -size 411 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings deleted file mode 100644 index de0af89e52..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphere4x4.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=Gradient /reduce=0 /srgb=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif deleted file mode 100644 index e871ef772c..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:befa683fbb462aafec5c6acd8c57b7110159b655aa3da179197d225a17608f63 -size 366 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings deleted file mode 100644 index c48fb8632a..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/PointsOnSphereVO4x4.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Uncompressed \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/SearchTex.dds b/Assets/Engine/EngineAssets/ScreenSpace/SearchTex.dds deleted file mode 100644 index 35d614fe84..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/SearchTex.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:21270248fcd044e2862b71b2be501be57896d6a09cd342aa640bb3523e994a90 -size 2306 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF deleted file mode 100644 index d1294aba2f..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:28c65340053099c10ab182b683a47983485bd1fed0708595ba3ec85127f97e01 -size 13067 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_love.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF deleted file mode 100644 index 6fab3244e2..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e3ac9aff02465de837e4854bb5c4c7a616a180572a7dd91641b732392405df75 -size 13067 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_music.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF deleted file mode 100644 index 259a265320..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80d728327ce9967631e1e79c949b865565ff7f2a5f21a40d07a63c64178761a6 -size 13067 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_pentagon.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF deleted file mode 100644 index ea26516c21..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a66a0479747c7453a0c506584cd2b0c33caa3c570338e9bcd7f2b9319fa48376 -size 13067 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_spherical.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF deleted file mode 100644 index 812d8f278b..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2e6d776b137e482fc01a9ba98a0e5f554d05e150a872caa1df87fff74cb8a053 -size 13067 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_square.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF deleted file mode 100644 index a24cb21caa..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6465de4b41e18f4ee51fd29717a5aff96c1370a80f488de8ac06898fb310268f -size 13067 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/bokeh_star.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/ScreenSpace/film_grain.dds b/Assets/Engine/EngineAssets/ScreenSpace/film_grain.dds deleted file mode 100644 index f521bfa4dc..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/film_grain.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:802275dac19c1f748e2c5b356a3e7f5540654b3ecd206dfd41050c7f94780fa5 -size 1572992 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif b/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif deleted file mode 100644 index 0899240067..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c25375716743c4ec47285567acec21d0c72594b88100664eecd9ec48e727833f -size 17291 diff --git a/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings b/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings deleted file mode 100644 index d70fd85e40..0000000000 --- a/Assets/Engine/EngineAssets/ScreenSpace/grain_bayer_mul.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=SF_Gradient /reduce=-1 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF b/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF deleted file mode 100644 index 09001a069e..0000000000 --- a/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e917e70760dc1b574ffbf1764912d7b8906639f6472604d351c89cec4b0bff7 -size 3371 diff --git a/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/Shading/SonarVisionGradient.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif deleted file mode 100644 index e380d56cc1..0000000000 --- a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c75fc9f981c6826f1dd6f0b325dd8f2ee8d94449688a29d8822a3e08a233e1c5 -size 3371 diff --git a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF deleted file mode 100644 index efe3af05de..0000000000 --- a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:000dfce317f50263e56e25933d1ccaa128d2651c2ee266b311d239cf3f0d0c28 -size 3479 diff --git a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings deleted file mode 100644 index bc731e2711..0000000000 --- a/Assets/Engine/EngineAssets/Shading/ThermalVisionGradient02.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF b/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF deleted file mode 100644 index c659fd61a5..0000000000 --- a/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0e070eafa1ab2c80f927564c5af84192fbcdb962402fa72dd25052f041bcdab8 -size 198974 diff --git a/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings deleted file mode 100644 index 341ab759f8..0000000000 --- a/Assets/Engine/EngineAssets/Shading/WaterFoam.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=TerrainDiffuseHighPassed /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds b/Assets/Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds deleted file mode 100644 index 363c6b2d5b..0000000000 --- a/Assets/Engine/EngineAssets/Shading/cook_d_sampler_G16R16F.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:994eae624d2e3b892be75e8b7a52b1d8230bd2386f146146a4a558c647dafbb4 -size 262272 diff --git a/Assets/Engine/EngineAssets/Shading/defaultProbe_cm.tif b/Assets/Engine/EngineAssets/Shading/defaultProbe_cm.tif deleted file mode 100644 index fe0b3b293f..0000000000 --- a/Assets/Engine/EngineAssets/Shading/defaultProbe_cm.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:949b4333296e4b9737267e88c84d6d8246fcf3e9679fbb02c5b730fc7fabd925 -size 3148654 diff --git a/Assets/Engine/EngineAssets/Shading/environmentBRDF.tif b/Assets/Engine/EngineAssets/Shading/environmentBRDF.tif deleted file mode 100644 index d729f0015b..0000000000 --- a/Assets/Engine/EngineAssets/Shading/environmentBRDF.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6fe5555c0b647f041242a0efb6122ffb98e3fda7d47f48aed7b6a28bfe81157 -size 103538 diff --git a/Assets/Engine/EngineAssets/Shading/generic_reflections.tif b/Assets/Engine/EngineAssets/Shading/generic_reflections.tif deleted file mode 100644 index 3b477ea004..0000000000 --- a/Assets/Engine/EngineAssets/Shading/generic_reflections.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b29aec5b1be93af523df229cb3d73ca71a8ba6e9fa12676e46ab8a3111d94680 -size 787752 diff --git a/Assets/Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings b/Assets/Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings deleted file mode 100644 index 9cb8c9bd23..0000000000 --- a/Assets/Engine/EngineAssets/Shading/generic_reflections.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /ms=0 /preset=HDRCubemapRGBK_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif b/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif deleted file mode 100644 index 08b2e96902..0000000000 --- a/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7fd2e2965686fc63dd79d76ded948dd70fd429ab4367b1dffb73cde9440e4bd0 -size 66829 diff --git a/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings b/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/Shading/layer_effect_anim_function.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF b/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF deleted file mode 100644 index f4a3c49d56..0000000000 --- a/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f6e1305f40ef4f36c21ecb21173c651c9f32465650a680aceb5d9e18dae36906 -size 17315 diff --git a/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings deleted file mode 100644 index 53c03113a0..0000000000 --- a/Assets/Engine/EngineAssets/Shading/nanosuit_mask.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF b/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF deleted file mode 100644 index d5d1870807..0000000000 --- a/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6027e69770cf5644425cfc8ea412479b097d18e5ff9818085b6441217f06d128 -size 3371 diff --git a/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings deleted file mode 100644 index 9f0dd6e1fa..0000000000 --- a/Assets/Engine/EngineAssets/Shading/nanosuit_modes_grads.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Shading/vignetting.TIF b/Assets/Engine/EngineAssets/Shading/vignetting.TIF deleted file mode 100644 index f6927566c9..0000000000 --- a/Assets/Engine/EngineAssets/Shading/vignetting.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db9bd4b033da336c4247b07997e20fff1446345ff015e44b9955473008518ae6 -size 13169 diff --git a/Assets/Engine/EngineAssets/Shading/vignetting.TIF.exportsettings b/Assets/Engine/EngineAssets/Shading/vignetting.TIF.exportsettings deleted file mode 100644 index bc731e2711..0000000000 --- a/Assets/Engine/EngineAssets/Shading/vignetting.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Sky/optical.lut b/Assets/Engine/EngineAssets/Sky/optical.lut deleted file mode 100644 index 8d450f306c..0000000000 --- a/Assets/Engine/EngineAssets/Sky/optical.lut +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:480dc461f0601e645dc99dd13375e40eeec34ff826e374d017303a87f3f9d39c -size 65928 diff --git a/Assets/Engine/EngineAssets/Sky/stars.dat b/Assets/Engine/EngineAssets/Sky/stars.dat deleted file mode 100644 index 6974b2ebc2..0000000000 --- a/Assets/Engine/EngineAssets/Sky/stars.dat +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7a1aeecd89902230c98fbeea34ab0a41f2473d493a037572c5b97d7ffcf06ffb -size 106956 diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif deleted file mode 100644 index bd812efa25..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e9e1371fb108a057d246935b01374f2bb86ae0b126bae471176ce62284eacd7 -size 793918 diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings deleted file mode 100644 index 4295f71465..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=0 /preset=Uncompressed /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif deleted file mode 100644 index fc02b1f376..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1b56097f0df01da7ed49311462002f5e1a61b8496306c7ab3b12e17c27afb28a -size 793918 diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif deleted file mode 100644 index e7180a711a..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultNoUVs_spec.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ba52ff6d59f50b4b5dea6e266572c9e7feb92d5fd85bd0738e0d07d42d234bf7 -size 810996 diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids.mtl b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids.mtl deleted file mode 100644 index 3e2308aeee..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids.mtl +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif deleted file mode 100644 index 8b4be7cc8a..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab9a26b4a4b8b4df6bb715b918e1da5a9fcb9b8d55b5d59300f35a5aa1524604 -size 810472 diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif deleted file mode 100644 index d7f1be254d..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8b07c594df091bcba9cb73cbf836643adcd0ebad5a38458584f62a9b1b47e41e -size 793918 diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings deleted file mode 100644 index 8fbd75fa00..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_diff.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Uncompressed /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif b/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif deleted file mode 100644 index 6516098879..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/DefaultSolids_spec.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9d1efa9b4a4bf2c826777c1bf5f2a258b179eb6c1ac64f2abb0666f773d37039 -size 810444 diff --git a/Assets/Engine/EngineAssets/TextureMsg/NotFound.psd b/Assets/Engine/EngineAssets/TextureMsg/NotFound.psd deleted file mode 100644 index 32a7533e48..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/NotFound.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8f26330e140874de1643c3ded94b6b483ef48eede7f6f00ff7b394731a57f400 -size 182830 diff --git a/Assets/Engine/EngineAssets/TextureMsg/NotFound.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound.tif deleted file mode 100644 index 4879db8bde..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/NotFound.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b6ba0c05656f79dcdaa5b27a643a8617eb13b506bd19fbcc6b6d8212713045b8 -size 53670 diff --git a/Assets/Engine/EngineAssets/TextureMsg/NotFound_a.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_a.tif deleted file mode 100644 index 4a708f6d6f..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/NotFound_a.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4137a407abce4fc68ccc7e186257364177e1fdaf1fd17703a4740f54fc70de0e -size 53668 diff --git a/Assets/Engine/EngineAssets/TextureMsg/NotFound_cm.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_cm.tif deleted file mode 100644 index 1c32465d5a..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/NotFound_cm.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2749c2aa22d0864743b4b454938ec6d69bf812698e08f63bd490b407a437e9d0 -size 299472 diff --git a/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddn.tif deleted file mode 100644 index 7fcf759a80..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:57aabaa778f8f754c8d25daebeb5d27d25c4f1359668f713107af0f8e425d695 -size 53694 diff --git a/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddna.tif b/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddna.tif deleted file mode 100644 index 010c7b7cbc..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/NotFound_ddna.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5b4eb4033e2759c2738dedfec4a99eba316f29af31c9cf963232a907a678fd51 -size 70100 diff --git a/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif b/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif deleted file mode 100644 index c6b5bd1825..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8f7b61e52df58dec940df92a021c8fb33aad85bed8184403872620b1208568c7 -size 50467 diff --git a/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings deleted file mode 100644 index f1ffc00b42..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/PhysProxyTooBig.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=Diffuse_highQ /reduce=-1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError.psd b/Assets/Engine/EngineAssets/TextureMsg/RCError.psd deleted file mode 100644 index fedbe43dac..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError.psd +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bfe4844d90e5659245c22742c323332c19bb3ffff14f7d09c4efe902b4427f4d -size 181770 diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError.tif deleted file mode 100644 index d4dfcfd4c1..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c3db1ee5ca4dc4fb29c8072833eeac60ecec967d53a299b0e2e2933d4af946af -size 69030 diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif deleted file mode 100644 index 770d6fa012..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:36e916d3b5d4625fc78cf9c36ce5d12b8b676635baf07fef7c53ed154223e6de -size 53866 diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings deleted file mode 100644 index a9e8dd5937..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError_a.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=Bump2Normalmap_highQ /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError_cm.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_cm.tif deleted file mode 100644 index 38a78ab5e7..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError_cm.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b83bbaa7a94202b9314f1d4c4ace4a8d0e6cc176cac1a7a1d8e223cc285499f0 -size 299454 diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif deleted file mode 100644 index 253aad4f60..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7cdc6612d476d7013ac3209efdb15f33202b91b5ceb191285722501b1e9dce74 -size 53666 diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings deleted file mode 100644 index e73350d801..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif deleted file mode 100644 index 7742890eba..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5e13819b05cb55abad806d3a1ce200a801bf42f86c51e28fb78478944fc1f9af -size 70062 diff --git a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings deleted file mode 100644 index f37d4e3f12..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/RCError_ddna.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=NormalmapWithGlossInAlpha_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif deleted file mode 100644 index 3d645a95ba..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44c90e668c659fa48d21a104c8556b8e40af07bf977076cb104c8ccddec117a5 -size 53668 diff --git a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings deleted file mode 100644 index 3b06f73a73..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMe.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=Diffuse_lowQ /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif deleted file mode 100644 index f4d76062ca..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:227999171ec57ac074d2bceb949a75bb96d1c1276ca4d925f39799c2275b9d0b -size 299460 diff --git a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings deleted file mode 100644 index ba038977fa..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeCm.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=EnvironmentProbeHDR /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif deleted file mode 100644 index 10f24b0b5f..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bb0e9c6d1dc4851d06605876cc9abda2fb24323acea94190059ac78ddc4799ee -size 3586 diff --git a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings deleted file mode 100644 index 712c89ba18..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ReplaceMeRelease.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif b/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif deleted file mode 100644 index 84fba5a9a4..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8b00659e3d718cab216073d780819a79294b3e13376b30a332ba188f386e2be -size 50616 diff --git a/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings deleted file mode 100644 index 3b06f73a73..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ShaderCompiling.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=Diffuse_lowQ /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif b/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif deleted file mode 100644 index 991a474820..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d5f77281d5cd2819011171f6b1b1e22357f1cfe1c44678237b103b0bab5b982 -size 50616 diff --git a/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings deleted file mode 100644 index 3b06f73a73..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/ShaderError.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=Diffuse_lowQ /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling.tif deleted file mode 100644 index 4510b103e6..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:93028743fba595e586eff6ef960cdd7bf928329930f05e1d2d4717e697e0c8f9 -size 53670 diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif deleted file mode 100644 index a40c2c71b6..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c24db9d91faedad981ab373f1ec8f9737310f56b69a450b04b20560a40eb4915 -size 53862 diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings deleted file mode 100644 index f8126cdc0c..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_a.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Opacity /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif deleted file mode 100644 index 820b6e1c0d..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_cm.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b59034f263dc988ffd904cc4bb8e43192c8ee07cd17f109e4f7afe8589ae371a -size 299446 diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif deleted file mode 100644 index fcd06dbe9b..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9e1c5aee7fb4f600c112b15e4abce667be8acd0f24c2251e0a6b52d82c79c00d -size 53676 diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings deleted file mode 100644 index e73350d801..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif deleted file mode 100644 index 7dff871219..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:11c35a276c494a289734bcd98e8dc08d2a141827b574349c64eadc0e577b5353 -size 70072 diff --git a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings b/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings deleted file mode 100644 index f37d4e3f12..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/TextureCompiling_ddna.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=NormalmapWithGlossInAlpha_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Black.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Black.tif deleted file mode 100644 index d28af6e982..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Black.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:22c0c29e3f3e35c8933b0759eb527fee366634f624971c79075f4b16fd91419c -size 3538 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Blue.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Blue.tif deleted file mode 100644 index fb7d4bd8e7..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Blue.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b550cc5e03a79150b03a65c0d151e2760f941af3acd24ef5128f80bba3f98ff5 -size 3536 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Cyan.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Cyan.tif deleted file mode 100644 index db2c504fd9..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Cyan.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:597ca43034cf330e1ebac3eeb5a4131e6844378c73ed541864280ce15a721dc2 -size 3538 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Green.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Green.tif deleted file mode 100644 index 75c3fb7a00..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Green.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:cb312fc852bfa7cb70817d6b21fbd82c3e8a65b4afed4b39613a3b4d3e7222c5 -size 3536 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Magenta.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Magenta.tif deleted file mode 100644 index 13497a0fc7..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Magenta.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a54d9825737381e9bc091c58457c7d130b0d93e23e856d03c3f8f7fa132da639 -size 3536 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Orange.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Orange.tif deleted file mode 100644 index 2996fa693a..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Orange.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:06954a7449a60d6b0671634ae8ae8886c993d040ec26df4bef4967dcd3d3d9b4 -size 3540 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Purple.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Purple.tif deleted file mode 100644 index ce71982b5c..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Purple.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5ca7dbd42dc1d68a6c3d45f5cc79bdf7cd67678b0d999ad40ac2f61a31b37bbc -size 3538 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Red.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Red.tif deleted file mode 100644 index 36d743d698..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Red.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:443d42f6d4b5fe288a1ea05c6c3e455ec05c510a2b29fae1a5b7cb0e4645aa8f -size 3536 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_White.tif b/Assets/Engine/EngineAssets/TextureMsg/color_White.tif deleted file mode 100644 index 7722aa77c6..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_White.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1465b842db8dfad5838068b6a993dace78aeb740a458bfdd8a2e82d408d16d40 -size 3538 diff --git a/Assets/Engine/EngineAssets/TextureMsg/color_Yellow.tif b/Assets/Engine/EngineAssets/TextureMsg/color_Yellow.tif deleted file mode 100644 index c35aebc273..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/color_Yellow.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8e6a94114b07c23157298553c808610ecca867c3bd3f4db8f8c9a920e7463309 -size 3538 diff --git a/Assets/Engine/EngineAssets/TextureMsg/mipmapdebug.tif b/Assets/Engine/EngineAssets/TextureMsg/mipmapdebug.tif deleted file mode 100644 index 1b4477b9b2..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/mipmapdebug.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:79ce630d5559f9b28ded476de84583311f439db69b55d3fa5b175ba78a6abb18 -size 3546 diff --git a/Assets/Engine/EngineAssets/TextureMsg/orange_for_designer.tif b/Assets/Engine/EngineAssets/TextureMsg/orange_for_designer.tif deleted file mode 100644 index 5f2b8e6ea4..0000000000 --- a/Assets/Engine/EngineAssets/TextureMsg/orange_for_designer.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:75d21a62e73a5515ce264f8788d2d307924ccc873db90cca78b3925dce702583 -size 3538 diff --git a/Assets/Engine/EngineAssets/Textures/BlackAlpha.tif b/Assets/Engine/EngineAssets/Textures/BlackAlpha.tif deleted file mode 100644 index 7e959f6d3b..0000000000 --- a/Assets/Engine/EngineAssets/Textures/BlackAlpha.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:423ca7cc5b4a2df64cd31781772fcf099485ec3ab44cd7353afd85fdebcdff70 -size 3538 diff --git a/Assets/Engine/EngineAssets/Textures/BlackCM.tif b/Assets/Engine/EngineAssets/Textures/BlackCM.tif deleted file mode 100644 index 33d891bc08..0000000000 --- a/Assets/Engine/EngineAssets/Textures/BlackCM.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:db1535dfa207940127002f3bfefbb08509bc1803b179197fdff43bf9d01657df -size 1168 diff --git a/Assets/Engine/EngineAssets/Textures/BlackCM.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/BlackCM.tif.exportsettings deleted file mode 100644 index f7cc2642d2..0000000000 --- a/Assets/Engine/EngineAssets/Textures/BlackCM.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=HDRCubemapRGBK_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif b/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif deleted file mode 100644 index 01e65389c3..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a268774eb6d4d4590960c28edbf2a35d3fb7a73caab38d9ad15812c3df1c0c02 -size 4529 diff --git a/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings deleted file mode 100644 index c87bba7f00..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Cursor_Green.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=0 /preset=Diffuse_highQ /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif b/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif deleted file mode 100644 index 87bc05818f..0000000000 --- a/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a993ca7b260014be203dfbcbe6064ea8ec03a6ec66b8f4afd220867f6f8e18b0 -size 17206 diff --git a/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings deleted file mode 100644 index 17b79cd4e8..0000000000 --- a/Assets/Engine/EngineAssets/Textures/FogVolShadowJitter.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage_NoSrgb /reduce=-1 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise3.dds b/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise3.dds deleted file mode 100644 index 037dbce2f8..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise3.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4fd2bf67390d06f52597c54eabead09dedd50c4484c818b68f27aaa7e3c34ba4 -size 21972 diff --git a/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise4.tif b/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise4.tif deleted file mode 100644 index 3a9a28c11a..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Frozen/frost_noise4.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:45a60cfdb575835df036c69060bb4b29361d3966bd673d97efcc704fc4cb6c07 -size 1056136 diff --git a/Assets/Engine/EngineAssets/Textures/Frozen/snow_spatter.tif b/Assets/Engine/EngineAssets/Textures/Frozen/snow_spatter.tif deleted file mode 100644 index eab7d12646..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Frozen/snow_spatter.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7b5e13697bd4ea81f14f9b081c45f21915d1708aa0016c3f1831f9099f2d81eb -size 1056152 diff --git a/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif b/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif deleted file mode 100644 index 299ec84640..0000000000 --- a/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1efa5c1e51858933ac5a72e78f37488da1a9cb1d80b53ff5fa7c496b55d678cc -size 431 diff --git a/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings deleted file mode 100644 index 80d11a15b9..0000000000 --- a/Assets/Engine/EngineAssets/Textures/GreyAlpha.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=MergedDetailMap /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/Palette/cloak_interlation.dds b/Assets/Engine/EngineAssets/Textures/Palette/cloak_interlation.dds deleted file mode 100644 index c155112b57..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Palette/cloak_interlation.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e5bd1ea5a3b122d459d77d74a78cf375680c2756c9b291adc9f2b5d30681462 -size 1152 diff --git a/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif b/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif deleted file mode 100644 index bd74559b54..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:99703d2e8dc577ec1591f88d55a3ebf4e65194512dfa236cae7b69ea33f585a9 -size 3473 diff --git a/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings deleted file mode 100644 index bc731e2711..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Palette/cloak_palette.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/Palette/cloak_sparks.dds b/Assets/Engine/EngineAssets/Textures/Palette/cloak_sparks.dds deleted file mode 100644 index cfd7222f74..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Palette/cloak_sparks.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9f51c0778122da00197d9395bee100ce911a6565734fccdae693ca5f19a9c230 -size 1152 diff --git a/Assets/Engine/EngineAssets/Textures/Palette/cloak_transition.dds b/Assets/Engine/EngineAssets/Textures/Palette/cloak_transition.dds deleted file mode 100644 index 3b92b87e56..0000000000 --- a/Assets/Engine/EngineAssets/Textures/Palette/cloak_transition.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:790a11459b577d50f00c0a5fc6cffaf275142bce57d297d9fa02fa95ecaa0263 -size 2176 diff --git a/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif b/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif deleted file mode 100644 index a18bbefdbd..0000000000 --- a/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60a366c2b9499a085df672a5c227f8892de3f628bd92f0317b514a548cd71d14 -size 2348 diff --git a/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings deleted file mode 100644 index 69cc248bb2..0000000000 --- a/Assets/Engine/EngineAssets/Textures/TexelsPerMeterGrad.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /mipmaps=0 /preset=Uncompressed \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif b/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif deleted file mode 100644 index 45bbb8142e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7387bff8d94078be705ae422ef158a11f1c153677981142b49d4862a8e288c5f -size 17206 diff --git a/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings deleted file mode 100644 index 17b79cd4e8..0000000000 --- a/Assets/Engine/EngineAssets/Textures/VolumeRaster.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage_NoSrgb /reduce=-1 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif b/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif deleted file mode 100644 index 0c52b4d0e5..0000000000 --- a/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d962e98843482e3eae63f4ad6b7cf828712dd7c5d234c9281a576840a239d5fb -size 1052998 diff --git a/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings deleted file mode 100644 index 2d83032435..0000000000 --- a/Assets/Engine/EngineAssets/Textures/alienhud_distortionimage.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=SF_Image /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif b/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif deleted file mode 100644 index 13ee608513..0000000000 --- a/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b1dddb54cf1a5be262e2bb842dd97696be0119fcff42b3cdb46a12117445110d -size 198956 diff --git a/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings deleted file mode 100644 index 2d83032435..0000000000 --- a/Assets/Engine/EngineAssets/Textures/alienhud_noise1.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=SF_Image /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/black.tif b/Assets/Engine/EngineAssets/Textures/black.tif deleted file mode 100644 index 362a8033ac..0000000000 --- a/Assets/Engine/EngineAssets/Textures/black.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:94f90a6cf57f680eaaac836e35a0b7e3dd92bbf7e21dcad689ba34b64f431574 -size 310 diff --git a/Assets/Engine/EngineAssets/Textures/black.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/black.tif.exportsettings deleted file mode 100644 index 0653bb85eb..0000000000 --- a/Assets/Engine/EngineAssets/Textures/black.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/caustics_sampler.dds b/Assets/Engine/EngineAssets/Textures/caustics_sampler.dds deleted file mode 100644 index a02713c3ab..0000000000 --- a/Assets/Engine/EngineAssets/Textures/caustics_sampler.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:09ef87c3b5538c599d18312d9d93133ae1c80b20e9069b9db26c71333a5a1894 -size 65664 diff --git a/Assets/Engine/EngineAssets/Textures/color.tif b/Assets/Engine/EngineAssets/Textures/color.tif deleted file mode 100644 index ec9993147c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/color.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fa4c2cc16af7e442d9d828087a56e295d071c41939bd3846bc0dc92520b0b7df -size 790872 diff --git a/Assets/Engine/EngineAssets/Textures/default_cch.tif b/Assets/Engine/EngineAssets/Textures/default_cch.tif deleted file mode 100644 index 28a9a2eb69..0000000000 --- a/Assets/Engine/EngineAssets/Textures/default_cch.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4d9854402feb18ed483c16c70241f52e680e8c723a0b1950107eef0e9bf29080 -size 17472 diff --git a/Assets/Engine/EngineAssets/Textures/default_cch.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/default_cch.tif.exportsettings deleted file mode 100644 index 5b43521555..0000000000 --- a/Assets/Engine/EngineAssets/Textures/default_cch.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ColorChart \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/defaults/16_12.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_12.tif deleted file mode 100644 index 96994f25ea..0000000000 --- a/Assets/Engine/EngineAssets/Textures/defaults/16_12.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4c181af84676aee6732bfd7a3171e6cc0989e826df3a0175b93149be0128ad09 -size 13126 diff --git a/Assets/Engine/EngineAssets/Textures/defaults/16_34.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_34.tif deleted file mode 100644 index e4b4591a23..0000000000 --- a/Assets/Engine/EngineAssets/Textures/defaults/16_34.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f83408f5be5e3c0b71f749338738884ffba4da1934fa59aaf3bac14a7f99d60d -size 13126 diff --git a/Assets/Engine/EngineAssets/Textures/defaults/16_5.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_5.tif deleted file mode 100644 index 628bf229ef..0000000000 --- a/Assets/Engine/EngineAssets/Textures/defaults/16_5.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ff88186273d111ee3970626106550fffee3724317ff593c5ae772d198251b72 -size 13126 diff --git a/Assets/Engine/EngineAssets/Textures/defaults/16_grey.tif b/Assets/Engine/EngineAssets/Textures/defaults/16_grey.tif deleted file mode 100644 index 5dd7c1d7df..0000000000 --- a/Assets/Engine/EngineAssets/Textures/defaults/16_grey.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ff67e4b0bcd86d52555c1758d0b3f0b5735efa20c9dda29039c13adebdb43e4b -size 13124 diff --git a/Assets/Engine/EngineAssets/Textures/defaults/spot_default.tif b/Assets/Engine/EngineAssets/Textures/defaults/spot_default.tif deleted file mode 100644 index 2e8bd1e02b..0000000000 --- a/Assets/Engine/EngineAssets/Textures/defaults/spot_default.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4722bd7c54465e26a5cd02a81a0bbf1a29723df120999597ecebd90e2dcc62b7 -size 794016 diff --git a/Assets/Engine/EngineAssets/Textures/detailDecalVariation.tif b/Assets/Engine/EngineAssets/Textures/detailDecalVariation.tif deleted file mode 100644 index 327eae043d..0000000000 --- a/Assets/Engine/EngineAssets/Textures/detailDecalVariation.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14270aa89ebece4066186f0e2c44e649ef186d393b744e11c16cee5ec86cad03 -size 267632 diff --git a/Assets/Engine/EngineAssets/Textures/dither_2.dds b/Assets/Engine/EngineAssets/Textures/dither_2.dds deleted file mode 100644 index 0729d5358e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/dither_2.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b73c9acf07a788406561f8bc4769da87f08a70db15c758f41155ed9ce3060dea -size 176 diff --git a/Assets/Engine/EngineAssets/Textures/dither_pattern_2d.dds b/Assets/Engine/EngineAssets/Textures/dither_pattern_2d.dds deleted file mode 100644 index 19215fb340..0000000000 --- a/Assets/Engine/EngineAssets/Textures/dither_pattern_2d.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bb308cbf964b143199b913fc3131c68606659f7710648b079ae702da95ecfb59 -size 176 diff --git a/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow001.tif deleted file mode 100644 index 52ec56faf5..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow001.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8c77ba9db464c6b31dbd708d45fa2fc2efaec9d707bd260c4751cd678dfe346c -size 793958 diff --git a/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow002.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow002.tif deleted file mode 100644 index 4168d56d7c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/Flare_Glow002.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:137939729f93182e8fd0dc8363e0bdcee796fc87273c10e93adb3947b65ebcf7 -size 793958 diff --git a/Assets/Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif deleted file mode 100644 index ac9e0273cb..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/Flare_Orbs001.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3c1d84cca5c354e21af51823920fe2823fba4a2fffa9fa41fced489b81019090 -size 793958 diff --git a/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif deleted file mode 100644 index ac5266a852..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot001.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8924ed3a3e55a182d4968c3f8e5f41888e05855f632b25f46d41a406dd0aa492 -size 793962 diff --git a/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif deleted file mode 100644 index 02344f56e1..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/Flare_SoftSpot002.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39ac7b3a670d78e4f7846bd98ae8e5abe5eaebc914d2d477b6f221b78523d87e -size 793962 diff --git a/Assets/Engine/EngineAssets/Textures/flares/Flare_Sun001.tif b/Assets/Engine/EngineAssets/Textures/flares/Flare_Sun001.tif deleted file mode 100644 index 6b8069bd7f..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/Flare_Sun001.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a398be45e9d505c6630951754e73cde1e122fa11347a613ea3f7fd1e46b8db8 -size 793956 diff --git a/Assets/Engine/EngineAssets/Textures/flares/flare01.tif b/Assets/Engine/EngineAssets/Textures/flares/flare01.tif deleted file mode 100644 index 8f872817c6..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/flare01.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:83f6c11eb3297e6b2293947da0b23cb847b27a030e22763de578f34ab7a3313a -size 794050 diff --git a/Assets/Engine/EngineAssets/Textures/flares/flare02.tif b/Assets/Engine/EngineAssets/Textures/flares/flare02.tif deleted file mode 100644 index 03d84d772a..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/flare02.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:631da85e4104df95ac439cde3104f35337be5454e63e20648f93c862a1e70c08 -size 794050 diff --git a/Assets/Engine/EngineAssets/Textures/flares/ghost_grey.tif b/Assets/Engine/EngineAssets/Textures/flares/ghost_grey.tif deleted file mode 100644 index d4bf1b2293..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/ghost_grey.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a8627c0f73a249364dae7354d4e1dfa6c0f5c95335d5261153aa9b1514939c2c -size 790877 diff --git a/Assets/Engine/EngineAssets/Textures/flares/ghost_multicolor.tif b/Assets/Engine/EngineAssets/Textures/flares/ghost_multicolor.tif deleted file mode 100644 index df78cffbdb..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/ghost_multicolor.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2f640d0b47bee027916a1b521caa66df374fe9f775e52f42bb4b4d9d8ab10994 -size 790869 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif deleted file mode 100644 index 7577b29834..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fec00c80ab81af76176ee5073f6371e26ed0d571dd90dce7a179026125a87aa0 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/ghost.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif deleted file mode 100644 index eac524272c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a050c8cd0d529e6c8de4eac5208696bd71d9fc68c8339427ea5f5f13f9c88d54 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/glow.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif deleted file mode 100644 index 552e18c617..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:49a8aa0008e248669c7972717e3eec67ac29632d903d1dcced34c4e236fafcf6 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/iris_shafts.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif deleted file mode 100644 index 2818e6c8dd..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:76b338b371b44807169eaaf83f7cfa3fa901ac0898982e2adb2438f12560b669 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/multi_ghost.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif deleted file mode 100644 index 2059681db0..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d0841184dd71588598ebbe85ec798141f13916414cca14d221128a24c3da4ae5 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/orbs.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif deleted file mode 100644 index 46aee37873..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:501707ed6d406e1092a8a2785b5aa50c36b93cdfa6c75d7f525cfe377fa63554 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/ring.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif deleted file mode 100644 index 5dc4467499..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:15c2a87908377086f513ca4234a1987fd70b29309879ea4006d4858ae9717de9 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/test_demo.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif b/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif deleted file mode 100644 index 7da59996a6..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6a6374b5b1b90ce2bae2f3f47a7f40323baf64a39a01d02efc90669519138748 -size 27908 diff --git a/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings deleted file mode 100644 index 11f6c88e68..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/icons/vol_shafts.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/flares/iris_shaft.tif b/Assets/Engine/EngineAssets/Textures/flares/iris_shaft.tif deleted file mode 100644 index 52a3fdd86f..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/iris_shaft.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c2814503c64308e8beb1fbe302b205450f150a6ba4f798793fed97c82d615aec -size 794062 diff --git a/Assets/Engine/EngineAssets/Textures/flares/lens_blurshape.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_blurshape.tif deleted file mode 100644 index eb2afde8b9..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/lens_blurshape.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c37d3db5176041d8702462dba6c1e1c4bff1aecd99f18a8d2b4c4f053601ec0f -size 794058 diff --git a/Assets/Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif deleted file mode 100644 index 090991ec7a..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/lens_dirtyglass.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:265ae231486dc6d5d61aa2416b0010ea743722f7238660faeed9edacd46e8a6b -size 6303186 diff --git a/Assets/Engine/EngineAssets/Textures/flares/lens_noise01.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_noise01.tif deleted file mode 100644 index 481fc4d483..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/lens_noise01.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bec356e60aa7ca108bd0d03eefde867eafa8b7c1b20d3797d0cc8cbdeb06648d -size 794058 diff --git a/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops.tif deleted file mode 100644 index a81a1e6356..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:388a880d5d678578c4b7813423a1c468232fdec811b2c04122a50f2fe3b490e7 -size 794058 diff --git a/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops02.tif b/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops02.tif deleted file mode 100644 index a5bae77b8b..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/lens_raindrops02.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3f9991d8c0a8e9d4b8d067cdd2bca01c1dc0d9460c92d038ff7c823930b4f2df -size 794060 diff --git a/Assets/Engine/EngineAssets/Textures/flares/orb_01.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_01.tif deleted file mode 100644 index 0de0036a23..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/orb_01.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9fa816ae4ee1a729e137fe568b3f4556d3e470110d71e43717ad43c80159ce22 -size 202178 diff --git a/Assets/Engine/EngineAssets/Textures/flares/orb_cell01.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell01.tif deleted file mode 100644 index b91c873815..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/orb_cell01.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7e1f49250a2a07597550717764d8e322c26de96ad1bec56d167a7345aecce595 -size 202184 diff --git a/Assets/Engine/EngineAssets/Textures/flares/orb_cell02.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell02.tif deleted file mode 100644 index ef1111742d..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/orb_cell02.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a27b92aa9639a6aa940e08d26dfed1a4e7d0e1fd8f2619d4809dc656f2677e8a -size 202184 diff --git a/Assets/Engine/EngineAssets/Textures/flares/orb_cell03.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell03.tif deleted file mode 100644 index 07f5293493..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/orb_cell03.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e8ce1d69a2f3bb7d5da1d7dfe87a6a5712c0890645eaa6f24caa54665f3b4efc -size 798173 diff --git a/Assets/Engine/EngineAssets/Textures/flares/orb_cell04.tif b/Assets/Engine/EngineAssets/Textures/flares/orb_cell04.tif deleted file mode 100644 index 1c854fab2f..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/orb_cell04.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b34e12872f9a1d5a0b70cd1dfb3c6e20b0b14d68896a642ce1a4c42803f76b90 -size 53702 diff --git a/Assets/Engine/EngineAssets/Textures/flares/spectrum_full.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_full.tif deleted file mode 100644 index 644f8f35e0..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/spectrum_full.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:61bf33e6e739832cbff12fe789756639ffc52f08d28db4d99ce47b4ae3de3a59 -size 794066 diff --git a/Assets/Engine/EngineAssets/Textures/flares/spectrum_half.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_half.tif deleted file mode 100644 index 81faf7487e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/spectrum_half.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6d769fadcd0d1b20cf44b105551ce5ae403376f8a168a2aca92d21db8cde8ee3 -size 794056 diff --git a/Assets/Engine/EngineAssets/Textures/flares/spectrum_quater.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_quater.tif deleted file mode 100644 index 396200d7a1..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/spectrum_quater.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a83f72076ae762808b7c3173b9beef754b58163883a470b5b68563f302b9581 -size 794060 diff --git a/Assets/Engine/EngineAssets/Textures/flares/spectrum_specs.tif b/Assets/Engine/EngineAssets/Textures/flares/spectrum_specs.tif deleted file mode 100644 index 7813ee37e1..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/spectrum_specs.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8eb26394629105cbe1595eb034094e4b8104ba833bc767e0382ec32d985a28ae -size 808996 diff --git a/Assets/Engine/EngineAssets/Textures/flares/streak01.tif b/Assets/Engine/EngineAssets/Textures/flares/streak01.tif deleted file mode 100644 index 43771db88d..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/streak01.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:32e1b029417e3a9caff71744a396ad4eb84f3fd6653fb8bb1b18528710016053 -size 794076 diff --git a/Assets/Engine/EngineAssets/Textures/flares/visor_scratch.tif b/Assets/Engine/EngineAssets/Textures/flares/visor_scratch.tif deleted file mode 100644 index dd578dbef9..0000000000 --- a/Assets/Engine/EngineAssets/Textures/flares/visor_scratch.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:14de7594947439df9bcc984028568f604784699ca3724d52333f9f4d0c0bdaec -size 6300034 diff --git a/Assets/Engine/EngineAssets/Textures/fresnel_sampler.dds b/Assets/Engine/EngineAssets/Textures/fresnel_sampler.dds deleted file mode 100644 index 48efb8e480..0000000000 --- a/Assets/Engine/EngineAssets/Textures/fresnel_sampler.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9066ff9efb84d409b43a0608334e5b90cc762b7c68361f663cf645d96a5e579d -size 87508 diff --git a/Assets/Engine/EngineAssets/Textures/fringe_map.dds b/Assets/Engine/EngineAssets/Textures/fringe_map.dds deleted file mode 100644 index 79a9a20091..0000000000 --- a/Assets/Engine/EngineAssets/Textures/fringe_map.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7910413d84f4e9749963ed3b0ad9a3acccddc4a29448e2a754412f5b58c49ad6 -size 896 diff --git a/Assets/Engine/EngineAssets/Textures/frost_refl2.tif b/Assets/Engine/EngineAssets/Textures/frost_refl2.tif deleted file mode 100644 index 49ac6e1f79..0000000000 --- a/Assets/Engine/EngineAssets/Textures/frost_refl2.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e0d0de8ebc89184b7c2263aac6b733ffccfe7409e5c1a52496749fc2bc558224 -size 198887 diff --git a/Assets/Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/Textures/frost_refl2.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds b/Assets/Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds deleted file mode 100644 index 03992c26e5..0000000000 --- a/Assets/Engine/EngineAssets/Textures/fuzzy_pow_sampler_merged.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:da9f41e52140a76be2231f96839df627fa4afcf583ae607eb24fc45ca770b6f7 -size 87508 diff --git a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif deleted file mode 100644 index ee25a17a54..0000000000 --- a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ad762bd8660396808ec8a9d3ef1831f0c1deddbbccac75884dda6f3f051f616e -size 25182583 diff --git a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings deleted file mode 100644 index 83bc16b18c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_highQ /reduce="pc:1" \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif deleted file mode 100644 index f37374b454..0000000000 --- a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:92c252b664982ecd184335eb946442ef615d0da245489f84a844834335924fa3 -size 25182588 diff --git a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings deleted file mode 100644 index 4a6fc54658..0000000000 --- a/Assets/Engine/EngineAssets/Textures/glass_decalatlas_diff.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ /reduce="pc:1" \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/grey.dds b/Assets/Engine/EngineAssets/Textures/grey.dds deleted file mode 100644 index f4f478dba2..0000000000 --- a/Assets/Engine/EngineAssets/Textures/grey.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2eb5576242217caaf4d8332bdde2a9716b238c57d8c0965eced06f9db1bae55f -size 192 diff --git a/Assets/Engine/EngineAssets/Textures/hex.tif b/Assets/Engine/EngineAssets/Textures/hex.tif deleted file mode 100644 index 8a4ab6bf86..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9961f8812d463296d812a53ca6f01e6240f9a3f7d8d1f6083ba7d62e2662b547 -size 50543 diff --git a/Assets/Engine/EngineAssets/Textures/hex.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex.tif.exportsettings deleted file mode 100644 index 199cea8ed3..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=Diffuse_lowQ /reduce=-1 /ser=1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hex_ddn.tif b/Assets/Engine/EngineAssets/Textures/hex_ddn.tif deleted file mode 100644 index bb7e66905f..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f8f5ed1388fa7cb4c7aa50551a15290b54b69bb92f7a958e4887f3b01a9aa5bb -size 50424 diff --git a/Assets/Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings deleted file mode 100644 index 9a63850ec9..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_lowQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hex_grad.tif b/Assets/Engine/EngineAssets/Textures/hex_grad.tif deleted file mode 100644 index aa6af0c386..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_grad.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4e081233f7f5ebdb51f8503d87e5140053be296291f32dd96a02c0f518f787b3 -size 17768 diff --git a/Assets/Engine/EngineAssets/Textures/hex_grad.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_grad.tif.exportsettings deleted file mode 100644 index 7ee86ca75e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_grad.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=Diffuse_highQ /reduce=-1 /ser=1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hex_line.tif b/Assets/Engine/EngineAssets/Textures/hex_line.tif deleted file mode 100644 index afacca679f..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_line.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e0e7205eea74d13546a22d61d245c62a93b312392bb51efb1e87b817f60479de -size 13040 diff --git a/Assets/Engine/EngineAssets/Textures/hex_line.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_line.tif.exportsettings deleted file mode 100644 index 712c89ba18..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_line.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hex_rand.tif b/Assets/Engine/EngineAssets/Textures/hex_rand.tif deleted file mode 100644 index 964e1b2937..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_rand.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:64fda4614ddb8ca6765c1ae6e53f50b1ec4521fdbcab817f173a6bb750fc0bd5 -size 50550 diff --git a/Assets/Engine/EngineAssets/Textures/hex_rand.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hex_rand.tif.exportsettings deleted file mode 100644 index 7ee86ca75e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hex_rand.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=Diffuse_highQ /reduce=-1 /ser=1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif deleted file mode 100644 index 7edcc8a777..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c604c8974e674df414d57c293690658a7f98775491e4e6f2c05adb374c1cd1f5 -size 17164 diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings deleted file mode 100644 index bc731e2711..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_areas.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif deleted file mode 100644 index b6f8514726..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:60d0cf3babee2d146964a6ff8be053d2189cba453d4979ca79da563ca464cdba -size 790805 diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings deleted file mode 100644 index e73350d801..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_blurmask_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif deleted file mode 100644 index 7b1f8dd841..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fdeadbe5f9e01934776eb9b1d5a75548044b65ef9b2d642f07d8917c23018593 -size 2347 diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings deleted file mode 100644 index bc731e2711..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_healthgradient.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif deleted file mode 100644 index df926cf637..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b967fcd2289d80903525b359b8d64d5c892192299380bae6e10dc502053953ef -size 8491 diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings deleted file mode 100644 index bc731e2711..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_lvlgradient.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Gradient /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif deleted file mode 100644 index 68e873b211..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:5d8dd60330e367cce032cea92fdc5b8a19756bbba8529372b484af27ffa6ae8a -size 17138 diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings deleted file mode 100644 index 712c89ba18..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_round.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif b/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif deleted file mode 100644 index d995578cdb..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c14b5f9d12681dc19932331fe54dfcc76e1ae477d6a5dba452207367df8c1202 -size 264453 diff --git a/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings deleted file mode 100644 index 712c89ba18..0000000000 --- a/Assets/Engine/EngineAssets/Textures/hiteffect_veinsblood.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/interference.dds b/Assets/Engine/EngineAssets/Textures/interference.dds deleted file mode 100644 index 5c26a187a0..0000000000 --- a/Assets/Engine/EngineAssets/Textures/interference.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de64a9dc421e6cecd6f2bca8c7f557be919681366089b949395eeb803ccf047a -size 12416 diff --git a/Assets/Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds b/Assets/Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds deleted file mode 100644 index 86b4b32659..0000000000 --- a/Assets/Engine/EngineAssets/Textures/jumpnoisehighfrequency_x27y19.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ee574cfd5356863428c8dae829c87709ca77050c9c9085b200dffa55f606067b -size 21972 diff --git a/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif b/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif deleted file mode 100644 index 5b0fc51b6e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07972bfac5649cf7840a6f5f552db9b21479a391d20b295ae7f2fc6dbb923faf -size 790849 diff --git a/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/Textures/moisturedroplets.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif b/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif deleted file mode 100644 index e67ecbd35c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d16c7932e9dc5bb8efbb2e1ef54a58b1cfe6ee8a23c7c4fe51e5151636e5f19 -size 8456 diff --git a/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings deleted file mode 100644 index 0653bb85eb..0000000000 --- a/Assets/Engine/EngineAssets/Textures/nightvis_grad.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/noise.tif b/Assets/Engine/EngineAssets/Textures/noise.tif deleted file mode 100644 index 2ad824cefa..0000000000 --- a/Assets/Engine/EngineAssets/Textures/noise.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e53ca51b5f5aacfa21226a6288b55a4154080fba17238a272b3d3573b448280f -size 20352 diff --git a/Assets/Engine/EngineAssets/Textures/noise3d.dds b/Assets/Engine/EngineAssets/Textures/noise3d.dds deleted file mode 100644 index 2753ef5b98..0000000000 --- a/Assets/Engine/EngineAssets/Textures/noise3d.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4e3fce3fcecd1bdac2a9d62e9cb5719a9f25c5b6fe001df509cba748f7f0cc83 -size 299722 diff --git a/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif b/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif deleted file mode 100644 index 9da18f6bf7..0000000000 --- a/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c39553c7cceda6a5444e27a84f856d93dc507dd8d9ad623586cc30455a822a37 -size 197114 diff --git a/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings deleted file mode 100644 index 98fc101e5c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/oceanwaves_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /dns=1 /preset=Normalmap_highQ /reduce=0 /ser=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/palletteInst.dds b/Assets/Engine/EngineAssets/Textures/palletteInst.dds deleted file mode 100644 index 406465c100..0000000000 --- a/Assets/Engine/EngineAssets/Textures/palletteInst.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9094bd4e1fa2103865adc9a638a334dc9219c5af42e140eea4974d237c91c80a -size 4224 diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif b/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif deleted file mode 100644 index 53f93082ee..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a0a2454422829c1d867d3e4deecfd4a38431db955b1f9abe60365aaf41c104a -size 198887 diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoise2d.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif b/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif deleted file mode 100644 index c1ee03cd2c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a12e89f12c3c07f544ea62d77b3a4d82a150d488bceb02a3ef6c06dfa9352d3a -size 199038 diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings deleted file mode 100644 index 38c8fd65a9..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoiseDerivatives.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=MergedDetailMap_HighQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif b/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif deleted file mode 100644 index 3f7a251cdc..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:fd95c4f0a57629a775c1b5c589136f3d572f1b18430a35599337139432b1692a -size 198919 diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings deleted file mode 100644 index 313e5f7937..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoiseNormal_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif deleted file mode 100644 index ebdb9ca7c9..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f86e52e64ce696d71d81a9d54e221660c7e12a756335c032310d62785bb52188 -size 198945 diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings deleted file mode 100644 index f7de8b3e1c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=SpecularLinear_highQ /reduce=-1 /ser=1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif deleted file mode 100644 index b8da5ce22a..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2c60abdef7206b096dce61064e2e275b34bdbdcbccd6e93c1bdd786f9474e287 -size 50465 diff --git a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings deleted file mode 100644 index f7de8b3e1c..0000000000 --- a/Assets/Engine/EngineAssets/Textures/perlinNoise_sum_small.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=SpecularLinear_highQ /reduce=-1 /ser=1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/pixeltex.dds b/Assets/Engine/EngineAssets/Textures/pixeltex.dds deleted file mode 100644 index df603b8aac..0000000000 --- a/Assets/Engine/EngineAssets/Textures/pixeltex.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:13878e66de29eef2b7edf25daa225551afafb5db2df6f54d1db2b2d66486cf72 -size 5588 diff --git a/Assets/Engine/EngineAssets/Textures/rotrandomcm.dds b/Assets/Engine/EngineAssets/Textures/rotrandomcm.dds deleted file mode 100644 index fe7a3f4a6e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/rotrandomcm.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:44e4dd06faa8b66883f360fd12dc615e4430b487e6249fea0cf76fb2f69734d2 -size 21972 diff --git a/Assets/Engine/EngineAssets/Textures/scratch.tif b/Assets/Engine/EngineAssets/Textures/scratch.tif deleted file mode 100644 index 9a718ac4e2..0000000000 --- a/Assets/Engine/EngineAssets/Textures/scratch.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ab9f1c094f9e7c8fc570c8853e0f35f17eeacc403d49130b2ef66f27e2a98e36 -size 790759 diff --git a/Assets/Engine/EngineAssets/Textures/scratch.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/scratch.tif.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/Textures/scratch.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif b/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif deleted file mode 100644 index cbe4308d2f..0000000000 --- a/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d47552ddf5692150e190f83e5879318e9f02d77e558eae0b437fcb72c9ee7025 -size 790795 diff --git a/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings deleted file mode 100644 index 313e5f7937..0000000000 --- a/Assets/Engine/EngineAssets/Textures/scratch_ddn.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/screen_noisy_bump.dds b/Assets/Engine/EngineAssets/Textures/screen_noisy_bump.dds deleted file mode 100644 index 4ce73a7534..0000000000 --- a/Assets/Engine/EngineAssets/Textures/screen_noisy_bump.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f46279db44ae90f067a696bb65f46240e1e7e2575986be0f9e106c8d558a6fb0 -size 196736 diff --git a/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF b/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF deleted file mode 100644 index 5d1c63d430..0000000000 --- a/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d762b6a42f549eb1292a9370fb9bcbcf7a2da1b94a78923f72cd3ee3820465b8 -size 790759 diff --git a/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings b/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings deleted file mode 100644 index 2410c3aa57..0000000000 --- a/Assets/Engine/EngineAssets/Textures/screenfrost_alpha.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF b/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF deleted file mode 100644 index b8e70bfdb5..0000000000 --- a/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1bc7e428d3a86f1aaa3ffc56acd0d161448efad229df6c045119f5d1f937ae5c -size 790761 diff --git a/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings b/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings deleted file mode 100644 index 313e5f7937..0000000000 --- a/Assets/Engine/EngineAssets/Textures/screenfrost_ddn.TIF.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Normalmap_highQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/snowflakes.tif b/Assets/Engine/EngineAssets/Textures/snowflakes.tif deleted file mode 100644 index 3aa735bd3e..0000000000 --- a/Assets/Engine/EngineAssets/Textures/snowflakes.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f33f071b6f2328de78ef587d49431ebdfe80196f6de67fa7de4020e2a6ba530c -size 264574 diff --git a/Assets/Engine/EngineAssets/Textures/snowflakes.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/snowflakes.tif.exportsettings deleted file mode 100644 index 48e278914d..0000000000 --- a/Assets/Engine/EngineAssets/Textures/snowflakes.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /preset=MergedDetailMap_HighQ /reduce=-1 /ser=1 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/startscreen.tif b/Assets/Engine/EngineAssets/Textures/startscreen.tif deleted file mode 100644 index 863a543967..0000000000 --- a/Assets/Engine/EngineAssets/Textures/startscreen.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:02be3914c92506ba4daad73c968fd760eb02cc9f2d956b7869a62fba6fd20281 -size 6298508 diff --git a/Assets/Engine/EngineAssets/Textures/startscreen.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/startscreen.tif.exportsettings deleted file mode 100644 index 6ec5b5fdc0..0000000000 --- a/Assets/Engine/EngineAssets/Textures/startscreen.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=ReferenceImage_Linear \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/user_tex1.tif b/Assets/Engine/EngineAssets/Textures/user_tex1.tif deleted file mode 100644 index d995578cdb..0000000000 --- a/Assets/Engine/EngineAssets/Textures/user_tex1.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c14b5f9d12681dc19932331fe54dfcc76e1ae477d6a5dba452207367df8c1202 -size 264453 diff --git a/Assets/Engine/EngineAssets/Textures/user_tex2.tif b/Assets/Engine/EngineAssets/Textures/user_tex2.tif deleted file mode 100644 index 53f93082ee..0000000000 --- a/Assets/Engine/EngineAssets/Textures/user_tex2.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a0a2454422829c1d867d3e4deecfd4a38431db955b1f9abe60365aaf41c104a -size 198887 diff --git a/Assets/Engine/EngineAssets/Textures/vector_noise.dds b/Assets/Engine/EngineAssets/Textures/vector_noise.dds deleted file mode 100644 index 037dbce2f8..0000000000 --- a/Assets/Engine/EngineAssets/Textures/vector_noise.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4fd2bf67390d06f52597c54eabead09dedd50c4484c818b68f27aaa7e3c34ba4 -size 21972 diff --git a/Assets/Engine/EngineAssets/Textures/water_droplets.dds b/Assets/Engine/EngineAssets/Textures/water_droplets.dds deleted file mode 100644 index 5b2df9cb03..0000000000 --- a/Assets/Engine/EngineAssets/Textures/water_droplets.dds +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8742fe47027898df8cfb3cfeb48cd4259fdd6d5a3bf7c65ece8aad1281d50c32 -size 349652 diff --git a/Assets/Engine/EngineAssets/Textures/water_gloss.tif b/Assets/Engine/EngineAssets/Textures/water_gloss.tif deleted file mode 100644 index b0096fcba8..0000000000 --- a/Assets/Engine/EngineAssets/Textures/water_gloss.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:50d5ad54b7dbcd8adc0bb34e54fca04b6de2173a452a6b199fc9c9a1df72d112 -size 790869 diff --git a/Assets/Engine/EngineAssets/Textures/water_gloss.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/water_gloss.tif.exportsettings deleted file mode 100644 index 53c03113a0..0000000000 --- a/Assets/Engine/EngineAssets/Textures/water_gloss.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_highQ /reduce=0 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/white.tif b/Assets/Engine/EngineAssets/Textures/white.tif deleted file mode 100644 index 349b265d38..0000000000 --- a/Assets/Engine/EngineAssets/Textures/white.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:2265f065d74da5357a5e33109944d586c861d8fb5aa560eeb2a77e0332edc4a6 -size 328 diff --git a/Assets/Engine/EngineAssets/Textures/white.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/white.tif.exportsettings deleted file mode 100644 index 0653bb85eb..0000000000 --- a/Assets/Engine/EngineAssets/Textures/white.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /preset=Diffuse_lowQ \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/white_cm.tif b/Assets/Engine/EngineAssets/Textures/white_cm.tif deleted file mode 100644 index 05ae4b6861..0000000000 --- a/Assets/Engine/EngineAssets/Textures/white_cm.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:49e9c083ea2c8c8b2a5d58b83f03ef10b1eb3583f7fb50d8ef7391991218a857 -size 679 diff --git a/Assets/Engine/EngineAssets/Textures/white_cm.tif.exportsettings b/Assets/Engine/EngineAssets/Textures/white_cm.tif.exportsettings deleted file mode 100644 index 4e668d38f8..0000000000 --- a/Assets/Engine/EngineAssets/Textures/white_cm.tif.exportsettings +++ /dev/null @@ -1 +0,0 @@ -/autooptimizefile=0 /mipmaps=0 /ms=0 /preset=HDRCubemapRGBK_highQ /reduce=4 \ No newline at end of file diff --git a/Assets/Engine/EngineAssets/Textures/white_ddn.tif b/Assets/Engine/EngineAssets/Textures/white_ddn.tif deleted file mode 100644 index dc70af1eda..0000000000 --- a/Assets/Engine/EngineAssets/Textures/white_ddn.tif +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:042240663b9c5df981e3f93431226a9561843621a52dbf064fad439441e3a5a6 -size 512 diff --git a/Assets/Engine/EngineAssets/defaulttextures.xml b/Assets/Engine/EngineAssets/defaulttextures.xml deleted file mode 100644 index e4c73f7f2a..0000000000 --- a/Assets/Engine/EngineAssets/defaulttextures.xml +++ /dev/null @@ -1,79 +0,0 @@ - - - - Usage="NoTextureCM", FileName="EngineAssets/TextureMsg/ReplaceMeCM.dds", Flags="FT_DONT_RELEASE | FT_DONT_STREAM" - - - - - - - - EngineAssets/Textures/caustics_sampler.dds - EngineAssets/Textures/default_cch.dds - EngineAssets/Textures/detailDecalVariation.dds - EngineAssets/Textures/dither_2.dds - EngineAssets/Textures/dither_pattern_2d.dds - EngineAssets/Textures/fresnel_sampler.dds - EngineAssets/Textures/fringe_map.dds - EngineAssets/Textures/frost_refl2.dds - EngineAssets/Textures/fuzzy_pow_sampler_merged.dds - EngineAssets/Textures/glass_decalatlas_ddn.dds - EngineAssets/Textures/glass_decalatlas_diff.dds - EngineAssets/Textures/interference.dds - EngineAssets/Textures/noise.dds - EngineAssets/Textures/noise3d.dds - EngineAssets/Textures/oceanwaves_ddn.dds - EngineAssets/Textures/palette/cloak_interlation.dds - EngineAssets/Textures/palette/cloak_palette.dds - EngineAssets/Textures/palette/cloak_sparks.dds - EngineAssets/Textures/palette/cloak_transition.dds - EngineAssets/Textures/perlinNoise2D.dds - EngineAssets/Textures/perlinNoiseNormal_ddn.dds - EngineAssets/Textures/rotrandom.dds - EngineAssets/Textures/rotrandomCM.dds - EngineAssets/Textures/scratch.dds - EngineAssets/Textures/screen_noisy_bump.dds - EngineAssets/Textures/screenfrost_alpha.dds - EngineAssets/Textures/screenfrost_ddn.dds - EngineAssets/Textures/water_droplets.dds - EngineAssets/Textures/water_gloss.dds - EngineAssets/Textures/perlinNoise_sum.dds - EngineAssets/ScreenSpace/NormalsFitting.dds - EngineAssets/ScreenSpace/PointsOnSphere4x4.dds - EngineAssets/Shading/layer_effect_anim_function.dds - EngineAssets/Shading/WaterFoam.dds - EngineAssets/Shading/generic_reflections.dds - EngineAssets/Shading/ThermalVisionGradient.dds - EngineAssets/Shading/environmentBRDF.dds - EngineAssets/Shading/defaultprobe_cm.dds - EngineAssets/Shading/defaultprobe_cm_diff.dds - EngineAssets/TextureMsg/ShaderCompiling.dds - EngineAssets/TextureMsg/ShaderError.dds - EngineAssets/Textures/JumpNoiseHighFrequency_x27y19.dds - EngineAssets/Textures/TexelsPerMeterGrad.dds - EngineAssets/Textures/vector_noise.dds - EngineAssets/Textures/alienhud_distortionimage.dds - EngineAssets/Textures/alienhud_noise1.dds - EngineAssets/Icons/LevelShaderCacheMiss.dds - EngineAssets/ScreenSpace/grain_bayer_mul.dds - EngineAssets/Textures/pixeltex.dds - EngineAssets/Textures/white_cm.dds - EngineAssets/Textures/hex_ddn.dds - engineassets/screenspace/bokeh_pentagon.dds - engineassets/screenspace/areatex.dds - engineassets/screenspace/searchtex.dds - engineassets/textures/nightvis_grad.dds - engineassets/shading/sonarvisiongradient.dds - engineassets/shading/thermalvisiongradient.dds - engineassets/textures/hex.dds - engineassets/textures/hex_rand.dds - engineassets/textures/hex_grad.dds - engineassets/textures/perlinnoise_sum_small.dds - engineassets/textures/fogvolshadowjitter.dds - - - - - From 692c993bdb900e756cc382a37b945aa943cc5932 Mon Sep 17 00:00:00 2001 From: mgwynn Date: Fri, 25 Jun 2021 15:34:32 -0400 Subject: [PATCH 43/56] Incorporating review comments. Adding nativeUI setting for launchers. --- .../AzCore/AzCore/NativeUI/NativeUIRequests.h | 8 ++++---- .../AzCore/NativeUI/NativeUISystemComponent.cpp | 6 +++--- .../NativeUI/NativeUISystemComponent_Windows.cpp | 2 +- Code/LauncherUnified/Launcher.cpp | 13 +++++++++++++ Code/Sandbox/Editor/CryEdit.cpp | 2 +- 5 files changed, 22 insertions(+), 9 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h b/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h index c94ff0456c..e8cfb8d5fe 100644 --- a/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h +++ b/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h @@ -27,8 +27,8 @@ namespace AZ::NativeUI enum class Mode { - CONSOLE = 0, - UI, + DISABLED = 0, + ENABLED, }; class NativeUIRequests @@ -77,8 +77,8 @@ namespace AZ::NativeUI m_mode = mode; } - protected: - NativeUI::Mode m_mode = NativeUI::Mode::CONSOLE; + protected: + NativeUI::Mode m_mode = NativeUI::Mode::DISABLED; }; class NativeUIEBusTraits diff --git a/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp b/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp index 86808cc32a..80559b1270 100644 --- a/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp +++ b/Code/Framework/AzCore/AzCore/NativeUI/NativeUISystemComponent.cpp @@ -29,7 +29,7 @@ namespace AZ::NativeUI AssertAction NativeUISystem::DisplayAssertDialog(const AZStd::string& message) const { - if (m_mode == NativeUI::Mode::CONSOLE) + if (m_mode == NativeUI::Mode::DISABLED) { return AssertAction::NONE; } @@ -56,7 +56,7 @@ namespace AZ::NativeUI AZStd::string NativeUISystem::DisplayOkDialog(const AZStd::string& title, const AZStd::string& message, bool showCancel) const { - if (m_mode == NativeUI::Mode::CONSOLE) + if (m_mode == NativeUI::Mode::DISABLED) { return {}; } @@ -73,7 +73,7 @@ namespace AZ::NativeUI AZStd::string NativeUISystem::DisplayYesNoDialog(const AZStd::string& title, const AZStd::string& message, bool showCancel) const { - if (m_mode == NativeUI::Mode::CONSOLE) + if (m_mode == NativeUI::Mode::DISABLED) { return {}; } diff --git a/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp b/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp index eaf651d2dd..33ca9cdaf0 100644 --- a/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp +++ b/Code/Framework/AzCore/Platform/Windows/AzCore/NativeUI/NativeUISystemComponent_Windows.cpp @@ -247,7 +247,7 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { - if (m_mode == NativeUI::Mode::CONSOLE) + if (m_mode == NativeUI::Mode::DISABLED) { return {}; } diff --git a/Code/LauncherUnified/Launcher.cpp b/Code/LauncherUnified/Launcher.cpp index c73cdd1981..6bd5dc625c 100644 --- a/Code/LauncherUnified/Launcher.cpp +++ b/Code/LauncherUnified/Launcher.cpp @@ -573,6 +573,14 @@ namespace O3DELauncher AZ_Assert(AZ::AllocatorInstance::IsReady(), "System allocator was not created or creation failed."); //Initialize the Debug trace instance to create necessary environment variables AZ::Debug::Trace::Instance().Init(); + + if (!IsDedicatedServer() && !systemInitParams.bToolMode && !systemInitParams.bTestMode) + { + if (auto nativeUI = AZ::Interface::Get(); nativeUI != nullptr) + { + nativeUI->SetMode(AZ::NativeUI::Mode::ENABLED); + } + } } if (mainInfo.m_onPostAppStart) @@ -647,6 +655,11 @@ namespace O3DELauncher ReturnCode status = ReturnCode::Success; + if (auto nativeUI = AZ::Interface::Get(); nativeUI != nullptr) + { + nativeUI->DisplayOkDialog("Test", "Test", false); + } + if (systemInitParams.pSystem) { // Process queued events before main loop. diff --git a/Code/Sandbox/Editor/CryEdit.cpp b/Code/Sandbox/Editor/CryEdit.cpp index dfccd87ff4..1c7df75a6a 100644 --- a/Code/Sandbox/Editor/CryEdit.cpp +++ b/Code/Sandbox/Editor/CryEdit.cpp @@ -4368,7 +4368,7 @@ extern "C" int AZ_DLL_EXPORT CryEditMain(int argc, char* argv[]) { if (auto nativeUI = AZ::Interface::Get(); nativeUI != nullptr) { - nativeUI->SetMode(AZ::NativeUI::Mode::UI); + nativeUI->SetMode(AZ::NativeUI::Mode::ENABLED); } } } From a9ef02d29ae07ec8139da0eb3cf0971f201cfbb1 Mon Sep 17 00:00:00 2001 From: mgwynn Date: Fri, 25 Jun 2021 15:37:14 -0400 Subject: [PATCH 44/56] Renaming nativeUI mode setting for all platforms --- .../Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp | 2 +- .../Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm | 2 +- .../Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp b/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp index abdb7c279c..3fc313f077 100644 --- a/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp +++ b/Code/Framework/AzCore/Platform/Android/AzCore/NativeUI/NativeUISystemComponent_Android.cpp @@ -24,7 +24,7 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { - if (m_mode == NativeUI::Mode::CONSOLE) + if (m_mode == NativeUI::Mode::DISABLED) { return {}; } diff --git a/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm b/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm index 09d5ce1e67..6b8be734fe 100644 --- a/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm +++ b/Code/Framework/AzCore/Platform/Mac/AzCore/NativeUI/NativeUISystemComponent_Mac.mm @@ -28,7 +28,7 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { - if (m_mode == NativeUI::Mode::CONSOLE) + if (m_mode == NativeUI::Mode::DISABLED) { return {}; } diff --git a/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm b/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm index ce5a9ae918..9592d81d3c 100644 --- a/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm +++ b/Code/Framework/AzCore/Platform/iOS/AzCore/NativeUI/NativeUISystemComponent_iOS.mm @@ -20,7 +20,7 @@ namespace AZ { AZStd::string NativeUISystem::DisplayBlockingDialog(const AZStd::string& title, const AZStd::string& message, const AZStd::vector& options) const { - if (m_mode == NativeUI::Mode::CONSOLE) + if (m_mode == NativeUI::Mode::DISABLED) { return {}; } From c5dca9e232ed960521a8b3d40b4908b4c789ffa3 Mon Sep 17 00:00:00 2001 From: mgwynn Date: Fri, 25 Jun 2021 15:41:31 -0400 Subject: [PATCH 45/56] removed a call used for testing with different flags active --- Code/LauncherUnified/Launcher.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Code/LauncherUnified/Launcher.cpp b/Code/LauncherUnified/Launcher.cpp index 6bd5dc625c..17cae64142 100644 --- a/Code/LauncherUnified/Launcher.cpp +++ b/Code/LauncherUnified/Launcher.cpp @@ -655,11 +655,6 @@ namespace O3DELauncher ReturnCode status = ReturnCode::Success; - if (auto nativeUI = AZ::Interface::Get(); nativeUI != nullptr) - { - nativeUI->DisplayOkDialog("Test", "Test", false); - } - if (systemInitParams.pSystem) { // Process queued events before main loop. From 21ebff5709e443bba3cd64e6f996919cff4c120e Mon Sep 17 00:00:00 2001 From: Terry Michaels Date: Fri, 25 Jun 2021 15:23:57 -0500 Subject: [PATCH 46/56] Updated help search and all docs.o3de.org links to o3de.org (#1594) --- .../Serialization/EditContextConstants.inl | 2 +- .../AzNetworking/Framework/ICompressor.h | 4 +- .../AzNetworking/Framework/INetworking.h | 2 +- .../AzNetworking/PacketLayer/IPacket.h | 2 +- .../TcpTransport/TcpNetworkInterface.h | 2 +- .../UdpTransport/UdpNetworkInterface.h | 4 +- .../AzQtComponents/AzQtComponentsAPI.h | 2 +- .../AzQtComponents/Gallery/CardPage.cpp | 8 ++-- .../Gallery/ReflectedPropertyEditorPage.cpp | 2 +- .../PythonTerminal/ScriptTermDialog.cpp | 2 +- .../ToolsComponents/ScriptEditorComponent.cpp | 2 +- .../EditorEntitySearchComponentTests.cpp | 4 +- .../Tests/EntityInspectorTests.cpp | 4 +- .../UI/SelectDestinationDialog.cpp | 2 +- .../Editor/Core/LevelEditorMenuHandler.cpp | 13 ++----- .../AssetBundler/source/ui/MainWindow.cpp | 2 +- .../AssetProcessor/native/ui/MainWindow.cpp | 2 +- .../native/ui/ProductAssetDetailsPanel.cpp | 2 +- .../Editor/Constants/AWSCoreEditorMenuLinks.h | 38 +++++++++---------- .../Source/Editor/TexturePropertyEditor.cpp | 2 +- .../Animation/EditorAttachmentComponent.cpp | 2 +- .../CoreLights/EditorAreaLightComponent.cpp | 2 +- .../Source/Decals/EditorDecalComponent.cpp | 2 +- .../Code/Source/Grid/EditorGridComponent.cpp | 2 +- .../EditorImageBasedLightComponent.cpp | 2 +- .../Material/EditorMaterialComponent.cpp | 2 +- .../Code/Source/Mesh/EditorMeshComponent.cpp | 2 +- .../EditorPostFxLayerComponent.cpp | 2 +- .../SkyBox/EditorHDRiSkyboxComponent.cpp | 2 +- .../SkyBox/EditorPhysicalSkyComponent.cpp | 2 +- .../EditorSurfaceDataMeshComponent.h | 2 +- .../Editor/EditorBlastFamilyComponent.cpp | 2 +- .../Editor/EditorBlastMeshDataComponent.cpp | 2 +- .../Code/Source/EditorCameraComponent.cpp | 2 +- .../Code/Source/CameraRigComponent.cpp | 2 +- .../EMStudioSDK/Source/MainWindow.cpp | 4 +- .../Components/EditorActorComponent.cpp | 2 +- .../Components/EditorAnimGraphComponent.cpp | 2 +- .../EditorSimpleMotionComponent.cpp | 2 +- .../Source/EditorFastNoiseGradientComponent.h | 2 +- .../Editor/EditorConstantGradientComponent.h | 2 +- .../Editor/EditorDitherGradientComponent.h | 2 +- .../EditorGradientSurfaceDataComponent.h | 2 +- .../Editor/EditorGradientTransformComponent.h | 2 +- .../Editor/EditorImageGradientComponent.h | 2 +- .../Editor/EditorInvertGradientComponent.h | 2 +- .../Editor/EditorLevelsGradientComponent.h | 2 +- .../Editor/EditorMixedGradientComponent.h | 2 +- .../Editor/EditorPerlinGradientComponent.h | 2 +- .../Editor/EditorPosterizeGradientComponent.h | 2 +- .../Editor/EditorRandomGradientComponent.h | 2 +- .../Editor/EditorReferenceGradientComponent.h | 2 +- .../EditorShapeAreaFalloffGradientComponent.h | 2 +- .../EditorSmoothStepGradientComponent.h | 2 +- .../EditorSurfaceAltitudeGradientComponent.h | 2 +- .../EditorSurfaceMaskGradientComponent.h | 2 +- .../EditorSurfaceSlopeGradientComponent.h | 2 +- .../Editor/EditorThresholdGradientComponent.h | 2 +- .../Ai/EditorNavigationAreaComponent.cpp | 2 +- .../Ai/EditorNavigationSeedComponent.cpp | 2 +- .../Code/Source/Ai/NavigationComponent.cpp | 2 +- .../Code/Source/Audio/AudioProxyComponent.cpp | 2 +- .../EditorAudioAreaEnvironmentComponent.cpp | 2 +- .../Audio/EditorAudioEnvironmentComponent.cpp | 2 +- .../Audio/EditorAudioListenerComponent.cpp | 2 +- .../Audio/EditorAudioPreloadComponent.cpp | 2 +- .../Source/Audio/EditorAudioRtpcComponent.cpp | 2 +- .../Audio/EditorAudioSwitchComponent.cpp | 2 +- .../Audio/EditorAudioTriggerComponent.cpp | 2 +- .../Source/Editor/EditorCommentComponent.cpp | 2 +- .../Scripting/EditorSpawnerComponent.cpp | 2 +- .../Source/Scripting/EditorTagComponent.cpp | 2 +- .../Source/Scripting/SimpleStateComponent.cpp | 2 +- .../Source/Shape/EditorBoxShapeComponent.cpp | 2 +- .../Shape/EditorCapsuleShapeComponent.cpp | 2 +- .../Shape/EditorCompoundShapeComponent.cpp | 2 +- .../Shape/EditorCylinderShapeComponent.cpp | 2 +- .../Source/Shape/EditorDiskShapeComponent.cpp | 2 +- .../EditorPolygonPrismShapeComponent.cpp | 2 +- .../Source/Shape/EditorQuadShapeComponent.cpp | 2 +- .../Shape/EditorSphereShapeComponent.cpp | 2 +- .../Source/Shape/EditorSplineComponent.cpp | 2 +- .../Source/Shape/EditorTubeShapeComponent.cpp | 2 +- Gems/LyShine/Code/Editor/EditorMenu.cpp | 4 +- .../World/UiCanvasAssetRefComponent.cpp | 2 +- .../Source/World/UiCanvasOnMeshComponent.cpp | 2 +- .../World/UiCanvasProxyRefComponent.cpp | 2 +- .../Components/EditorClothComponent.cpp | 2 +- .../Code/Source/EditorColliderComponent.cpp | 2 +- .../Source/EditorForceRegionComponent.cpp | 2 +- .../Code/Source/EditorRigidBodyComponent.cpp | 2 +- Gems/PhysX/Code/Source/NameConstants.cpp | 2 +- .../EditorScriptCanvasComponent.cpp | 2 +- .../Source/InputConfigurationComponent.cpp | 2 +- .../EditorSurfaceDataColliderComponent.h | 2 +- .../Editor/EditorSurfaceDataShapeComponent.h | 2 +- .../Code/Source/AreaSystemComponent.cpp | 2 +- .../Debugger/EditorAreaDebugComponent.h | 2 +- .../Source/Debugger/EditorDebugComponent.h | 2 +- .../Editor/EditorAreaBlenderComponent.h | 2 +- .../Source/Editor/EditorBlockerComponent.h | 2 +- .../EditorDescriptorListCombinerComponent.h | 2 +- .../Editor/EditorDescriptorListComponent.h | 2 +- .../EditorDescriptorWeightSelectorComponent.h | 2 +- .../EditorDistanceBetweenFilterComponent.h | 2 +- .../EditorDistributionFilterComponent.h | 2 +- .../Editor/EditorLevelSettingsComponent.h | 2 +- .../Editor/EditorMeshBlockerComponent.h | 2 +- .../Editor/EditorPositionModifierComponent.h | 2 +- .../Editor/EditorReferenceShapeComponent.h | 2 +- .../Editor/EditorRotationModifierComponent.h | 2 +- .../Editor/EditorScaleModifierComponent.h | 2 +- .../EditorShapeIntersectionFilterComponent.h | 2 +- .../EditorSlopeAlignmentModifierComponent.h | 2 +- .../Source/Editor/EditorSpawnerComponent.h | 2 +- .../EditorSurfaceAltitudeFilterComponent.h | 2 +- .../EditorSurfaceMaskDepthFilterComponent.h | 2 +- .../Editor/EditorSurfaceMaskFilterComponent.h | 2 +- .../EditorSurfaceSlopeFilterComponent.h | 2 +- .../Code/Source/InstanceSystemComponent.cpp | 2 +- .../EditorWhiteBoxColliderComponent.cpp | 2 +- .../Code/Source/EditorWhiteBoxComponent.cpp | 2 +- 122 files changed, 151 insertions(+), 158 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl b/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl index 4c0dbc4cdb..f63aedb3c2 100644 --- a/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl +++ b/Code/Framework/AzCore/AzCore/Serialization/EditContextConstants.inl @@ -181,7 +181,7 @@ namespace AZ //! @code{.cpp} //! editContext->Class("Lua Script", "The Lua Script component allows you to add arbitrary Lua logic to an entity in the form of a Lua script") //! ->ClassElement(AZ::Edit::ClassElements::EditorData, "") - //! ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/lua-script/") + //! ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/lua-script/") //! @endcode const static AZ::Crc32 HelpPageURL = AZ_CRC("HelpPageURL", 0xa344d681); diff --git a/Code/Framework/AzNetworking/AzNetworking/Framework/ICompressor.h b/Code/Framework/AzNetworking/AzNetworking/Framework/ICompressor.h index fce7ceed3d..552df26984 100644 --- a/Code/Framework/AzNetworking/AzNetworking/Framework/ICompressor.h +++ b/Code/Framework/AzNetworking/AzNetworking/Framework/ICompressor.h @@ -31,7 +31,7 @@ namespace AzNetworking //! @brief Packet data compressor interface. //! //! ICompressor is an abstract compression interface meant for user provided GEMs to implement (such as the [Multiplayer - //! Compression Gem](http://docs.o3de.org/docs/user-guide/gems/reference/multiplayer-compression)). + //! Compression Gem](http://o3de.org/docs/user-guide/gems/reference/multiplayer-compression)). //! Compression is supported for both TCP and UDP connections. Instantiation of a compressor is controlled by the //! `net_UdpCompressor` or `net_TcpCompressor` cvar for their respective protocols. @@ -94,7 +94,7 @@ namespace AzNetworking //! ICompressorFactory is an abstract compression interface meant for user provided GEMs to implement. ICompressorFactory //! implementations can be registered to classes implementing INetworking. Registered factories can then be used to create //! ICompressor implementations on demand. The [Multiplayer Compression - //! Gem](http://docs.o3de.org/docs/user-guide/gems/reference/multiplayer-compression) is an example of an ICompressorFactory + //! Gem](http://o3de.org/docs/user-guide/gems/reference/multiplayer-compression) is an example of an ICompressorFactory //! for an LZ4 Compressor. In it, MultiplayerCompressionSystemComponent registers its ICompressorFactory with //! NetworkingSystemComponent, which is an implementation of INetworking. Registered factories are keyed by their AZ Name //! which is accessed through the factory's GetFactoryName method. diff --git a/Code/Framework/AzNetworking/AzNetworking/Framework/INetworking.h b/Code/Framework/AzNetworking/AzNetworking/Framework/INetworking.h index 020ac4171d..b418db83e2 100644 --- a/Code/Framework/AzNetworking/AzNetworking/Framework/INetworking.h +++ b/Code/Framework/AzNetworking/AzNetworking/Framework/INetworking.h @@ -25,7 +25,7 @@ namespace AzNetworking //! //! INetworking is also responsible for registering ICompressorFactory implementations. This allows a developer to have //! access to multiple ICompressorFactory implementations by name. The [MultiplayerCompressor - //! Gem](http://docs.o3de.org/docs/user-guide/gems/reference/multiplayer-compression) is an example of this using the + //! Gem](http://o3de.org/docs/user-guide/gems/reference/multiplayer-compression) is an example of this using the //! [LZ4](https://wikipedia.org/wiki/LZ4_%28compression_algorithm%29) algorithm. //! diff --git a/Code/Framework/AzNetworking/AzNetworking/PacketLayer/IPacket.h b/Code/Framework/AzNetworking/AzNetworking/PacketLayer/IPacket.h index 83d681ae43..264674f914 100644 --- a/Code/Framework/AzNetworking/AzNetworking/PacketLayer/IPacket.h +++ b/Code/Framework/AzNetworking/AzNetworking/PacketLayer/IPacket.h @@ -27,7 +27,7 @@ namespace AzNetworking //! ISerializer to move data between hosts safely and efficiently. //! //! For more information on the packet format and best practices for extending the packet system, read - //! [Networking Packets](http://docs.o3de.org/docs/user-guide/networking/packets) on the O3DE documentation site. + //! [Networking Packets](http://o3de.org/docs/user-guide/networking/packets) on the O3DE documentation site. class IPacket { public: diff --git a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h index aad153345a..47dc80e158 100644 --- a/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h +++ b/Code/Framework/AzNetworking/AzNetworking/TcpTransport/TcpNetworkInterface.h @@ -34,7 +34,7 @@ namespace AzNetworking //! * Header - Details the type of packet and other information related to reliability //! * Payload - The actual serialized content of the packet //! - //! For more information, read [Networking Packets](http://docs.o3de.org/docs/user-guide/networking/packets) in the O3DE documentation. + //! For more information, read [Networking Packets](http://o3de.org/docs/user-guide/networking/packets) in the O3DE documentation. //! //! ## Reliability //! diff --git a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h index 1cb3cfddec..b3e7e3f823 100644 --- a/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h +++ b/Code/Framework/AzNetworking/AzNetworking/UdpTransport/UdpNetworkInterface.h @@ -43,7 +43,7 @@ namespace AzNetworking //! * Header - Details the type of packet and other information related to reliability //! * Payload - The actual serialized content of the packet //! - //! For more information, read [Networking Packets](http://docs.o3de.org/docs/user-guide/networking/packets) in the O3DE documentation. + //! For more information, read [Networking Packets](http://o3de.org/docs/user-guide/networking/packets) in the O3DE documentation. //! //! ### Reliability //! @@ -72,7 +72,7 @@ namespace AzNetworking //! ### Encryption //! //! AzNetworking uses the [OpenSSL](https://www.openssl.org/) library to implement Datagram Layer Transport Security (DTLS) encryption - //! on UDP traffic. Encryption operates as described in [O3DE Networking Encryption](http://docs.o3de.org/docs/user-guide/networking/encryption) + //! on UDP traffic. Encryption operates as described in [O3DE Networking Encryption](http://o3de.org/docs/user-guide/networking/encryption) //! on the documentation website. Once both endpoints have completed their handshake, all traffic is expected to be fully encrypted. class UdpNetworkInterface final : public INetworkInterface diff --git a/Code/Framework/AzQtComponents/AzQtComponents/AzQtComponentsAPI.h b/Code/Framework/AzQtComponents/AzQtComponents/AzQtComponentsAPI.h index 2ad7c1da03..aaabb06136 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/AzQtComponentsAPI.h +++ b/Code/Framework/AzQtComponents/AzQtComponents/AzQtComponentsAPI.h @@ -19,7 +19,7 @@ * API refernce for all tools developers that are extending Open 3D Engine. The API reference * is intended for C++ programmers building tools. For UX designers looking to understand * the best patterns and practices when making a tool to comfortably integrate with - * the Open 3D Engine editor, see the [UI 2.0 design guide](https://docs.o3de.org/docs/tools-ui/ui-dev-intro/). + * the Open 3D Engine editor, see the [UI 2.0 design guide](https://o3de.org/docs/tools-ui/ui-dev-intro/). */ #include diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Gallery/CardPage.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Gallery/CardPage.cpp index 61a7a8cd7f..5964b1546f 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Gallery/CardPage.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Gallery/CardPage.cpp @@ -64,7 +64,7 @@ AzQtComponents::CardHeader* header = ui->functionalCard->header(); header->setIcon(QIcon(":/Cards/img/UI20/Cards/slice_item.png")); // Set the help url to open in a browser if the user clicks the help button -header->setHelpURL("https://docs.o3de.org/docs/"); +header->setHelpURL("https://o3de.org/docs/"); // Clear the help url header->clearHelpURL(); @@ -103,7 +103,7 @@ card->mockDisabledState(true); ui->disabledCard->setTitle("Actually Disabled Card"); ui->disabledCard->setContentWidget(new QWidget()); ui->disabledCard->header()->setIcon(QIcon(QStringLiteral(":/stylesheet/img/search.svg"))); - ui->disabledCard->header()->setHelpURL("https://docs.o3de.org/docs/"); + ui->disabledCard->header()->setHelpURL("https://o3de.org/docs/"); ui->disabledCard->setSecondaryTitle("Secondary Title"); ui->disabledCard->setSecondaryContentWidget(new QWidget()); ui->disabledCard->setEnabled(false); @@ -111,7 +111,7 @@ card->mockDisabledState(true); ui->disabledCard2->setTitle("Mock Disabled Card"); ui->disabledCard2->setContentWidget(new QWidget()); ui->disabledCard2->header()->setIcon(QIcon(QStringLiteral(":/stylesheet/img/search.svg"))); - ui->disabledCard2->header()->setHelpURL("https://docs.o3de.org/docs/"); + ui->disabledCard2->header()->setHelpURL("https://o3de.org/docs/"); ui->disabledCard2->setSecondaryTitle("Secondary Title"); ui->disabledCard2->setSecondaryContentWidget(new QWidget()); ui->disabledCard2->mockDisabledState(true); @@ -122,7 +122,7 @@ card->mockDisabledState(true); // put in an example icon AzQtComponents::CardHeader* header = ui->functionalCard->header(); header->setIcon(QIcon(":/Cards/img/UI20/Cards/slice_item.png")); - header->setHelpURL("https://docs.o3de.org/docs/"); + header->setHelpURL("https://o3de.org/docs/"); connect(ui->addButton, &QPushButton::clicked, this, &CardPage::addNotification); diff --git a/Code/Framework/AzQtComponents/AzQtComponents/Gallery/ReflectedPropertyEditorPage.cpp b/Code/Framework/AzQtComponents/AzQtComponents/Gallery/ReflectedPropertyEditorPage.cpp index 739cf3e549..3ed448b1c2 100644 --- a/Code/Framework/AzQtComponents/AzQtComponents/Gallery/ReflectedPropertyEditorPage.cpp +++ b/Code/Framework/AzQtComponents/AzQtComponents/Gallery/ReflectedPropertyEditorPage.cpp @@ -316,7 +316,7 @@ See the documentation linked above for more details. )"; ui->exampleText->setHtml(exampleText); - ui->hyperlinkLabel->setText(QStringLiteral(R"(Reflected Property Editor docs)")); + ui->hyperlinkLabel->setText(QStringLiteral(R"(Reflected Property Editor docs)")); } ReflectedPropertyEditorPage::~ReflectedPropertyEditorPage() diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/PythonTerminal/ScriptTermDialog.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/PythonTerminal/ScriptTermDialog.cpp index ab5ec8bdce..87a320ac41 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/PythonTerminal/ScriptTermDialog.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/PythonTerminal/ScriptTermDialog.cpp @@ -51,7 +51,7 @@ namespace AzToolsFramework connect(ui->SCRIPT_INPUT, &QLineEdit::textChanged, this, &CScriptTermDialog::OnScriptInputTextChanged); connect(ui->SCRIPT_HELP, &QToolButton::clicked, this, &CScriptTermDialog::OnScriptHelp); connect(ui->SCRIPT_DOCS, &QToolButton::clicked, this, []() { - QDesktopServices::openUrl(QUrl("https://docs.o3de.org/docs/user-guide/scripting/")); + QDesktopServices::openUrl(QUrl("https://o3de.org/docs/user-guide/scripting/")); }); InitCompleter(); diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/ScriptEditorComponent.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/ScriptEditorComponent.cpp index 4aeff10ae9..7f81d001d0 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/ScriptEditorComponent.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/ToolsComponents/ScriptEditorComponent.cpp @@ -1023,7 +1023,7 @@ namespace AzToolsFramework ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/LuaScript.svg") ->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo::Uuid()) ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Script.png") - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/lua-script/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/lua-script/") ->DataElement("AssetRef", &ScriptEditorComponent::m_scriptAsset, "Script", "Which script to use") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &ScriptEditorComponent::ScriptHasChanged) ->Attribute("BrowseIcon", ":/stylesheet/img/UI20/browse-edit-select-files.svg") diff --git a/Code/Framework/AzToolsFramework/Tests/Entity/EditorEntitySearchComponentTests.cpp b/Code/Framework/AzToolsFramework/Tests/Entity/EditorEntitySearchComponentTests.cpp index aeca29e877..3480471565 100644 --- a/Code/Framework/AzToolsFramework/Tests/Entity/EditorEntitySearchComponentTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/Entity/EditorEntitySearchComponentTests.cpp @@ -47,7 +47,7 @@ namespace AzToolsFramework ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components") ->DataElement(AZ::Edit::UIHandlers::Default, &EntitySearch_TestComponent1::m_boolValue, "Bool", "") ->DataElement(AZ::Edit::UIHandlers::Default, &EntitySearch_TestComponent1::m_intValue, "Int", "") ; @@ -106,7 +106,7 @@ namespace AzToolsFramework ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components") ->DataElement(AZ::Edit::UIHandlers::Default, &EntitySearch_TestComponent2::m_floatValue, "Float", "") ; } diff --git a/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp b/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp index 897d514715..7daceafe25 100644 --- a/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp +++ b/Code/Framework/AzToolsFramework/Tests/EntityInspectorTests.cpp @@ -118,7 +118,7 @@ namespace UnitTest ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components") ->DataElement(AZ::Edit::UIHandlers::Default, &Inspector_TestComponent2::m_data, "Data", "The component's Data"); } } @@ -187,7 +187,7 @@ namespace UnitTest ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.png") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components") ->DataElement(AZ::Edit::UIHandlers::Default, &Inspector_TestComponent3::m_data, "Data", "The component's Data"); } } diff --git a/Code/Sandbox/Editor/AssetImporter/UI/SelectDestinationDialog.cpp b/Code/Sandbox/Editor/AssetImporter/UI/SelectDestinationDialog.cpp index 3bfa7a55c1..03c10e4e9b 100644 --- a/Code/Sandbox/Editor/AssetImporter/UI/SelectDestinationDialog.cpp +++ b/Code/Sandbox/Editor/AssetImporter/UI/SelectDestinationDialog.cpp @@ -19,7 +19,7 @@ AZ_PUSH_DISABLE_DLL_EXPORT_MEMBER_WARNING AZ_POP_DISABLE_DLL_EXPORT_MEMBER_WARNING -static const char* g_assetProcessorLink = "Asset Processor"; +static const char* g_assetProcessorLink = "Asset Processor"; static const char* g_copyFilesMessage = "The original file will remain outside of the project and the %1 will not monitor the file."; static const char* g_moveFilesMessage = "The original file will be moved inside of the project and the %1 will monitor the file for changes."; static const char* g_selectDestinationFilesPath = "AssetImporter/SelectDestinationFilesPath"; diff --git a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp index 178dd771a8..4af1d2c5e2 100644 --- a/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp +++ b/Code/Sandbox/Editor/Core/LevelEditorMenuHandler.cpp @@ -798,7 +798,7 @@ QMenu* LevelEditorMenuHandler::CreateHelpMenu() auto text = lineEdit->text(); if (text.isEmpty()) { - QDesktopServices::openUrl(QUrl("https://docs.o3de.org/docs/")); + QDesktopServices::openUrl(QUrl("https://o3de.org/docs/")); } else { @@ -807,17 +807,10 @@ QMenu* LevelEditorMenuHandler::CreateHelpMenu() const SFileVersion& productVersion = gEnv->pSystem->GetProductVersion(); productVersion.ToString(productVersionString, versionStringSize); - QUrl docSearchUrl("https://docs.aws.amazon.com/search/doc-search.html"); + QUrl docSearchUrl("https://o3de.org/docs/"); QUrlQuery docSearchQuery; - QString o3deProductString = QUrl::toPercentEncoding("Open 3D Engine"); - // The order of these QueryItems matters. wiki Search URL Formatting - docSearchQuery.addQueryItem("searchPath", "documentation-product"); - docSearchQuery.addQueryItem("searchQuery", text); - docSearchQuery.addQueryItem("this_doc_product", o3deProductString); - docSearchQuery.addQueryItem("ref", "lye"); - docSearchQuery.addQueryItem("ev", productVersionString); + docSearchQuery.addQueryItem("query", text); docSearchUrl.setQuery(docSearchQuery); - docSearchUrl.setFragment(QString("facet_doc_product=%1").arg(o3deProductString)); QDesktopServices::openUrl(docSearchUrl); } lineEdit->clear(); diff --git a/Code/Tools/AssetBundler/source/ui/MainWindow.cpp b/Code/Tools/AssetBundler/source/ui/MainWindow.cpp index f4bafddcee..0846a1e995 100644 --- a/Code/Tools/AssetBundler/source/ui/MainWindow.cpp +++ b/Code/Tools/AssetBundler/source/ui/MainWindow.cpp @@ -199,7 +199,7 @@ namespace AssetBundler void MainWindow::OnSupportClicked() { QDesktopServices::openUrl( - QStringLiteral("https://docs.o3de.org/docs/user-guide/packaging/asset-bundler/")); + QStringLiteral("https://o3de.org/docs/user-guide/packaging/asset-bundler/")); } void MainWindow::ShowLogContextMenu(const QPoint& pos) diff --git a/Code/Tools/AssetProcessor/native/ui/MainWindow.cpp b/Code/Tools/AssetProcessor/native/ui/MainWindow.cpp index ae9cf07794..af5b16a2a2 100644 --- a/Code/Tools/AssetProcessor/native/ui/MainWindow.cpp +++ b/Code/Tools/AssetProcessor/native/ui/MainWindow.cpp @@ -509,7 +509,7 @@ void MainWindow::OnRescanButtonClicked() void MainWindow::OnSupportClicked(bool /*checked*/) { QDesktopServices::openUrl( - QStringLiteral("https://docs.o3de.org/docs/user-guide/assets/pipeline/")); + QStringLiteral("https://o3de.org/docs/user-guide/assets/pipeline/")); } void MainWindow::EditConnection(const QModelIndex& index) diff --git a/Code/Tools/AssetProcessor/native/ui/ProductAssetDetailsPanel.cpp b/Code/Tools/AssetProcessor/native/ui/ProductAssetDetailsPanel.cpp index 64865afd78..d5ec717764 100644 --- a/Code/Tools/AssetProcessor/native/ui/ProductAssetDetailsPanel.cpp +++ b/Code/Tools/AssetProcessor/native/ui/ProductAssetDetailsPanel.cpp @@ -438,7 +438,7 @@ namespace AssetProcessor void ProductAssetDetailsPanel::OnSupportClicked(bool /*checked*/) { QDesktopServices::openUrl( - QStringLiteral("https://docs.o3de.org/docs/user-guide/packaging/asset-bundler/assets-resolving/")); + QStringLiteral("https://o3de.org/docs/user-guide/packaging/asset-bundler/assets-resolving/")); } diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h index bcc4c711c8..3567570175 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h @@ -9,45 +9,45 @@ namespace AWSCore { - static constexpr const char NewToAWSUrl[] = "https://docs.o3de.org/docs/user-guide/gems/reference/aws/"; + static constexpr const char NewToAWSUrl[] = "https://o3de.org/docs/user-guide/gems/reference/aws/"; static constexpr const char AWSAndGettingStartedUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/getting-started/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-core/getting-started/"; static constexpr const char AWSAndResourceMappingsUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/resource-mapping-files/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-core/resource-mapping-files/"; static constexpr const char AWSAndResourceMappingToolUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/resource-mapping-tool/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-core/resource-mapping-tool/"; static constexpr const char AWSAndScriptingUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/scripting/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-core/scripting/"; static constexpr const char AWSCredentialConfigurationUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-core/configuring-credentials/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-core/configuring-credentials/"; static constexpr const char AWSClientAuthGemOverviewUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/"; static constexpr const char AWSClientAuthGemSetupUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/setup/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/setup/"; static constexpr const char AWSClientAuthCDKAndResourcesUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/setup/#3-deploy-the-cdk-application"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/setup/#3-deploy-the-cdk-application"; static constexpr const char AWSClientAuthScriptCanvasAndLuaUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/scripting/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/scripting/"; static constexpr const char AWSClientAuth3rdPartyAuthProviderUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/authentication-providers/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/authentication-providers/"; static constexpr const char AWSClientAuthCustomAuthProviderUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/authentication-providers/#using-a-custom-provider"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/authentication-providers/#using-a-custom-provider"; static constexpr const char AWSClientAuthAPIReferenceUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/cpp-api/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-client-auth/cpp-api/"; static constexpr const char AWSMetricsGemOverviewUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; static constexpr const char AWSMetricsSetupGemUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/setup/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/setup/"; static constexpr const char AWSMetricsScriptingUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/scripting/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/scripting/"; static constexpr const char AWSMetricsAPIReferenceUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/cpp-api/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/cpp-api/"; static constexpr const char AWSMetricsAdvancedTopicsUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/advanced-topics/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/advanced-topics/"; static constexpr const char AWSMetricsSettingsUrl[] = - "https://docs.o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; + "https://o3de.org/docs/user-guide/gems/reference/aws/aws-metrics/"; } // namespace AWSCore diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePropertyEditor.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePropertyEditor.cpp index cbb3860bdc..85c7dea6f2 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePropertyEditor.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Editor/TexturePropertyEditor.cpp @@ -168,7 +168,7 @@ namespace ImageProcessingAtomEditor void TexturePropertyEditor::OnHelp() { - QString webLink = tr("https://docs.o3de.org/docs/"); + QString webLink = tr("https://o3de.org/docs/"); QDesktopServices::openUrl(QUrl(webLink)); } diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Animation/EditorAttachmentComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Animation/EditorAttachmentComponent.cpp index 89f3f0f28c..6b24736ada 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Animation/EditorAttachmentComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Animation/EditorAttachmentComponent.cpp @@ -69,7 +69,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->Attribute( AZ::Edit::Attributes::HelpPageURL, - "https://docs.o3de.org/docs/user-guide/components/reference/attachment/") + "https://o3de.org/docs/user-guide/components/reference/attachment/") ->DataElement(0, &EditorAttachmentComponent::m_targetId, "Target entity", "Attach to this entity.") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorAttachmentComponent::OnTargetIdChanged) ->DataElement( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp index df1600f505..94e802f202 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/CoreLights/EditorAreaLightComponent.cpp @@ -48,7 +48,7 @@ namespace AZ ->Attribute(Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(Edit::Attributes::AutoExpand, true) - ->Attribute(Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/area-light/") + ->Attribute(Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/area-light/") ; editContext->Class( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Decals/EditorDecalComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Decals/EditorDecalComponent.cpp index 9364eae824..9bd1149e95 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Decals/EditorDecalComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Decals/EditorDecalComponent.cpp @@ -38,7 +38,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC_CE("Game")) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/decal/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/decal/") ; editContext->Class( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Grid/EditorGridComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Grid/EditorGridComponent.cpp index fe6b75e9a9..0b1a055f88 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Grid/EditorGridComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Grid/EditorGridComponent.cpp @@ -33,7 +33,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/") ; editContext->Class( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/EditorImageBasedLightComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/EditorImageBasedLightComponent.cpp index 02c985a4ec..a963f2eb61 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/EditorImageBasedLightComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/ImageBasedLights/EditorImageBasedLightComponent.cpp @@ -33,7 +33,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/") ; editContext->Class( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponent.cpp index 8affc670f6..fb2a1e28d1 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Material/EditorMaterialComponent.cpp @@ -136,7 +136,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/") ->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo::Uuid()) ->DataElement(AZ::Edit::UIHandlers::MultiLineEdit, &EditorMaterialComponent::m_message, "Message", "") ->Attribute(AZ_CRC("PlaceholderText", 0xa23ec278), "Component cannot be edited with multiple entities selected") diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp index bbbccfada1..d8a38421ff 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Mesh/EditorMeshComponent.cpp @@ -43,7 +43,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/") ->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo::Uuid()) ->DataElement(AZ::Edit::UIHandlers::Button, &EditorMeshComponent::m_addMaterialComponentFlag, "Add Material Component", "Add Material Component") ->Attribute(AZ::Edit::Attributes::NameLabelOverride, "") diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/EditorPostFxLayerComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/EditorPostFxLayerComponent.cpp index 34ee9c8bdd..d795c5eb91 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/EditorPostFxLayerComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/PostProcess/EditorPostFxLayerComponent.cpp @@ -31,7 +31,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/") ; editContext->Class( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorHDRiSkyboxComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorHDRiSkyboxComponent.cpp index cbf4a25585..b31c444028 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorHDRiSkyboxComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorHDRiSkyboxComponent.cpp @@ -31,7 +31,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/") ; editContext->Class( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorPhysicalSkyComponent.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorPhysicalSkyComponent.cpp index 91acd3329e..2f21639afb 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorPhysicalSkyComponent.cpp +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SkyBox/EditorPhysicalSkyComponent.cpp @@ -31,7 +31,7 @@ namespace AZ ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/atom/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/atom/") ; editContext->Class( diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/EditorSurfaceDataMeshComponent.h b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/EditorSurfaceDataMeshComponent.h index b040d59f3d..36323af3cc 100644 --- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/EditorSurfaceDataMeshComponent.h +++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/SurfaceData/EditorSurfaceDataMeshComponent.h @@ -28,6 +28,6 @@ namespace SurfaceData static constexpr const char* const s_componentDescription = "Enables a static mesh to emit surface tags"; static constexpr const char* const s_icon = "Editor/Icons/Components/SurfaceData.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/SurfaceData.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Blast/Code/Source/Editor/EditorBlastFamilyComponent.cpp b/Gems/Blast/Code/Source/Editor/EditorBlastFamilyComponent.cpp index d65f862ffb..db88dc4a23 100644 --- a/Gems/Blast/Code/Source/Editor/EditorBlastFamilyComponent.cpp +++ b/Gems/Blast/Code/Source/Editor/EditorBlastFamilyComponent.cpp @@ -39,7 +39,7 @@ namespace Blast ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute( AZ::Edit::Attributes::HelpPageURL, - "https://docs.o3de.org/docs/user-guide/components/reference/blast-family/") + "https://o3de.org/docs/user-guide/components/reference/blast-family/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement( AZ::Edit::UIHandlers::Default, &EditorBlastFamilyComponent::m_blastAsset, "Blast asset", diff --git a/Gems/Blast/Code/Source/Editor/EditorBlastMeshDataComponent.cpp b/Gems/Blast/Code/Source/Editor/EditorBlastMeshDataComponent.cpp index 1b78c09ead..322d8a0706 100644 --- a/Gems/Blast/Code/Source/Editor/EditorBlastMeshDataComponent.cpp +++ b/Gems/Blast/Code/Source/Editor/EditorBlastMeshDataComponent.cpp @@ -62,7 +62,7 @@ namespace Blast ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute( AZ::Edit::Attributes::HelpPageURL, - "https://docs.o3de.org/docs/user-guide/components/reference/blast-family-mesh-data/") + "https://o3de.org/docs/user-guide/components/reference/blast-family-mesh-data/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement( AZ::Edit::UIHandlers::CheckBox, &EditorBlastMeshDataComponent::m_showMeshAssets, diff --git a/Gems/Camera/Code/Source/EditorCameraComponent.cpp b/Gems/Camera/Code/Source/EditorCameraComponent.cpp index 5bd2183dae..fed49fd3ca 100644 --- a/Gems/Camera/Code/Source/EditorCameraComponent.cpp +++ b/Gems/Camera/Code/Source/EditorCameraComponent.cpp @@ -106,7 +106,7 @@ namespace Camera ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/Camera.png") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/camera/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/camera/") ->UIElement(AZ::Edit::UIHandlers::Button,"", "Sets the view to this camera") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorCameraComponent::OnPossessCameraButtonClicked) ->Attribute(AZ::Edit::Attributes::ButtonText, &EditorCameraComponent::GetCameraViewButtonText) diff --git a/Gems/CameraFramework/Code/Source/CameraRigComponent.cpp b/Gems/CameraFramework/Code/Source/CameraRigComponent.cpp index 7638d3a984..2d65692763 100644 --- a/Gems/CameraFramework/Code/Source/CameraRigComponent.cpp +++ b/Gems/CameraFramework/Code/Source/CameraRigComponent.cpp @@ -125,7 +125,7 @@ namespace Camera ->Attribute(AZ::Edit::Attributes::Icon, "Editor/Icons/Components/CameraRig.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/CameraRig.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/camera-rig/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/camera-rig/") ->DataElement(0, &CameraRigComponent::m_targetAcquirers, "Target acquirers", "A list of behaviors that define how a camera will select a target. They are executed in order until one succeeds") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) diff --git a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/MainWindow.cpp b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/MainWindow.cpp index 9fd4eae04b..a0c6a8bcb3 100644 --- a/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/MainWindow.cpp +++ b/Gems/EMotionFX/Code/EMotionFX/Tools/EMotionStudio/EMStudioSDK/Source/MainWindow.cpp @@ -461,12 +461,12 @@ namespace EMStudio menu->addAction("Documentation", this, [] { - QDesktopServices::openUrl(QUrl("https://docs.o3de.org/docs/")); + QDesktopServices::openUrl(QUrl("https://o3de.org/docs/")); }); menu->addAction("Forums", this, [] { - QDesktopServices::openUrl(QUrl("https://docs.o3de.org/community/")); + QDesktopServices::openUrl(QUrl("https://o3de.org/community/")); }); menu->addSeparator(); diff --git a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorActorComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorActorComponent.cpp index ff588ef63a..d5ae23ca5a 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorActorComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorActorComponent.cpp @@ -66,7 +66,7 @@ namespace EMotionFX ->Attribute(AZ::Edit::Attributes::ViewportIcon, ":/EMotionFX/ActorComponent.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/actor/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/actor/") ->DataElement(0, &EditorActorComponent::m_actorAsset, "Actor asset", "Assigned actor asset") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorActorComponent::OnAssetSelected) diff --git a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorAnimGraphComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorAnimGraphComponent.cpp index 0f5c131d6c..0573ac0ced 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorAnimGraphComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorAnimGraphComponent.cpp @@ -65,7 +65,7 @@ namespace EMotionFX ->Attribute(AZ::Edit::Attributes::ViewportIcon, ":/EMotionFX/AnimGraphComponent.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/animgraph/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/animgraph/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorAnimGraphComponent::m_motionSetAsset, "Motion set asset", "EMotion FX motion set asset to be loaded for this actor.") ->Attribute("EditButton", "") diff --git a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp index 8e75ecc57d..0ca7248f26 100644 --- a/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp +++ b/Gems/EMotionFX/Code/Source/Integration/Editor/Components/EditorSimpleMotionComponent.cpp @@ -51,7 +51,7 @@ namespace EMotionFX ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorSimpleMotionComponent::OnEditorPropertyChanged) ->DataElement(0, &EditorSimpleMotionComponent::m_configuration, "Configuration", "Settings for this Simple Motion") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorSimpleMotionComponent::OnEditorPropertyChanged) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/simple-motion/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/simple-motion/") ; } } diff --git a/Gems/FastNoise/Code/Source/EditorFastNoiseGradientComponent.h b/Gems/FastNoise/Code/Source/EditorFastNoiseGradientComponent.h index a35a9e4ec1..e101c592f6 100644 --- a/Gems/FastNoise/Code/Source/EditorFastNoiseGradientComponent.h +++ b/Gems/FastNoise/Code/Source/EditorFastNoiseGradientComponent.h @@ -27,7 +27,7 @@ namespace FastNoiseGem static constexpr const char* const s_componentDescription = "Generates gradient values using FastNoise a noise generation library with a collection of realtime noise algorithms"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; private: AZ::Crc32 OnGenerateRandomSeed(); diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorConstantGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorConstantGradientComponent.h index ff1c39c292..fd74228fa0 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorConstantGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorConstantGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Returns a specified value as a gradient when sampled"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorDitherGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorDitherGradientComponent.h index 38efea796b..0e91fb5e40 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorDitherGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorDitherGradientComponent.h @@ -25,7 +25,7 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Applies ordered dithering to the input gradient"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; protected: AZ::u32 ConfigurationChanged() override; diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorGradientSurfaceDataComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorGradientSurfaceDataComponent.h index b447f65750..fea22d4c47 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorGradientSurfaceDataComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorGradientSurfaceDataComponent.h @@ -32,7 +32,7 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Enables a gradient to emit surface tags"; static constexpr const char* const s_icon = "Editor/Icons/Components/SurfaceData.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/SurfaceData.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; private: AZ::u32 ConfigurationChanged() override; diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorGradientTransformComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorGradientTransformComponent.h index 9b6c803ea7..bb932f7e74 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorGradientTransformComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorGradientTransformComponent.h @@ -34,7 +34,7 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Transforms coordinates into a space relative to a shape, allowing other transform and sampling modifications"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; private: AZ::u32 ConfigurationChanged() override; diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorImageGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorImageGradientComponent.h index 421fa2be52..b82b77ca0f 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorImageGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorImageGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient by sampling an image asset"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorInvertGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorInvertGradientComponent.h index 27f4a4b6ab..1132e9788a 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorInvertGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorInvertGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Inverts a gradient's values"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorLevelsGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorLevelsGradientComponent.h index 4cde089e3b..4c7e54540d 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorLevelsGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorLevelsGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Modifies an input gradient's signal using low/mid/high points and allows clamping of min/max output values"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorMixedGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorMixedGradientComponent.h index 01a85bbf1d..ed34b105ea 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorMixedGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorMixedGradientComponent.h @@ -57,7 +57,7 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a new gradient by combining other gradients"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; protected: diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorPerlinGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorPerlinGradientComponent.h index 8cbde2191e..c37840262a 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorPerlinGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorPerlinGradientComponent.h @@ -26,7 +26,7 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient by sampling a perlin noise generator"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; private: AZ::Crc32 OnGenerateRandomSeed(); diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorPosterizeGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorPosterizeGradientComponent.h index 050a69cf25..dc521b9073 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorPosterizeGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorPosterizeGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Divides an input gradient's signal into a specified number of bands"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorRandomGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorRandomGradientComponent.h index dd27b9070d..76c9e0bf5f 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorRandomGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorRandomGradientComponent.h @@ -28,7 +28,7 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient by sampling a random noise generator"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; private: AZ::Crc32 OnGenerateRandomSeed(); diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorReferenceGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorReferenceGradientComponent.h index ea7348a0ff..38293ee5f3 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorReferenceGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorReferenceGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "References another gradient"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorShapeAreaFalloffGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorShapeAreaFalloffGradientComponent.h index 34d75351e0..4f519dceed 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorShapeAreaFalloffGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorShapeAreaFalloffGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient based on distance from a shape"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorSmoothStepGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorSmoothStepGradientComponent.h index 379ad2f2af..4b74b1878f 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorSmoothStepGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorSmoothStepGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient with fall off, which creates a smoother input gradient"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceAltitudeGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceAltitudeGradientComponent.h index 7f74c1eb5b..e5e0bd9325 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceAltitudeGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceAltitudeGradientComponent.h @@ -25,7 +25,7 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient based on height within a range"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; // AZ::Component interface void Activate() override; diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceMaskGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceMaskGradientComponent.h index ef8fd9ef81..2cf135c711 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceMaskGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceMaskGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient based on underlying surface types"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceSlopeGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceSlopeGradientComponent.h index e018b3a07c..3b620834ed 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceSlopeGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorSurfaceSlopeGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Generates a gradient based on surface angle"; static constexpr const char* const s_icon = "Editor/Icons/Components/Gradient.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Gradient.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/GradientSignal/Code/Source/Editor/EditorThresholdGradientComponent.h b/Gems/GradientSignal/Code/Source/Editor/EditorThresholdGradientComponent.h index 23a094bbbf..41109e82cb 100644 --- a/Gems/GradientSignal/Code/Source/Editor/EditorThresholdGradientComponent.h +++ b/Gems/GradientSignal/Code/Source/Editor/EditorThresholdGradientComponent.h @@ -25,6 +25,6 @@ namespace GradientSignal static constexpr const char* const s_componentDescription = "Converts input gradient to be 0 if below the threshold or 1 if above the threshold"; static constexpr const char* const s_icon = "Editor/Icons/Components/GradientModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/GradientModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/"; }; } diff --git a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp index d88a03ae2f..97a9a2f6e0 100644 --- a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationAreaComponent.cpp @@ -51,7 +51,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/NavigationArea.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/NavigationArea.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/nav-area/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/nav-area/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::CheckBox, &EditorNavigationAreaComponent::m_exclusion, "Exclusion", "Does this area add or subtract from the Navigation Mesh") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorNavigationAreaComponent::OnNavigationAreaChanged) diff --git a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp index 555832e2fc..3d8ff9b8f1 100644 --- a/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Ai/EditorNavigationSeedComponent.cpp @@ -36,7 +36,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/NavigationSeed.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/NavigationSeed.png") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/nav-seed/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/nav-seed/") ->DataElement(AZ::Edit::UIHandlers::ComboBox, &EditorNavigationSeedComponent::m_agentType, "Agent Type", "Describes the type of the Entity for navigation purposes.") ->Attribute(AZ::Edit::Attributes::StringList, &PopulateAgentTypeList) ->Attribute("ChangeNotify", &EditorNavigationSeedComponent::OnAgentTypeChanged); diff --git a/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp b/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp index 1dfa4fcbc3..bd66cd9e94 100644 --- a/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Ai/NavigationComponent.cpp @@ -126,7 +126,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Navigation.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/navigation/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/navigation/") ->DataElement(AZ::Edit::UIHandlers::Default, &NavigationComponent::m_agentSpeed, "Agent Speed", "The speed of the agent while navigating ") ->DataElement(AZ::Edit::UIHandlers::ComboBox, &NavigationComponent::m_agentType, "Agent Type", diff --git a/Gems/LmbrCentral/Code/Source/Audio/AudioProxyComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/AudioProxyComponent.cpp index a6e20cf916..cfcff22e07 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/AudioProxyComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/AudioProxyComponent.cpp @@ -38,7 +38,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/AudioProxy.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AddableByUser, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-proxy/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-proxy/") ; } } diff --git a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioAreaEnvironmentComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioAreaEnvironmentComponent.cpp index 39dc105d4f..3b8c3c9dad 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioAreaEnvironmentComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioAreaEnvironmentComponent.cpp @@ -40,7 +40,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioAreaEnvironment.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-area-environment/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-area-environment/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorAudioAreaEnvironmentComponent::m_broadPhaseTriggerArea, "Broad-phase trigger area", "The entity that contains a Trigger Area component for broad-phase checks") ->Attribute(AZ::Edit::Attributes::RequiredService, AZ_CRC("ProximityTriggerService", 0x561f262c)) diff --git a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioEnvironmentComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioEnvironmentComponent.cpp index 9fb7c988ce..18e67b449b 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioEnvironmentComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioEnvironmentComponent.cpp @@ -33,7 +33,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioEnvironment.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-environment/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-environment/") ->DataElement("AudioControl", &EditorAudioEnvironmentComponent::m_defaultEnvironment, "Default Environment", "Name of the default ATL Environment control to use") ; } diff --git a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioListenerComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioListenerComponent.cpp index 174ef6b087..d6a5493b0b 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioListenerComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioListenerComponent.cpp @@ -36,7 +36,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioListener.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-listener/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-listener/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorAudioListenerComponent::m_rotationEntity, "Rotation Entity", "The Entity whose rotation the audio listener will adopt. If none set, will assume 'this' Entity") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorAudioListenerComponent::m_positionEntity, diff --git a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioPreloadComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioPreloadComponent.cpp index 5e4a0b729a..b41f6f5754 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioPreloadComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioPreloadComponent.cpp @@ -42,7 +42,7 @@ namespace LmbrCentral // Icon todo: //->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioPreload.png") - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-preload/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-preload/") ->DataElement("AudioControl", &EditorAudioPreloadComponent::m_defaultPreload, "Preload Name", "The default ATL Preload control to use") ->DataElement(AZ::Edit::UIHandlers::ComboBox, &EditorAudioPreloadComponent::m_loadType, "Load Type", "Automatically when the component activates/deactivates, or Manually at user's request") diff --git a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioRtpcComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioRtpcComponent.cpp index aa3f6421f2..0e8454d8a2 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioRtpcComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioRtpcComponent.cpp @@ -34,7 +34,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioRtpc.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-rtpc/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-rtpc/") ->DataElement("AudioControl", &EditorAudioRtpcComponent::m_defaultRtpc, "Default Rtpc", "The default ATL Rtpc control to use") ; } diff --git a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioSwitchComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioSwitchComponent.cpp index 4a44b8c64b..12d0b5c2cb 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioSwitchComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioSwitchComponent.cpp @@ -34,7 +34,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioSwitch.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-switch/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-switch/") ->DataElement("AudioControl", &EditorAudioSwitchComponent::m_defaultSwitch, "Default Switch", "The default ATL Switch to use when Activated") ->DataElement("AudioControl", &EditorAudioSwitchComponent::m_defaultState, "Default State", "The default ATL State to set on the default Switch when Activated") ; diff --git a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioTriggerComponent.cpp b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioTriggerComponent.cpp index 3109bea280..d8f335b439 100644 --- a/Gems/LmbrCentral/Code/Source/Audio/EditorAudioTriggerComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Audio/EditorAudioTriggerComponent.cpp @@ -43,7 +43,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/AudioTrigger.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/audio-trigger/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/audio-trigger/") ->DataElement("AudioControl", &EditorAudioTriggerComponent::m_defaultPlayTrigger, "Default 'play' Trigger", "The default ATL Trigger control used by 'Play'") ->DataElement("AudioControl", &EditorAudioTriggerComponent::m_defaultStopTrigger, "Default 'stop' Trigger", "The default ATL Trigger control used by 'Stop'") ->DataElement(AZ::Edit::UIHandlers::ComboBox, &EditorAudioTriggerComponent::m_obstructionType, "Obstruction Type", "Ray-casts used in calculation of obstruction and occlusion") diff --git a/Gems/LmbrCentral/Code/Source/Editor/EditorCommentComponent.cpp b/Gems/LmbrCentral/Code/Source/Editor/EditorCommentComponent.cpp index 7838331217..2ee4bea421 100644 --- a/Gems/LmbrCentral/Code/Source/Editor/EditorCommentComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Editor/EditorCommentComponent.cpp @@ -33,7 +33,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Comment.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZStd::vector({ AZ_CRC("Level", 0x9aeacc13), AZ_CRC("Game", 0x232b318c), AZ_CRC("Layer", 0xe4db211a) })) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/comment/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/comment/") ->DataElement(AZ::Edit::UIHandlers::MultiLineEdit, &EditorCommentComponent::m_comment,"", "Comment") ->Attribute(AZ_CRC("PlaceholderText", 0xa23ec278), "Add comment text here"); } diff --git a/Gems/LmbrCentral/Code/Source/Scripting/EditorSpawnerComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/EditorSpawnerComponent.cpp index e57a6c0c05..398cd69527 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/EditorSpawnerComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Scripting/EditorSpawnerComponent.cpp @@ -40,7 +40,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Spawner.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/spawner/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/spawner/") ->DataElement(0, &EditorSpawnerComponent::m_sliceAsset, "Dynamic slice", "The slice to spawn") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorSpawnerComponent::SliceAssetChanged) ->DataElement(0, &EditorSpawnerComponent::m_spawnOnActivate, "Spawn on activate", "Should the component spawn the selected slice upon activation?") diff --git a/Gems/LmbrCentral/Code/Source/Scripting/EditorTagComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/EditorTagComponent.cpp index a84e349f55..da7f46f8c1 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/EditorTagComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Scripting/EditorTagComponent.cpp @@ -37,7 +37,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Tag.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tag.png") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/tag/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/tag/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorTagComponent::m_tags, "Tags", "The tags that will be on this entity by default") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorTagComponent::OnTagChanged); } diff --git a/Gems/LmbrCentral/Code/Source/Scripting/SimpleStateComponent.cpp b/Gems/LmbrCentral/Code/Source/Scripting/SimpleStateComponent.cpp index 8ab8cb5bc9..b914c69816 100644 --- a/Gems/LmbrCentral/Code/Source/Scripting/SimpleStateComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Scripting/SimpleStateComponent.cpp @@ -204,7 +204,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/SimpleState.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/SimpleState.png") - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/simple-state/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/simple-state/") ->DataElement(AZ::Edit::UIHandlers::ComboBox, &SimpleStateComponent::m_initialStateName, "Initial state", "The initial active state") ->Attribute(AZ::Edit::Attributes::ChangeNotify, AZ_CRC("RefreshAttributesAndValues", 0xcbc2147c)) ->Attribute(AZ::Edit::Attributes::StringList, &SimpleStateComponent::GetStateNames) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorBoxShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorBoxShapeComponent.cpp index 8de43e69e7..91baf58f02 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorBoxShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorBoxShapeComponent.cpp @@ -47,7 +47,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Box_Shape.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/box-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/box-shape/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorBoxShapeComponent::m_boxShape, "Box Shape", "Box Shape Configuration") // ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) // disabled - prevents ChangeNotify attribute firing correctly ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorBoxShapeComponent::ConfigurationChanged) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorCapsuleShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorCapsuleShapeComponent.cpp index deff81f693..4a198c4da4 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorCapsuleShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorCapsuleShapeComponent.cpp @@ -41,7 +41,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Capsule_Shape.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/capsule-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/capsule-shape/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorCapsuleShapeComponent::m_capsuleShape, "Capsule Shape", "Capsule Shape Configuration") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorCapsuleShapeComponent::ConfigurationChanged) ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorCompoundShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorCompoundShapeComponent.cpp index 9356a4c169..1548392d34 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorCompoundShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorCompoundShapeComponent.cpp @@ -36,7 +36,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Sphere.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/compound-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/compound-shape/") ->DataElement(0, &EditorCompoundShapeComponent::m_configuration, "Configuration", "Compound Shape Configuration") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorCompoundShapeComponent::ConfigurationChanged) ->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20)) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorCylinderShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorCylinderShapeComponent.cpp index ba1daf7338..0c4a13f3b0 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorCylinderShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorCylinderShapeComponent.cpp @@ -41,7 +41,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Cylinder_Shape.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/cylinder-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/cylinder-shape/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorCylinderShapeComponent::m_cylinderShape, "Cylinder Shape", "Cylinder Shape Configuration") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorCylinderShapeComponent::ConfigurationChanged) ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorDiskShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorDiskShapeComponent.cpp index 52fae4680e..f94299e120 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorDiskShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorDiskShapeComponent.cpp @@ -34,7 +34,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Disk_Shape.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/disk-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/disk-shape/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorDiskShapeComponent::m_diskShape, "Disk Shape", "Disk Shape Configuration") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorDiskShapeComponent::ConfigurationChanged) ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorPolygonPrismShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorPolygonPrismShapeComponent.cpp index a3979fe49f..b56f2ba4cf 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorPolygonPrismShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorPolygonPrismShapeComponent.cpp @@ -163,7 +163,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/PolygonPrism.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/PolygonPrism.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/polygon-prism-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/polygon-prism-shape/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::Default, &EditorPolygonPrismShapeComponent::m_polygonPrismShape, "Configuration", "PolygonPrism Shape Configuration") // ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) // disabled - prevents ChangeNotify attribute firing correctly diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorQuadShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorQuadShapeComponent.cpp index 05ab4a0138..42db1b72fc 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorQuadShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorQuadShapeComponent.cpp @@ -34,7 +34,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Component_Placeholder.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/quad-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/quad-shape/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorQuadShapeComponent::m_quadShape, "Quad Shape", "Quad Shape Configuration") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorQuadShapeComponent::ConfigurationChanged) ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorSphereShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorSphereShapeComponent.cpp index 3cc663f915..07a0c0179a 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorSphereShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorSphereShapeComponent.cpp @@ -45,7 +45,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Sphere_Shape.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/sphere-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/sphere-shape/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorSphereShapeComponent::m_sphereShape, "Sphere Shape", "Sphere Shape Configuration") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorSphereShapeComponent::ConfigurationChanged) ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorSplineComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorSplineComponent.cpp index 4c4147b11d..50a25ea2c4 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorSplineComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorSplineComponent.cpp @@ -62,7 +62,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Spline.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Spline.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/spline/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/spline/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::Default, &EditorSplineComponent::m_visibleInEditor, "Visible", "Always display this shape in the editor viewport") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorSplineComponent::m_splineCommon, "Configuration", "Spline Configuration") diff --git a/Gems/LmbrCentral/Code/Source/Shape/EditorTubeShapeComponent.cpp b/Gems/LmbrCentral/Code/Source/Shape/EditorTubeShapeComponent.cpp index c38ee31ac6..cf72c21d4d 100644 --- a/Gems/LmbrCentral/Code/Source/Shape/EditorTubeShapeComponent.cpp +++ b/Gems/LmbrCentral/Code/Source/Shape/EditorTubeShapeComponent.cpp @@ -42,7 +42,7 @@ namespace LmbrCentral ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/Tube_Shape.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/shape/tube-shape/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/shape/tube-shape/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorTubeShapeComponent::m_tubeShape, "TubeShape", "Tube Shape Configuration") ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorTubeShapeComponent::ConfigurationChanged) //->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) // disabled - prevents ChangeNotify attribute firing correctly diff --git a/Gems/LyShine/Code/Editor/EditorMenu.cpp b/Gems/LyShine/Code/Editor/EditorMenu.cpp index 99846a72cd..0e7fe2a486 100644 --- a/Gems/LyShine/Code/Editor/EditorMenu.cpp +++ b/Gems/LyShine/Code/Editor/EditorMenu.cpp @@ -882,8 +882,8 @@ void EditorWindow::AddMenu_PreviewView() void EditorWindow::AddMenu_Help() { - const char* documentationUrl = "https://docs.o3de.org/docs/user-guide/interactivity/user-interface/"; - const char* tutorialsUrl = "https://docs.o3de.org/docs/learning-guide/tutorials/"; + const char* documentationUrl = "https://o3de.org/docs/user-guide/interactivity/user-interface/"; + const char* tutorialsUrl = "https://o3de.org/docs/learning-guide/tutorials/"; const char* forumUrl = "https://o3deorg.netlify.app/community/"; QMenu* menu = menuBar()->addMenu("&Help"); diff --git a/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp b/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp index b0cd20161d..e17a579ea5 100644 --- a/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp +++ b/Gems/LyShine/Code/Source/World/UiCanvasAssetRefComponent.cpp @@ -168,7 +168,7 @@ void UiCanvasAssetRefComponent::Reflect(AZ::ReflectContext* context) ->Attribute(AZ::Edit::Attributes::Category, "UI") ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/UiCanvasAssetRef.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/UiCanvasRef.png") - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/ui-canvas-asset-ref/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/ui-canvas-asset-ref/") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)); editInfo->DataElement("SimpleAssetRef", &UiCanvasAssetRefComponent::m_canvasAssetRef, diff --git a/Gems/LyShine/Code/Source/World/UiCanvasOnMeshComponent.cpp b/Gems/LyShine/Code/Source/World/UiCanvasOnMeshComponent.cpp index 8ce6c9fda2..fae134dafc 100644 --- a/Gems/LyShine/Code/Source/World/UiCanvasOnMeshComponent.cpp +++ b/Gems/LyShine/Code/Source/World/UiCanvasOnMeshComponent.cpp @@ -344,7 +344,7 @@ void UiCanvasOnMeshComponent::Reflect(AZ::ReflectContext* context) ->Attribute(AZ::Edit::Attributes::Category, "UI") ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/UiCanvasOnMesh.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/UiCanvasOnMesh.png") - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/ui-canvas-on-mesh/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/ui-canvas-on-mesh/") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)); editInfo->DataElement(0, &UiCanvasOnMeshComponent::m_renderTargetOverride, diff --git a/Gems/LyShine/Code/Source/World/UiCanvasProxyRefComponent.cpp b/Gems/LyShine/Code/Source/World/UiCanvasProxyRefComponent.cpp index 7446fd7bae..04a526eea2 100644 --- a/Gems/LyShine/Code/Source/World/UiCanvasProxyRefComponent.cpp +++ b/Gems/LyShine/Code/Source/World/UiCanvasProxyRefComponent.cpp @@ -72,7 +72,7 @@ void UiCanvasProxyRefComponent::Reflect(AZ::ReflectContext* context) ->Attribute(AZ::Edit::Attributes::Category, "UI") ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/UiCanvasProxyRef.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/UiCanvasRef.png") - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/ui-canvas-proxy-ref/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/ui-canvas-proxy-ref/") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)); editInfo->DataElement(0, &UiCanvasProxyRefComponent::m_canvasAssetRefEntityId, diff --git a/Gems/NvCloth/Code/Source/Components/EditorClothComponent.cpp b/Gems/NvCloth/Code/Source/Components/EditorClothComponent.cpp index ed9fd84f6b..11343575fe 100644 --- a/Gems/NvCloth/Code/Source/Components/EditorClothComponent.cpp +++ b/Gems/NvCloth/Code/Source/Components/EditorClothComponent.cpp @@ -47,7 +47,7 @@ namespace NvCloth ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/Cloth.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Cloth.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/cloth/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/cloth/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->UIElement(AZ::Edit::UIHandlers::CheckBox, "Simulate in editor", diff --git a/Gems/PhysX/Code/Source/EditorColliderComponent.cpp b/Gems/PhysX/Code/Source/EditorColliderComponent.cpp index c65cd18d9f..1c96c7f966 100644 --- a/Gems/PhysX/Code/Source/EditorColliderComponent.cpp +++ b/Gems/PhysX/Code/Source/EditorColliderComponent.cpp @@ -189,7 +189,7 @@ namespace PhysX ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/PhysXCollider.svg") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/PhysXCollider.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/physx-collider/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/physx-collider/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement(AZ::Edit::UIHandlers::Default, &EditorColliderComponent::m_configuration, "Collider Configuration", "Configuration of the collider") ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) diff --git a/Gems/PhysX/Code/Source/EditorForceRegionComponent.cpp b/Gems/PhysX/Code/Source/EditorForceRegionComponent.cpp index b857273c64..3dc99a5427 100644 --- a/Gems/PhysX/Code/Source/EditorForceRegionComponent.cpp +++ b/Gems/PhysX/Code/Source/EditorForceRegionComponent.cpp @@ -171,7 +171,7 @@ namespace PhysX ->Attribute(AZ::Edit::Attributes::Icon, "Icons/Components/ForceRegion.png") ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/Viewport/ForceRegion.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/physx-force-region/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/physx-force-region/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->Attribute(AZ::Edit::Attributes::RequiredService, AZ_CRC("PhysXTriggerService", 0x3a117d7b)) ->DataElement(AZ::Edit::UIHandlers::Default, &EditorForceRegionComponent::m_visibleInEditor, "Visible", "Always show the component in viewport") diff --git a/Gems/PhysX/Code/Source/EditorRigidBodyComponent.cpp b/Gems/PhysX/Code/Source/EditorRigidBodyComponent.cpp index 33da19a07e..69d0b48988 100644 --- a/Gems/PhysX/Code/Source/EditorRigidBodyComponent.cpp +++ b/Gems/PhysX/Code/Source/EditorRigidBodyComponent.cpp @@ -304,7 +304,7 @@ namespace PhysX ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Icons/Components/PhysXRigidBody.svg") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/physx-rigid-body-physics/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/physx-rigid-body-physics/") ->DataElement(0, &EditorRigidBodyComponent::m_config, "Configuration", "Configuration for rigid body physics.") ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) ->Attribute(AZ::Edit::Attributes::ChangeNotify, &EditorRigidBodyComponent::CreateEditorWorldRigidBody) diff --git a/Gems/PhysX/Code/Source/NameConstants.cpp b/Gems/PhysX/Code/Source/NameConstants.cpp index 16928b4499..feb10e0681 100644 --- a/Gems/PhysX/Code/Source/NameConstants.cpp +++ b/Gems/PhysX/Code/Source/NameConstants.cpp @@ -14,7 +14,7 @@ namespace PhysX { const AZStd::string& GetPhysXDocsRoot() { - static const AZStd::string val = "https://docs.o3de.org/docs/user-guide/interactivity/physics/"; + static const AZStd::string val = "https://o3de.org/docs/user-guide/interactivity/physics/"; return val; } } // namespace UXNameConstants diff --git a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp index dc1631e9dd..b767a2b52e 100644 --- a/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp +++ b/Gems/ScriptCanvas/Code/Editor/Components/EditorScriptCanvasComponent.cpp @@ -101,7 +101,7 @@ namespace ScriptCanvasEditor ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("UI", 0x27ff46b0)) ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Level", 0x9aeacc13)) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/script-canvas/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/script-canvas/") ->DataElement(AZ::Edit::UIHandlers::Default, &EditorScriptCanvasComponent::m_scriptCanvasAssetHolder, "Script Canvas Asset", "Script Canvas asset associated with this component") ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) ->DataElement(AZ::Edit::UIHandlers::Default, &EditorScriptCanvasComponent::m_editableData, "Properties", "Script Canvas Graph Properties") diff --git a/Gems/StartingPointInput/Code/Source/InputConfigurationComponent.cpp b/Gems/StartingPointInput/Code/Source/InputConfigurationComponent.cpp index 1b925a09ce..c4f415f9d6 100644 --- a/Gems/StartingPointInput/Code/Source/InputConfigurationComponent.cpp +++ b/Gems/StartingPointInput/Code/Source/InputConfigurationComponent.cpp @@ -54,7 +54,7 @@ namespace StartingPointInput ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/InputConfig.png") ->Attribute(AZ::Edit::Attributes::PrimaryAssetType, AZ::AzTypeInfo::Uuid()) ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game")) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/input/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/input/") ->DataElement(AZ::Edit::UIHandlers::Default, &InputConfigurationComponent::m_inputEventBindingsAsset, "Input to event bindings", "Asset containing input to event binding information.") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) diff --git a/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataColliderComponent.h b/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataColliderComponent.h index ba8a71cf22..005a800eb6 100644 --- a/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataColliderComponent.h +++ b/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataColliderComponent.h @@ -28,6 +28,6 @@ namespace SurfaceData static constexpr const char* const s_componentDescription = "Enables a physics collider to emit surface tags"; static constexpr const char* const s_icon = "Editor/Icons/Components/SurfaceData.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/SurfaceData.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataShapeComponent.h b/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataShapeComponent.h index 41e94d7444..43bfda1a98 100644 --- a/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataShapeComponent.h +++ b/Gems/SurfaceData/Code/Source/Editor/EditorSurfaceDataShapeComponent.h @@ -28,6 +28,6 @@ namespace SurfaceData static constexpr const char* const s_componentDescription = "Enables a shape to emit surface tags"; static constexpr const char* const s_icon = "Editor/Icons/Components/SurfaceData.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/SurfaceData.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp b/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp index e0e240c814..0034e35854 100644 --- a/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp +++ b/Gems/Vegetation/Code/Source/AreaSystemComponent.cpp @@ -307,7 +307,7 @@ namespace Vegetation ->Attribute(AZ::Edit::Attributes::Category, "Vegetation") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System", 0xc94d118b)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/") ->DataElement(0, &AreaSystemComponent::m_configuration, "Configuration", "") ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) ; diff --git a/Gems/Vegetation/Code/Source/Debugger/EditorAreaDebugComponent.h b/Gems/Vegetation/Code/Source/Debugger/EditorAreaDebugComponent.h index 8f117598a6..9655883927 100644 --- a/Gems/Vegetation/Code/Source/Debugger/EditorAreaDebugComponent.h +++ b/Gems/Vegetation/Code/Source/Debugger/EditorAreaDebugComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Enables debug visualizations for vegetation layers"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Debugger/EditorDebugComponent.h b/Gems/Vegetation/Code/Source/Debugger/EditorDebugComponent.h index 0558e698aa..62649c134b 100644 --- a/Gems/Vegetation/Code/Source/Debugger/EditorDebugComponent.h +++ b/Gems/Vegetation/Code/Source/Debugger/EditorDebugComponent.h @@ -29,7 +29,7 @@ namespace Vegetation static constexpr const char* const s_componentDescription = ""; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; protected: void OnDumpDataToFile(); diff --git a/Gems/Vegetation/Code/Source/Editor/EditorAreaBlenderComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorAreaBlenderComponent.h index c9652e1c86..2a78b5cda0 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorAreaBlenderComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorAreaBlenderComponent.h @@ -32,7 +32,7 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Combines a collection of vegetation areas and applies them in a specified order"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; private: void ForceOneEntry(); diff --git a/Gems/Vegetation/Code/Source/Editor/EditorBlockerComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorBlockerComponent.h index 82e5b9f534..42b209d99e 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorBlockerComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorBlockerComponent.h @@ -27,6 +27,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Defines an area in which dynamic vegetation cannot be placed"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListCombinerComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListCombinerComponent.h index 0d7ad1defe..8eca31c892 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListCombinerComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListCombinerComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Provides a list of vegetation descriptor providers"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListComponent.h index 1979f685b3..ec57d3c147 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorDescriptorListComponent.h @@ -31,7 +31,7 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Provides a set of vegetation descriptors"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; private: void ForceOneEntry(); diff --git a/Gems/Vegetation/Code/Source/Editor/EditorDescriptorWeightSelectorComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorDescriptorWeightSelectorComponent.h index e722ebfcf0..d8ee99500f 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorDescriptorWeightSelectorComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorDescriptorWeightSelectorComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Selects vegetation assets based on their weight"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorDistanceBetweenFilterComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorDistanceBetweenFilterComponent.h index e44e4283da..4804b21336 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorDistanceBetweenFilterComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorDistanceBetweenFilterComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Defines the minimum distance required between vegetation instances"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationFilter.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationFilter.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorDistributionFilterComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorDistributionFilterComponent.h index a593b11cdd..b35d91bea8 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorDistributionFilterComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorDistributionFilterComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Limits vegetation to only place within the specified value ranges"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationFilter.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationFilter.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorLevelSettingsComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorLevelSettingsComponent.h index 0f9e2659e0..ab255627cf 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorLevelSettingsComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorLevelSettingsComponent.h @@ -24,7 +24,7 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "The vegetation system settings for this level/map."; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; private: AZ::u32 ConfigurationChanged() override; diff --git a/Gems/Vegetation/Code/Source/Editor/EditorMeshBlockerComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorMeshBlockerComponent.h index 7e91cf19d6..e63260b4d6 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorMeshBlockerComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorMeshBlockerComponent.h @@ -40,7 +40,7 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Prevents vegetation from being placed in the mesh"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; private: bool m_drawDebugBounds = false; diff --git a/Gems/Vegetation/Code/Source/Editor/EditorPositionModifierComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorPositionModifierComponent.h index 3f5872b1d2..79667f9b4e 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorPositionModifierComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorPositionModifierComponent.h @@ -29,6 +29,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Offsets the position of the vegetation"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorReferenceShapeComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorReferenceShapeComponent.h index d139a677f8..9c546d77ab 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorReferenceShapeComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorReferenceShapeComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Enables the entity to reference and reuse shape entities"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorRotationModifierComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorRotationModifierComponent.h index 44e2ac4671..4eaa2190a0 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorRotationModifierComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorRotationModifierComponent.h @@ -30,6 +30,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Offsets the rotation of the vegetation"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorScaleModifierComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorScaleModifierComponent.h index f5eb4f2a63..95a3c1d00d 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorScaleModifierComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorScaleModifierComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Offsets the scale of the vegetation"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetatioModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorShapeIntersectionFilterComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorShapeIntersectionFilterComponent.h index db54cc29f0..00fdfdada0 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorShapeIntersectionFilterComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorShapeIntersectionFilterComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Enable or disable placing vegetation if the entity intersects a shape"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationFilter.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationFilter.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorSlopeAlignmentModifierComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorSlopeAlignmentModifierComponent.h index 7d124cfde1..810df7d456 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorSlopeAlignmentModifierComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorSlopeAlignmentModifierComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Offsets the orientation of the vegetation relative to a surface angle"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationModifier.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationModifier.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorSpawnerComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorSpawnerComponent.h index 417e98099e..328b34af7a 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorSpawnerComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorSpawnerComponent.h @@ -28,6 +28,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Creates dynamic vegetation in a specified area"; static constexpr const char* const s_icon = "Editor/Icons/Components/Vegetation.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/Vegetation.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/vegetation-layer-spawner/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/vegetation-layer-spawner/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceAltitudeFilterComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceAltitudeFilterComponent.h index bdc2dff566..1879858a36 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceAltitudeFilterComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceAltitudeFilterComponent.h @@ -26,7 +26,7 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Limits vegetation to only place within the specified height range"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationFilter.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationFilter.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; AZ::u32 ConfigurationChanged() override; }; diff --git a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskDepthFilterComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskDepthFilterComponent.h index 3a9a581682..209910fac2 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskDepthFilterComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskDepthFilterComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Limits vegetation to only place within a specified depth between two surface tags"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationFilter.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationFilter.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskFilterComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskFilterComponent.h index 8d1b7127f2..5137aa471e 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskFilterComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceMaskFilterComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Filters out vegetation based on surface mask-to-tag mappings"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationFilter.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationFilter.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceSlopeFilterComponent.h b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceSlopeFilterComponent.h index 2ba1227aaa..66b2c2ad18 100644 --- a/Gems/Vegetation/Code/Source/Editor/EditorSurfaceSlopeFilterComponent.h +++ b/Gems/Vegetation/Code/Source/Editor/EditorSurfaceSlopeFilterComponent.h @@ -25,6 +25,6 @@ namespace Vegetation static constexpr const char* const s_componentDescription = "Limits vegetation to only place within the specified surface angles"; static constexpr const char* const s_icon = "Editor/Icons/Components/VegetationFilter.svg"; static constexpr const char* const s_viewportIcon = "Editor/Icons/Components/Viewport/VegetationFilter.png"; - static constexpr const char* const s_helpUrl = "https://docs.o3de.org/docs/user-guide/components/reference/"; + static constexpr const char* const s_helpUrl = "https://o3de.org/docs/user-guide/components/reference/"; }; } diff --git a/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp b/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp index 30fb603420..f9c1fbe735 100644 --- a/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp +++ b/Gems/Vegetation/Code/Source/InstanceSystemComponent.cpp @@ -95,7 +95,7 @@ namespace Vegetation ->Attribute(AZ::Edit::Attributes::Category, "Vegetation") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("System", 0xc94d118b)) ->Attribute(AZ::Edit::Attributes::AutoExpand, true) - ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/") + ->Attribute(AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/") ->DataElement(0, &InstanceSystemComponent::m_configuration, "Configuration", "") ->Attribute(AZ::Edit::Attributes::Visibility, AZ::Edit::PropertyVisibility::ShowChildrenOnly) ; diff --git a/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp b/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp index ece270ace4..58f3b36aab 100644 --- a/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp +++ b/Gems/WhiteBox/Code/Source/Components/EditorWhiteBoxColliderComponent.cpp @@ -45,7 +45,7 @@ namespace WhiteBox ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute( AZ::Edit::Attributes::HelpPageURL, - "https://docs.o3de.org/docs/user-guide/components/reference/white-box-collider/") + "https://o3de.org/docs/user-guide/components/reference/white-box-collider/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement( AZ::Edit::UIHandlers::Default, &EditorWhiteBoxColliderComponent::m_physicsColliderConfiguration, diff --git a/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp b/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp index 13c2123709..49a1fbd820 100644 --- a/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp +++ b/Gems/WhiteBox/Code/Source/EditorWhiteBoxComponent.cpp @@ -197,7 +197,7 @@ namespace WhiteBox ->Attribute(AZ::Edit::Attributes::ViewportIcon, "Editor/Icons/Components/Viewport/WhiteBox.png") ->Attribute(AZ::Edit::Attributes::AppearsInAddComponentMenu, AZ_CRC("Game", 0x232b318c)) ->Attribute( - AZ::Edit::Attributes::HelpPageURL, "https://docs.o3de.org/docs/user-guide/components/reference/white-box/") + AZ::Edit::Attributes::HelpPageURL, "https://o3de.org/docs/user-guide/components/reference/white-box/") ->Attribute(AZ::Edit::Attributes::AutoExpand, true) ->DataElement( AZ::Edit::UIHandlers::ComboBox, &EditorWhiteBoxComponent::m_defaultShape, "Default Shape", From ba0f1ad75854c2659b3a015c731bd53ef2162d41 Mon Sep 17 00:00:00 2001 From: AMZN-nggieber <52797929+AMZN-nggieber@users.noreply.github.com> Date: Fri, 25 Jun 2021 13:54:02 -0700 Subject: [PATCH 47/56] Updated Project Manager O3DE Logos with Rotated Squares Version (#1595) --- AutomatedTesting/preview.png | 4 ++-- .../Resources/DefaultProjectImage.png | 4 ++-- .../ProjectManager/Resources/DefaultTemplate.png | 4 ++-- Code/Tools/ProjectManager/Resources/o3de.svg | 15 ++++++++++++--- Templates/AssetGem/Template/preview.png | 4 ++-- Templates/DefaultGem/Template/preview.png | 4 ++-- Templates/DefaultProject/Template/preview.png | 4 ++-- Templates/MinimalProject/Template/preview.png | 4 ++-- 8 files changed, 26 insertions(+), 17 deletions(-) diff --git a/AutomatedTesting/preview.png b/AutomatedTesting/preview.png index c6928d31fc..82234dbf6b 100644 --- a/AutomatedTesting/preview.png +++ b/AutomatedTesting/preview.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b9cd9d6f67440c193a85969ec5c082c6343e6d1fff3b6f209a0a6931eb22dd47 -size 2949 +oid sha256:1cf8339fb51f82a68d2ab475c0476960e75a79d96d239c5b7cd272fbe4990ffe +size 2770 diff --git a/Code/Tools/ProjectManager/Resources/DefaultProjectImage.png b/Code/Tools/ProjectManager/Resources/DefaultProjectImage.png index a3e13481c9..82234dbf6b 100644 --- a/Code/Tools/ProjectManager/Resources/DefaultProjectImage.png +++ b/Code/Tools/ProjectManager/Resources/DefaultProjectImage.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a5881b8d6cfbc4ceefb14ab96844484fe19407ee030824768f9fcce2f729d35 -size 2949 +oid sha256:1cf8339fb51f82a68d2ab475c0476960e75a79d96d239c5b7cd272fbe4990ffe +size 2770 diff --git a/Code/Tools/ProjectManager/Resources/DefaultTemplate.png b/Code/Tools/ProjectManager/Resources/DefaultTemplate.png index 2634c383fc..0f393ac886 100644 --- a/Code/Tools/ProjectManager/Resources/DefaultTemplate.png +++ b/Code/Tools/ProjectManager/Resources/DefaultTemplate.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8358f4dad9878c662b9819b2b346622af691eb45f8eddc28fff79a50650ae6cf -size 2503 +oid sha256:7ac9dd09bde78f389e3725ac49d61eff109857e004840bc0bc3881739df9618d +size 2217 diff --git a/Code/Tools/ProjectManager/Resources/o3de.svg b/Code/Tools/ProjectManager/Resources/o3de.svg index bb6e596a00..a6bf0e78a8 100644 --- a/Code/Tools/ProjectManager/Resources/o3de.svg +++ b/Code/Tools/ProjectManager/Resources/o3de.svg @@ -1,3 +1,12 @@ - - - + + + O3DE-Circle-LogoMark-REV + + + + + + + + + \ No newline at end of file diff --git a/Templates/AssetGem/Template/preview.png b/Templates/AssetGem/Template/preview.png index 2f1ed47754..0f393ac886 100644 --- a/Templates/AssetGem/Template/preview.png +++ b/Templates/AssetGem/Template/preview.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d6204c6730e5675791765ca194e9b1cbec282208e280507de830afc2805e5fa -size 41127 +oid sha256:7ac9dd09bde78f389e3725ac49d61eff109857e004840bc0bc3881739df9618d +size 2217 diff --git a/Templates/DefaultGem/Template/preview.png b/Templates/DefaultGem/Template/preview.png index 2f1ed47754..0f393ac886 100644 --- a/Templates/DefaultGem/Template/preview.png +++ b/Templates/DefaultGem/Template/preview.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:6d6204c6730e5675791765ca194e9b1cbec282208e280507de830afc2805e5fa -size 41127 +oid sha256:7ac9dd09bde78f389e3725ac49d61eff109857e004840bc0bc3881739df9618d +size 2217 diff --git a/Templates/DefaultProject/Template/preview.png b/Templates/DefaultProject/Template/preview.png index a3e13481c9..0f393ac886 100644 --- a/Templates/DefaultProject/Template/preview.png +++ b/Templates/DefaultProject/Template/preview.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a5881b8d6cfbc4ceefb14ab96844484fe19407ee030824768f9fcce2f729d35 -size 2949 +oid sha256:7ac9dd09bde78f389e3725ac49d61eff109857e004840bc0bc3881739df9618d +size 2217 diff --git a/Templates/MinimalProject/Template/preview.png b/Templates/MinimalProject/Template/preview.png index a3e13481c9..0f393ac886 100644 --- a/Templates/MinimalProject/Template/preview.png +++ b/Templates/MinimalProject/Template/preview.png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4a5881b8d6cfbc4ceefb14ab96844484fe19407ee030824768f9fcce2f729d35 -size 2949 +oid sha256:7ac9dd09bde78f389e3725ac49d61eff109857e004840bc0bc3881739df9618d +size 2217 From 67214859465a3bab646605766372235d2e79173f Mon Sep 17 00:00:00 2001 From: mgwynn Date: Fri, 25 Jun 2021 17:03:02 -0400 Subject: [PATCH 48/56] Added parameter names to virtual function definitions for intellisense --- .../AzCore/AzCore/NativeUI/NativeUIRequests.h | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h b/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h index e8cfb8d5fe..49a81ff18a 100644 --- a/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h +++ b/Code/Framework/AzCore/AzCore/NativeUI/NativeUIRequests.h @@ -40,9 +40,9 @@ namespace AZ::NativeUI //! Waits for user to select an option before execution continues //! Returns the option string selected by the user virtual AZStd::string DisplayBlockingDialog( - [[maybe_unused]] const AZStd::string&, - [[maybe_unused]] const AZStd::string&, - [[maybe_unused]] const AZStd::vector&) const + [[maybe_unused]] const AZStd::string& title, + [[maybe_unused]] const AZStd::string& message, + [[maybe_unused]] const AZStd::vector& options) const { return {}; } @@ -50,8 +50,8 @@ namespace AZ::NativeUI //! Waits for user to select an option ('Ok' or optionally 'Cancel') before execution continues //! Returns the option string selected by the user virtual AZStd::string DisplayOkDialog( - [[maybe_unused]] const AZStd::string&, - [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] const AZStd::string& title, + [[maybe_unused]] const AZStd::string& message, [[maybe_unused]] bool showCancel) const { return {}; @@ -60,8 +60,8 @@ namespace AZ::NativeUI //! Waits for user to select an option ('Yes', 'No' or optionally 'Cancel') before execution continues //! Returns the option string selected by the user virtual AZStd::string DisplayYesNoDialog( - [[maybe_unused]] const AZStd::string&, - [[maybe_unused]] const AZStd::string&, + [[maybe_unused]] const AZStd::string& title, + [[maybe_unused]] const AZStd::string& message, [[maybe_unused]] bool showCancel) const { return {}; @@ -69,7 +69,7 @@ namespace AZ::NativeUI //! Displays an assert dialog box //! Returns the action selected by the user - virtual AssertAction DisplayAssertDialog([[maybe_unused]] const AZStd::string&) const { return AssertAction::NONE; } + virtual AssertAction DisplayAssertDialog([[maybe_unused]] const AZStd::string& message) const { return AssertAction::NONE; } //! Set the operation mode of the native UI systen void SetMode(NativeUI::Mode mode) From 2ad8804c0479980a6f4db144db4e0949b35ed798 Mon Sep 17 00:00:00 2001 From: Eric Phister <52085794+amzn-phist@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:40:36 -0500 Subject: [PATCH 49/56] Fixes icons not displaying in AudioControlsEditor (#1596) The qrc files appeared to be set up correctly, but needed to add a Q_INIT_RESOURCE call to the code. --- .../Code/Source/Editor/AudioSystemEditor_wwise.cpp | 11 +++++++++++ .../Code/Source/Editor/AudioSystemEditor_wwise.h | 2 +- .../Code/Source/Editor/AudioControlsEditorWindow.cpp | 7 +++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.cpp b/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.cpp index ac7aa7bd04..b585c00f19 100644 --- a/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.cpp +++ b/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.cpp @@ -23,6 +23,11 @@ #include #include +void InitWwiseResources() +{ + Q_INIT_RESOURCE(EditorWwise); +} + namespace AudioControls { //-------------------------------------------------------------------------------------------// @@ -80,6 +85,12 @@ namespace AudioControls return ""; } + //-------------------------------------------------------------------------------------------// + CAudioSystemEditor_wwise::CAudioSystemEditor_wwise() + { + InitWwiseResources(); + } + //-------------------------------------------------------------------------------------------// void CAudioSystemEditor_wwise::Reload() { diff --git a/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.h b/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.h index 23179e62de..005123d20f 100644 --- a/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.h +++ b/Gems/AudioEngineWwise/Code/Source/Editor/AudioSystemEditor_wwise.h @@ -63,7 +63,7 @@ namespace AudioControls friend class CAudioWwiseLoader; public: - CAudioSystemEditor_wwise() = default; + CAudioSystemEditor_wwise(); ~CAudioSystemEditor_wwise() override = default; ////////////////////////////////////////////////////////// diff --git a/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp b/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp index abe5a8a58e..6ffcdb0262 100644 --- a/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp +++ b/Gems/AudioSystem/Code/Source/Editor/AudioControlsEditorWindow.cpp @@ -30,6 +30,11 @@ #include #include +void InitACEResources() +{ + Q_INIT_RESOURCE(AudioControlsEditorUI); +} + namespace AudioControls { //-------------------------------------------------------------------------------------------// @@ -40,6 +45,8 @@ namespace AudioControls CAudioControlsEditorWindow::CAudioControlsEditorWindow(QWidget* parent) : QMainWindow(parent) { + InitACEResources(); + setupUi(this); m_pATLModel = CAudioControlsEditorPlugin::GetATLModel(); From 4a3f4f6f14bb1000fdb573b6cdb325f933dae186 Mon Sep 17 00:00:00 2001 From: amzn-hdoke <61443753+hdoke@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:36:52 -0700 Subject: [PATCH 50/56] [AWS][Attribution] Consent dialog is generated on first launch (#1593) * Adding AWSAttribution Consent panel * Remove commented code * Create AWSCoreAttributionConsentDialog class. Move hard coded strings to static const variables * Remove #pragma from cpp --- .../Editor/EditorPreferencesPageAWS.cpp | 8 +- .../AWSCoreAttributionConsentDialog.h | 26 ++++ .../Attribution/AWSCoreAttributionManager.h | 9 +- .../AWSCoreAttributionConsentDialog.cpp | 44 +++++++ .../Attribution/AWSCoreAttributionManager.cpp | 111 ++++++++++++++---- .../AWSCoreAttributionSystemComponent.cpp | 1 - .../AWSCoreAttributionManagerTest.cpp | 88 +++++++++++--- Gems/AWSCore/Code/awscore_editor_files.cmake | 2 + 8 files changed, 245 insertions(+), 44 deletions(-) create mode 100644 Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionConsentDialog.h create mode 100644 Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionConsentDialog.cpp diff --git a/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp b/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp index 5ba4e94d9a..6db7daa92e 100644 --- a/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp +++ b/Code/Sandbox/Editor/EditorPreferencesPageAWS.cpp @@ -27,13 +27,13 @@ void CEditorPreferencesPage_AWS::Reflect(AZ::SerializeContext& serialize) if (editContext) { editContext->Class("Options", "") - ->DataElement(AZ::Edit::UIHandlers::CheckBox, &UsageOptions::m_awsAttributionEnabled, "Send Metrics usage to AWS", - "Reports Gem usage to AWS on Editor launch"); + ->DataElement(AZ::Edit::UIHandlers::CheckBox, &UsageOptions::m_awsAttributionEnabled, "Allow O3DE to send information about your use of AWS Core Gem to AWS", + ""); editContext->Class("AWS Preferences", "AWS Preferences") ->ClassElement(AZ::Edit::ClassElements::EditorData, "") ->Attribute(AZ::Edit::Attributes::Visibility, AZ_CRC("PropertyVisibility_ShowChildrenOnly", 0xef428f20)) - ->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_AWS::m_usageOptions, "AWS Usage Data", "AWS Usage Options"); + ->DataElement(AZ::Edit::UIHandlers::Default, &CEditorPreferencesPage_AWS::m_usageOptions, "AWS Data Collection and Use", "AWS Data Collection and Use"); } } @@ -52,7 +52,7 @@ CEditorPreferencesPage_AWS::~CEditorPreferencesPage_AWS() const char* CEditorPreferencesPage_AWS::GetTitle() { - return "AWS"; + return "Cloud"; } QIcon& CEditorPreferencesPage_AWS::GetIcon() diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionConsentDialog.h b/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionConsentDialog.h new file mode 100644 index 0000000000..88ba1b0f9a --- /dev/null +++ b/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionConsentDialog.h @@ -0,0 +1,26 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#pragma once + +#include + +#include + +namespace AWSCore +{ + //! Defines AWSCoreAttributionConsent QT dialog as QT message box. + class AWSCoreAttributionConsentDialog : + public QMessageBox + { + public: + AZ_CLASS_ALLOCATOR(AWSCoreAttributionConsentDialog, AZ::SystemAllocator, 0); + AWSCoreAttributionConsentDialog(); + virtual ~AWSCoreAttributionConsentDialog() = default; + + }; +} // namespace AWSCore diff --git a/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionManager.h b/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionManager.h index 2d15688cbd..5e4ad8c965 100644 --- a/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionManager.h +++ b/Gems/AWSCore/Code/Include/Private/Editor/Attribution/AWSCoreAttributionManager.h @@ -11,11 +11,13 @@ #include #include +#include namespace AWSCore { //! Manages operational metrics for AWS gems class AWSAttributionManager + : private AzToolsFramework::EditorEvents::Bus::Handler { public: AWSAttributionManager(); @@ -32,16 +34,21 @@ namespace AWSCore virtual void UpdateMetric(AttributionMetric& metric); void UpdateLastSend(); void SetApiEndpointAndRegion(ServiceAPI::AWSAttributionRequestJob::Config* config); + virtual void ShowConsentDialog(); private: bool ShouldGenerateMetric() const; - + bool CheckAWSCredentialsConfigured(); + bool CheckConsentShown(); AZStd::string GetEngineVersion() const; AZStd::string GetPlatform() const; void GetActiveAWSGems(AZStd::vector& gemNames); void SaveSettingsRegistryFile(); + // AzToolsFramework::EditorEvents interface implementation + void NotifyMainWindowInitialized(QMainWindow* mainWindow) override; + AZStd::unique_ptr m_settingsRegistry; }; diff --git a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionConsentDialog.cpp b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionConsentDialog.cpp new file mode 100644 index 0000000000..d67c53f389 --- /dev/null +++ b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionConsentDialog.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) Contributors to the Open 3D Engine Project + * + * SPDX-License-Identifier: Apache-2.0 OR MIT + * + */ + +#include + +#include +#include + +namespace AWSCore +{ + constexpr const char* AWSAttributionConsentDialogTitle = "AWS Core Gem Usage Agreement"; + constexpr const char* AWSAttributionConsentDialogMessage = "The AWS Core Gem has detected credentials for an Amazon Web Services account for this
\ + instance of O3DE. Click here to learn more about AWS integration, including how to
\ + manage your AWS credentials.

\ + Please note: when credentials are detected, AWS Core Gem sends telemetry data to AWS,
\ + which helps us improve AWS services for O3DE. You can change this setting below, and at
\ + any time in Settings: Global Preferences. Data sent is subject to the AWS Privacy Policy.
\ + Click here to learn more about what data is sent to AWS."; + + constexpr const char* AWSAttributionConsentDialogCheckboxText = "Please share the information about my use of AWS Core Gem with AWS."; + + AWSCoreAttributionConsentDialog::AWSCoreAttributionConsentDialog() + { + this->setWindowTitle(AWSAttributionConsentDialogTitle); + this->setText(AWSAttributionConsentDialogMessage); + QCheckBox* checkBox = new QCheckBox(AWSAttributionConsentDialogCheckboxText); + checkBox->setChecked(true); + this->setCheckBox(checkBox); + this->setStandardButtons(QMessageBox::Save | QMessageBox::Cancel); + this->setDefaultButton(QMessageBox::Save); + this->button(QMessageBox::Cancel)->hide(); + this->setIcon(QMessageBox::Information); + QGridLayout* layout = (QGridLayout*)this->layout(); + if (layout) + { + layout->setVerticalSpacing(20); + layout->setHorizontalSpacing(10); + } + } +} // namespace AWSCore diff --git a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp index b5788fdc17..c649e509be 100644 --- a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp +++ b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionManager.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -19,10 +20,10 @@ #include #include #include +#include #include -#include - +#include namespace AWSCore @@ -34,6 +35,7 @@ namespace AWSCore constexpr char AWSAttributionEnabledKey[] = "/Amazon/AWS/Preferences/AWSAttributionEnabled"; constexpr char AWSAttributionDelaySecondsKey[] = "/Amazon/AWS/Preferences/AWSAttributionDelaySeconds"; constexpr char AWSAttributionLastTimeStampKey[] = "/Amazon/AWS/Preferences/AWSAttributionLastTimeStamp"; + constexpr char AWSAttributionConsentShown[] = "/Amazon/AWS/Preferences/AWSAttributionConsentShown"; constexpr char AWSAttributionApiId[] = "2zxvvmv8d7"; constexpr char AWSAttributionChinaApiId[] = ""; constexpr char AWSAttributionApiStage[] = "prod"; @@ -42,19 +44,49 @@ namespace AWSCore AWSAttributionManager::AWSAttributionManager() { m_settingsRegistry = AZStd::make_unique(); + AzToolsFramework::EditorEvents::Bus::Handler::BusConnect(); } AWSAttributionManager::~AWSAttributionManager() { + AzToolsFramework::EditorEvents::Bus::Handler::BusDisconnect(); m_settingsRegistry.reset(); } void AWSAttributionManager::Init() { + AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetInstance(); + AZ_Assert(fileIO, "File IO is not initialized."); + + // Resolve path to editor_aws_preferences.setreg + AZStd::string editorAWSPreferencesFilePath = + AZStd::string::format("@user@/%s/%s", AZ::SettingsRegistryInterface::RegistryFolder, EditorAWSPreferencesFileName); + AZStd::array resolvedPathAWSPreference{}; + if (!fileIO->ResolvePath(editorAWSPreferencesFilePath.c_str(), resolvedPathAWSPreference.data(), resolvedPathAWSPreference.size())) + { + AZ_Warning("AWSAttributionManager", false, "Error resolving path %s", resolvedPathAWSPreference.data()); + return; + } + + if (fileIO->Exists(resolvedPathAWSPreference.data())) + { + m_settingsRegistry->MergeSettingsFile( + resolvedPathAWSPreference.data(), AZ::SettingsRegistryInterface::Format::JsonMergePatch, ""); + } } void AWSAttributionManager::MetricCheck() { + if (!CheckAWSCredentialsConfigured()) + { + return; + } + + if (!CheckConsentShown()) + { + ShowConsentDialog(); + } + if (ShouldGenerateMetric()) { // Gather metadata and assemble metric @@ -67,30 +99,12 @@ namespace AWSCore } bool AWSAttributionManager::ShouldGenerateMetric() const - { - AZ::IO::FileIOBase* fileIO = AZ::IO::FileIOBase::GetInstance(); - AZ_Assert(fileIO, "File IO is not initialized."); - - // Resolve path to editor_aws_preferences.setreg - AZStd::string editorAWSPreferencesFilePath = - AZStd::string::format("@user@/%s/%s", AZ::SettingsRegistryInterface::RegistryFolder, EditorAWSPreferencesFileName); - AZStd::array resolvedPathAWSPreference{}; - if (!fileIO->ResolvePath(editorAWSPreferencesFilePath.c_str(), resolvedPathAWSPreference.data(), resolvedPathAWSPreference.size())) - { - AZ_Warning("AWSAttributionManager", false, "Error resolving path %s", resolvedPathAWSPreference.data()); - return false; - } - - if (fileIO->Exists(resolvedPathAWSPreference.data())) - { - m_settingsRegistry->MergeSettingsFile(resolvedPathAWSPreference.data(), AZ::SettingsRegistryInterface::Format::JsonMergePatch, ""); - } - + { bool awsAttributionEnabled = false; if (!m_settingsRegistry->Get(awsAttributionEnabled, AWSAttributionEnabledKey)) { - // If not found default to sending the metric. - awsAttributionEnabled = true; + AZ_Warning("AWSAttributionManager", false, "Key %s should be set by consent window", AWSAttributionEnabledKey); + return false; } if (!awsAttributionEnabled) @@ -124,6 +138,50 @@ namespace AWSCore return false; } + bool AWSAttributionManager::CheckAWSCredentialsConfigured() + { + AWSCore::AWSCredentialResult credentialResult; + AWSCore::AWSCredentialRequestBus::BroadcastResult(credentialResult, &AWSCore::AWSCredentialRequests::GetCredentialsProvider); + if (credentialResult.result) + { + std::shared_ptr provider = credentialResult.result; + auto creds = provider->GetAWSCredentials(); + if (!creds.IsEmpty()) + { + return true; + } + } + return false; + } + + void AWSAttributionManager::ShowConsentDialog() + { + AWSCoreAttributionConsentDialog* msgBox = aznew AWSCoreAttributionConsentDialog(); + int ret = msgBox->exec(); + m_settingsRegistry->Set(AWSAttributionConsentShown, true); + switch (ret) + { + case QMessageBox::Save: + m_settingsRegistry->Set(AWSAttributionEnabledKey, msgBox->checkBox()); + break; + case QMessageBox::Cancel: + default: + m_settingsRegistry->Set(AWSAttributionEnabledKey, false); + break; + } + + SaveSettingsRegistryFile(); + delete msgBox; + } + + // Waiting on Editor QT main window to be initialized before showing consent window. + // This will have the Editor loading screen in the background when showing consent dialog. + void AWSAttributionManager::NotifyMainWindowInitialized(QMainWindow* mainWindow) + { + AZ_UNUSED(mainWindow); + MetricCheck(); + } + void AWSAttributionManager::SaveSettingsRegistryFile() { AZ::Job* job = AZ::CreateJobFunction( @@ -199,6 +257,13 @@ namespace AWSCore AWSResourceMappingUtils::FormatRESTApiUrl(apiId, config->region.value().c_str(), AWSAttributionApiStage).c_str(); } + bool AWSAttributionManager::CheckConsentShown() + { + bool consentShown = false; + m_settingsRegistry->Get(consentShown, AWSAttributionConsentShown); + return consentShown; + } + AZStd::string AWSAttributionManager::GetEngineVersion() const { AZStd::string engineVersion; diff --git a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionSystemComponent.cpp b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionSystemComponent.cpp index 8a0f8a5790..e19f899905 100644 --- a/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionSystemComponent.cpp +++ b/Gems/AWSCore/Code/Source/Editor/Attribution/AWSCoreAttributionSystemComponent.cpp @@ -64,7 +64,6 @@ namespace AWSCore void AWSAttributionSystemComponent::Activate() { - m_manager->MetricCheck(); } void AWSAttributionSystemComponent::Deactivate() diff --git a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp index a99c1b3015..b151596d48 100644 --- a/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp +++ b/Gems/AWSCore/Code/Tests/Editor/Attribution/AWSCoreAttributionManagerTest.cpp @@ -7,6 +7,7 @@ #include #include +#include #include #include @@ -102,6 +103,30 @@ namespace AWSAttributionUnitTest MOCK_METHOD1(IsModuleLoaded, bool(const char* modulePath)); }; + class AWSCredentialRquestsBusMock + : public AWSCore::AWSCredentialRequestBus::Handler + { + public: + AWSCredentialRquestsBusMock() + { + m_provider = std::make_shared("TestAccessKey", "TestSecreKey", "TestSession"); + AWSCore::AWSCredentialRequestBus::Handler::BusConnect(); + ON_CALL(*this, GetCredentialsProvider()).WillByDefault(testing::Return(m_provider)); + ON_CALL(*this, GetCredentialHandlerOrder()).WillByDefault(testing::Return(CredentialHandlerOrder::DEFAULT_CREDENTIAL_HANDLER)); + } + + ~AWSCredentialRquestsBusMock() + { + AWSCore::AWSCredentialRequestBus::Handler::BusDisconnect(); + m_provider.reset(); + } + + MOCK_CONST_METHOD0(GetCredentialHandlerOrder, int()); + MOCK_METHOD0(GetCredentialsProvider, std::shared_ptr()); + + std::shared_ptr m_provider; + }; + class AWSAttributionManagerMock : public AWSAttributionManager { @@ -109,7 +134,7 @@ namespace AWSAttributionUnitTest using AWSAttributionManager::SubmitMetric; using AWSAttributionManager::UpdateMetric; using AWSAttributionManager::SetApiEndpointAndRegion; - + using AWSAttributionManager::ShowConsentDialog; AWSAttributionManagerMock() { @@ -117,6 +142,7 @@ namespace AWSAttributionUnitTest } MOCK_METHOD1(SubmitMetric, void(AttributionMetric& metric)); + MOCK_METHOD0(ShowConsentDialog, void()); void SubmitMetricMock(AttributionMetric& metric) { @@ -141,6 +167,7 @@ namespace AWSAttributionUnitTest AZStd::unique_ptr m_jobManager; AZStd::array m_resolvedSettingsPath; ModuleManagerRequestBusMock m_moduleManagerRequestBusMock; + AWSCredentialRquestsBusMock m_credentialRequestBusMock; void SetUp() override { @@ -199,16 +226,16 @@ namespace AWSAttributionUnitTest } }; - TEST_F(AttributionManagerTest, MetricsSettings_AttributionDisabled_SkipsSend) + TEST_F(AttributionManagerTest, MetricsSettings_ConsentShown_AttributionDisabled_SkipsSend) { // GIVEN AWSAttributionManagerMock manager; - manager.Init(); CreateFile(m_resolvedSettingsPath.data(), R"({ "Amazon": { "AWS": { "Preferences": { + "AWSAttributionConsentShown": true, "AWSAttributionEnabled": false, "AWSAttributionDelaySeconds": 30 } @@ -216,8 +243,11 @@ namespace AWSAttributionUnitTest } })"); + manager.Init(); + EXPECT_CALL(manager, SubmitMetric(testing::_)).Times(0); EXPECT_CALL(m_moduleManagerRequestBusMock, EnumerateModules(testing::_)).Times(0); + EXPECT_CALL(m_credentialRequestBusMock, GetCredentialsProvider()).Times(1); // WHEN manager.MetricCheck(); @@ -231,25 +261,27 @@ namespace AWSAttributionUnitTest RemoveFile(m_resolvedSettingsPath.data()); } - TEST_F(AttributionManagerTest, AttributionEnabled_NoPreviousTimeStamp_SendSuccess) + TEST_F(AttributionManagerTest, AttributionEnabled_ContentShown_NoPreviousTimeStamp_SendSuccess) { // GIVEN AWSAttributionManagerMock manager; - manager.Init(); CreateFile(m_resolvedSettingsPath.data(), R"({ "Amazon": { "AWS": { "Preferences": { + "AWSAttributionConsentShown": true, "AWSAttributionEnabled": true, "AWSAttributionDelaySeconds": 30, } } } })"); + manager.Init(); EXPECT_CALL(manager, SubmitMetric(testing::_)).Times(1); EXPECT_CALL(m_moduleManagerRequestBusMock, EnumerateModules(testing::_)).Times(1); + EXPECT_CALL(m_credentialRequestBusMock, GetCredentialsProvider()).Times(1); // WHEN manager.MetricCheck(); @@ -264,16 +296,16 @@ namespace AWSAttributionUnitTest RemoveFile(m_resolvedSettingsPath.data()); } - TEST_F(AttributionManagerTest, AttributionEnabled_ValidPreviousTimeStamp_SendSuccess) + TEST_F(AttributionManagerTest, AttributionEnabled_ContentShown_ValidPreviousTimeStamp_SendSuccess) { // GIVEN AWSAttributionManagerMock manager; - manager.Init(); CreateFile(m_resolvedSettingsPath.data(), R"({ "Amazon": { "AWS": { "Preferences": { + "AWSAttributionConsentShown": true, "AWSAttributionEnabled": true, "AWSAttributionDelaySeconds": 30, "AWSAttributionLastTimeStamp": 629400 @@ -282,8 +314,11 @@ namespace AWSAttributionUnitTest } })"); + manager.Init(); + EXPECT_CALL(manager, SubmitMetric(testing::_)).Times(1); EXPECT_CALL(m_moduleManagerRequestBusMock, EnumerateModules(testing::_)).Times(1); + EXPECT_CALL(m_credentialRequestBusMock, GetCredentialsProvider()).Times(1); // WHEN manager.MetricCheck(); @@ -297,17 +332,16 @@ namespace AWSAttributionUnitTest RemoveFile(m_resolvedSettingsPath.data()); } - TEST_F(AttributionManagerTest, AttributionEnabled_DelayNotSatisfied_SendFail) + TEST_F(AttributionManagerTest, AttributionEnabled_ContentShown_DelayNotSatisfied_SendFail) { // GIVEN AWSAttributionManagerMock manager; - manager.Init(); - CreateFile(m_resolvedSettingsPath.data(), R"({ "Amazon": { "AWS": { "Preferences": { + "AWSAttributionConsentShown": true, "AWSAttributionEnabled": true, "AWSAttributionDelaySeconds": 300, "AWSAttributionLastTimeStamp": 0 @@ -316,11 +350,14 @@ namespace AWSAttributionUnitTest } })"); + manager.Init(); + AZ::u64 delayInSeconds = AZStd::chrono::duration_cast(AZStd::chrono::system_clock::now().time_since_epoch()).count(); ASSERT_TRUE(m_settingsRegistry->Set("/Amazon/AWS/Preferences/AWSAttributionLastTimeStamp", delayInSeconds)); EXPECT_CALL(manager, SubmitMetric(testing::_)).Times(1); EXPECT_CALL(m_moduleManagerRequestBusMock, EnumerateModules(testing::_)).Times(1); + EXPECT_CALL(m_credentialRequestBusMock, GetCredentialsProvider()).Times(1); // WHEN manager.MetricCheck(); @@ -334,23 +371,26 @@ namespace AWSAttributionUnitTest RemoveFile(m_resolvedSettingsPath.data()); } - TEST_F(AttributionManagerTest, AttributionEnabledNotFound_SendSuccess) + TEST_F(AttributionManagerTest, AttributionEnabledNotFound_ContentShown_SendFail) { // GIVEN AWSAttributionManagerMock manager; - manager.Init(); CreateFile(m_resolvedSettingsPath.data(), R"({ "Amazon": { "AWS": { "Preferences": { + "AWSAttributionConsentShown": true } } } })"); - EXPECT_CALL(manager, SubmitMetric(testing::_)).Times(1); - EXPECT_CALL(m_moduleManagerRequestBusMock, EnumerateModules(testing::_)).Times(1); + manager.Init(); + + EXPECT_CALL(manager, SubmitMetric(testing::_)).Times(0); + EXPECT_CALL(m_moduleManagerRequestBusMock, EnumerateModules(testing::_)).Times(0); + EXPECT_CALL(m_credentialRequestBusMock, GetCredentialsProvider()).Times(1); // WHEN manager.MetricCheck(); @@ -359,11 +399,29 @@ namespace AWSAttributionUnitTest m_settingsRegistry->MergeSettingsFile(m_resolvedSettingsPath.data(), AZ::SettingsRegistryInterface::Format::JsonMergePatch, ""); AZ::u64 timeStamp = 0; m_settingsRegistry->Get(timeStamp, "/Amazon/AWS/Preferences/AWSAttributionLastTimeStamp"); - ASSERT_TRUE(timeStamp != 0); + ASSERT_TRUE(timeStamp == 0); RemoveFile(m_resolvedSettingsPath.data()); } + TEST_F(AttributionManagerTest, AttributionEnabledNotFound_ContentNotShown_SendFail) + { + // GIVEN + AWSAttributionManagerMock manager; + manager.Init(); + + EXPECT_CALL(manager, SubmitMetric(testing::_)).Times(0); + EXPECT_CALL(m_moduleManagerRequestBusMock, EnumerateModules(testing::_)).Times(0); + EXPECT_CALL(m_credentialRequestBusMock, GetCredentialsProvider()).Times(1); + EXPECT_CALL(manager, ShowConsentDialog()).Times(1); + + // WHEN + manager.MetricCheck(); + + // THEN + ASSERT_FALSE(m_localFileIO->Exists(m_resolvedSettingsPath.data())); + } + TEST_F(AttributionManagerTest, SetApiEndpointAndRegion_Success) { // GIVEN diff --git a/Gems/AWSCore/Code/awscore_editor_files.cmake b/Gems/AWSCore/Code/awscore_editor_files.cmake index 8d8661a224..84c58dee67 100644 --- a/Gems/AWSCore/Code/awscore_editor_files.cmake +++ b/Gems/AWSCore/Code/awscore_editor_files.cmake @@ -12,6 +12,7 @@ set(FILES Include/Private/Editor/Attribution/AWSCoreAttributionManager.h Include/Private/Editor/Attribution/AWSCoreAttributionSystemComponent.h Include/Private/Editor/Attribution/AWSAttributionServiceApi.h + Include/Private/Editor/Attribution/AWSCoreAttributionConsentDialog.h Include/Private/Editor/AWSCoreEditorManager.h Include/Private/Editor/Constants/AWSCoreEditorMenuLinks.h Include/Private/Editor/Constants/AWSCoreEditorMenuNames.h @@ -23,6 +24,7 @@ set(FILES Source/Editor/Attribution/AWSCoreAttributionManager.cpp Source/Editor/Attribution/AWSCoreAttributionSystemComponent.cpp Source/Editor/Attribution/AWSAttributionServiceApi.cpp + Source/Editor/Attribution/AWSCoreAttributionConsentDialog.cpp Source/Editor/UI/AWSCoreEditorMenu.cpp Source/Editor/UI/AWSCoreResourceMappingToolAction.cpp ) From d617e8765bc106a4cf1e87c8b1745c31223cd739 Mon Sep 17 00:00:00 2001 From: amzn-hdoke <61443753+hdoke@users.noreply.github.com> Date: Fri, 25 Jun 2021 16:37:41 -0700 Subject: [PATCH 51/56] Disable AWS gems for Linux and Android release monolithic builds (#1592) * Disable AWS gems for Linux and Android release monolithic builds * Update AWS gems add condition --- AutomatedTesting/Gem/Code/enabled_gems.cmake | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/AutomatedTesting/Gem/Code/enabled_gems.cmake b/AutomatedTesting/Gem/Code/enabled_gems.cmake index f732281487..f27d61908a 100644 --- a/AutomatedTesting/Gem/Code/enabled_gems.cmake +++ b/AutomatedTesting/Gem/Code/enabled_gems.cmake @@ -48,7 +48,14 @@ set(ENABLED_GEMS LyShine HttpRequestor Atom_AtomBridge - AWSCore - AWSClientAuth - AWSMetrics ) + +# TODO remove conditional add once AWSNativeSDK libs are fixed for Android and Linux Monolithic release. +set(aws_excluded_platforms Linux Android) +if (NOT (LY_MONOLITHIC_GAME AND ${PAL_PLATFORM_NAME} IN_LIST aws_excluded_platforms)) + list(APPEND ENABLED_GEMS + AWSCore + AWSClientAuth + AWSMetrics + ) +endif() From b631b78159d094b39bd14b5ed6d28afb52945b8d Mon Sep 17 00:00:00 2001 From: yuriy0 Date: Fri, 25 Jun 2021 12:43:16 -0400 Subject: [PATCH 52/56] Generate texture thumbnails in a job thread (#1571) --- .../ImageThumbnailSystemComponent.cpp | 90 +++++++++++-------- .../Thumbnail/ImageThumbnailSystemComponent.h | 5 +- 2 files changed, 58 insertions(+), 37 deletions(-) diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.cpp index 56ffc186e0..cc64eaeed9 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -110,8 +111,7 @@ namespace ImageProcessingAtom void ImageThumbnailSystemComponent::RenderThumbnail( AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize) { - auto sourceKey = azrtti_cast(thumbnailKey.data()); - if (sourceKey) + if (auto sourceKey = azrtti_cast(thumbnailKey.data())) { bool foundIt = false; AZ::Data::AssetInfo assetInfo; @@ -124,52 +124,72 @@ namespace ImageProcessingAtom { AZStd::string fullPath; AZ::StringFunc::Path::Join(watchFolder.c_str(), assetInfo.m_relativePath.c_str(), fullPath); - if (RenderThumbnailFromImage(thumbnailKey, thumbnailSize, IImageObjectPtr(LoadImageFromFile(fullPath)))) - { - return; - } + RenderThumbnailFromImage(thumbnailKey, thumbnailSize, + [fullPath]() { return IImageObjectPtr(LoadImageFromFile(fullPath)); } + ); } } - - auto productKey = azrtti_cast(thumbnailKey.data()); - if (productKey) + else if (auto productKey = azrtti_cast(thumbnailKey.data())) { - if (RenderThumbnailFromImage(thumbnailKey, thumbnailSize, Utils::LoadImageFromImageAsset(productKey->GetAssetId()))) - { - return; - } + RenderThumbnailFromImage(thumbnailKey, thumbnailSize, + [assetId = productKey->GetAssetId()]() { return Utils::LoadImageFromImageAsset(assetId); } + ); + } + else + { + AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Event( + thumbnailKey, &AzToolsFramework::Thumbnailer::ThumbnailerRendererNotifications::ThumbnailFailedToRender); } - - AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Event( - thumbnailKey, &AzToolsFramework::Thumbnailer::ThumbnailerRendererNotifications::ThumbnailFailedToRender); } - bool ImageThumbnailSystemComponent::RenderThumbnailFromImage( - AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize, IImageObjectPtr previewImage) const + template + void ImageThumbnailSystemComponent::RenderThumbnailFromImage( + AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize, MkImageFn mkPreviewImage) const { - if (!previewImage) + const auto JobRunner = [mkPreviewImage, thumbnailKey, thumbnailSize]() mutable { - return false; - } + IImageObjectPtr previewImage = mkPreviewImage(); + if (!previewImage) + { + AZ::SystemTickBus::QueueFunction( + [ + thumbnailKey + ]() + { + AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Event( + thumbnailKey, &AzToolsFramework::Thumbnailer::ThumbnailerRendererNotifications::ThumbnailFailedToRender); + }); - ImageToProcess imageToProcess(previewImage); - imageToProcess.ConvertFormat(ePixelFormat_R8G8B8A8); - previewImage = imageToProcess.Get(); + return; + } - AZ::u8* imageBuf = nullptr; - AZ::u32 mip = 0; - AZ::u32 pitch = 0; - previewImage->GetImagePointer(mip, imageBuf, pitch); - const AZ::u32 width = previewImage->GetWidth(mip); - const AZ::u32 height = previewImage->GetHeight(mip); + ImageToProcess imageToProcess(previewImage); + imageToProcess.ConvertFormat(ePixelFormat_R8G8B8A8); + previewImage = imageToProcess.Get(); - QImage image(imageBuf, width, height, pitch, QImage::Format_RGBA8888); + AZ::u8* imageBuf = nullptr; + AZ::u32 mip = 0; + AZ::u32 pitch = 0; + previewImage->GetImagePointer(mip, imageBuf, pitch); + const AZ::u32 width = previewImage->GetWidth(mip); + const AZ::u32 height = previewImage->GetHeight(mip); - AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Event( - thumbnailKey, &AzToolsFramework::Thumbnailer::ThumbnailerRendererNotifications::ThumbnailRendered, - QPixmap::fromImage(image.scaled(QSize(thumbnailSize, thumbnailSize), Qt::KeepAspectRatio, Qt::SmoothTransformation))); + // Note that this image holds a non-owning pointer to the `previewImage' raw data buffer + const QImage image(imageBuf, width, height, pitch, QImage::Format_RGBA8888); - return true; + // Dispatch event on main thread + AZ::SystemTickBus::QueueFunction( + [ + thumbnailKey, thumbnailSize, + pixmap = QPixmap::fromImage(image.scaled(QSize(thumbnailSize, thumbnailSize), Qt::KeepAspectRatio, Qt::SmoothTransformation)) + ]() mutable + { + AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Event( + thumbnailKey, &AzToolsFramework::Thumbnailer::ThumbnailerRendererNotifications::ThumbnailRendered, + pixmap); + }); + }; + AZ::CreateJobFunction(JobRunner, true)->Start(); } } // namespace Thumbnails } // namespace ImageProcessingAtom diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.h index 2b5c722bd3..8830f282ca 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Thumbnail/ImageThumbnailSystemComponent.h @@ -47,8 +47,9 @@ namespace ImageProcessingAtom bool Installed() const override; void RenderThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize) override; - bool RenderThumbnailFromImage( - AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize, IImageObjectPtr previewImage) const; + template + void RenderThumbnailFromImage( + AzToolsFramework::Thumbnailer::SharedThumbnailKey thumbnailKey, int thumbnailSize, MkImageFn mkPreviewImage) const; }; } // namespace Thumbnails } // namespace ImageProcessingAtom From 681945c185fc077daa58c9c863820b63980d8ab0 Mon Sep 17 00:00:00 2001 From: Terry Michaels Date: Fri, 25 Jun 2021 19:21:11 -0500 Subject: [PATCH 53/56] Make camera speed combo box automatically select all on focus in (#1601) --- Code/Sandbox/Editor/ViewportTitleDlg.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Code/Sandbox/Editor/ViewportTitleDlg.cpp b/Code/Sandbox/Editor/ViewportTitleDlg.cpp index bd8291a0c8..deee886d16 100644 --- a/Code/Sandbox/Editor/ViewportTitleDlg.cpp +++ b/Code/Sandbox/Editor/ViewportTitleDlg.cpp @@ -162,6 +162,7 @@ void CViewportTitleDlg::SetupCameraDropdownMenu() m_cameraSpeed = new QComboBox(cameraMenu); m_cameraSpeed->setEditable(true); m_cameraSpeed->setValidator(new QDoubleValidator(m_minSpeed, m_maxSpeed, m_numDecimals, m_cameraSpeed)); + m_cameraSpeed->installEventFilter(this); QHBoxLayout* cameraSpeedLayout = new QHBoxLayout; cameraSpeedLayout->addWidget(cameraSpeedLabel); @@ -814,6 +815,21 @@ void CViewportTitleDlg::UpdateCustomPresets(const QString& text, QStringList& cu bool CViewportTitleDlg::eventFilter(QObject* object, QEvent* event) { + if (object == m_cameraSpeed) + { + if (event->type() == QEvent::FocusIn) + { + QTimer::singleShot( + 0, this, + [this] + { + m_cameraSpeed->lineEdit()->selectAll(); + }); + } + + return m_cameraSpeed->eventFilter(object, event); + } + bool consumeEvent = false; // These events are forwarded from the toolbar that took ownership of our widgets From c3065faa238b3d24df8e96fbfcee140ce59b29ba Mon Sep 17 00:00:00 2001 From: Yuriy Toporovskyy Date: Fri, 25 Jun 2021 09:36:47 -0400 Subject: [PATCH 54/56] Don't block main thread to load data from file --- .../Code/Source/Previewer/ImagePreviewer.cpp | 87 ++++++++++++++----- .../Code/Source/Previewer/ImagePreviewer.h | 15 ++++ 2 files changed, 81 insertions(+), 21 deletions(-) diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.cpp b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.cpp index fb3ecbf6df..a0e33e28cd 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.cpp +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.cpp @@ -46,6 +46,12 @@ namespace ImageProcessingAtom ImagePreviewer::~ImagePreviewer() { + AZ::SystemTickBus::Handler::BusDisconnect(); + + if (m_createDisplayTextureResult.isRunning()) + { + m_createDisplayTextureResult.waitForFinished(); + } } void ImagePreviewer::Clear() const @@ -209,21 +215,30 @@ namespace ImageProcessingAtom m_ui->m_fileInfoCtrl->show(); m_fileinfo = QString::fromUtf8(product->GetName().c_str()); m_fileinfo += GetFileSize(product->GetRelativePath().c_str()); - - AZ::Data::Asset imageAsset = Utils::LoadImageAsset(product->GetAssetId()); - IImageObjectPtr image = Utils::LoadImageFromImageAsset(imageAsset); - if (image) + CreateAndDisplayTextureItemAsync( + [assetId = product->GetAssetId()] + () -> CreateDisplayTextureResult { - // Add product image info - AZStd::string productInfo; - GetImageInfoString(imageAsset, productInfo); + AZ::Data::Asset imageAsset = Utils::LoadImageAsset(assetId); + IImageObjectPtr image = Utils::LoadImageFromImageAsset(imageAsset); - m_fileinfo += QStringLiteral("\r\n"); - m_fileinfo += productInfo.c_str(); + if (image) + { + // Add product image info + AZStd::string productInfo; + GetImageInfoString(imageAsset, productInfo); - m_previewImageObject = ConvertImageForPreview(image); - } + QString fileInfo = QStringLiteral("\r\n"); + fileInfo += productInfo.c_str(); + + return { ConvertImageForPreview(image), fileInfo }; + } + else + { + return { nullptr, "" }; + } + }); DisplayTextureItem(); } @@ -234,19 +249,28 @@ namespace ImageProcessingAtom m_fileinfo = QString::fromUtf8(source->GetName().c_str()); m_fileinfo += GetFileSize(source->GetFullPath().c_str()); - IImageObjectPtr image = IImageObjectPtr(LoadImageFromFile(source->GetFullPath())); - - if (image) + CreateAndDisplayTextureItemAsync( + [fullPath = source->GetFullPath()] + () -> CreateDisplayTextureResult { - // Add source image info - AZStd::string sourceInfo; - GetImageInfoString(image, sourceInfo); + IImageObjectPtr image = IImageObjectPtr(LoadImageFromFile(fullPath)); - m_fileinfo += QStringLiteral("\r\n"); - m_fileinfo += sourceInfo.c_str(); + if (image) + { + // Add source image info + AZStd::string sourceInfo; + GetImageInfoString(image, sourceInfo); - m_previewImageObject = ConvertImageForPreview(image); - } + QString fileInfo = QStringLiteral("\r\n"); + fileInfo += sourceInfo.c_str(); + + return { ConvertImageForPreview(image), fileInfo }; + } + else + { + return { nullptr, "" }; + } + }); DisplayTextureItem(); } @@ -284,6 +308,27 @@ namespace ImageProcessingAtom updateGeometry(); } + template + void ImagePreviewer::CreateAndDisplayTextureItemAsync(CreateFn create) + { + AZ::SystemTickBus::Handler::BusConnect(); + m_createDisplayTextureResult = QtConcurrent::run(AZStd::move(create)); + } + + void ImagePreviewer::OnSystemTick() + { + if (m_createDisplayTextureResult.isFinished()) + { + CreateDisplayTextureResult result = m_createDisplayTextureResult.result(); + m_previewImageObject = AZStd::move(result.first); + m_fileinfo += result.second; + + AZ::SystemTickBus::Handler::BusDisconnect(); + + DisplayTextureItem(); + } + } + void ImagePreviewer::PreviewSubImage(uint32_t mip) { QImage previewImage = GetSubImagePreview(m_previewImageObject, mip); diff --git a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.h b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.h index f82a1cba5a..6888801d01 100644 --- a/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.h +++ b/Gems/Atom/Asset/ImageProcessingAtom/Code/Source/Previewer/ImagePreviewer.h @@ -8,12 +8,15 @@ #if !defined(Q_MOC_RUN) #include +#include #include #include #include #include +#include +#include #endif namespace Ui @@ -37,6 +40,7 @@ namespace ImageProcessingAtom { class ImagePreviewer : public AzToolsFramework::AssetBrowser::Previewer + , private AZ::SystemTickBus::Handler { Q_OBJECT public: @@ -60,16 +64,27 @@ namespace ImageProcessingAtom QString GetFileSize(const char* path); void DisplayTextureItem(); + template + void CreateAndDisplayTextureItemAsync(CreateFn create); + void PreviewSubImage(uint32_t mip); // QLabel word wrap does not break long words such as filenames, so manual word wrap needed static QString WordWrap(const QString& string, int maxLength); + // SystemTickBus + void OnSystemTick() override; + QScopedPointer m_ui; QString m_fileinfo; QString m_name = "ImagePreviewer"; // Decompressed image in preview. Cache it so we can preview its sub images IImageObjectPtr m_previewImageObject; + + // Properties for tracking the status of an asynchronous request to display an asset browser entry + using CreateDisplayTextureResult = AZStd::pair; + + QFuture m_createDisplayTextureResult; }; }//namespace ImageProcessingAtom From 2dd8d03654703882e5330c3dded929e16d895e25 Mon Sep 17 00:00:00 2001 From: Yuriy Toporovskyy Date: Fri, 25 Jun 2021 09:49:13 -0400 Subject: [PATCH 55/56] Avoid a somewhat costly call to ThumbnailerRequestsBus::IsLoading when the information is already manifest --- .../AssetBrowser/Views/EntryDelegate.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Views/EntryDelegate.cpp b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Views/EntryDelegate.cpp index 611e26582d..a557b7e3b3 100644 --- a/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Views/EntryDelegate.cpp +++ b/Code/Framework/AzToolsFramework/AzToolsFramework/AssetBrowser/Views/EntryDelegate.cpp @@ -121,9 +121,9 @@ namespace AzToolsFramework { return 0; } - bool thumbnailLoading; - ThumbnailerRequestsBus::BroadcastResult(thumbnailLoading, &ThumbnailerRequests::IsLoading, thumbnailKey, m_thumbnailContext.c_str()); - if (thumbnailLoading) + + const Thumbnail::State thumbnailState = thumbnail->GetState(); + if (thumbnailState == Thumbnail::State::Loading) { AzQtComponents::StyledBusyLabel* busyLabel; AssetBrowserComponentRequestBus::BroadcastResult(busyLabel , &AssetBrowserComponentRequests::GetStyledBusyLabel); @@ -132,7 +132,7 @@ namespace AzToolsFramework busyLabel->DrawTo(painter, QRectF(point.x(), point.y(), size.width(), size.height())); } } - else + else if (thumbnailState == Thumbnail::State::Ready) { // Scaling and centering pixmap within bounds to preserve aspect ratio const QPixmap pixmap = thumbnail->GetPixmap().scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation); @@ -140,6 +140,10 @@ namespace AzToolsFramework const QPoint pointDelta = QPoint(sizeDelta.width() / 2, sizeDelta.height() / 2); painter->drawPixmap(point + pointDelta, pixmap); } + else + { + AZ_Assert(false, "Thumbnail state %d unexpected here", int(thumbnailState)); + } return m_iconSize; } From 8908ea208bceceb16f39ee6b5be8b28417ad1fff Mon Sep 17 00:00:00 2001 From: moudgils <47460854+moudgils@users.noreply.github.com> Date: Fri, 25 Jun 2021 23:08:51 -0700 Subject: [PATCH 56/56] Fix ios gpu crash + misc cleanup (#1603) --- Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp | 9 ++++++--- Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp | 3 ++- .../Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp | 1 - 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp index 4a67f51e58..9606727936 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/ArgumentBuffer.cpp @@ -334,9 +334,8 @@ namespace AZ if(m_argumentBuffer.IsValid()) { m_device->GetArgumentBufferAllocator().DeAllocate(m_argumentBuffer); - } -#endif - + } +#else if(m_argumentBuffer.IsValid()) { m_device->QueueForRelease(m_argumentBuffer); @@ -346,7 +345,11 @@ namespace AZ { m_device->QueueForRelease(m_constantBuffer); } +#endif + m_argumentBuffer = {}; + m_constantBuffer = {}; + [m_argumentEncoder release]; m_argumentEncoder = nil; diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp index 2a082916a0..ccd8dc85af 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/CommandListBase.cpp @@ -78,8 +78,9 @@ namespace AZ id renderEncoder = GetEncoder>(); for (id residentHeap : *m_residentHeaps) { + //MTLRenderStageVertex is not added to this as it was causing an immediate gpu crash on ios (first buffer commit) [renderEncoder useHeap : residentHeap - stages : MTLRenderStageVertex | MTLRenderStageFragment]; + stages : MTLRenderStageFragment]; } break; } diff --git a/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp b/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp index efe127d1b5..ca3bdd974c 100644 --- a/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp +++ b/Gems/Atom/RHI/Metal/Code/Source/RHI/ShaderResourceGroupPool.cpp @@ -55,7 +55,6 @@ namespace AZ ShaderResourceGroup& group = static_cast(resourceBase); for (size_t i = 0; i < RHI::Limits::Device::FrameCountMax; ++i) { - group.m_compiledArgBuffers[i]->Shutdown(); group.m_compiledArgBuffers[i] = nullptr; } Base::ShutdownResourceInternal(resourceBase);