resources: formalize internal shader ir
This commit is contained in:
@@ -433,10 +433,10 @@ bool TryParseUnityStyleBlendDirective(
|
||||
}
|
||||
|
||||
void SetOrReplaceAuthoringTag(
|
||||
std::vector<AuthoringTagEntry>& tags,
|
||||
std::vector<ShaderTagIR>& tags,
|
||||
const Containers::String& name,
|
||||
const Containers::String& value) {
|
||||
for (AuthoringTagEntry& tag : tags) {
|
||||
for (ShaderTagIR& tag : tags) {
|
||||
if (tag.name == name) {
|
||||
tag.value = value;
|
||||
return;
|
||||
@@ -926,7 +926,7 @@ bool TryTokenizeQuotedArguments(const std::string& line, std::vector<std::string
|
||||
|
||||
bool TryParseInlineTagAssignments(
|
||||
const std::string& line,
|
||||
std::vector<AuthoringTagEntry>& outTags) {
|
||||
std::vector<ShaderTagIR>& outTags) {
|
||||
const size_t openBrace = line.find('{');
|
||||
const size_t closeBrace = line.rfind('}');
|
||||
if (openBrace == std::string::npos ||
|
||||
@@ -1117,7 +1117,7 @@ bool TryParseAuthoringResourceLine(
|
||||
bool ParseLegacyBackendSplitShaderAuthoring(
|
||||
const Containers::String& path,
|
||||
const std::string& sourceText,
|
||||
AuthoringShaderDesc& outDesc,
|
||||
ShaderIR& outDesc,
|
||||
Containers::String* outError) {
|
||||
(void)path;
|
||||
outDesc = {};
|
||||
@@ -1147,8 +1147,8 @@ bool ParseLegacyBackendSplitShaderAuthoring(
|
||||
|
||||
std::vector<BlockKind> blockStack;
|
||||
BlockKind pendingBlock = BlockKind::None;
|
||||
AuthoringSubShaderEntry* currentSubShader = nullptr;
|
||||
AuthoringPassEntry* currentPass = nullptr;
|
||||
ShaderSubShaderIR* currentSubShader = nullptr;
|
||||
ShaderPassIR* currentPass = nullptr;
|
||||
bool inProgram = false;
|
||||
|
||||
auto currentBlock = [&blockStack]() -> BlockKind {
|
||||
@@ -1183,7 +1183,7 @@ bool ParseLegacyBackendSplitShaderAuthoring(
|
||||
continue;
|
||||
}
|
||||
if (pragmaTokens.size() >= 6u && pragmaTokens[1] == "backend") {
|
||||
AuthoringBackendVariantEntry backendVariant = {};
|
||||
ShaderBackendVariantIR backendVariant = {};
|
||||
if (!TryParseShaderBackend(pragmaTokens[2].c_str(), backendVariant.backend)) {
|
||||
return fail("invalid backend pragma backend name", humanLine);
|
||||
}
|
||||
@@ -1310,7 +1310,7 @@ bool ParseLegacyBackendSplitShaderAuthoring(
|
||||
}
|
||||
|
||||
if (StartsWithKeyword(line, "Tags")) {
|
||||
std::vector<AuthoringTagEntry> parsedTags;
|
||||
std::vector<ShaderTagIR> parsedTags;
|
||||
if (!TryParseInlineTagAssignments(line, parsedTags)) {
|
||||
return fail("Tags block must use inline key/value pairs", humanLine);
|
||||
}
|
||||
@@ -1375,12 +1375,12 @@ bool ParseLegacyBackendSplitShaderAuthoring(
|
||||
return fail("shader does not declare any SubShader blocks", 0);
|
||||
}
|
||||
|
||||
for (const AuthoringSubShaderEntry& subShader : outDesc.subShaders) {
|
||||
for (const ShaderSubShaderIR& subShader : outDesc.subShaders) {
|
||||
if (subShader.passes.empty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (const AuthoringPassEntry& pass : subShader.passes) {
|
||||
for (const ShaderPassIR& pass : subShader.passes) {
|
||||
if (pass.name.Empty()) {
|
||||
return fail("a Pass is missing a Name directive", 0);
|
||||
}
|
||||
@@ -1396,7 +1396,7 @@ bool ParseLegacyBackendSplitShaderAuthoring(
|
||||
bool ParseUnityStyleSingleSourceShaderAuthoring(
|
||||
const Containers::String& path,
|
||||
const std::string& sourceText,
|
||||
AuthoringShaderDesc& outDesc,
|
||||
ShaderIR& outDesc,
|
||||
Containers::String* outError) {
|
||||
(void)path;
|
||||
outDesc = {};
|
||||
@@ -1435,8 +1435,8 @@ bool ParseUnityStyleSingleSourceShaderAuthoring(
|
||||
size_t nextExtractedBlock = 0;
|
||||
std::vector<BlockKind> blockStack;
|
||||
BlockKind pendingBlock = BlockKind::None;
|
||||
AuthoringSubShaderEntry* currentSubShader = nullptr;
|
||||
AuthoringPassEntry* currentPass = nullptr;
|
||||
ShaderSubShaderIR* currentSubShader = nullptr;
|
||||
ShaderPassIR* currentPass = nullptr;
|
||||
bool inProgramBlock = false;
|
||||
bool inSharedIncludeBlock = false;
|
||||
|
||||
@@ -1611,7 +1611,7 @@ bool ParseUnityStyleSingleSourceShaderAuthoring(
|
||||
}
|
||||
|
||||
if (StartsWithKeyword(line, "Tags")) {
|
||||
std::vector<AuthoringTagEntry> parsedTags;
|
||||
std::vector<ShaderTagIR> parsedTags;
|
||||
if (!TryParseInlineTagAssignments(line, parsedTags)) {
|
||||
return fail("Tags block must use inline key/value pairs", humanLine);
|
||||
}
|
||||
@@ -1886,12 +1886,12 @@ bool ParseUnityStyleSingleSourceShaderAuthoring(
|
||||
return fail("shader does not declare any SubShader blocks", 0);
|
||||
}
|
||||
|
||||
for (AuthoringSubShaderEntry& subShader : outDesc.subShaders) {
|
||||
for (ShaderSubShaderIR& subShader : outDesc.subShaders) {
|
||||
if (subShader.passes.empty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
for (AuthoringPassEntry& pass : subShader.passes) {
|
||||
for (ShaderPassIR& pass : subShader.passes) {
|
||||
if (pass.name.Empty()) {
|
||||
return fail("a Pass is missing a Name directive", 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user