Restore Viewport debug text
Adds the AtomViewportDisplayInfo Gem which renders debug text to the default viewport context depending on the value of r_DisplayInfo. The gem is flagged as a dependency of AtomBridge, so all Atom projects will consume it by default.
This commit is contained in:
+79
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or
|
||||
* its licensors.
|
||||
*
|
||||
* For complete copyright and license terms please see the LICENSE at the root of this
|
||||
* distribution (the "License"). All use of this software is governed by the License,
|
||||
* or, if provided, by the license below or the license accompanying this file. Do not
|
||||
* remove or modify any license notices. This file is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include <AzCore/Component/Component.h>
|
||||
|
||||
#include <CryCommon/CrySystemBus.h>
|
||||
#include <AzCore/Script/ScriptTimePoint.h>
|
||||
#include <AzFramework/Entity/EntityDebugDisplayBus.h>
|
||||
#include <AzFramework/Font/FontInterface.h>
|
||||
#include <Atom/RPI.Public/Base.h>
|
||||
#include <Atom/RPI.Public/ViewportContextBus.h>
|
||||
|
||||
struct ICVar;
|
||||
|
||||
namespace AZ
|
||||
{
|
||||
class TickRequests;
|
||||
|
||||
namespace Render
|
||||
{
|
||||
class AtomViewportDisplayInfoSystemComponent
|
||||
: public AZ::Component
|
||||
, public AZ::RPI::ViewportContextNotificationBus::Handler
|
||||
, public CrySystemEventBus::Handler
|
||||
{
|
||||
public:
|
||||
AZ_COMPONENT(AtomViewportDisplayInfoSystemComponent, "{AC32F173-E7E2-4943-8E6C-7C3091978221}");
|
||||
|
||||
static void Reflect(AZ::ReflectContext* context);
|
||||
|
||||
static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
|
||||
static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
|
||||
static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
|
||||
static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
|
||||
|
||||
protected:
|
||||
// AZ::Component overrides...
|
||||
void Activate() override;
|
||||
void Deactivate() override;
|
||||
|
||||
// AZ::RPI::ViewportContextNotificationBus::Handler overrides...
|
||||
void OnRenderTick() override;
|
||||
|
||||
// CrySystemEventBus::Handler overrides...
|
||||
void OnCrySystemInitialized(ISystem& system, const SSystemInitParams& initParams) override;
|
||||
void OnCrySystemShutdown(ISystem& system) override;
|
||||
|
||||
private:
|
||||
AZ::RPI::ViewportContextPtr GetViewportContext() const;
|
||||
void DrawLine(AZStd::string_view line, AZ::Color color = AZ::Colors::White);
|
||||
|
||||
void UpdateFramerate();
|
||||
|
||||
void DrawRendererInfo();
|
||||
void DrawCameraInfo();
|
||||
void DrawMemoryInfo();
|
||||
void DrawFramerate();
|
||||
|
||||
AZStd::string m_rendererDescription;
|
||||
AzFramework::TextDrawParameters m_drawParams;
|
||||
float m_lineSpacing;
|
||||
AZStd::chrono::duration<double> m_fpsInterval = AZStd::chrono::seconds(1);
|
||||
AZStd::deque<AZ::ScriptTimePoint> m_fpsHistory;
|
||||
AZStd::optional<AZStd::chrono::system_clock::time_point> m_lastMemoryUpdate;
|
||||
AZ::TickRequests* m_tickRequests = nullptr;
|
||||
ICVar* m_displayInfoCVar = nullptr;
|
||||
};
|
||||
} // namespace Render
|
||||
} // namespace AZ
|
||||
Reference in New Issue
Block a user