Files
video-shader-toys/src/runtime/catalog/SupportedShaderCatalog.h
Aiden 27690c3afa
All checks were successful
CI / React UI Build (push) Successful in 12s
CI / Native Windows Build And Tests (push) Successful in 2m20s
CI / Windows Release Package (push) Successful in 2m56s
added optional web component UI control
2026-05-30 22:57:59 +10:00

45 lines
1.2 KiB
C++

#pragma once
#include "FontAtlasBuilder.h"
#include "ShaderTypes.h"
#include <filesystem>
#include <map>
#include <string>
#include <vector>
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<SupportedShaderSummary>& Shaders() const { return mShaders; }
const std::map<std::string, std::vector<FontAtlasBuildOutput>>& FontAtlases() const { return mFontAtlasesByShaderId; }
const ShaderPackage* FindPackage(const std::string& shaderId) const;
private:
std::vector<SupportedShaderSummary> mShaders;
std::map<std::string, ShaderPackage> mPackagesById;
std::map<std::string, std::vector<FontAtlasBuildOutput>> mFontAtlasesByShaderId;
};
}