diff options
Diffstat (limited to 'src/gpu/effects/shader_composer.h')
| -rw-r--r-- | src/gpu/effects/shader_composer.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/gpu/effects/shader_composer.h b/src/gpu/effects/shader_composer.h index a63a6a4..9eb43f4 100644 --- a/src/gpu/effects/shader_composer.h +++ b/src/gpu/effects/shader_composer.h @@ -15,16 +15,21 @@ class ShaderComposer { // Register a snippet (e.g. "common_math", "sdf_primitives") void RegisterSnippet(const std::string& name, const std::string& code); + using CompositionMap = std::map<std::string, std::string>; + // Assemble a final shader string by prepending required snippets // and recursively resolving #include "snippet_name" directives. + // Optional substitutions: map "placeholder_name" -> "actual_snippet_name" std::string Compose(const std::vector<std::string>& dependencies, - const std::string& main_code); + const std::string& main_code, + const CompositionMap& substitutions = {}); private: ShaderComposer() = default; void ResolveRecursive(const std::string& source, std::stringstream& ss, - std::set<std::string>& included); + std::set<std::string>& included, + const CompositionMap& substitutions); std::map<std::string, std::string> snippets_; }; |
