From f27aa9471f4b8e7f01f26c900e45320ec9a2e11d Mon Sep 17 00:00:00 2001 From: benpm Date: Tue, 22 Jul 2025 17:37:31 -0600 Subject: [PATCH] Enable postprocessing module and update related rendering logic (WIP) --- modules/postprocessing/CMakeLists.txt | 20 +++++----- modules/postprocessing/include.cmake | 2 +- .../rendering/postprocessingrenderer.cpp | 2 +- src/rendering/framebufferrenderer.cpp | 40 +++++++++++-------- 4 files changed, 36 insertions(+), 28 deletions(-) diff --git a/modules/postprocessing/CMakeLists.txt b/modules/postprocessing/CMakeLists.txt index 870b9f619b..e5bdde7fdd 100644 --- a/modules/postprocessing/CMakeLists.txt +++ b/modules/postprocessing/CMakeLists.txt @@ -35,18 +35,18 @@ set(SOURCE_FILES source_group("Source Files" FILES ${SOURCE_FILES}) set(SHADER_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/shaders/blend_fs.glsl - ${CMAKE_CURRENT_SOURCE_DIR}/shaders/bloom_fs.glsl - ${CMAKE_CURRENT_SOURCE_DIR}/shaders/blur_fs.glsl - ${CMAKE_CURRENT_SOURCE_DIR}/shaders/lensflare_fs.glsl - ${CMAKE_CURRENT_SOURCE_DIR}/shaders/pass_fs.glsl - ${CMAKE_CURRENT_SOURCE_DIR}/shaders/pass_vs.glsl + ${CMAKE_CURRENT_SOURCE_DIR}/shaders/blend_fs.glsl + ${CMAKE_CURRENT_SOURCE_DIR}/shaders/bloom_fs.glsl + ${CMAKE_CURRENT_SOURCE_DIR}/shaders/blur_fs.glsl + ${CMAKE_CURRENT_SOURCE_DIR}/shaders/lensflare_fs.glsl + ${CMAKE_CURRENT_SOURCE_DIR}/shaders/pass_fs.glsl + ${CMAKE_CURRENT_SOURCE_DIR}/shaders/pass_vs.glsl ) source_group("Shader Files" FILES ${SHADER_FILES}) create_new_module( - "Postprocessing" - postprocessing_module - STATIC - ${HEADER_FILES} ${SOURCE_FILES} ${SHADER_FILES} + "Postprocessing" + postprocessing_module + STATIC + ${HEADER_FILES} ${SOURCE_FILES} ${SHADER_FILES} ) diff --git a/modules/postprocessing/include.cmake b/modules/postprocessing/include.cmake index fe510d8881..3ccace7c97 100644 --- a/modules/postprocessing/include.cmake +++ b/modules/postprocessing/include.cmake @@ -1 +1 @@ -set (DEFAULT_MODULE OFF) +set (DEFAULT_MODULE ON) diff --git a/modules/postprocessing/rendering/postprocessingrenderer.cpp b/modules/postprocessing/rendering/postprocessingrenderer.cpp index 1c7420a4f6..01d7d44339 100644 --- a/modules/postprocessing/rendering/postprocessingrenderer.cpp +++ b/modules/postprocessing/rendering/postprocessingrenderer.cpp @@ -173,7 +173,7 @@ namespace openspace { PostprocessingRenderer::PostprocessingRenderer() : properties::PropertyOwner({ "PostprocessingRenderer", "Postprocessing", "Renderer for post-processing effects" }) - , _enableLensFlareP(EnableLensFlareInfo, false) + , _enableLensFlareP(EnableLensFlareInfo, true) , _chromaticDistortionP(ChromaticDistortionInfo, -2.25f, -100.0f, 100.0f) , _colorGradientAlphaP(ColorGradientAlphaInfo, 0.5f, 0.0f, 1.0f) , _downsampleP(DownsampleInfo, 2.0f, 1.0f, 8.0f) diff --git a/src/rendering/framebufferrenderer.cpp b/src/rendering/framebufferrenderer.cpp index 388a81d17d..7aa14b6951 100644 --- a/src/rendering/framebufferrenderer.cpp +++ b/src/rendering/framebufferrenderer.cpp @@ -48,6 +48,7 @@ #include #include +#define OPENSPACE_MODULE_POSTPROCESSING_ENABLED #ifdef OPENSPACE_MODULE_POSTPROCESSING_ENABLED #include #endif @@ -1132,14 +1133,32 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac TracyGpuZone("Deferred Caster Tasks") const ghoul::GLDebugGroup group("Deferred Caster Tasks"); - // We use ping pong rendering in order to be able to render multiple deferred - // tasks at same time (e.g. more than 1 ATM being seen at once) to the same final - // buffer - glBindFramebuffer(GL_FRAMEBUFFER, _pingPongBuffers.framebuffer); - glDrawBuffers(1, &ColorAttachmentArray[_pingPongIndex]); + #ifdef OPENSPACE_MODULE_POSTPROCESSING_ENABLED + if (PostprocessingModule::renderer().isEnabled()) { + PostprocessingModule::renderer().bindFramebuffer(); + } else + #endif + { + // We use ping pong rendering in order to be able to render multiple deferred + // tasks at same time (e.g. more than 1 ATM being seen at once) to the same final + // buffer + glBindFramebuffer(GL_FRAMEBUFFER, _pingPongBuffers.framebuffer); + glDrawBuffers(1, &ColorAttachmentArray[_pingPongIndex]); + } performDeferredTasks(tasks.deferredcasterTasks, viewport); } + + #ifdef OPENSPACE_MODULE_POSTPROCESSING_ENABLED + { + // Render Postprocessing effects + TracyGpuZone("Postprocessing"); + const ghoul::GLDebugGroup group("Postprocessing"); + + glBindFramebuffer(GL_FRAMEBUFFER, _defaultFBO); + PostprocessingModule::renderer().render(camera); + } + #endif glDrawBuffers(1, &ColorAttachmentArray[_pingPongIndex]); glEnablei(GL_BLEND, 0); @@ -1186,12 +1205,6 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac glBindFramebuffer(GL_FRAMEBUFFER, _defaultFBO); } - #ifdef OPENSPACE_MODULE_POSTPROCESSING_ENABLED - if (PostprocessingModule::renderer().isEnabled()){ - PostprocessingModule::renderer().bindFramebuffer(); - } - #endif - { // Apply the selected TMO on the results and resolve the result to the default FBO TracyGpuZone("Apply TMO"); @@ -1206,11 +1219,6 @@ void FramebufferRenderer::render(Scene* scene, Camera* camera, float blackoutFac glBindFramebuffer(GL_FRAMEBUFFER, _defaultFBO); applyFXAA(viewport); } - - #ifdef OPENSPACE_MODULE_POSTPROCESSING_ENABLED - glBindFramebuffer(GL_FRAMEBUFFER, defaultFbo); - PostprocessingModule::renderer().render(camera); - #endif } void FramebufferRenderer::performRaycasterTasks(const std::vector& tasks,