Files
XCEngine/engine/Runtime/Resources/Shader/ShaderAuthoringParser.h

41 lines
1.1 KiB
C++

#pragma once
#include "ShaderIR.h"
#include <string>
#include <unordered_set>
#include <vector>
namespace XCEngine {
namespace Resources {
void AppendAuthoringSourceBlock(
Containers::String& target,
const Containers::String& sourceBlock);
void CollectQuotedIncludeDependencyPaths(
const Containers::String& sourcePath,
const Containers::String& sourceText,
std::unordered_set<std::string>& seenPaths,
Containers::Array<Containers::String>& outDependencies);
Containers::String StripShaderAuthoringPragmas(const Containers::String& sourceText);
std::vector<ShaderKeywordSet> BuildShaderKeywordVariantSets(
const Containers::Array<ShaderKeywordDeclaration>& declarations);
Containers::String BuildKeywordVariantSource(
const Containers::String& baseSource,
const ShaderKeywordSet& requiredKeywords);
bool LooksLikeShaderAuthoring(const std::string& sourceText);
bool ParseShaderAuthoring(
const Containers::String& path,
const std::string& sourceText,
ShaderIR& outDesc,
Containers::String* outError);
} // namespace Resources
} // namespace XCEngine