From 0843f69edf97755a5422559c374de5b43bb08907 Mon Sep 17 00:00:00 2001 From: Alexis Maiquez Date: Fri, 4 Nov 2022 11:28:10 +0100 Subject: [PATCH] Fix some backgrounds appearing flipped upside down, bloom effect now renders directly into the _rt_FrameBuffer as the flip happens after the scene is drawn completely Signed-off-by: Alexis Maiquez --- src/WallpaperEngine/Render/CScene.cpp | 12 +----------- src/WallpaperEngine/Render/CScene.h | 2 -- src/WallpaperEngine/Render/CWallpaper.cpp | 10 +++++----- src/WallpaperEngine/Render/Objects/CImage.cpp | 10 +++++----- 4 files changed, 11 insertions(+), 23 deletions(-) diff --git a/src/WallpaperEngine/Render/CScene.cpp b/src/WallpaperEngine/Render/CScene.cpp index 0a0ef48..74332ce 100644 --- a/src/WallpaperEngine/Render/CScene.cpp +++ b/src/WallpaperEngine/Render/CScene.cpp @@ -163,10 +163,8 @@ CScene::CScene (Core::CScene* scene, CContext* context) : ) ); - this->_rt_imageCompositeLayer_bloom = this->findFBO ("_rt_imageLayerComposite_-1_b"); + this->m_objectsByRenderOrder.push_back (this->m_bloomObject); } - - this->_rt_FullFrameBuffer = this->m_sceneFBO; } Render::CObject* CScene::createObject (Core::CObject* object) @@ -247,8 +245,6 @@ void CScene::renderFrame (glm::ivec4 viewport) this->m_parallaxDisplacement.y = glm::mix (this->m_parallaxDisplacement.y, (this->m_mousePosition.y * amount) * influence, delay); } - this->m_sceneFBO = this->_rt_FullFrameBuffer; - // use the scene's framebuffer by default glBindFramebuffer (GL_FRAMEBUFFER, this->getWallpaperFramebuffer()); // ensure we render over the whole screen @@ -258,12 +254,6 @@ void CScene::renderFrame (glm::ivec4 viewport) for (; cur != end; cur ++) (*cur)->render (); - - if (this->getScene ()->isBloom () == true) - { - this->m_sceneFBO = this->_rt_imageCompositeLayer_bloom; - this->m_bloomObject->render (); - } } void CScene::updateMouse (glm::ivec4 viewport) diff --git a/src/WallpaperEngine/Render/CScene.h b/src/WallpaperEngine/Render/CScene.h index 0040e3d..f20539f 100644 --- a/src/WallpaperEngine/Render/CScene.h +++ b/src/WallpaperEngine/Render/CScene.h @@ -44,7 +44,5 @@ namespace WallpaperEngine::Render CFBO* _rt_4FrameBuffer; CFBO* _rt_8FrameBuffer; CFBO* _rt_Bloom; - CFBO* _rt_imageCompositeLayer_bloom; // this one doesn't exist on the official wallpaper engine, but our approach requires it - CFBO* _rt_FullFrameBuffer; }; } diff --git a/src/WallpaperEngine/Render/CWallpaper.cpp b/src/WallpaperEngine/Render/CWallpaper.cpp index 677f132..ddee0b8 100644 --- a/src/WallpaperEngine/Render/CWallpaper.cpp +++ b/src/WallpaperEngine/Render/CWallpaper.cpp @@ -257,12 +257,12 @@ void CWallpaper::render (glm::ivec4 viewport, bool renderFrame, bool newFrame) if (heightRatio < 0.0f) heightRatio = -heightRatio; GLfloat position [] = { + -widthRatio, heightRatio, 0.0f, + widthRatio, heightRatio, 0.0f, -widthRatio, -heightRatio, 0.0f, - widthRatio, -heightRatio, 0.0f, - -widthRatio, heightRatio, 0.0f, - -widthRatio, heightRatio, 0.0f, - widthRatio, -heightRatio, 0.0f, - widthRatio, heightRatio, 0.0f + -widthRatio, -heightRatio, 0.0f, + widthRatio, heightRatio, 0.0f, + widthRatio, -heightRatio, 0.0f }; glBindBuffer (GL_ARRAY_BUFFER, this->m_positionBuffer); diff --git a/src/WallpaperEngine/Render/Objects/CImage.cpp b/src/WallpaperEngine/Render/Objects/CImage.cpp index d3d7f51..5fb3b1d 100644 --- a/src/WallpaperEngine/Render/Objects/CImage.cpp +++ b/src/WallpaperEngine/Render/Objects/CImage.cpp @@ -110,12 +110,12 @@ CImage::CImage (CScene* scene, Core::Objects::CImage* image) : // build a list of vertices, these might need some change later (or maybe invert the camera) GLfloat sceneSpacePosition [] = { + this->m_pos.x, this->m_pos.w, 0.0f, + this->m_pos.z, this->m_pos.w, 0.0f, this->m_pos.x, this->m_pos.y, 0.0f, - this->m_pos.z, this->m_pos.y, 0.0f, - this->m_pos.x, this->m_pos.w, 0.0f, - this->m_pos.x, this->m_pos.w, 0.0f, - this->m_pos.z, this->m_pos.y, 0.0f, - this->m_pos.z, this->m_pos.w, 0.0f + this->m_pos.x, this->m_pos.y, 0.0f, + this->m_pos.z, this->m_pos.w, 0.0f, + this->m_pos.z, this->m_pos.y, 0.0f }; GLfloat copySpacePosition [] = {