diff --git a/AutomatedTesting/Levels/WaterSample/WaterSample.ly b/AutomatedTesting/Levels/WaterSample/WaterSample.ly
deleted file mode 100644
index b1899f3710..0000000000
--- a/AutomatedTesting/Levels/WaterSample/WaterSample.ly
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:d49aceca5ad4e0b9f46c8127afb5c53b68aa30272950b1abd66fba310977ff0c
-size 15032
diff --git a/AutomatedTesting/Levels/WaterSample/filelist.xml b/AutomatedTesting/Levels/WaterSample/filelist.xml
deleted file mode 100644
index d14b2fdaf2..0000000000
--- a/AutomatedTesting/Levels/WaterSample/filelist.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/halfsphere.cgf b/AutomatedTesting/Levels/WaterSample/halfsphere.cgf
deleted file mode 100644
index 4426d8a232..0000000000
--- a/AutomatedTesting/Levels/WaterSample/halfsphere.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:5f221acd847ec8a15e1333a5163d6d0fd886b8eda46fa7b133f76ddbf1d11216
-size 41472
diff --git a/AutomatedTesting/Levels/WaterSample/halfsphere2.cgf b/AutomatedTesting/Levels/WaterSample/halfsphere2.cgf
deleted file mode 100644
index c776ff68b8..0000000000
--- a/AutomatedTesting/Levels/WaterSample/halfsphere2.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:c8e5dcfbe65fd2fd8ea29a38a96e703683c544fd42b9424857b1df3718c7775a
-size 41472
diff --git a/AutomatedTesting/Levels/WaterSample/level.pak b/AutomatedTesting/Levels/WaterSample/level.pak
deleted file mode 100644
index 1753ef4b93..0000000000
--- a/AutomatedTesting/Levels/WaterSample/level.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:0378911c27933302042550d5a031a5f9104296162edc2b21e44893f1b8cff969
-size 44124
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/Environment.xml b/AutomatedTesting/Levels/WaterSample/leveldata/Environment.xml
deleted file mode 100644
index 6a95c631bb..0000000000
--- a/AutomatedTesting/Levels/WaterSample/leveldata/Environment.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/TerrainTexture.xml b/AutomatedTesting/Levels/WaterSample/leveldata/TerrainTexture.xml
deleted file mode 100644
index 21741afe52..0000000000
--- a/AutomatedTesting/Levels/WaterSample/leveldata/TerrainTexture.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/TimeOfDay.xml b/AutomatedTesting/Levels/WaterSample/leveldata/TimeOfDay.xml
deleted file mode 100644
index 60ad405904..0000000000
--- a/AutomatedTesting/Levels/WaterSample/leveldata/TimeOfDay.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AutomatedTesting/Levels/WaterSample/leveldata/VegetationMap.dat b/AutomatedTesting/Levels/WaterSample/leveldata/VegetationMap.dat
deleted file mode 100644
index dce5631cd0..0000000000
--- a/AutomatedTesting/Levels/WaterSample/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/AutomatedTesting/Levels/WaterSample/pool.cgf b/AutomatedTesting/Levels/WaterSample/pool.cgf
deleted file mode 100644
index 04bec52a62..0000000000
--- a/AutomatedTesting/Levels/WaterSample/pool.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:12ca8f1942331abde4d58724aea22609c8d7951cc415afa6e5f1c550a14e67b0
-size 363624
diff --git a/AutomatedTesting/Levels/WaterSample/pool2.cgf b/AutomatedTesting/Levels/WaterSample/pool2.cgf
deleted file mode 100644
index 204306f8a8..0000000000
--- a/AutomatedTesting/Levels/WaterSample/pool2.cgf
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:f5b525a410730d84c0b3e97396d392e1e72f4b894742ddef3de4ede5542b0f8e
-size 86148
diff --git a/AutomatedTesting/Levels/WaterSample/tags.txt b/AutomatedTesting/Levels/WaterSample/tags.txt
deleted file mode 100644
index 0d6c1880e7..0000000000
--- a/AutomatedTesting/Levels/WaterSample/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/AutomatedTesting/Levels/WaterSample/terraintexture.pak b/AutomatedTesting/Levels/WaterSample/terraintexture.pak
deleted file mode 100644
index fe3604a050..0000000000
--- a/AutomatedTesting/Levels/WaterSample/terraintexture.pak
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8739c76e681f900923b900c9df0ef75cf421d39cabb54650c4b9ad19b6a76d85
-size 22
diff --git a/AutomatedTesting/Levels/WaterSample/woodland_canyon_river.mtl b/AutomatedTesting/Levels/WaterSample/woodland_canyon_river.mtl
deleted file mode 100644
index 4548bca421..0000000000
--- a/AutomatedTesting/Levels/WaterSample/woodland_canyon_river.mtl
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
-
diff --git a/Code/CryEngine/CryCommon/LyShine/IDraw2d.h b/Code/CryEngine/CryCommon/LyShine/IDraw2d.h
index 16fdfceca3..76a71c9e24 100644
--- a/Code/CryEngine/CryCommon/LyShine/IDraw2d.h
+++ b/Code/CryEngine/CryCommon/LyShine/IDraw2d.h
@@ -11,7 +11,6 @@
*/
#pragma once
-#include
#include
#include
#include
@@ -84,7 +83,7 @@ public: // types
//! If this is not passed then the defaults below are used
struct TextOptions
{
- IFFont* font; //!< default is "default"
+ AZStd::string fontName; //!< default is "default"
unsigned int effectIndex; //!< default is 0
AZ::Vector3 color; //!< default is (1,1,1)
HAlign horizontalAlignment; //!< default is HAlign::Left
diff --git a/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h b/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h
index b64b61e22c..04a0572bb9 100644
--- a/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h
+++ b/Code/Framework/AzFramework/AzFramework/Font/FontInterface.h
@@ -15,6 +15,7 @@
#include
#include
#include
+#include
#include
#include
@@ -42,11 +43,15 @@ namespace AzFramework
{
ViewportId m_drawViewportId = InvalidViewportId; //!< Viewport to draw into
AZ::Vector3 m_position; //!< world space position for 3d draws, screen space x,y,depth for 2d.
- AZ::Color m_color = AZ::Colors::White; //!< Color to draw the text
+ AZ::Color m_color = AZ::Colors::White; //!< Color to draw the text
+ unsigned int m_effectIndex = 0; //!< effect index to apply
AZ::Vector2 m_scale = AZ::Vector2(1.0f); //!< font scale
- float m_lineSpacing; //!< Spacing between new lines, as a percentage of m_scale.
+ float m_textSizeFactor = 12.0f; //!< font size in pixels
+ float m_lineSpacing = 1.0f; //!< Spacing between new lines, as a percentage of m_scale.
TextHorizontalAlignment m_hAlign = TextHorizontalAlignment::Left; //!< Horizontal text alignment
TextVerticalAlignment m_vAlign = TextVerticalAlignment::Top; //!< Vertical text alignment
+ bool m_useTransform = false; //!< Use specified transform
+ AZ::Matrix3x4 m_transform = AZ::Matrix3x4::Identity(); //!< Transform to apply to text quads
bool m_monospace = false; //!< disable character proportional spacing
bool m_depthTest = false; //!< Test character against the depth buffer
bool m_virtual800x600ScreenSize = true; //!< Text placement and size are scaled relative to a virtual 800x600 resolution
diff --git a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp
index fc58eb9f07..31eb089803 100644
--- a/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp
+++ b/Gems/AtomLyIntegration/AtomFont/Code/Source/FFont.cpp
@@ -54,7 +54,6 @@
#include
-static const AZ::Vector2 UiDraw_TextSizeFactor = AZ::Vector2(12.0f, 12.0f);
static const int TabCharCount = 4;
// set buffer sizes to hold max characters that can be drawn in 1 DrawString call
static const size_t MaxVerts = 8 * 1024; // 2048 quads
@@ -1673,6 +1672,12 @@ static void SetCommonContextFlags(AZ::TextDrawContext& ctx, const AzFramework::T
{
ctx.m_drawTextFlags |= eDrawText_FixedSize;
}
+
+ if (params.m_useTransform)
+ {
+ ctx.m_drawTextFlags |= eDrawText_UseTransform;
+ ctx.SetTransform(AZMatrix3x4ToLYMatrix3x4(params.m_transform));
+ }
}
AZ::FFont::DrawParameters AZ::FFont::ExtractDrawParameters(const AzFramework::TextDrawParameters& params, AZStd::string_view text, bool forceCalculateSize)
@@ -1696,22 +1701,25 @@ AZ::FFont::DrawParameters AZ::FFont::ExtractDrawParameters(const AzFramework::Te
}
internalParams.m_ctx.SetBaseState(GS_NODEPTHTEST);
internalParams.m_ctx.SetColor(AZColorToLYColorF(params.m_color));
+ internalParams.m_ctx.SetEffect(params.m_effectIndex);
internalParams.m_ctx.SetCharWidthScale((params.m_monospace || params.m_scaleWithWindow) ? 0.5f : 1.0f);
internalParams.m_ctx.EnableFrame(false);
internalParams.m_ctx.SetProportional(!params.m_monospace && params.m_scaleWithWindow);
internalParams.m_ctx.SetSizeIn800x600(params.m_scaleWithWindow && params.m_virtual800x600ScreenSize);
- internalParams.m_ctx.SetSize(AZVec2ToLYVec2(UiDraw_TextSizeFactor * params.m_scale));
+ internalParams.m_ctx.SetSize(AZVec2ToLYVec2(AZ::Vector2(params.m_textSizeFactor, params.m_textSizeFactor) * params.m_scale));
internalParams.m_ctx.SetLineSpacing(params.m_lineSpacing);
- if (params.m_monospace || !params.m_scaleWithWindow)
- {
- ScaleCoord(viewport, posX, posY);
- }
if (params.m_hAlign != AzFramework::TextHorizontalAlignment::Left ||
params.m_vAlign != AzFramework::TextVerticalAlignment::Top ||
forceCalculateSize)
{
+ // We align based on the size of the default font effect because we do not want the
+ // text to move when the font effect is changed
+ unsigned int effectIndex = internalParams.m_ctx.m_fxIdx;
+ internalParams.m_ctx.SetEffect(0);
Vec2 textSize = GetTextSizeUInternal(viewport, text.data(), params.m_multiline, internalParams.m_ctx);
+ internalParams.m_ctx.SetEffect(effectIndex);
+
// If we're using virtual 800x600 coordinates, convert the text size from
// pixels to that before using it as an offset.
if (internalParams.m_ctx.m_sizeIn800x600)
diff --git a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/ReleaseResourcesStep.cpp b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/ReleaseResourcesStep.cpp
index bad7c2fe38..ef82792f32 100644
--- a/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/ReleaseResourcesStep.cpp
+++ b/Gems/AtomLyIntegration/CommonFeatures/Code/Source/Thumbnails/Rendering/ThumbnailRendererSteps/ReleaseResourcesStep.cpp
@@ -32,32 +32,29 @@ namespace AZ
void ReleaseResourcesStep::Start()
{
- m_context->GetData()->m_defaultMaterialAsset.Release();
- m_context->GetData()->m_defaultModelAsset.Release();
- m_context->GetData()->m_materialAsset.Release();
- m_context->GetData()->m_modelAsset.Release();
+ auto data = m_context->GetData();
+
+ data->m_defaultMaterialAsset.Release();
+ data->m_defaultModelAsset.Release();
+ data->m_materialAsset.Release();
+ data->m_modelAsset.Release();
+ data->m_lightingPresetAsset.Release();
- if (m_context->GetData()->m_modelEntity)
+ if (data->m_modelEntity)
{
- AzFramework::EntityContextRequestBus::Event(m_context->GetData()->m_entityContext->GetContextId(),
- &AzFramework::EntityContextRequestBus::Events::DestroyEntity, m_context->GetData()->m_modelEntity);
- m_context->GetData()->m_modelEntity = nullptr;
+ AzFramework::EntityContextRequestBus::Event(data->m_entityContext->GetContextId(),
+ &AzFramework::EntityContextRequestBus::Events::DestroyEntity, data->m_modelEntity);
+ data->m_modelEntity = nullptr;
}
- m_context->GetData()->m_frameworkScene->UnsetSubsystem();
-
- m_context->GetData()->m_scene->Deactivate();
- m_context->GetData()->m_scene->RemoveRenderPipeline(m_context->GetData()->m_renderPipeline->GetId());
- RPI::RPISystemInterface::Get()->UnregisterScene(m_context->GetData()->m_scene);
-
- auto sceneSystem = AzFramework::SceneSystemInterface::Get();
- AZ_Assert(sceneSystem, "Thumbnail system failed to get scene system implementation.");
- [[maybe_unused]] bool sceneRemovedSuccessfully = sceneSystem->RemoveScene(m_context->GetData()->m_sceneName);
- AZ_Assert(
- sceneRemovedSuccessfully, "Thumbnail system was unable to remove scene '%s' from the scene system.",
- m_context->GetData()->m_sceneName.c_str());
- m_context->GetData()->m_scene = nullptr;
- m_context->GetData()->m_renderPipeline = nullptr;
+ data->m_scene->Deactivate();
+ data->m_scene->RemoveRenderPipeline(data->m_renderPipeline->GetId());
+ RPI::RPISystemInterface::Get()->UnregisterScene(data->m_scene);
+ data->m_frameworkScene->UnsetSubsystem(data->m_scene);
+ data->m_frameworkScene->UnsetSubsystem(data->m_entityContext.get());
+ data->m_scene = nullptr;
+ data->m_frameworkScene = nullptr;
+ data->m_renderPipeline = nullptr;
}
} // namespace Thumbnails
} // namespace LyIntegration
diff --git a/Gems/LyShine/Code/Editor/ViewportHelpers.cpp b/Gems/LyShine/Code/Editor/ViewportHelpers.cpp
index 428554a461..2195d2c9d4 100644
--- a/Gems/LyShine/Code/Editor/ViewportHelpers.cpp
+++ b/Gems/LyShine/Code/Editor/ViewportHelpers.cpp
@@ -30,6 +30,11 @@ namespace ViewportHelpers
return isControlledByParent;
}
+ float GetDpiScaledSize(float size)
+ {
+ return size * ViewportIcon::GetDpiScaleFactor();
+ }
+
bool IsHorizontallyFit(const AZ::Entity* element)
{
bool isHorizontallyFit = false;
@@ -332,11 +337,12 @@ namespace ViewportHelpers
AZ::Vector2 pivotPos;
EBUS_EVENT_ID_RESULT(pivotPos, element->GetId(), UiTransformBus, GetViewportSpacePivot);
- AZ::Vector2 rotationStringPos(pivotPos.GetX(), pivotPos.GetY() - ((viewportPivot->GetSize().GetY() * 0.5f) + 4.0f));
+ float offset = (viewportPivot->GetSize().GetY() * 0.5f) + (GetDpiScaledSize(4.0f));
+ AZ::Vector2 rotationStringPos(pivotPos.GetX(), pivotPos.GetY() - offset);
draw2d.SetTextAlignment(IDraw2d::HAlign::Center, IDraw2d::VAlign::Bottom);
draw2d.SetTextRotation(0.0f);
- draw2d.DrawText(rotationString.toUtf8().data(), rotationStringPos, 16.0f, 1.0f);
+ draw2d.DrawText(rotationString.toUtf8().data(), rotationStringPos, GetDpiScaledSize(16.0f), 1.0f);
}
}
@@ -350,6 +356,6 @@ namespace ViewportHelpers
draw2d.SetTextAlignment(IDraw2d::HAlign::Left, IDraw2d::VAlign::Bottom);
draw2d.SetTextRotation(0.0f);
- draw2d.DrawText(textLabel.c_str(), textPos, 16.0f, 1.0f);
+ draw2d.DrawText(textLabel.c_str(), textPos, GetDpiScaledSize(16.0f), 1.0f);
}
} // namespace ViewportHelpers
diff --git a/Gems/LyShine/Code/Editor/ViewportIcon.cpp b/Gems/LyShine/Code/Editor/ViewportIcon.cpp
index b1866efb00..4be06b2543 100644
--- a/Gems/LyShine/Code/Editor/ViewportIcon.cpp
+++ b/Gems/LyShine/Code/Editor/ViewportIcon.cpp
@@ -303,7 +303,7 @@ void ViewportIcon::DrawDistanceLine(Draw2dHelper& draw2d, AZ::Vector2 start, AZ:
draw2d.SetTextAlignment(IDraw2d::HAlign::Center, IDraw2d::VAlign::Bottom);
draw2d.SetTextRotation(rotation);
- draw2d.DrawText(textBuf, textPos, 16.0f, 1.0f);
+ draw2d.DrawText(textBuf, textPos, 16.0f * ViewportIcon::GetDpiScaleFactor(), 1.0f);
}
void ViewportIcon::DrawAnchorLinesSplit(Draw2dHelper& draw2d, AZ::Vector2 anchorPos1, AZ::Vector2 anchorPos2,
diff --git a/Gems/LyShine/Code/Include/LyShine/Draw2d.h b/Gems/LyShine/Code/Include/LyShine/Draw2d.h
index 8270461e73..b83ec4794b 100644
--- a/Gems/LyShine/Code/Include/LyShine/Draw2d.h
+++ b/Gems/LyShine/Code/Include/LyShine/Draw2d.h
@@ -15,6 +15,7 @@
#include
#include
+#include
#include
#include
#include
@@ -256,9 +257,8 @@ protected: // types and constants
const Draw2dShaderData& shaderData,
AZ::RPI::ViewportContextPtr viewportContext) const override;
- STextDrawContext m_fontContext;
- IFFont* m_font;
- AZ::Vector2 m_position;
+ AzFramework::TextDrawParameters m_drawParameters;
+ AzFramework::FontId m_fontId;
std::string m_string;
};
@@ -288,7 +288,7 @@ protected: // member functions
void RotatePointsAboutPivot(AZ::Vector2* points, int numPoints, AZ::Vector2 pivot, float angle) const;
//! Helper function to render a text string
- void DrawTextInternal(const char* textString, IFFont* font, unsigned int effectIndex,
+ void DrawTextInternal(const char* textString, AzFramework::FontId fontId, unsigned int effectIndex,
AZ::Vector2 position, float pointSize, AZ::Color color, float rotation,
HAlign horizontalAlignment, VAlign verticalAlignment, int baseState);
@@ -298,6 +298,9 @@ protected: // member functions
//! Draw or defer a line
void DrawOrDeferLine(const DeferredLine* line);
+ //! Draw or defer a text string
+ void DrawOrDeferTextString(const DeferredText* text);
+
//! Draw or defer a rect outline
void DrawOrDeferRectOutline(const DeferredRectOutline* outlineRect);
@@ -491,7 +494,7 @@ public: // member functions
void SetImageBaseState(int state) { m_imageOptions.baseState = state; }
//! Set the text font.
- void SetTextFont(IFFont* font) { m_textOptions.font = font; }
+ void SetTextFont(AZStd::string_view fontName) { m_textOptions.fontName = fontName; }
//! Set the text font effect index.
void SetTextEffectIndex(unsigned int effectIndex) { m_textOptions.effectIndex = effectIndex; }
diff --git a/Gems/LyShine/Code/Source/Draw2d.cpp b/Gems/LyShine/Code/Source/Draw2d.cpp
index 1a639ea299..6feb47419d 100644
--- a/Gems/LyShine/Code/Source/Draw2d.cpp
+++ b/Gems/LyShine/Code/Source/Draw2d.cpp
@@ -11,11 +11,13 @@
*/
#include "LyShine_precompiled.h"
#include "IFont.h"
+#include // for SVF_P3F_C4B_T2F which will be removed in a coming PR
#include
#include
#include
+#include
#include
#include
@@ -55,7 +57,7 @@ CDraw2d::CDraw2d(AZ::RPI::ViewportContextPtr viewportContext)
m_defaultImageOptions.pixelRounding = Rounding::Nearest;
m_defaultImageOptions.baseState = g_defaultBaseState;
- m_defaultTextOptions.font = (gEnv && gEnv->pCryFont != nullptr) ? gEnv->pCryFont->GetFont("default") : nullptr;
+ m_defaultTextOptions.fontName = "default";
m_defaultTextOptions.effectIndex = 0;
m_defaultTextOptions.color.Set(1.0f, 1.0f, 1.0f);
m_defaultTextOptions.horizontalAlignment = HAlign::Left;
@@ -283,13 +285,20 @@ void CDraw2d::DrawText(const char* textString, AZ::Vector2 position, float point
{
TextOptions* actualTextOptions = (textOptions) ? textOptions : &m_defaultTextOptions;
+ AzFramework::FontId fontId = AzFramework::InvalidFontId;
+ AzFramework::FontQueryInterface* fontQueryInterface = AZ::Interface::Get();
+ if (fontQueryInterface)
+ {
+ fontId = fontQueryInterface->GetFontId(actualTextOptions->fontName);
+ }
+
// render the drop shadow, if needed
if ((actualTextOptions->dropShadowColor.GetA() > 0.0f) &&
(actualTextOptions->dropShadowOffset.GetX() || actualTextOptions->dropShadowOffset.GetY()))
{
// calculate the drop shadow pos and render it
AZ::Vector2 dropShadowPosition(position + actualTextOptions->dropShadowOffset);
- DrawTextInternal(textString, actualTextOptions->font, actualTextOptions->effectIndex,
+ DrawTextInternal(textString, fontId, actualTextOptions->effectIndex,
dropShadowPosition, pointSize, actualTextOptions->dropShadowColor,
actualTextOptions->rotation,
actualTextOptions->horizontalAlignment, actualTextOptions->verticalAlignment,
@@ -298,7 +307,7 @@ void CDraw2d::DrawText(const char* textString, AZ::Vector2 position, float point
// draw the text string
AZ::Color textColor = AZ::Color::CreateFromVector3AndFloat(actualTextOptions->color, opacity);
- DrawTextInternal(textString, actualTextOptions->font, actualTextOptions->effectIndex,
+ DrawTextInternal(textString, fontId, actualTextOptions->effectIndex,
position, pointSize, textColor,
actualTextOptions->rotation,
actualTextOptions->horizontalAlignment, actualTextOptions->verticalAlignment,
@@ -398,20 +407,35 @@ void CDraw2d::DrawRectOutlineTextured(AZ::Data::Instance image,
////////////////////////////////////////////////////////////////////////////////////////////////////
AZ::Vector2 CDraw2d::GetTextSize(const char* textString, float pointSize, TextOptions* textOptions)
{
- TextOptions* actualTextOptions = (textOptions) ? textOptions : &m_defaultTextOptions;
-
- if (!actualTextOptions->font)
+ AzFramework::FontDrawInterface* fontDrawInterface = nullptr;
+ AzFramework::FontQueryInterface* fontQueryInterface = AZ::Interface::Get();
+ if (fontQueryInterface)
+ {
+ TextOptions* actualTextOptions = (textOptions) ? textOptions : &m_defaultTextOptions;
+ AzFramework::FontId fontId = fontQueryInterface->GetFontId(actualTextOptions->fontName);
+ fontDrawInterface = fontQueryInterface->GetFontDrawInterface(fontId);
+ }
+ if (!fontDrawInterface)
{
return AZ::Vector2(0.0f, 0.0f);
}
- STextDrawContext fontContext;
- fontContext.SetEffect(actualTextOptions->effectIndex);
- fontContext.SetSizeIn800x600(false);
- fontContext.SetSize(vector2f(pointSize, pointSize));
+ // Set up draw parameters
+ AzFramework::TextDrawParameters drawParams;
+ drawParams.m_drawViewportId = GetViewportContext()->GetId();
+ drawParams.m_position = AZ::Vector3(0.0f, 0.0f, 1.0f);
+ drawParams.m_effectIndex = 0;
+ drawParams.m_textSizeFactor = pointSize;
+ drawParams.m_scale = AZ::Vector2(1.0f, 1.0f);
+ drawParams.m_lineSpacing = 1.0f;
+ drawParams.m_monospace = false;
+ drawParams.m_depthTest = false;
+ drawParams.m_virtual800x600ScreenSize = false;
+ drawParams.m_scaleWithWindow = false;
+ drawParams.m_multiline = true;
- Vec2 textSize = actualTextOptions->font->GetTextSize(textString, true, fontContext);
- return AZ::Vector2(textSize.x, textSize.y);
+ AZ::Vector2 textSize = fontDrawInterface->GetTextSize(drawParams, textString);
+ return textSize;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -559,100 +583,89 @@ void CDraw2d::RotatePointsAboutPivot(AZ::Vector2* points, [[maybe_unused]] int n
}
////////////////////////////////////////////////////////////////////////////////////////////////////
-void CDraw2d::DrawTextInternal(const char* textString, IFFont* font, unsigned int effectIndex,
+void CDraw2d::DrawTextInternal(const char* textString, AzFramework::FontId fontId, unsigned int effectIndex,
AZ::Vector2 position, float pointSize, AZ::Color color, float rotation,
- HAlign horizontalAlignment, VAlign verticalAlignment, int baseState)
+ HAlign horizontalAlignment, VAlign verticalAlignment, [[maybe_unused]] int baseState)
{
- if (!font)
- {
- return;
- }
-
- STextDrawContext fontContext;
- fontContext.SetEffect(effectIndex);
- fontContext.SetSizeIn800x600(false);
- fontContext.SetSize(vector2f(pointSize, pointSize));
- fontContext.SetColor(ColorF(color.GetR(), color.GetG(), color.GetB(), color.GetA()));
- fontContext.m_baseState = baseState;
- fontContext.SetOverrideViewProjMatrices(false);
-
// FFont.cpp uses the alpha value of the color to decide whether to use the color, if the alpha value is zero
// (in a ColorB format) then the color set via SetColor is ignored and it usually ends up drawing with an alpha of 1.
// This is not what we want so in this case do not draw at all.
- if (!fontContext.IsColorOverridden())
+ if (AZ::IsClose(color.GetA(), 0.0f))
{
return;
}
- AZ::Vector2 alignedPosition;
- if (horizontalAlignment == HAlign::Left && verticalAlignment == VAlign::Top)
+ // Convert Draw2d alignment to text alignment
+ AzFramework::TextHorizontalAlignment hAlignment = AzFramework::TextHorizontalAlignment::Left;
+ switch (horizontalAlignment)
{
- alignedPosition = position;
- }
- else
- {
- // we align based on the size of the default font effect, because we do not want the
- // text to move when the font effect is changed
- unsigned int fontEffectIndex = fontContext.m_fxIdx;
- fontContext.SetEffect(0);
- Vec2 textSize = font->GetTextSize(textString, true, fontContext);
- fontContext.SetEffect(fontEffectIndex);
-
- alignedPosition = Align(position, AZ::Vector2(textSize.x, textSize.y), horizontalAlignment, verticalAlignment);
+ case HAlign::Left:
+ hAlignment = AzFramework::TextHorizontalAlignment::Left;
+ break;
+ case HAlign::Center:
+ hAlignment = AzFramework::TextHorizontalAlignment::Center;
+ break;
+ case HAlign::Right:
+ hAlignment = AzFramework::TextHorizontalAlignment::Right;
+ break;
+ default:
+ AZ_Assert(false, "Attempting to draw text with unsupported horizontal alignment.");
+ break;
}
- int flags = 0;
+ AzFramework::TextVerticalAlignment vAlignment = AzFramework::TextVerticalAlignment::Top;
+ switch (verticalAlignment)
+ {
+ case VAlign::Top:
+ vAlignment = AzFramework::TextVerticalAlignment::Top;
+ break;
+ case VAlign::Center:
+ vAlignment = AzFramework::TextVerticalAlignment::Center;
+ break;
+ case VAlign::Bottom:
+ vAlignment = AzFramework::TextVerticalAlignment::Bottom;
+ break;
+ default:
+ AZ_Assert(false, "Attempting to draw text with unsupported vertical alignment.");
+ break;
+ }
+
+ // Set up draw parameters for font interface
+ AzFramework::TextDrawParameters drawParams;
+ drawParams.m_drawViewportId = GetViewportContext()->GetId();
+ drawParams.m_position = AZ::Vector3(position.GetX(), position.GetY(), 1.0f);
+ drawParams.m_color = color;
+ drawParams.m_effectIndex = effectIndex;
+ drawParams.m_textSizeFactor = pointSize;
+ drawParams.m_scale = AZ::Vector2(1.0f, 1.0f);
+ drawParams.m_lineSpacing = 1.0f; //!< Spacing between new lines, as a percentage of m_scale.
+ drawParams.m_hAlign = hAlignment;
+ drawParams.m_vAlign = vAlignment;
+ drawParams.m_monospace = false;
+ drawParams.m_depthTest = false;
+ drawParams.m_virtual800x600ScreenSize = false;
+ drawParams.m_scaleWithWindow = false;
+ drawParams.m_multiline = true;
+
if (rotation != 0.0f)
{
// rotate around the position (if aligned to center will rotate about center etc)
float rotRad = DEG2RAD(rotation);
- Vec3 pivot(position.GetX(), position.GetY(), 0.0f);
- Matrix34A moveToPivotSpaceMat = Matrix34A::CreateTranslationMat(-pivot);
- Matrix34A rotMat = Matrix34A::CreateRotationZ(rotRad);
- Matrix34A moveFromPivotSpaceMat = Matrix34A::CreateTranslationMat(pivot);
+ AZ::Vector3 pivot(position.GetX(), position.GetY(), 0.0f);
+ AZ::Matrix3x4 moveToPivotSpaceMat = AZ::Matrix3x4::CreateTranslation(-pivot);
+ AZ::Matrix3x4 rotMat = AZ::Matrix3x4::CreateRotationZ(rotRad);
+ AZ::Matrix3x4 moveFromPivotSpaceMat = AZ::Matrix3x4::CreateTranslation(pivot);
- Matrix34A transform = moveFromPivotSpaceMat * rotMat * moveToPivotSpaceMat;
- fontContext.SetTransform(transform);
- flags |= eDrawText_UseTransform;
+ drawParams.m_transform = moveFromPivotSpaceMat * rotMat * moveToPivotSpaceMat;
+ drawParams.m_useTransform = true;
}
- // The font system uses these alignment flags to force text to be in the safe zone
- // depending on overscan etc
- if (horizontalAlignment == HAlign::Center)
- {
- flags |= eDrawText_Center;
- }
- else if (horizontalAlignment == HAlign::Right)
- {
- flags |= eDrawText_Right;
- }
+ DeferredText newText;
+ newText.m_drawParameters = drawParams;
+ newText.m_fontId = fontId;
+ newText.m_string = textString;
- if (verticalAlignment == VAlign::Center)
- {
- flags |= eDrawText_CenterV;
- }
- else if (verticalAlignment == VAlign::Bottom)
- {
- flags |= eDrawText_Bottom;
- }
-
- fontContext.SetFlags(flags);
-
- if (m_deferCalls)
- {
- DeferredText* newText = new DeferredText;
-
- newText->m_fontContext = fontContext;
- newText->m_font = font;
- newText->m_position = alignedPosition;
- newText->m_string = textString;
-
- m_deferredPrimitives.push_back(newText);
- }
- else
- {
- font->DrawString(alignedPosition.GetX(), alignedPosition.GetY(), textString, true, fontContext);
- }
+ DrawOrDeferTextString(&newText);
}
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -685,6 +698,20 @@ void CDraw2d::DrawOrDeferLine(const DeferredLine* line)
}
}
+void CDraw2d::DrawOrDeferTextString(const DeferredText* text)
+{
+ if (m_deferCalls)
+ {
+ DeferredText* newText = new DeferredText;
+ *newText = *text;
+ m_deferredPrimitives.push_back(newText);
+ }
+ else
+ {
+ text->Draw(m_dynamicDraw, m_shaderData, GetViewportContext());
+ }
+}
+
void CDraw2d::DrawOrDeferRectOutline(const DeferredRectOutline* rectOutline)
{
if (m_deferCalls)
@@ -919,6 +946,15 @@ void CDraw2d::DeferredText::Draw([[maybe_unused]] AZ::RHI::PtrDrawString(m_position.GetX(), m_position.GetY(), m_string.c_str(), true, m_fontContext);
+ AzFramework::FontDrawInterface* fontDrawInterface = nullptr;
+ AzFramework::FontQueryInterface* fontQueryInterface = AZ::Interface::Get();
+ if (fontQueryInterface)
+ {
+ fontDrawInterface = fontQueryInterface->GetFontDrawInterface(m_fontId);
+ if (fontDrawInterface)
+ {
+ fontDrawInterface->DrawScreenAlignedText2d(m_drawParameters, m_string.c_str());
+ }
+ }
}
diff --git a/Gems/LyShine/Code/Source/LyShine.cpp b/Gems/LyShine/Code/Source/LyShine.cpp
index 679cae3421..fb6dcb2628 100644
--- a/Gems/LyShine/Code/Source/LyShine.cpp
+++ b/Gems/LyShine/Code/Source/LyShine.cpp
@@ -454,7 +454,6 @@ void CLyShine::Render()
GetUiRenderer()->EndUiFrameRender();
-#ifdef LYSHINE_ATOM_TODO // convert debug info to Atom
#ifndef _RELEASE
if (CV_ui_DisplayElemBounds)
{
@@ -474,7 +473,6 @@ void CLyShine::Render()
m_uiCanvasManager->DebugDisplayDrawCallData();
}
#endif
-#endif
}
////////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/Gems/LyShine/Code/Source/LyShineDebug.cpp b/Gems/LyShine/Code/Source/LyShineDebug.cpp
index 76b4030106..44e0e187ec 100644
--- a/Gems/LyShine/Code/Source/LyShineDebug.cpp
+++ b/Gems/LyShine/Code/Source/LyShineDebug.cpp
@@ -12,6 +12,7 @@
#include "LyShine_precompiled.h"
#include "LyShineDebug.h"
#include "IConsole.h"
+#include "IRenderer.h"
#include
#include
@@ -392,15 +393,15 @@ static void DebugDrawColoredBox(AZ::Vector2 pos, AZ::Vector2 size, AZ::Color col
////////////////////////////////////////////////////////////////////////////////////////////////////
#if !defined(_RELEASE)
-static void DebugDrawStringWithSizeBox(IFFont* font, unsigned int effectIndex, const char* sizeString,
+static void DebugDrawStringWithSizeBox(AZStd::string_view font, unsigned int effectIndex, const char* sizeString,
const char* testString, AZ::Vector2 pos, float spacing, float size)
{
CDraw2d* draw2d = Draw2dHelper::GetDefaultDraw2d();
IDraw2d::TextOptions textOptions = draw2d->GetDefaultTextOptions();
- if (font)
+ if (!font.empty())
{
- textOptions.font = font;
+ textOptions.fontName = font;
}
textOptions.effectIndex = effectIndex;
@@ -427,7 +428,7 @@ static void DebugDrawStringWithSizeBox(IFFont* font, unsigned int effectIndex, c
////////////////////////////////////////////////////////////////////////////////////////////////////
#if !defined(_RELEASE)
-static void DebugDraw2dFontSizes(IFFont* font, unsigned int effectIndex, const char* fontName)
+static void DebugDraw2dFontSizes(AZStd::string_view font, unsigned int effectIndex)
{
CDraw2d* draw2d = Draw2dHelper::GetDefaultDraw2d();
@@ -436,7 +437,7 @@ static void DebugDraw2dFontSizes(IFFont* font, unsigned int effectIndex, const c
float xSpacing = 20.0f;
char buffer[32];
- sprintf_s(buffer, "Font = %s, effect = %d", fontName, effectIndex);
+ sprintf_s(buffer, "Font = %s, effect = %d", font.data(), effectIndex);
draw2d->DrawText(buffer, AZ::Vector2(xOffset, yOffset), 32);
yOffset += 40.0f;
draw2d->DrawText("NOTE: if the effect includes a drop shadow baked into font then the pixel size",
@@ -1441,10 +1442,10 @@ void LyShineDebug::RenderDebug()
switch (CV_r_DebugUIDraw2dFont)
{
case 1: // test font sizes (default font, effect 0)
- DebugDraw2dFontSizes(0, 0, "default");
+ DebugDraw2dFontSizes("default", 0);
break;
case 2: // test font sizes (default font, effect 1)
- DebugDraw2dFontSizes(0, 1, "default");
+ DebugDraw2dFontSizes("default", 1);
break;
case 3: // test font alignment
DebugDraw2dFontAlignment();
diff --git a/Gems/LyShine/Code/Source/LyShineDebug.h b/Gems/LyShine/Code/Source/LyShineDebug.h
index ed03fd10b2..e50689710a 100644
--- a/Gems/LyShine/Code/Source/LyShineDebug.h
+++ b/Gems/LyShine/Code/Source/LyShineDebug.h
@@ -14,7 +14,9 @@
#ifndef _RELEASE
#include
-class ITexture;
+#include
+#include
+
#endif
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -66,7 +68,7 @@ public: // static member functions
struct DebugInfoTextureUsage
{
- ITexture* m_texture;
+ AZ::Data::Instance m_texture;
bool m_isClampTextureUsage;
int m_numCanvasesUsed;
int m_numDrawCallsUsed;
diff --git a/Gems/LyShine/Code/Source/RenderGraph.cpp b/Gems/LyShine/Code/Source/RenderGraph.cpp
index e5ac6c7b8f..d5a1df7b15 100644
--- a/Gems/LyShine/Code/Source/RenderGraph.cpp
+++ b/Gems/LyShine/Code/Source/RenderGraph.cpp
@@ -18,6 +18,7 @@
#include
#ifndef _RELEASE
+#include
#include
#endif
@@ -1115,7 +1116,7 @@ namespace LyShine
m_wasBuiltThisFrame = false;
- AZStd::set uniqueTextures;
+ AZStd::set> uniqueTextures;
// If we are rendering to the render targets this frame then record the stats for doing that
if (m_renderToRenderTargetCount < 2)
@@ -1144,13 +1145,11 @@ namespace LyShine
}
////////////////////////////////////////////////////////////////////////////////////////////////////
- void RenderGraph::GetDebugInfoRenderNodeList(const AZStd::vector& renderNodeList, LyShineDebug::DebugInfoRenderGraph& info, AZStd::set& uniqueTextures) const
+ void RenderGraph::GetDebugInfoRenderNodeList(
+ const AZStd::vector& renderNodeList,
+ LyShineDebug::DebugInfoRenderGraph& info,
+ AZStd::set>& uniqueTextures) const
{
- AZ_UNUSED(renderNodeList);
- AZ_UNUSED(info);
- AZ_UNUSED(uniqueTextures);
-
-#ifdef LYSHINE_ATOM_TODO // keeping this code for future phase (convert debug info to use Atom)
const PrimitiveListRenderNode* prevPrimListNode = nullptr;
bool isFirstNode = true;
bool wasLastNodeAMask = false;
@@ -1235,7 +1234,6 @@ namespace LyShine
isFirstNode = false;
}
-#endif
}
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1290,13 +1288,6 @@ namespace LyShine
void* context,
const AZStd::string& indent) const
{
- AZ_UNUSED(renderNodeList);
- AZ_UNUSED(fileHandle);
- AZ_UNUSED(reportInfo);
- AZ_UNUSED(context);
- AZ_UNUSED(indent);
-
-#ifdef LYSHINE_ATOM_TODO // keeping this code for future phase (convert debug info to use Atom)
AZStd::string logLine;
bool previousNodeAlreadyCounted = false;
@@ -1355,10 +1346,10 @@ namespace LyShine
{
for (int i = 0; i < prevPrimListNode->GetNumTextures(); ++i)
{
- ITexture* texture = prevPrimListNode->GetTexture(i);
+ AZ::Data::Instance texture = prevPrimListNode->GetTexture(i);
if (!texture)
{
- texture = gEnv->pRenderer->GetWhiteTexture();
+ texture = AZ::RPI::ImageSystemInterface::Get()->GetSystemImage(AZ::RPI::SystemImage::White);
}
bool isClampTextureUsage = prevPrimListNode->GetTextureIsClampMode(i);
@@ -1405,17 +1396,19 @@ namespace LyShine
for (int i = 0; i < primListRenderNode->GetNumTextures(); ++i)
{
- ITexture* texture = primListRenderNode->GetTexture(i);
+ AZ::Data::Instance texture = primListRenderNode->GetTexture(i);
if (!texture)
{
- texture = gEnv->pRenderer->GetWhiteTexture();
+ texture = AZ::RPI::ImageSystemInterface::Get()->GetSystemImage(AZ::RPI::SystemImage::White);
}
bool isClampTextureUsage = primListRenderNode->GetTextureIsClampMode(i);
LyShineDebug::DebugInfoTextureUsage* matchingTextureUsage = nullptr;
// Write line to logfile for this texture
- logLine = AZStd::string::format("%s %s\r\n", indent.c_str(), texture->GetName());
+ AZStd::string textureName;
+ AZ::Data::AssetCatalogRequestBus::BroadcastResult(textureName, &AZ::Data::AssetCatalogRequests::GetAssetPathById, texture->GetAssetId());
+ logLine = AZStd::string::format("%s %s\r\n", indent.c_str(), textureName.c_str());
AZ::IO::LocalFileIO::GetInstance()->Write(fileHandle, logLine.c_str(), logLine.size());
// see if texture is in reportInfo
@@ -1459,7 +1452,6 @@ namespace LyShine
prevPrimListNode = primListRenderNode;
}
}
-#endif
}
#endif
diff --git a/Gems/LyShine/Code/Source/RenderGraph.h b/Gems/LyShine/Code/Source/RenderGraph.h
index f9d16cf8b7..2f1586e857 100644
--- a/Gems/LyShine/Code/Source/RenderGraph.h
+++ b/Gems/LyShine/Code/Source/RenderGraph.h
@@ -13,7 +13,6 @@
#pragma once
#include
-#include
#include
#include
#include
@@ -294,7 +293,10 @@ namespace LyShine
void ValidateGraph();
void GetDebugInfoRenderGraph(LyShineDebug::DebugInfoRenderGraph& info) const;
- void GetDebugInfoRenderNodeList(const AZStd::vector& renderNodeList, LyShineDebug::DebugInfoRenderGraph& info, AZStd::set& uniqueTextures) const;
+ void GetDebugInfoRenderNodeList(
+ const AZStd::vector& renderNodeList,
+ LyShineDebug::DebugInfoRenderGraph& info,
+ AZStd::set>& uniqueTextures) const;
void DebugReportDrawCalls(AZ::IO::HandleType fileHandle, LyShineDebug::DebugInfoDrawCallReport& reportInfo, void* context) const;
void DebugReportDrawCallsRenderNodeList(const AZStd::vector& renderNodeList, AZ::IO::HandleType fileHandle,
diff --git a/Gems/LyShine/Code/Source/UiCanvasManager.cpp b/Gems/LyShine/Code/Source/UiCanvasManager.cpp
index 4115feaf22..b64a13280f 100644
--- a/Gems/LyShine/Code/Source/UiCanvasManager.cpp
+++ b/Gems/LyShine/Code/Source/UiCanvasManager.cpp
@@ -1425,7 +1425,8 @@ void UiCanvasManager::DebugReportDrawCalls(const AZStd::string& name) const
if (reportTextureUsage.m_numCanvasesUsed > 1 &&
reportTextureUsage.m_numDrawCallsWhereExceedingMaxTextures)
{
- AZStd::string textureName = reportTextureUsage.m_texture->GetName();
+ AZStd::string textureName;
+ AZ::Data::AssetCatalogRequestBus::BroadcastResult(textureName, &AZ::Data::AssetCatalogRequests::GetAssetPathById, reportTextureUsage.m_texture->GetAssetId());
if (textureName.compare(0, fontTexturePrefix.length(), fontTexturePrefix) != 0)
{
logLine = AZStd::string::format("%s\r\n", textureName.c_str());
@@ -1457,7 +1458,8 @@ void UiCanvasManager::DebugReportDrawCalls(const AZStd::string& name) const
reportTextureUsage.m_lastContextUsed == canvas &&
reportTextureUsage.m_numDrawCallsWhereExceedingMaxTextures)
{
- AZStd::string textureName = reportTextureUsage.m_texture->GetName();
+ AZStd::string textureName;
+ AZ::Data::AssetCatalogRequestBus::BroadcastResult(textureName, &AZ::Data::AssetCatalogRequests::GetAssetPathById, reportTextureUsage.m_texture->GetAssetId());
// exclude font textures
if (textureName.compare(0, fontTexturePrefix.length(), fontTexturePrefix) != 0)
diff --git a/Gems/LyShine/Code/Source/UiRenderer.cpp b/Gems/LyShine/Code/Source/UiRenderer.cpp
index 2a2c950e82..57acbed5d5 100644
--- a/Gems/LyShine/Code/Source/UiRenderer.cpp
+++ b/Gems/LyShine/Code/Source/UiRenderer.cpp
@@ -12,6 +12,7 @@
#include "LyShine_precompiled.h"
#include "UiRenderer.h"
+#include
#include
#include
#include
@@ -24,7 +25,7 @@
#include
#include
-#include
+#include
////////////////////////////////////////////////////////////////////////////////////////////////////
// PUBLIC MEMBER FUNCTIONS
@@ -353,7 +354,6 @@ void UiRenderer::DebugDisplayTextureData(int recordingOption)
{
if (recordingOption > 0)
{
-#ifdef LYSHINE_ATOM_TODO
// compute the total area of all the textures, also create a vector that we can sort by area
AZStd::vector textures;
int totalArea = 0;
@@ -374,15 +374,14 @@ void UiRenderer::DebugDisplayTextureData(int recordingOption)
return lhs->GetDataSize() > rhs->GetDataSize();
});
- IDraw2d* draw2d = Draw2dHelper::GetDraw2d();
+ CDraw2d* draw2d = Draw2dHelper::GetDefaultDraw2d();
// setup to render lines of text for the debug display
- draw2d->BeginDraw2d(false);
float xOffset = 20.0f;
float yOffset = 20.0f;
- int blackTexture = gEnv->pRenderer->GetBlackTextureId();
+ auto blackTexture = AZ::RPI::ImageSystemInterface::Get()->GetSystemImage(AZ::RPI::SystemImage::Black);
float textOpacity = 1.0f;
float backgroundRectOpacity = 0.75f;
const float lineSpacing = 20.0f;
@@ -432,9 +431,6 @@ void UiRenderer::DebugDisplayTextureData(int recordingOption)
texture->GetWidth(), texture->GetHeight(), texture->GetDataSize(), texture->GetFormatName(), texture->GetName());
WriteLine(buffer, white);
}
-
- draw2d->EndDraw2d();
-#endif
}
}
diff --git a/Gems/LyShine/Code/Source/UiRenderer.h b/Gems/LyShine/Code/Source/UiRenderer.h
index 260bd8278c..888c88586a 100644
--- a/Gems/LyShine/Code/Source/UiRenderer.h
+++ b/Gems/LyShine/Code/Source/UiRenderer.h
@@ -20,6 +20,8 @@
#include
#endif
+class ITexture;
+
////////////////////////////////////////////////////////////////////////////////////////////////////
//! UI render interface
//
@@ -136,8 +138,6 @@ protected: // attributes
#ifndef _RELEASE
int m_debugTextureDataRecordLevel = 0;
-#ifdef LYSHINE_ATOM_TODO // Convert debug code to Atom
- AZStd::unordered_set m_texturesUsedInFrame;
-#endif
+ AZStd::unordered_set m_texturesUsedInFrame; // LYSHINE_ATOM_TODO - convert to RPI::Image
#endif
};