From 6a73249da7313e1ad37cbd4649c11d54ce84a0fb Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Thu, 7 Sep 2023 20:50:50 -0400 Subject: [PATCH] Added toggle for SSAO --- Editor/src/Windows/EditorInterface.cpp | 15 +++++++++++++++ Nuake/src/Rendering/PostFX/SSAO.cpp | 10 ++++++++++ Nuake/src/Rendering/PostFX/SSAO.h | 1 + Nuake/src/Rendering/SceneRenderer.cpp | 11 +++++++++-- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Editor/src/Windows/EditorInterface.cpp b/Editor/src/Windows/EditorInterface.cpp index c4e184ad..481e5004 100644 --- a/Editor/src/Windows/EditorInterface.cpp +++ b/Editor/src/Windows/EditorInterface.cpp @@ -761,6 +761,21 @@ namespace Nuake { ImGui::TableSetupColumn("set", 0, 0.6); ImGui::TableSetupColumn("reset", 0, 0.1); + ImGui::TableNextColumn(); + { + // Title + ImGui::Text("SSAO"); + ImGui::TableNextColumn(); + + ImGui::Checkbox("##SSAOEnabled", &env->SSAOEnabled); + ImGui::TableNextColumn(); + + // Reset button + ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(1, 1, 1, 0)); + std::string resetSSAO = ICON_FA_UNDO + std::string("##resetSSAO"); + if (ImGui::Button(resetSSAO.c_str())) env->SSAOEnabled = false; + ImGui::PopStyleColor(); + } ImGui::TableNextColumn(); { // Title diff --git a/Nuake/src/Rendering/PostFX/SSAO.cpp b/Nuake/src/Rendering/PostFX/SSAO.cpp index 757f0f5b..5b7f7c7b 100644 --- a/Nuake/src/Rendering/PostFX/SSAO.cpp +++ b/Nuake/src/Rendering/PostFX/SSAO.cpp @@ -40,6 +40,16 @@ namespace Nuake _ssaoBlurFramebuffer->QueueResize(size); } + void SSAO::Clear() + { + _ssaoBlurFramebuffer->Bind(); + { + RenderCommand::SetClearColor({ 1, 1, 1, 1}); + _ssaoBlurFramebuffer->Clear(); + } + _ssaoBlurFramebuffer->Unbind(); + } + void SSAO::GenerateKernel() { std::uniform_real_distribution randomFloats(0.0, 1.0); // random floats between [0.0, 1.0] diff --git a/Nuake/src/Rendering/PostFX/SSAO.h b/Nuake/src/Rendering/PostFX/SSAO.h index 5c37cc4a..d3737143 100644 --- a/Nuake/src/Rendering/PostFX/SSAO.h +++ b/Nuake/src/Rendering/PostFX/SSAO.h @@ -33,6 +33,7 @@ namespace Nuake float Falloff = 0.002f; float Strength = 0.2f; void Resize(const Vector2& size); + void Clear(); SSAO(); void Draw(FrameBuffer* gBuffer, const Matrix4& projection, const Matrix4& view); Ref GetOuput() const; diff --git a/Nuake/src/Rendering/SceneRenderer.cpp b/Nuake/src/Rendering/SceneRenderer.cpp index 62760762..01b75a21 100644 --- a/Nuake/src/Rendering/SceneRenderer.cpp +++ b/Nuake/src/Rendering/SceneRenderer.cpp @@ -56,8 +56,15 @@ namespace Nuake // SSAO const auto& sceneEnv = scene.GetEnvironment(); - sceneEnv->mSSAO->Resize(framebuffer.GetSize()); - sceneEnv->mSSAO->Draw(mGBuffer.get(), mProjection, mView); + if (sceneEnv->SSAOEnabled) + { + sceneEnv->mSSAO->Resize(framebuffer.GetSize()); + sceneEnv->mSSAO->Draw(mGBuffer.get(), mProjection, mView); + } + else + { + sceneEnv->mSSAO->Clear(); + } mShadingBuffer->QueueResize(framebuffer.GetSize()); ShadingPass(scene);