This commit is contained in:
Isuru Samarathunga
2025-10-14 01:50:56 +05:30
parent 13e8c538c7
commit 58f2190199
13 changed files with 261 additions and 45 deletions

View File

@ -27,6 +27,8 @@
namespace ia::iae
{
STATIC Mat4 IdentityMatrix(1.0f);
EXTERN SDL_Window *g_windowHandle;
INT32 Renderer::s_screenWidth{};
@ -136,8 +138,6 @@ namespace ia::iae
VOID Renderer::BeginFrame()
{
STATIC Mat4 IdentityMatrix(1.0f);
if (!(s_state.ActiveCommandBuffer = SDL_AcquireGPUCommandBuffer(s_gpuDevice)))
THROW_UNKNOWN("Failed to acquire SDL GPU command buffer: ", SDL_GetError());
@ -152,10 +152,6 @@ namespace ia::iae
SDL_PushGPUVertexUniformData(
s_state.ActiveCommandBuffer, 0,
s_state.ActiveCamera ? s_state.ActiveCamera->GetProjectionMatrix() : &IdentityMatrix, sizeof(Mat4));
SDL_PushGPUVertexUniformData(
s_state.ActiveCommandBuffer, 1,
(s_state.ActiveCamera && s_state.CameraRelative) ? s_state.ActiveCamera->GetViewMatrix() : &IdentityMatrix,
sizeof(Mat4));
}
VOID Renderer::EndFrame()
@ -236,9 +232,9 @@ namespace ia::iae
const auto activeScene = WorldManager::GetActiveScene();
if (activeScene)
{
const auto sceneExtent = activeScene->Extent();
s_state.SceneScaleFactor = {(FLOAT32) newWidth / (FLOAT32) sceneExtent.x,
(FLOAT32) newHeight / (FLOAT32) sceneExtent.y};
const auto sceneViewport = activeScene->Viewport();
s_state.SceneScaleFactor = {(FLOAT32) newWidth / (FLOAT32) sceneViewport.x,
(FLOAT32) newHeight / (FLOAT32) sceneViewport.y};
IAE_LOG_INFO("Updated Scene Scale Factor: (", s_state.SceneScaleFactor.x, ", ", s_state.SceneScaleFactor.y,
")");
}
@ -282,6 +278,11 @@ namespace ia::iae
#pragma pack(pop)
SDL_PushGPUVertexUniformData(
s_state.ActiveCommandBuffer, 1,
(s_state.ActiveCamera && s_state.CameraRelative) ? s_state.ActiveCamera->GetViewMatrix() : &IdentityMatrix,
sizeof(Mat4));
s_fragmentUniform.ColorOverlay = s_state.ColorOverlay.GetAsFloatVec();
s_fragmentUniform.FlippedH = s_state.FlippedH;
s_fragmentUniform.FlippedV = s_state.FlippedV;
@ -385,7 +386,7 @@ namespace ia::iae
sortIndex += static_cast<INT16>(position.y);
position *= Renderer::s_state.SceneScaleFactor;
// scale *= Renderer::s_state.SceneScaleFactor;
scale *= Renderer::s_state.SceneScaleFactor;
Renderer::s_state.ModelMatrix =
glm::translate(glm::mat4(1.0f), glm::vec3{position.x, position.y,