From bd5e452d34e6f13dfb7e9d7f46208f93ce22ce01 Mon Sep 17 00:00:00 2001 From: Alexis Maiquez Date: Thu, 14 Dec 2023 03:10:41 +0100 Subject: [PATCH] fix: support shaders without textures (like flat), improves #184 Signed-off-by: Alexis Maiquez --- src/WallpaperEngine/Core/Objects/CEffect.cpp | 9 ++++++++- src/WallpaperEngine/Render/CWallpaper.cpp | 4 +--- src/WallpaperEngine/Render/Objects/Effects/CPass.cpp | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/WallpaperEngine/Core/Objects/CEffect.cpp b/src/WallpaperEngine/Core/Objects/CEffect.cpp index 5e2e65d..de93e7c 100644 --- a/src/WallpaperEngine/Core/Objects/CEffect.cpp +++ b/src/WallpaperEngine/Core/Objects/CEffect.cpp @@ -76,7 +76,14 @@ CEffect* CEffect::fromJSON (json data, CUserSettingBoolean* visible, CObject* ob if (textureNumber == 0) { auto* image = object->as (); - texture = (*(*image->getMaterial ()->getPasses ().begin ())->getTextures ().begin ()); + auto passTextures = (*image->getMaterial ()->getPasses ().begin ())->getTextures (); + + if (passTextures.empty ()) { + // TODO: SET CHECKERBOARD TEXTURE AS DEFAULT IN THESE SITUATIONS + texture = ""; + } else { + texture = *passTextures.begin (); + } } else { texture = ""; } diff --git a/src/WallpaperEngine/Render/CWallpaper.cpp b/src/WallpaperEngine/Render/CWallpaper.cpp index df44c74..695bffa 100644 --- a/src/WallpaperEngine/Render/CWallpaper.cpp +++ b/src/WallpaperEngine/Render/CWallpaper.cpp @@ -257,12 +257,10 @@ CFBO* CWallpaper::createFBO (const std::string& name, ITexture::TextureFormat fo return fbo; } -void CWallpaper::aliasFBO(const std::string& alias, CFBO* original) -{ +void CWallpaper::aliasFBO (const std::string& alias, CFBO* original) { this->m_fbos.insert (std::make_pair (alias, original)); } - const std::map& CWallpaper::getFBOs () const { return this->m_fbos; } diff --git a/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp b/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp index 1239c07..bed28b7 100644 --- a/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp +++ b/src/WallpaperEngine/Render/Objects/Effects/CPass.cpp @@ -519,7 +519,7 @@ void CPass::setupUniforms () { this->addUniform ("g_UserAlpha", this->m_material->getImage ()->getImage ()->getAlpha ()); this->addUniform ("g_Alpha", this->m_material->getImage ()->getImage ()->getAlpha ()); this->addUniform ("g_Color", this->m_material->getImage ()->getImage ()->getColor ()); - this->addUniform ("g_Color4", glm::vec4(this->m_material->getImage ()->getImage ()->getColor (), 1)); + this->addUniform ("g_Color4", glm::vec4 (this->m_material->getImage ()->getImage ()->getColor (), 1)); // TODO: VALIDATE THAT G_COMPOSITECOLOR REALLY COMES FROM THIS ONE this->addUniform ("g_CompositeColor", this->m_material->getImage ()->getImage ()->getColor ()); // add some external variables