From 2062c35fded4da5f77f76735238012bdca22ade7 Mon Sep 17 00:00:00 2001 From: Isuru Samarathunga Date: Thu, 16 Oct 2025 22:59:03 +0530 Subject: [PATCH] Fixes --- Engine/Src/Imp/CPP/Renderer/Renderer.cpp | 20 +++----------------- Engine/Src/Imp/HPP/Renderer/Renderer.hpp | 9 +++++++-- Tools/BuildAndroid.bat | 8 +++++++- Vendor/IACore | 2 +- 4 files changed, 18 insertions(+), 21 deletions(-) diff --git a/Engine/Src/Imp/CPP/Renderer/Renderer.cpp b/Engine/Src/Imp/CPP/Renderer/Renderer.cpp index 7d86267..73aaabc 100644 --- a/Engine/Src/Imp/CPP/Renderer/Renderer.cpp +++ b/Engine/Src/Imp/CPP/Renderer/Renderer.cpp @@ -37,7 +37,6 @@ namespace ia::iae SDL_GPUDevice *Renderer::s_gpuDevice{}; SDL_GPUTexture *Renderer::s_renderTargetSceneColor{}; - SDL_GPUTexture *Renderer::s_renderTargetSceneDepth{}; SDL_GPUTexture *Renderer::s_renderTargetDebugDrawColor{}; Pipeline *Renderer::s_geometryPipeline{}; @@ -45,6 +44,8 @@ namespace ia::iae Renderer::Geometry *Renderer::s_quadGeometry{}; + Vector Renderer::s_drawCommands; + VOID Renderer::Initialize() { if (!(s_gpuDevice = SDL_CreateGPUDevice(SDL_GPU_SHADERFORMAT_SPIRV, Engine::IsDebugMode(), nullptr))) @@ -97,14 +98,6 @@ namespace ia::iae s_state.ColorTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR; s_state.ColorTargetInfo.store_op = SDL_GPU_STOREOP_STORE; - s_state.DepthStencilTargetInfo.cycle = true; - s_state.DepthStencilTargetInfo.clear_depth = 0; - s_state.DepthStencilTargetInfo.clear_stencil = 0; - s_state.DepthStencilTargetInfo.load_op = SDL_GPU_LOADOP_CLEAR; - s_state.DepthStencilTargetInfo.store_op = SDL_GPU_STOREOP_STORE; - s_state.DepthStencilTargetInfo.stencil_load_op = SDL_GPU_LOADOP_CLEAR; - s_state.DepthStencilTargetInfo.stencil_store_op = SDL_GPU_STOREOP_STORE; - s_quadGeometry = CreateGeometry( { {glm::vec3{0, 1, 0}, glm::vec2{0, 1}, glm::vec4{1.0f, 1.0f, 1.0f, 1.0f}}, @@ -126,7 +119,6 @@ namespace ia::iae delete s_geometryPipeline; delete s_postprocessPipeline; - GPUResourceManager::DestroyTexture(s_renderTargetSceneDepth); GPUResourceManager::DestroyTexture(s_renderTargetSceneColor); GPUResourceManager::DestroyTexture(s_renderTargetDebugDrawColor); @@ -144,9 +136,8 @@ namespace ia::iae const auto clearColor = WorldManager::GetActiveScene()->BackgroundColor().GetAsFloatVec(); s_state.ColorTargetInfo.clear_color = SDL_FColor{clearColor.x, clearColor.y, clearColor.z, 1.0f}; s_state.ColorTargetInfo.texture = s_renderTargetSceneColor; - s_state.DepthStencilTargetInfo.texture = s_renderTargetSceneDepth; s_state.ActiveRenderPass = SDL_BeginGPURenderPass(s_state.ActiveCommandBuffer, &s_state.ColorTargetInfo, 1, - &s_state.DepthStencilTargetInfo); + nullptr); SDL_BindGPUGraphicsPipeline(s_state.ActiveRenderPass, s_geometryPipeline->GetHandle()); SDL_PushGPUVertexUniformData( @@ -200,16 +191,11 @@ namespace ia::iae s_screenWidth = newWidth; s_screenHeight = newHeight; - if (s_renderTargetSceneDepth) - GPUResourceManager::DestroyTexture(s_renderTargetSceneDepth); if (s_renderTargetSceneColor) GPUResourceManager::DestroyTexture(s_renderTargetSceneColor); if (s_renderTargetDebugDrawColor) GPUResourceManager::DestroyTexture(s_renderTargetDebugDrawColor); - s_renderTargetSceneDepth = - GPUResourceManager::CreateTexture(SDL_GPU_TEXTUREUSAGE_DEPTH_STENCIL_TARGET, s_screenWidth, s_screenHeight, - nullptr, SDL_GPU_TEXTUREFORMAT_D16_UNORM); s_renderTargetSceneColor = GPUResourceManager::CreateTexture( SDL_GPU_TEXTUREUSAGE_COLOR_TARGET | SDL_GPU_TEXTUREUSAGE_SAMPLER, s_screenWidth, s_screenHeight, nullptr, SDL_GetGPUSwapchainTextureFormat(s_gpuDevice, g_windowHandle)); diff --git a/Engine/Src/Imp/HPP/Renderer/Renderer.hpp b/Engine/Src/Imp/HPP/Renderer/Renderer.hpp index 9af0035..3e1486e 100644 --- a/Engine/Src/Imp/HPP/Renderer/Renderer.hpp +++ b/Engine/Src/Imp/HPP/Renderer/Renderer.hpp @@ -52,11 +52,16 @@ namespace ia::iae SDL_GPURenderPass* ActiveRenderPass{}; SDL_GPUCommandBuffer* ActiveCommandBuffer{}; SDL_GPUColorTargetInfo ColorTargetInfo{}; - SDL_GPUDepthStencilTargetInfo DepthStencilTargetInfo{}; class CameraComponent *ActiveCamera{}; }; + struct DrawCommand + { + State DrawState{}; + Geometry* GeometryHandle{}; + }; + public: STATIC VOID Initialize(); STATIC VOID Terminate(); @@ -87,11 +92,11 @@ namespace ia::iae STATIC INT32 s_screenHeight; STATIC SDL_GPUDevice *s_gpuDevice; STATIC SDL_GPUTexture *s_renderTargetSceneColor; - STATIC SDL_GPUTexture *s_renderTargetSceneDepth; STATIC SDL_GPUTexture *s_renderTargetDebugDrawColor; STATIC Pipeline* s_geometryPipeline; STATIC Pipeline* s_postprocessPipeline; STATIC Geometry* s_quadGeometry; + STATIC Vector s_drawCommands; friend class Engine; }; diff --git a/Tools/BuildAndroid.bat b/Tools/BuildAndroid.bat index 517c5aa..b6a53c4 100644 --- a/Tools/BuildAndroid.bat +++ b/Tools/BuildAndroid.bat @@ -1 +1,7 @@ -cmake -G Ninja -S . -B ./build-android -DCMAKE_TOOLCHAIN_FILE="%NDK_PATH%\build\cmake\android.toolchain.cmake" -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-35 -DCMAKE_BUILD_TYPE=Debug +setlocal +SET PATH=%PATH%;./Tools + +cmake -G Ninja -S . -B ./build-android-x64 -DCMAKE_TOOLCHAIN_FILE="Android/android-ndk-r27d/build/cmake/android.toolchain.cmake" -DANDROID_ABI=x86_64 -DANDROID_PLATFORM=android-35 -DCMAKE_BUILD_TYPE=Debug +cmake -G Ninja -S . -B ./build-android-armv8 -DCMAKE_TOOLCHAIN_FILE="Android/android-ndk-r27d/build/cmake/android.toolchain.cmake" -DANDROID_ABI=arm64-v8a -DANDROID_PLATFORM=android-35 -DCMAKE_BUILD_TYPE=Debug +cmake --build ./build-android-x64 +cmake --build ./build-android-armv8 diff --git a/Vendor/IACore b/Vendor/IACore index 07638ea..ee37b0a 160000 --- a/Vendor/IACore +++ b/Vendor/IACore @@ -1 +1 @@ -Subproject commit 07638ea7b3145902cd9ed99c0c358ecab2fe29fe +Subproject commit ee37b0a02b428d9f04cfa1f26df1fd79ede854ef