Usable Engine
This commit is contained in:
@ -144,10 +144,12 @@ namespace ia::iae
|
||||
&s_state.DepthStencilTargetInfo);
|
||||
|
||||
SDL_BindGPUGraphicsPipeline(s_state.ActiveRenderPass, s_geometryPipeline->GetHandle());
|
||||
SDL_PushGPUVertexUniformData(s_state.ActiveCommandBuffer, 0, &s_state.ProjectionMatrix, sizeof(Mat4));
|
||||
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->GetMatrix() : &IdentityMatrix,
|
||||
(s_state.ActiveCamera && !s_state.CameraRelative) ? s_state.ActiveCamera->GetViewMatrix() : &IdentityMatrix,
|
||||
sizeof(Mat4));
|
||||
}
|
||||
|
||||
@ -210,8 +212,17 @@ namespace ia::iae
|
||||
SDL_GPU_TEXTUREUSAGE_COLOR_TARGET | SDL_GPU_TEXTUREUSAGE_SAMPLER, s_screenWidth, s_screenHeight, nullptr,
|
||||
SDL_GetGPUSwapchainTextureFormat(s_gpuDevice, g_windowHandle));
|
||||
|
||||
s_state.ProjectionMatrix =
|
||||
glm::orthoLH(0.0f, (FLOAT32) s_screenWidth, (FLOAT32) s_screenHeight, 0.0f, -2097152.0f, 2097152.0f);
|
||||
s_state.Scissor = {0, 0, newWidth, newHeight};
|
||||
|
||||
s_state.ActiveViewport.x = 0;
|
||||
s_state.ActiveViewport.y = 0;
|
||||
s_state.ActiveViewport.w = newWidth;
|
||||
s_state.ActiveViewport.h = newHeight;
|
||||
s_state.ActiveViewport.min_depth = 0.0f;
|
||||
s_state.ActiveViewport.max_depth = 1.0f;
|
||||
|
||||
if (s_state.ActiveCamera)
|
||||
s_state.ActiveCamera->SetViewport(newWidth, newHeight);
|
||||
}
|
||||
|
||||
SDL_GPUTextureFormat Renderer::GetRenderTargetFormat()
|
||||
@ -233,6 +244,8 @@ namespace ia::iae
|
||||
|
||||
VOID Renderer::DestroyGeometry(IN Geometry *handle)
|
||||
{
|
||||
GPUResourceManager::DestroyBuffer(handle->VertexBuffer);
|
||||
GPUResourceManager::DestroyBuffer(handle->IndexBuffer);
|
||||
delete handle;
|
||||
}
|
||||
|
||||
@ -250,8 +263,7 @@ namespace ia::iae
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
s_fragmentUniform.ColorOverlay = Vec4(s_state.ColorOverlay.R / 255.0f, s_state.ColorOverlay.G / 255.0f,
|
||||
s_state.ColorOverlay.B / 255.0f, s_state.ColorOverlay.A / 255.0f);
|
||||
s_fragmentUniform.ColorOverlay = s_state.ColorOverlay.GetAsFloatVec();
|
||||
s_fragmentUniform.FlippedH = s_state.FlippedH;
|
||||
s_fragmentUniform.FlippedV = s_state.FlippedV;
|
||||
s_fragmentUniform.TextureOffset = s_state.TextureOffset;
|
||||
@ -261,6 +273,7 @@ namespace ia::iae
|
||||
SDL_PushGPUFragmentUniformData(s_state.ActiveCommandBuffer, 0, &s_fragmentUniform, sizeof(s_fragmentUniform));
|
||||
|
||||
SDL_SetGPUScissor(s_state.ActiveRenderPass, &s_state.Scissor);
|
||||
SDL_SetGPUViewport(s_state.ActiveRenderPass, &s_state.ActiveViewport);
|
||||
|
||||
SDL_GPUBufferBinding bufferBindings[] = {{.buffer = handle->VertexBuffer, .offset = 0},
|
||||
{.buffer = handle->IndexBuffer, .offset = 0}};
|
||||
@ -272,9 +285,10 @@ namespace ia::iae
|
||||
|
||||
namespace ia::iae
|
||||
{
|
||||
VOID Engine::SetActiveCamera(IN ICameraComponent *cameraComponent)
|
||||
VOID Engine::SetActiveCamera(IN CameraComponent *cameraComponent)
|
||||
{
|
||||
Renderer::s_state.ActiveCamera = cameraComponent;
|
||||
Renderer::OnScreenResize(Renderer::s_screenWidth, Renderer::s_screenHeight);
|
||||
}
|
||||
|
||||
Handle Engine::CreateGeometry(IN CONST Vector<GeometryVertex> &vertices, IN CONST Vector<INT32> &indices)
|
||||
@ -354,6 +368,6 @@ namespace ia::iae
|
||||
|
||||
Handle Engine::GetGeometry_Quad()
|
||||
{
|
||||
return (Handle)Renderer::s_quadGeometry;
|
||||
return (Handle) Renderer::s_quadGeometry;
|
||||
}
|
||||
} // namespace ia::iae
|
||||
Reference in New Issue
Block a user