// This file is part of the 64k demo project. // It defines the ShaderComposer class for managing WGSL snippets. #pragma once #include #include #include #include class ShaderComposer { public: static ShaderComposer& Get(); // Register a snippet (e.g. "common_math", "sdf_primitives") void RegisterSnippet(const std::string& name, const std::string& code); // Assemble a final shader string by prepending required snippets // and recursively resolving #include "snippet_name" directives. std::string Compose(const std::vector& dependencies, const std::string& main_code); private: ShaderComposer() = default; void ResolveRecursive(const std::string& source, std::stringstream& ss, std::set& included); std::map snippets_; };