#pragma once #include "FontAtlasBuilder.h" #include "ShaderTypes.h" #include #include #include #include namespace RenderCadenceCompositor { struct SupportedShaderSummary { std::string id; std::string name; std::string description; std::string category; ShaderUiDefinition ui; }; struct ShaderSupportResult { bool supported = false; std::string reason; }; ShaderSupportResult CheckStatelessSinglePassShaderSupport(const ShaderPackage& shaderPackage); std::string ShaderPackageFingerprint(const ShaderPackage& shaderPackage); class SupportedShaderCatalog { public: bool Load(const std::filesystem::path& shaderRoot, unsigned maxTemporalHistoryFrames, std::string& error); const std::vector& Shaders() const { return mShaders; } const std::map>& FontAtlases() const { return mFontAtlasesByShaderId; } const ShaderPackage* FindPackage(const std::string& shaderId) const; private: std::vector mShaders; std::map mPackagesById; std::map> mFontAtlasesByShaderId; }; }