From e5ef7bd53e9c6c48927acb5c406eee4771cd2b1c Mon Sep 17 00:00:00 2001 From: Alexis Maiquez Date: Fri, 10 Jun 2022 14:04:22 +0200 Subject: [PATCH] ~ updated shader compiler to look for the first function, not just main should fix #106 Signed-off-by: Alexis Maiquez --- .../Render/Shaders/Compiler.cpp | 21 ++++++++++--------- src/WallpaperEngine/Render/Shaders/Compiler.h | 1 + 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/WallpaperEngine/Render/Shaders/Compiler.cpp b/src/WallpaperEngine/Render/Shaders/Compiler.cpp index 24b1b9d..6a7e7d3 100644 --- a/src/WallpaperEngine/Render/Shaders/Compiler.cpp +++ b/src/WallpaperEngine/Render/Shaders/Compiler.cpp @@ -245,6 +245,7 @@ namespace WallpaperEngine::Render::Shaders this->m_errorInfo = ""; this->m_compiledContent = ""; this->m_includesContent = ""; + this->m_includesProcessed = false; // search preprocessor macros and parse them while (it != this->m_content.end () && this->m_error == false) @@ -434,23 +435,23 @@ namespace WallpaperEngine::Render::Shaders if (this->m_error == false) { // check for main, and take it into account, this also helps adding the includes - if (type == "void") - { - std::string name = this->extractName (it); + std::string name = this->extractName (it); - if (name == "main") + this->ignoreSpaces (it); + + if (this->peekString ("(", it) == true) + { + if (this->m_includesProcessed == false) { this->m_compiledContent += "\n\n" + this->m_includesContent + "\n\n"; - this->m_compiledContent += type + " " + name; - } - else - { - this->m_compiledContent += name; + this->m_includesProcessed = true; } + + this->m_compiledContent += type + " " + name + "("; } else { - this->m_compiledContent += type + " "; + this->m_compiledContent += type + " " + name; } } else diff --git a/src/WallpaperEngine/Render/Shaders/Compiler.h b/src/WallpaperEngine/Render/Shaders/Compiler.h index 3cd0711..249fa5a 100644 --- a/src/WallpaperEngine/Render/Shaders/Compiler.h +++ b/src/WallpaperEngine/Render/Shaders/Compiler.h @@ -247,5 +247,6 @@ namespace WallpaperEngine::Render::Shaders * List of textures that the shader expects (inferred from sampler2D and it's JSON data) */ std::map m_textures; + bool m_includesProcessed = false; }; }